From e19bf6cc0ad8f35df649f90dd7d8ac13d9aeb4a6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 00:40:16 +0000 Subject: [PATCH 1/3] Initial plan From 2589100d4c92bd6b0e3b231d79f91a786b0b5330 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 00:49:34 +0000 Subject: [PATCH 2/3] Add comprehensive test cases for workflow_dispatch input type validation Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/parser/schema_test.go | 140 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/pkg/parser/schema_test.go b/pkg/parser/schema_test.go index 45e981980ef..5bdc9eab3b3 100644 --- a/pkg/parser/schema_test.go +++ b/pkg/parser/schema_test.go @@ -1144,6 +1144,146 @@ func TestValidateMainWorkflowFrontmatterWithSchema(t *testing.T) { wantErr: true, errContains: "maxProperties", }, + { + name: "valid: workflow_dispatch with all valid input types", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "string_input": map[string]any{ + "description": "String input", + "type": "string", + "default": "default value", + }, + "choice_input": map[string]any{ + "description": "Choice input", + "type": "choice", + "options": []string{"option1", "option2", "option3"}, + "default": "option1", + }, + "boolean_input": map[string]any{ + "description": "Boolean input", + "type": "boolean", + "default": true, + }, + "number_input": map[string]any{ + "description": "Number input", + "type": "number", + "default": 42, + }, + "environment_input": map[string]any{ + "description": "Environment input", + "type": "environment", + "default": "production", + }, + }, + }, + }, + }, + wantErr: false, + }, + { + name: "invalid: workflow_dispatch with invalid input type 'text'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "text", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, + { + name: "invalid: workflow_dispatch with invalid input type 'int'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "int", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, + { + name: "invalid: workflow_dispatch with invalid input type 'bool'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "bool", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, + { + name: "invalid: workflow_dispatch with invalid input type 'select'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "select", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, + { + name: "invalid: workflow_dispatch with invalid input type 'dropdown'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "dropdown", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, + { + name: "invalid: workflow_dispatch with invalid input type 'checkbox'", + frontmatter: map[string]any{ + "on": map[string]any{ + "workflow_dispatch": map[string]any{ + "inputs": map[string]any{ + "test_input": map[string]any{ + "description": "Test input", + "type": "checkbox", + }, + }, + }, + }, + }, + wantErr: true, + errContains: "value must be one of 'string', 'choice', 'boolean', 'number', 'environment'", + }, { name: "valid metadata with various key-value pairs", frontmatter: map[string]any{ From af25eef579b452926fa0017bbb90e19df09fec23 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 00:54:51 +0000 Subject: [PATCH 3/3] Update auto-generated documentation --- docs/src/content/docs/agent-factory-status.mdx | 2 +- docs/src/content/docs/reference/frontmatter-full.md | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/src/content/docs/agent-factory-status.mdx b/docs/src/content/docs/agent-factory-status.mdx index 398f7ce7020..9cea25fa7d0 100644 --- a/docs/src/content/docs/agent-factory-status.mdx +++ b/docs/src/content/docs/agent-factory-status.mdx @@ -102,7 +102,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn, | [Issue Summary to Notion](https://github.com/github/gh-aw/blob/main/.github/workflows/notion-issue-summary.md) | copilot | [![Issue Summary to Notion](https://github.com/github/gh-aw/actions/workflows/notion-issue-summary.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/notion-issue-summary.lock.yml) | - | - | | [Issue Triage Agent](https://github.com/github/gh-aw/blob/main/.github/workflows/issue-triage-agent.md) | copilot | [![Issue Triage Agent](https://github.com/github/gh-aw/actions/workflows/issue-triage-agent.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/issue-triage-agent.lock.yml) | - | - | | [jsweep - JavaScript Unbloater](https://github.com/github/gh-aw/blob/main/.github/workflows/jsweep.md) | copilot | [![jsweep - JavaScript Unbloater](https://github.com/github/gh-aw/actions/workflows/jsweep.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/jsweep.lock.yml) | - | - | -| [Layout Specification Maintainer](https://github.com/github/gh-aw/blob/main/.github/workflows/layout-spec-maintainer.md) | copilot | [![Layout Specification Maintainer](https://github.com/github/gh-aw/actions/workflows/layout-spec-maintainer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/layout-spec-maintainer.lock.yml) | `0 7 * * 1-5` | - | +| [Layout Specification Maintainer](https://github.com/github/gh-aw/blob/main/.github/workflows/layout-spec-maintainer.md) | copilot | [![Layout Specification Maintainer](https://github.com/github/gh-aw/actions/workflows/layout-spec-maintainer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/layout-spec-maintainer.lock.yml) | `0 7 * * 1` | - | | [Lockfile Statistics Analysis Agent](https://github.com/github/gh-aw/blob/main/.github/workflows/lockfile-stats.md) | claude | [![Lockfile Statistics Analysis Agent](https://github.com/github/gh-aw/actions/workflows/lockfile-stats.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/lockfile-stats.lock.yml) | - | - | | [MCP Inspector Agent](https://github.com/github/gh-aw/blob/main/.github/workflows/mcp-inspector.md) | copilot | [![MCP Inspector Agent](https://github.com/github/gh-aw/actions/workflows/mcp-inspector.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/mcp-inspector.lock.yml) | - | - | | [Mergefest](https://github.com/github/gh-aw/blob/main/.github/workflows/mergefest.md) | copilot | [![Mergefest](https://github.com/github/gh-aw/actions/workflows/mergefest.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/mergefest.lock.yml) | - | `/mergefest` | diff --git a/docs/src/content/docs/reference/frontmatter-full.md b/docs/src/content/docs/reference/frontmatter-full.md index 896e0ec95c1..b0be7dc6013 100644 --- a/docs/src/content/docs/reference/frontmatter-full.md +++ b/docs/src/content/docs/reference/frontmatter-full.md @@ -3528,9 +3528,10 @@ rate-limit: events: [] # Array of strings - # Optional list of roles that are exempt from rate limiting. Users with any of - # these roles will not be subject to rate limiting checks. Common roles: 'admin', - # 'maintain', 'write', 'triage', 'read'. + # Optional list of roles that are exempt from rate limiting. Defaults to ['admin', + # 'maintain', 'write'] if not specified. Users with any of these roles will not be + # subject to rate limiting checks. To apply rate limiting to all users, set to an + # empty array: [] # (optional) ignored-roles: [] # Array of strings