From 1ee815e03738706be9354bba174594f4ad97f80c Mon Sep 17 00:00:00 2001 From: Q Date: Thu, 23 Oct 2025 20:19:18 +0000 Subject: [PATCH 1/3] Add default 'eyes' reaction in schema and reaction value validation in parser - Added 'default: eyes' to reaction field in main_workflow_schema.json - Added isValidReaction() helper function to validate reaction values - Added validation when parsing reaction field to reject invalid values - Added TestInvalidReactionValue test to verify validation works correctly This ensures that invalid reaction values are caught early with helpful error messages, and documents the default behavior in the schema. --- .serena/.gitignore | 1 + .serena/project.yml | 71 ++++++++++++++++++++ pkg/parser/schemas/main_workflow_schema.json | 1 + pkg/workflow/compiler.go | 20 ++++++ pkg/workflow/compiler_test.go | 55 +++++++++++++++ 5 files changed, 148 insertions(+) create mode 100644 .serena/.gitignore create mode 100644 .serena/project.yml diff --git a/.serena/.gitignore b/.serena/.gitignore new file mode 100644 index 00000000000..14d86ad6230 --- /dev/null +++ b/.serena/.gitignore @@ -0,0 +1 @@ +/cache diff --git a/.serena/project.yml b/.serena/project.yml new file mode 100644 index 00000000000..42ba514a3f8 --- /dev/null +++ b/.serena/project.yml @@ -0,0 +1,71 @@ +# language of the project (csharp, python, rust, java, typescript, go, cpp, or ruby) +# * For C, use cpp +# * For JavaScript, use typescript +# Special requirements: +# * csharp: Requires the presence of a .sln file in the project folder. +language: go + +# the encoding used by text files in the project +# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings +encoding: "utf-8" + +# whether to use the project's gitignore file to ignore files +# Added on 2025-04-07 +ignore_all_files_in_gitignore: true +# list of additional paths to ignore +# same syntax as gitignore, so you can use * and ** +# Was previously called `ignored_dirs`, please update your config if you are using that. +# Added (renamed) on 2025-04-07 +ignored_paths: [] + +# whether the project is in read-only mode +# If set to true, all editing tools will be disabled and attempts to use them will result in an error +# Added on 2025-04-18 +read_only: false + +# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details. +# Below is the complete list of tools for convenience. +# To make sure you have the latest list of tools, and to view their descriptions, +# execute `uv run scripts/print_tool_overview.py`. +# +# * `activate_project`: Activates a project by name. +# * `check_onboarding_performed`: Checks whether project onboarding was already performed. +# * `create_text_file`: Creates/overwrites a file in the project directory. +# * `delete_lines`: Deletes a range of lines within a file. +# * `delete_memory`: Deletes a memory from Serena's project-specific memory store. +# * `execute_shell_command`: Executes a shell command. +# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced. +# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type). +# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type). +# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes. +# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file. +# * `initial_instructions`: Gets the initial instructions for the current project. +# Should only be used in settings where the system prompt cannot be set, +# e.g. in clients you have no control over, like Claude Desktop. +# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol. +# * `insert_at_line`: Inserts content at a given line in a file. +# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol. +# * `list_dir`: Lists files and directories in the given directory (optionally with recursion). +# * `list_memories`: Lists memories in Serena's project-specific memory store. +# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building). +# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context). +# * `read_file`: Reads a file within the project directory. +# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store. +# * `remove_project`: Removes a project from the Serena configuration. +# * `replace_lines`: Replaces a range of lines within a file with new content. +# * `replace_symbol_body`: Replaces the full definition of a symbol. +# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen. +# * `search_for_pattern`: Performs a search for a pattern in the project. +# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase. +# * `switch_modes`: Activates modes by providing a list of their names +# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information. +# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task. +# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed. +# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store. +excluded_tools: [] + +# initial prompt for the project. It will always be given to the LLM upon activating the project +# (contrary to the memories, which are loaded on demand). +initial_prompt: "" + +project_name: "gh-aw" diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index 1382dc1f5f6..61c3401e6a3 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -903,6 +903,7 @@ "rocket", "eyes" ], + "default": "eyes", "description": "AI reaction to add/remove on triggering item (one of: +1, -1, laugh, confused, heart, hooray, rocket, eyes). Defaults to 'eyes' if not specified." } }, diff --git a/pkg/workflow/compiler.go b/pkg/workflow/compiler.go index b80551c1d4c..e84b27c0cd9 100644 --- a/pkg/workflow/compiler.go +++ b/pkg/workflow/compiler.go @@ -1442,6 +1442,11 @@ func (c *Compiler) parseOnSection(frontmatter map[string]any, workflowData *Work if reactionValue, hasReactionField := onMap["reaction"]; hasReactionField { hasReaction = true if reactionStr, ok := reactionValue.(string); ok { + // Validate reaction value + if !isValidReaction(reactionStr) { + validValues := []string{"+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"} + return fmt.Errorf("invalid reaction value '%s': must be one of %v", reactionStr, validValues) + } workflowData.AIReaction = reactionStr } } @@ -1500,6 +1505,21 @@ func (c *Compiler) parseOnSection(frontmatter map[string]any, workflowData *Work return nil } +// isValidReaction checks if a reaction value is valid according to the schema +func isValidReaction(reaction string) bool { + validReactions := map[string]bool{ + "+1": true, + "-1": true, + "laugh": true, + "confused": true, + "heart": true, + "hooray": true, + "rocket": true, + "eyes": true, + } + return validReactions[reaction] +} + // generateJobName converts a workflow name to a valid YAML job identifier func (c *Compiler) generateJobName(workflowName string) string { // Convert to lowercase and replace spaces and special characters with hyphens diff --git a/pkg/workflow/compiler_test.go b/pkg/workflow/compiler_test.go index 1526bed7574..571f60b97c7 100644 --- a/pkg/workflow/compiler_test.go +++ b/pkg/workflow/compiler_test.go @@ -2904,6 +2904,61 @@ Test command workflow with custom reaction override. } } +// TestInvalidReactionValue tests that invalid reaction values are rejected +func TestInvalidReactionValue(t *testing.T) { + // Create temporary directory for test files + tmpDir, err := os.MkdirTemp("", "invalid-reaction-test") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmpDir) + + // Test invalid reaction value + testContent := `--- +on: + issues: + types: [opened] + reaction: invalid_emoji +permissions: + contents: read + issues: write +tools: + github: + allowed: [get_issue] +--- + +# Invalid Reaction Test + +Test workflow with invalid reaction value. +` + + testFile := filepath.Join(tmpDir, "test-invalid-reaction.md") + if err := os.WriteFile(testFile, []byte(testContent), 0644); err != nil { + t.Fatal(err) + } + + compiler := NewCompiler(false, "", "test") + + // Parse the workflow - should fail with validation error + _, err = compiler.ParseWorkflowFile(testFile) + if err == nil { + t.Fatal("Expected error for invalid reaction value, but got none") + } + + // Verify error message mentions the invalid value and valid options + expectedSubstrings := []string{ + "invalid reaction value", + "invalid_emoji", + "must be one of", + } + + for _, expected := range expectedSubstrings { + if !strings.Contains(err.Error(), expected) { + t.Errorf("Error message should contain '%s', got: %v", expected, err) + } + } +} + // TestPullRequestDraftFilter tests the pull_request draft: false filter functionality func TestPullRequestDraftFilter(t *testing.T) { // Create temporary directory for test files From a28f3762ee7cb9dfaf9e4f71c45974499d592741 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Oct 2025 13:47:14 -0700 Subject: [PATCH 2/3] Remove .serena files and refactor isValidReaction to reactions.go (#2242) * Initial plan * Remove .serena directory and move isValidReaction to reactions.go Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/artifacts-summary.lock.yml | 2 +- .github/workflows/audit-workflows.lock.yml | 2 +- .github/workflows/blog-auditor.lock.yml | 2 +- .github/workflows/brave.lock.yml | 2 +- .../workflows/changeset-generator.lock.yml | 2 +- .github/workflows/ci-doctor.lock.yml | 2 +- .../workflows/cli-version-checker.lock.yml | 2 +- .../commit-changes-analyzer.lock.yml | 2 +- .../workflows/copilot-agent-analysis.lock.yml | 2 +- .github/workflows/daily-doc-updater.lock.yml | 2 +- .github/workflows/daily-news.lock.yml | 2 +- .../workflows/daily-perf-improver.lock.yml | 2 +- .../workflows/daily-test-improver.lock.yml | 2 +- .github/workflows/dev-hawk.lock.yml | 2 +- .github/workflows/dev.firewall.lock.yml | 2 +- .github/workflows/dev.lock.yml | 2 +- .github/workflows/dictation-prompt.lock.yml | 2 +- .../duplicate-code-detector.lock.yml | 2 +- .../example-workflow-analyzer.lock.yml | 2 +- .../github-mcp-tools-report.lock.yml | 2 +- .github/workflows/go-logger.lock.yml | 2 +- .../workflows/go-pattern-detector.lock.yml | 2 +- .../workflows/instructions-janitor.lock.yml | 2 +- .github/workflows/issue-classifier.lock.yml | 2 +- .github/workflows/lockfile-stats.lock.yml | 2 +- .github/workflows/mcp-inspector.lock.yml | 2 +- .../workflows/notion-issue-summary.lock.yml | 2 +- .github/workflows/pdf-summary.lock.yml | 2 +- .github/workflows/plan.lock.yml | 2 +- .github/workflows/poem-bot.lock.yml | 2 +- .github/workflows/q.lock.yml | 2 +- .github/workflows/repo-tree-map.lock.yml | 2 +- .github/workflows/research.lock.yml | 2 +- .../schema-consistency-checker.lock.yml | 2 +- .github/workflows/scout.lock.yml | 2 +- .github/workflows/security-fix-pr.lock.yml | 2 +- .../semantic-function-refactor.lock.yml | 2 +- .github/workflows/smoke-claude.lock.yml | 2 +- .github/workflows/smoke-codex.lock.yml | 2 +- .github/workflows/smoke-copilot.lock.yml | 2 +- .github/workflows/smoke-detector.lock.yml | 2 +- .github/workflows/smoke-genaiscript.lock.yml | 2 +- .github/workflows/smoke-opencode.lock.yml | 2 +- .../workflows/technical-doc-writer.lock.yml | 2 +- .github/workflows/test-jqschema.lock.yml | 2 +- .github/workflows/test-post-steps.lock.yml | 2 +- .github/workflows/test-svelte.lock.yml | 2 +- .github/workflows/tidy.lock.yml | 2 +- .github/workflows/unbloat-docs.lock.yml | 2 +- .github/workflows/video-analyzer.lock.yml | 2 +- .../workflows/weekly-issue-summary.lock.yml | 2 +- .serena/.gitignore | 1 - .serena/project.yml | 71 ------------------- pkg/workflow/compiler.go | 15 ---- pkg/workflow/compiler_test.go | 18 ++--- pkg/workflow/reactions.go | 16 +++++ 56 files changed, 76 insertions(+), 147 deletions(-) delete mode 100644 .serena/.gitignore delete mode 100644 .serena/project.yml create mode 100644 pkg/workflow/reactions.go diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index a218ccd3ba4..6f39dfc6483 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -1373,7 +1373,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 4bed58e6005..f02bef3277f 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -1878,7 +1878,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index aea19a8daa4..d79adbc5966 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -1804,7 +1804,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index de923408bd3..adbfec89740 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -2463,7 +2463,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/changeset-generator.lock.yml b/.github/workflows/changeset-generator.lock.yml index ab528642ca7..38231dc21dc 100644 --- a/.github/workflows/changeset-generator.lock.yml +++ b/.github/workflows/changeset-generator.lock.yml @@ -2171,7 +2171,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index e49f633e11d..d230d134854 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -1901,7 +1901,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 168f0a46e1a..397d45138fd 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -1743,7 +1743,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index 6fd830ed825..e6432d9feb4 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -1696,7 +1696,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index eb0f73d8061..4d1eae89403 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1985,7 +1985,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index ce7b0ba0176..69630698d40 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -1659,7 +1659,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 476f0de294a..f7e111ede53 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1546,7 +1546,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/daily-perf-improver.lock.yml b/.github/workflows/daily-perf-improver.lock.yml index 1e19285ce7a..c538bb3bd2b 100644 --- a/.github/workflows/daily-perf-improver.lock.yml +++ b/.github/workflows/daily-perf-improver.lock.yml @@ -1896,7 +1896,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/daily-test-improver.lock.yml b/.github/workflows/daily-test-improver.lock.yml index 2ceb9414125..d7275e6f66d 100644 --- a/.github/workflows/daily-test-improver.lock.yml +++ b/.github/workflows/daily-test-improver.lock.yml @@ -1870,7 +1870,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml index 742ccd624fa..0063fc899ff 100644 --- a/.github/workflows/dev-hawk.lock.yml +++ b/.github/workflows/dev-hawk.lock.yml @@ -1803,7 +1803,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/dev.firewall.lock.yml b/.github/workflows/dev.firewall.lock.yml index 48518f36b36..8949ff47993 100644 --- a/.github/workflows/dev.firewall.lock.yml +++ b/.github/workflows/dev.firewall.lock.yml @@ -518,7 +518,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index cdec08ce993..17888f2f750 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -497,7 +497,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 2772f9622bb..8218c28879e 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -1457,7 +1457,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 7208ccd9cec..6a19b841ec0 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -1523,7 +1523,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index b6c3ab1811a..e44d86960a9 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -1431,7 +1431,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index f89fd10af84..4b045634424 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -1925,7 +1925,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index c843be7c6a3..2601c6cb14e 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -1705,7 +1705,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 4d078534c87..47167bbdfa7 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -1600,7 +1600,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 0cf73fac618..691e562d9a8 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -1656,7 +1656,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/issue-classifier.lock.yml b/.github/workflows/issue-classifier.lock.yml index fa2af899f7e..c44f863f6d0 100644 --- a/.github/workflows/issue-classifier.lock.yml +++ b/.github/workflows/issue-classifier.lock.yml @@ -2025,7 +2025,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index bb1d50e49c1..aa24cf2a525 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -1868,7 +1868,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index a6fbf90d27f..efa35de3fc4 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -2286,7 +2286,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index de6963611c2..d068685a186 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -1307,7 +1307,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 7b04ddf8936..680b9196e42 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -2432,7 +2432,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index c846c2f61e0..dd78217f153 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -1922,7 +1922,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 3b0a3a0f819..6d33a9ac7bd 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -2676,7 +2676,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index f8017d7fa39..11e97cd288e 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -2734,7 +2734,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index 87fed77c646..67374dc8e44 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -1405,7 +1405,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index 5ef310c73e5..5cfe0372688 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -1327,7 +1327,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index e7f03062719..c142721c109 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -1835,7 +1835,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 386c02fa626..255542319de 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -3059,7 +3059,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/security-fix-pr.lock.yml b/.github/workflows/security-fix-pr.lock.yml index ab33b598afb..6799427a10a 100644 --- a/.github/workflows/security-fix-pr.lock.yml +++ b/.github/workflows/security-fix-pr.lock.yml @@ -1602,7 +1602,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index 3f75376923a..b0251caa02b 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -1873,7 +1873,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index b438acb0939..f3a4845af50 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1440,7 +1440,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index e9a3c7641bb..66af8e4fb86 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -1260,7 +1260,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 6e1ddde4a4c..a10acee6525 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -1278,7 +1278,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-detector.lock.yml b/.github/workflows/smoke-detector.lock.yml index 648709ce224..607de7db191 100644 --- a/.github/workflows/smoke-detector.lock.yml +++ b/.github/workflows/smoke-detector.lock.yml @@ -2022,7 +2022,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-genaiscript.lock.yml b/.github/workflows/smoke-genaiscript.lock.yml index a9dc4917e0f..a8e06f9ceb3 100644 --- a/.github/workflows/smoke-genaiscript.lock.yml +++ b/.github/workflows/smoke-genaiscript.lock.yml @@ -1260,7 +1260,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index c2130e0ec4e..94407a4825f 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -1289,7 +1289,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index a425ee540fe..cb6a4e42367 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -2335,7 +2335,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/test-jqschema.lock.yml b/.github/workflows/test-jqschema.lock.yml index c0290131037..6ded2a4aa63 100644 --- a/.github/workflows/test-jqschema.lock.yml +++ b/.github/workflows/test-jqschema.lock.yml @@ -570,7 +570,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/test-post-steps.lock.yml b/.github/workflows/test-post-steps.lock.yml index d8faea94a95..98616f0e6d5 100644 --- a/.github/workflows/test-post-steps.lock.yml +++ b/.github/workflows/test-post-steps.lock.yml @@ -468,7 +468,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/test-svelte.lock.yml b/.github/workflows/test-svelte.lock.yml index 62f12537256..e9f038f88ab 100644 --- a/.github/workflows/test-svelte.lock.yml +++ b/.github/workflows/test-svelte.lock.yml @@ -505,7 +505,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index d198e74557b..c276f410c62 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -1809,7 +1809,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 98344616b33..7970326c477 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -2573,7 +2573,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index 9c426d9d107..12dec30f558 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -1573,7 +1573,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 38036cce0bf..0ba24399ba5 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -1296,7 +1296,7 @@ jobs: return; } core.info(`Found ${secretValues.length} secret(s) to redact`); - const targetExtensions = [".txt", ".json", ".log"]; + const targetExtensions = [".txt", ".json", ".log", ".md", ".mdx", ".yml", ".jsonl"]; const files = findFiles("/tmp/gh-aw", targetExtensions); core.info(`Found ${files.length} file(s) to scan for secrets`); let totalRedactions = 0; diff --git a/.serena/.gitignore b/.serena/.gitignore deleted file mode 100644 index 14d86ad6230..00000000000 --- a/.serena/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/cache diff --git a/.serena/project.yml b/.serena/project.yml deleted file mode 100644 index 42ba514a3f8..00000000000 --- a/.serena/project.yml +++ /dev/null @@ -1,71 +0,0 @@ -# language of the project (csharp, python, rust, java, typescript, go, cpp, or ruby) -# * For C, use cpp -# * For JavaScript, use typescript -# Special requirements: -# * csharp: Requires the presence of a .sln file in the project folder. -language: go - -# the encoding used by text files in the project -# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings -encoding: "utf-8" - -# whether to use the project's gitignore file to ignore files -# Added on 2025-04-07 -ignore_all_files_in_gitignore: true -# list of additional paths to ignore -# same syntax as gitignore, so you can use * and ** -# Was previously called `ignored_dirs`, please update your config if you are using that. -# Added (renamed) on 2025-04-07 -ignored_paths: [] - -# whether the project is in read-only mode -# If set to true, all editing tools will be disabled and attempts to use them will result in an error -# Added on 2025-04-18 -read_only: false - -# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details. -# Below is the complete list of tools for convenience. -# To make sure you have the latest list of tools, and to view their descriptions, -# execute `uv run scripts/print_tool_overview.py`. -# -# * `activate_project`: Activates a project by name. -# * `check_onboarding_performed`: Checks whether project onboarding was already performed. -# * `create_text_file`: Creates/overwrites a file in the project directory. -# * `delete_lines`: Deletes a range of lines within a file. -# * `delete_memory`: Deletes a memory from Serena's project-specific memory store. -# * `execute_shell_command`: Executes a shell command. -# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced. -# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type). -# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type). -# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes. -# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file. -# * `initial_instructions`: Gets the initial instructions for the current project. -# Should only be used in settings where the system prompt cannot be set, -# e.g. in clients you have no control over, like Claude Desktop. -# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol. -# * `insert_at_line`: Inserts content at a given line in a file. -# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol. -# * `list_dir`: Lists files and directories in the given directory (optionally with recursion). -# * `list_memories`: Lists memories in Serena's project-specific memory store. -# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building). -# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context). -# * `read_file`: Reads a file within the project directory. -# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store. -# * `remove_project`: Removes a project from the Serena configuration. -# * `replace_lines`: Replaces a range of lines within a file with new content. -# * `replace_symbol_body`: Replaces the full definition of a symbol. -# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen. -# * `search_for_pattern`: Performs a search for a pattern in the project. -# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase. -# * `switch_modes`: Activates modes by providing a list of their names -# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information. -# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task. -# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed. -# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store. -excluded_tools: [] - -# initial prompt for the project. It will always be given to the LLM upon activating the project -# (contrary to the memories, which are loaded on demand). -initial_prompt: "" - -project_name: "gh-aw" diff --git a/pkg/workflow/compiler.go b/pkg/workflow/compiler.go index e84b27c0cd9..a520aae4979 100644 --- a/pkg/workflow/compiler.go +++ b/pkg/workflow/compiler.go @@ -1505,21 +1505,6 @@ func (c *Compiler) parseOnSection(frontmatter map[string]any, workflowData *Work return nil } -// isValidReaction checks if a reaction value is valid according to the schema -func isValidReaction(reaction string) bool { - validReactions := map[string]bool{ - "+1": true, - "-1": true, - "laugh": true, - "confused": true, - "heart": true, - "hooray": true, - "rocket": true, - "eyes": true, - } - return validReactions[reaction] -} - // generateJobName converts a workflow name to a valid YAML job identifier func (c *Compiler) generateJobName(workflowName string) string { // Convert to lowercase and replace spaces and special characters with hyphens diff --git a/pkg/workflow/compiler_test.go b/pkg/workflow/compiler_test.go index 571f60b97c7..971919808b3 100644 --- a/pkg/workflow/compiler_test.go +++ b/pkg/workflow/compiler_test.go @@ -2946,16 +2946,16 @@ Test workflow with invalid reaction value. } // Verify error message mentions the invalid value and valid options - expectedSubstrings := []string{ - "invalid reaction value", - "invalid_emoji", - "must be one of", - } + // The error can come from either schema validation or custom validation + errMsg := err.Error() + hasInvalidValue := strings.Contains(errMsg, "invalid_emoji") || strings.Contains(errMsg, "reaction") + hasValidOptions := strings.Contains(errMsg, "must be one of") || strings.Contains(errMsg, "+1") || strings.Contains(errMsg, "eyes") - for _, expected := range expectedSubstrings { - if !strings.Contains(err.Error(), expected) { - t.Errorf("Error message should contain '%s', got: %v", expected, err) - } + if !hasInvalidValue { + t.Errorf("Error message should mention the invalid reaction value, got: %v", err) + } + if !hasValidOptions { + t.Errorf("Error message should mention valid reaction options, got: %v", err) } } diff --git a/pkg/workflow/reactions.go b/pkg/workflow/reactions.go new file mode 100644 index 00000000000..1f920a879e5 --- /dev/null +++ b/pkg/workflow/reactions.go @@ -0,0 +1,16 @@ +package workflow + +// isValidReaction checks if a reaction value is valid according to the schema +func isValidReaction(reaction string) bool { + validReactions := map[string]bool{ + "+1": true, + "-1": true, + "laugh": true, + "confused": true, + "heart": true, + "hooray": true, + "rocket": true, + "eyes": true, + } + return validReactions[reaction] +} From 9cceb0cda59390c1540ff19623a1de01e3d61482 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:00:34 -0700 Subject: [PATCH 3/3] Add getValidReactions function to compute valid reaction list dynamically (#2244) * Initial plan * Add getValidReactions function to compute valid reaction list from validReactions map Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/compiler.go | 3 +-- pkg/workflow/reactions.go | 31 +++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/pkg/workflow/compiler.go b/pkg/workflow/compiler.go index a520aae4979..55e6608e224 100644 --- a/pkg/workflow/compiler.go +++ b/pkg/workflow/compiler.go @@ -1444,8 +1444,7 @@ func (c *Compiler) parseOnSection(frontmatter map[string]any, workflowData *Work if reactionStr, ok := reactionValue.(string); ok { // Validate reaction value if !isValidReaction(reactionStr) { - validValues := []string{"+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"} - return fmt.Errorf("invalid reaction value '%s': must be one of %v", reactionStr, validValues) + return fmt.Errorf("invalid reaction value '%s': must be one of %v", reactionStr, getValidReactions()) } workflowData.AIReaction = reactionStr } diff --git a/pkg/workflow/reactions.go b/pkg/workflow/reactions.go index 1f920a879e5..87d96f14e30 100644 --- a/pkg/workflow/reactions.go +++ b/pkg/workflow/reactions.go @@ -1,16 +1,27 @@ package workflow +// validReactions defines the set of valid reaction values +var validReactions = map[string]bool{ + "+1": true, + "-1": true, + "laugh": true, + "confused": true, + "heart": true, + "hooray": true, + "rocket": true, + "eyes": true, +} + // isValidReaction checks if a reaction value is valid according to the schema func isValidReaction(reaction string) bool { - validReactions := map[string]bool{ - "+1": true, - "-1": true, - "laugh": true, - "confused": true, - "heart": true, - "hooray": true, - "rocket": true, - "eyes": true, - } return validReactions[reaction] } + +// getValidReactions returns the list of valid reaction entries +func getValidReactions() []string { + reactions := make([]string, 0, len(validReactions)) + for reaction := range validReactions { + reactions = append(reactions, reaction) + } + return reactions +}