@agent-native/recap-cli 0.5.45 → 0.5.46-nightly-20260927023146

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,41 +20,12 @@
20
20
  * best-effort, since persisting MCP config is the primary contract and a failed
21
21
  * canonical write must never fail the connect.
22
22
  */
23
- /**
24
- * Absolute path to the canonical publish-token file. Honors
25
- * `PLAN_PUBLISH_CONFIG_PATH` so connect and the local server agree on the
26
- * location in tests and custom setups; defaults to
27
- * `~/.agent-native/plan-publish.json`.
28
- */
29
23
  export declare function planPublishConfigPath(): string;
30
- /**
31
- * Whether `url`'s host is the first-party Agent-Native Plans app whose token
32
- * we should mirror to the canonical publish file. Only the hosted Plans app
33
- * (`plan.agent-native.com`) qualifies — mirroring tokens for other
34
- * agent-native subdomains (assets, mail, …) would silently overwrite the
35
- * canonical Plans endpoint with the wrong URL+token each time `connect --all`
36
- * runs last-write-wins. A custom self-hosted origin (ngrok, localhost, a
37
- * private deployment) is intentionally excluded: the user can still point the
38
- * server at it via `PLAN_PUBLISH_URL` / `PLAN_PUBLISH_TOKEN` env vars.
39
- */
40
24
  export declare function isFirstPartyPlanHost(url: string): boolean;
41
- /**
42
- * Merge `{ url, token }` into the canonical publish file without clobbering any
43
- * other keys the file already holds. Best-effort: returns the written path on
44
- * success, or `null` if the write failed or the inputs were unusable.
45
- *
46
- * `filePath` is injectable for tests; production callers omit it and get the
47
- * env-overridable home-dir path.
48
- */
49
25
  export declare function writePlanPublishAuth(params: {
50
26
  url: string;
51
27
  token: string;
52
28
  }, filePath?: string): string | null;
