From 535a7a486c11d824eafd3314692d3e43d74bff75 Mon Sep 17 00:00:00 2001 From: Danny Kim Date: Wed, 23 Sep 2026 20:23:40 +0000 Subject: [PATCH] Fix the packaged prompt path (#15) Resolve the packaged prompt from the repository root after TypeScript moved into `src/`. Adds a regression test that verifies every module-relative runtime asset exists. Root suite: 38 passed. Reviewed-on: https://git.capsulizers.com/commons/bot-agents/pulls/15 Co-authored-by: Danny Kim Co-committed-by: Danny Kim --- src/run.ts | 2 +- src/workflow_test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/run.ts b/src/run.ts index 6b36639..846f104 100644 --- a/src/run.ts +++ b/src/run.ts @@ -152,7 +152,7 @@ async function renderPrompt( ANCHORS_PATH: anchorsPath, }; const template = await Deno.readTextFile( - new URL("prompt.md", import.meta.url), + new URL("../prompt.md", import.meta.url), ); return { prompt: template.replace( diff --git a/src/workflow_test.ts b/src/workflow_test.ts index 1e7dc58..28a4e51 100644 --- a/src/workflow_test.ts +++ b/src/workflow_test.ts @@ -106,6 +106,18 @@ Deno.test("the source protection script stages immutable action files", async () } }); +Deno.test("module-relative runtime assets exist", async () => { + const module = new URL("run.ts", import.meta.url); + const source = await Deno.readTextFile(module); + for ( + const match of source.matchAll(/new URL\("([^"]+)", import\.meta\.url\)/g) + ) { + const asset = new URL(match[1], module); + const stat = await Deno.stat(asset); + assert(stat.isFile, asset.pathname); + } +}); + Deno.test("the repository uses its trusted main action", async () => { const workflow = await yaml(".gitea/workflows/agents.yml"); const job = mapping(mapping(workflow.jobs, "jobs").agent, "jobs.agent");