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 1699f126c8..34ada08905 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 0000000000..46e182cbf6
--- /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 0000000000..7a857ec0a9
--- /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 d70803547b..3ae3f6cf21 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 692a1bca7f..5b1b25f73d 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 dfaba014dd..31cb24fa1f 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 9d09c679d9..d17e1d12e6 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 caf806f9ba..42aebab4e0 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 bc41cbe760..f8f22ae25b 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 d688fd4fc6..574b5eaad3 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 6572d6fbc4..43e2e84449 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 779c19eb16..e282a41ddf 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 0f132ed126..53011ebf3b 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 940e98ddbc..f02dfb955e 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 75f1a7b38b..b0b79de313 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 1c9a190537..8e03c05ef9 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 f46480b5e8..70f3506e72 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 86d53717a6..eec4fc5956 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 b445a3fa8c..e9731b17bd 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 c8ee0ff790..8a34fada03 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 5f68890df8..8bd59d8d67 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 412c7bf437..cd82dfa08d 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 d40c416b30..5843a79dc5 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 2fdc504376..bbc74a20a4 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 7a5d033d0b..b1de6a1c9d 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 402fb4a561..11758625e6 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 67bb0c6230..85e3f7f911 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 31cb9747d9..7d81ed966a 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 66e74c26d8..4c6bb250e9 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 ff6bbd988e..026c6244e2 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 6b0bcf5826..51007e4da1 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 1748f10d50..b8870b440f 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 2e6b500582..637926f1ac 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 0f41efbcc8..1ac37113d0 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 a454a6c24f..5d94f36745 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 f9f3ea431d..b7ff90ff48 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 f2e2633f40..db9ee30c68 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 40237c8321..ffd964a2c6 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 931dad3fef..c5f4993115 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 dd2004404b..e8fe375734 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 36bf0cf993..436d4a814c 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 fe88a1d5c8..b1cee01ad1 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 5221dda903..b64064070d 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 dcdd92f133..757b3c7109 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 0732af59d1..5a8e083390 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 e527775439..d81884e60f 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 d9403212aa..f033ecf31c 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 2c316593aa..4bc1594a7d 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 9a74a76828..ed288b4678 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 ef3764687c..9ed8ac2a63 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 9750e4de90..94b561e802 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 d188cc62bf..a59b7040c8 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 b97c3c2463..59d12f83d7 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 25e1d20178..96006b96b4 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 09c655b3ed..7b7f08c7e1 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 4a063566f7..3afb1f0ca0 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 c64c6a4815..c4db3f4a00 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 73af4bb27c..dfb15dbdfc 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 42e847ffbb..f6b018aac3 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 422cdff0ce..5fd871d3b2 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 2053c63aeb..ebc72658f9 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 07ad446b09..e0359f53ee 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 317a5fc842..49380cae72 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 98f4c9d0b2..2bd6ab4372 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 cbc986f9c4..110cc07e0f 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 5e9861148f..51f544dac5 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 b39cccd2de..57b25eb6ef 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 a95f838f28..f2af0163ce 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 e020db3310..28189466f8 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 a88c92bae3..2211a71abd 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 d0cd2782b3..ff985d17ed 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 6144d56062..00df89a198 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 da5fdd49cd..108dd00b13 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 7a9893ad04..1e07b32bf4 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 8fba6de082..99d331fdb9 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 5b4faf95e1..3e7f04d7c1 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 0bdce70eef..d1227babc2 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 fe4b185d8d..cb8b57db03 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 0d520dea13..72f2d99adf 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 241c5b06c7..262d6fb151 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 744c2ffea4..4aaf4031fb 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 c1cbbf41b6..8772464074 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 42aebab4e0..25ce606b29 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 f8f22ae25b..8e72988f36 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 574b5eaad3..41fa302f0e 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 43e2e84449..6a9783660c 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 e282a41ddf..8a69935ce3 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 53011ebf3b..7ef3a68bde 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 f02dfb955e..f2db6570b9 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 b0b79de313..94fea40c5c 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 8e03c05ef9..79d1951393 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 70f3506e72..9fe734259c 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 eec4fc5956..639d267cb4 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 e9731b17bd..5f1683ae8d 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 8a34fada03..27a45e553e 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 8bd59d8d67..0f116e2940 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 cd82dfa08d..e2ead078b3 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 5843a79dc5..ee592f5f22 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 bbc74a20a4..195869b951 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 b1de6a1c9d..c0b589c407 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 11758625e6..43113d7f50 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 85e3f7f911..82f796dace 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 7d81ed966a..f078fb3872 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 4c6bb250e9..1d411c9202 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 026c6244e2..3c35ad53a2 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 51007e4da1..59cf6c7cff 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 b8870b440f..77a039404f 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 637926f1ac..d3d462433e 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 1ac37113d0..74b507a530 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 5d94f36745..6b61dd73a3 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 b7ff90ff48..de2b5dc6eb 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 db9ee30c68..fae5b5d4a6 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 ffd964a2c6..971db00407 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 c5f4993115..c8695fdd01 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 e8fe375734..3145ccfe29 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 436d4a814c..4b74653770 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 b1cee01ad1..e286017f35 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 b64064070d..adaf4763ee 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 757b3c7109..20c5a8cccd 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 5a8e083390..bd5ca66dfc 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 d81884e60f..bde603dbce 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 f033ecf31c..3e1dfcbb55 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 4bc1594a7d..a8486791bb 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 ed288b4678..0f60b26885 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 9ed8ac2a63..3c8f9d9e09 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 94b561e802..6eec001b14 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 a59b7040c8..a874e9b1e7 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 59d12f83d7..c9ecd0b65e 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 96006b96b4..0676d6ee5e 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 7b7f08c7e1..00e7585392 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 3afb1f0ca0..ba28c2dec3 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 c4db3f4a00..0bac30dad9 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 dfb15dbdfc..2248923ee7 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 f6b018aac3..a6cf6ae40c 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 5fd871d3b2..0c44103a15 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 ebc72658f9..9c3eaa5bed 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 e0359f53ee..e1a5ada96c 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 49380cae72..848ea17036 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 2bd6ab4372..ac89f23eb8 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 110cc07e0f..073b9a9ce6 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 51f544dac5..2f26839431 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 57b25eb6ef..225dc1b2b8 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 f2af0163ce..97fa850f66 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 28189466f8..5eb9ce6b29 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 2211a71abd..d4b8bd3089 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 ff985d17ed..973703577c 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 00df89a198..f18c29434c 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 108dd00b13..f00f9fe408 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 1e07b32bf4..4d2635d528 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 99d331fdb9..e2e1fb6a68 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 3e7f04d7c1..11311f27f8 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 d1227babc2..1a7b3755f4 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 cb8b57db03..5ba970f4fb 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 72f2d99adf..f463ff0618 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 262d6fb151..77becc6e1a 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 4aaf4031fb..fdf3b3a195 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 8772464074..603d686fce 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 34ada08905..a1582686cd 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 46e182cbf6..3a36f5fa5b 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 7a857ec0a9..5767a116aa 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 f310d9176e..f8cc9d3003 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 3ae3f6cf21..bc73d68d9f 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 31cb24fa1f..a8cb059515 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 77ed9057ca..c06806def7 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 d17e1d12e6..221918646b 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 8d049e52d5..c675ded7dd 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 6a9783660c..44a8716df6 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 e1a5ada96c..c7a045e03f 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 848ea17036..d019db94fc 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 bc73d68d9f..141fb3b8f8 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 0f1b92f6b4..7451c7bc69 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 4223bc1d2c..c35f646f5a 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 0000000000..13a69935d8
--- /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 27b4d8086c..9509b949be 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 e30b3792e1..5d7b1b0f0e 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 7f56b17529..5d315c83a8 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 7451c7bc69..c07fee7455 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 8e72988f36..855d827b7f 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 41fa302f0e..31f42febbd 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 44a8716df6..377d2c09b1 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 8a69935ce3..97c06be8fd 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 7ef3a68bde..da9ae42057 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 f2db6570b9..c6059c01dd 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 94fea40c5c..a5fec56dd3 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 79d1951393..4fc592911f 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 9fe734259c..19f4b9d370 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 639d267cb4..c41bf724c0 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 27a45e553e..bb1c16c5a3 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 0f116e2940..b3d7f08295 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 e2ead078b3..0e6d33d80d 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 195869b951..80d65f9733 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 c0b589c407..23f67269fb 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 43113d7f50..955f4bd55d 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 82f796dace..3f82e09d20 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 f078fb3872..2f3acb701e 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 1d411c9202..25e1eb1f7a 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 3c35ad53a2..a516ef54e2 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 59cf6c7cff..bcd60a824a 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 77a039404f..6942c50d86 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 d3d462433e..5517e185ee 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 74b507a530..35ae4dc9ca 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 de2b5dc6eb..b27689369b 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 971db00407..bc0781d55b 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 3145ccfe29..511ba89d96 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 4b74653770..fb611528b2 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 e286017f35..f1dc1f6136 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 adaf4763ee..a6fe635871 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 20c5a8cccd..35de8777f8 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 bd5ca66dfc..2d89e895a6 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 bde603dbce..8fcd3622c9 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 3e1dfcbb55..bb7cd26908 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 a8486791bb..8dde0be784 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 0f60b26885..cf8fe6f436 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 3c8f9d9e09..8380373d16 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 6eec001b14..05332c001a 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 c9ecd0b65e..c3905ca697 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 0676d6ee5e..ed4d7d1d25 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 00e7585392..1c7d75896e 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 ba28c2dec3..354feb5758 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 0bac30dad9..1e8b0cb61e 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 a6cf6ae40c..89fb9d84e6 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 0c44103a15..281be73c42 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 9c3eaa5bed..a3b335267d 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 c7a045e03f..7f3468364c 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 d019db94fc..73be6aaf3c 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 ac89f23eb8..291d605aa5 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 073b9a9ce6..b70b3d993a 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 2f26839431..07cabd692e 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 97fa850f66..92a24b9131 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 5eb9ce6b29..cdb2ea4286 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 d4b8bd3089..f35e0cfe7c 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 973703577c..b2093745d9 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 f18c29434c..d60ec9e9e6 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 f00f9fe408..58169f1828 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 4d2635d528..f69e90b001 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 e2e1fb6a68..fa78e22007 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 11311f27f8..2c512392af 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 1a7b3755f4..033d761077 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 5ba970f4fb..eb3dda76d0 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 f463ff0618..27f06e8e1e 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 77becc6e1a..3765bf4ca5 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 fdf3b3a195..aeca07ff53 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 141fb3b8f8..43d5b77cc2 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 221918646b..4dd1f45987 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 649dac6101..f991decbb1 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 43d5b77cc2..9f9d0b2950 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 c06806def7..9dc95df90a 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 9361024157..2fe549ed66 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 a1582686cd..ddd4efa19e 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 7d1089bb6f..93d5c23b54 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 974a957bdc..88a5a84e68 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 83f75c2c76..99faeb77a6 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 9dc95df90a..ccdb446a62 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 25ce606b29..d234330bc1 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 31f42febbd..8a5f03cdf5 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 19f4b9d370..fd46e14c46 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 c41bf724c0..d4f150fe86 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 5f1683ae8d..8dc3d9cb9f 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 bb1c16c5a3..40a32d2eeb 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 b3d7f08295..37a378d303 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 0e6d33d80d..ba10742d69 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 ee592f5f22..896a974aaf 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 80d65f9733..9db6b3b7c6 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 955f4bd55d..6788f30fa4 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 bcd60a824a..1cde2c11bf 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 6b61dd73a3..df09401309 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 b27689369b..19a65c7d9e 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 fae5b5d4a6..4911698514 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 c8695fdd01..eec97b6897 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 511ba89d96..1dad4d5cac 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 a874e9b1e7..d0c5c98e03 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 2248923ee7..91a190185c 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 225dc1b2b8..5f73f111e8 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 603d686fce..41d87e1048 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 58169f1828..6c81bd30a3 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 8baa843a3b..a0053878b6 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 0000000000..f991752b3f
--- /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 d229ea1ccc..5d0e5a0a7e 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 bc2b1dd0d2..9dff4bf155 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 7f523d302e..685d8d220d 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 1d1bb990ab..b34124be7a 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 598469065c..8dcf1276ef 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 8587ddade1..05e589214e 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 fa5589cf4b..d10dc0daa1 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 6f15911cc4..b8545ad97e 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 a739f773e5..9dabd98767 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 bf09bd1e3c..cb4bc68002 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 740a97e67d..664abb744f 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 699c87843d..9ed7be1bcc 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 855bcc4d1d..959341d554 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 357499c5a0..f67068579c 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 de9795b8b5..568fd9629b 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 207a36c97a..95d5f75b48 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 35c7e7215e..d8916b2f47 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 9a768a05fa..5f2718ea8d 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 89dc9935ef..a927470497 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 1f31d71acb..99623d46e1 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 d0a2b8cdee..1db0cd3ede 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 202f113bdd..ac7813fe68 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 7d29c75416..5945081dfe 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 c4929b9153..87f51649a8 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 36af9a16e5..a502ec97e8 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 04dec7d495..7aa848d84b 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 ca421d5aee..d9f2d827cf 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 f791d88c06..039e13e5b0 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 8a7a126ec6..39bcf51662 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 bf2c86c38c..ca81bd97ce 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 3e19304fee..b257112908 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 b704248c16..312a1d7899 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 fdd4d2d6c8..3784645269 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 fe26a9d33d..09cb40bbc7 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 25f437b728..9c20f031ea 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 20ada5cfbc..7d902b2b0f 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 381ba1a6f6..46c4a01674 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 46f917571b..01b063c2f8 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 db5ed2631d..ef49e198a9 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 c259e0b8cf..6edfee9260 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 6398b2badb..cce2496c08 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 6c5f4307ab..6605482e04 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 3ff8dcb48a..85cc36e6a3 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 b5120e1f0a..0f0f3ab3c2 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 7414b4bb25..50ed08d561 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 e4b4ca6bcc..dfda5643c0 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 c318e206c8..6a541b22a5 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 2cdb0e1803..ed938546ef 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 0185724189..642afb3484 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 56c922e2d0..bc404a8fb9 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 82dc4701b6..7ba8d6f45f 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 c57f7c71f0..7e3834e97a 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 30ac942ff5..6375972f9a 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 170fade6b4..f537eaef5d 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 c393ebebf2..db0cb743bd 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 712cec0f61..f1de782af9 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 a74455b836..33e1dca482 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 25eb5e16ed..d442babe57 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 03f44f6f8f..8e1ba397ed 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 7a14b168f2..30e9a801e3 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 958a62dea6..4e1d195a12 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 7032fda62a..333d5f67ad 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 b40bf24455..019ad0695d 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 619d8827b7..a2b0597706 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 7ceeb4e7fa..36d858dba0 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 2fe549ed66..5b2d3f40a4 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 ddd4efa19e..61417dd6a6 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 3a36f5fa5b..fbfcd3b1ba 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 9f9d0b2950..2e02097406 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 4dd1f45987..ff4d5385fa 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 0000000000..7e11d491ce
--- /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