53
- /**
54
- * Read the canonical Plans publish auth written by `agent-native connect`.
55
- * Returns `null` for missing/corrupt/incomplete files so callers can treat the
56
- * publish token as optional and guide the user to reconnect.
57
- */
58
29
  export declare function readPlanPublishAuth(filePath?: string): {
59
30
  url: string;
60
31
  token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plan-publish-store.d.ts","sourceRoot":"","sources":["../src/plan-publish-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOzD;AAMD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACtC,QAAQ,GAAE,MAAgC,GACzC,MAAM,GAAG,IAAI,CAmCf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,GAAE,MAAgC,GACzC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBvC"}
1
+ {"version":3,"file":"plan-publish-store.d.ts","sourceRoot":"","sources":["../src/plan-publish-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOzD;AAMD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACtC,QAAQ,GAAE,MAAgC,GACzC,MAAM,GAAG,IAAI,CAmCf;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,GAAE,MAAgC,GACzC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBvC"}
@@ -23,28 +23,11 @@
23
23
  import fs from "node:fs";
24
24
  import os from "node:os";
25
25
  import path from "node:path";
26
- /** Matches the env override read by `templates/plan/server/lib/plan-publish.ts`. */
27
26
  const CONFIG_PATH_ENV = "PLAN_PUBLISH_CONFIG_PATH";
28
- /**
29
- * Absolute path to the canonical publish-token file. Honors
30
- * `PLAN_PUBLISH_CONFIG_PATH` so connect and the local server agree on the
31
- * location in tests and custom setups; defaults to
32
- * `~/.agent-native/plan-publish.json`.
33
- */
34
27
  export function planPublishConfigPath() {
35
28
  return path.resolve(process.env[CONFIG_PATH_ENV] ??
36
29
  path.join(os.homedir(), ".agent-native", "plan-publish.json"));
37
30
  }
38
- /**
39
- * Whether `url`'s host is the first-party Agent-Native Plans app whose token
40
- * we should mirror to the canonical publish file. Only the hosted Plans app
41
- * (`plan.agent-native.com`) qualifies — mirroring tokens for other
42
- * agent-native subdomains (assets, mail, …) would silently overwrite the
43
- * canonical Plans endpoint with the wrong URL+token each time `connect --all`
44
- * runs last-write-wins. A custom self-hosted origin (ngrok, localhost, a
45
- * private deployment) is intentionally excluded: the user can still point the
46
- * server at it via `PLAN_PUBLISH_URL` / `PLAN_PUBLISH_TOKEN` env vars.
47
- */
48
31
  export function isFirstPartyPlanHost(url) {
49
32
  try {
50
33
  const host = new URL(url).hostname.toLowerCase();
@@ -57,14 +40,6 @@ export function isFirstPartyPlanHost(url) {
57
40
  function stripTrailingSlash(url) {
58
41
  return url.replace(/\/+$/, "");
59
42
  }
60
- /**
61
- * Merge `{ url, token }` into the canonical publish file without clobbering any
62
- * other keys the file already holds. Best-effort: returns the written path on
63
- * success, or `null` if the write failed or the inputs were unusable.
64
- *
65
- * `filePath` is injectable for tests; production callers omit it and get the
66
- * env-overridable home-dir path.
67
- */
68
43
  export function writePlanPublishAuth(params, filePath = planPublishConfigPath()) {
69
44
  const url = stripTrailingSlash((params.url ?? "").trim());
70
45
  const token = (params.token ?? "").trim();
@@ -101,11 +76,6 @@ export function writePlanPublishAuth(params, filePath = planPublishConfigPath())
101
76
  return null;
102
77
  }
103
78
  }
104
- /**
105
- * Read the canonical Plans publish auth written by `agent-native connect`.
106
- * Returns `null` for missing/corrupt/incomplete files so callers can treat the
107
- * publish token as optional and guide the user to reconnect.
108
- */
109
79
  export function readPlanPublishAuth(filePath = planPublishConfigPath()) {
110
80
  try {
111
81
  const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
@@ -1 +1 @@
1
- {"version":3,"file":"plan-publish-store.js","sourceRoot":"","sources":["../src/plan-publish-store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Canonical publish-token store for the local Plans server.\n *\n * `agent-native connect <hosted-url>` mints a bearer token and writes it into\n * each coding agent's per-client MCP config (`.mcp.json` / Codex `config.toml`\n * via `mcp-config-writers`). Those files are client-specific, so the local Plans\n * server cannot read them for a server-to-server publish.\n *\n * To close that seam, the connect flow ALSO writes a single canonical record to\n * `~/.agent-native/plan-publish.json` whenever it authenticates a first-party\n * Plans app. The local server's `publish-visual-plan` action reads the exact\n * same file (see `templates/plan/server/lib/plan-publish.ts`):\n *\n * { \"url\": \"https://plan.agent-native.com\", \"token\": \"<bearer>\" }\n *\n * This mirrors the existing device-token precedent in\n * `code-agent-connector.ts` (`~/.agent-native/remote-device.json`): home-dir\n * JSON, env-overridable path, atomic 0600 write. The write is additive — it\n * merges into any existing file rather than clobbering sibling keys — and\n * best-effort, since persisting MCP config is the primary contract and a failed\n * canonical write must never fail the connect.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\n/** Matches the env override read by `templates/plan/server/lib/plan-publish.ts`. */\nconst CONFIG_PATH_ENV = \"PLAN_PUBLISH_CONFIG_PATH\";\n\n/**\n * Absolute path to the canonical publish-token file. Honors\n * `PLAN_PUBLISH_CONFIG_PATH` so connect and the local server agree on the\n * location in tests and custom setups; defaults to\n * `~/.agent-native/plan-publish.json`.\n */\nexport function planPublishConfigPath(): string {\n return path.resolve(\n process.env[CONFIG_PATH_ENV] ??\n path.join(os.homedir(), \".agent-native\", \"plan-publish.json\"),\n );\n}\n\n/**\n * Whether `url`'s host is the first-party Agent-Native Plans app whose token\n * we should mirror to the canonical publish file. Only the hosted Plans app\n * (`plan.agent-native.com`) qualifies — mirroring tokens for other\n * agent-native subdomains (assets, mail, …) would silently overwrite the\n * canonical Plans endpoint with the wrong URL+token each time `connect --all`\n * runs last-write-wins. A custom self-hosted origin (ngrok, localhost, a\n * private deployment) is intentionally excluded: the user can still point the\n * server at it via `PLAN_PUBLISH_URL` / `PLAN_PUBLISH_TOKEN` env vars.\n */\nexport function isFirstPartyPlanHost(url: string): boolean {\n try {\n const host = new URL(url).hostname.toLowerCase();\n return host === \"plan.agent-native.com\";\n } catch {\n return false;\n }\n}\n\nfunction stripTrailingSlash(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\n/**\n * Merge `{ url, token }` into the canonical publish file without clobbering any\n * other keys the file already holds. Best-effort: returns the written path on\n * success, or `null` if the write failed or the inputs were unusable.\n *\n * `filePath` is injectable for tests; production callers omit it and get the\n * env-overridable home-dir path.\n */\nexport function writePlanPublishAuth(\n params: { url: string; token: string },\n filePath: string = planPublishConfigPath(),\n): string | null {\n const url = stripTrailingSlash((params.url ?? \"\").trim());\n const token = (params.token ?? \"\").trim();\n if (!url || !token) return null;\n\n try {\n let existing: Record<string, unknown> = {};\n try {\n const raw = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as unknown;\n if (raw && typeof raw === \"object\" && !Array.isArray(raw)) {\n existing = raw as Record<string, unknown>;\n }\n } catch {\n // No existing file (or unreadable/corrupt) — start fresh.\n }\n\n const merged = {\n ...existing,\n url,\n token,\n updatedAt: new Date().toISOString(),\n };\n\n fs.mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o700 });\n const tmp = `${filePath}.tmp`;\n fs.writeFileSync(tmp, JSON.stringify(merged, null, 2) + \"\\n\", {\n mode: 0o600,\n });\n fs.renameSync(tmp, filePath);\n return filePath;\n } catch {\n // Best-effort: the per-client MCP config is the primary write. A failed\n // canonical write must never fail the connect flow.\n return null;\n }\n}\n\n/**\n * Read the canonical Plans publish auth written by `agent-native connect`.\n * Returns `null` for missing/corrupt/incomplete files so callers can treat the\n * publish token as optional and guide the user to reconnect.\n */\nexport function readPlanPublishAuth(\n filePath: string = planPublishConfigPath(),\n): { url: string; token: string } | null {\n try {\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as unknown;\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return null;\n }\n const record = parsed as Record<string, unknown>;\n const urlValue = record.url ?? record.baseUrl ?? record.hostedUrl;\n const tokenValue = record.token ?? record.accessToken ?? record.bearerToken;\n const url = typeof urlValue === \"string\" ? urlValue.trim() : \"\";\n const token = typeof tokenValue === \"string\" ? tokenValue.trim() : \"\";\n if (!url || !token) return null;\n return { url: stripTrailingSlash(url), token };\n } catch {\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"plan-publish-store.js","sourceRoot":"","sources":["../src/plan-publish-store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Canonical publish-token store for the local Plans server.\n *\n * `agent-native connect <hosted-url>` mints a bearer token and writes it into\n * each coding agent's per-client MCP config (`.mcp.json` / Codex `config.toml`\n * via `mcp-config-writers`). Those files are client-specific, so the local Plans\n * server cannot read them for a server-to-server publish.\n *\n * To close that seam, the connect flow ALSO writes a single canonical record to\n * `~/.agent-native/plan-publish.json` whenever it authenticates a first-party\n * Plans app. The local server's `publish-visual-plan` action reads the exact\n * same file (see `templates/plan/server/lib/plan-publish.ts`):\n *\n * { \"url\": \"https://plan.agent-native.com\", \"token\": \"<bearer>\" }\n *\n * This mirrors the existing device-token precedent in\n * `code-agent-connector.ts` (`~/.agent-native/remote-device.json`): home-dir\n * JSON, env-overridable path, atomic 0600 write. The write is additive — it\n * merges into any existing file rather than clobbering sibling keys — and\n * best-effort, since persisting MCP config is the primary contract and a failed\n * canonical write must never fail the connect.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nconst CONFIG_PATH_ENV = \"PLAN_PUBLISH_CONFIG_PATH\";\n\nexport function planPublishConfigPath(): string {\n return path.resolve(\n process.env[CONFIG_PATH_ENV] ??\n path.join(os.homedir(), \".agent-native\", \"plan-publish.json\"),\n );\n}\n\nexport function isFirstPartyPlanHost(url: string): boolean {\n try {\n const host = new URL(url).hostname.toLowerCase();\n return host === \"plan.agent-native.com\";\n } catch {\n return false;\n }\n}\n\nfunction stripTrailingSlash(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\nexport function writePlanPublishAuth(\n params: { url: string; token: string },\n filePath: string = planPublishConfigPath(),\n): string | null {\n const url = stripTrailingSlash((params.url ?? \"\").trim());\n const token = (params.token ?? \"\").trim();\n if (!url || !token) return null;\n\n try {\n let existing: Record<string, unknown> = {};\n try {\n const raw = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as unknown;\n if (raw && typeof raw === \"object\" && !Array.isArray(raw)) {\n existing = raw as Record<string, unknown>;\n }\n } catch {\n // No existing file (or unreadable/corrupt) — start fresh.\n }\n\n const merged = {\n ...existing,\n url,\n token,\n updatedAt: new Date().toISOString(),\n };\n\n fs.mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o700 });\n const tmp = `${filePath}.tmp`;\n fs.writeFileSync(tmp, JSON.stringify(merged, null, 2) + \"\\n\", {\n mode: 0o600,\n });\n fs.renameSync(tmp, filePath);\n return filePath;\n } catch {\n // Best-effort: the per-client MCP config is the primary write. A failed\n // canonical write must never fail the connect flow.\n return null;\n }\n}\n\nexport function readPlanPublishAuth(\n filePath: string = planPublishConfigPath(),\n): { url: string; token: string } | null {\n try {\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as unknown;\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return null;\n }\n const record = parsed as Record<string, unknown>;\n const urlValue = record.url ?? record.baseUrl ?? record.hostedUrl;\n const tokenValue = record.token ?? record.accessToken ?? record.bearerToken;\n const url = typeof urlValue === \"string\" ? urlValue.trim() : \"\";\n const token = typeof tokenValue === \"string\" ? tokenValue.trim() : \"\";\n if (!url || !token) return null;\n return { url: stripTrailingSlash(url), token };\n } catch {\n return null;\n }\n}\n"]}
@@ -1,3 +1,2 @@
1
- /** Canonical PR Visual Recap workflow bundled by the CLI installer. */
2
1
  export declare const PR_VISUAL_RECAP_WORKFLOW_YML: string;
3
2
  //# sourceMappingURL=pr-visual-recap-workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-visual-recap-workflow.d.ts","sourceRoot":"","sources":["../src/pr-visual-recap-workflow.ts"],"names":[],"mappings":"AAUA,uEAAuE;AACvE,eAAO,MAAM,4BAA4B,QAAqC,CAAC"}
1
+ {"version":3,"file":"pr-visual-recap-workflow.d.ts","sourceRoot":"","sources":["../src/pr-visual-recap-workflow.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,4BAA4B,QAAqC,CAAC"}
@@ -5,6 +5,5 @@ const moduleDir = path.dirname(fileURLToPath(import.meta.url));
5
5
  const workflowPath = path.basename(moduleDir) === "dist"
6
6
  ? path.join(moduleDir, "workflows", "pr-visual-recap.yml")
7
7
  : path.resolve(moduleDir, "../../../.github/workflows/pr-visual-recap.yml");
8
- /** Canonical PR Visual Recap workflow bundled by the CLI installer. */
9
8
  export const PR_VISUAL_RECAP_WORKFLOW_YML = readFileSync(workflowPath, "utf8");
10
9
  //# sourceMappingURL=pr-visual-recap-workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-visual-recap-workflow.js","sourceRoot":"","sources":["../src/pr-visual-recap-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,MAAM;IACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,qBAAqB,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gDAAgD,CAAC,CAAC;AAEhF,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url));\nconst workflowPath =\n path.basename(moduleDir) === \"dist\"\n ? path.join(moduleDir, \"workflows\", \"pr-visual-recap.yml\")\n : path.resolve(moduleDir, \"../../../.github/workflows/pr-visual-recap.yml\");\n\n/** Canonical PR Visual Recap workflow bundled by the CLI installer. */\nexport const PR_VISUAL_RECAP_WORKFLOW_YML = readFileSync(workflowPath, \"utf8\");\n"]}
1
+ {"version":3,"file":"pr-visual-recap-workflow.js","sourceRoot":"","sources":["../src/pr-visual-recap-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,MAAM;IACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,qBAAqB,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gDAAgD,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url));\nconst workflowPath =\n path.basename(moduleDir) === \"dist\"\n ? path.join(moduleDir, \"workflows\", \"pr-visual-recap.yml\")\n : path.resolve(moduleDir, \"../../../.github/workflows/pr-visual-recap.yml\");\n\nexport const PR_VISUAL_RECAP_WORKFLOW_YML = readFileSync(workflowPath, \"utf8\");\n"]}
package/dist/recap.d.ts CHANGED
@@ -1,48 +1,4 @@
1
- /**
2
- * `agent-native recap` — the helper surface used by the PR Visual Recap GitHub
3
- * Action. Run `agent-native recap help` for the full subcommand list.
4
- *
5
- * The action no longer generates the recap deterministically. Instead a coding
6
- * agent (Claude Code or Codex) RUNS THE REPO'S visual-recap skill against the
7
- * diff and publishes the plan via the plan MCP tools. These subcommands are the
8
- * thin, deterministic glue around that:
9
- *
10
- * gate The security boundary: decide whether the recap runs at all
11
- * (skipping drafts, forks without secret access, bots, missing
12
- * secrets, an invalid agent/model, and untrusted PRs that touch
13
- * recap-control files) and which normalized backend agent to use.
14
- * collect-diff Collect the bounded base...head diff (excluding lockfiles,
15
- * build output, snapshots), cap it at ~600KB, and classify the
16
- * huge/tiny flags.
17
- * scan Refuse to hand a secret-leaking diff to the agent.
18
- * block-reference
19
- * Fetch the live get-plan-blocks reference for the target app.
20
- * build-prompt Assemble the agent prompt = latest visual-recap skill bundle
21
- * + a task wrapper (or repo-pinned skill with --skill-source).
22
- * publish Publish the agent-authored recap-source.json over HTTP.
23
- * shot Screenshot the published plan and upload it to the plan app's
24
- * signed public image route (for an inline PR-comment image).
25
- * usage Parse and emit agent token-usage/cost from stdout.
26
- * comment Find the previous plan id / upsert the sticky PR comment.
27
- * check Evaluate the recap result and set a GitHub commit status.
28
- * setup Install the PR Visual Recap GitHub Action workflow.
29
- * doctor Diagnose missing secrets / misconfigured workflow.
30
- *
31
- * Promoting these to the published CLI means an installed repo's workflow calls
32
- * `agent-native recap …` instead of copying helper scripts into the repo.
33
- *
34
- * Node built-ins only (plus an optional dynamic `playwright` import for `shot`).
35
- */
36
- /** GitHub secrets the installed PR Visual Recap workflow needs. */
37
1
  export declare const PR_VISUAL_RECAP_SETUP: string[];
38
- /**
39
- * Result of attempting to write the PR Visual Recap workflow.
40
- *
41
- * - `written` — the file was written (new or forced overwrite).
42
- * - `skipped` — the file already exists and is identical; no-op.
43
- * - `refused` — the file already exists and differs; nothing was written.
44
- * Caller should re-run with `--force` (or pass `force: true`) to overwrite.
45
- */
46
2
  export type WriteWorkflowResult = {
47
3
  status: "written";
48
4
  path: string;
@@ -55,23 +11,9 @@ export type WriteWorkflowResult = {
55
11
  path: string;
56
12
  message: string;
57
13
  };
58
- /** Write .github/workflows/pr-visual-recap.yml into a repo. */
59
14
  export declare function writePrVisualRecapWorkflow(baseDir: string, options?: {
60
15
  force?: boolean;
61
16
  }): WriteWorkflowResult;
62
- /**
63
- * The thin caller workflow that consumers paste into their repo when using the
64
- * reusable variant. It references the canonical reusable workflow in the
65
- * BuilderIO/agent-native repo rather than carrying a full copy.
66
- *
67
- * Callers must trigger on the same `pull_request` event types so that
68
- * `github.event.pull_request.*` expressions in the reusable workflow resolve
69
- * correctly (workflow_call inherits the caller's event context). The `labeled`
70
- * event lets required-label configurations run as soon as a maintainer opts in.
71
- *
72
- * @param options.cliVersion Semver or tag to pin (default "main" / latest).
73
- * @param options.ref Git ref to pin the reusable workflow to (default "@main").
74
- */
75
17
  export declare function buildReusableCallerWorkflow(options?: {
76
18
  ref?: string;
77
19
  agent?: RecapAgentValue;
@@ -80,7 +22,6 @@ export declare function buildReusableCallerWorkflow(options?: {
80
22
  gateRunsOn?: string;
81
23
  requiredLabels?: string;
82
24
  }): string;
83
- /** Write the thin caller workflow that references the reusable workflow. */
84
25
  export declare function writePrVisualRecapReusableCallerWorkflow(baseDir: string, options?: {
85
26
  force?: boolean;
86
27
  ref?: string;
@@ -125,9 +66,7 @@ export interface RecapRunsOnConfig {
125
66
  labels: string[];
126
67
  selfHosted: boolean;
127
68
  }
128
- /** Parse the JSON consumed by GitHub Actions `fromJSON(...)` for `runs-on`. */
129
69
  export declare function parseRecapRunsOn(value: string): RecapRunsOnConfig;
130
- /** Validate the plain label used directly by the gate job's `runs-on`. */
131
70
  export declare function parseRecapGateRunsOn(value: string): string;
132
71
  export declare function validateOpenAiCompatibleRecapVariables(input: {
133
72
  baseUrl?: string;
@@ -146,19 +85,7 @@ export declare function buildRecapSetupPlan(input: {
146
85
  export type RecapSecretScanMode = "off" | "high-confidence" | "strict";
147
86
  export declare function normalizeRecapSecretScanMode(value: string | undefined): RecapSecretScanMode;
148
87
  export declare function lineLooksSecret(line: string, mode?: RecapSecretScanMode): boolean;
149
- /**
150
- * Parse a `.github/recap-scan-allowlist` file into a list of matchers.
151
- * Each non-blank, non-comment line is either:
152
- * - a `/regex/` literal (JS regex syntax) — matched against the full line
153
- * - a plain literal string — checked with String.includes()
154
- *
155
- * Returns an empty array when the file is absent or empty.
156
- */
157
88
  export declare function parseRecapScanAllowlist(allowlistPath: string): Array<RegExp | string>;
158
- /**
159
- * Return true when `line` matches ANY entry in the allowlist (i.e., the
160
- * finding should be ignored).
161
- */
162
89
  export declare function lineMatchesAllowlist(line: string, allowlist: Array<RegExp | string>): boolean;
163
90
  export declare function diffContainsSecret(diffText: string, allowlist?: Array<RegExp | string>, mode?: RecapSecretScanMode): boolean;
164
91
  export declare function sanitizeAgentFailureSummary(value: string, maxChars?: number): string;
@@ -173,21 +100,8 @@ export declare function summarizeLocalAgentFailure(input?: {
173
100
  cwd?: string;
174
101
  agent?: string;
175
102
  }): string;
176
- /** ~600KB byte cap for the diff handed to the recap agent. */
177
103
  export declare const RECAP_DIFF_BYTE_CAP = 614400;
178
- /** The footer appended when a diff is truncated at the byte cap. */
179
104
  export declare const RECAP_DIFF_TRUNCATED_FOOTER = "\n\n[diff truncated at 600KB for the recap agent]\n";
180
- /**
181
- * Classify a bounded diff into the `huge` / `tiny` flags the workflow consumes.
182
- *
183
- * - huge: BYTES over the ~600KB cap. The agent is told to summarize AND the
184
- * diff file is physically truncated so it can't overflow the prompt budget.
185
- * - tiny: <= 1 changed file AND <= 8 changed lines. Uses ORIGINAL line count
186
- * (captured before any truncation) so a large diff is never misclassified as
187
- * tiny after the byte cap drops most of its lines.
188
- *
189
- * Pure (no I/O) so the classification can be unit-tested without invoking git.
190
- */
191
105
  export declare function classifyDiff(input: {
192
106
  bytes: number;
193
107
  changed: number;
@@ -196,37 +110,9 @@ export declare function classifyDiff(input: {
196
110
  huge: boolean;
197
111
  tiny: boolean;
198
112
  };
199
- /**
200
- * Reorder a unified diff's per-file segments so likely-noise paths (paths whose
201
- * first component starts with `.`, e.g. `.changeset/`, `.github/`) sort LAST,
202
- * and all other paths keep their original git order. This ensures that when
203
- * `truncateDiffAtLineBoundary` drops the tail to stay under the byte cap, source
204
- * files survive and dotfile dirs are sacrificed instead.
205
- *
206
- * Pure (string in → string out) for unit testing. The initial preamble (lines
207
- * before the first `diff --git` header) is preserved unchanged.
208
- */
209
113
  export declare function sortDiffSourceFirst(text: string): string;
210
- /**
211
- * Truncate a diff to the ~600KB byte cap at a COMPLETE LINE boundary, then
212
- * append the truncated footer. Dropping the last (possibly-partial) line is the
213
- * equivalent of the original `head -c 614400 | sed '$d'`: it guarantees the cap
214
- * never cuts a multi-byte UTF-8 char or a diff line mid-way and corrupts the
215
- * agent's input. Pure (string in, string out) so it can be unit-tested.
216
- */
217
114
  export declare function truncateDiffAtLineBoundary(text: string): string;
218
- /**
219
- * Count lines that begin with `+` or `-` (added/removed diff lines), excluding
220
- * the `+++ b/file` / `--- a/file` unified-diff header lines. Without this
221
- * exclusion a single-file change loses ~2 "real" lines from the 8-line tiny
222
- * threshold, incorrectly classifying a small-but-meaningful change as tiny.
223
- */
224
115
  export declare function countDiffLines(diffText: string): number;
225
- /**
226
- * Locate the repo's visual-recap SKILL.md, preferring the host-agent install
227
- * locations so a user's `agent-native skills add` copy wins, then falling back
228
- * to the framework's own source locations.
229
- */
230
116
  export declare function readRepoSkillMd(cwd?: string): {
231
117
  text: string;
232
118
  source: string;
@@ -249,8 +135,6 @@ export declare function buildRecapPrompt(input: {
249
135
  huge?: boolean;
250
136
  localFiles?: boolean;
251
137
  localDir?: string;
252
- /** Fully-qualified PR URL to store on the plan as the back-link. When
253
- * `repo` is supplied this is auto-derived; pass explicitly to override. */
254
138
  sourceUrl?: string;
255
139
  /**
256
140
  * When true, the diff originates from a fork PR — an external contributor's
@@ -260,15 +144,7 @@ export declare function buildRecapPrompt(input: {
260
144
  * attacker-controlled input to an LLM that holds a publish token.
261
145
  */
262
146
  forkPr?: boolean;
263
- /**
264
- * Byte size of the (possibly truncated) diff file — used to emit a
265
- * consumption instruction so the agent knows how large the file is and reads
266
- * it in full before authoring. When omitted, no size instruction is emitted.
267
- */
268
147
  diffBytes?: number;
269
- /**
270
- * Line count of the (possibly truncated) diff — same purpose as diffBytes.
271
- */
272
148
  diffLines?: number;
273
149
  }): string;
274
150
  type RecapScreenshotTheme = "light" | "dark";
@@ -312,7 +188,6 @@ export declare function upsertComment(input: {
312
188
  repo: string;
313
189
  issue: string;
314
190
  body: string;
315
- /** When true, refresh an existing comment but never create a new one. */
316
191
  updateOnly?: boolean;
317
192
  /** @internal test seam — defaults to global fetch */
318
193
  fetchFn?: typeof fetch;
@@ -322,7 +197,6 @@ export declare function upsertComment(input: {
322
197
  html_url?: string;
323
198
  }>;
324
199
  export declare function withRecapImageCacheKey(imageUrl: string, cacheKey: string | undefined | null): string;
325
- /** Build the sticky comment body from the workflow's environment. */
326
200
  export declare function buildCommentBody(env?: NodeJS.ProcessEnv): string;
327
201
  export declare class RecapPublishHttpError extends Error {
328
202
  readonly status: number;
@@ -380,24 +254,12 @@ export declare function publishRecapSource(input: {
380
254
  url: string;
381
255
  out: string;
382
256
  }>;
383
- /**
384
- * Confirm GitHub can fetch the uploaded image anonymously before we embed it.
385
- *
386
- * Default budget: 8 attempts with capped exponential backoff (1s, 2s, 3s, …
387
- * capped at 4s) → ~20s total. This is enough to survive a cold-start CDN
388
- * propagation delay that would otherwise cause `uploadRecapImage` to return a
389
- * URL that the GitHub PR comment can't display.
390
- *
391
- * The `attempts` and `delayMs` overrides remain for unit tests and for callers
392
- * that need a tighter or looser budget.
393
- */
394
257
  export declare function waitForPublicRecapImage(input: {
395
258
  imageUrl: string;
396
259
  attempts?: number;
397
260
  delayMs?: number;
398
261
  fetchFn?: typeof fetch;
399
262
  }): Promise<boolean>;
400
- /** Upload a PNG to the plan app's signed public image route; returns its URL. */
401
263
  export declare function uploadRecapImage(input: {
402
264
  appUrl: string;
403
265
  token: string;
@@ -418,11 +280,6 @@ export declare function withRecapScreenshotParams(url: string, options?: {
418
280
  export declare function runShot(args: Record<string, string | boolean>,
419
281
  /** @internal test seam — defaults to dynamic playwright import */
420
282
  importPlaywright?: () => Promise<PlaywrightModule>): Promise<void>;
421
- /**
422
- * Minimal shape of the `pull_request` object from a GitHub `pull_request` event
423
- * payload that the gate inspects. Everything is optional so a malformed/partial
424
- * payload degrades to "skip" rather than throwing.
425
- */
426
283
  export interface RecapGatePullRequest {
427
284
  number?: number;
428
285
  draft?: boolean;
@@ -441,58 +298,28 @@ export interface RecapGatePullRequest {
441
298
  } | null> | null;
442
299
  }
443
300
  export interface RecapGateInput {
444
- /** The `pull_request` payload object, or null when absent. */
445
301
  pr: RecapGatePullRequest | null;
446
- /** GITHUB_REPOSITORY ("owner/name"). */
447
302
  repository: string | undefined;
448
- /** Whether the base repository is private. */
449
303
  repositoryPrivate?: boolean;
450
- /** PLAN_RECAP_TOKEN present. */
451
304
  hasPlan: boolean;
452
- /** ANTHROPIC_API_KEY present. */
453
305
  hasAnthropic: boolean;
454
- /** OPENAI_API_KEY present. */
455
306
  hasOpenai: boolean;
456
- /** VISUAL_RECAP_API_KEY present for OpenAI-compatible backends. */
457
307
  hasOpenaiCompatible?: boolean;
458
- /** Raw VISUAL_RECAP_AGENT value (may be undefined / mis-cased). */
459
308
  agentRaw: string | undefined;
460
- /** Raw VISUAL_RECAP_MODEL value (may be undefined). */
461
309
  model: string | undefined;
462
- /** Raw VISUAL_RECAP_BASE_URL value for OpenAI-compatible backends. */
463
310
  baseUrl?: string;
464
- /** Raw VISUAL_RECAP_SKILL_SOURCE value (auto/latest/repo; may be undefined). */
465
311
  skillSource: string | undefined;
466
- /** Comma-separated PR labels required before the recap runs. */
467
312
  requiredLabels?: string;
468
- /** Filenames changed by the PR (for the self-modifying guard). */
469
313
  changedFiles: string[];
470
314
  }
471
315
  export declare function isRecapSensitivePath(p: string, options?: {
472
316
  skillSource?: string;
473
317
  }): boolean;
474
- /**
475
- * The pure gate decision: given the PR payload, secret-presence flags, the
476
- * configured backend/model, and the PR's changed files, decide whether the
477
- * visual recap should run, which (normalized) agent to use, and — when skipped —
478
- * the human-readable reasons. This is the security boundary; it replicates the
479
- * inline github-script gate bit-for-bit. No I/O so it can be unit-tested.
480
- */
481
318
  export declare function evaluateRecapGate(input: RecapGateInput): {
482
319
  run: boolean;
483
320
  agent: string;
484
321
  reasons: string[];
485
322
  };
486
- /**
487
- * Canonicalize the agent-written plan URL into a trusted recap URL, or "".
488
- *
489
- * recap-url.txt is produced by the (LLM) agent, so the raw URL is untrusted.
490
- * This rebuilds a canonical `${origin}${base}/recaps/<id>` link from the TRUSTED
491
- * app URL plus a strictly-validated plan id, enforcing the app origin and
492
- * honoring a path-prefixed mount (e.g. https://host/agent-native). Returns ""
493
- * for a wrong origin or an unrecognized path. Pure so it can be unit-tested —
494
- * SAME impl as the workflow's previous inline `canonicalRecapUrl`.
495
- */
496
323
  export declare function canonicalRecapUrl(rawUrl: string, appUrl: string): string;
497
324
  export declare function inferLocalRecapUrlFailureReason(input?: {
498
325
  cwd?: string;
@@ -502,30 +329,18 @@ export declare function buildRecapFailureDiagnostic(input: {
502
329
  failureSummary?: string;
503
330
  urlReason?: string;
504
331
  }): string;
505
- /** The signals that decide the completed "Visual Recap" check's conclusion. */
506
332
  export interface RecapCheckOutcomeInput {
507
- /** steps.url.outputs.ok — the agent published a plan whose origin validated. */
508
333
  planOk: boolean;
509
- /** steps.url.outputs.plan_url — the (untrusted) agent-written plan URL. */
510
334
  planUrl: string;
511
- /** PLAN_RECAP_APP_URL — the trusted plan app origin/base. */
512
335
  appUrl: string;
513
- /** steps.diff.outputs.huge — the diff exceeded the byte cap (summarized). */
514
336
  huge: boolean;
515
- /** steps.diff.outputs.tiny — the diff was too small to recap. */
516
337
  tiny: boolean;
517
- /** steps.scan.outputs.suppressed — a secret pattern suppressed the recap. */
518
338
  suppressed: boolean;
519
- /** steps.scan.outputs.json — the raw scan JSON (carries the suppress reason). */
520
339
  suppressedJson: string;
521
- /** Sanitized final agent output when no valid plan URL was produced. */
522
340
  failureSummary?: string;
523
- /** Explanation from the URL-reading step when recap-url.txt was absent/bad. */
524
341
  urlReason?: string;
525
- /** The Actions run URL, used as the default details_url. */
526
342
  workflowUrl: string;
527
343
  }
528
- /** The completed-check fields PATCHed to the GitHub check run. */
529
344
  export interface RecapCheckOutcome {
530
345
  conclusion: "neutral" | "success" | "skipped";
531
346
  title: string;
@@ -533,18 +348,6 @@ export interface RecapCheckOutcome {
533
348
  text: string;
534
349
  detailsUrl: string;
535
350
  }
536
- /**
537
- * Map the workflow's terminal recap state to the completed check's
538
- * conclusion/title/summary/text/details_url. Pure so it can be unit-tested —
539
- * reproduces the workflow's previous inline branch logic EXACTLY:
540
- *
541
- * - default → neutral "Visual recap not generated"
542
- * - planOk + valid recapUrl → success "Visual recap ready" (huge → "summarized"
543
- * summary), Open-recap link as text, details_url = recapUrl
544
- * - planOk + invalid url → neutral "Visual recap published" (see the comment)
545
- * - else tiny → skipped "Visual recap skipped"
546
- * - else suppressed → skipped "Visual recap suppressed" (reason from scan JSON)
547
- */
548
351
  export declare function recapCheckOutcome(input: RecapCheckOutcomeInput): RecapCheckOutcome;
549
352
  interface ParsedUsage {
550
353
  inputTokens: number;
@@ -554,27 +357,8 @@ interface ParsedUsage {
554
357
  model?: string;
555
358
  reportedCostUsd?: number;
556
359
  }
557
- /**
558
- * Claude Code `-p --output-format json` prints one final result object with a
559
- * `usage` block and `total_cost_usd`. Anthropic's `input_tokens` EXCLUDES cache
560
- * tokens, so the cache counts are added back: `inputTokens` reports the whole
561
- * prompt, with the cache counts a slice of it. That is the one convention
562
- * `calculateCost` and the engine `usage` event share.
563
- */
564
360
  export declare function parseClaudeUsage(stdout: string): ParsedUsage | null;
565
- /**
566
- * Codex `exec --json` reports `input_tokens` INCLUSIVE of `cached_input_tokens`
567
- * (OpenAI counts cached as a subset of prompt tokens), which is already the
568
- * convention `calculateCost` and the engine `usage` event share — so input
569
- * passes through untouched and `calculateCost` subtracts to price each token
570
- * once. This used to strip the cached tokens out here instead, back when
571
- * pricing added the cache counts on top; doing both now bills them twice.
572
- *
573
- * `reasoning_output_tokens` is still folded into output — it is billed at the
574
- * output rate and would otherwise be dropped.
575
- */
576
361
  export declare function parseCodexUsage(jsonl: string): ParsedUsage | null;
577
- /** Parse the usage sidecar emitted by an Agent-Native Code run. */
578
362
  export declare function parseOpenAiCompatibleUsage(json: string): ParsedUsage | null;
579
363
  export declare function runRecap(argv: string[]): Promise<void>;
580
364
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../src/recap.ts"],"names":[],"mappings":"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"}