From e5be76844b6cb44af190b85430ea35ad5a68eda5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:45:35 +0000 Subject: [PATCH 01/16] Initial plan From 4ec51e73b4072209c9ded7959cd57ed13a51e989 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:56:16 +0000 Subject: [PATCH 02/16] Add cache-memory and repo-memory file type validation Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/push_repo_memory.cjs | 8 + actions/setup/js/validate_memory_files.cjs | 73 ++++++++ .../setup/js/validate_memory_files.test.cjs | 177 ++++++++++++++++++ pkg/workflow/cache.go | 70 ++++++- pkg/workflow/compiler_yaml_main_job.go | 4 + pkg/workflow/prompts/cache_memory_prompt.md | 9 +- pkg/workflow/repo_memory_prompt.go | 16 +- 7 files changed, 348 insertions(+), 9 deletions(-) create mode 100644 actions/setup/js/validate_memory_files.cjs create mode 100644 actions/setup/js/validate_memory_files.test.cjs diff --git a/actions/setup/js/push_repo_memory.cjs b/actions/setup/js/push_repo_memory.cjs index 1699f126c8c..34ada089056 100644 --- a/actions/setup/js/push_repo_memory.cjs +++ b/actions/setup/js/push_repo_memory.cjs @@ -241,6 +241,14 @@ async function main() { return; } + // Validate file types before copying + const { validateMemoryFiles } = require("./validate_memory_files.cjs"); + const validation = validateMemoryFiles(sourceMemoryPath, "repo"); + if (!validation.valid) { + core.setFailed(`File type validation failed: Found ${validation.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + return; + } + core.info(`Copying ${filesToCopy.length} validated file(s)...`); // Copy files to destination (preserving directory structure) diff --git a/actions/setup/js/validate_memory_files.cjs b/actions/setup/js/validate_memory_files.cjs new file mode 100644 index 00000000000..46e182cbf64 --- /dev/null +++ b/actions/setup/js/validate_memory_files.cjs @@ -0,0 +1,73 @@ +// @ts-check +/// + +const fs = require("fs"); +const path = require("path"); + +/** + * Validate that all files in a memory directory have allowed file extensions + * Allowed extensions: .json, .jsonl, .txt, .md, .csv + * + * @param {string} memoryDir - Path to the memory directory to validate + * @param {string} memoryType - Type of memory ("cache" or "repo") for error messages + * @returns {{valid: boolean, invalidFiles: string[]}} Validation result with list of invalid files + */ +function validateMemoryFiles(memoryDir, memoryType = "cache") { + const allowedExtensions = [".json", ".jsonl", ".txt", ".md", ".csv"]; + const invalidFiles = []; + + // Check if directory exists + if (!fs.existsSync(memoryDir)) { + core.info(`Memory directory does not exist: ${memoryDir}`); + return { valid: true, invalidFiles: [] }; + } + + /** + * Recursively scan directory for files + * @param {string} dirPath - Directory to scan + * @param {string} relativePath - Relative path from memory directory + */ + function scanDirectory(dirPath, relativePath = "") { + const entries = fs.readdirSync(dirPath, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dirPath, entry.name); + const relativeFilePath = relativePath ? path.join(relativePath, entry.name) : entry.name; + + if (entry.isDirectory()) { + // Recursively scan subdirectory + scanDirectory(fullPath, relativeFilePath); + } else if (entry.isFile()) { + // Check file extension + const ext = path.extname(entry.name).toLowerCase(); + if (!allowedExtensions.includes(ext)) { + invalidFiles.push(relativeFilePath); + } + } + } + } + + try { + scanDirectory(memoryDir); + } catch (error) { + core.error(`Failed to scan ${memoryType}-memory directory: ${error instanceof Error ? error.message : String(error)}`); + return { valid: false, invalidFiles: [] }; + } + + if (invalidFiles.length > 0) { + core.error(`Found ${invalidFiles.length} file(s) with invalid extensions in ${memoryType}-memory:`); + invalidFiles.forEach(file => { + const ext = path.extname(file).toLowerCase(); + core.error(` - ${file} (extension: ${ext || "(no extension)"})`); + }); + core.error(`Allowed extensions: ${allowedExtensions.join(", ")}`); + return { valid: false, invalidFiles }; + } + + core.info(`All files in ${memoryType}-memory directory have valid extensions`); + return { valid: true, invalidFiles: [] }; +} + +module.exports = { + validateMemoryFiles, +}; diff --git a/actions/setup/js/validate_memory_files.test.cjs b/actions/setup/js/validate_memory_files.test.cjs new file mode 100644 index 00000000000..7a857ec0a9c --- /dev/null +++ b/actions/setup/js/validate_memory_files.test.cjs @@ -0,0 +1,177 @@ +// @ts-check + +import { describe, it, expect, beforeEach, afterEach } from "vitest"; +import fs from "fs"; +import path from "path"; +import os from "os"; + +const { validateMemoryFiles } = require("./validate_memory_files.cjs"); + +// Mock core globally +global.core = { + info: () => {}, + error: () => {}, + warning: () => {}, + debug: () => {}, +}; + +describe("validateMemoryFiles", () => { + let tempDir = ""; + + beforeEach(() => { + // Create a temporary directory for testing + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "validate-memory-test-")); + }); + + afterEach(() => { + // Clean up temporary directory + if (tempDir && fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + it("returns valid for empty directory", () => { + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("returns valid for non-existent directory", () => { + const nonExistentDir = path.join(tempDir, "does-not-exist"); + const result = validateMemoryFiles(nonExistentDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts .json files", () => { + fs.writeFileSync(path.join(tempDir, "data.json"), '{"test": true}'); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts .jsonl files", () => { + fs.writeFileSync(path.join(tempDir, "data.jsonl"), '{"line": 1}\n{"line": 2}'); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts .txt files", () => { + fs.writeFileSync(path.join(tempDir, "notes.txt"), "Some notes"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts .md files", () => { + fs.writeFileSync(path.join(tempDir, "README.md"), "# Title"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts .csv files", () => { + fs.writeFileSync(path.join(tempDir, "data.csv"), "col1,col2\nval1,val2"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("accepts multiple valid files", () => { + fs.writeFileSync(path.join(tempDir, "data.json"), "{}"); + fs.writeFileSync(path.join(tempDir, "notes.txt"), "notes"); + fs.writeFileSync(path.join(tempDir, "README.md"), "# Title"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("rejects .log files", () => { + fs.writeFileSync(path.join(tempDir, "app.log"), "log entry"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual(["app.log"]); + }); + + it("rejects .yaml files", () => { + fs.writeFileSync(path.join(tempDir, "config.yaml"), "key: value"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual(["config.yaml"]); + }); + + it("rejects .xml files", () => { + fs.writeFileSync(path.join(tempDir, "data.xml"), ""); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual(["data.xml"]); + }); + + it("rejects files without extension", () => { + fs.writeFileSync(path.join(tempDir, "noext"), "content"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual(["noext"]); + }); + + it("rejects multiple invalid files", () => { + fs.writeFileSync(path.join(tempDir, "app.log"), "log"); + fs.writeFileSync(path.join(tempDir, "config.yaml"), "yaml"); + fs.writeFileSync(path.join(tempDir, "valid.json"), "{}"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toHaveLength(2); + expect(result.invalidFiles).toContain("app.log"); + expect(result.invalidFiles).toContain("config.yaml"); + }); + + it("validates files in subdirectories", () => { + const subdir = path.join(tempDir, "subdir"); + fs.mkdirSync(subdir); + fs.writeFileSync(path.join(subdir, "valid.json"), "{}"); + fs.writeFileSync(path.join(subdir, "invalid.log"), "log"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual([path.join("subdir", "invalid.log")]); + }); + + it("validates files in deeply nested directories", () => { + const level1 = path.join(tempDir, "level1"); + const level2 = path.join(level1, "level2"); + const level3 = path.join(level2, "level3"); + fs.mkdirSync(level1); + fs.mkdirSync(level2); + fs.mkdirSync(level3); + fs.writeFileSync(path.join(level3, "deep.json"), "{}"); + fs.writeFileSync(path.join(level3, "invalid.bin"), "binary"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual([path.join("level1", "level2", "level3", "invalid.bin")]); + }); + + it("is case-insensitive for extensions", () => { + fs.writeFileSync(path.join(tempDir, "data.JSON"), "{}"); + fs.writeFileSync(path.join(tempDir, "notes.TXT"), "text"); + fs.writeFileSync(path.join(tempDir, "README.MD"), "# Title"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("handles mixed valid and invalid files in subdirectories", () => { + const subdir1 = path.join(tempDir, "valid-files"); + const subdir2 = path.join(tempDir, "invalid-files"); + fs.mkdirSync(subdir1); + fs.mkdirSync(subdir2); + fs.writeFileSync(path.join(subdir1, "data.json"), "{}"); + fs.writeFileSync(path.join(subdir1, "notes.txt"), "text"); + fs.writeFileSync(path.join(subdir2, "app.log"), "log"); + fs.writeFileSync(path.join(subdir2, "config.ini"), "ini"); + const result = validateMemoryFiles(tempDir, "cache"); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toHaveLength(2); + expect(result.invalidFiles).toContain(path.join("invalid-files", "app.log")); + expect(result.invalidFiles).toContain(path.join("invalid-files", "config.ini")); + }); +}); diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index d70803547b3..3ae3f6cf211 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -473,6 +473,53 @@ func generateCacheMemorySteps(builder *strings.Builder, data *WorkflowData) { } } +// generateCacheMemoryValidation generates validation steps for cache-memory file types +// This should be called after agent execution to validate files before upload/save +func generateCacheMemoryValidation(builder *strings.Builder, data *WorkflowData) { + if data.CacheMemoryConfig == nil || len(data.CacheMemoryConfig.Caches) == 0 { + return + } + + cacheLog.Printf("Generating cache-memory validation steps for %d caches", len(data.CacheMemoryConfig.Caches)) + + // Use backward-compatible paths only when there's a single cache with ID "default" + useBackwardCompatiblePaths := len(data.CacheMemoryConfig.Caches) == 1 && data.CacheMemoryConfig.Caches[0].ID == "default" + + for _, cache := range data.CacheMemoryConfig.Caches { + // Skip restore-only caches + if cache.RestoreOnly { + continue + } + + // Default cache uses /tmp/gh-aw/cache-memory/ for backward compatibility + // Other caches use /tmp/gh-aw/cache-memory-{id}/ to prevent overlaps + var cacheDir string + if cache.ID == "default" { + cacheDir = "/tmp/gh-aw/cache-memory" + } else { + cacheDir = fmt.Sprintf("/tmp/gh-aw/cache-memory-%s", cache.ID) + } + + // Add validation step + if useBackwardCompatiblePaths { + builder.WriteString(" - name: Validate cache-memory file types\n") + } else { + fmt.Fprintf(builder, " - name: Validate cache-memory file types (%s)\n", cache.ID) + } + builder.WriteString(" if: always()\n") + builder.WriteString(" uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8\n") + builder.WriteString(" with:\n") + builder.WriteString(" script: |\n") + builder.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") + builder.WriteString(" setupGlobals(core, github, context, exec, io);\n") + builder.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") + fmt.Fprintf(builder, " const result = validateMemoryFiles('%s', 'cache');\n", cacheDir) + builder.WriteString(" if (!result.valid) {\n") + builder.WriteString(" core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`);\n") + builder.WriteString(" }\n") + } +} + // generateCacheMemoryArtifactUpload generates artifact upload steps for cache-memory // This should be called after agent execution steps to ensure cache is uploaded after the agent has finished func generateCacheMemoryArtifactUpload(builder *strings.Builder, data *WorkflowData) { @@ -592,6 +639,7 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { content.WriteString("- **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache\n") content.WriteString("- **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved\n") content.WriteString("- **File Share**: Use these as simple file shares - organize files as you see fit\n") + content.WriteString("- **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation.\n") content.WriteString("\n") content.WriteString("Examples of what you can store:\n") @@ -604,12 +652,15 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { cacheDir = fmt.Sprintf("/tmp/gh-aw/cache-memory-%s", cache.ID) } fmt.Fprintf(&content, "- `%s/notes.txt` - general notes and observations\n", cacheDir) + fmt.Fprintf(&content, "- `%s/notes.md` - markdown formatted notes\n", cacheDir) fmt.Fprintf(&content, "- `%s/preferences.json` - user preferences and settings\n", cacheDir) - fmt.Fprintf(&content, "- `%s/state/` - organized state files in subdirectories\n", cacheDir) + fmt.Fprintf(&content, "- `%s/history.jsonl` - activity history in JSON Lines format\n", cacheDir) + fmt.Fprintf(&content, "- `%s/data.csv` - tabular data\n", cacheDir) + fmt.Fprintf(&content, "- `%s/state/` - organized state files in subdirectories (with allowed file types)\n", cacheDir) } content.WriteString("\n") - content.WriteString("Feel free to create, read, update, and organize files in these folders as needed for your tasks.\n") + content.WriteString("Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types.\n") return &PromptSection{ Content: content.String(), @@ -661,6 +712,21 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection fmt.Fprintf(&downloadStep, " path: %s\n", cacheDir) steps = append(steps, downloadStep.String()) + // Validate cache-memory file types step + var validateStep strings.Builder + fmt.Fprintf(&validateStep, " - name: Validate cache-memory file types (%s)\n", cache.ID) + validateStep.WriteString(" uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8\n") + validateStep.WriteString(" with:\n") + validateStep.WriteString(" script: |\n") + validateStep.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") + validateStep.WriteString(" setupGlobals(core, github, context, exec, io);\n") + validateStep.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") + fmt.Fprintf(&validateStep, " const result = validateMemoryFiles('%s', 'cache');\n", cacheDir) + validateStep.WriteString(" if (!result.valid) {\n") + validateStep.WriteString(" core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`);\n") + validateStep.WriteString(" }\n") + steps = append(steps, validateStep.String()) + // Generate cache key (same logic as in generateCacheMemorySteps) cacheKey := cache.Key if cacheKey == "" { diff --git a/pkg/workflow/compiler_yaml_main_job.go b/pkg/workflow/compiler_yaml_main_job.go index 692a1bca7f0..5b1b25f73d5 100644 --- a/pkg/workflow/compiler_yaml_main_job.go +++ b/pkg/workflow/compiler_yaml_main_job.go @@ -387,6 +387,10 @@ func (c *Compiler) generateMainJobSteps(yaml *strings.Builder, data *WorkflowDat // Add repo-memory artifact upload to save state for push job generateRepoMemoryArtifactUpload(yaml, data) + // Add cache-memory validation (after agent execution) + // This validates file types before cache is saved or uploaded + generateCacheMemoryValidation(yaml, data) + // Add cache-memory artifact upload (after agent execution) // This ensures artifacts are uploaded after the agent has finished modifying the cache generateCacheMemoryArtifactUpload(yaml, data) diff --git a/pkg/workflow/prompts/cache_memory_prompt.md b/pkg/workflow/prompts/cache_memory_prompt.md index dfaba014dd5..31cb24fa1fd 100644 --- a/pkg/workflow/prompts/cache_memory_prompt.md +++ b/pkg/workflow/prompts/cache_memory_prompt.md @@ -8,11 +8,14 @@ You have access to a persistent cache folder at `__CACHE_DIR__` where you can re - **Persistence**: Files in this folder persist across workflow runs via GitHub Actions cache - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - **File Share**: Use this as a simple file share - organize files as you see fit +- **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `__CACHE_DIR__notes.txt` - general notes and observations +- `__CACHE_DIR__notes.md` - markdown formatted notes - `__CACHE_DIR__preferences.json` - user preferences and settings -- `__CACHE_DIR__history.log` - activity history and logs -- `__CACHE_DIR__state/` - organized state files in subdirectories +- `__CACHE_DIR__history.jsonl` - activity history in JSON Lines format +- `__CACHE_DIR__data.csv` - tabular data +- `__CACHE_DIR__state/` - organized state files in subdirectories (with allowed file types) -Feel free to create, read, update, and organize files in this folder as needed for your tasks. +Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. diff --git a/pkg/workflow/repo_memory_prompt.go b/pkg/workflow/repo_memory_prompt.go index 9d09c679d9d..d17e1d12e6f 100644 --- a/pkg/workflow/repo_memory_prompt.go +++ b/pkg/workflow/repo_memory_prompt.go @@ -44,6 +44,7 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes\n") yaml.WriteString(" - **Merge Strategy**: In case of conflicts, your changes (current version) win\n") yaml.WriteString(" - **Persistence**: Files persist across workflow runs via git branch storage\n") + yaml.WriteString(" - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation.\n") // Add file constraints if specified if len(memory.FileGlob) > 0 || memory.MaxFileSize > 0 || memory.MaxFileCount > 0 { @@ -63,10 +64,13 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" \n") yaml.WriteString(" Examples of what you can store:\n") fmt.Fprintf(yaml, " - `%snotes.md` - general notes and observations\n", memoryDir) + fmt.Fprintf(yaml, " - `%snotes.txt` - plain text notes\n", memoryDir) fmt.Fprintf(yaml, " - `%sstate.json` - structured state data\n", memoryDir) - fmt.Fprintf(yaml, " - `%shistory/` - organized history files in subdirectories\n", memoryDir) + fmt.Fprintf(yaml, " - `%shistory.jsonl` - activity history in JSON Lines format\n", memoryDir) + fmt.Fprintf(yaml, " - `%sdata.csv` - tabular data\n", memoryDir) + fmt.Fprintf(yaml, " - `%shistory/` - organized history files in subdirectories (with allowed file types)\n", memoryDir) yaml.WriteString(" \n") - yaml.WriteString(" Feel free to create, read, update, and organize files in this folder as needed for your tasks.\n") + yaml.WriteString(" Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types.\n") } else { // Multiple memories or non-default single memory repoMemoryPromptLog.Printf("Generating multiple repo memory prompts: count=%d", len(config.Memories)) @@ -92,13 +96,17 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes\n") yaml.WriteString(" - **Merge Strategy**: In case of conflicts, your changes (current version) win\n") yaml.WriteString(" - **Persistence**: Files persist across workflow runs via git branch storage\n") + yaml.WriteString(" - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation.\n") yaml.WriteString(" \n") yaml.WriteString(" Examples of what you can store:\n") memoryDir := "/tmp/gh-aw/repo-memory" fmt.Fprintf(yaml, " - `%s/notes.md` - general notes and observations\n", memoryDir) + fmt.Fprintf(yaml, " - `%s/notes.txt` - plain text notes\n", memoryDir) fmt.Fprintf(yaml, " - `%s/state.json` - structured state data\n", memoryDir) - fmt.Fprintf(yaml, " - `%s/history/` - organized history files\n", memoryDir) + fmt.Fprintf(yaml, " - `%s/history.jsonl` - activity history in JSON Lines format\n", memoryDir) + fmt.Fprintf(yaml, " - `%s/data.csv` - tabular data\n", memoryDir) + fmt.Fprintf(yaml, " - `%s/history/` - organized history files (with allowed file types)\n", memoryDir) yaml.WriteString(" \n") - yaml.WriteString(" Feel free to create, read, update, and organize files in these folders as needed for your tasks.\n") + yaml.WriteString(" Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types.\n") } } From 0407bbcfe2dc780fc85b4e9c174b71f5f2dcf063 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:23:35 +0000 Subject: [PATCH 03/16] Plan: Make file type restrictions configurable via allowed-extensions Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../agent-performance-analyzer.lock.yml | 8 +++-- .../workflows/agent-persona-explorer.lock.yml | 23 ++++++++++++++ .github/workflows/audit-workflows.lock.yml | 31 +++++++++++++++++-- .../workflows/chroma-issue-indexer.lock.yml | 20 ++++++++++-- .github/workflows/ci-coach.lock.yml | 23 ++++++++++++++ .github/workflows/ci-doctor.lock.yml | 23 ++++++++++++++ .../claude-code-user-docs-review.lock.yml | 23 ++++++++++++++ .../workflows/cli-version-checker.lock.yml | 23 ++++++++++++++ .github/workflows/cloclo.lock.yml | 23 ++++++++++++++ .../workflows/code-scanning-fixer.lock.yml | 31 +++++++++++++++++-- .../workflows/copilot-agent-analysis.lock.yml | 31 +++++++++++++++++-- .../copilot-cli-deep-research.lock.yml | 8 +++-- .../copilot-pr-nlp-analysis.lock.yml | 31 +++++++++++++++++-- .../copilot-pr-prompt-analysis.lock.yml | 31 +++++++++++++++++-- .../copilot-session-insights.lock.yml | 31 +++++++++++++++++-- .../workflows/daily-cli-performance.lock.yml | 8 +++-- .github/workflows/daily-code-metrics.lock.yml | 31 +++++++++++++++++-- .../workflows/daily-compiler-quality.lock.yml | 23 ++++++++++++++ .../daily-copilot-token-report.lock.yml | 31 +++++++++++++++++-- .github/workflows/daily-doc-updater.lock.yml | 23 ++++++++++++++ .../workflows/daily-firewall-report.lock.yml | 23 ++++++++++++++ .../workflows/daily-issues-report.lock.yml | 23 ++++++++++++++ .../daily-mcp-concurrency-analysis.lock.yml | 23 ++++++++++++++ .github/workflows/daily-news.lock.yml | 31 +++++++++++++++++-- .../daily-performance-summary.lock.yml | 23 ++++++++++++++ .../workflows/daily-repo-chronicle.lock.yml | 23 ++++++++++++++ .../daily-safe-output-optimizer.lock.yml | 23 ++++++++++++++ .../daily-testify-uber-super-expert.lock.yml | 8 +++-- .github/workflows/deep-report.lock.yml | 31 +++++++++++++++++-- .github/workflows/delight.lock.yml | 8 +++-- .../developer-docs-consolidator.lock.yml | 23 ++++++++++++++ .../workflows/discussion-task-miner.lock.yml | 8 +++-- .github/workflows/firewall-escape.lock.yml | 31 +++++++++++++++++-- .../github-mcp-structural-analysis.lock.yml | 23 ++++++++++++++ .../github-mcp-tools-report.lock.yml | 23 ++++++++++++++ .../workflows/glossary-maintainer.lock.yml | 23 ++++++++++++++ .github/workflows/go-fan.lock.yml | 23 ++++++++++++++ .github/workflows/go-logger.lock.yml | 23 ++++++++++++++ .github/workflows/gpclean.lock.yml | 23 ++++++++++++++ .github/workflows/grumpy-reviewer.lock.yml | 23 ++++++++++++++ .../workflows/instructions-janitor.lock.yml | 23 ++++++++++++++ .github/workflows/jsweep.lock.yml | 23 ++++++++++++++ .github/workflows/lockfile-stats.lock.yml | 23 ++++++++++++++ .github/workflows/mcp-inspector.lock.yml | 23 ++++++++++++++ .github/workflows/metrics-collector.lock.yml | 8 +++-- .github/workflows/org-health-report.lock.yml | 23 ++++++++++++++ .github/workflows/pdf-summary.lock.yml | 23 ++++++++++++++ .github/workflows/poem-bot.lock.yml | 23 ++++++++++++++ .github/workflows/portfolio-analyst.lock.yml | 23 ++++++++++++++ .../workflows/pr-nitpick-reviewer.lock.yml | 23 ++++++++++++++ .github/workflows/pr-triage-agent.lock.yml | 8 +++-- .../prompt-clustering-analysis.lock.yml | 23 ++++++++++++++ .github/workflows/python-data-charts.lock.yml | 23 ++++++++++++++ .github/workflows/q.lock.yml | 23 ++++++++++++++ .../workflows/repo-audit-analyzer.lock.yml | 31 +++++++++++++++++-- .../repository-quality-improver.lock.yml | 31 +++++++++++++++++-- .github/workflows/safe-output-health.lock.yml | 23 ++++++++++++++ .../schema-consistency-checker.lock.yml | 23 ++++++++++++++ .github/workflows/scout.lock.yml | 23 ++++++++++++++ .../workflows/security-compliance.lock.yml | 8 +++-- .github/workflows/security-review.lock.yml | 23 ++++++++++++++ .github/workflows/sergo.lock.yml | 23 ++++++++++++++ .../workflows/slide-deck-maintainer.lock.yml | 23 ++++++++++++++ .github/workflows/smoke-claude.lock.yml | 23 ++++++++++++++ .github/workflows/smoke-codex.lock.yml | 23 ++++++++++++++ .github/workflows/smoke-copilot.lock.yml | 23 ++++++++++++++ .../workflows/stale-repo-identifier.lock.yml | 23 ++++++++++++++ .../workflows/static-analysis-report.lock.yml | 23 ++++++++++++++ .../workflows/step-name-alignment.lock.yml | 23 ++++++++++++++ .github/workflows/super-linter.lock.yml | 23 ++++++++++++++ .../workflows/technical-doc-writer.lock.yml | 23 ++++++++++++++ .../test-create-pr-error-handling.lock.yml | 23 ++++++++++++++ .github/workflows/unbloat-docs.lock.yml | 23 ++++++++++++++ .../workflows/weekly-issue-summary.lock.yml | 23 ++++++++++++++ .../workflow-health-manager.lock.yml | 8 +++-- 75 files changed, 1628 insertions(+), 48 deletions(-) diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index caf806f9baa..42aebab4e04 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -692,6 +692,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: ** @@ -700,10 +701,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index bc41cbe760d..f8f22ae25b0 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -823,6 +823,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1186,6 +1198,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index d688fd4fc60..574b5eaad3f 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -651,6 +651,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/audit-workflows/*.json, memory/audit-workflows/*.jsonl, memory/audit-workflows/*.csv, memory/audit-workflows/*.md @@ -659,10 +660,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -982,6 +986,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1408,6 +1424,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/chroma-issue-indexer.lock.yml b/.github/workflows/chroma-issue-indexer.lock.yml index 6572d6fbc4f..43e2e84449b 100644 --- a/.github/workflows/chroma-issue-indexer.lock.yml +++ b/.github/workflows/chroma-issue-indexer.lock.yml @@ -307,13 +307,17 @@ jobs: - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - **File Share**: Use these as simple file shares - organize files as you see fit + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/cache-memory-chroma/notes.txt` - general notes and observations + - `/tmp/gh-aw/cache-memory-chroma/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-chroma/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-chroma/state/` - organized state files in subdirectories + - `/tmp/gh-aw/cache-memory-chroma/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/cache-memory-chroma/data.csv` - tabular data + - `/tmp/gh-aw/cache-memory-chroma/state/` - organized state files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in these folders as needed for your tasks. + Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. The following GitHub context information is available for this workflow: @@ -515,6 +519,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types (chroma) + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-chroma', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload agent artifacts if: always() continue-on-error: true diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 779c19eb162..e282a41ddf1 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -818,6 +818,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1198,6 +1210,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 0f132ed1262..53011ebf3b3 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -933,6 +933,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1321,6 +1333,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index 940e98ddbc6..f02dfb955eb 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -805,6 +805,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1159,6 +1171,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 75f1a7b38bf..b0b79de3134 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -836,6 +836,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1181,6 +1193,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 1c9a190537d..8e03c05ef93 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -1096,6 +1096,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1561,6 +1573,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index f46480b5e84..70f3506e726 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -571,13 +571,17 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/repo-memory/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/history/` - organized history files + - `/tmp/gh-aw/repo-memory/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/history/` - organized history files (with allowed file types) - Feel free to create, read, update, and organize files in these folders as needed for your tasks. + Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -834,6 +838,18 @@ jobs: path: /tmp/gh-aw/repo-memory/campaigns retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1312,6 +1328,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 86d53717a65..eec4fc59567 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -539,6 +539,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/copilot-agent-analysis/*.json, memory/copilot-agent-analysis/*.jsonl, memory/copilot-agent-analysis/*.csv, memory/copilot-agent-analysis/*.md @@ -547,10 +548,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -891,6 +895,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1301,6 +1317,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index b445a3fa8c4..e9731b17bd8 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -515,6 +515,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/copilot-cli-research/*.json, memory/copilot-cli-research/*.md @@ -523,10 +524,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index c8ee0ff7902..8a34fada034 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -593,6 +593,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/nlp-analysis/*.json, memory/nlp-analysis/*.jsonl, memory/nlp-analysis/*.csv, memory/nlp-analysis/*.md @@ -601,10 +602,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -878,6 +882,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1283,6 +1299,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 5f68890df80..8bd59d8d674 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -535,6 +535,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/prompt-analysis/*.json, memory/prompt-analysis/*.jsonl, memory/prompt-analysis/*.csv, memory/prompt-analysis/*.md @@ -543,10 +544,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -814,6 +818,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1209,6 +1225,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 412c7bf437e..cd82dfa08d4 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -594,6 +594,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/session-insights/*.json, memory/session-insights/*.jsonl, memory/session-insights/*.csv, memory/session-insights/*.md @@ -602,10 +603,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -937,6 +941,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1357,6 +1373,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index d40c416b30a..5843a79dc5e 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -705,6 +705,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/cli-performance/*.json, memory/cli-performance/*.jsonl, memory/cli-performance/*.txt @@ -713,10 +714,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 2fdc504376b..bbc74a20a4d 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -582,6 +582,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: *.json, *.jsonl, *.csv, *.md @@ -590,10 +591,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -911,6 +915,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1337,6 +1353,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index 7a5d033d0b1..b1de6a1c9d9 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -782,6 +782,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1121,6 +1133,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 402fb4a5611..11758625e6b 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -611,6 +611,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/token-metrics/*.json, memory/token-metrics/*.jsonl, memory/token-metrics/*.csv, memory/token-metrics/*.md @@ -619,10 +620,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -889,6 +893,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1300,6 +1316,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 67bb0c62302..85e3f7f9117 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -835,6 +835,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1230,6 +1242,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index 31cb9747d90..7d81ed966ae 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -881,6 +881,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1230,6 +1242,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 66e74c26d85..4c6bb250e99 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -891,6 +891,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1262,6 +1274,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index ff6bbd988e3..026c6244e27 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -835,6 +835,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1185,6 +1197,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 6b0bcf5826a..51007e4da15 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -663,6 +663,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/daily-news/*.json, memory/daily-news/*.jsonl, memory/daily-news/*.csv, memory/daily-news/*.md @@ -671,10 +672,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -951,6 +955,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1362,6 +1378,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index 1748f10d502..b8870b440fe 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -1365,6 +1365,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1707,6 +1719,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index 2e6b5005828..637926f1ac3 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -816,6 +816,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1165,6 +1177,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 0f41efbcc8c..1ac37113d02 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -922,6 +922,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1310,6 +1322,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index a454a6c24ff..5d94f36745c 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -546,6 +546,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/testify-expert/*.json, memory/testify-expert/*.txt @@ -554,10 +555,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index f9f3ea431d1..b7ff90ff483 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -738,6 +738,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/deep-report/*.md @@ -746,10 +747,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -998,6 +1002,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1401,6 +1417,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index f2e2633f40d..db9ee30c687 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -591,6 +591,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/delight/*.json, memory/delight/*.md @@ -599,10 +600,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 40237c8321e..ffd964a2c65 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -910,6 +910,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1301,6 +1313,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index 931dad3feff..c5f49931152 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -563,6 +563,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/discussion-task-miner/*.json, memory/discussion-task-miner/*.md @@ -571,10 +572,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index dd2004404b0..e8fe3757344 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -533,6 +533,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Max File Size**: 524288 bytes (0.50 MB) per file @@ -540,10 +541,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -801,6 +805,18 @@ jobs: path: /tmp/gh-aw/repo-memory/default retention-days: 1 if-no-files-found: ignore + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1261,6 +1277,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index 36bf0cf9937..436d4a814c5 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -868,6 +868,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1226,6 +1238,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index fe88a1d5c87..b1cee01ad12 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -872,6 +872,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1263,6 +1275,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 5221dda9032..b64064070dd 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -813,6 +813,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1186,6 +1198,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index dcdd92f133d..757b3c7109b 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -842,6 +842,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1196,6 +1208,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 0732af59d10..5a8e0833904 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -1001,6 +1001,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1390,6 +1402,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index e527775439c..d81884e60f0 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -776,6 +776,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1106,6 +1118,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index d9403212aa3..f033ecf31cf 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -842,6 +842,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1237,6 +1249,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 2c316593aa2..4bc1594a7dd 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -834,6 +834,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1222,6 +1234,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 9a74a76828e..ed288b46782 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -778,6 +778,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1158,6 +1170,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index ef3764687ce..9ed8ac2a63a 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -806,6 +806,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1154,6 +1166,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 9750e4de901..94b561e8029 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -1136,6 +1136,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1745,6 +1757,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index d188cc62bff..a59b7040c87 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -353,6 +353,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: metrics/** @@ -361,10 +362,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. The following GitHub context information is available for this workflow: diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index b97c3c24634..59d12f83d7d 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -808,6 +808,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1151,6 +1163,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 25e1d201782..96006b96b49 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -869,6 +869,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1268,6 +1280,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 09c655b3edb..7b7f08c7e10 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1375,6 +1375,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1843,6 +1855,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index 4a063566f78..3afb1f0ca0d 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -892,6 +892,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1241,6 +1253,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index c64c6a48150..c4db3f4a005 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -925,6 +925,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1328,6 +1340,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index 73af4bb27c0..dfb15dbdfce 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -592,6 +592,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: ** @@ -600,10 +601,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 42e847ffbb5..f6b018aac35 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -937,6 +937,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1285,6 +1297,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index 422cdff0ce4..5fd871d3b2d 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -882,6 +882,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1225,6 +1237,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 2053c63aeb5..ebc72658f94 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -949,6 +949,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1394,6 +1406,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index 07ad446b09c..e0359f53ee3 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -521,13 +521,17 @@ jobs: - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - **File Share**: Use these as simple file shares - organize files as you see fit + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/cache-memory-repo-audits/notes.txt` - general notes and observations + - `/tmp/gh-aw/cache-memory-repo-audits/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-repo-audits/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-repo-audits/state/` - organized state files in subdirectories + - `/tmp/gh-aw/cache-memory-repo-audits/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/cache-memory-repo-audits/data.csv` - tabular data + - `/tmp/gh-aw/cache-memory-repo-audits/state/` - organized state files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in these folders as needed for your tasks. + Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -777,6 +781,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types (repo-audits) + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact (repo-audits) uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1113,6 +1129,17 @@ jobs: with: name: cache-memory-repo-audits path: /tmp/gh-aw/cache-memory-repo-audits + - name: Validate cache-memory file types (repo-audits) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (repo-audits) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 317a5fc8427..49380cae722 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -524,13 +524,17 @@ jobs: - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - **File Share**: Use these as simple file shares - organize files as you see fit + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/cache-memory-focus-areas/notes.txt` - general notes and observations + - `/tmp/gh-aw/cache-memory-focus-areas/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-focus-areas/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-focus-areas/state/` - organized state files in subdirectories + - `/tmp/gh-aw/cache-memory-focus-areas/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/cache-memory-focus-areas/data.csv` - tabular data + - `/tmp/gh-aw/cache-memory-focus-areas/state/` - organized state files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in these folders as needed for your tasks. + Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. GitHub API Access Instructions @@ -778,6 +782,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types (focus-areas) + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact (focus-areas) uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1111,6 +1127,17 @@ jobs: with: name: cache-memory-focus-areas path: /tmp/gh-aw/cache-memory-focus-areas + - name: Validate cache-memory file types (focus-areas) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (focus-areas) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 98f4c9d0b23..2bd6ab43726 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -898,6 +898,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1246,6 +1258,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index cbc986f9c47..110cc07e0ff 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -807,6 +807,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1155,6 +1167,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 5e9861148f4..51f544dac58 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -951,6 +951,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1372,6 +1384,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index b39cccd2dea..57b25eb6efb 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -542,6 +542,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: memory/campaigns/security-compliance-*/** @@ -550,10 +551,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index a95f838f281..f2af0163ce8 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -924,6 +924,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1319,6 +1331,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index e020db33101..28189466f8b 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -841,6 +841,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1195,6 +1207,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index a88c92bae31..2211a71abde 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -834,6 +834,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1257,6 +1269,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index d0cd2782b34..ff985d17edf 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1664,6 +1664,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -2063,6 +2075,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 6144d56062e..00df89a1982 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -1132,6 +1132,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1507,6 +1519,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index da5fdd49cd5..108dd00b137 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -1544,6 +1544,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1965,6 +1977,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 7a9893ad04a..1e07b32bf46 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -876,6 +876,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1219,6 +1231,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index 8fba6de082f..99d331fdb90 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -881,6 +881,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1229,6 +1241,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 5b4faf95e19..3e7f04d7c1f 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -838,6 +838,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1183,6 +1195,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index 0bdce70eef6..d1227babc2c 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -788,6 +788,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1164,6 +1176,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index fe4b185d8dd..cb8b57db032 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -867,6 +867,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1254,6 +1266,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 0d520dea135..72f2d99adf3 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -808,6 +808,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1196,6 +1208,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 241c5b06c79..262d6fb1511 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -1008,6 +1008,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1470,6 +1482,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 744c2ffea49..4aaf4031fbd 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -788,6 +788,18 @@ jobs: # AWF runs with sudo, creating files owned by root sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + - name: Validate cache-memory file types + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: always() @@ -1136,6 +1148,17 @@ jobs: with: name: cache-memory path: /tmp/gh-aw/cache-memory + - name: Validate cache-memory file types (default) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + if (!result.valid) { + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index c1cbbf41b6b..87724640744 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -662,6 +662,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. **Constraints:** - **Allowed Files**: Only files matching patterns: ** @@ -670,10 +671,13 @@ jobs: Examples of what you can store: - `/tmp/gh-aw/repo-memory/default/notes.md` - general notes and observations + - `/tmp/gh-aw/repo-memory/default/notes.txt` - plain text notes - `/tmp/gh-aw/repo-memory/default/state.json` - structured state data - - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories + - `/tmp/gh-aw/repo-memory/default/history.jsonl` - activity history in JSON Lines format + - `/tmp/gh-aw/repo-memory/default/data.csv` - tabular data + - `/tmp/gh-aw/repo-memory/default/history/` - organized history files in subdirectories (with allowed file types) - Feel free to create, read, update, and organize files in this folder as needed for your tasks. + Feel free to create, read, update, and organize files in this folder as needed for your tasks, using only the allowed file types. GitHub API Access Instructions From 50c701ead254abedcdcda69f67c37d9d464ffaa9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:36:58 +0000 Subject: [PATCH 04/16] Make file type restrictions configurable via allowed-extensions Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../agent-performance-analyzer.lock.yml | 1 + .../workflows/agent-persona-explorer.lock.yml | 12 ++- .github/workflows/audit-workflows.lock.yml | 13 ++- .../workflows/chroma-issue-indexer.lock.yml | 5 +- .github/workflows/ci-coach.lock.yml | 12 ++- .github/workflows/ci-doctor.lock.yml | 12 ++- .../claude-code-user-docs-review.lock.yml | 12 ++- .../workflows/cli-version-checker.lock.yml | 12 ++- .github/workflows/cloclo.lock.yml | 12 ++- .../workflows/code-scanning-fixer.lock.yml | 13 ++- .../workflows/copilot-agent-analysis.lock.yml | 13 ++- .../copilot-cli-deep-research.lock.yml | 1 + .../copilot-pr-nlp-analysis.lock.yml | 13 ++- .../copilot-pr-prompt-analysis.lock.yml | 13 ++- .../copilot-session-insights.lock.yml | 13 ++- .../workflows/daily-cli-performance.lock.yml | 1 + .github/workflows/daily-code-metrics.lock.yml | 13 ++- .../workflows/daily-compiler-quality.lock.yml | 12 ++- .../daily-copilot-token-report.lock.yml | 13 ++- .github/workflows/daily-doc-updater.lock.yml | 12 ++- .../workflows/daily-firewall-report.lock.yml | 12 ++- .../workflows/daily-issues-report.lock.yml | 12 ++- .../daily-mcp-concurrency-analysis.lock.yml | 12 ++- .github/workflows/daily-news.lock.yml | 13 ++- .../daily-performance-summary.lock.yml | 12 ++- .../workflows/daily-repo-chronicle.lock.yml | 12 ++- .../daily-safe-output-optimizer.lock.yml | 12 ++- .../daily-testify-uber-super-expert.lock.yml | 1 + .github/workflows/deep-report.lock.yml | 13 ++- .github/workflows/delight.lock.yml | 1 + .../developer-docs-consolidator.lock.yml | 12 ++- .../workflows/discussion-task-miner.lock.yml | 1 + .github/workflows/firewall-escape.lock.yml | 13 ++- .../github-mcp-structural-analysis.lock.yml | 12 ++- .../github-mcp-tools-report.lock.yml | 12 ++- .../workflows/glossary-maintainer.lock.yml | 12 ++- .github/workflows/go-fan.lock.yml | 12 ++- .github/workflows/go-logger.lock.yml | 12 ++- .github/workflows/gpclean.lock.yml | 12 ++- .github/workflows/grumpy-reviewer.lock.yml | 12 ++- .../workflows/instructions-janitor.lock.yml | 12 ++- .github/workflows/jsweep.lock.yml | 12 ++- .github/workflows/lockfile-stats.lock.yml | 12 ++- .github/workflows/mcp-inspector.lock.yml | 12 ++- .github/workflows/metrics-collector.lock.yml | 1 + .github/workflows/org-health-report.lock.yml | 12 ++- .github/workflows/pdf-summary.lock.yml | 12 ++- .github/workflows/poem-bot.lock.yml | 12 ++- .github/workflows/portfolio-analyst.lock.yml | 12 ++- .../workflows/pr-nitpick-reviewer.lock.yml | 12 ++- .github/workflows/pr-triage-agent.lock.yml | 1 + .../prompt-clustering-analysis.lock.yml | 12 ++- .github/workflows/python-data-charts.lock.yml | 12 ++- .github/workflows/q.lock.yml | 12 ++- .../workflows/repo-audit-analyzer.lock.yml | 10 +- .../repository-quality-improver.lock.yml | 10 +- .github/workflows/safe-output-health.lock.yml | 12 ++- .../schema-consistency-checker.lock.yml | 12 ++- .github/workflows/scout.lock.yml | 12 ++- .../workflows/security-compliance.lock.yml | 1 + .github/workflows/security-review.lock.yml | 12 ++- .github/workflows/sergo.lock.yml | 12 ++- .../workflows/slide-deck-maintainer.lock.yml | 12 ++- .github/workflows/smoke-claude.lock.yml | 12 ++- .github/workflows/smoke-codex.lock.yml | 12 ++- .github/workflows/smoke-copilot.lock.yml | 12 ++- .../workflows/stale-repo-identifier.lock.yml | 12 ++- .../workflows/static-analysis-report.lock.yml | 12 ++- .../workflows/step-name-alignment.lock.yml | 12 ++- .github/workflows/super-linter.lock.yml | 12 ++- .../workflows/technical-doc-writer.lock.yml | 12 ++- .../test-create-pr-error-handling.lock.yml | 12 ++- .github/workflows/unbloat-docs.lock.yml | 12 ++- .../workflows/weekly-issue-summary.lock.yml | 12 ++- .../workflow-health-manager.lock.yml | 1 + actions/setup/js/push_repo_memory.cjs | 7 +- actions/setup/js/validate_memory_files.cjs | 12 ++- .../setup/js/validate_memory_files.test.cjs | 25 +++++ pkg/parser/schemas/main_workflow_schema.json | 28 ++++++ pkg/workflow/cache.go | 92 +++++++++++++++---- pkg/workflow/prompts/cache_memory_prompt.md | 2 +- pkg/workflow/repo_memory.go | 75 +++++++++++---- pkg/workflow/repo_memory_prompt.go | 4 +- 83 files changed, 732 insertions(+), 303 deletions(-) diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index 42aebab4e04..25ce606b29e 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -1292,6 +1292,7 @@ jobs: BRANCH_NAME: memory/meta-orchestrators MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "**" with: script: | diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index f8f22ae25b0..8e72988f360 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -634,6 +634,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -652,6 +653,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -831,9 +833,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1205,9 +1208,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 574b5eaad3f..41fa302f0ec 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -734,6 +734,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -752,6 +753,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -994,9 +996,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1334,6 +1337,7 @@ jobs: BRANCH_NAME: memory/audit-workflows MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/audit-workflows/*.json memory/audit-workflows/*.jsonl memory/audit-workflows/*.csv memory/audit-workflows/*.md" with: script: | @@ -1431,9 +1435,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/chroma-issue-indexer.lock.yml b/.github/workflows/chroma-issue-indexer.lock.yml index 43e2e84449b..6a9783660c1 100644 --- a/.github/workflows/chroma-issue-indexer.lock.yml +++ b/.github/workflows/chroma-issue-indexer.lock.yml @@ -527,9 +527,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-chroma', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-chroma', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload agent artifacts if: always() diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index e282a41ddf1..8a69935ce3e 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -625,6 +625,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -644,6 +645,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -826,9 +828,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1217,9 +1220,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 53011ebf3b3..7ef3a68bde3 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -726,6 +726,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -750,6 +751,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -941,9 +943,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1340,9 +1343,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index f02dfb955eb..f2db6570b91 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -564,6 +564,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -582,6 +583,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -813,9 +815,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1178,9 +1181,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index b0b79de3134..94fea40c5c7 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -595,6 +595,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -613,6 +614,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -844,9 +846,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1200,9 +1203,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 8e03c05ef93..79d19513933 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -792,6 +792,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -816,6 +817,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1104,9 +1106,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1580,9 +1583,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 70f3506e726..9fe734259c9 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -640,6 +640,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -658,6 +659,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -846,9 +848,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1212,6 +1215,7 @@ jobs: BRANCH_NAME: memory/campaigns MAX_FILE_SIZE: 10240 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "security-alert-burndown/**" with: script: | @@ -1335,9 +1339,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index eec4fc59567..639d267cb47 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -622,6 +622,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -640,6 +641,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -903,9 +905,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1228,6 +1231,7 @@ jobs: BRANCH_NAME: memory/copilot-agent-analysis MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/copilot-agent-analysis/*.json memory/copilot-agent-analysis/*.jsonl memory/copilot-agent-analysis/*.csv memory/copilot-agent-analysis/*.md" with: script: | @@ -1324,9 +1328,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index e9731b17bd8..5f1683ae8dd 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -1110,6 +1110,7 @@ jobs: BRANCH_NAME: memory/copilot-cli-research MAX_FILE_SIZE: 204800 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/copilot-cli-research/*.json memory/copilot-cli-research/*.md" with: script: | diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 8a34fada034..27a45e553e6 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -679,6 +679,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -697,6 +698,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -890,9 +892,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1210,6 +1213,7 @@ jobs: BRANCH_NAME: memory/nlp-analysis MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/nlp-analysis/*.json memory/nlp-analysis/*.jsonl memory/nlp-analysis/*.csv memory/nlp-analysis/*.md" with: script: | @@ -1306,9 +1310,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 8bd59d8d674..0f116e29404 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -618,6 +618,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -636,6 +637,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -826,9 +828,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1136,6 +1139,7 @@ jobs: BRANCH_NAME: memory/prompt-analysis MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/prompt-analysis/*.json memory/prompt-analysis/*.jsonl memory/prompt-analysis/*.csv memory/prompt-analysis/*.md" with: script: | @@ -1232,9 +1236,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index cd82dfa08d4..e2ead078b3b 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -686,6 +686,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -705,6 +706,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -949,9 +951,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1284,6 +1287,7 @@ jobs: BRANCH_NAME: memory/session-insights MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/session-insights/*.json memory/session-insights/*.jsonl memory/session-insights/*.csv memory/session-insights/*.md" with: script: | @@ -1380,9 +1384,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 5843a79dc5e..ee592f5f226 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -1296,6 +1296,7 @@ jobs: BRANCH_NAME: memory/cli-performance MAX_FILE_SIZE: 512000 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/cli-performance/*.json memory/cli-performance/*.jsonl memory/cli-performance/*.txt" with: script: | diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index bbc74a20a4d..195869b951c 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -665,6 +665,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -683,6 +684,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -923,9 +925,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1263,6 +1266,7 @@ jobs: BRANCH_NAME: daily/default MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "*.json *.jsonl *.csv *.md" with: script: | @@ -1360,9 +1364,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index b1de6a1c9d9..c0b589c4075 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -571,6 +571,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -589,6 +590,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -790,9 +792,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1140,9 +1143,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 11758625e6b..43113d7f50e 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -691,6 +691,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -709,6 +710,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -901,9 +903,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1226,6 +1229,7 @@ jobs: BRANCH_NAME: memory/token-metrics MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/token-metrics/*.json memory/token-metrics/*.jsonl memory/token-metrics/*.csv memory/token-metrics/*.md" with: script: | @@ -1323,9 +1327,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 85e3f7f9117..82f796dace7 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -573,6 +573,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -591,6 +592,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -843,9 +845,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1249,9 +1252,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index 7d81ed966ae..f078fb38729 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -689,6 +689,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -707,6 +708,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -889,9 +891,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1249,9 +1252,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 4c6bb250e99..1d411c92023 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -717,6 +717,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -735,6 +736,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -899,9 +901,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1281,9 +1284,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index 026c6244e27..3c35ad53a26 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -623,6 +623,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -641,6 +642,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -843,9 +845,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1204,9 +1207,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 51007e4da15..59cf6c7cff7 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -752,6 +752,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -770,6 +771,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -963,9 +965,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1288,6 +1291,7 @@ jobs: BRANCH_NAME: memory/daily-news MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/daily-news/*.json memory/daily-news/*.jsonl memory/daily-news/*.csv memory/daily-news/*.md" with: script: | @@ -1385,9 +1389,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index b8870b440fe..77a039404f1 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -1182,6 +1182,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -1200,6 +1201,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1373,9 +1375,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1726,9 +1729,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index 637926f1ac3..d3d462433e6 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -623,6 +623,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -641,6 +642,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -824,9 +826,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1184,9 +1187,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 1ac37113d02..74b507a5305 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -669,6 +669,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -687,6 +688,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -930,9 +932,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1329,9 +1332,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index 5d94f36745c..6b61dd73a38 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -1187,6 +1187,7 @@ jobs: BRANCH_NAME: memory/testify-expert MAX_FILE_SIZE: 51200 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/testify-expert/*.json memory/testify-expert/*.txt" with: script: | diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index b7ff90ff483..de2b5dc6eba 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -821,6 +821,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -839,6 +840,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1010,9 +1012,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1327,6 +1330,7 @@ jobs: BRANCH_NAME: memory/deep-report MAX_FILE_SIZE: 1048576 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/deep-report/*.md" with: script: | @@ -1424,9 +1428,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index db9ee30c687..fae5b5d4a66 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -1195,6 +1195,7 @@ jobs: BRANCH_NAME: memory/delight MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/delight/*.json memory/delight/*.md" with: script: | diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index ffd964a2c65..971db004074 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -646,6 +646,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -664,6 +665,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -918,9 +920,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1320,9 +1323,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index c5f49931152..c8695fdd011 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -1161,6 +1161,7 @@ jobs: BRANCH_NAME: memory/discussion-task-miner MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/discussion-task-miner/*.json memory/discussion-task-miner/*.md" with: script: | diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index e8fe3757344..3145ccfe29a 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -606,6 +606,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -624,6 +625,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -813,9 +815,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1188,6 +1191,7 @@ jobs: BRANCH_NAME: memory/firewall-escape MAX_FILE_SIZE: 524288 MAX_FILE_COUNT: 50 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' with: script: | const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); @@ -1284,9 +1288,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index 436d4a814c5..4b746537701 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -625,6 +625,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -643,6 +644,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -876,9 +878,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1245,9 +1248,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index b1cee01ad12..e286017f359 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -633,6 +633,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -651,6 +652,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -880,9 +882,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1282,9 +1285,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index b64064070dd..adaf4763eef 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -596,6 +596,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -614,6 +615,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -821,9 +823,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1205,9 +1208,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 757b3c7109b..20c5a8cccd6 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -583,6 +583,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -601,6 +602,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -850,9 +852,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1215,9 +1218,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 5a8e0833904..bd5ca66dfc4 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -727,6 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -745,6 +746,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1009,9 +1011,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1409,9 +1412,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index d81884e60f0..bde603dbcea 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -586,6 +586,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -604,6 +605,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -784,9 +786,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1125,9 +1128,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index f033ecf31cf..3e1dfcbb552 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -645,6 +645,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -665,6 +666,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -850,9 +852,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1256,9 +1259,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 4bc1594a7dd..a8486791bb4 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -573,6 +573,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -591,6 +592,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -842,9 +844,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1241,9 +1244,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index ed288b46782..0f60b26885c 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -587,6 +587,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -605,6 +606,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -786,9 +788,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1177,9 +1180,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 9ed8ac2a63a..3c8f9d9e093 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -567,6 +567,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -585,6 +586,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -814,9 +816,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1173,9 +1176,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 94b561e8029..6eec001b145 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -931,6 +931,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -949,6 +950,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1144,9 +1146,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1764,9 +1767,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index a59b7040c87..a874e9b1e79 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -674,6 +674,7 @@ jobs: BRANCH_NAME: memory/meta-orchestrators MAX_FILE_SIZE: 10240 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "metrics/**" with: script: | diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index 59d12f83d7d..c9ecd0b65eb 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -616,6 +616,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -634,6 +635,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -816,9 +818,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1170,9 +1173,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 96006b96b49..0676d6ee5ea 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -663,6 +663,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} @@ -686,6 +687,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_EXPR_799BE623: process.env.GH_AW_EXPR_799BE623, @@ -877,9 +879,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1287,9 +1290,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 7b7f08c7e10..00e75853922 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1149,6 +1149,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -1170,6 +1171,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1383,9 +1385,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1862,9 +1865,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index 3afb1f0ca0d..ba28c2dec33 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -699,6 +699,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -717,6 +718,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -900,9 +902,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1260,9 +1263,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index c4db3f4a005..0bac30dad9f 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -727,6 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -747,6 +748,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -933,9 +935,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1347,9 +1350,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index dfb15dbdfce..2248923ee77 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -1161,6 +1161,7 @@ jobs: BRANCH_NAME: memory/pr-triage MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "**" with: script: | diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index f6b018aac35..a6cf6ae40cc 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -698,6 +698,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -716,6 +717,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -945,9 +947,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1304,9 +1307,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index 5fd871d3b2d..0c44103a15c 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -688,6 +688,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -706,6 +707,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -890,9 +892,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1244,9 +1247,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index ebc72658f94..9c3eaa5bed6 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -746,6 +746,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} @@ -767,6 +768,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_EXPR_799BE623: process.env.GH_AW_EXPR_799BE623, @@ -957,9 +959,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1413,9 +1416,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index e0359f53ee3..e1a5ada96cf 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -789,9 +789,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact (repo-audits) uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1136,9 +1137,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (repo-audits) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 49380cae722..848ea170365 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -790,9 +790,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact (focus-areas) uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1134,9 +1135,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (focus-areas) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 2bd6ab43726..ac89f23eb8d 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -645,6 +645,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -663,6 +664,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -906,9 +908,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1265,9 +1268,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 110cc07e0ff..073b9a9ce6c 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -569,6 +569,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -587,6 +588,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -815,9 +817,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1174,9 +1177,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 51f544dac58..2f268394313 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -676,6 +676,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} @@ -698,6 +699,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_EXPR_799BE623: process.env.GH_AW_EXPR_799BE623, @@ -959,9 +961,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1391,9 +1394,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 57b25eb6efb..225dc1b2b88 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -1115,6 +1115,7 @@ jobs: BRANCH_NAME: memory/campaigns MAX_FILE_SIZE: 10240 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "memory/campaigns/security-compliance-*/**" with: script: | diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index f2af0163ce8..97fa850f669 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -727,6 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -747,6 +748,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -932,9 +934,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1338,9 +1341,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index 28189466f8b..5eb9ce6b29d 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -584,6 +584,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -602,6 +603,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -849,9 +851,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1214,9 +1217,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 2211a71abde..d4b8bd3089e 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -597,6 +597,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -617,6 +618,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -842,9 +844,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1276,9 +1279,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index ff985d17edf..973703577c1 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1386,6 +1386,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -1405,6 +1406,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1672,9 +1674,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -2082,9 +2085,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 00df89a1982..f18c29434cb 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -950,6 +950,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -968,6 +969,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1140,9 +1142,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1526,9 +1529,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 108dd00b137..f00f9fe4082 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -1339,6 +1339,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -1358,6 +1359,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1552,9 +1554,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1984,9 +1987,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 1e07b32bf46..4d2635d5289 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -679,6 +679,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_ENV_ORGANIZATION: ${{ env.ORGANIZATION }} @@ -698,6 +699,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_ENV_ORGANIZATION: process.env.GH_AW_ENV_ORGANIZATION, @@ -884,9 +886,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1238,9 +1241,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index 99d331fdb90..e2e1fb6a682 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -641,6 +641,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -659,6 +660,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -889,9 +891,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1248,9 +1251,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 3e7f04d7c1f..11311f27f89 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -584,6 +584,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -602,6 +603,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -846,9 +848,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1202,9 +1205,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index d1227babc2c..1a7b3755f4c 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -593,6 +593,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -612,6 +613,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -796,9 +798,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1183,9 +1186,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index cb8b57db032..5ba970f4fbb 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -672,6 +672,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -691,6 +692,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -875,9 +877,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1273,9 +1276,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 72f2d99adf3..f463ff0618d 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -570,6 +570,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -588,6 +589,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -816,9 +818,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1215,9 +1218,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 262d6fb1511..77becc6e1a7 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -705,6 +705,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -723,6 +724,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -1016,9 +1018,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1489,9 +1492,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 4aaf4031fbd..fdf3b3a1954 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -595,6 +595,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} @@ -613,6 +614,7 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION, GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, @@ -796,9 +798,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Upload cache-memory data as artifact uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -1155,9 +1158,10 @@ jobs: const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); setupGlobals(core, github, context, exec, io); const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs'); - const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache'); + const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; + const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index 87724640744..603d686fcea 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -1260,6 +1260,7 @@ jobs: BRANCH_NAME: memory/meta-orchestrators MAX_FILE_SIZE: 102400 MAX_FILE_COUNT: 100 + ALLOWED_EXTENSIONS: '[".json",".jsonl",".txt",".md",".csv"]' FILE_GLOB_FILTER: "**" with: script: | diff --git a/actions/setup/js/push_repo_memory.cjs b/actions/setup/js/push_repo_memory.cjs index 34ada089056..a1582686cdc 100644 --- a/actions/setup/js/push_repo_memory.cjs +++ b/actions/setup/js/push_repo_memory.cjs @@ -17,6 +17,7 @@ const { execGitSync } = require("./git_helpers.cjs"); * BRANCH_NAME: Branch name to push to * MAX_FILE_SIZE: Maximum file size in bytes * MAX_FILE_COUNT: Maximum number of files per commit + * ALLOWED_EXTENSIONS: JSON array of allowed file extensions (e.g., '[".json",".txt"]') * FILE_GLOB_FILTER: Optional space-separated list of file patterns (e.g., "*.md metrics/** data/**") * Supports * (matches any chars except /) and ** (matches any chars including /) * @@ -43,6 +44,7 @@ async function main() { const maxFileSize = parseInt(process.env.MAX_FILE_SIZE || "10240", 10); const maxFileCount = parseInt(process.env.MAX_FILE_COUNT || "100", 10); const fileGlobFilter = process.env.FILE_GLOB_FILTER || ""; + const allowedExtensions = process.env.ALLOWED_EXTENSIONS ? JSON.parse(process.env.ALLOWED_EXTENSIONS) : [".json", ".jsonl", ".txt", ".md", ".csv"]; const ghToken = process.env.GH_TOKEN; const githubRunId = process.env.GITHUB_RUN_ID || "unknown"; @@ -51,6 +53,7 @@ async function main() { core.info(` MEMORY_ID: ${memoryId}`); core.info(` MAX_FILE_SIZE: ${maxFileSize}`); core.info(` MAX_FILE_COUNT: ${maxFileCount}`); + core.info(` ALLOWED_EXTENSIONS: ${JSON.stringify(allowedExtensions)}`); core.info(` FILE_GLOB_FILTER: ${fileGlobFilter ? `"${fileGlobFilter}"` : "(empty - all files accepted)"}`); core.info(` FILE_GLOB_FILTER length: ${fileGlobFilter.length}`); @@ -243,9 +246,9 @@ async function main() { // Validate file types before copying const { validateMemoryFiles } = require("./validate_memory_files.cjs"); - const validation = validateMemoryFiles(sourceMemoryPath, "repo"); + const validation = validateMemoryFiles(sourceMemoryPath, "repo", allowedExtensions); if (!validation.valid) { - core.setFailed(`File type validation failed: Found ${validation.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${validation.invalidFiles.length} file(s) with invalid extensions. Only ${allowedExtensions.join(", ")} are allowed.`); return; } diff --git a/actions/setup/js/validate_memory_files.cjs b/actions/setup/js/validate_memory_files.cjs index 46e182cbf64..3a36f5fa5b1 100644 --- a/actions/setup/js/validate_memory_files.cjs +++ b/actions/setup/js/validate_memory_files.cjs @@ -6,14 +6,16 @@ const path = require("path"); /** * Validate that all files in a memory directory have allowed file extensions - * Allowed extensions: .json, .jsonl, .txt, .md, .csv + * Default allowed extensions: .json, .jsonl, .txt, .md, .csv * * @param {string} memoryDir - Path to the memory directory to validate * @param {string} memoryType - Type of memory ("cache" or "repo") for error messages + * @param {string[]} [allowedExtensions] - Optional custom list of allowed extensions (defaults to [".json", ".jsonl", ".txt", ".md", ".csv"]) * @returns {{valid: boolean, invalidFiles: string[]}} Validation result with list of invalid files */ -function validateMemoryFiles(memoryDir, memoryType = "cache") { - const allowedExtensions = [".json", ".jsonl", ".txt", ".md", ".csv"]; +function validateMemoryFiles(memoryDir, memoryType = "cache", allowedExtensions) { + // Use default extensions if not provided or if empty array + const extensions = allowedExtensions && allowedExtensions.length > 0 ? allowedExtensions : [".json", ".jsonl", ".txt", ".md", ".csv"]; const invalidFiles = []; // Check if directory exists @@ -40,7 +42,7 @@ function validateMemoryFiles(memoryDir, memoryType = "cache") { } else if (entry.isFile()) { // Check file extension const ext = path.extname(entry.name).toLowerCase(); - if (!allowedExtensions.includes(ext)) { + if (!extensions.includes(ext)) { invalidFiles.push(relativeFilePath); } } @@ -60,7 +62,7 @@ function validateMemoryFiles(memoryDir, memoryType = "cache") { const ext = path.extname(file).toLowerCase(); core.error(` - ${file} (extension: ${ext || "(no extension)"})`); }); - core.error(`Allowed extensions: ${allowedExtensions.join(", ")}`); + core.error(`Allowed extensions: ${extensions.join(", ")}`); return { valid: false, invalidFiles }; } diff --git a/actions/setup/js/validate_memory_files.test.cjs b/actions/setup/js/validate_memory_files.test.cjs index 7a857ec0a9c..5767a116aae 100644 --- a/actions/setup/js/validate_memory_files.test.cjs +++ b/actions/setup/js/validate_memory_files.test.cjs @@ -174,4 +174,29 @@ describe("validateMemoryFiles", () => { expect(result.invalidFiles).toContain(path.join("invalid-files", "app.log")); expect(result.invalidFiles).toContain(path.join("invalid-files", "config.ini")); }); + + it("accepts custom allowed extensions", () => { + fs.writeFileSync(path.join(tempDir, "config.yaml"), "key: value"); + fs.writeFileSync(path.join(tempDir, "data.xml"), ""); + const customExts = [".yaml", ".xml"]; + const result = validateMemoryFiles(tempDir, "cache", customExts); + expect(result.valid).toBe(true); + expect(result.invalidFiles).toEqual([]); + }); + + it("rejects files not in custom allowed extensions", () => { + fs.writeFileSync(path.join(tempDir, "data.json"), "{}"); + const customExts = [".yaml", ".xml"]; + const result = validateMemoryFiles(tempDir, "cache", customExts); + expect(result.valid).toBe(false); + expect(result.invalidFiles).toEqual(["data.json"]); + }); + + it("uses default extensions when custom array is empty", () => { + fs.writeFileSync(path.join(tempDir, "data.json"), "{}"); + fs.writeFileSync(path.join(tempDir, "notes.txt"), "text"); + const result = validateMemoryFiles(tempDir, "cache", []); + expect(result.valid).toBe(true); // Empty array falls back to defaults + expect(result.invalidFiles).toEqual([]); + }); }); diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index f310d9176ef..f8cc9d30034 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -3127,6 +3127,13 @@ "enum": ["workflow", "repo"], "default": "workflow", "description": "Cache restore key scope: 'workflow' (default, only restores from same workflow) or 'repo' (restores from any workflow in the repository). Use 'repo' with caution as it allows cross-workflow cache sharing." + }, + "allowed-extensions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of allowed file extensions (e.g., [\".json\", \".txt\"]). Default: [\".json\", \".jsonl\", \".txt\", \".md\", \".csv\"]" } }, "additionalProperties": false, @@ -3173,6 +3180,13 @@ "enum": ["workflow", "repo"], "default": "workflow", "description": "Cache restore key scope: 'workflow' (default, only restores from same workflow) or 'repo' (restores from any workflow in the repository). Use 'repo' with caution as it allows cross-workflow cache sharing." + }, + "allowed-extensions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of allowed file extensions (e.g., [\".json\", \".txt\"]). Default: [\".json\", \".jsonl\", \".txt\", \".md\", \".csv\"]" } }, "required": ["id", "key"], @@ -3459,6 +3473,13 @@ "create-orphan": { "type": "boolean", "description": "Create orphaned branch if it doesn't exist (default: true)" + }, + "allowed-extensions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of allowed file extensions (e.g., [\".json\", \".txt\"]). Default: [\".json\", \".jsonl\", \".txt\", \".md\", \".csv\"]" } }, "additionalProperties": false, @@ -3533,6 +3554,13 @@ "create-orphan": { "type": "boolean", "description": "Create orphaned branch if it doesn't exist (default: true)" + }, + "allowed-extensions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of allowed file extensions (e.g., [\".json\", \".txt\"]). Default: [\".json\", \".jsonl\", \".txt\", \".md\", \".csv\"]" } }, "additionalProperties": false diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index 3ae3f6cf211..bc73d68d9fc 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -1,6 +1,7 @@ package workflow import ( + "encoding/json" "fmt" "os" "strings" @@ -11,6 +12,11 @@ import ( var cacheLog = logger.New("workflow:cache") +// getDefaultAllowedExtensions returns the default list of allowed file extensions for memory storage +func getDefaultAllowedExtensions() []string { + return []string{".json", ".jsonl", ".txt", ".md", ".csv"} +} + // CacheMemoryConfig holds configuration for cache-memory functionality type CacheMemoryConfig struct { Caches []CacheMemoryEntry `yaml:"caches,omitempty"` // cache configurations @@ -18,12 +24,13 @@ type CacheMemoryConfig struct { // CacheMemoryEntry represents a single cache-memory configuration type CacheMemoryEntry struct { - ID string `yaml:"id"` // cache identifier (required for array notation) - Key string `yaml:"key,omitempty"` // custom cache key - Description string `yaml:"description,omitempty"` // optional description for this cache - RetentionDays *int `yaml:"retention-days,omitempty"` // retention days for upload-artifact action - RestoreOnly bool `yaml:"restore-only,omitempty"` // if true, only restore cache without saving - Scope string `yaml:"scope,omitempty"` // scope for restore keys: "workflow" (default) or "repo" + ID string `yaml:"id"` // cache identifier (required for array notation) + Key string `yaml:"key,omitempty"` // custom cache key + Description string `yaml:"description,omitempty"` // optional description for this cache + RetentionDays *int `yaml:"retention-days,omitempty"` // retention days for upload-artifact action + RestoreOnly bool `yaml:"restore-only,omitempty"` // if true, only restore cache without saving + Scope string `yaml:"scope,omitempty"` // scope for restore keys: "workflow" (default) or "repo" + AllowedExtensions []string `yaml:"allowed-extensions,omitempty"` // allowed file extensions (default: [".json", ".jsonl", ".txt", ".md", ".csv"]) } // generateDefaultCacheKey generates a default cache key for a given cache ID @@ -52,8 +59,9 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem if cacheMemoryValue == nil { config.Caches = []CacheMemoryEntry{ { - ID: "default", - Key: generateDefaultCacheKey("default"), + ID: "default", + Key: generateDefaultCacheKey("default"), + AllowedExtensions: getDefaultAllowedExtensions(), }, } return config, nil @@ -65,8 +73,9 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem // Create a single default cache entry config.Caches = []CacheMemoryEntry{ { - ID: "default", - Key: generateDefaultCacheKey("default"), + ID: "default", + Key: generateDefaultCacheKey("default"), + AllowedExtensions: getDefaultAllowedExtensions(), }, } } @@ -153,6 +162,22 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem entry.Scope = "workflow" } + // Parse allowed-extensions field + if allowedExts, exists := cacheMap["allowed-extensions"]; exists { + if extArray, ok := allowedExts.([]any); ok { + entry.AllowedExtensions = make([]string, 0, len(extArray)) + for _, ext := range extArray { + if extStr, ok := ext.(string); ok { + entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) + } + } + } + } + // Default to standard allowed extensions if not specified + if len(entry.AllowedExtensions) == 0 { + entry.AllowedExtensions = getDefaultAllowedExtensions() + } + config.Caches = append(config.Caches, entry) } } @@ -229,6 +254,22 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem entry.Scope = "workflow" } + // Parse allowed-extensions field + if allowedExts, exists := configMap["allowed-extensions"]; exists { + if extArray, ok := allowedExts.([]any); ok { + entry.AllowedExtensions = make([]string, 0, len(extArray)) + for _, ext := range extArray { + if extStr, ok := ext.(string); ok { + entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) + } + } + } + } + // Default to standard allowed extensions if not specified + if len(entry.AllowedExtensions) == 0 { + entry.AllowedExtensions = getDefaultAllowedExtensions() + } + config.Caches = []CacheMemoryEntry{entry} return config, nil } @@ -500,6 +541,9 @@ func generateCacheMemoryValidation(builder *strings.Builder, data *WorkflowData) cacheDir = fmt.Sprintf("/tmp/gh-aw/cache-memory-%s", cache.ID) } + // Prepare allowed extensions array for JavaScript + allowedExtsJSON, _ := json.Marshal(cache.AllowedExtensions) + // Add validation step if useBackwardCompatiblePaths { builder.WriteString(" - name: Validate cache-memory file types\n") @@ -513,9 +557,10 @@ func generateCacheMemoryValidation(builder *strings.Builder, data *WorkflowData) builder.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") builder.WriteString(" setupGlobals(core, github, context, exec, io);\n") builder.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") - fmt.Fprintf(builder, " const result = validateMemoryFiles('%s', 'cache');\n", cacheDir) + fmt.Fprintf(builder, " const allowedExtensions = %s;\n", allowedExtsJSON) + fmt.Fprintf(builder, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) builder.WriteString(" if (!result.valid) {\n") - builder.WriteString(" core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`);\n") + fmt.Fprintf(builder, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) builder.WriteString(" }\n") } } @@ -596,15 +641,19 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { descriptionText = " " + cache.Description } - cacheLog.Printf("Building cache memory prompt section with env vars: cache_dir=%s, description=%s", cacheDir, descriptionText) + // Build allowed extensions text + allowedExtsText := strings.Join(cache.AllowedExtensions, "`, `") + + cacheLog.Printf("Building cache memory prompt section with env vars: cache_dir=%s, description=%s, allowed_extensions=%v", cacheDir, descriptionText, cache.AllowedExtensions) // Return prompt section with template file and environment variables for substitution return &PromptSection{ Content: cacheMemoryPromptFile, IsFile: true, EnvVars: map[string]string{ - "GH_AW_CACHE_DIR": cacheDir, - "GH_AW_CACHE_DESCRIPTION": descriptionText, + "GH_AW_CACHE_DIR": cacheDir, + "GH_AW_CACHE_DESCRIPTION": descriptionText, + "GH_AW_ALLOWED_EXTENSIONS": allowedExtsText, }, } } @@ -639,7 +688,10 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { content.WriteString("- **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache\n") content.WriteString("- **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved\n") content.WriteString("- **File Share**: Use these as simple file shares - organize files as you see fit\n") - content.WriteString("- **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation.\n") + + // Build allowed extensions text (use the first cache's extensions as they should all be the same for the group) + allowedExtsText := strings.Join(config.Caches[0].AllowedExtensions, "`, `") + fmt.Fprintf(&content, "- **Allowed File Types**: Only the following file extensions are allowed: `%s`. Files with other extensions will be rejected during validation.\n", allowedExtsText) content.WriteString("\n") content.WriteString("Examples of what you can store:\n") @@ -712,6 +764,9 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection fmt.Fprintf(&downloadStep, " path: %s\n", cacheDir) steps = append(steps, downloadStep.String()) + // Prepare allowed extensions array for JavaScript + allowedExtsJSON, _ := json.Marshal(cache.AllowedExtensions) + // Validate cache-memory file types step var validateStep strings.Builder fmt.Fprintf(&validateStep, " - name: Validate cache-memory file types (%s)\n", cache.ID) @@ -721,9 +776,10 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection validateStep.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") validateStep.WriteString(" setupGlobals(core, github, context, exec, io);\n") validateStep.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") - fmt.Fprintf(&validateStep, " const result = validateMemoryFiles('%s', 'cache');\n", cacheDir) + fmt.Fprintf(&validateStep, " const allowedExtensions = %s;\n", allowedExtsJSON) + fmt.Fprintf(&validateStep, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) validateStep.WriteString(" if (!result.valid) {\n") - validateStep.WriteString(" core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`);\n") + fmt.Fprintf(&validateStep, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) validateStep.WriteString(" }\n") steps = append(steps, validateStep.String()) diff --git a/pkg/workflow/prompts/cache_memory_prompt.md b/pkg/workflow/prompts/cache_memory_prompt.md index 31cb24fa1fd..a8cb0595159 100644 --- a/pkg/workflow/prompts/cache_memory_prompt.md +++ b/pkg/workflow/prompts/cache_memory_prompt.md @@ -8,7 +8,7 @@ You have access to a persistent cache folder at `__CACHE_DIR__` where you can re - **Persistence**: Files in this folder persist across workflow runs via GitHub Actions cache - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - **File Share**: Use this as a simple file share - organize files as you see fit -- **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. +- **Allowed File Types**: Only the following file extensions are allowed: `__ALLOWED_EXTENSIONS__`. Files with other extensions will be rejected during validation. Examples of what you can store: - `__CACHE_DIR__notes.txt` - general notes and observations diff --git a/pkg/workflow/repo_memory.go b/pkg/workflow/repo_memory.go index 77ed9057cac..c06806def78 100644 --- a/pkg/workflow/repo_memory.go +++ b/pkg/workflow/repo_memory.go @@ -18,6 +18,7 @@ package workflow import ( + "encoding/json" "fmt" "regexp" "strings" @@ -41,14 +42,15 @@ type RepoMemoryConfig struct { // RepoMemoryEntry represents a single repo-memory configuration type RepoMemoryEntry struct { - ID string `yaml:"id"` // memory identifier (required for array notation) - TargetRepo string `yaml:"target-repo,omitempty"` // target repository (default: current repo) - BranchName string `yaml:"branch-name,omitempty"` // branch name (default: memory/{memory-id}) - FileGlob []string `yaml:"file-glob,omitempty"` // file glob patterns for allowed files - MaxFileSize int `yaml:"max-file-size,omitempty"` // maximum size per file in bytes (default: 10KB) - MaxFileCount int `yaml:"max-file-count,omitempty"` // maximum file count per commit (default: 100) - Description string `yaml:"description,omitempty"` // optional description for this memory - CreateOrphan bool `yaml:"create-orphan,omitempty"` // create orphaned branch if missing (default: true) + ID string `yaml:"id"` // memory identifier (required for array notation) + TargetRepo string `yaml:"target-repo,omitempty"` // target repository (default: current repo) + BranchName string `yaml:"branch-name,omitempty"` // branch name (default: memory/{memory-id}) + FileGlob []string `yaml:"file-glob,omitempty"` // file glob patterns for allowed files + MaxFileSize int `yaml:"max-file-size,omitempty"` // maximum size per file in bytes (default: 10KB) + MaxFileCount int `yaml:"max-file-count,omitempty"` // maximum file count per commit (default: 100) + Description string `yaml:"description,omitempty"` // optional description for this memory + CreateOrphan bool `yaml:"create-orphan,omitempty"` // create orphaned branch if missing (default: true) + AllowedExtensions []string `yaml:"allowed-extensions,omitempty"` // allowed file extensions (default: [".json", ".jsonl", ".txt", ".md", ".csv"]) } // RepoMemoryToolConfig represents the configuration for repo-memory in tools @@ -112,11 +114,12 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor repoMemoryLog.Print("Using default repo-memory configuration (nil value)") config.Memories = []RepoMemoryEntry{ { - ID: "default", - BranchName: generateDefaultBranchName("default", config.BranchPrefix), - MaxFileSize: 10240, // 10KB - MaxFileCount: 100, - CreateOrphan: true, + ID: "default", + BranchName: generateDefaultBranchName("default", config.BranchPrefix), + MaxFileSize: 10240, // 10KB + MaxFileCount: 100, + CreateOrphan: true, + AllowedExtensions: getDefaultAllowedExtensions(), }, } return config, nil @@ -129,11 +132,12 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor // Create a single default memory entry config.Memories = []RepoMemoryEntry{ { - ID: "default", - BranchName: generateDefaultBranchName("default", config.BranchPrefix), - MaxFileSize: 10240, // 10KB - MaxFileCount: 100, - CreateOrphan: true, + ID: "default", + BranchName: generateDefaultBranchName("default", config.BranchPrefix), + MaxFileSize: 10240, // 10KB + MaxFileCount: 100, + CreateOrphan: true, + AllowedExtensions: getDefaultAllowedExtensions(), }, } } else { @@ -260,6 +264,22 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor } } + // Parse allowed-extensions field + if allowedExts, exists := memoryMap["allowed-extensions"]; exists { + if extArray, ok := allowedExts.([]any); ok { + entry.AllowedExtensions = make([]string, 0, len(extArray)) + for _, ext := range extArray { + if extStr, ok := ext.(string); ok { + entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) + } + } + } + } + // Default to standard allowed extensions if not specified + if len(entry.AllowedExtensions) == 0 { + entry.AllowedExtensions = getDefaultAllowedExtensions() + } + config.Memories = append(config.Memories, entry) } } @@ -369,6 +389,22 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor } } + // Parse allowed-extensions field + if allowedExts, exists := configMap["allowed-extensions"]; exists { + if extArray, ok := allowedExts.([]any); ok { + entry.AllowedExtensions = make([]string, 0, len(extArray)) + for _, ext := range extArray { + if extStr, ok := ext.(string); ok { + entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) + } + } + } + } + // Default to standard allowed extensions if not specified + if len(entry.AllowedExtensions) == 0 { + entry.AllowedExtensions = getDefaultAllowedExtensions() + } + config.Memories = []RepoMemoryEntry{entry} return config, nil } @@ -612,6 +648,9 @@ func (c *Compiler) buildPushRepoMemoryJob(data *WorkflowData, threatDetectionEna fmt.Fprintf(&step, " BRANCH_NAME: %s\n", memory.BranchName) fmt.Fprintf(&step, " MAX_FILE_SIZE: %d\n", memory.MaxFileSize) fmt.Fprintf(&step, " MAX_FILE_COUNT: %d\n", memory.MaxFileCount) + // Pass allowed extensions as JSON array + allowedExtsJSON, _ := json.Marshal(memory.AllowedExtensions) + fmt.Fprintf(&step, " ALLOWED_EXTENSIONS: '%s'\n", allowedExtsJSON) if fileGlobFilter != "" { // Quote the value to prevent YAML alias interpretation of patterns like *.md fmt.Fprintf(&step, " FILE_GLOB_FILTER: \"%s\"\n", fileGlobFilter) diff --git a/pkg/workflow/repo_memory_prompt.go b/pkg/workflow/repo_memory_prompt.go index d17e1d12e6f..221918646bd 100644 --- a/pkg/workflow/repo_memory_prompt.go +++ b/pkg/workflow/repo_memory_prompt.go @@ -96,7 +96,9 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes\n") yaml.WriteString(" - **Merge Strategy**: In case of conflicts, your changes (current version) win\n") yaml.WriteString(" - **Persistence**: Files persist across workflow runs via git branch storage\n") - yaml.WriteString(" - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation.\n") + // Build allowed extensions text (use first memory's extensions as default) + allowedExtsText := strings.Join(config.Memories[0].AllowedExtensions, "`, `") + fmt.Fprintf(yaml, " - **Allowed File Types**: Only the following file extensions are allowed: `%s`. Files with other extensions will be rejected during validation.\n", allowedExtsText) yaml.WriteString(" \n") yaml.WriteString(" Examples of what you can store:\n") memoryDir := "/tmp/gh-aw/repo-memory" From 50cf3bf53dfa7ba69666f5ddfd95822f8a82d7aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:44:14 +0000 Subject: [PATCH 05/16] Complete configurable allowed-extensions implementation - all tests passing Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/src/content/docs/reference/frontmatter-full.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/src/content/docs/reference/frontmatter-full.md b/docs/src/content/docs/reference/frontmatter-full.md index 8d049e52d5d..c675ded7dda 100644 --- a/docs/src/content/docs/reference/frontmatter-full.md +++ b/docs/src/content/docs/reference/frontmatter-full.md @@ -1517,6 +1517,12 @@ tools: # (optional) scope: "workflow" + # List of allowed file extensions (e.g., [".json", ".txt"]). Default: [".json", + # ".jsonl", ".txt", ".md", ".csv"] + # (optional) + allowed-extensions: [] + # Array of strings + # Option 4: Array of cache-memory configurations for multiple caches cache-memory: [] # Array items: object @@ -1714,6 +1720,12 @@ tools: # (optional) create-orphan: true + # List of allowed file extensions (e.g., [".json", ".txt"]). Default: [".json", + # ".jsonl", ".txt", ".md", ".csv"] + # (optional) + allowed-extensions: [] + # Array of strings + # Option 4: Array of repo-memory configurations for multiple memory locations repo-memory: [] # Array items: object From 09feb48315ac1fe5919d8a2d8fd8585c63cb6dd9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:11:51 +0000 Subject: [PATCH 06/16] Refactor: Use helpers for github-script steps and template for multi-cache prompts Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../workflows/chroma-issue-indexer.lock.yml | 39 ++---- .../workflows/repo-audit-analyzer.lock.yml | 39 ++---- .../repository-quality-improver.lock.yml | 39 ++---- pkg/workflow/cache.go | 120 ++++++++---------- pkg/workflow/cache_memory_prompt_test.go | 67 ++++++---- pkg/workflow/compiler_yaml_helpers.go | 24 ++++ .../prompts/cache_memory_prompt_multi.md | 20 +++ pkg/workflow/prompts_test.go | 8 +- 8 files changed, 187 insertions(+), 169 deletions(-) create mode 100644 pkg/workflow/prompts/cache_memory_prompt_multi.md diff --git a/.github/workflows/chroma-issue-indexer.lock.yml b/.github/workflows/chroma-issue-indexer.lock.yml index 6a9783660c1..44a8716df6b 100644 --- a/.github/workflows/chroma-issue-indexer.lock.yml +++ b/.github/workflows/chroma-issue-indexer.lock.yml @@ -293,32 +293,8 @@ jobs: GH_AW_PROMPT_EOF cat "/opt/gh-aw/prompts/temp_folder_prompt.md" >> "$GH_AW_PROMPT" cat "/opt/gh-aw/prompts/markdown.md" >> "$GH_AW_PROMPT" + cat "/opt/gh-aw/prompts/cache_memory_prompt_multi.md" >> "$GH_AW_PROMPT" cat << 'GH_AW_PROMPT_EOF' >> "$GH_AW_PROMPT" - - --- - - ## Cache Folders Available - - You have access to persistent cache folders where you can read and write files to create memories and store information: - - - **chroma**: `/tmp/gh-aw/cache-memory-chroma/` - Persistent storage for Chroma vector database - - - **Read/Write Access**: You can freely read from and write to any files in these folders - - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - - **File Share**: Use these as simple file shares - organize files as you see fit - - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. - - Examples of what you can store: - - `/tmp/gh-aw/cache-memory-chroma/notes.txt` - general notes and observations - - `/tmp/gh-aw/cache-memory-chroma/notes.md` - markdown formatted notes - - `/tmp/gh-aw/cache-memory-chroma/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-chroma/history.jsonl` - activity history in JSON Lines format - - `/tmp/gh-aw/cache-memory-chroma/data.csv` - tabular data - - `/tmp/gh-aw/cache-memory-chroma/state/` - organized state files in subdirectories (with allowed file types) - - Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. - The following GitHub context information is available for this workflow: {{#if __GH_AW_GITHUB_ACTOR__ }} @@ -364,6 +340,16 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-chroma/notes.txt` - general notes and observations +- `/tmp/gh-aw/cache-memory-chroma/notes.md` - markdown formatted notes +- `/tmp/gh-aw/cache-memory-chroma/preferences.json` - user preferences and settings +- `/tmp/gh-aw/cache-memory-chroma/history.jsonl` - activity history in JSON Lines format +- `/tmp/gh-aw/cache-memory-chroma/data.csv` - tabular data +- `/tmp/gh-aw/cache-memory-chroma/state/` - organized state files in subdirectories (with allowed file types) +' + GH_AW_CACHE_LIST: '- **chroma**: `/tmp/gh-aw/cache-memory-chroma/` - Persistent storage for Chroma vector database +' GH_AW_GITHUB_ACTOR: ${{ github.actor }} GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }} GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }} @@ -380,6 +366,9 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, + GH_AW_CACHE_EXAMPLES: process.env.GH_AW_CACHE_EXAMPLES, + GH_AW_CACHE_LIST: process.env.GH_AW_CACHE_LIST, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID, GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER, diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index e1a5ada96cf..c7a045e03f6 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -507,32 +507,8 @@ jobs: GH_AW_PROMPT_EOF cat "/opt/gh-aw/prompts/temp_folder_prompt.md" >> "$GH_AW_PROMPT" cat "/opt/gh-aw/prompts/markdown.md" >> "$GH_AW_PROMPT" + cat "/opt/gh-aw/prompts/cache_memory_prompt_multi.md" >> "$GH_AW_PROMPT" cat << 'GH_AW_PROMPT_EOF' >> "$GH_AW_PROMPT" - - --- - - ## Cache Folders Available - - You have access to persistent cache folders where you can read and write files to create memories and store information: - - - **repo-audits**: `/tmp/gh-aw/cache-memory-repo-audits/` - - - **Read/Write Access**: You can freely read from and write to any files in these folders - - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - - **File Share**: Use these as simple file shares - organize files as you see fit - - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. - - Examples of what you can store: - - `/tmp/gh-aw/cache-memory-repo-audits/notes.txt` - general notes and observations - - `/tmp/gh-aw/cache-memory-repo-audits/notes.md` - markdown formatted notes - - `/tmp/gh-aw/cache-memory-repo-audits/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-repo-audits/history.jsonl` - activity history in JSON Lines format - - `/tmp/gh-aw/cache-memory-repo-audits/data.csv` - tabular data - - `/tmp/gh-aw/cache-memory-repo-audits/state/` - organized state files in subdirectories (with allowed file types) - - Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. - GitHub API Access Instructions @@ -593,6 +569,16 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-repo-audits/notes.txt` - general notes and observations +- `/tmp/gh-aw/cache-memory-repo-audits/notes.md` - markdown formatted notes +- `/tmp/gh-aw/cache-memory-repo-audits/preferences.json` - user preferences and settings +- `/tmp/gh-aw/cache-memory-repo-audits/history.jsonl` - activity history in JSON Lines format +- `/tmp/gh-aw/cache-memory-repo-audits/data.csv` - tabular data +- `/tmp/gh-aw/cache-memory-repo-audits/state/` - organized state files in subdirectories (with allowed file types) +' + GH_AW_CACHE_LIST: '- **repo-audits**: `/tmp/gh-aw/cache-memory-repo-audits/` +' GH_AW_GITHUB_ACTOR: ${{ github.actor }} GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }} GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }} @@ -610,6 +596,9 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, + GH_AW_CACHE_EXAMPLES: process.env.GH_AW_CACHE_EXAMPLES, + GH_AW_CACHE_LIST: process.env.GH_AW_CACHE_LIST, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID, GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER, diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 848ea170365..d019db94fcf 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -510,32 +510,8 @@ jobs: GH_AW_PROMPT_EOF cat "/opt/gh-aw/prompts/temp_folder_prompt.md" >> "$GH_AW_PROMPT" cat "/opt/gh-aw/prompts/markdown.md" >> "$GH_AW_PROMPT" + cat "/opt/gh-aw/prompts/cache_memory_prompt_multi.md" >> "$GH_AW_PROMPT" cat << 'GH_AW_PROMPT_EOF' >> "$GH_AW_PROMPT" - - --- - - ## Cache Folders Available - - You have access to persistent cache folders where you can read and write files to create memories and store information: - - - **focus-areas**: `/tmp/gh-aw/cache-memory-focus-areas/` - - - **Read/Write Access**: You can freely read from and write to any files in these folders - - **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache - - **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved - - **File Share**: Use these as simple file shares - organize files as you see fit - - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. - - Examples of what you can store: - - `/tmp/gh-aw/cache-memory-focus-areas/notes.txt` - general notes and observations - - `/tmp/gh-aw/cache-memory-focus-areas/notes.md` - markdown formatted notes - - `/tmp/gh-aw/cache-memory-focus-areas/preferences.json` - user preferences and settings - - `/tmp/gh-aw/cache-memory-focus-areas/history.jsonl` - activity history in JSON Lines format - - `/tmp/gh-aw/cache-memory-focus-areas/data.csv` - tabular data - - `/tmp/gh-aw/cache-memory-focus-areas/state/` - organized state files in subdirectories (with allowed file types) - - Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. - GitHub API Access Instructions @@ -596,6 +572,16 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-focus-areas/notes.txt` - general notes and observations +- `/tmp/gh-aw/cache-memory-focus-areas/notes.md` - markdown formatted notes +- `/tmp/gh-aw/cache-memory-focus-areas/preferences.json` - user preferences and settings +- `/tmp/gh-aw/cache-memory-focus-areas/history.jsonl` - activity history in JSON Lines format +- `/tmp/gh-aw/cache-memory-focus-areas/data.csv` - tabular data +- `/tmp/gh-aw/cache-memory-focus-areas/state/` - organized state files in subdirectories (with allowed file types) +' + GH_AW_CACHE_LIST: '- **focus-areas**: `/tmp/gh-aw/cache-memory-focus-areas/` +' GH_AW_GITHUB_ACTOR: ${{ github.actor }} GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }} GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }} @@ -612,6 +598,9 @@ jobs: return await substitutePlaceholders({ file: process.env.GH_AW_PROMPT, substitutions: { + GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS, + GH_AW_CACHE_EXAMPLES: process.env.GH_AW_CACHE_EXAMPLES, + GH_AW_CACHE_LIST: process.env.GH_AW_CACHE_LIST, GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID, GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER, diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index bc73d68d9fc..141fb3b8f83 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -544,24 +544,23 @@ func generateCacheMemoryValidation(builder *strings.Builder, data *WorkflowData) // Prepare allowed extensions array for JavaScript allowedExtsJSON, _ := json.Marshal(cache.AllowedExtensions) - // Add validation step - if useBackwardCompatiblePaths { - builder.WriteString(" - name: Validate cache-memory file types\n") - } else { - fmt.Fprintf(builder, " - name: Validate cache-memory file types (%s)\n", cache.ID) - } - builder.WriteString(" if: always()\n") - builder.WriteString(" uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8\n") - builder.WriteString(" with:\n") - builder.WriteString(" script: |\n") - builder.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") - builder.WriteString(" setupGlobals(core, github, context, exec, io);\n") - builder.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") - fmt.Fprintf(builder, " const allowedExtensions = %s;\n", allowedExtsJSON) - fmt.Fprintf(builder, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) - builder.WriteString(" if (!result.valid) {\n") - fmt.Fprintf(builder, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) - builder.WriteString(" }\n") + // Build validation script + var validationScript strings.Builder + validationScript.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") + validationScript.WriteString(" setupGlobals(core, github, context, exec, io);\n") + validationScript.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") + fmt.Fprintf(&validationScript, " const allowedExtensions = %s;\n", allowedExtsJSON) + fmt.Fprintf(&validationScript, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) + validationScript.WriteString(" if (!result.valid) {\n") + fmt.Fprintf(&validationScript, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) + validationScript.WriteString(" }\n") + + // Generate validation step using helper + stepName := "Validate cache-memory file types" + if !useBackwardCompatiblePaths { + stepName = fmt.Sprintf("Validate cache-memory file types (%s)", cache.ID) + } + builder.WriteString(generateInlineGitHubScriptStep(stepName, validationScript.String(), "always()")) } } @@ -658,17 +657,11 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { } } - // Multiple caches or non-default single cache - generate content inline - var content strings.Builder - content.WriteString("\n") - content.WriteString("---\n") - content.WriteString("\n") - content.WriteString("## Cache Folders Available\n") - content.WriteString("\n") - content.WriteString("You have access to persistent cache folders where you can read and write files to create memories and store information:\n") - content.WriteString("\n") - - // List all caches + // Multiple caches or non-default single cache - use template file with substitutions + cacheLog.Print("Building cache memory prompt section for multiple caches using template") + + // Build cache list + var cacheList strings.Builder for _, cache := range config.Caches { var cacheDir string if cache.ID == "default" { @@ -677,25 +670,17 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { cacheDir = fmt.Sprintf("/tmp/gh-aw/cache-memory-%s/", cache.ID) } if cache.Description != "" { - fmt.Fprintf(&content, "- **%s**: `%s` - %s\n", cache.ID, cacheDir, cache.Description) + fmt.Fprintf(&cacheList, "- **%s**: `%s` - %s\n", cache.ID, cacheDir, cache.Description) } else { - fmt.Fprintf(&content, "- **%s**: `%s`\n", cache.ID, cacheDir) + fmt.Fprintf(&cacheList, "- **%s**: `%s`\n", cache.ID, cacheDir) } } - content.WriteString("\n") - content.WriteString("- **Read/Write Access**: You can freely read from and write to any files in these folders\n") - content.WriteString("- **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache\n") - content.WriteString("- **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved\n") - content.WriteString("- **File Share**: Use these as simple file shares - organize files as you see fit\n") - // Build allowed extensions text (use the first cache's extensions as they should all be the same for the group) allowedExtsText := strings.Join(config.Caches[0].AllowedExtensions, "`, `") - fmt.Fprintf(&content, "- **Allowed File Types**: Only the following file extensions are allowed: `%s`. Files with other extensions will be rejected during validation.\n", allowedExtsText) - content.WriteString("\n") - content.WriteString("Examples of what you can store:\n") - // Add examples for each cache + // Build cache examples + var cacheExamples strings.Builder for _, cache := range config.Caches { var cacheDir string if cache.ID == "default" { @@ -703,20 +688,22 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { } else { cacheDir = fmt.Sprintf("/tmp/gh-aw/cache-memory-%s", cache.ID) } - fmt.Fprintf(&content, "- `%s/notes.txt` - general notes and observations\n", cacheDir) - fmt.Fprintf(&content, "- `%s/notes.md` - markdown formatted notes\n", cacheDir) - fmt.Fprintf(&content, "- `%s/preferences.json` - user preferences and settings\n", cacheDir) - fmt.Fprintf(&content, "- `%s/history.jsonl` - activity history in JSON Lines format\n", cacheDir) - fmt.Fprintf(&content, "- `%s/data.csv` - tabular data\n", cacheDir) - fmt.Fprintf(&content, "- `%s/state/` - organized state files in subdirectories (with allowed file types)\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/notes.txt` - general notes and observations\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/notes.md` - markdown formatted notes\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/preferences.json` - user preferences and settings\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/history.jsonl` - activity history in JSON Lines format\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/data.csv` - tabular data\n", cacheDir) + fmt.Fprintf(&cacheExamples, "- `%s/state/` - organized state files in subdirectories (with allowed file types)\n", cacheDir) } - content.WriteString("\n") - content.WriteString("Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types.\n") - return &PromptSection{ - Content: content.String(), - IsFile: false, + Content: cacheMemoryPromptMultiFile, + IsFile: true, + EnvVars: map[string]string{ + "GH_AW_CACHE_LIST": cacheList.String(), + "GH_AW_ALLOWED_EXTENSIONS": allowedExtsText, + "GH_AW_CACHE_EXAMPLES": cacheExamples.String(), + }, } } @@ -767,21 +754,20 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection // Prepare allowed extensions array for JavaScript allowedExtsJSON, _ := json.Marshal(cache.AllowedExtensions) - // Validate cache-memory file types step - var validateStep strings.Builder - fmt.Fprintf(&validateStep, " - name: Validate cache-memory file types (%s)\n", cache.ID) - validateStep.WriteString(" uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8\n") - validateStep.WriteString(" with:\n") - validateStep.WriteString(" script: |\n") - validateStep.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") - validateStep.WriteString(" setupGlobals(core, github, context, exec, io);\n") - validateStep.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") - fmt.Fprintf(&validateStep, " const allowedExtensions = %s;\n", allowedExtsJSON) - fmt.Fprintf(&validateStep, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) - validateStep.WriteString(" if (!result.valid) {\n") - fmt.Fprintf(&validateStep, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) - validateStep.WriteString(" }\n") - steps = append(steps, validateStep.String()) + // Build validation script + var validationScript strings.Builder + validationScript.WriteString(" const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');\n") + validationScript.WriteString(" setupGlobals(core, github, context, exec, io);\n") + validationScript.WriteString(" const { validateMemoryFiles } = require('/opt/gh-aw/actions/validate_memory_files.cjs');\n") + fmt.Fprintf(&validationScript, " const allowedExtensions = %s;\n", allowedExtsJSON) + fmt.Fprintf(&validationScript, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) + validationScript.WriteString(" if (!result.valid) {\n") + fmt.Fprintf(&validationScript, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) + validationScript.WriteString(" }\n") + + // Generate validation step using helper + stepName := fmt.Sprintf("Validate cache-memory file types (%s)", cache.ID) + steps = append(steps, generateInlineGitHubScriptStep(stepName, validationScript.String(), "")) // Generate cache key (same logic as in generateCacheMemorySteps) cacheKey := cache.Key diff --git a/pkg/workflow/cache_memory_prompt_test.go b/pkg/workflow/cache_memory_prompt_test.go index 0f1b92f6b4c..7451c7bc696 100644 --- a/pkg/workflow/cache_memory_prompt_test.go +++ b/pkg/workflow/cache_memory_prompt_test.go @@ -75,15 +75,24 @@ func TestBuildCacheMemoryPromptSection_MultipleCaches(t *testing.T) { section := buildCacheMemoryPromptSection(config) require.NotNil(t, section, "Should return a prompt section for multiple caches") - assert.False(t, section.IsFile, "Should use inline content for multiple caches") - assert.Contains(t, section.Content, "## Cache Folders Available", "Should have plural header") - assert.Contains(t, section.Content, "- **default**: `/tmp/gh-aw/cache-memory/`", "Should list default cache") - assert.Contains(t, section.Content, "- **session**: `/tmp/gh-aw/cache-memory-session/` - Session-specific cache", "Should list session cache with description") - assert.Contains(t, section.Content, "/tmp/gh-aw/cache-memory/notes.txt", "Should have examples for default cache") - assert.Contains(t, section.Content, "/tmp/gh-aw/cache-memory-session/notes.txt", "Should have examples for session cache") - - // Verify no environment variables for inline content - assert.Empty(t, section.EnvVars, "Inline content should not have environment variables") + assert.True(t, section.IsFile, "Should use template file for multiple caches") + assert.Equal(t, cacheMemoryPromptMultiFile, section.Content, "Should reference template file") + + // Verify environment variables are set + require.NotNil(t, section.EnvVars, "Should have environment variables for template substitution") + assert.Contains(t, section.EnvVars, "GH_AW_CACHE_LIST", "Should have cache list env var") + assert.Contains(t, section.EnvVars, "GH_AW_CACHE_EXAMPLES", "Should have cache examples env var") + assert.Contains(t, section.EnvVars, "GH_AW_ALLOWED_EXTENSIONS", "Should have allowed extensions env var") + + // Verify cache list content + cacheList := section.EnvVars["GH_AW_CACHE_LIST"] + assert.Contains(t, cacheList, "- **default**: `/tmp/gh-aw/cache-memory/`", "Should list default cache") + assert.Contains(t, cacheList, "- **session**: `/tmp/gh-aw/cache-memory-session/` - Session-specific cache", "Should list session cache with description") + + // Verify cache examples content + cacheExamples := section.EnvVars["GH_AW_CACHE_EXAMPLES"] + assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory/notes.txt", "Should have examples for default cache") + assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory-session/notes.txt", "Should have examples for session cache") } func TestBuildCacheMemoryPromptSection_SingleNonDefaultCache(t *testing.T) { @@ -100,10 +109,16 @@ func TestBuildCacheMemoryPromptSection_SingleNonDefaultCache(t *testing.T) { section := buildCacheMemoryPromptSection(config) require.NotNil(t, section, "Should return a prompt section") - assert.False(t, section.IsFile, "Should use inline content for non-default single cache") - assert.Contains(t, section.Content, "## Cache Folders Available", "Should have plural header even for single non-default cache") - assert.Contains(t, section.Content, "- **custom**: `/tmp/gh-aw/cache-memory-custom/` - Custom cache", "Should list custom cache") - assert.Empty(t, section.EnvVars, "Inline content should not have environment variables") + assert.True(t, section.IsFile, "Should use template file for non-default single cache") + assert.Equal(t, "cache_memory_prompt_multi.md", section.Content, "Should reference template file") + + // Verify environment variables + require.NotNil(t, section.EnvVars, "Should have environment variables for template substitution") + assert.Contains(t, section.EnvVars, "GH_AW_CACHE_LIST", "Should have cache list env var") + + // Verify cache list content + cacheList := section.EnvVars["GH_AW_CACHE_LIST"] + assert.Contains(t, cacheList, "- **custom**: `/tmp/gh-aw/cache-memory-custom/` - Custom cache", "Should list custom cache") } func TestBuildCacheMemoryPromptSection_NilConfig(t *testing.T) { @@ -144,15 +159,21 @@ func TestBuildCacheMemoryPromptSection_MultipleCachesWithMixedDescriptions(t *te section := buildCacheMemoryPromptSection(config) require.NotNil(t, section, "Should return a prompt section") - assert.False(t, section.IsFile, "Should use inline content for multiple caches") - - // Verify all caches are listed with correct formatting - assert.Contains(t, section.Content, "- **default**: `/tmp/gh-aw/cache-memory/` - Main cache", "Should list default with description") - assert.Contains(t, section.Content, "- **temp**: `/tmp/gh-aw/cache-memory-temp/`\n", "Should list temp without description") - assert.Contains(t, section.Content, "- **persistent**: `/tmp/gh-aw/cache-memory-persistent/` - Long-term storage", "Should list persistent with description") + assert.True(t, section.IsFile, "Should use template file for multiple caches") + assert.Equal(t, "cache_memory_prompt_multi.md", section.Content, "Should reference template file") - // Verify examples for all caches - assert.Contains(t, section.Content, "/tmp/gh-aw/cache-memory/notes.txt", "Should have examples for default") - assert.Contains(t, section.Content, "/tmp/gh-aw/cache-memory-temp/notes.txt", "Should have examples for temp") - assert.Contains(t, section.Content, "/tmp/gh-aw/cache-memory-persistent/notes.txt", "Should have examples for persistent") + // Verify environment variables are set + require.NotNil(t, section.EnvVars, "Should have environment variables") + + // Verify all caches are listed in cache list env var + cacheList := section.EnvVars["GH_AW_CACHE_LIST"] + assert.Contains(t, cacheList, "- **default**: `/tmp/gh-aw/cache-memory/` - Main cache", "Should list default with description") + assert.Contains(t, cacheList, "- **temp**: `/tmp/gh-aw/cache-memory-temp/`\n", "Should list temp without description") + assert.Contains(t, cacheList, "- **persistent**: `/tmp/gh-aw/cache-memory-persistent/` - Long-term storage", "Should list persistent with description") + + // Verify examples for all caches in cache examples env var + cacheExamples := section.EnvVars["GH_AW_CACHE_EXAMPLES"] + assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory/notes.txt", "Should have examples for default") + assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory-temp/notes.txt", "Should have examples for temp") + assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory-persistent/notes.txt", "Should have examples for persistent") } diff --git a/pkg/workflow/compiler_yaml_helpers.go b/pkg/workflow/compiler_yaml_helpers.go index 4223bc1d2c5..c35f646f5ac 100644 --- a/pkg/workflow/compiler_yaml_helpers.go +++ b/pkg/workflow/compiler_yaml_helpers.go @@ -233,6 +233,30 @@ func generateGitHubScriptWithRequire(scriptPath string) string { return script.String() } +// generateInlineGitHubScriptStep generates a simple inline github-script step +// for validation or utility operations that don't require artifact downloads. +// +// Parameters: +// - stepName: The name of the step (e.g., "Validate cache-memory file types") +// - script: The JavaScript code to execute (pre-formatted with proper indentation) +// - condition: Optional if condition (e.g., "always()"). Empty string means no condition. +// +// Returns a string containing the complete YAML for the github-script step. +func generateInlineGitHubScriptStep(stepName, script, condition string) string { + var step strings.Builder + + step.WriteString(" - name: " + stepName + "\n") + if condition != "" { + step.WriteString(" if: " + condition + "\n") + } + step.WriteString(" uses: " + GetActionPin("actions/github-script") + "\n") + step.WriteString(" with:\n") + step.WriteString(" script: |\n") + step.WriteString(script) + + return step.String() +} + // generateSetupStep generates the setup step based on the action mode. // In script mode, it runs the setup.sh script directly from the checked-out source. // In other modes (dev/release), it uses the setup action. diff --git a/pkg/workflow/prompts/cache_memory_prompt_multi.md b/pkg/workflow/prompts/cache_memory_prompt_multi.md new file mode 100644 index 00000000000..13a69935d8e --- /dev/null +++ b/pkg/workflow/prompts/cache_memory_prompt_multi.md @@ -0,0 +1,20 @@ + +--- + +## Cache Folders Available + +You have access to persistent cache folders where you can read and write files to create memories and store information: + +__CACHE_LIST__ + +- **Read/Write Access**: You can freely read from and write to any files in these folders +- **Persistence**: Files in these folders persist across workflow runs via GitHub Actions cache +- **Last Write Wins**: If multiple processes write to the same file, the last write will be preserved +- **File Share**: Use these as simple file shares - organize files as you see fit +- **Allowed File Types**: Only the following file extensions are allowed: `__ALLOWED_EXTENSIONS__`. Files with other extensions will be rejected during validation. + +Examples of what you can store: + +__CACHE_EXAMPLES__ + +Feel free to create, read, update, and organize files in these folders as needed for your tasks, using only the allowed file types. diff --git a/pkg/workflow/prompts_test.go b/pkg/workflow/prompts_test.go index 27b4d8086c0..9509b949be4 100644 --- a/pkg/workflow/prompts_test.go +++ b/pkg/workflow/prompts_test.go @@ -305,12 +305,12 @@ This is a test workflow with multiple cache-memory entries. t.Error("Expected 'Create prompt with built-in context' step in generated workflow") } - // Test 2: Verify plural form is used for multiple caches - if !strings.Contains(lockStr, "Cache Folders Available") { - t.Error("Expected 'Cache Folders Available' (plural) header for multiple caches") + // Test 2: Verify multi-cache template file is referenced + if !strings.Contains(lockStr, "cache_memory_prompt_multi.md") { + t.Error("Expected 'cache_memory_prompt_multi.md' template file reference for multiple caches") } - // Test 3: Verify both cache directories are mentioned + // Test 3: Verify both cache directories are mentioned in environment variables if !strings.Contains(lockStr, "/tmp/gh-aw/cache-memory/") { t.Error("Expected '/tmp/gh-aw/cache-memory/' reference for default cache") } From 6c274e4f443f7f260dbdb7bd8745ba11b9da36c6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:18:14 +0000 Subject: [PATCH 07/16] Fix tests to work with template-based multi-cache prompts Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/cache_memory_import_test.go | 2 +- pkg/workflow/cache_memory_integration_test.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/workflow/cache_memory_import_test.go b/pkg/workflow/cache_memory_import_test.go index e30b3792e13..5d7b1b0f0e5 100644 --- a/pkg/workflow/cache_memory_import_test.go +++ b/pkg/workflow/cache_memory_import_test.go @@ -87,7 +87,7 @@ Test cache-memory import without local definition. "- name: Create cache-memory directory (logs)", "path: /tmp/gh-aw/cache-memory-logs", "key: shared-logs-${{ github.run_id }}", - "## Cache Folders Available", + "cache_memory_prompt_multi.md", // Template file reference instead of literal content "- **session**: `/tmp/gh-aw/cache-memory-session/`", "- **logs**: `/tmp/gh-aw/cache-memory-logs/`", } diff --git a/pkg/workflow/cache_memory_integration_test.go b/pkg/workflow/cache_memory_integration_test.go index 7f56b175299..5d315c83a85 100644 --- a/pkg/workflow/cache_memory_integration_test.go +++ b/pkg/workflow/cache_memory_integration_test.go @@ -49,7 +49,7 @@ tools: notExpectedInLock: []string{ // Should NOT upload artifact when detection is disabled "- name: Upload cache-memory data as artifact", - "## Cache Folders Available", + "cache_memory_prompt_multi.md", // Should not use multi template for default-only cache "cache-memory/default/", "cache-memory/session/", }, @@ -85,7 +85,7 @@ tools: "- name: Cache cache-memory file share data (session)", "key: memory-session-${{ github.run_id }}", "path: /tmp/gh-aw/cache-memory-session", - "## Cache Folders Available", + "cache_memory_prompt_multi.md", // Template file reference for multiple caches "- **default**: `/tmp/gh-aw/cache-memory/`", "- **session**: `/tmp/gh-aw/cache-memory-session/`", }, @@ -124,7 +124,7 @@ tools: "mkdir -p /tmp/gh-aw/cache-memory-logs", "key: memory-logs-${{ github.workflow }}-${{ github.run_id }}", "path: /tmp/gh-aw/cache-memory-logs", - "## Cache Folders Available", + "cache_memory_prompt_multi.md", // Template file reference for multiple caches "- **data**: `/tmp/gh-aw/cache-memory-data/`", "- **logs**: `/tmp/gh-aw/cache-memory-logs/`", }, From 854ce17f89c5a0f97b9d5f56651420dbc2d7e117 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:24:15 +0000 Subject: [PATCH 08/16] Fix all tests for template-based approach - all passing Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/cache_memory_prompt_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/workflow/cache_memory_prompt_test.go b/pkg/workflow/cache_memory_prompt_test.go index 7451c7bc696..c07fee7455c 100644 --- a/pkg/workflow/cache_memory_prompt_test.go +++ b/pkg/workflow/cache_memory_prompt_test.go @@ -77,18 +77,18 @@ func TestBuildCacheMemoryPromptSection_MultipleCaches(t *testing.T) { require.NotNil(t, section, "Should return a prompt section for multiple caches") assert.True(t, section.IsFile, "Should use template file for multiple caches") assert.Equal(t, cacheMemoryPromptMultiFile, section.Content, "Should reference template file") - + // Verify environment variables are set require.NotNil(t, section.EnvVars, "Should have environment variables for template substitution") assert.Contains(t, section.EnvVars, "GH_AW_CACHE_LIST", "Should have cache list env var") assert.Contains(t, section.EnvVars, "GH_AW_CACHE_EXAMPLES", "Should have cache examples env var") assert.Contains(t, section.EnvVars, "GH_AW_ALLOWED_EXTENSIONS", "Should have allowed extensions env var") - + // Verify cache list content cacheList := section.EnvVars["GH_AW_CACHE_LIST"] assert.Contains(t, cacheList, "- **default**: `/tmp/gh-aw/cache-memory/`", "Should list default cache") assert.Contains(t, cacheList, "- **session**: `/tmp/gh-aw/cache-memory-session/` - Session-specific cache", "Should list session cache with description") - + // Verify cache examples content cacheExamples := section.EnvVars["GH_AW_CACHE_EXAMPLES"] assert.Contains(t, cacheExamples, "/tmp/gh-aw/cache-memory/notes.txt", "Should have examples for default cache") @@ -111,11 +111,11 @@ func TestBuildCacheMemoryPromptSection_SingleNonDefaultCache(t *testing.T) { require.NotNil(t, section, "Should return a prompt section") assert.True(t, section.IsFile, "Should use template file for non-default single cache") assert.Equal(t, "cache_memory_prompt_multi.md", section.Content, "Should reference template file") - + // Verify environment variables require.NotNil(t, section.EnvVars, "Should have environment variables for template substitution") assert.Contains(t, section.EnvVars, "GH_AW_CACHE_LIST", "Should have cache list env var") - + // Verify cache list content cacheList := section.EnvVars["GH_AW_CACHE_LIST"] assert.Contains(t, cacheList, "- **custom**: `/tmp/gh-aw/cache-memory-custom/` - Custom cache", "Should list custom cache") @@ -164,7 +164,7 @@ func TestBuildCacheMemoryPromptSection_MultipleCachesWithMixedDescriptions(t *te // Verify environment variables are set require.NotNil(t, section.EnvVars, "Should have environment variables") - + // Verify all caches are listed in cache list env var cacheList := section.EnvVars["GH_AW_CACHE_LIST"] assert.Contains(t, cacheList, "- **default**: `/tmp/gh-aw/cache-memory/` - Main cache", "Should list default with description") From bdc7914fd74e7b55e9c94a45efd9ce29d62aaf5a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:26:18 +0000 Subject: [PATCH 09/16] Fix quoting in allowed extensions text for prompts Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/agent-persona-explorer.lock.yml | 2 +- .github/workflows/audit-workflows.lock.yml | 2 +- .github/workflows/chroma-issue-indexer.lock.yml | 2 +- .github/workflows/ci-coach.lock.yml | 2 +- .github/workflows/ci-doctor.lock.yml | 2 +- .github/workflows/claude-code-user-docs-review.lock.yml | 2 +- .github/workflows/cli-version-checker.lock.yml | 2 +- .github/workflows/cloclo.lock.yml | 2 +- .github/workflows/code-scanning-fixer.lock.yml | 4 ++-- .github/workflows/copilot-agent-analysis.lock.yml | 2 +- .github/workflows/copilot-pr-nlp-analysis.lock.yml | 2 +- .github/workflows/copilot-pr-prompt-analysis.lock.yml | 2 +- .github/workflows/copilot-session-insights.lock.yml | 2 +- .github/workflows/daily-code-metrics.lock.yml | 2 +- .github/workflows/daily-compiler-quality.lock.yml | 2 +- .github/workflows/daily-copilot-token-report.lock.yml | 2 +- .github/workflows/daily-doc-updater.lock.yml | 2 +- .github/workflows/daily-firewall-report.lock.yml | 2 +- .github/workflows/daily-issues-report.lock.yml | 2 +- .github/workflows/daily-mcp-concurrency-analysis.lock.yml | 2 +- .github/workflows/daily-news.lock.yml | 2 +- .github/workflows/daily-performance-summary.lock.yml | 2 +- .github/workflows/daily-repo-chronicle.lock.yml | 2 +- .github/workflows/daily-safe-output-optimizer.lock.yml | 2 +- .github/workflows/deep-report.lock.yml | 2 +- .github/workflows/developer-docs-consolidator.lock.yml | 2 +- .github/workflows/firewall-escape.lock.yml | 2 +- .github/workflows/github-mcp-structural-analysis.lock.yml | 2 +- .github/workflows/github-mcp-tools-report.lock.yml | 2 +- .github/workflows/glossary-maintainer.lock.yml | 2 +- .github/workflows/go-fan.lock.yml | 2 +- .github/workflows/go-logger.lock.yml | 2 +- .github/workflows/gpclean.lock.yml | 2 +- .github/workflows/grumpy-reviewer.lock.yml | 2 +- .github/workflows/instructions-janitor.lock.yml | 2 +- .github/workflows/jsweep.lock.yml | 2 +- .github/workflows/lockfile-stats.lock.yml | 2 +- .github/workflows/mcp-inspector.lock.yml | 2 +- .github/workflows/org-health-report.lock.yml | 2 +- .github/workflows/pdf-summary.lock.yml | 2 +- .github/workflows/poem-bot.lock.yml | 2 +- .github/workflows/portfolio-analyst.lock.yml | 2 +- .github/workflows/pr-nitpick-reviewer.lock.yml | 2 +- .github/workflows/prompt-clustering-analysis.lock.yml | 2 +- .github/workflows/python-data-charts.lock.yml | 2 +- .github/workflows/q.lock.yml | 2 +- .github/workflows/repo-audit-analyzer.lock.yml | 2 +- .github/workflows/repository-quality-improver.lock.yml | 2 +- .github/workflows/safe-output-health.lock.yml | 2 +- .github/workflows/schema-consistency-checker.lock.yml | 2 +- .github/workflows/scout.lock.yml | 2 +- .github/workflows/security-review.lock.yml | 2 +- .github/workflows/sergo.lock.yml | 2 +- .github/workflows/slide-deck-maintainer.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/stale-repo-identifier.lock.yml | 2 +- .github/workflows/static-analysis-report.lock.yml | 2 +- .github/workflows/step-name-alignment.lock.yml | 2 +- .github/workflows/super-linter.lock.yml | 2 +- .github/workflows/technical-doc-writer.lock.yml | 2 +- .github/workflows/test-create-pr-error-handling.lock.yml | 2 +- .github/workflows/unbloat-docs.lock.yml | 2 +- .github/workflows/weekly-issue-summary.lock.yml | 2 +- pkg/workflow/cache.go | 4 ++-- pkg/workflow/repo_memory_prompt.go | 2 +- 67 files changed, 69 insertions(+), 69 deletions(-) diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index 8e72988f360..855d827b7fe 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -634,7 +634,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 41fa302f0ec..31f42febbdd 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -734,7 +734,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/chroma-issue-indexer.lock.yml b/.github/workflows/chroma-issue-indexer.lock.yml index 44a8716df6b..377d2c09b1b 100644 --- a/.github/workflows/chroma-issue-indexer.lock.yml +++ b/.github/workflows/chroma-issue-indexer.lock.yml @@ -340,7 +340,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-chroma/notes.txt` - general notes and observations - `/tmp/gh-aw/cache-memory-chroma/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-chroma/preferences.json` - user preferences and settings diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 8a69935ce3e..97c06be8fd9 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -625,7 +625,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 7ef3a68bde3..da9ae420570 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -726,7 +726,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index f2db6570b91..c6059c01dd7 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -564,7 +564,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 94fea40c5c7..a5fec56dd3d 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -595,7 +595,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 79d19513933..4fc592911fa 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -792,7 +792,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 9fe734259c9..19f4b9d3700 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -571,7 +571,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage - - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. + - **Allowed File Types**: Only the following file extensions are allowed: `.json, .jsonl, .txt, .md, .csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/repo-memory/notes.md` - general notes and observations @@ -640,7 +640,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 639d267cb47..c41bf724c00 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -622,7 +622,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 27a45e553e6..bb1c16c5a39 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -679,7 +679,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 0f116e29404..b3d7f08295f 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -618,7 +618,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index e2ead078b3b..0e6d33d80dd 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -686,7 +686,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 195869b951c..80d65f97337 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -665,7 +665,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index c0b589c4075..23f67269fb4 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -571,7 +571,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 43113d7f50e..955f4bd55d9 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -691,7 +691,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 82f796dace7..3f82e09d20c 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -573,7 +573,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index f078fb38729..2f3acb701e3 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -689,7 +689,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 1d411c92023..25e1eb1f7aa 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -717,7 +717,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index 3c35ad53a26..a516ef54e2c 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -623,7 +623,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 59cf6c7cff7..bcd60a824a5 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -752,7 +752,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index 77a039404f1..6942c50d86f 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -1182,7 +1182,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index d3d462433e6..5517e185ee7 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -623,7 +623,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 74b507a5305..35ae4dc9ca6 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -669,7 +669,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index de2b5dc6eba..b27689369bd 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -821,7 +821,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 971db004074..bc0781d55b8 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -646,7 +646,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 3145ccfe29a..511ba89d969 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -606,7 +606,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index 4b746537701..fb611528b28 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -625,7 +625,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index e286017f359..f1dc1f6136c 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -633,7 +633,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index adaf4763eef..a6fe635871a 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -596,7 +596,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 20c5a8cccd6..35de8777f8e 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -583,7 +583,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index bd5ca66dfc4..2d89e895a67 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -727,7 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index bde603dbcea..8fcd3622c97 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -586,7 +586,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index 3e1dfcbb552..bb7cd269081 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -645,7 +645,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index a8486791bb4..8dde0be7847 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -573,7 +573,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 0f60b26885c..cf8fe6f4362 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -587,7 +587,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 3c8f9d9e093..8380373d169 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -567,7 +567,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 6eec001b145..05332c001af 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -931,7 +931,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index c9ecd0b65eb..c3905ca697d 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -616,7 +616,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 0676d6ee5ea..ed4d7d1d254 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -663,7 +663,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 00e75853922..1c7d75896ee 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1149,7 +1149,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index ba28c2dec33..354feb57580 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -699,7 +699,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index 0bac30dad9f..1e8b0cb61e1 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -727,7 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index a6cf6ae40cc..89fb9d84e60 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -698,7 +698,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index 0c44103a15c..281be73c420 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -688,7 +688,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 9c3eaa5bed6..a3b335267d6 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -746,7 +746,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index c7a045e03f6..7f3468364c2 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -569,7 +569,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-repo-audits/notes.txt` - general notes and observations - `/tmp/gh-aw/cache-memory-repo-audits/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-repo-audits/preferences.json` - user preferences and settings diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index d019db94fcf..73be6aaf3ce 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -572,7 +572,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_EXAMPLES: '- `/tmp/gh-aw/cache-memory-focus-areas/notes.txt` - general notes and observations - `/tmp/gh-aw/cache-memory-focus-areas/notes.md` - markdown formatted notes - `/tmp/gh-aw/cache-memory-focus-areas/preferences.json` - user preferences and settings diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index ac89f23eb8d..291d605aa5c 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -645,7 +645,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 073b9a9ce6c..b70b3d993a9 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -569,7 +569,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 2f268394313..07cabd692e5 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -676,7 +676,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_EXPR_799BE623: ${{ github.event.issue.number || github.event.pull_request.number }} diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index 97fa850f669..92a24b91315 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -727,7 +727,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index 5eb9ce6b29d..cdb2ea42861 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -584,7 +584,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index d4b8bd3089e..f35e0cfe7c2 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -597,7 +597,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 973703577c1..b2093745d9c 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1386,7 +1386,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index f18c29434cb..d60ec9e9e62 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -950,7 +950,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index f00f9fe4082..58169f18287 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -1339,7 +1339,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 4d2635d5289..f69e90b0016 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -679,7 +679,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_ENV_ORGANIZATION: ${{ env.ORGANIZATION }} diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index e2e1fb6a682..fa78e22007a 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -641,7 +641,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 11311f27f89..2c512392afd 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -584,7 +584,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index 1a7b3755f4c..033d7610776 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -593,7 +593,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 5ba970f4fbb..eb3dda76d0a 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -672,7 +672,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index f463ff0618d..27f06e8e1e5 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -570,7 +570,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 77becc6e1a7..3765bf4ca53 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -705,7 +705,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index fdf3b3a1954..aeca07ff536 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -595,7 +595,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt - GH_AW_ALLOWED_EXTENSIONS: '.json`, `.jsonl`, `.txt`, `.md`, `.csv' + GH_AW_ALLOWED_EXTENSIONS: '.json, .jsonl, .txt, .md, .csv' GH_AW_CACHE_DESCRIPTION: '' GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/' GH_AW_GITHUB_ACTOR: ${{ github.actor }} diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index 141fb3b8f83..43d5b77cc2e 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -641,7 +641,7 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { } // Build allowed extensions text - allowedExtsText := strings.Join(cache.AllowedExtensions, "`, `") + allowedExtsText := strings.Join(cache.AllowedExtensions, ", ") cacheLog.Printf("Building cache memory prompt section with env vars: cache_dir=%s, description=%s, allowed_extensions=%v", cacheDir, descriptionText, cache.AllowedExtensions) @@ -677,7 +677,7 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { } // Build allowed extensions text (use the first cache's extensions as they should all be the same for the group) - allowedExtsText := strings.Join(config.Caches[0].AllowedExtensions, "`, `") + allowedExtsText := strings.Join(config.Caches[0].AllowedExtensions, ", ") // Build cache examples var cacheExamples strings.Builder diff --git a/pkg/workflow/repo_memory_prompt.go b/pkg/workflow/repo_memory_prompt.go index 221918646bd..4dd1f459878 100644 --- a/pkg/workflow/repo_memory_prompt.go +++ b/pkg/workflow/repo_memory_prompt.go @@ -97,7 +97,7 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" - **Merge Strategy**: In case of conflicts, your changes (current version) win\n") yaml.WriteString(" - **Persistence**: Files persist across workflow runs via git branch storage\n") // Build allowed extensions text (use first memory's extensions as default) - allowedExtsText := strings.Join(config.Memories[0].AllowedExtensions, "`, `") + allowedExtsText := strings.Join(config.Memories[0].AllowedExtensions, ", ") fmt.Fprintf(yaml, " - **Allowed File Types**: Only the following file extensions are allowed: `%s`. Files with other extensions will be rejected during validation.\n", allowedExtsText) yaml.WriteString(" \n") yaml.WriteString(" Examples of what you can store:\n") From ee736b3a55aac605133e1329f729e8bf4c43ceae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 21:25:22 +0000 Subject: [PATCH 10/16] Move default extensions to constants and refactor entry parsing Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/constants/constants.go | 4 + pkg/workflow/cache.go | 274 ++++++++++++++---------------------- pkg/workflow/repo_memory.go | 9 +- 3 files changed, 112 insertions(+), 175 deletions(-) diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 649dac6101f..f991decbb1f 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -824,3 +824,7 @@ var SharedWorkflowForbiddenFields = []string{ func GetWorkflowDir() string { return filepath.Join(".github", "workflows") } + +// DefaultAllowedMemoryExtensions is the default list of allowed file extensions for cache-memory and repo-memory storage. +// These file types are considered safe for AI agent memory storage. +var DefaultAllowedMemoryExtensions = []string{".json", ".jsonl", ".txt", ".md", ".csv"} diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index 43d5b77cc2e..9f9d0b29500 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -6,17 +6,13 @@ import ( "os" "strings" + "github.com/github/gh-aw/pkg/constants" "github.com/github/gh-aw/pkg/logger" "github.com/goccy/go-yaml" ) var cacheLog = logger.New("workflow:cache") -// getDefaultAllowedExtensions returns the default list of allowed file extensions for memory storage -func getDefaultAllowedExtensions() []string { - return []string{".json", ".jsonl", ".txt", ".md", ".csv"} -} - // CacheMemoryConfig holds configuration for cache-memory functionality type CacheMemoryConfig struct { Caches []CacheMemoryEntry `yaml:"caches,omitempty"` // cache configurations @@ -41,6 +37,99 @@ func generateDefaultCacheKey(cacheID string) string { return fmt.Sprintf("memory-%s-${{ github.workflow }}-${{ github.run_id }}", cacheID) } +// parseCacheMemoryEntry parses a single cache-memory entry from a map +func parseCacheMemoryEntry(cacheMap map[string]any, defaultID string) (CacheMemoryEntry, error) { + entry := CacheMemoryEntry{ + ID: defaultID, + Key: generateDefaultCacheKey(defaultID), + } + + // Parse ID (for array notation) + if id, exists := cacheMap["id"]; exists { + if idStr, ok := id.(string); ok { + entry.ID = idStr + } + } + // Update key if ID changed + if entry.ID != defaultID { + entry.Key = generateDefaultCacheKey(entry.ID) + } + + // Parse custom key + if key, exists := cacheMap["key"]; exists { + if keyStr, ok := key.(string); ok { + entry.Key = keyStr + // Automatically append -${{ github.run_id }} if the key doesn't already end with it + runIdSuffix := "-${{ github.run_id }}" + if !strings.HasSuffix(entry.Key, runIdSuffix) { + entry.Key = entry.Key + runIdSuffix + } + } + } + + // Parse description + if description, exists := cacheMap["description"]; exists { + if descStr, ok := description.(string); ok { + entry.Description = descStr + } + } + + // Parse retention days + if retentionDays, exists := cacheMap["retention-days"]; exists { + if retentionDaysInt, ok := retentionDays.(int); ok { + entry.RetentionDays = &retentionDaysInt + } else if retentionDaysFloat, ok := retentionDays.(float64); ok { + retentionDaysIntValue := int(retentionDaysFloat) + entry.RetentionDays = &retentionDaysIntValue + } else if retentionDaysUint64, ok := retentionDays.(uint64); ok { + retentionDaysIntValue := int(retentionDaysUint64) + entry.RetentionDays = &retentionDaysIntValue + } + // Validate retention-days bounds + if entry.RetentionDays != nil { + if err := validateIntRange(*entry.RetentionDays, 1, 90, "retention-days"); err != nil { + return entry, err + } + } + } + + // Parse restore-only flag + if restoreOnly, exists := cacheMap["restore-only"]; exists { + if restoreOnlyBool, ok := restoreOnly.(bool); ok { + entry.RestoreOnly = restoreOnlyBool + } + } + + // Parse scope field + if scope, exists := cacheMap["scope"]; exists { + if scopeStr, ok := scope.(string); ok { + entry.Scope = scopeStr + } + } + // Default to "workflow" scope if not specified + if entry.Scope == "" { + entry.Scope = "workflow" + } + + // Parse allowed-extensions field + if allowedExts, exists := cacheMap["allowed-extensions"]; exists { + if extArray, ok := allowedExts.([]any); ok { + entry.AllowedExtensions = make([]string, 0, len(extArray)) + for _, ext := range extArray { + if extStr, ok := ext.(string); ok { + entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) + } + } + } + } + // Default to standard allowed extensions if not specified + if len(entry.AllowedExtensions) == 0 { + entry.AllowedExtensions = constants.DefaultAllowedMemoryExtensions + } + + return entry, nil +} + // extractCacheMemoryConfig extracts cache-memory configuration from tools section // Updated to use ToolsConfig instead of map[string]any func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMemoryConfig, error) { @@ -61,7 +150,7 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem { ID: "default", Key: generateDefaultCacheKey("default"), - AllowedExtensions: getDefaultAllowedExtensions(), + AllowedExtensions: constants.DefaultAllowedMemoryExtensions, }, } return config, nil @@ -75,7 +164,7 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem { ID: "default", Key: generateDefaultCacheKey("default"), - AllowedExtensions: getDefaultAllowedExtensions(), + AllowedExtensions: constants.DefaultAllowedMemoryExtensions, }, } } @@ -89,95 +178,10 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem config.Caches = make([]CacheMemoryEntry, 0, len(cacheArray)) for _, item := range cacheArray { if cacheMap, ok := item.(map[string]any); ok { - entry := CacheMemoryEntry{} - - // ID is required for array notation - if id, exists := cacheMap["id"]; exists { - if idStr, ok := id.(string); ok { - entry.ID = idStr - } - } - // Use "default" if no ID specified - if entry.ID == "" { - entry.ID = "default" - } - - // Parse custom key - if key, exists := cacheMap["key"]; exists { - if keyStr, ok := key.(string); ok { - entry.Key = keyStr - // Automatically append -${{ github.run_id }} if the key doesn't already end with it - runIdSuffix := "-${{ github.run_id }}" - if !strings.HasSuffix(entry.Key, runIdSuffix) { - entry.Key = entry.Key + runIdSuffix - } - } - } - // Set default key if not specified - if entry.Key == "" { - entry.Key = generateDefaultCacheKey(entry.ID) - } - - // Parse description - if description, exists := cacheMap["description"]; exists { - if descStr, ok := description.(string); ok { - entry.Description = descStr - } - } - - // Parse retention days - if retentionDays, exists := cacheMap["retention-days"]; exists { - if retentionDaysInt, ok := retentionDays.(int); ok { - entry.RetentionDays = &retentionDaysInt - } else if retentionDaysFloat, ok := retentionDays.(float64); ok { - retentionDaysIntValue := int(retentionDaysFloat) - entry.RetentionDays = &retentionDaysIntValue - } else if retentionDaysUint64, ok := retentionDays.(uint64); ok { - retentionDaysIntValue := int(retentionDaysUint64) - entry.RetentionDays = &retentionDaysIntValue - } - // Validate retention-days bounds - if entry.RetentionDays != nil { - if err := validateIntRange(*entry.RetentionDays, 1, 90, "retention-days"); err != nil { - return nil, err - } - } - } - - // Parse restore-only flag - if restoreOnly, exists := cacheMap["restore-only"]; exists { - if restoreOnlyBool, ok := restoreOnly.(bool); ok { - entry.RestoreOnly = restoreOnlyBool - } - } - - // Parse scope field - if scope, exists := cacheMap["scope"]; exists { - if scopeStr, ok := scope.(string); ok { - entry.Scope = scopeStr - } - } - // Default to "workflow" scope if not specified - if entry.Scope == "" { - entry.Scope = "workflow" - } - - // Parse allowed-extensions field - if allowedExts, exists := cacheMap["allowed-extensions"]; exists { - if extArray, ok := allowedExts.([]any); ok { - entry.AllowedExtensions = make([]string, 0, len(extArray)) - for _, ext := range extArray { - if extStr, ok := ext.(string); ok { - entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) - } - } - } - } - // Default to standard allowed extensions if not specified - if len(entry.AllowedExtensions) == 0 { - entry.AllowedExtensions = getDefaultAllowedExtensions() + entry, err := parseCacheMemoryEntry(cacheMap, "default") + if err != nil { + return nil, err } - config.Caches = append(config.Caches, entry) } } @@ -193,83 +197,10 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem // Handle object configuration (single cache, backward compatible) // Convert to array with single entry if configMap, ok := cacheMemoryValue.(map[string]any); ok { - entry := CacheMemoryEntry{ - ID: "default", - Key: generateDefaultCacheKey("default"), - } - - // Parse custom key - if key, exists := configMap["key"]; exists { - if keyStr, ok := key.(string); ok { - entry.Key = keyStr - // Automatically append -${{ github.run_id }} if the key doesn't already end with it - runIdSuffix := "-${{ github.run_id }}" - if !strings.HasSuffix(entry.Key, runIdSuffix) { - entry.Key = entry.Key + runIdSuffix - } - } - } - - // Parse description - if description, exists := configMap["description"]; exists { - if descStr, ok := description.(string); ok { - entry.Description = descStr - } - } - - // Parse retention days - if retentionDays, exists := configMap["retention-days"]; exists { - if retentionDaysInt, ok := retentionDays.(int); ok { - entry.RetentionDays = &retentionDaysInt - } else if retentionDaysFloat, ok := retentionDays.(float64); ok { - retentionDaysIntValue := int(retentionDaysFloat) - entry.RetentionDays = &retentionDaysIntValue - } else if retentionDaysUint64, ok := retentionDays.(uint64); ok { - retentionDaysIntValue := int(retentionDaysUint64) - entry.RetentionDays = &retentionDaysIntValue - } - // Validate retention-days bounds - if entry.RetentionDays != nil { - if err := validateIntRange(*entry.RetentionDays, 1, 90, "retention-days"); err != nil { - return nil, err - } - } - } - - // Parse restore-only flag - if restoreOnly, exists := configMap["restore-only"]; exists { - if restoreOnlyBool, ok := restoreOnly.(bool); ok { - entry.RestoreOnly = restoreOnlyBool - } - } - - // Parse scope field - if scope, exists := configMap["scope"]; exists { - if scopeStr, ok := scope.(string); ok { - entry.Scope = scopeStr - } - } - // Default to "workflow" scope if not specified - if entry.Scope == "" { - entry.Scope = "workflow" - } - - // Parse allowed-extensions field - if allowedExts, exists := configMap["allowed-extensions"]; exists { - if extArray, ok := allowedExts.([]any); ok { - entry.AllowedExtensions = make([]string, 0, len(extArray)) - for _, ext := range extArray { - if extStr, ok := ext.(string); ok { - entry.AllowedExtensions = append(entry.AllowedExtensions, extStr) - } - } - } - } - // Default to standard allowed extensions if not specified - if len(entry.AllowedExtensions) == 0 { - entry.AllowedExtensions = getDefaultAllowedExtensions() + entry, err := parseCacheMemoryEntry(configMap, "default") + if err != nil { + return nil, err } - config.Caches = []CacheMemoryEntry{entry} return config, nil } @@ -277,6 +208,7 @@ func (c *Compiler) extractCacheMemoryConfig(toolsConfig *ToolsConfig) (*CacheMem return nil, nil } +// extractCacheMemoryConfigFromMap is a backward compatibility wrapper for extractCacheMemoryConfig // extractCacheMemoryConfigFromMap is a backward compatibility wrapper for extractCacheMemoryConfig // that accepts map[string]any instead of *ToolsConfig. This allows gradual migration of calling code. func (c *Compiler) extractCacheMemoryConfigFromMap(tools map[string]any) (*CacheMemoryConfig, error) { diff --git a/pkg/workflow/repo_memory.go b/pkg/workflow/repo_memory.go index c06806def78..9dc95df90a2 100644 --- a/pkg/workflow/repo_memory.go +++ b/pkg/workflow/repo_memory.go @@ -23,6 +23,7 @@ import ( "regexp" "strings" + "github.com/github/gh-aw/pkg/constants" "github.com/github/gh-aw/pkg/logger" ) @@ -119,7 +120,7 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor MaxFileSize: 10240, // 10KB MaxFileCount: 100, CreateOrphan: true, - AllowedExtensions: getDefaultAllowedExtensions(), + AllowedExtensions: constants.DefaultAllowedMemoryExtensions, }, } return config, nil @@ -137,7 +138,7 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor MaxFileSize: 10240, // 10KB MaxFileCount: 100, CreateOrphan: true, - AllowedExtensions: getDefaultAllowedExtensions(), + AllowedExtensions: constants.DefaultAllowedMemoryExtensions, }, } } else { @@ -277,7 +278,7 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor } // Default to standard allowed extensions if not specified if len(entry.AllowedExtensions) == 0 { - entry.AllowedExtensions = getDefaultAllowedExtensions() + entry.AllowedExtensions = constants.DefaultAllowedMemoryExtensions } config.Memories = append(config.Memories, entry) @@ -402,7 +403,7 @@ func (c *Compiler) extractRepoMemoryConfig(toolsConfig *ToolsConfig) (*RepoMemor } // Default to standard allowed extensions if not specified if len(entry.AllowedExtensions) == 0 { - entry.AllowedExtensions = getDefaultAllowedExtensions() + entry.AllowedExtensions = constants.DefaultAllowedMemoryExtensions } config.Memories = []RepoMemoryEntry{entry} From 024222600a570ae4052cf10b0fda5f4245e96f42 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 21:36:52 +0000 Subject: [PATCH 11/16] Add validation failure outputs and reporting in agent failure handler Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/handle_agent_failure.cjs | 26 +++++++++++++++++++++++ actions/setup/js/push_repo_memory.cjs | 5 ++++- actions/setup/md/agent_failure_comment.md | 2 +- actions/setup/md/agent_failure_issue.md | 2 +- pkg/workflow/notify_comment.go | 10 +++++++++ pkg/workflow/repo_memory.go | 11 ++++++++++ 6 files changed, 53 insertions(+), 3 deletions(-) diff --git a/actions/setup/js/handle_agent_failure.cjs b/actions/setup/js/handle_agent_failure.cjs index 9361024157e..2fe549ed666 100644 --- a/actions/setup/js/handle_agent_failure.cjs +++ b/actions/setup/js/handle_agent_failure.cjs @@ -342,6 +342,20 @@ async function main() { const createDiscussionErrors = process.env.GH_AW_CREATE_DISCUSSION_ERRORS || ""; const createDiscussionErrorCount = process.env.GH_AW_CREATE_DISCUSSION_ERROR_COUNT || "0"; const checkoutPRSuccess = process.env.GH_AW_CHECKOUT_PR_SUCCESS || ""; + + // Collect repo-memory validation errors from all memory configurations + const repoMemoryValidationErrors = []; + for (const key in process.env) { + if (key.startsWith("GH_AW_REPO_MEMORY_VALIDATION_FAILED_")) { + const memoryID = key.replace("GH_AW_REPO_MEMORY_VALIDATION_FAILED_", ""); + const failed = process.env[key] === "true"; + if (failed) { + const errorKey = `GH_AW_REPO_MEMORY_VALIDATION_ERROR_${memoryID}`; + const errorMessage = process.env[errorKey] || "Unknown validation error"; + repoMemoryValidationErrors.push({ memoryID, errorMessage }); + } + } + } core.info(`Agent conclusion: ${agentConclusion}`); core.info(`Workflow name: ${workflowName}`); @@ -489,6 +503,7 @@ async function main() { : "", assignment_errors_context: assignmentErrorsContext, create_discussion_errors_context: createDiscussionErrorsContext, + repo_memory_validation_context: repoMemoryValidationContext, missing_data_context: missingDataContext, missing_safe_outputs_context: missingSafeOutputsContext, }; @@ -548,6 +563,16 @@ async function main() { // Build create_discussion errors context const createDiscussionErrorsContext = hasCreateDiscussionErrors ? buildCreateDiscussionErrorsContext(createDiscussionErrors) : ""; + // Build repo-memory validation errors context + let repoMemoryValidationContext = ""; + if (repoMemoryValidationErrors.length > 0) { + repoMemoryValidationContext = "\n**⚠️ Repo-Memory Validation Failed**: Invalid file types detected in repo-memory.\n\n**Validation Errors:**\n"; + for (const { memoryID, errorMessage } of repoMemoryValidationErrors) { + repoMemoryValidationContext += `- Memory "${memoryID}": ${errorMessage}\n`; + } + repoMemoryValidationContext += "\n"; + } + // Build missing_data context const missingDataContext = buildMissingDataContext(); @@ -575,6 +600,7 @@ async function main() { : "", assignment_errors_context: assignmentErrorsContext, create_discussion_errors_context: createDiscussionErrorsContext, + repo_memory_validation_context: repoMemoryValidationContext, missing_data_context: missingDataContext, missing_safe_outputs_context: missingSafeOutputsContext, }; diff --git a/actions/setup/js/push_repo_memory.cjs b/actions/setup/js/push_repo_memory.cjs index a1582686cdc..ddd4efa19e0 100644 --- a/actions/setup/js/push_repo_memory.cjs +++ b/actions/setup/js/push_repo_memory.cjs @@ -248,7 +248,10 @@ async function main() { const { validateMemoryFiles } = require("./validate_memory_files.cjs"); const validation = validateMemoryFiles(sourceMemoryPath, "repo", allowedExtensions); if (!validation.valid) { - core.setFailed(`File type validation failed: Found ${validation.invalidFiles.length} file(s) with invalid extensions. Only ${allowedExtensions.join(", ")} are allowed.`); + const errorMessage = `File type validation failed: Found ${validation.invalidFiles.length} file(s) with invalid extensions. Only ${allowedExtensions.join(", ")} are allowed. Invalid files: ${validation.invalidFiles.join(", ")}`; + core.setOutput("validation_failed", "true"); + core.setOutput("validation_error", errorMessage); + core.setFailed(errorMessage); return; } diff --git a/actions/setup/md/agent_failure_comment.md b/actions/setup/md/agent_failure_comment.md index 7d1089bb6f6..93d5c23b54c 100644 --- a/actions/setup/md/agent_failure_comment.md +++ b/actions/setup/md/agent_failure_comment.md @@ -1,3 +1,3 @@ Agent job [{run_id}]({run_url}) failed. -{secret_verification_context}{assignment_errors_context}{create_discussion_errors_context}{missing_data_context}{missing_safe_outputs_context} +{secret_verification_context}{assignment_errors_context}{create_discussion_errors_context}{repo_memory_validation_context}{missing_data_context}{missing_safe_outputs_context} diff --git a/actions/setup/md/agent_failure_issue.md b/actions/setup/md/agent_failure_issue.md index 974a957bdce..88a5a84e681 100644 --- a/actions/setup/md/agent_failure_issue.md +++ b/actions/setup/md/agent_failure_issue.md @@ -4,7 +4,7 @@ **Branch:** {branch} **Run URL:** {run_url}{pull_request_info} -{secret_verification_context}{assignment_errors_context}{create_discussion_errors_context}{missing_data_context}{missing_safe_outputs_context} +{secret_verification_context}{assignment_errors_context}{create_discussion_errors_context}{repo_memory_validation_context}{missing_data_context}{missing_safe_outputs_context} ### Action Required diff --git a/pkg/workflow/notify_comment.go b/pkg/workflow/notify_comment.go index 83f75c2c761..99faeb77a60 100644 --- a/pkg/workflow/notify_comment.go +++ b/pkg/workflow/notify_comment.go @@ -178,6 +178,16 @@ func (c *Compiler) buildConclusionJob(data *WorkflowData, mainJobName string, sa } } + // Pass repo-memory validation failure outputs if repo-memory is configured + // This allows the agent failure handler to report validation issues + if data.RepoMemoryConfig != nil && len(data.RepoMemoryConfig.Memories) > 0 { + for _, memory := range data.RepoMemoryConfig.Memories { + // Add validation status for each memory + agentFailureEnvVars = append(agentFailureEnvVars, fmt.Sprintf(" GH_AW_REPO_MEMORY_VALIDATION_FAILED_%s: ${{ needs.push_repo_memory.outputs.validation_failed_%s }}\n", memory.ID, memory.ID)) + agentFailureEnvVars = append(agentFailureEnvVars, fmt.Sprintf(" GH_AW_REPO_MEMORY_VALIDATION_ERROR_%s: ${{ needs.push_repo_memory.outputs.validation_error_%s }}\n", memory.ID, memory.ID)) + } + } + // Build the agent failure handling step agentFailureSteps := c.buildGitHubScriptStepWithoutDownload(data, GitHubScriptStepConfig{ StepName: "Handle Agent Failure", diff --git a/pkg/workflow/repo_memory.go b/pkg/workflow/repo_memory.go index 9dc95df90a2..ccdb446a627 100644 --- a/pkg/workflow/repo_memory.go +++ b/pkg/workflow/repo_memory.go @@ -638,6 +638,7 @@ func (c *Compiler) buildPushRepoMemoryJob(data *WorkflowData, threatDetectionEna // Build step with github-script action var step strings.Builder fmt.Fprintf(&step, " - name: Push repo-memory changes (%s)\n", memory.ID) + fmt.Fprintf(&step, " id: push_repo_memory_%s\n", memory.ID) step.WriteString(" if: always()\n") fmt.Fprintf(&step, " uses: %s\n", GetActionPin("actions/github-script")) step.WriteString(" env:\n") @@ -687,6 +688,15 @@ func (c *Compiler) buildPushRepoMemoryJob(data *WorkflowData, threatDetectionEna jobCondition = "always() && needs.detection.outputs.success == 'true'" } + // Build outputs map for validation failures from all memory steps + outputs := make(map[string]string) + for _, memory := range data.RepoMemoryConfig.Memories { + stepID := fmt.Sprintf("push_repo_memory_%s", memory.ID) + // Add outputs for each memory's validation status + outputs[fmt.Sprintf("validation_failed_%s", memory.ID)] = fmt.Sprintf("${{ steps.%s.outputs.validation_failed }}", stepID) + outputs[fmt.Sprintf("validation_error_%s", memory.ID)] = fmt.Sprintf("${{ steps.%s.outputs.validation_error }}", stepID) + } + job := &Job{ Name: "push_repo_memory", DisplayName: "", // No display name - job ID is sufficient @@ -695,6 +705,7 @@ func (c *Compiler) buildPushRepoMemoryJob(data *WorkflowData, threatDetectionEna Permissions: "permissions:\n contents: write", Needs: []string{"agent"}, // Detection dependency added by caller if needed Steps: steps, + Outputs: outputs, } return job, nil From 5c09b96887f0a41df5b8eec5377fa6a0600cd58d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 21:57:15 +0000 Subject: [PATCH 12/16] Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/agent-performance-analyzer.lock.yml | 6 ++++++ .github/workflows/audit-workflows.lock.yml | 6 ++++++ .github/workflows/code-scanning-fixer.lock.yml | 6 ++++++ .github/workflows/copilot-agent-analysis.lock.yml | 6 ++++++ .github/workflows/copilot-cli-deep-research.lock.yml | 6 ++++++ .github/workflows/copilot-pr-nlp-analysis.lock.yml | 6 ++++++ .github/workflows/copilot-pr-prompt-analysis.lock.yml | 6 ++++++ .github/workflows/copilot-session-insights.lock.yml | 6 ++++++ .github/workflows/daily-cli-performance.lock.yml | 6 ++++++ .github/workflows/daily-code-metrics.lock.yml | 6 ++++++ .github/workflows/daily-copilot-token-report.lock.yml | 6 ++++++ .github/workflows/daily-news.lock.yml | 6 ++++++ .github/workflows/daily-testify-uber-super-expert.lock.yml | 6 ++++++ .github/workflows/deep-report.lock.yml | 6 ++++++ .github/workflows/delight.lock.yml | 6 ++++++ .github/workflows/discussion-task-miner.lock.yml | 6 ++++++ .github/workflows/firewall-escape.lock.yml | 6 ++++++ .github/workflows/metrics-collector.lock.yml | 4 ++++ .github/workflows/pr-triage-agent.lock.yml | 6 ++++++ .github/workflows/security-compliance.lock.yml | 6 ++++++ .github/workflows/workflow-health-manager.lock.yml | 6 ++++++ 21 files changed, 124 insertions(+) diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index 25ce606b29e..d234330bc16 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -1058,6 +1058,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1247,6 +1249,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1281,6 +1286,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 31f42febbdd..8a5f03cdf57 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -1116,6 +1116,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1292,6 +1294,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1326,6 +1331,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 19f4b9d3700..fd46e14c468 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -954,6 +954,8 @@ jobs: GH_AW_WORKFLOW_ID: "code-scanning-fixer" GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_campaigns: ${{ needs.push_repo_memory.outputs.validation_failed_campaigns }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_campaigns: ${{ needs.push_repo_memory.outputs.validation_error_campaigns }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1170,6 +1172,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_campaigns: ${{ steps.push_repo_memory_campaigns.outputs.validation_error }} + validation_failed_campaigns: ${{ steps.push_repo_memory_campaigns.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1204,6 +1209,7 @@ jobs: name: repo-memory-campaigns path: /tmp/gh-aw/repo-memory/campaigns - name: Push repo-memory changes (campaigns) + id: push_repo_memory_campaigns if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index c41bf724c00..d4f150fe865 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1012,6 +1012,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1186,6 +1188,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1220,6 +1225,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index 5f1683ae8dd..8dc3d9cb9f8 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -906,6 +906,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1065,6 +1067,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1099,6 +1104,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index bb1c16c5a39..40a32d2eebd 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -1009,6 +1009,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1168,6 +1170,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1202,6 +1207,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index b3d7f08295f..37a378d3033 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -935,6 +935,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1094,6 +1096,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1128,6 +1133,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 0e6d33d80dd..ba10742d69c 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -1068,6 +1068,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1242,6 +1244,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1276,6 +1281,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index ee592f5f226..896a974aafb 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -1090,6 +1090,8 @@ jobs: GH_AW_WORKFLOW_ID: "daily-cli-performance" GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1251,6 +1253,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1285,6 +1290,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 80d65f97337..9db6b3b7c67 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -1045,6 +1045,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1221,6 +1223,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1255,6 +1260,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 955f4bd55d9..6788f30fa4d 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -1023,6 +1023,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1184,6 +1186,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1218,6 +1223,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index bcd60a824a5..1cde2c11bf9 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1085,6 +1085,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1246,6 +1248,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1280,6 +1285,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index 6b61dd73a38..df09401309e 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -938,6 +938,8 @@ jobs: GH_AW_WORKFLOW_ID: "daily-testify-uber-super-expert" GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1142,6 +1144,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1176,6 +1181,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index b27689369bd..19a65c7d9ec 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -1132,6 +1132,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1285,6 +1287,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1319,6 +1324,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index fae5b5d4a66..4911698514f 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -988,6 +988,8 @@ jobs: GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *User experience analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}" + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1150,6 +1152,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1184,6 +1189,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index c8695fdd011..eec97b6897a 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -954,6 +954,8 @@ jobs: GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Task mining by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊\",\"runFailure\":\"⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}" + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1116,6 +1118,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1150,6 +1155,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 511ba89d969..1dad4d5cac2 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -925,6 +925,8 @@ jobs: GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1146,6 +1148,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1180,6 +1185,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index a874e9b1e79..d0c5c98e037 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -629,6 +629,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -663,6 +666,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index 2248923ee77..91a190185ce 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -956,6 +956,8 @@ jobs: GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"🔍 Starting PR triage analysis... [{workflow_name}]({run_url}) is categorizing and prioritizing agent-created PRs\",\"runSuccess\":\"✅ PR triage complete! [{workflow_name}]({run_url}) has analyzed and categorized PRs. Check the issue for detailed report.\",\"runFailure\":\"❌ PR triage failed! [{workflow_name}]({run_url}) {status}. Some PRs may not be triaged.\"}" + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1116,6 +1118,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1150,6 +1155,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 225dc1b2b88..5f73f111e80 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -913,6 +913,8 @@ jobs: GH_AW_WORKFLOW_ID: "security-compliance" GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1070,6 +1072,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1104,6 +1109,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index 603d686fcea..41d87e10484 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -1026,6 +1026,8 @@ jobs: GH_AW_WORKFLOW_ID: "workflow-health-manager" GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.agent.outputs.secret_verification_result }} GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }} + GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }} with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | @@ -1215,6 +1217,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + outputs: + validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} + validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }} steps: - name: Checkout actions folder uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -1249,6 +1254,7 @@ jobs: name: repo-memory-default path: /tmp/gh-aw/repo-memory/default - name: Push repo-memory changes (default) + id: push_repo_memory_default if: always() uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: From 03ae75cc2743727b2138338f992c771db6e83bf6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 22:01:42 +0000 Subject: [PATCH 13/16] Add allowed-repos restriction to smoke-copilot add-comment Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-copilot.lock.yml | 8 ++++++-- .github/workflows/smoke-copilot.md | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 58169f18287..6c81bd30a3c 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/reporting.md # -# frontmatter-hash: 1d773c2bb30e40025c0c1216fdb5d51d00dfa0505f14af0d63b3f48529cbca64 +# frontmatter-hash: 96530af5b3cc1303c9fd14e372151a6ffdb94f7e5acf7be17e9cfd630abc0875 name: "Smoke Copilot" "on": @@ -363,6 +363,10 @@ jobs: "item_number": { "description": "The issue, pull request, or discussion number to comment on. This is the numeric ID from the GitHub URL (e.g., 123 in github.com/owner/repo/issues/123). If omitted, the tool will attempt to resolve the target from the current workflow context (triggering issue, PR, or discussion).", "type": "number" + }, + "repo": { + "description": "Target repository for this operation in 'owner/repo' format. Must be the target-repo or in the allowed-repos list.", + "type": "string" } }, "required": [ @@ -1910,7 +1914,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 env: GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} - GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"hide_older_comments\":true,\"max\":2},\"add_labels\":{\"allowed\":[\"smoke-copilot\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"group\":true,\"max\":1},\"dispatch_workflow\":{\"max\":1,\"workflow_files\":{\"haiku-printer\":\".yml\"},\"workflows\":[\"haiku-printer\"]},\"missing_data\":{},\"missing_tool\":{},\"remove_labels\":{\"allowed\":[\"smoke\"]}}" + GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"allowed_repos\":[\"github/gh-aw\"],\"hide_older_comments\":true,\"max\":2},\"add_labels\":{\"allowed\":[\"smoke-copilot\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"group\":true,\"max\":1},\"dispatch_workflow\":{\"max\":1,\"workflow_files\":{\"haiku-printer\":\".yml\"},\"workflows\":[\"haiku-printer\"]},\"missing_data\":{},\"missing_tool\":{},\"remove_labels\":{\"allowed\":[\"smoke\"]}}" with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index 8baa843a3bb..a0053878b61 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -47,6 +47,7 @@ sandbox: container: "ghcr.io/github/gh-aw-mcpg" safe-outputs: add-comment: + allowed-repos: ["github/gh-aw"] hide-older-comments: true max: 2 create-issue: From 708b0613eecb1b9dc000a997c76d4b7448adc5c2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Feb 2026 22:08:48 +0000 Subject: [PATCH 14/16] Add changeset [skip-ci] --- .changeset/patch-configure-memory-extensions.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patch-configure-memory-extensions.md diff --git a/.changeset/patch-configure-memory-extensions.md b/.changeset/patch-configure-memory-extensions.md new file mode 100644 index 00000000000..f991752b3f0 --- /dev/null +++ b/.changeset/patch-configure-memory-extensions.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Documented cache-memory and repo-memory now support configuring allowed extensions, expose the defaults, and surface validation failures when invalid files are detected. From 5f067acd914bd1b497204d42897da910b2eed1a6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 23:01:10 +0000 Subject: [PATCH 15/16] Address code review feedback: normalize extensions, error handling, fix template escaping, handle multi-config Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../workflows/agent-persona-explorer.lock.yml | 2 +- .github/workflows/audit-workflows.lock.yml | 2 +- .github/workflows/ci-coach.lock.yml | 2 +- .github/workflows/ci-doctor.lock.yml | 2 +- .../claude-code-user-docs-review.lock.yml | 2 +- .../workflows/cli-version-checker.lock.yml | 2 +- .github/workflows/cloclo.lock.yml | 2 +- .../workflows/code-scanning-fixer.lock.yml | 4 +- .../workflows/copilot-agent-analysis.lock.yml | 2 +- .../copilot-pr-nlp-analysis.lock.yml | 2 +- .../copilot-pr-prompt-analysis.lock.yml | 2 +- .../copilot-session-insights.lock.yml | 2 +- .github/workflows/daily-code-metrics.lock.yml | 2 +- .../workflows/daily-compiler-quality.lock.yml | 2 +- .../daily-copilot-token-report.lock.yml | 2 +- .github/workflows/daily-doc-updater.lock.yml | 2 +- .../workflows/daily-firewall-report.lock.yml | 2 +- .../workflows/daily-issues-report.lock.yml | 2 +- .../daily-mcp-concurrency-analysis.lock.yml | 2 +- .github/workflows/daily-news.lock.yml | 2 +- .../daily-performance-summary.lock.yml | 2 +- .../workflows/daily-repo-chronicle.lock.yml | 2 +- .../daily-safe-output-optimizer.lock.yml | 2 +- .github/workflows/deep-report.lock.yml | 2 +- .../developer-docs-consolidator.lock.yml | 2 +- .github/workflows/firewall-escape.lock.yml | 2 +- .../github-mcp-structural-analysis.lock.yml | 2 +- .../github-mcp-tools-report.lock.yml | 2 +- .../workflows/glossary-maintainer.lock.yml | 2 +- .github/workflows/go-fan.lock.yml | 2 +- .github/workflows/go-logger.lock.yml | 2 +- .github/workflows/gpclean.lock.yml | 2 +- .github/workflows/grumpy-reviewer.lock.yml | 2 +- .../workflows/instructions-janitor.lock.yml | 2 +- .github/workflows/jsweep.lock.yml | 2 +- .github/workflows/lockfile-stats.lock.yml | 2 +- .github/workflows/mcp-inspector.lock.yml | 2 +- .github/workflows/org-health-report.lock.yml | 2 +- .github/workflows/pdf-summary.lock.yml | 2 +- .github/workflows/poem-bot.lock.yml | 2 +- .github/workflows/portfolio-analyst.lock.yml | 2 +- .../workflows/pr-nitpick-reviewer.lock.yml | 2 +- .../prompt-clustering-analysis.lock.yml | 2 +- .github/workflows/python-data-charts.lock.yml | 2 +- .github/workflows/q.lock.yml | 2 +- .../workflows/repo-audit-analyzer.lock.yml | 2 +- .../repository-quality-improver.lock.yml | 2 +- .github/workflows/safe-output-health.lock.yml | 2 +- .../schema-consistency-checker.lock.yml | 2 +- .github/workflows/scout.lock.yml | 2 +- .github/workflows/security-review.lock.yml | 2 +- .github/workflows/sergo.lock.yml | 2 +- .../workflows/slide-deck-maintainer.lock.yml | 2 +- .github/workflows/smoke-claude.lock.yml | 2 +- .github/workflows/smoke-codex.lock.yml | 2 +- .github/workflows/smoke-copilot.lock.yml | 4 +- .github/workflows/smoke-copilot.md | 1 - .../workflows/stale-repo-identifier.lock.yml | 2 +- .../workflows/static-analysis-report.lock.yml | 2 +- .../workflows/step-name-alignment.lock.yml | 2 +- .github/workflows/super-linter.lock.yml | 2 +- .../workflows/technical-doc-writer.lock.yml | 2 +- .../test-create-pr-error-handling.lock.yml | 2 +- .github/workflows/unbloat-docs.lock.yml | 2 +- .../workflows/weekly-issue-summary.lock.yml | 2 +- actions/setup/js/handle_agent_failure.cjs | 12 +++++- actions/setup/js/push_repo_memory.cjs | 13 ++++++- actions/setup/js/validate_memory_files.cjs | 5 ++- pkg/workflow/cache.go | 39 ++++++++++++++++++- pkg/workflow/repo_memory_prompt.go | 38 +++++++++++++++++- 70 files changed, 166 insertions(+), 74 deletions(-) diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index d229ea1ccc3..5d0e5a0a7e1 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -1211,7 +1211,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index bc2b1dd0d2e..9dff4bf1556 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -1444,7 +1444,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 7f523d302eb..685d8d220dc 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -1223,7 +1223,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 1d1bb990ab5..b34124be7a2 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -1346,7 +1346,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index 598469065ca..8dcf1276efa 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -1184,7 +1184,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 8587ddade1d..05e589214e1 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -1206,7 +1206,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index fa5589cf4b0..d10dc0daa17 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -1588,7 +1588,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 6f15911cc4b..b8545ad97e1 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -571,7 +571,7 @@ jobs: - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes - **Merge Strategy**: In case of conflicts, your changes (current version) win - **Persistence**: Files persist across workflow runs via git branch storage - - **Allowed File Types**: Only the following file extensions are allowed: `.json, .jsonl, .txt, .md, .csv`. Files with other extensions will be rejected during validation. + - **Allowed File Types**: Only the following file extensions are allowed: `.json`, `.jsonl`, `.txt`, `.md`, `.csv`. Files with other extensions will be rejected during validation. Examples of what you can store: - `/tmp/gh-aw/repo-memory/notes.md` - general notes and observations @@ -1348,7 +1348,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index a739f773e53..9dabd987672 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1337,7 +1337,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index bf09bd1e3ce..cb4bc680029 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -1319,7 +1319,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 740a97e67d9..664abb744fe 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -1245,7 +1245,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 699c87843d5..9ed7be1bcc5 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -1393,7 +1393,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 855bcc4d1df..959341d5541 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -1373,7 +1373,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index 357499c5a0e..f67068579c2 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -1146,7 +1146,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index de9795b8b5a..568fd9629b3 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -1336,7 +1336,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 207a36c97a2..95d5f75b485 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -1255,7 +1255,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index 35c7e7215ed..d8916b2f477 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -1255,7 +1255,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 9a768a05fa3..5f2718ea8db 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -1287,7 +1287,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index 89dc9935efe..a9274704974 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -1210,7 +1210,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 1f31d71acb9..99623d46e19 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1398,7 +1398,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index d0a2b8cdee1..1db0cd3edef 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -1732,7 +1732,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index 202f113bdd8..ac7813fe681 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -1190,7 +1190,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 7d29c754165..5945081dfe3 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -1335,7 +1335,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index c4929b91535..87f51649a87 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -1437,7 +1437,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 36af9a16e59..a502ec97e8b 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -1326,7 +1326,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 04dec7d4953..7aa848d84b0 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -1297,7 +1297,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index ca421d5aeec..d9f2d827cfb 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -1251,7 +1251,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index f791d88c06a..039e13e5b01 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -1288,7 +1288,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 8a7a126ec6f..39bcf516620 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -1211,7 +1211,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index bf2c86c38c5..ca81bd97ce2 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -1221,7 +1221,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 3e19304fee3..b2571129084 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -1415,7 +1415,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index b704248c163..312a1d7899a 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -1131,7 +1131,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index fdd4d2d6c8b..37846452699 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -1264,7 +1264,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index fe26a9d33da..09cb40bbc79 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -1247,7 +1247,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 25f437b7282..9c20f031ea9 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -1183,7 +1183,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 20ada5cfbc0..7d902b2b0f1 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -1179,7 +1179,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 381ba1a6f6a..46c4a01674e 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -1770,7 +1770,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index 46f917571b7..01b063c2f85 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -1176,7 +1176,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index db5ed2631db..ef49e198a9f 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -1295,7 +1295,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index c259e0b8cf9..6edfee9260b 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1870,7 +1870,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index 6398b2badb6..cce2496c080 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -1266,7 +1266,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index 6c5f4307ab4..6605482e04c 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -1353,7 +1353,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 3ff8dcb48af..85cc36e6a39 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -1310,7 +1310,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index b5120e1f0ad..0f0f3ab3c26 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -1250,7 +1250,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 7414b4bb25c..50ed08d561b 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -1421,7 +1421,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index e4b4ca6bccc..dfda5643c08 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -1129,7 +1129,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-repo-audits', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (repo-audits) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index c318e206c8a..6a541b22a5f 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -1127,7 +1127,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory-focus-areas', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (focus-areas) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 2cdb0e1803f..ed938546ef1 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -1271,7 +1271,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 0185724189d..642afb34844 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -1180,7 +1180,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 56c922e2d06..bc404a8fb9b 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -1399,7 +1399,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index 82dc4701b6a..7ba8d6f45f5 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -1346,7 +1346,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index c57f7c71f0b..7e3834e97a5 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -1220,7 +1220,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 30ac942ff59..6375972f9a6 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -1282,7 +1282,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 170fade6b41..f537eaef5d4 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -2088,7 +2088,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index c393ebebf2d..db0cb743bd4 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -1532,7 +1532,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 712cec0f61c..f1de782af9f 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/reporting.md # -# frontmatter-hash: ba8ac38783175d2491cfa23fdbc191b34f88eb3068c3e9b4c795c4c36094a988 +# frontmatter-hash: 23fb974caf81e30df69d8ee71fb9c8a011690ef75670f3f539f699673640002e name: "Smoke Copilot" "on": @@ -1998,7 +1998,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index a74455b8365..33e1dca4826 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -50,7 +50,6 @@ safe-outputs: allowed-repos: ["github/gh-aw"] hide-older-comments: true max: 2 - allowed-repos: ["github/gh-aw"] create-issue: expires: 2h group: true diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 25eb5e16ed1..d442babe57d 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -1244,7 +1244,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index 03f44f6f8f0..8e1ba397ed7 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -1254,7 +1254,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 7a14b168f2e..30e9a801e3d 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -1208,7 +1208,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index 958a62dea66..4e1d195a12b 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -1189,7 +1189,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 7032fda62af..333d5f67adf 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -1279,7 +1279,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index b40bf244558..019ad0695d8 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -1221,7 +1221,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 619d8827b7f..a2b05977062 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -1495,7 +1495,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 7ceeb4e7fac..36d858dba03 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -1161,7 +1161,7 @@ jobs: const allowedExtensions = [".json",".jsonl",".txt",".md",".csv"]; const result = validateMemoryFiles('/tmp/gh-aw/cache-memory', 'cache', allowedExtensions); if (!result.valid) { - core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); + core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only .json, .jsonl, .txt, .md, .csv are allowed.`); } - name: Save cache-memory to cache (default) uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 diff --git a/actions/setup/js/handle_agent_failure.cjs b/actions/setup/js/handle_agent_failure.cjs index 2fe549ed666..5b2d3f40a4b 100644 --- a/actions/setup/js/handle_agent_failure.cjs +++ b/actions/setup/js/handle_agent_failure.cjs @@ -342,7 +342,7 @@ async function main() { const createDiscussionErrors = process.env.GH_AW_CREATE_DISCUSSION_ERRORS || ""; const createDiscussionErrorCount = process.env.GH_AW_CREATE_DISCUSSION_ERROR_COUNT || "0"; const checkoutPRSuccess = process.env.GH_AW_CHECKOUT_PR_SUCCESS || ""; - + // Collect repo-memory validation errors from all memory configurations const repoMemoryValidationErrors = []; for (const key in process.env) { @@ -477,6 +477,16 @@ async function main() { // Build create_discussion errors context const createDiscussionErrorsContext = hasCreateDiscussionErrors ? buildCreateDiscussionErrorsContext(createDiscussionErrors) : ""; + // Build repo-memory validation errors context + let repoMemoryValidationContext = ""; + if (repoMemoryValidationErrors.length > 0) { + repoMemoryValidationContext = "\n**⚠️ Repo-Memory Validation Failed**: Invalid file types detected in repo-memory.\n\n**Validation Errors:**\n"; + for (const { memoryID, errorMessage } of repoMemoryValidationErrors) { + repoMemoryValidationContext += `- Memory "${memoryID}": ${errorMessage}\n`; + } + repoMemoryValidationContext += "\n"; + } + // Build missing_data context const missingDataContext = buildMissingDataContext(); diff --git a/actions/setup/js/push_repo_memory.cjs b/actions/setup/js/push_repo_memory.cjs index ddd4efa19e0..61417dd6a67 100644 --- a/actions/setup/js/push_repo_memory.cjs +++ b/actions/setup/js/push_repo_memory.cjs @@ -44,7 +44,18 @@ async function main() { const maxFileSize = parseInt(process.env.MAX_FILE_SIZE || "10240", 10); const maxFileCount = parseInt(process.env.MAX_FILE_COUNT || "100", 10); const fileGlobFilter = process.env.FILE_GLOB_FILTER || ""; - const allowedExtensions = process.env.ALLOWED_EXTENSIONS ? JSON.parse(process.env.ALLOWED_EXTENSIONS) : [".json", ".jsonl", ".txt", ".md", ".csv"]; + + // Parse allowed extensions with error handling + let allowedExtensions = [".json", ".jsonl", ".txt", ".md", ".csv"]; + if (process.env.ALLOWED_EXTENSIONS) { + try { + allowedExtensions = JSON.parse(process.env.ALLOWED_EXTENSIONS); + } catch (/** @type {any} */ error) { + core.setFailed(`Failed to parse ALLOWED_EXTENSIONS environment variable: ${error.message}. Expected JSON array format.`); + return; + } + } + const ghToken = process.env.GH_TOKEN; const githubRunId = process.env.GITHUB_RUN_ID || "unknown"; diff --git a/actions/setup/js/validate_memory_files.cjs b/actions/setup/js/validate_memory_files.cjs index 3a36f5fa5b1..fbfcd3b1ba6 100644 --- a/actions/setup/js/validate_memory_files.cjs +++ b/actions/setup/js/validate_memory_files.cjs @@ -15,7 +15,10 @@ const path = require("path"); */ function validateMemoryFiles(memoryDir, memoryType = "cache", allowedExtensions) { // Use default extensions if not provided or if empty array - const extensions = allowedExtensions && allowedExtensions.length > 0 ? allowedExtensions : [".json", ".jsonl", ".txt", ".md", ".csv"]; + const defaultExtensions = [".json", ".jsonl", ".txt", ".md", ".csv"]; + const rawExtensions = allowedExtensions && allowedExtensions.length > 0 ? allowedExtensions : defaultExtensions; + // Normalize extensions to lowercase and trim whitespace + const extensions = rawExtensions.map(ext => ext.trim().toLowerCase()); const invalidFiles = []; // Check if directory exists diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index 9f9d0b29500..2e02097406b 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "os" + "sort" "strings" "github.com/github/gh-aw/pkg/constants" @@ -608,8 +609,42 @@ func buildCacheMemoryPromptSection(config *CacheMemoryConfig) *PromptSection { } } - // Build allowed extensions text (use the first cache's extensions as they should all be the same for the group) + // Build allowed extensions text + // Check if all caches have the same allowed extensions allowedExtsText := strings.Join(config.Caches[0].AllowedExtensions, ", ") + allSame := true + for i := 1; i < len(config.Caches); i++ { + if len(config.Caches[i].AllowedExtensions) != len(config.Caches[0].AllowedExtensions) { + allSame = false + break + } + for j, ext := range config.Caches[i].AllowedExtensions { + if ext != config.Caches[0].AllowedExtensions[j] { + allSame = false + break + } + } + if !allSame { + break + } + } + + // If not all the same, build a union of all extensions + if !allSame { + extensionSet := make(map[string]bool) + for _, cache := range config.Caches { + for _, ext := range cache.AllowedExtensions { + extensionSet[ext] = true + } + } + // Convert set to sorted slice for consistent output + var allExtensions []string + for ext := range extensionSet { + allExtensions = append(allExtensions, ext) + } + sort.Strings(allExtensions) + allowedExtsText = strings.Join(allExtensions, ", ") + } // Build cache examples var cacheExamples strings.Builder @@ -694,7 +729,7 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection fmt.Fprintf(&validationScript, " const allowedExtensions = %s;\n", allowedExtsJSON) fmt.Fprintf(&validationScript, " const result = validateMemoryFiles('%s', 'cache', allowedExtensions);\n", cacheDir) validationScript.WriteString(" if (!result.valid) {\n") - fmt.Fprintf(&validationScript, " core.setFailed(`File type validation failed: Found $${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) + fmt.Fprintf(&validationScript, " core.setFailed(`File type validation failed: Found ${result.invalidFiles.length} file(s) with invalid extensions. Only %s are allowed.`);\n", strings.Join(cache.AllowedExtensions, ", ")) validationScript.WriteString(" }\n") // Generate validation step using helper diff --git a/pkg/workflow/repo_memory_prompt.go b/pkg/workflow/repo_memory_prompt.go index 4dd1f459878..ff4d5385fa6 100644 --- a/pkg/workflow/repo_memory_prompt.go +++ b/pkg/workflow/repo_memory_prompt.go @@ -2,6 +2,7 @@ package workflow import ( "fmt" + "sort" "strings" "github.com/github/gh-aw/pkg/logger" @@ -96,8 +97,41 @@ func generateRepoMemoryPromptSection(yaml *strings.Builder, config *RepoMemoryCo yaml.WriteString(" - **Automatic Push**: Changes are automatically committed and pushed after the workflow completes\n") yaml.WriteString(" - **Merge Strategy**: In case of conflicts, your changes (current version) win\n") yaml.WriteString(" - **Persistence**: Files persist across workflow runs via git branch storage\n") - // Build allowed extensions text (use first memory's extensions as default) - allowedExtsText := strings.Join(config.Memories[0].AllowedExtensions, ", ") + // Build allowed extensions text - check if all memories have the same extensions + allowedExtsText := strings.Join(config.Memories[0].AllowedExtensions, "`, `") + allSame := true + for i := 1; i < len(config.Memories); i++ { + if len(config.Memories[i].AllowedExtensions) != len(config.Memories[0].AllowedExtensions) { + allSame = false + break + } + for j, ext := range config.Memories[i].AllowedExtensions { + if ext != config.Memories[0].AllowedExtensions[j] { + allSame = false + break + } + } + if !allSame { + break + } + } + + // If not all the same, build a union of all extensions + if !allSame { + extensionSet := make(map[string]bool) + for _, mem := range config.Memories { + for _, ext := range mem.AllowedExtensions { + extensionSet[ext] = true + } + } + // Convert set to sorted slice for consistent output + var allExtensions []string + for ext := range extensionSet { + allExtensions = append(allExtensions, ext) + } + sort.Strings(allExtensions) + allowedExtsText = strings.Join(allExtensions, "`, `") + } fmt.Fprintf(yaml, " - **Allowed File Types**: Only the following file extensions are allowed: `%s`. Files with other extensions will be rejected during validation.\n", allowedExtsText) yaml.WriteString(" \n") yaml.WriteString(" Examples of what you can store:\n") From 6c99ccf0e439a3291a2753178f6d73eff411273b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Feb 2026 23:44:58 +0000 Subject: [PATCH 16/16] Add changeset [skip-ci] --- .changeset/patch-configurable-memory-file-types.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patch-configurable-memory-file-types.md diff --git a/.changeset/patch-configurable-memory-file-types.md b/.changeset/patch-configurable-memory-file-types.md new file mode 100644 index 00000000000..7e11d491ceb --- /dev/null +++ b/.changeset/patch-configurable-memory-file-types.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Add configurable allowed extensions for cache-memory and repo-memory along with validation failure reporting