@counterfact-labs/cli 0.2.4 → 0.2.5

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.
Files changed (146) hide show
  1. package/README.md +7 -1
  2. package/bundle/client-release.json +1 -1
  3. package/dist/adapters/anthropic.js +11 -2
  4. package/dist/adapters/completion.js +3 -0
  5. package/dist/adapters/durable-write.js +9 -2
  6. package/dist/adapters/files.js +25 -13
  7. package/dist/adapters/git-ignore.js +28 -14
  8. package/dist/adapters/git.js +1 -1
  9. package/dist/adapters/gitignore-output.js +41 -0
  10. package/dist/adapters/models.js +1 -6
  11. package/dist/adapters/output-paths.js +5 -2
  12. package/dist/adapters/public-instructions.js +1 -1
  13. package/dist/adapters/relay-plan.js +2 -5
  14. package/dist/adapters/release.js +2 -1
  15. package/dist/adapters/repository-files.js +164 -4
  16. package/dist/adapters/repository-root.js +18 -2
  17. package/dist/adapters/results.js +8 -4
  18. package/dist/adapters/settings.js +26 -1
  19. package/dist/adapters/snapshot.js +86 -15
  20. package/dist/analysis-core/analysis/finding-audience-switch.js +1 -0
  21. package/dist/analysis-core/analysis/schemas.js +1 -1
  22. package/dist/analysis-core/analysis/source-notes/types.js +1 -1
  23. package/dist/analysis-core/chunks/377MLK4M.js +21 -0
  24. package/dist/analysis-core/chunks/{D6AWHLRI.js → 3JWEFCTJ.js} +1 -1
  25. package/dist/analysis-core/chunks/{3227KXHF.js → 4H23CSUM.js} +1 -1
  26. package/dist/analysis-core/chunks/5DGPLXYB.js +1 -0
  27. package/dist/analysis-core/chunks/5TATKWLG.js +1 -0
  28. package/dist/analysis-core/chunks/{EH3QQ3T4.js → 6B2HILSY.js} +1 -1
  29. package/dist/analysis-core/chunks/6QY5BV5B.js +14 -0
  30. package/dist/analysis-core/chunks/6U2IR4XB.js +1 -0
  31. package/dist/analysis-core/chunks/A7WJJMRY.js +1 -0
  32. package/dist/analysis-core/chunks/C6X5GDG4.js +1 -0
  33. package/dist/analysis-core/chunks/DLPVYWHZ.js +1 -0
  34. package/dist/analysis-core/chunks/DZZBQDGO.js +1 -0
  35. package/dist/analysis-core/chunks/F3R4J3ND.js +1 -0
  36. package/dist/analysis-core/chunks/FOKDE64Y.js +1 -0
  37. package/dist/analysis-core/chunks/K2GNDX3W.js +1 -0
  38. package/dist/analysis-core/chunks/KTNA2KTN.js +7 -0
  39. package/dist/analysis-core/chunks/KWECQJ6X.js +1 -0
  40. package/dist/analysis-core/chunks/{SL27GMEN.js → M6HYSTQD.js} +1 -1
  41. package/dist/analysis-core/chunks/{ZAA44GPI.js → N7U5N42V.js} +1 -1
  42. package/dist/analysis-core/chunks/NIOS7U6C.js +41 -0
  43. package/dist/analysis-core/chunks/{QMIXCT62.js → OPMA32A6.js} +1 -1
  44. package/dist/analysis-core/chunks/PECX3OXB.js +1 -0
  45. package/dist/analysis-core/chunks/QFY6A3MS.js +66 -0
  46. package/dist/analysis-core/chunks/SKVEBOGA.js +1 -0
  47. package/dist/analysis-core/chunks/{T66VDFXF.js → STI4JE7L.js} +1 -1
  48. package/dist/analysis-core/chunks/SVMEWGD3.js +1 -0
  49. package/dist/analysis-core/chunks/X7WZAA7S.js +1 -0
  50. package/dist/analysis-core/chunks/YDBO7P4X.js +1 -0
  51. package/dist/analysis-core/chunks/YUY436SM.js +1 -0
  52. package/dist/analysis-core/chunks/ZTOVBAG7.js +1 -0
  53. package/dist/analysis-core/contracts/file-safety.js +1 -0
  54. package/dist/analysis-core/contracts/relay-analysis.js +1 -0
  55. package/dist/analysis-core/contracts/requests.js +1 -1
  56. package/dist/analysis-core/conventions/analysis-fit.js +1 -1
  57. package/dist/analysis-core/conventions/file-admission.js +1 -1
  58. package/dist/analysis-core/data/finding-types.js +1 -1
  59. package/dist/analysis-core/findings/sites.js +1 -0
  60. package/dist/analysis-core/github/repo-key.js +1 -1
  61. package/dist/analysis-core/import/outside-loader-sources.js +1 -1
  62. package/dist/analysis-core/index.js +3 -3
  63. package/dist/analysis-core/llm/output-limit.js +1 -1
  64. package/dist/analysis-core/llm/types.js +1 -0
  65. package/dist/analysis-core/requests/answer-formats.js +1 -1
  66. package/dist/analysis-core/requests/headline-request.js +1 -1
  67. package/dist/analysis-core/requests/local-plan.js +1 -1
  68. package/dist/analysis-core/requests/registry.js +1 -1
  69. package/dist/analysis-core/requests/template-version.js +1 -1
  70. package/dist/analysis-core/requests/tools.js +1 -1
  71. package/dist/analysis-core/settings.js +1 -1
  72. package/dist/analysis-core/stages/engine-entry.js +1 -0
  73. package/dist/analysis-core/stages/execution-ports.js +1 -0
  74. package/dist/bundle/seal/deserialise.js +9 -1
  75. package/dist/bundle/seal/engine.js +76 -0
  76. package/dist/bundle/seal/freeze.js +9 -0
  77. package/dist/bundle/seal/metadata.js +3 -0
  78. package/dist/bundle/seal/open-engine.js +26 -0
  79. package/dist/bundle/seal/open.js +2 -8
  80. package/dist/cli/commands/analyze.js +36 -4
  81. package/dist/cli/commands/finding.js +9 -3
  82. package/dist/cli/context.js +4 -1
  83. package/dist/cli/finding-display.js +39 -0
  84. package/dist/cli/finding-lookup.js +92 -0
  85. package/dist/cli/finding-settings.js +5 -0
  86. package/dist/cli/fix-requests.js +42 -0
  87. package/dist/cli/intake-payload.js +19 -11
  88. package/dist/cli/main.js +9 -4
  89. package/dist/cli/mcp.js +65 -18
  90. package/dist/cli/relay-check.js +46 -13
  91. package/dist/cli/relay-preparation.js +28 -5
  92. package/dist/cli/result-check.js +68 -0
  93. package/dist/cli/summary.js +10 -3
  94. package/dist/contract/agent-choice.js +15 -0
  95. package/dist/contract/agent-proposal.js +38 -0
  96. package/dist/contract/attestation.js +106 -0
  97. package/dist/contract/cli-refusals.js +3 -0
  98. package/dist/contract/cli-version.js +1 -1
  99. package/dist/contract/console.js +21 -16
  100. package/dist/contract/engine.js +44 -0
  101. package/dist/contract/findings.js +28 -0
  102. package/dist/contract/fix-requests.js +30 -0
  103. package/dist/contract/messages.js +6 -94
  104. package/dist/contract/public-report.js +1 -0
  105. package/dist/contract/runtime-environment.js +12 -1
  106. package/dist/core/analysis/run-to-end.js +7 -52
  107. package/dist/gatekeeper/attestation.js +1 -1
  108. package/dist/gatekeeper/channel-binding.js +15 -0
  109. package/dist/gatekeeper/cli-api.js +12 -2
  110. package/dist/gatekeeper/connection-exchange.js +16 -12
  111. package/dist/gatekeeper/model.js +2 -1
  112. package/dist/gatekeeper/production-attestation.js +23 -17
  113. package/dist/gatekeeper/trust/policy.js +4 -1
  114. package/dist/gatekeeper/trust/schema.js +4 -0
  115. package/dist/transport/kms.js +25 -0
  116. package/package.json +4 -3
  117. package/dist/adapters/quality.js +0 -6
  118. package/dist/adapters/report.js +0 -29
  119. package/dist/analysis-core/analysis/analysis-flags.js +0 -1
  120. package/dist/analysis-core/analysis/finding-quality/config.js +0 -1
  121. package/dist/analysis-core/analysis/finding-quality/policy.js +0 -1
  122. package/dist/analysis-core/analysis/headlines/attachment.js +0 -1
  123. package/dist/analysis-core/analysis/headlines/input.js +0 -1
  124. package/dist/analysis-core/chunks/3CKW5JIF.js +0 -1
  125. package/dist/analysis-core/chunks/6YCABS5T.js +0 -1
  126. package/dist/analysis-core/chunks/7OYIBWX3.js +0 -1
  127. package/dist/analysis-core/chunks/DRGDIIFA.js +0 -1
  128. package/dist/analysis-core/chunks/FTODBFQW.js +0 -1
  129. package/dist/analysis-core/chunks/HPIAEQHE.js +0 -37
  130. package/dist/analysis-core/chunks/IVDDV6CU.js +0 -14
  131. package/dist/analysis-core/chunks/JF4GYMOZ.js +0 -1
  132. package/dist/analysis-core/chunks/K5OTWBTT.js +0 -22
  133. package/dist/analysis-core/chunks/MXXNED6N.js +0 -7
  134. package/dist/analysis-core/chunks/NCWEOJVJ.js +0 -6
  135. package/dist/analysis-core/chunks/O652FQQH.js +0 -1
  136. package/dist/analysis-core/chunks/OFBJNHC6.js +0 -1
  137. package/dist/analysis-core/chunks/QV2EOS7U.js +0 -1
  138. package/dist/analysis-core/chunks/STZOC7LN.js +0 -1
  139. package/dist/analysis-core/chunks/T2SAP7OV.js +0 -60
  140. package/dist/analysis-core/chunks/T5TREZCQ.js +0 -1
  141. package/dist/analysis-core/chunks/TDNTU4TF.js +0 -1
  142. package/dist/analysis-core/chunks/U5HOEVPE.js +0 -1
  143. package/dist/analysis-core/chunks/UEWL3GMQ.js +0 -1
  144. package/dist/analysis-core/chunks/V7BFUTM7.js +0 -1
  145. package/dist/core/analysis/finding-quality/config.js +0 -4
  146. package/dist/core/analysis/structural-run.js +0 -16
@@ -1,10 +1,13 @@
1
1
  import { access, constants, lstat, open, realpath, stat } from "node:fs/promises";
2
2
  import { dirname, join, relative, resolve, sep } from "node:path";
3
- export async function gitRepositoryRoot(git) {
3
+ /** Supplying a folder limits failed lookup fallback to confirmed standalone folders. */
4
+ export async function gitRepositoryRoot(git, standaloneFolder) {
4
5
  try {
5
6
  return (await git(["rev-parse", "--show-toplevel"])).replace(/\n$/, "");
6
7
  }
7
- catch {
8
+ catch (error) {
9
+ if (standaloneFolder !== undefined && await usableCheckoutBoundary(standaloneFolder))
10
+ throw error;
8
11
  return null;
9
12
  }
10
13
  }
@@ -118,3 +121,16 @@ export async function searchBaseMatches(base, repoRoot) {
118
121
  return false;
119
122
  }
120
123
  }
124
+ /** A failed repository proof leaves the selected folder available on its own. */
125
+ export async function analysisReadRoots(folder, repoRoot) {
126
+ const selected = await realpath(resolve(folder));
127
+ if (!(await stat(selected)).isDirectory())
128
+ throw new Error("unavailable");
129
+ const boundary = await searchBoundary(selected);
130
+ return { selected, repository: boundary && await searchBaseMatches(boundary.base, repoRoot) ? boundary : null };
131
+ }
132
+ /** A newly introduced checkout marker revokes a previously admitted target. */
133
+ export async function readTargetMatches(target, expectedBase) {
134
+ const boundary = await searchBoundary(dirname(target));
135
+ return expectedBase === null ? boundary === null : boundary !== null && await searchBaseMatches(boundary.base, expectedBase);
136
+ }
@@ -1,9 +1,13 @@
1
1
  import { formatSummary } from "../cli/summary.js";
2
+ import { ignoreDefaultOutput } from "./gitignore-output.js";
2
3
  import { writeOutputFiles } from "./output-paths.js";
3
- export async function saveLocalResults(folder, report, refusedFiles, outputDir) {
4
+ import { projectPublicReport } from "../contract/public-report.js";
5
+ export async function saveLocalResults(folder, report, refusedFiles, outputDir, options) {
6
+ const publicReport = projectPublicReport(report, refusedFiles);
4
7
  const [findingsPath, summaryPath] = await writeOutputFiles(folder, {
5
- "findings.json": `${JSON.stringify({ ...report, refusedFiles }, null, 2)}\n`,
6
- "summary.md": formatSummary(report),
8
+ "findings.json": `${JSON.stringify(publicReport, null, 2)}\n`,
9
+ "summary.md": formatSummary(publicReport, options),
7
10
  }, outputDir);
8
- return { findingsPath, summaryPath };
11
+ const ignoreAdded = await ignoreDefaultOutput(folder, outputDir, options);
12
+ return { findingsPath, summaryPath, ignoreAdded };
9
13
  }
@@ -1,4 +1,10 @@
1
1
  import { snapshotSettings } from "../analysis-core/settings.js";
2
+ // Local startup and retention checks share this profile; snapshots never fill it implicitly.
3
+ export const importerCoverageDefaults = Object.freeze({
4
+ CF_IMPORT_COVERAGE: "1", CF_IMPORT_LAYOUTS: "1", CF_IMPORT_MANIFEST: "1", CF_IMPORT_SCOPED_SCAN: "1",
5
+ CF_IMPORT_AGENT_PAGES: "1", CF_IMPORT_LEXICAL_FACTS: "1", CF_IMPORT_PROMPT_FIELDS: "1", CF_DISCOVERY_SKILLS: "1",
6
+ CF_IMPORT_SCOPES: "[]",
7
+ });
2
8
  // A run keeps its supplied switches even if the process environment later changes.
3
9
  export function readJobSettings(env = process.env) {
4
10
  return snapshotSettings(env);
@@ -14,7 +20,26 @@ export function newRunSettings(caller, env = process.env) {
14
20
  throw new Error("CF_FINDING_HEADLINES must be 0 or 1.");
15
21
  const outside = caller?.CF_IMPORT_OUTSIDE_LOADERS || env.CF_IMPORT_OUTSIDE_LOADERS || "0";
16
22
  const refuseTooLarge = caller?.CF_REFUSE_TOO_LARGE ?? env.CF_REFUSE_TOO_LARGE ?? "1";
17
- return snapshotSettings({ ...(caller ?? env), CF_FINDING_HEADLINES: choice, CF_IMPORT_OUTSIDE_LOADERS: outside, CF_REFUSE_TOO_LARGE: refuseTooLarge });
23
+ // Inherit operator safety switches when integrations supply only analysis settings.
24
+ const committedOnly = caller?.CF_LOCAL_COMMITTED_ONLY ?? env.CF_LOCAL_COMMITTED_ONLY;
25
+ const gitignoreOutput = caller?.CF_LOCAL_GITIGNORE_OUTPUT ?? env.CF_LOCAL_GITIGNORE_OUTPUT;
26
+ const chooseAgent = caller?.CF_CHOOSE_AGENT ?? env.CF_CHOOSE_AGENT;
27
+ const findingAudience = caller?.CF_FINDING_AUDIENCE ?? env.CF_FINDING_AUDIENCE;
28
+ for (const [name, value] of Object.entries({ CF_LOCAL_COMMITTED_ONLY: committedOnly,
29
+ CF_LOCAL_GITIGNORE_OUTPUT: gitignoreOutput, CF_CHOOSE_AGENT: chooseAgent, CF_FINDING_AUDIENCE: findingAudience })) {
30
+ if (value !== undefined && value !== "0" && value !== "1")
31
+ throw new Error(`${name} must be 0 or 1.`);
32
+ }
33
+ const coverage = caller?.CF_IMPORT_COVERAGE ?? env.CF_IMPORT_COVERAGE ?? importerCoverageDefaults.CF_IMPORT_COVERAGE;
34
+ if (coverage !== "0" && coverage !== "1")
35
+ throw new Error("CF_IMPORT_COVERAGE must be 0 or 1.");
36
+ // Disabling coverage must not introduce feature choices into the earlier importer.
37
+ const importer = coverage === "1" ? Object.fromEntries(Object.entries(importerCoverageDefaults).map(([name, value]) => [name, caller?.[name] || env[name] || value])) : { CF_IMPORT_COVERAGE: coverage };
38
+ return snapshotSettings({ ...(caller ?? env), ...importer, CF_FINDING_HEADLINES: choice, CF_IMPORT_OUTSIDE_LOADERS: outside, CF_REFUSE_TOO_LARGE: refuseTooLarge,
39
+ ...(committedOnly === undefined ? {} : { CF_LOCAL_COMMITTED_ONLY: committedOnly }),
40
+ ...(gitignoreOutput === undefined ? {} : { CF_LOCAL_GITIGNORE_OUTPUT: gitignoreOutput }),
41
+ ...(chooseAgent === undefined ? {} : { CF_CHOOSE_AGENT: chooseAgent }),
42
+ ...(findingAudience === undefined ? {} : { CF_FINDING_AUDIENCE: findingAudience }) });
18
43
  }
19
44
  /** The installed command selects the relay; source-only switches remain on the development runner. */
20
45
  export function readCliSettings(env = process.env, emailSignIn) {
@@ -5,6 +5,11 @@ import { mapLimit } from "../analysis-core/map-limit.js";
5
5
  import { COMMITTED_FILES_MESSAGE } from "../contract/cli-refusals.js";
6
6
  import { gitRepositoryRoot } from "./repository-root.js";
7
7
  import { runGit } from "./git.js";
8
+ const snapshotRepository = async (folder) => `local/${basename(await realpath(resolve(folder)))}`;
9
+ function validateSnapshotPath(path) {
10
+ if (!path || path.includes("\\") || path.startsWith("/") || path.split("/").some(part => !part || part === "." || part === ".."))
11
+ throw new Error();
12
+ }
8
13
  async function snapshotContext(folder, revision = "HEAD", selectionFolder = folder) {
9
14
  const root = await realpath(resolve(folder));
10
15
  const git = (...args) => runGit(root, args, { maxBuffer: 16 * 1024 * 1024, timeout: 10000 });
@@ -15,33 +20,99 @@ async function snapshotContext(folder, revision = "HEAD", selectionFolder = fold
15
20
  const commit = (await git("rev-parse", "--verify", `${revision}^{commit}`)).toString("utf8").trim();
16
21
  if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(commit))
17
22
  throw new Error();
18
- const selection = await realpath(resolve(selectionFolder));
19
- return { repository: `local/${basename(selection)}`, commit, read: async (path, repositoryRelative = false) => {
20
- if (!path || path.includes("\\") || path.startsWith("/") || path.split("/").some(part => !part || part === "." || part === ".."))
21
- throw new Error();
23
+ return { repository: await snapshotRepository(selectionFolder), commit, read: async (path, repositoryRelative = false) => {
24
+ validateSnapshotPath(path);
22
25
  return git("cat-file", "blob", `${commit}:${prefix && !repositoryRelative ? `${prefix}/` : ""}${path}`);
23
26
  } };
24
27
  }
25
- /** Compare captured bytes to Git objects, so upload never rereads a changing working file. */
26
- export async function snapshotProvenance(folder, files, options = {}) {
28
+ const capturedHashes = (files) => Object.entries(files).map(([path, bytes]) => ({ path, hash: createHash("sha256").update(bytes).digest("hex") }));
29
+ export function sameFileHashes(saved, captured) {
30
+ const hashes = new Map(capturedHashes(captured).map(file => [file.path, file.hash]));
31
+ return saved.length > 0 && hashes.size === saved.length && new Set(saved.map(file => file.path)).size === saved.length
32
+ && saved.every(file => hashes.get(file.path) === file.hash.toLowerCase());
33
+ }
34
+ /** One pinned Git commit verifies captures made over several unpaid read batches. */
35
+ export async function createSnapshotVerifier(folder, options = {}) {
36
+ options.signal?.throwIfAborted();
27
37
  try {
28
- const context = await snapshotContext(folder, "HEAD", options.selectionFolder);
29
- if (!Object.keys(files).length)
30
- throw new Error();
31
- const hashes = await mapLimit(Object.entries(files), 4, async ([path, text]) => {
32
- if (!(await context.read(path)).equals(Buffer.from(text)))
33
- throw new Error();
34
- return { path, hash: createHash("sha256").update(text).digest("hex") };
38
+ const root = await realpath(resolve(folder));
39
+ const git = async (...args) => runGit(root, args, {
40
+ maxBuffer: options.maxBytes ?? 16 * 1024 * 1024, timeout: 10000, signal: options.signal,
35
41
  });
36
- return { repository: context.repository, commit: context.commit, files: hashes };
42
+ const found = await gitRepositoryRoot(async (args) => (await git(...args)).toString("utf8"));
43
+ if (found === null)
44
+ throw new Error();
45
+ const top = await realpath(found);
46
+ const prefix = relative(top, root).replaceAll("\\", "/");
47
+ const head = async () => (await git("rev-parse", "--verify", "HEAD^{commit}")).toString("utf8").trim();
48
+ const blob = (path) => {
49
+ validateSnapshotPath(path);
50
+ return git("cat-file", "blob", `${commit}:${path}`);
51
+ };
52
+ const commit = await head();
53
+ if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(commit) || options.expectedCommit !== undefined && commit !== options.expectedCommit)
54
+ throw new Error();
55
+ return { commit, repositoryRoot: top,
56
+ async list() {
57
+ options.signal?.throwIfAborted();
58
+ const paths = (await git("ls-tree", "--full-tree", "-r", "-z", "--name-only", commit)).toString("utf8").split("\0");
59
+ return new Set(paths.filter(Boolean));
60
+ },
61
+ async assertCurrent() {
62
+ options.signal?.throwIfAborted();
63
+ if (await head() !== commit)
64
+ throw new Error(COMMITTED_FILES_MESSAGE);
65
+ },
66
+ async read(path, hash) {
67
+ options.signal?.throwIfAborted();
68
+ const bytes = await blob(path);
69
+ if (createHash("sha256").update(bytes).digest("hex") !== hash)
70
+ throw new Error(COMMITTED_FILES_MESSAGE);
71
+ return bytes;
72
+ },
73
+ async verify(path, bytes) {
74
+ options.signal?.throwIfAborted();
75
+ if (!(await blob(prefix ? `${prefix}/${path}` : path)).equals(Buffer.from(bytes)))
76
+ throw new Error(COMMITTED_FILES_MESSAGE);
77
+ return { path, hash: createHash("sha256").update(bytes).digest("hex") };
78
+ },
79
+ };
37
80
  }
38
81
  catch {
82
+ options.signal?.throwIfAborted();
39
83
  throw new Error(COMMITTED_FILES_MESSAGE);
40
84
  }
41
85
  }
42
- /** Legacy recovery must prove the saved identity and hashes against this checkout, without reading working files. */
86
+ /** Hash captured bytes once; Git only supplies a commit when those exact bytes match HEAD. */
87
+ export async function snapshotProvenance(folder, files, options) {
88
+ const hashes = capturedHashes(files);
89
+ if (!hashes.length)
90
+ throw new Error(COMMITTED_FILES_MESSAGE);
91
+ let repository;
92
+ try {
93
+ repository = await snapshotRepository(options.selectionFolder ?? folder);
94
+ }
95
+ catch {
96
+ throw new Error(COMMITTED_FILES_MESSAGE);
97
+ }
98
+ let commit = null;
99
+ try {
100
+ const context = await snapshotContext(folder, "HEAD", options.selectionFolder);
101
+ const matches = await mapLimit(Object.entries(files), 4, async ([path, bytes]) => (await context.read(path)).equals(Buffer.from(bytes)));
102
+ if (matches.every(Boolean))
103
+ commit = context.commit;
104
+ }
105
+ catch { /* Captured bytes remain valid without a matching Git object. */ }
106
+ if (commit === null && options.committedOnly)
107
+ throw new Error(COMMITTED_FILES_MESSAGE);
108
+ return { repository, commit, files: hashes };
109
+ }
110
+ /** Immutable Git objects keep saved provenance verifiable after folder edits. */
43
111
  export async function matchesSnapshotProvenance(folder, saved) {
44
112
  try {
113
+ // A null-commit record has no immutable objects to check.
114
+ if (saved.commit === null)
115
+ return false;
45
116
  if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/i.test(saved.commit) || !saved.files.length)
46
117
  return false;
47
118
  const context = await snapshotContext(folder, saved.commit);
@@ -0,0 +1 @@
1
+ import{a,b}from"../chunks/A7WJJMRY.js";export{a as findingAudienceEnabled,b as findingAudienceSettings};
@@ -1 +1 @@
1
- import{lb as f,mb as g,nb as h,ob as i,ub as j,vb as k,wb as l,xb as m,yb as n,zb as o}from"../chunks/HPIAEQHE.js";import"../chunks/74FPPPIG.js";import{c as a,d as b,e as c,f as d,g as e}from"../chunks/EH3QQ3T4.js";import"../chunks/JKWTHRUR.js";import"../chunks/FSLWD2PE.js";import"../chunks/JF4GYMOZ.js";import"../chunks/3GUKUEEJ.js";import"../chunks/T5TREZCQ.js";import"../chunks/724WZMYW.js";export{j as MAX_FINDINGS,h as attachFiles,k as cleanFindings,m as cleanFixDelta,g as cleanFragment,d as findingsSchema,e as findingsSchemaFor,n as fingerprintOf,l as fixFingerprintOf,a as inspectFixSchema,i as mergeGraphs,f as normaliseBrand,o as numberLines,b as otherSiteSchema,c as rawFindingSchema};
1
+ import{Fb as g,Gb as h,Hb as i,Ib as j,Pb as k,Rb as l,Sb as m,Tb as n,Ub as o,Vb as p,Wb as q}from"../chunks/NIOS7U6C.js";import"../chunks/74FPPPIG.js";import"../chunks/5TATKWLG.js";import"../chunks/724WZMYW.js";import"../chunks/YUY436SM.js";import"../chunks/C6X5GDG4.js";import{c as b,d as c,e as d,f as e,g as f}from"../chunks/6B2HILSY.js";import"../chunks/JKWTHRUR.js";import"../chunks/SKVEBOGA.js";import"../chunks/3GUKUEEJ.js";import{a}from"../chunks/A7WJJMRY.js";import"../chunks/FSLWD2PE.js";export{l as MAX_FINDINGS,i as attachFiles,m as cleanFindings,o as cleanFixDelta,h as cleanFragment,a as findingAudienceEnabled,e as findingsSchema,f as findingsSchemaFor,p as fingerprintOf,n as fixFingerprintOf,k as groupByAudience,b as inspectFixSchema,j as mergeGraphs,g as normaliseBrand,q as numberLines,c as otherSiteSchema,d as rawFindingSchema};
@@ -1 +1 @@
1
- import{a as c}from"../../chunks/PYKAERZZ.js";import{a,c as b}from"../../chunks/UEWL3GMQ.js";import"../../chunks/FSLWD2PE.js";export{a as SOURCE_ROLES,c as rolesForCategory,b as sourceNotesSchema};
1
+ import{a as c}from"../../chunks/PYKAERZZ.js";import{d as a,e as b}from"../../chunks/KWECQJ6X.js";import"../../chunks/FSLWD2PE.js";export{a as SOURCE_ROLES,c as rolesForCategory,b as sourceNotesSchema};
@@ -0,0 +1,21 @@
1
+ import{c as Oe,e as Ut}from"./ZTOVBAG7.js";import{a as G,b as De,c as Bt,e as zt,f as Wt,g as Dt,h as Gt,i as Ge,j as Kt,k as Jt,m as qt,n as fe}from"./KTNA2KTN.js";import{b as de}from"./2PSNOSJ2.js";import{$ as wt,$a as $t,A as Z,C as dt,G as ut,I as Ie,J as le,Ja as St,K as ht,N as gt,O as ue,R as he,T as Se,Va as Ot,Wa as xt,Xa as Ct,Y as yt,Ya as Be,Z as kt,Za as Mt,_ as bt,a as lt,ab as ze,b as ft,bb as Ft,cb as We,d as Te,db as At,e as q,eb as jt,f as Pe,fb as Et,g as ct,gb as Rt,i as te,ia as vt,ib as Lt,jb as Nt,k as pt,kb as _t,l as ve,lb as Tt,m as ee,n as K,o as Q,p as oe,q as T,qb as It,r as B,ra as R,v as J,w as ne,y as mt}from"./NIOS7U6C.js";import{e as Pt}from"./YUY436SM.js";import{b as X,c as D}from"./C6X5GDG4.js";function Ke(e,t,o){if(!ee(e)||!t.filenameReferences?.length)return o;let r=o.agents.flatMap(s=>s.prompt.kind==="dedicated"?[{path:s.prompt.path}]:[]),i=Mt(t.filenameReferences,r);return{...o,agents:o.agents.map(s=>{if(s.prompt.kind!=="dedicated")return s;let c=s.prompt.path,l=i.filter(u=>u.promptPath===c&&!s.files.some(b=>b.path===u.readerPath)&&R(e,{path:u.readerPath},{purpose:"override",route:"github",root:t.root}).admitted);return l.length?{...s,files:[...s.files,...l.map(u=>({path:u.readerPath,role:"reference",label:"prompt filename reference"}))]}:s})}}function se(e,t,o){return e.filter(r=>t.some(i=>i.includes(o(r))))}function Yt(e,t,o){if(!e.length||o&&!K(o.settings))return;let r;if(o&&!q(o.settings)){let i=Object.keys(o.files).filter(l=>D(l,o.root)!==null&&R(o.settings,{path:l},{purpose:"override",route:"github",root:o.root}).admitted),s=i.filter(l=>lt(D(l,o.root))).sort((l,u)=>ft(D(l,o.root),D(u,o.root)));if(!s.length)return;let c=se(i.filter(l=>!s.includes(l)&&te(l)).sort(),s.map(l=>o.files[l]),l=>D(l,o.root));r=[...s.map(l=>({path:l,role:"reference",label:"developer guidance"})),...c.map(l=>({path:l,role:"reference",label:null}))]}else{if(!t||t.prompt.kind!=="fallback")return;let i=t.prompt.path;if(e.some(s=>s.files.some(c=>c.path===i)))return;r=t.files.map(s=>({...s,role:"reference",label:s.role==="system prompt"?"developer guidance":s.label}))}r=r.filter(i=>!e.some(s=>s.files.some(c=>c.path===i.path))),r.length&&(e[0]={...e[0],files:[...e[0].files,...r],sharedReferencePaths:[...e[0].sharedReferencePaths??[],...r.map(i=>i.path)]})}function yn({prompt:e,link:t}){return{path:t?.callPath??e.path,...t?{line:t.callLine}:{},symbol:e.symbol,promptPath:e.path,promptStart:e.start,...t?.kind==="L4"?{loadedPrompt:!0,...t.callStart!==void 0?{callStart:t.callStart}:{}}:{}}}function Vt(e,t,o){return It(e,t,o)}var xe=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).sort().join("-");function No(e,t,o,r={}){let i=new Map(e.map(s=>[xe(s),s]));return t.flatMap(s=>{let c=Object.hasOwn(o,s)?o[s]:void 0;if(c===void 0||!R(r,{path:s},{purpose:"code-support",route:"github"}).admitted)return[];let l=oe(s,c,Q(s)).toks;return l.flatMap((u,b)=>{if(!B(u))return[];let p=i.get(xe(u.text));if(!p)return[];let v=!1;if(B(l[b-1],"function")||B(l[b-1],"def"))v=T(l[b+1],"(");else if(["const","let","var"].some(m=>B(l[b-1],m))){for(let m=b+1;m<l.length&&m<b+80&&!T(l[m],";");m++)if(T(l[m],"=")){let f=B(l[m+1],"async")?m+2:m+1,y=T(l[f],"(")?J(l,f)+1:f+1;v=B(l[f],"function")||T(l[y],"=")&&T(l[y+1],">");break}}return v?[{name:p,sourcePath:s,sourceLine:u.line}]:[]})})}function Xt(e,t,o,r,i={}){let s=new Set(e.map(xe)),c=p=>R(i,{path:p},{purpose:"code-support",route:"github"}).admitted,l=p=>No(e,[p],o,i).length>0,u=t.filter(p=>c(p)&&l(p)),b=r.filter(p=>c(p)&&s.has(xe(p.split("/").at(-1).replace(/\.[^.]+$/,"")))&&(o[p]===void 0||l(p))).sort();return[...new Set([...u,...b])]}function Ce(e){return ee(e,"CF_IMPORT_MANIFEST")}function ge(e,t){if(!le(e))return null;let o=new Set(t.paths),r=ht(e,t),i=new Set(t.skillPaths),s=new Set(t.referencePaths),c=k=>Object.hasOwn(t.files,k)?Buffer.byteLength(t.files[k]):t.sizes?.get(k),l=t.selected??[...new Set([...t.skillPaths,...Object.keys(t.files).filter(k=>Ie(k,{nested:!0})?.reference)])].filter(k=>Object.hasOwn(t.files,k)).map(k=>({path:k,size:c(k)})),u=[...new Map(l.filter(k=>!s.has(k.path)||i.has(k.path)).map(k=>[k.path,k])).values()],b=new Set(u.map(k=>k.path)),p=u.filter(k=>i.has(k.path)),v=new Set(u.filter(k=>Ie(k.path,{nested:!0})?.reference).map(k=>k.path)),m=p.length,f=Z.conventionImport.skillBytes-u.filter(k=>i.has(k.path)||v.has(k.path)).reduce((k,P)=>k+(c(P.path)??P.size),0),y=ve(e)?Z.codeAgent.importBytes-u.reduce((k,P)=>k+(c(P.path)??P.size),0):1/0,h=new Map(p.map(k=>[k.path,null])),a=(k,P=!1)=>{if(h.has(k))return;let n=c(k),g=v.has(k),w=R(e,{path:k,size:n,text:t.files[k]},{...t.admission,purpose:"skill",route:"github",root:t.root,listing:o,managedFiles:t.files}),x=b.has(k)?0:n,C=w.admitted?n===void 0?"missing":!g&&m>=Z.conventionImport.skillFiles?"allowance":!g&&(n>f||x>y)?"total":null:w.reason;h.set(k,C),!g&&(P||!C)&&m++,!g&&!C&&(f-=n,y-=x)};for(let k of s)a(k,!0);let d=[...new Set(t.skillPaths)].sort().filter(k=>Object.hasOwn(t.files,k)).map(k=>{let P={ownerPath:k,files:[],cycles:[],unresolved:[],refused:[]},n=new Set([k]);for(let g of r.references.filter(w=>w.ownerPath===k)){if(!n.has(g.fromPath))continue;a(g.path);let w=h.get(g.path);if(w){P.refused.push({path:g.path,reason:w});continue}n.add(g.path);let x=P.files.find(C=>C.path===g.path);x||(x={path:g.path,evidence:[],sharedOwners:[]},P.files.push(x)),x.evidence.push(g)}return P.cycles=r.cycles.filter(g=>g.ownerPath===k&&n.has(g.fromPath)),P.unresolved=r.unresolved.filter(g=>g.ownerPath===k&&n.has(g.fromPath)),P.refused=de(P.refused),P}),S=new Map;for(let k of d)for(let P of k.files)S.set(P.path,[...S.get(P.path)??[],k.ownerPath]);for(let k of d)for(let P of k.files)P.sharedOwners=S.get(P.path);return d}var Zt="model call";function Qt(e,t){let o=Vt(e.ownPaths,t,e.toolCall);return{tools:o.tools.map(r=>({tool:r,from:o.from[r.name]})),toolWarnings:o.warnings}}function qe(e=new Map,t){return{left:Math.max(0,Z.codeAgent.importBytes-[...e.values()].reduce((o,r)=>o+r,0)),chosen:new Set([...e.keys()].filter(o=>!t?.has(o))),...t?{replacementBytes:t}:{}}}function _o(e,t){return e.modelId??(!e.documentation&&t.length===1?t[0]:null)}function qn(e,t,o){return To(e,_o(e,t),o)}function To(e,t,o){let{prompt:r,link:i}=e,s=[r.kind==="file"?{role:"system prompt",label:null,path:r.path}:{role:"system prompt",label:r.symbol??`line ${r.span.from}`,path:r.path,span:{from:r.span.from,to:r.span.to},...r.filledAtRunTime?{filledAtRunTime:!0}:{}}];for(let l of e.alsoLoads??[])s.push({role:"system prompt",label:"also loaded",path:l});i&&s.push({role:"code",label:Zt,path:i.callPath}),i?.wrapper&&s.push({role:"code",label:"model wrapper",path:i.wrapper.path}),t&&s.push({role:"code",label:"model setting",path:t.path}),e.shape&&s.push({role:"code",label:"answer shape",path:e.shape.path});let c=new Set;return s.filter(l=>!c.has(l.path)&&!!c.add(l.path)).map(l=>Pe(o,l.path,l.path===r.path&&e.promptSource==="marker")?l:{...l,role:"reference"})}function Un(e,t){let{prompt:o}=e,r=t[o.path]??"";return o.kind==="file"?r:r.split(`
2
+ `).slice(o.span.from-1,o.span.to).join(`
3
+ `)}function Yn(e,t){return t?Object.fromEntries(t.files.filter(o=>e[o.path]!==void 0).map(o=>[o.path,e[o.path]])):e}function Ht(e,t,o){let{files:r,sizes:i,root:s,total:c=qe()}=o,l=[...new Set([...t.ownPaths,...o.guides??[]])],u=[],b=new Set(l);l=l.filter(n=>{let g=R(e,{path:n},{purpose:"override",route:"github"});return g.admitted||u.push({path:n,reason:g.reason}),g.admitted});let p=[...i.keys()].filter(n=>{let g=R(e,{path:n},{purpose:"code-support",route:"github",root:s});return!g.admitted&&!b.has(n)&&u.push({path:n,reason:g.reason}),g.admitted}),v=Object.fromEntries(l.filter(n=>r[n]!==void 0).map(n=>[n,r[n]])),m=Tt(v,p).filter(n=>!l.includes(n)),f=Object.fromEntries([...l,...m].filter(n=>r[n]!==void 0).map(n=>[n,r[n]])),y=Qt({ownPaths:l,toolCall:t.toolCall},f).tools.map(({tool:n})=>n.name),h=new Set(Xt(y,m,r,p,e)),a=Je(e,l,{...o,total:c});for(let n of new Set([...l,...m,...h]))a.take(n,h.has(n)&&!l.includes(n));let{paths:d,skipped:S}=a,k=Object.fromEntries(d.filter(n=>r[n]!==void 0).map(n=>[n,r[n]])),P=Qt(t,k);return{paths:d,skipped:S,refused:de(u,a.refused),...P}}function Je(e,t,{sizes:o,total:r=qe(),pool:i},s=[]){let c=[],l=[],u=[],b=Z.codeAgent.extraBytes,p=0;return{paths:c,skipped:l,refused:u,take:(m,f,y=!1)=>{if(c.includes(m))return!0;let h=o.get(m),a=m===t[0],d=s.includes(m),S=[r,...i?[i]:[]],k=w=>Math.max(0,(h??0)-(w.replacementBytes?.get(m)??0)),P=d?"override":t.includes(m)||y?"pointer":"code-support",n=R(e,{path:m,size:h},{purpose:P,route:"github"});n.admitted||u.push({path:m,reason:n.reason});let g=h===void 0?"missing":n.admitted?!d&&!a&&h>b?"allowance":!d&&S.some(w=>!w.chosen.has(m)&&(k(w)>w.left||w.wholeBytesLeft!==void 0&&h>w.wholeBytesLeft))?"total":f&&p>=Z.codeAgent.toolCodeFiles?"tool-limit":null:n.reason;if(g)return l.push({path:m,reason:g}),!1;!a&&!d&&(b-=h),f&&p++;for(let w of S)w.chosen.has(m)||(w.left-=k(w),w.wholeBytesLeft!==void 0&&(w.wholeBytesLeft-=h),w.chosen.add(m));return c.push(m),!0}}}function eo(e,t,o){if(!Ce(e)&&!(ee(e)&&t.some(d=>d.fileProfile==="layout")))return null;let r=o.scopes??qt(e,[...o.sizes.keys()],o.root??void 0,{},o.agentConfigurations??{}),i=o.total??qe(),s=new Set(o.confirmationIds),c=o.selectedIds&&new Set(o.selectedIds),l=t.filter(d=>!c||c.has(d.id));for(let d of l)for(let{path:S}of d.ownFiles.filter(k=>d.fileProfile==="convention"||d.sharedReferencePaths?.includes(k.path))){let k=o.sizes.get(S),P=d.scopeProof?.paths.includes(S)?void 0:o.root;k===void 0||i.chosen.has(S)||!R(e,{path:S},{purpose:"override",route:"github",root:P}).admitted||(i.left-=Math.max(0,k-(i.replacementBytes?.get(S)??0)),i.wholeBytesLeft!==void 0&&(i.wholeBytesLeft-=k),i.chosen.add(S))}let u=(d,S)=>{for(let k of d){let P=k.ownFiles[0]?.path;if(!P)continue;let n=r.ownerOf(P);!n||n.key!==k.scope.key||n.folder!==k.scope.folder||!R(e,{path:P},{purpose:"pointer",route:"github",root:o.root}).admitted||Je(e,[P],{...o,total:S,pool:void 0}).take(P,!1)}};u(l,i);let b,p=new Set,v=new Set(o.sizes.keys()),m=Ft(v).flatMap(d=>o.files[d]===void 0?[]:We(d,o.files[d],v,{root:o.root??void 0})),f=new Map(m.map(d=>[d,d.to&&o.files[d.to]!==void 0?At(d.to,o.files[d.to],d.imported,v,e):[]])),y=new Set(m.filter(d=>{let S=d.to&&Q(d.to),k=d.to&&o.files[d.to];return S&&k!==void 0&&k!==null&&!ze(oe(d.to,k,S),d.imported)})),h=t.map(d=>{let S=[...new Set(d.ownFiles.map($=>$.path))],k=new Set(d.fileProfile==="layout"?d.ownFiles.filter($=>$.role==="tools").map($=>$.path):[]),P={schemaVersion:1,agentId:d.id,scope:{...d.scope},files:[],edges:[],unresolved:[],refused:[]};if(c&&!c.has(d.id))return P;s.has(d.id)&&!b&&(b={left:Z.candidateFetch.check,chosen:new Set(p)},u(l.filter($=>s.has($.id)),b));let n=Je(e,S,{...o,total:i,pool:s.has(d.id)?b:void 0},d.fileProfile==="convention"?S:d.sharedReferencePaths),g=new Set(d.skillManifests?.flatMap($=>$.files.map(O=>O.path))),w=d.ownFiles.filter($=>$.role!=="reference"||!g.has($.path)||d.independentReferences?.includes($.path)).map($=>({path:$.path,symbol:null,role:$.role,evidence:null,span:$.span})),x=m.filter($=>$.to!==null&&S.includes($.to)),C=x.filter($=>new Set(x.filter(O=>O.to===$.to).map(O=>O.imported)).size>1),A=m.filter($=>!y.has($)&&(x.includes($)&&!d.toolCall&&!C.includes($)||f.get($).some(O=>{if(O.kind!=="graph-node"||!O.to||!S.includes(O.to)||!d.toolCall||d.toolCall.path!==O.to)return!1;let z=o.files[O.to];return z!==void 0&&jt(O.to,z,O.imported,d.toolCall)})));P.unresolved.push(...x.filter($=>!A.includes($)).map($=>({...$,reason:y.has($)?"missing":"unlinked"})));for(let $ of A)w.push({path:$.from,symbol:$.symbol,role:"config",evidence:$,explicit:!0});let M=new Set,E=new Map,j=new Set,N=new Set;for(let $=0;$<w.length;$++){let O=w[$],z=JSON.stringify([O.path,O.symbol,O.role]);if(M.has(z)){let F=P.files.find(L=>L.path===O.path);F&&O.span&&!F.spans.some(L=>L.from===O.span.from&&L.to===O.span.to)&&(F.spans.push(O.span),F.evidence.push({kind:"entry",from:O.path,to:O.path,span:O.span})),F&&O.evidence?.kind==="skill-reference"&&!F.evidence.some(L=>JSON.stringify(L)===JSON.stringify(O.evidence))&&F.evidence.push(O.evidence);continue}M.add(z);let _=r.ownerOf(O.path),ie=S.includes(O.path)&&d.scopeProof?.paths.includes(O.path),ce=R(e,{path:O.path},{purpose:S.includes(O.path)||O.explicit?"pointer":"code-support",route:"github",root:ie?void 0:o.root}),Ne=O.role==="reference"&&S.includes(O.path)&&(d.sharedReferencePaths?.includes(O.path)||d.skillManifests?.some(F=>P.files.some(L=>L.path===F.ownerPath)&&F.files.some(L=>L.path===O.path)&&!F.refused.some(L=>L.path===O.path))),it=ce.admitted?!ie&&(!_||!Ne&&(_.key!==d.scope.key||_.folder!==d.scope.folder))?"out-of-scope":!S.includes(O.path)&&t.some(F=>F.id!==d.id&&F.ownFiles.some((L,Y)=>L.path===O.path&&(Y===0||L.label===Zt)))?"other-agent":null:ce.reason;if(it){P.refused.push({path:O.path,reason:it});continue}let ae=o.files[O.path],_e=Q(O.path),pe=ae!==void 0&&_e?oe(O.path,ae,_e):null,me=pe&&O.symbol?ze(pe,O.symbol):null,H=me?.name??O.symbol;if(ae!==void 0&&!E.has(O.path)){let F=m.filter(I=>I.from===O.path),L=[...F.length?F:We(O.path,ae,v,{root:d.scope.folder,call:d.toolCall}),...[...N].filter(I=>I.to===O.path).flatMap(I=>f.get(I))];L.forEach(I=>j.add(I));let Y=$t(O.path,ae,v,S.includes(O.path)?d.toolCall:void 0,e).flatMap(I=>L.some(V=>!V.reason&&V.kind===I.kind&&V.symbol===I.symbol&&V.span.from===I.span.from)?[]:A.some(V=>V.to===O.path)&&!S.includes(O.path)&&(I.kind==="config"||I.kind==="graph-node")&&!I.reason?[{...I,reason:"unlinked"}]:[I]);E.set(O.path,[...Y,...L,...(o.links??[]).filter(I=>I.from===O.path)])}let at=E.get(O.path)??[];if(O.role==="code"&&O.evidence?.kind==="import"&&at.some(F=>F.reason==="external"&&F.usage==="call"&&(F.within===H||F.within===null)&&mt(F.source,_e))){P.refused.push({path:O.path,reason:"provider-transport"});continue}let Ro=k.has(O.path)||O.role==="tool"&&me?.params!=null&&!S.includes(O.path);if(!n.take(O.path,Ro,O.explicit))continue;P.unresolved.push(...m.filter(F=>F.from===O.path&&(F.reason||y.has(F))).map(F=>y.has(F)?{...F,reason:"missing"}:F));let U=P.files.find(F=>F.path===O.path);U||(U={path:O.path,roles:[],spans:[],evidence:[],sharedOwners:[]},P.files.push(U)),U.roles.includes(O.role)||U.roles.push(O.role);let we=O.span??(pe&&me?{from:pe.toks[me.from].line,to:pe.toks[me.to-1].endLine}:void 0);we&&!U.spans.some(F=>F.from===we.from&&F.to===we.to)&&U.spans.push(we),O.evidence?U.evidence.push(O.evidence):U.evidence.push({kind:"entry",from:O.path,to:O.path,...O.span?{span:O.span}:{}});for(let F of d.skillManifests??[])if(P.files.some(L=>L.path===F.ownerPath))for(let L of F.files)for(let Y of L.evidence)Y.fromPath===O.path&&w.push({path:L.path,symbol:null,role:"reference",explicit:!0,evidence:{kind:"skill-reference",from:Y.fromPath,to:L.path,span:Y.span}});if(ae!==void 0)for(let F of at){let L=F.usage==="reexport"&&(F.symbol===H||F.symbol==="*"),Y=F.usage==="call"&&F.within===H;if(!(F.kind!=="import"&&(H===null||F.within===H)||H!==null&&(L||Y)||F.reason==="dynamic"&&(H===null||F.within===H)))continue;if(!F.to||F.reason){P.unresolved.push(F);continue}let V=A.includes(F);V&&(N.add(F),E.delete(F.to)),P.edges.push(F);let Lo=F.kind==="tool-registration"?"tool":F.kind==="config"?"config":F.kind==="graph-node"?"workflow":L?O.role:"code";w.push({path:F.to,symbol:V?null:F.imported==="*"?O.symbol:F.imported,role:Lo,evidence:F,explicit:j.has(F)})}}if(P.refused.push(...de(n.skipped,n.refused)),P.unresolved=P.unresolved.filter($=>$.reason!=="unlinked"||!P.edges.some(O=>O.from===$.from&&O.to===$.to&&O.kind===$.kind&&O.symbol===$.symbol&&O.span.from===$.span.from)),P.unresolved=[...new Map(P.unresolved.map($=>[JSON.stringify($),$])).values()],P.refused=P.refused.filter(($,O,z)=>z.findIndex(_=>_.path===$.path&&_.reason===$.reason)===O),!s.has(d.id))for(let $ of P.files)p.add($.path);return P}),a=new Map;for(let d of h)for(let S of d.files)a.set(S.path,[...a.get(S.path)??[],d.agentId]);for(let d of h)for(let S of d.files)S.sharedOwners=[...new Set(a.get(S.path))].sort();return h}function Ue(e,t){return["[","{"].some(o=>T(e.source.toks[t.from],o))&&J(e.source.toks,t.from)===t.to?{...t,to:t.to+1}:e.calls.find(o=>o.from===t.from&&o.to===t.to+1&&T(e.source.toks[t.to],")"))??t}function W(e,t,o=new Set){let{toks:r}=e.source;if(t.to!==t.from+1||!B(r[t.from])||["True","False","None"].includes(r[t.from].text))return t;let i=e.binding(r[t.from].text,t.from);return!i||i.append||!e.bindingIsCertain(i,t.from)||o.has(i.at)||e.functions.some(s=>s.from<t.from&&t.from<s.to&&s.params?.includes(i.name))?null:W(e,Ue(e,i),new Set([...o,i.at]))}import{posix as to}from"node:path";function oo(e,t,o,r,i){let{source:{path:s,toks:c}}=e,l=[],u=[],b=[],p=[],v=(h,a)=>p.push({path:h,reason:a}),m=(h,a,d,S=null)=>({path:a,role:h,label:S,...d?{span:d}:{}}),f=(h,a)=>{let d=e.importBinding(h,a),S=t.filter(g=>g.name===h&&g.from<a&&(g.params!==null||g.kind==="class")&&(!e.owner(g.from)||e.owner(g.from)===e.owner(a)));if(!d)return S.length===1?{path:s,span:{from:c[S[0].from].line,to:c[S[0].to-1].endLine}}:null;let k=d.module.source,P=i.length===1?to.dirname(to.dirname(i[0])):"",n=Ot(k.startsWith(".")?s:`${P?`${P}/`:""}__root__.py`,k.startsWith(".")?k:`.${k}`,[d.name],"py",r);return n?{path:n}:null},y=o&&W(e,o);if(y&&T(c[y.from],"[")&&J(c,y.from)===y.to-1)for(let h of ne(c,y.from)){let a=h.to===h.from+1&&B(c[h.from])&&!e.binding(c[h.from].text,h.from)?h:W(e,h);if(!a||!B(c[a.from])){v(s,"dynamic");continue}let d=c[a.from].text;if(!(a.to===a.from+1||T(c[a.from+1],"(")&&J(c,a.from+1)===a.to-1)){v(s,"dynamic");continue}if(e.functions.some(P=>P.from<a.from&&a.from<P.to&&P.params?.includes(d))){v(s,"dynamic");continue}if(!e.importBinding(d,a.from)&&!t.some(P=>P.name===d&&(P.params!==null||P.kind==="class")&&P.from<a.from)){v(s,"dynamic");continue}l.push(d);let k=f(d,a.from);k&&(b.push(m("tools",k.path,k.span,d)),u.push(k.path))}else o&&v(s,"dynamic");return{names:l,files:b,proofPaths:u,refused:p}}function no(e,t,o,r,i,s){let c=t.source,{path:l,toks:u}=c,{files:b,paths:p,frameworks:v,defaultsByPath:m}=s,f={prompt:{kind:"none"},files:[]},y=[],h,a=(n,g)=>y.push({path:n,reason:g}),d=(n,g,w,x=null)=>({path:g,role:n,label:x,...w?{span:w}:{}});m.has(l)||m.set(l,Ge(l,c.text,p));let S=m.get(l),k=n=>{f.layoutProof??={kind:"outside-loader",paths:[]},f.layoutProof.paths.push(n);let g=b[n];if(g===void 0){f.files.push(d("template",n)),a(n,"missing");return}let w=Gt(g,e);if(w.unresolved.length||!w.fields.some(x=>x.key==="system_prompt"&&x.value!==null)){a(n,"invalid");return}for(let x of w.fields.filter(C=>C.value!==null))f.files.push(d(x.key==="system_prompt"?"system prompt":"template",n,x.span,x.key)),x.key==="system_prompt"&&(f.prompt={kind:"entry",path:n,span:x.span,text:x.value})},P=o.get("prompt_templates")??o.get("system_prompt");if(P){let n=W(t,P),g=n&&ue(c,n);if(g&&o.has("system_prompt"))f.prompt={kind:"entry",path:l,span:g.span,text:u[n.from].value},h={path:l,start:g.start},f.files.push(d("system prompt",l,g.span));else if(n&&T(u[n.from],"{")&&J(u,n.from)===n.to-1){let w=!1,x=(C,A="")=>{let M=new Set;for(let E of ne(u,C.from)){let j=u[E.from]?.kind==="string"?u[E.from].value:null;if(!j||M.has(j)||!T(u[E.from+1],":")){a(l,"invalid"),w=!0;return}M.add(j);let N=W(t,{from:E.from+2,to:E.to}),$=N&&ue(c,N);$?(f.files.push(d(j==="system_prompt"?"system prompt":"template",l,$.span,A+j)),j==="system_prompt"&&!A&&(f.prompt={kind:"entry",path:l,span:$.span,text:u[N.from].value},h={path:l,start:$.start})):N&&T(u[N.from],"{")?x(N,`${A}${j}.`):a(l,"dynamic")}};x(n),w&&(f.prompt={kind:"none"},f.files=[])}else{let w=n&&S.find(x=>x.start===u[n.from].start&&x.end===u[n.to-1].end);w?.path&&!w.reason?k(w.path):a(l,"dynamic")}}else if(r.args.some(n=>!B(u[n.from])||!T(u[n.from+1],"=")))a(l,"dynamic");else if(v.length===1){let n=v[0],g=b[n];if(g===void 0)f.files.push(d("config",n)),f.layoutProof={kind:"outside-loader",paths:[n]};else{m.has(n)||m.set(n,Ge(n,g,p));let w=m.get(n).filter(j=>j.className===i&&j.binding==="prompt_templates"&&j.forwarded),x=o.get("use_structured_outputs_internally"),C=x?W(t,x):null,A=C&&C.to===C.from+1&&["True","False"].includes(u[C.from].text)?u[C.from].text==="True":null,M=w.filter(j=>j.when?.every(N=>N.parameter==="use_structured_outputs_internally"&&N.value===(x?A:N.defaultValue))),E=M.length===1?M[0]:null;E?.path&&(!E.reason||E.reason==="missing")?k(E.path):a(n,"dynamic")}}else a(l,v.length>1?"dynamic":"missing");return{...f,promptSite:h,refused:y}}function so(e,t,o=t.files){let r={agents:[],refused:[]};if(!K(e))return r;let i={...o,...t.files},s=new Set([...Object.keys(i),...t.listedPaths??[]]),c=new Set(Et(e,[...s],t.root)),l=[...s].filter(p=>/(?:^|\/)smolagents\/agents\.py$/.test(p)),u=new Map,b=(p,v)=>r.refused.push({path:p,reason:v});for(let[p,v]of Object.entries(t.files)){if(!v.includes("smolagents")||ut(p,{listing:s,root:t.root})&&!dt(e,p,t.root)||!/\.py$/i.test(p)&&!c.has(p)||!R(e,{path:p,size:Buffer.byteLength(v)},{purpose:"code-scan",route:"github",root:t.root,listing:s}).admitted)continue;let m=c.has(p)?Rt(p,v).filter(n=>n.lang==="py"):null,f=m?Lt(v,m):v,y=oe(p,f,"py"),h=xt(y,{includeMembers:!0}),a=Ct(y,h,{enclosingBindings:!0}),{toks:d}=y,S=[],k=n=>{let g=n&&W(a,n);return g&&ue(y,g)?d[g.from].value:null},P=(n,g,w,x=null)=>({path:g,role:n,label:x,...w?{span:w}:{}});for(let n of a.calls){let g=a.importBinding(n.callee,n.from);if(!g||!["smolagents","smolagents.agents"].includes(g.module.source)||!["CodeAgent","ToolCallingAgent"].includes(g.name))continue;let w=new Map(n.args.flatMap(O=>B(d[O.from])&&T(d[O.from+1],"=")?[[d[O.from].text,{from:O.from+2,to:O.to}]]:[])),x=m?.find(O=>O.span.from<=d[n.from].line&&d[n.from].line<=O.span.to);if(x&&(g.module.line<x.span.from||x.span.to<g.module.line)){let O=w.get("managed_agents"),z=O&&W(a,O);if(!(z&&T(d[z.from],"[")&&ne(d,z.from).some(ie=>{let ce=W(a,ie);return ce&&S.some(Ne=>Ne.at===ce.from)})))continue}let A=a.assignments.find(O=>O.from===n.from&&Ue(a,O).to===n.to)?.name??`line-${d[n.from].line}`,M=`smolagents:${JSON.stringify([p,d[n.from].start])}`,E={from:d[n.from].line,to:d[n.to-1].endLine},j={key:M,name:k(w.get("name"))??A,model:null,description:k(w.get("description")),prompt:{kind:"none"},files:[],skills:[],tools:[],subagents:[],layoutCall:{path:p,callStart:d[n.from].start,line:E.from,loadedPrompt:!0}},N=no(e,a,w,n,g.name,{files:i,paths:s,frameworks:l,defaultsByPath:u});j.prompt=N.prompt,j.files.push(...N.files),N.layoutProof&&(j.layoutProof=N.layoutProof),N.promptSite&&(j.layoutCall.promptPath=N.promptSite.path,j.layoutCall.promptStart=N.promptSite.start),r.refused.push(...N.refused),j.files.push(P(m?"system prompt":"config",p,E));let $=oo(a,h,w.get("tools"),s,l);j.tools=$.names,j.files.push(...$.files),$.proofPaths.length&&(j.layoutProof??={kind:"outside-loader",paths:[]},j.layoutProof.paths.push(...$.proofPaths)),r.refused.push(...$.refused),r.agents.push(j),S.push({agent:j,name:A,at:n.from,children:w.get("managed_agents")})}for(let n of S){if(!n.children)continue;let g=W(a,n.children);if(!g||!T(d[g.from],"[")||J(d,g.from)!==g.to-1){b(p,"dynamic");continue}for(let w of ne(d,g.from)){let x=W(a,w),C=x&&S.find(M=>M.at===x.from&&x.to===a.calls.find(E=>E.from===M.at)?.to);if(!C||C===n){b(p,"dynamic");continue}let A=C.agent.prompt;n.agent.subagents.push({key:C.agent.key,path:A.kind==="none"?p:A.path,name:C.agent.name,description:C.agent.description,prompt:A.kind==="entry"?A.text:"",tools:C.agent.tools,skillPaths:[],files:C.agent.files})}}}return r}import{basename as Go}from"node:path";import{basename as zo}from"node:path";var io=/^[\w.*:/()-]+$/,ao=/^(?:true|false|null|~|[-+]?(?:\d[\d_.eExXoObB+-]*|\.\d[\d_eE+-]*|\.inf|\.nan)|\d{4}-\d{1,2}-\d{1,2}(?:[Tt].*)?)$/i,$e=e=>io.test(e)&&!e.startsWith("*")&&!ao.test(e);function Me(e){if(e.startsWith('"'))try{return JSON.parse(e)}catch{return e}return e.length>=2&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1).replace(/''/g,"'"):e}function ke(e,t=!1,o=!1){let r=[],i="",s=0,c=-1,l=0,u=()=>{c>=0&&r.push([c,l]),c=-1};for(let b=0;b<e.length;b++){let p=e[b];if(i){i==='"'&&p==="\\"?b++:p===i&&(i==="'"&&e[b+1]==="'"?b++:i=""),l=b+1;continue}if(!o&&p==="#"&&(b===0||/\s/.test(e[b-1]))){if(!t)return u(),{spans:r,end:b,comment:e.slice(b)};let v=e.indexOf(`
4
+ `,b);b=v<0?e.length:v;continue}if(t&&p==="]"&&s===0)return u(),{spans:r,end:b,comment:""};if(p===","&&s===0){u();continue}/\s/.test(p)||(c<0&&(c=b),(p==='"'||p==="'")&&(c===b||s>0)?i=p:p==="("?s++:p===")"&&s>0&&s--,l=b+1)}if(t)throw new Error("Unclosed frontmatter tool list");return u(),{spans:r,end:e.length,comment:""}}function ro(e,t){let o=e.startsWith("["),r=ke(o?e.slice(1):e,o),i=(o?e.slice(1,r.end+1):e.slice(0,r.end)).trimEnd(),s=!o&&r.spans.length===1&&/^["']/.test(i)&&Me(i)!==i?i[0]:"",c=s?Me(i):o?e.slice(1,r.end+1):e.slice(0,r.end).trimEnd(),l=o?r.spans:ke(c,!1,!!s).spans,u=0,b=l.flatMap(([v,m],f)=>{let y=c.slice(v,m),h=Me(y),a=c.slice(u,v).replace(/[^\S\n]*#[^\n]*/g,""),d=o?c.slice(m,l[f+1]?.[0]??c.length):"",S=d.match(/[^\S\n]*#[^\n]*/g)?.join(`
5
+ `)??"";return u=m,h?[{name:h,raw:y,before:a,note:S,noteAfterComma:/^[^\S\n]*,/.test(d)}]:[]}),p=o?e.slice(r.end+2).split(`
6
+ `)[0]:e.slice(i.length);return{style:o?"flow":"comma",outerQuote:s,quote:b.find(v=>/^["']/.test(v.raw))?.raw[0]??"",prefix:"",suffix:p,head:(b[0]?.before??c).replace(/,/g,""),tail:b.length?c.slice(u).replace(/[^\S\n]*#[^\n]*/g,""):"",separator:b[1]?.before.replace(/#[^\n]*/g,"")??(c.includes(`
7
+ `)?`,
8
+ ${c.match(/\n([^\S\n]*)/)[1]}`:", "),entries:b,first:t,last:t+e.slice(0,o?r.end+2:e.length).split(`
9
+ `).length-1,indent:" - ",blockComments:[]}}function Io(e){let t=he(e),o=t?.raw.map(l=>l.replace(/\r$/,""))??null,r=[],i=[],s={},c=[];if(o)for(let l=0;l<o.length;l++){let u=/^([A-Za-z_][\w-]*\s*:[^\S\n]*)(.*)$/.exec(o[l]);if(!u||!/^tools\s*:/i.test(u[1]))continue;let b=ke(u[2]),p;u[2].startsWith("[")?p=ro(o.slice(l).join(`
10
+ `).slice(u[1].length),l):p=ro(u[2],l),p.prefix=u[1];let v=p.style==="flow"?ke(p.suffix).comment:b.comment;if(v&&(s[p.style==="flow"?p.last:l]=v),p.style==="flow")for(let m of p.entries)m.note&&c.push({tool:m.name,comment:m.note.trim()});if(!u[2].slice(0,b.end).trim()){p.style="block",p.suffix=u[2];for(let m=l+1;m<o.length;m++){if(!o[m].trim()||/^\s*#/.test(o[m])){/^\s+#/.test(o[m])&&p.blockComments.push(m);continue}let f=/^(\s*-\s+)(.*)$/.exec(o[m]);if(!f)break;let y=ke(f[2]),h=f[2].slice(0,y.end).trimEnd(),a=Me(h);p.indent=f[1],a&&p.entries.push({name:a,raw:h,before:"",note:"",noteAfterComma:!1,row:o[m]}),y.comment&&a&&c.push({tool:a,comment:y.comment}),i.push(m),p.last=m}p.quote=p.entries.map(m=>m.raw).find(m=>/^["']/.test(m))?.[0]??""}for(let m=l;m<=(p.style==="block"?l:p.last);m++)i.push(m);r.push(p),l=p.last}return{header:t,lists:r,tools:r.length?r.flatMap(l=>l.entries.map(u=>u.name)):null,lines:o,toolLines:i,toolComments:s,itemComments:c}}function lo(e){try{return Io(e)}catch{let t=he(e);return{header:t,lists:[],tools:[],lines:t.raw.map(o=>o.replace(/\r$/,"")),toolLines:[],toolComments:{},itemComments:[],error:"Unclosed frontmatter tool list"}}}function Bo(e){let{tools:t,lines:o,toolLines:r,toolComments:i,itemComments:s,error:c}=lo(e);return{tools:t,lines:o,toolLines:r,toolComments:i,itemComments:s,...c?{error:c}:{}}}function fo(e){let t=Bo(e);if(t.error)throw new Error(t.error);let{tools:o,lines:r,toolLines:i,toolComments:s,itemComments:c}=t;return{tools:o,lines:r,toolLines:i,toolComments:s,itemComments:c}}function Fe(e){return e.every(t=>io.test(t)&&!t.startsWith("*"))&&(e.length!==1||$e(e[0]))?e.join(", "):`[${e.map(t=>JSON.stringify(t)).join(", ")}]`}function ye(e,t){return t==="'"&&!/[\r\n]/.test(e)?`'${e.replace(/'/g,"''")}'`:t==='"'||!$e(e)?JSON.stringify(e):e}function Ss(e,t){let o=lo(e);if(o.error)return e;let r=o.tools??[],i=t([...r]);if(i.length===r.length&&i.every((y,h)=>y===r[h]))return e;if(!o.header){let y=e.startsWith("\uFEFF")?"\uFEFF":"";return`${y}---
11
+ tools: ${Fe(i)}
12
+ ---
13
+ ${e.slice(y.length)}`}let{header:s,lists:c,toolLines:l,toolComments:u}=o,b=new Map,p=c[0];if(p){let y=c.flatMap(d=>d.entries),h=i.map(d=>{let S=y.findIndex(k=>k.name===d);return S<0?{name:d,raw:ye(d,p.quote),before:p.separator,note:"",noteAfterComma:!1}:y.splice(S,1)[0]}),a=p.prefix.endsWith(" ")?p.prefix:`${p.prefix} `;if(!i.length)b.set(p.first,`${a}[]${p.style==="block"&&p.suffix?` ${p.suffix}`:p.suffix}`);else if(p.style==="block"){b.set(p.first,`${p.prefix}${p.suffix}`);let d=l.filter(S=>S>p.first&&S<=p.last).sort((S,k)=>S-k);for(let S=0;S<h.length;S++){let k=h[S],P=p.entries.includes(k)&&k.row?$e(k.raw)||/^["']/.test(k.raw)?k.row:k.row.replace(k.raw,ye(k.name,p.quote)):`${p.indent}${ye(k.name,p.quote)}`,n=d[Math.min(S,d.length-1)]??p.first;b.set(n,`${b.has(n)?`${b.get(n)}${s.newline}`:""}${P}`)}}else{let d=p.style==="flow"||i.length===1&&ao.test(i[0])||i.some(n=>n.includes(",")||n!==n.trim()||/[\r\n]|(?:^|\s)#|:\s|^[[\]{}&*!|>'"%@`]/.test(n)),S=p.head;for(let[n,g]of h.entries()){if(n){let w=g.before||p.separator,x=h[n-1];x.note&&(x.noteAfterComma?(w=w.replace(/,[^\S\n]*/,`,${x.note}`),w.includes(`
14
+ `)||(w+=`
15
+ `)):w=`${x.note}${/^[^\S\n]*\n/.test(w)?"":`
16
+ `}${w}`),S+=w}S+=d?/^["']/.test(g.raw)||$e(g.raw)?g.raw:ye(g.name,p.quote):g.name}let k=h[h.length-1];k.note?(S+=k.noteAfterComma&&!p.tail.includes(",")?",":"",S+=k.noteAfterComma&&p.tail.includes(",")?p.tail.replace(",",`,${k.note}`):`${k.note}${p.tail}`,p.tail.includes(`
17
+ `)||(S+=`
18
+ `)):S+=p.tail;let P=d?`[${S}]`:p.outerQuote?ye(S,p.outerQuote):S;b.set(p.first,`${p.prefix}${P}${p.suffix}`.replace(/\n/g,s.newline))}}let v=new Set(l),m=s.raw.map((y,h)=>b.has(h)?`${b.get(h)}${s.newline}`:v.has(h)?u[h]&&h>p.last?`${u[h]}${s.newline}`:"":`${!i.length&&c.some(d=>d.blockComments.includes(h))?y.trimStart():y}
19
+ `).join(""),f=p?"":`tools: ${Fe(i)}${s.newline}`;return`${e.slice(0,s.start)}${m}${f}${e.slice(s.end)}`}function Ye(e){return e.CF_LEGACY_TOOL_LISTS!=="1"}function Cs(e,t){return Ye(e)?Fe(t):t.join(", ")}var Wo=/^\s*(name|description|tools|model)\s*:\s*(.+?)\s*$/i;function Do(e){if(e.startsWith('"')&&e.endsWith('"'))try{return JSON.parse(e)}catch{}return e.replace(/^["']|["']$/g,"")}function be(e,t,o,r){let i=Ye(e),s=zo(t).replace(/\.md$/i,""),c,l,u=[],b=!1,p=o,v=[],m=he(o,i?void 0:"markdown");if(m){p=o.slice(m.bodyStart).trim();let y=i?m.raw.map(h=>h.replace(/\r$/,"")):m.raw;for(let h=0;h<y.length;h++){let d=y[h].match(Wo);if(!d)continue;let S=d[1].toLowerCase(),k=Do(d[2]);if(S==="name")s=k;else if(S==="description")if(/^[>|][+-]?$/.test(d[2])){let P=[];for(;h+1<y.length&&(/^\s+\S/.test(y[h+1])||y[h+1].trim()==="");)P.push(y[++h].trim());c=P.join(k[0]===">"?" ":`
20
+ `).trim()}else c=k;else S==="model"?l=k:S==="tools"&&!i&&(b=!0,u=k.replace(/^\[|\]$/g,"").split(",").map(P=>P.trim()).filter(Boolean))}}if(i)try{let y=fo(o);u=y.tools??[],b=y.tools!==null}catch{b=!0,v.push("tools could not be read; check the tool list")}let f=p.trim();return{name:s,...c!==void 0?{description:c}:{},...f?{prompt:f}:{},...!r?.preserveToolAbsence||b?{tools:u}:{},...l!==void 0?{model:l}:{},...v.length?{warnings:v}:{}}}function co(e,t,o){let r=t.managed,i=[],s=new Set([...r.agents,...r.configs,...Object.keys(o.files),...o.listedPaths??[]]),c=new Set(kt(e,[...s],o.files)),l=Object.fromEntries(Object.entries(o.files).filter(([m,f])=>{if(c.has(m))return!1;let y=R(e,{path:m,text:f},{purpose:"override",route:"github",root:t.folder,listing:s,managedFiles:o.files});return!y.admitted&&y.reason==="secret"&&i.push({path:m,reason:"secret"}),y.admitted})),u=new Map;for(let m of r.agents){if(l[m]===void 0){i.some(y=>y.path===m)||i.push({path:m,reason:"missing"});continue}let f=bt(m,l[m],r,o.listedPaths??Object.keys(o.files));i.push(...f.refused),u.set(m,f)}let b=new Set([...u.values()].flatMap(m=>m.relationships.filter(f=>f.kind==="agent").map(f=>f.path))),p=[...u.values()].filter(m=>!b.has(m.path));return!p.length&&u.size&&p.push(u.values().next().value),{agents:p.map(m=>{let f=[{path:m.path,role:"system prompt",label:null}],y=[],h=[],a=(d,S,k)=>{for(let P of d.relationships){if(l[P.path]===void 0){i.some(n=>n.path===P.path)||i.push({path:P.path,reason:"missing"});continue}if(P.kind==="agent"){if(S.has(P.path)){i.push({path:P.path,reason:"cycle"});continue}let n=u.get(P.path);if(!n||h.some(w=>w.path===n.path))continue;let g=[];h.push({path:n.path,name:n.name,description:n.description,prompt:n.prompt,...n.model?{model:n.model}:{},tools:[],skillPaths:[],files:g}),a(n,new Set([...S,n.path]),g)}else if(P.kind==="skill"&&o.skills&&St(e)||P.kind==="config"&&wt(l[P.path])){if(k.some(n=>n.path===P.path))continue;if(k.push({path:P.path,role:P.kind==="skill"?"skill":"config",label:null}),P.kind==="skill"&&d===m){let n=be(e,Go(P.path),l[P.path]);y.push({path:P.path,name:n.name,description:n.description??"",body:n.prompt??""})}}}};return a(m,new Set([m.path]),f),{key:`managed:${m.path}`,name:m.name,model:m.model,description:m.description,prompt:{kind:"dedicated",path:m.path},files:f,tools:[],skills:y,subagents:h}}),notes:[],registry:!1,refused:i}}function po(e,t,o){let r=t.miniSwe,i=o.templateSelection?.agentPath===r.agentPath?o.templateSelection.configPaths:void 0,s=Kt(e,r,o.files,i),c=s.unresolved.filter(a=>a.reason!=="runtime-variable").map(a=>({path:a.target??a.path,reason:a.reason==="duplicate"?"invalid":a.reason})),l=s.fields.find(a=>a.key==="agent.system_template"&&a.value!==null),u=s.fields.find(a=>a.key==="agent.instance_template"&&a.value!==null),b=s.unresolved.some(a=>s.selectedPaths.includes(a.path)&&a.source===a.path);if(!l||!u||b||c.some(a=>a.reason==="invalid"))return{agents:[],notes:[],registry:!1,refused:c};let p=[l,...s.fields.filter(a=>a!==l)].map(a=>({path:a.path,span:a.span,label:a.key,role:a===l?"system prompt":a.key.endsWith("_template")?"template":"config"}));p.push(...s.loaded.map(a=>({path:a.path,role:"template",label:null})));let v=[];for(let a of p){let d=v.find(S=>S.path===a.path);d?d.span&&a.span&&(d.span={from:Math.min(d.span.from,a.span.from),to:Math.max(d.span.to,a.span.to)}):v.push({...a})}let m=[...new Set(v.map(a=>a.path))],f=Object.fromEntries(m.map(a=>[a,o.files[a]])),y=new Map(m.map(a=>[a,Buffer.byteLength(f[a])])),h=Ht(e,{ownPaths:m},{files:f,sizes:y,root:t.folder});return c.push(...h.refused,...h.skipped),s.fields.some(a=>!h.paths.includes(a.path))?{agents:[],notes:[],registry:!1,refused:c}:(s.loaded=s.loaded.filter(a=>h.paths.includes(a.path)),s.edges=s.edges.filter(a=>h.paths.includes(a.from)&&h.paths.includes(a.to)),{agents:[{key:t.key,name:o.fallbackName,model:s.model,description:null,prompt:{kind:"entry",path:l.path,span:l.span,text:l.value},files:v.filter(a=>h.paths.includes(a.path)),tools:[],skills:[],subagents:[],templateVariants:s}],notes:[],registry:!1,refused:c})}function mo(e,t,o){if(!t.skills||!le(e))return o;let r=[...new Set([...Object.keys(t.files),...t.listedPaths??[]])],i=fe(e,r,t.root,{files:t.files,listedPaths:t.listedPaths,agentConfigurations:t.agentConfigurations}),s=new Set(i.files.filter(v=>v.role==="skill").map(v=>v.path)),c=v=>[...new Set([...v.skillPaths.filter(m=>s.has(m)),...v.files?.filter(m=>m.role==="skill").map(m=>m.path)??[]])],l=o.agents.flatMap(v=>[...v.skills.map(m=>m.path),...v.subagents.flatMap(c)]),u=ge(e,{skillPaths:l,paths:r,files:t.files,root:t.root});for(let v of u)v.files=v.files.filter(m=>Object.hasOwn(t.files,m.path));let b=new Map(u.map(v=>[v.ownerPath,v])),p=(v,m)=>{let f=new Set(m.flatMap(h=>h.refused.map(a=>a.path))),y=v.filter(h=>h.role!=="reference"||!f.has(h.path));for(let h of m)for(let a of h.files)y.some(d=>d.path===a.path)||y.push({path:a.path,role:"reference",label:null});return y};return{...o,agents:o.agents.map(v=>{let m=v.skills.flatMap(f=>b.has(f.path)?[b.get(f.path)]:[]);return{...v,files:p(v.files,m),skills:v.skills.map(f=>({...f,...b.has(f.path)?{manifest:b.get(f.path)}:{}})),subagents:v.subagents.map(f=>{let y=c(f).flatMap(g=>b.has(g)?[b.get(g)]:[]);if(!y.length)return f;let h=i.ownerOf(f.path),a=G(e,r.filter(g=>i.ownerOf(g)===h),h?.folder),d=f.files??f.skillPaths.map(g=>({path:g,role:s.has(g)?"skill":"reference",label:a.skillNames[g]??a.skillRefNames[g]??null})),S=new Set([...v.files.map(g=>g.path),...a.subagentPaths,...Object.keys(a.subagentSkillOwners)]),k=a.scoped.filter(g=>!S.has(g)&&te(g)&&Object.hasOwn(t.files,g)).sort(),P=f.files?[]:se(k,[t.files[f.path],...d.filter(g=>g.role==="reference").map(g=>t.files[g.path])],a.stripRoot).map(g=>({path:g,role:"reference",label:null})),n=p([...d,...P],y);return{...f,files:n,skillPaths:[...new Set([...f.skillPaths,...c(f),...y.flatMap(g=>g.files.map(w=>w.path))])].filter(g=>n.some(w=>w.path===g)),skillManifests:y}})}})}}import{basename as Ao}from"node:path";function uo(e){return e.prompt.kind!=="none"}function ho(e,t,o){if(q(e))return o;let r=new Map(o.agentScopes?.map(c=>[c.key,c.folder])),i=Object.keys(t.files),s=new Map;return{...o,agents:o.agents.map(c=>{let l=r.get(c.key)??t.root,u=s.get(l);return u||(u=G(e,i,l,t.listedPaths??i),s.set(l,u)),{...c,definitionPaths:Ko(c,u)}})}}function Ko(e,t){if(uo(e))return[e.prompt.path];let o=s=>!t.developerCompanionPaths.includes(s),r=e.subagents.filter(s=>o(s.path));if(r.length)return r.map(s=>s.path);let i=e.files.filter(s=>["skill","tools","mcp"].includes(s.role)&&o(s.path));return e.key!==null||e.plugin||i.some(s=>s.role==="tools"||s.role==="mcp")||!t.hasRepositoryGuide?i.map(s=>s.path):[]}function Jo(e){return!!e.definitionPaths?.length}function Qs(e,t,o,r){return q(e)?o!==r:(t.key!==null||uo(t))&&Jo(t)}function Ve(e){let t;try{t=JSON.parse(e)}catch{return{config:null,invalid:!0}}if(typeof t!="object"||t===null||Array.isArray(t))return{config:null,invalid:!0};let o=t,r={};for(let i of["name","model","description","prompt"]){let s=Ae(o[i]);s&&(r[i]=s)}if(Array.isArray(o.agents)){let i=o.agents.flatMap(s=>{let c=qo(s);return c?[c]:[]});i.length>0?r.agents=i:r.invalidAgents=!0}return{config:r,invalid:!1}}function sr(e){let{config:t}=Ve(e);return t?Xe(t):"bare"}function Xe(e){return e.agents?.length?"agents":e.prompt?"prompt":"bare"}function je(e){let t=Xe(e);return t==="agents"?e.agents:t==="prompt"?[{name:e.name,model:e.model,prompt:e.prompt}]:[]}function go(e,t,o){return yo(e,t,o).paths}function yo(e,t,o,r={}){let i=je(t).map(l=>l.prompt),s=[],c=[];for(let l of i){let u=Ze(l).path,b=He(o,u);if(b===null){c.push({path:u,reason:"out-of-scope"});continue}let p=R(e,{path:b},{purpose:"pointer",route:"github",...r});p.admitted?s.push(b):c.push({path:b,reason:p.reason})}return{paths:s,refused:c}}function Qe(e,t,o){let r=He(o.markerDir,Ze(t).path),i=r!==null?R(e,{path:r},{purpose:"pointer",route:"github"}):null;if(i&&!i.admitted&&i.reason==="secret")return{kind:"secret",path:r};let s=Uo(t,o,_t(e));return s?{kind:"resolved",prompt:s}:{kind:"missed"}}function rr(e,t,o){let r=[],i=[];t.invalidAgents&&i.push(`${o.repoKey}: counterfact.json "agents" has no entry with a prompt pointer; ignored`);let s=Xe(t);for(let c of je(t)){let l=Qe(e,c.prompt,o);if(l.kind==="secret"){i.push(Pt(l.path));continue}if(l.kind==="missed"){i.push(`${o.repoKey}: counterfact.json points at ${c.prompt}, which was not found; ignored`);continue}r.push({name:c.name??null,model:c.model??null,description:s==="prompt"?t.description??null:null,prompt:l.prompt})}return{agents:r,warnings:i,refused:yo(e,t,o.markerDir).refused}}function Ae(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function qo(e){if(typeof e!="object"||e===null)return null;let t=e,o=Ae(t.prompt);if(!o)return null;let r={prompt:o},i=Ae(t.name),s=Ae(t.model);return i&&(r.name=i),s&&(r.model=s),r}function Ze(e){let t=e.replace(/\\/g,"/"),o=t.indexOf("#");if(o>=0)return{path:t.slice(0,o),symbol:t.slice(o+1),line:null};let r=/^(.*):(\d+)$/.exec(t);return r?{path:r[1],symbol:null,line:Number(r[2])}:{path:t,symbol:null,line:null}}function He(e,t){let o=[];for(let r of[...e.split("/"),...t.split("/")])if(r===".."){if(o.pop()===void 0)return null}else r!=="."&&r!==""&&o.push(r);return o.join("/")}function Uo(e,t,o){let{path:r,symbol:i,line:s}=Ze(e),c=He(t.markerDir,r);if(c===null||!Object.hasOwn(t.files,c))return null;let l=t.files[c];if(l===void 0)return null;if(i===null&&s===null)return Q(c)?null:gt(c,l);let{sites:u}=Nt(c,l,{minChars:1,promptFunctions:o});return i!==null?u.find(b=>b.symbol===i)??null:Yo(u,s)}function Yo(e,t){let o=i=>Math.min(i.line,i.span.from),r=e.filter(i=>o(i)<=t&&t<=i.span.to);return r.sort((i,s)=>i.span.to-o(i)-(s.span.to-o(s))),r[0]??null}import{createHash as Vo}from"node:crypto";var ko=25,Xo=e=>ee(e,"CF_IMPORT_AGENT_PAGES");function pr(e,t,o,r,i=ko,s){if(!Xo(e))return null;let c=r?.pageSize??i,l=r?.offset??0;if(![8,25,400].includes(c)||!Number.isSafeInteger(l)||l<0)throw new Error("invalid-agent-page");let u=[...new Map(t.map(w=>[w.id,w])).values()],b=Vo("sha256").update(JSON.stringify({version:1,context:{commit:o.commit,scope:o.scope},size:c,budgets:s,settings:Object.entries(Ut(e)).filter(([,w])=>w!==void 0).sort(([w],[x])=>w.localeCompare(x)),rows:u.map(({id:w,path:x,groupKey:C,pool:A})=>({id:w,path:x,groupKey:C,pool:A}))})).digest("hex");if(r&&(r.version!==1||r.binding!==b))throw new Error("stale-agent-page");let p=u.map((w,x)=>{let C=wo(e,w,x);return typeof C=="string"?`group:${C}`:`agent:${w.id}`}),v=[...new Set(p)];if(l>0&&l>=v.length)throw new Error("invalid-agent-page");let m=r?.end;if(m!==void 0&&(!Number.isSafeInteger(m)||m<l||m>v.length||m>l+c||m===l&&v.length>0))throw new Error("invalid-agent-page");let f=new Set,y=new Set,h=s?{...s}:null,a=l,d=!1;for(let w of v.slice(l,m??l+c)){let x=new Map(u.filter((A,M)=>p[M]===w&&!y.has(u[M].path)).map(A=>[A.path,A])),C={strong:0,possible:0};for(let A of x.values())C[A.pool??"strong"]+=A.bytes;if(m===void 0&&h&&f.size&&(C.strong>h.strong||C.possible>h.possible)){d=!0;break}f.add(w),a++;for(let A of x.keys())y.add(A);h&&(h.strong=Math.max(0,h.strong-C.strong),h.possible=Math.max(0,h.possible-C.possible))}m!==void 0&&(d=a<v.length&&a-l<c);let S=new Set(v.slice(a)),k=u.filter((w,x)=>f.has(p[x])),P=u.filter((w,x)=>S.has(p[x])).map(w=>w.id),n={version:1,binding:b,offset:l,pageSize:c,end:a},g=new Map(k.map(w=>[w.path,w.bytes]));return{context:{...o},current:n,continuation:P.length?{version:1,binding:b,offset:a,pageSize:c}:null,detected:u.length,detectedGroups:v.length,selected:k.map(w=>w.id),remaining:P,refusals:P.map(w=>({id:w,reason:d?"prompt-over-limit":"page"})),partial:P.length>0,estimatedInputBytes:[...g.values()].reduce((w,x)=>w+x,0)}}function bo(){return ko}function wo(e,t,o){return pt(e)&&t!==null&&typeof t=="object"&&"groupKey"in t&&typeof t.groupKey=="string"&&t.groupKey?t.groupKey:o}function Po(e,t){let o=bo(),r=new Set,i=[],s=[];return t.forEach((c,l)=>{let u=wo(e,c,l);r.has(u)||r.size<o?(r.add(u),i.push(c)):s.push(c)}),{kept:i,leftOut:s}}function vo(e){let t=bo();if(e.kind==="layout")return`Only ${t} agents can be added per import, so ${e.leftOut} were left out.`;if(e.kind==="scan"){let r=e.found-t;return`${r} ${r===1?"agent wasn't":"agents weren't"} read because the repository is large.`}let o=e.kind==="import"?`Not added: this import already has ${t} agents.`:`Only the ${t} strongest agents of a repository are added.`;return e.kind==="model"?`${e.name}: ${o}`:o}var Ee="crew:";function et(e){return e.startsWith(Ee)}function tt(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;let t=Object.entries(e);return!t.length||t.some(([,o])=>typeof o!="string"||o.length>=2e3)?null:t.map(([o,r])=>`${o}: ${r}`).join(`
21
+ `)}function So(e,t,o={},r=Object.keys(t)){return K(o)?Qo(e,t,r):e.kind!=="crew"?{agents:[],notes:[],registry:!1}:Oo(e,t)}function Oo(e,t){let o=[],r=[],i=(l,u)=>r.push({code:"unreadable-crew",path:l,detail:u?`${u} could not be read; some instructions may be missing.`:"could not be read; some instructions may be missing."}),s=Se(t[e.agentsPath]??""),c=e.tasksPath?Se(t[e.tasksPath]??""):[];s?.length||i(e.agentsPath),c===null&&i(e.tasksPath);for(let{key:l,value:u,span:b}of s??[]){if(!re(u)){i(e.agentsPath,l);continue}let{llm:p,tools:v,...m}=u,f=tt(m);if(f===null&&Object.keys(m).length){i(e.agentsPath,l);continue}let y=[{role:"system prompt",path:e.agentsPath,label:l,span:b}];for(let h of c??[])re(h.value)&&h.value.agent===l&&y.push({role:"knowledge",path:e.tasksPath,label:h.key,span:h.span});o.push({key:`${Ee}${e.agentsPath}#${l}`,name:l,model:typeof p=="string"?p:null,description:typeof u.goal=="string"?u.goal:null,entry:{path:e.agentsPath,span:b,text:f},files:y,tools:Array.isArray(v)?[...new Set(v.filter(h=>typeof h=="string"&&!!h.trim()))]:[],skills:[],subagents:[]})}return{agents:o,notes:r,registry:!1}}function re(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Qo(e,t,o){let r=new Set([...o,...Object.keys(t)]),i=Object.entries(t).filter(([f])=>f.endsWith(".py")).map(([f,y])=>Jt(f,y,r,e.folder)),s=i.flatMap(f=>f.agents),c=i.flatMap(f=>f.refused);if(!s.length)return e.kind==="crew"&&/\.ya?ml$/i.test(e.agentsPath)?{...Oo(e,t),refused:c}:{agents:[],notes:[],refused:c,registry:!1};let l=new Map,u=f=>{if(!l.has(f)){let y=t[f]===void 0?null:Se(t[f]);l.set(f,y),y===null&&c.push({path:f,reason:t[f]===void 0?"missing":"invalid"})}return l.get(f)??[]},b=i.flatMap(f=>f.tasks).flatMap(f=>{let y=f.config?.path?u(f.config.path).find(d=>d.key===f.config.key):void 0;if(f.config&&(!f.config.path||!y||!re(y.value)))return f.config.path&&c.push({path:f.config.path,reason:y?"invalid":"missing"}),[];let h=re(y?.value)?y.value:{},a=f.factory.includes(".")?f.factory.slice(0,f.factory.lastIndexOf(".")):null;return[{fact:f,path:f.config?.path??f.path,key:f.config?.key??f.factory,span:y?.span??f.span,agent:f.agent??(typeof h.agent=="string"?a?`${a}.${h.agent}`:h.agent:null),context:[...f.context,...Array.isArray(h.context)?h.context.filter(d=>typeof d=="string"):[]],tools:f.tools}]}),p=i.flatMap(f=>f.tasks).filter(f=>f.config),v=p.flatMap(f=>f.config?.path?[{path:f.config.path,source:f.path,owner:f.factory.includes(".")?f.factory.slice(0,f.factory.lastIndexOf(".")):null}]:[]);!p.length&&e.kind==="crew"&&e.tasksPath&&v.push({path:e.tasksPath,source:e.tasksPath,owner:null});for(let{path:f,source:y,owner:h}of v)for(let a of u(f)){if(b.some(S=>S.path===f&&S.key===a.key&&S.fact.path===y&&(S.fact.factory.includes(".")?S.fact.factory.slice(0,S.fact.factory.lastIndexOf(".")):null)===h)||!re(a.value))continue;let d=a.value;b.push({fact:{path:y,factory:h?`${h}.${a.key}`:a.key,span:a.span,callStart:0,agent:null,context:[],tools:[]},path:f,key:a.key,span:a.span,agent:typeof d.agent=="string"?h?`${h}.${d.agent}`:d.agent:null,context:Array.isArray(d.context)?d.context.filter(S=>typeof S=="string"):[],tools:[]})}let m=[];for(let f of s){let y=f.config?.path?u(f.config.path).find(C=>C.key===f.config.key):void 0;if(f.config&&(!f.config.path||!y||!re(y.value))){f.config.path&&c.push({path:f.config.path,reason:y?"invalid":"missing"});continue}let h=re(y?.value)?y.value:{},a={...Object.fromEntries(Object.entries(h).filter(([C,A])=>!["llm","tools"].includes(C)&&typeof A=="string")),...f.instructions},d=tt(a);if(!d){c.push({path:f.path,reason:"dynamic"});continue}let S=f.config?.key??f.factory.split(".").at(-1),k=f.config?.path??f.path,P=y?.span??f.span,n=[{path:k,role:"system prompt",label:S,span:P}];k!==f.path&&n.push({path:f.path,role:"config",label:f.factory,span:f.span});let g=b.filter(C=>C.fact.path===f.path?C.agent===f.factory||C.agent===S:/\.ya?ml$/i.test(C.fact.path)&&C.agent===S&&s.filter(A=>(A.config?.key??A.factory)===S).length===1),w=new Set,x=[...f.tools];for(let C=0;C<g.length;C++){let A=g[C];if(!w.has(A)&&(w.add(A),!(A.fact.config&&!A.fact.config.path))){n.push({path:A.path,role:"knowledge",label:A.key,span:A.span}),x.push(...A.tools);for(let M of A.context){let E=b.filter(j=>j.fact.path===A.fact.path&&j.fact.factory===M||j.path===A.path&&j.key===M);E.length===1?g.push(E[0]):c.push({path:A.path,reason:E.length?"dynamic":"missing"})}}}for(let C of x)C.path&&C.path!==f.path&&!n.some(A=>A.path===C.path)&&(t[C.path]===void 0&&c.push({path:C.path,reason:"missing"}),n.push({path:C.path,role:"tools",label:C.name}));m.push({key:`${Ee}${f.path}#${f.factory}`,name:S,model:typeof h.llm=="string"?h.llm:null,description:typeof a.goal=="string"?a.goal:null,entry:{path:k,span:P,text:d},files:n,tools:[...new Set([...x.map(C=>C.name),...Array.isArray(h.tools)?h.tools.filter(C=>typeof C=="string"):[]])],skills:[],subagents:[],crewCall:{path:f.path,callStart:f.callStart}})}return{agents:m,notes:[],refused:c,registry:!1}}import{basename as xo,posix as Re}from"node:path";function Co(e,t,o){let r={...t.selected,codeAgentsFound:t.codeAgentsFound||t.selected.codeAgentsFound};if(!ot(e,r,o))return{kind:"none"};let i={...t.bodies,...r.files},s=G(e,Object.keys(i),X(r.root)).templatePaths,c=nt(e,{...r,files:i},s);if(!t.entries)return{kind:"search",paths:[],ownedPaths:c.ownedPaths};let l=new Set([...Object.keys(i),...t.attemptedPaths??[]]),u=new Set(c.facts.dependencies);for(let y of c.relatedReads)y.target.kind==="file"&&u.add(y.target.path);for(let y of t.entries)c.relatedReads.some(h=>h.target.kind==="directory"&&Le(h,y.path))&&u.add(y.path);let b=(y,h)=>{let a=R(e,y,{purpose:h,route:"local-folder"});return a.admitted||a.reason==="too-large"},p=[...new Set(t.entries.filter(y=>!l.has(y.path)&&(u.has(y.path)?b(y,"pointer"):D(y.path,r.root)===null&&Q(y.path)!==null&&b(y,"code-support"))).map(y=>y.path))],v=X(r.root)??"",m=y=>Re.parse(y).name===(v?xo(v):r.fallbackName)?0:vt.test(xo(y))?1:2,f=y=>Re.relative(v||".",Re.dirname(y)).split("/").filter(h=>h&&h!==".").length;return p.sort((y,h)=>Number(u.has(h))-Number(u.has(y))||m(y)-m(h)||f(y)-f(h)||(y<h?-1:y>h?1:0)),{kind:"search",paths:p,ownedPaths:c.ownedPaths}}function Le(e,t){return e.target.kind==="file"?e.target.path===t:Re.dirname(t)===e.target.path&&(!e.target.extension||t.endsWith(e.target.extension))}function ot(e,t,o){if(!Oe(e)||t.codeAgentsFound||t.explicitPrompt!==void 0||o.agents.length||t.listedPaths&&G(e,[...t.listedPaths],X(t.root)).configPath)return null;let r=G(e,Object.keys(t.files),X(t.root)).templatePaths;if(!r.length)return null;let i=Object.fromEntries(Object.entries(t.files).filter(([s])=>D(s,t.root)!==null&&R(e,{path:s},{purpose:"override",route:"github"}).admitted));return Be(e,i).reads.some(s=>r.some(c=>Le(s,c)))?null:r}function nt(e,t,o){let r=Object.fromEntries(Object.entries(t.files).filter(([m])=>R(e,{path:m},{purpose:"override",route:"github"}).admitted)),i=Be(e,r),s=i.reads.filter(m=>D(m.sourcePath,t.root)===null&&o.some(f=>Le(m,f))),c=o.filter(m=>s.some(f=>Le(f,m))).sort(),l=[...new Set(s.map(m=>m.sourcePath))].sort(),u=i.reads.filter(m=>l.includes(m.sourcePath)),b=u.flatMap(m=>m.target.kind==="file"&&Object.hasOwn(r,m.target.path)&&D(m.target.path,t.root)!==null&&!o.includes(m.target.path)?[m.target.path]:[]).sort(),p=s.flatMap(m=>m.consumerPaths).sort(),v=c.length?[...new Set([c[0],...o.filter(m=>m!==c[0]),...b,...l,...p])]:[];return{facts:i,relatedReads:u,provenTemplates:c,ownedPaths:v}}function si(e,t,o={}){return Te(e)&&!t.agentConfigurations&&(t={...t,agentConfigurations:Wt(e,t.listedPaths??Object.keys(t.files),t.root)}),ho(e,t,Zo(e,t,o))}function Zo(e,t,o){let r=jo(e,t),{answer:i,scopeProof:s}=Ho(e,t,r),c=Ce(e);if(!c&&!i.agents.some(a=>a.crewCall||a.layoutCall))return Ke(e,t,i);let l=[...new Set([...Object.keys(t.files),...t.listedPaths??[],...i.scopePaths??[]])],u=fe(e,l,t.root,{files:t.files,agentConfigurations:t.agentConfigurations,listedPaths:t.listedPaths}),b=i.agents.filter(a=>c||a.crewCall||a.layoutCall).map(a=>{let d=r.agents.find(M=>M.key===a.key),S=st(d?.files??[]),k=i.agentScopes?.find(M=>M.key===a.key)?.folder,P=u.scopes.find(M=>k===void 0?M.key===a.key:M.folder===k)??u.scopes[0],n=G(e,l.filter(M=>u.ownerOf(M)===P),P.folder),g=new Set([...a.files.filter(M=>M.role!=="reference"||M.label!==null).map(M=>M.path),...a.subagents.flatMap(M=>[M.path,...d?.subagents.find(E=>E.path===M.path)?.skillPaths??M.skillPaths]),...i.notes.filter(M=>M.code==="orphan-skill").map(M=>M.path)]),w=n.scoped.filter(M=>!g.has(M)&&te(M)).sort(),x=`convention:${JSON.stringify(a.key)}`,C=a.files.map(M=>a.prompt.kind!=="none"&&a.prompt.path===M.path&&"span"in a.prompt?{...M,span:M.span??a.prompt.span}:M),A=a.subagents.map(M=>{let E=d?.subagents.find(_=>_.path===M.path),j=M.files??M.skillPaths.map(_=>({path:_,role:n.skillNames[_]?"skill":"reference",label:n.skillNames[_]??n.skillRefNames[_]??null})),N=le(e)?st(E?.files??[]):j.map(_=>_.path),$=M.files&&!n.subagentPaths.includes(M.path)?[]:se(w,[M.path,...N].map(_=>t.files[_]??""),n.stripRoot),O=$.filter(_=>!j.some(ie=>ie.path===_)).map(_=>({path:_,role:"reference",label:null})),z=i.agents.find(_=>"key"in M&&_.key===M.key);return{child:M,id:`${x}:${JSON.stringify("key"in M?M.key:M.path)}`,scopeProof:z?.layoutProof??s,toolCall:z?.layoutCall,independentReferences:[...st(E?.files??[]),...$],ownFiles:"key"in M?[...j,...O]:[{path:M.path,role:"system prompt",label:null},...j,...O]}});return{agent:a,id:x,scope:P,ownFiles:C,independentReferences:S,children:A,scopeProof:a.layoutProof??s,toolCall:a.crewCall??a.layoutCall}}),p=b.flatMap(({agent:a,id:d,scope:S,ownFiles:k,independentReferences:P,children:n,scopeProof:g,toolCall:w})=>[{id:d,scope:S,ownFiles:k,independentReferences:P,scopeProof:g,toolCall:w,sharedReferencePaths:a.sharedReferencePaths,fileProfile:a.crewCall||a.layoutCall?"layout":"convention",skillManifests:a.skills.flatMap(x=>x.manifest?[x.manifest]:[])},...n.map(({child:x,id:C,ownFiles:A,independentReferences:M,scopeProof:E,toolCall:j})=>({id:C,scope:S,ownFiles:A,independentReferences:M,scopeProof:E,toolCall:j,fileProfile:"key"in x?"layout":"convention",skillManifests:x.skillManifests}))]),v=eo(e,p,{files:t.files,sizes:o.sizes??new Map(Object.entries(t.files).map(([a,d])=>[a,Buffer.byteLength(d)])),total:o.total,root:t.root,scopes:u}),m=new Map(v.map(a=>[a.agentId,a])),{complete:f,...y}=i,h=new Map(b.map(({agent:a,id:d,children:S})=>{let k=m.get(d);return[a.key,{...a,manifest:k,files:Mo(k,a.files),skills:a.skills.filter(P=>k.files.some(n=>n.path===P.path)),subagents:S.flatMap(({child:P,id:n,ownFiles:g})=>{let w=m.get(n);if(!w.files.some(A=>A.path===P.path))return[];let x=Mo(w,g),C="key"in P?x:x.filter(A=>A.path!==P.path);return[{...P,files:C,skillPaths:P.skillPaths.filter(A=>C.some(M=>M.path===A))}]})}]}));return Ke(e,t,{...y,...f&&!v.some(a=>a.refused.length)?{complete:f}:{},scopePaths:l,manifests:v,agents:i.agents.map(a=>h.get(a.key)??a)})}function Mo(e,t){return e.files.flatMap(o=>t.some(r=>r.path===o.path)?t.filter(r=>r.path===o.path):[{path:o.path,role:o.roles.includes("config")?"config":"tools",label:null,...o.spans.length===1?{span:o.spans[0]}:{}}])}function st(e){return e.filter(t=>t.role==="reference"&&t.label===null).map(t=>t.path)}function Ho(e,t,o){let r=mo(e,t,o);if(!q(e)&&t.codeAgentsFound)return{answer:{...r,projection:"code"}};let i=ot(e,t,r);if(!i)return{answer:r};let s=nt(e,t,i);if(!s.provenTemplates.length)return{answer:r};let c=s.provenTemplates[0],l=new Set(r.agentScopes?.find(b=>b.key===null)?.notes),u=b=>!(b.code==="no-prompt"&&b.detail==="no-conventions"&&b.path===(X(t.root)??""));return{scopeProof:{kind:"outside-loader",paths:s.ownedPaths},answer:{...r,projection:"conventions",notes:r.notes.filter(u),...r.agentScopes?{agentScopes:r.agentScopes.map(b=>({...b,notes:b.notes.filter(u)}))}:{},...r.unassignedNotes?{unassignedNotes:r.unassignedNotes.filter(b=>!l.has(b))}:{},agents:[{key:null,name:t.fallbackName,model:null,description:null,prompt:{kind:"dedicated",path:c},files:s.ownedPaths.map(b=>({path:b,role:b===c?"system prompt":i.includes(b)?"template":"reference",label:null})),skills:[],subagents:[]}]}}}function ri(e,t){return Oe(e)?Co(e,t,jo(e,t.selected)):{kind:"none"}}function jo(e,t){if(!ve(e)){let{agents:n,notes:g}=rt(e,t,null);return{agents:n,notes:g}}let o=yt(e,t.listedPaths??[]).flatMap(n=>[...n.agents,...n.configs]),r=[...new Set([...Object.keys(t.files),...o,...K(e)?t.listedPaths??[]:[]])],{scopes:i,ownerOf:s,ignoredPaths:c,pluginFolders:l}=fe(e,r,t.root,{files:t.files,agentConfigurations:t.agentConfigurations,listedPaths:t.listedPaths}),u=new Set(c),b=new Map(i.map(n=>[n,{}]));for(let[n,g]of Object.entries(t.files)){if(u.has(n))continue;let w=s(n);w&&(b.get(w)[n]=g)}let p=i.map(n=>{let g=b.get(n),w={...t,files:g,root:n.folder,fallbackName:n.key===null?t.fallbackName:Ao(n.folder),explicitPrompt:n.key===null?t.explicitPrompt:void 0,...t.pointerFiles?{pointerFiles:Object.fromEntries(Object.entries(t.pointerFiles).filter(([x])=>!u.has(x)&&s(x)===n))}:{}};return{scope:n,input:w,answer:$o(e,n,w,!1,t.files)}}),v=[],m=new Map,f=p.filter(({scope:n,input:g,answer:w})=>{let x=w.agents[0];if(!x)return!0;let C=Object.entries(g.files).map(([E,j])=>[D(E,n.folder),j]).sort(([E],[j])=>E<j?-1:E>j?1:0),A=JSON.stringify([x.name,C,...n.managed||K(e)&&(n.kind==="crew"||l.includes(n.folder))?[n.folder]:[]]),M=m.get(A);return M!==void 0?(v.push({code:"duplicate-agent",path:n.folder,detail:M}),!1):(m.set(A,n.folder),!0)}),y=f.find(({scope:n})=>n.key===null),h=y.answer.agents[0];f.some(({scope:n,answer:g})=>n.key!==null&&g.agents.length)&&(y.answer=$o(e,y.scope,y.input,!0,t.files),y.answer.notes=y.answer.notes.filter(n=>n.detail!=="no-conventions"));for(let{scope:n,answer:g}of q(e)?[]:f)l.includes(n.folder)&&(g.agents=g.agents.map(w=>({...w,plugin:!0})));let{kept:a,leftOut:d}=Po(e,f.flatMap(({answer:n})=>n.agents));Yt(a,h,{settings:e,files:t.files,root:t.root});let S=[...v,...d.length?[{code:"agent-cap",detail:vo({kind:"layout",leftOut:d.length})}]:[]],k=new Set(a.map(n=>n.key));return{...!t.definitionsOmitted&&f.some(({scope:n})=>n.kind==="crew")&&f.every(({scope:n,answer:g})=>g.notes.length===0&&!g.refused?.length&&(n.kind==="crew"?g.agents.length>0&&g.agents.every(w=>et(w.key??"")):g.agents.length===0))&&(!t.listedPaths||fe(e,t.listedPaths,t.root,{agentConfigurations:t.agentConfigurations}).files.every(n=>Object.hasOwn(t.files,n.path)))?{complete:!0}:{},...f.some(({scope:n,answer:g})=>n.miniSwe&&g.agents.length)&&!t.codeAgentsFound?{projection:"conventions"}:{},agents:a.map(n=>n.layoutCall?{...n,subagents:n.subagents.filter(g=>"key"in g&&k.has(g.key))}:n),notes:[...f.flatMap(({answer:n})=>n.notes),...S],...o.length?{scopePaths:r}:{},...f.some(({answer:n})=>n.refused?.length)?{refused:f.flatMap(({answer:n})=>n.refused??[])}:{},...i.length>1||i.some(n=>n.kind==="crew"||n.managed||n.miniSwe)||f.some(({answer:n})=>n.agents.some(g=>g.layoutCall))?{agentScopes:f.flatMap(({scope:n,answer:g})=>(g.agents.length?g.agents:[{key:n.key}]).map((w,x)=>({key:w.key,folder:n.folder,registry:g.registry&&!et(w.key??""),notes:g.notes.filter(C=>C.code!=="unreadable-crew"||x===0)}))),unassignedNotes:[...f.filter(({answer:n})=>!n.agents.some(g=>k.has(g.key))).flatMap(({answer:n})=>n.notes),...S]}:{}}}function $o(e,t,o,r=!1,i){if(t.managed)return co(e,t,o);if(t.miniSwe&&o.explicitPrompt===void 0)return po(e,t,o);if(t.kind!=="crew"&&!K(e))return rt(e,o,t.key,r);let s=so(e,o,i),c=en(e,t,o.files,o.listedPaths),l=rt(e,o,t.key,r||t.key===null&&(c.agents.length>0||s.agents.length>0));return{agents:[...l.agents,...c.agents,...s.agents],notes:[...l.notes.filter(u=>u.detail!=="no-conventions"||t.kind!=="crew"&&c.agents.length===0&&s.agents.length===0),...c.notes],registry:l.registry,...c.refused?.length||s.refused.length?{refused:[...c.refused??[],...s.refused]}:{}}}function en(e,t,o,r){let i=So(t,o,e,r),{agents:s,notes:c,registry:l}=i;return{agents:s.map(({entry:u,...b})=>({...b,prompt:Eo(e,{entry:u},c)})),notes:c,registry:l,...i.refused?.length?{refused:i.refused}:{}}}function rt(e,t,o,r=!1){let{files:i,skills:s,fallbackName:c}=t,l=X(t.root),u=G(e,Object.keys(i),l,t.listedPaths),b=[],p=typeof t.explicitPrompt=="string"&&!Pe(e,t.explicitPrompt);p&&b.push({code:"explicit-guide",path:t.explicitPrompt});let v=p?null:t.explicitPrompt,m=typeof v=="string"&&Object.hasOwn(i,v)&&R(e,{path:v},{purpose:"override",route:"github"}).admitted?v:null,f={...u,skillPaths:s?u.skillPaths:[]},y=Bt(f),h=tn(i,u.configPath,b),a=!q(e)&&!h?.prompt&&!h?.agents?.length?Dt(e,t):null,d=ct({codeAgentsFound:!q(e)&&!!t.codeAgentsFound,folderAgentsFound:r,otherDefinitions:y,agentConfiguration:a!==null},e);if(a&&d==="prompt"&&(u=a),!(v===null||m!==null||zt({...f,claudePath:u.claudePath},d)))return Fo(De(u),s,b),{agents:[],notes:[...b,{code:"no-prompt",path:l??"",detail:"no-conventions"}],registry:u.registry};let k=Eo(e,{files:i,c:u,guideRole:d,folderAgentsFound:r,root:l,config:h,explicitPath:v===null?null:m??void 0,pointerFiles:t.pointerFiles},b);k.kind==="none"&&(u=De(u));let P=s?u.skillPaths.map(w=>{let x=be(e,`${u.skillNames[w]}.md`,i[w]);return b.push(...(x.warnings??[]).map(C=>({code:"frontmatter",path:w,detail:C}))),{path:w,name:x.name,description:x.description??"",body:x.prompt??""}}):[];Fo(u,s,b);let n=s?[...u.subagentSkillPaths,...u.subagentSkillRefPaths]:[],g=u.subagentPaths.map(w=>{let x=be(e,Ao(w),i[w],{preserveToolAbsence:!0});return b.push(...(x.warnings??[]).map(C=>({code:"frontmatter",path:w,detail:C}))),{path:w,name:x.name,description:x.description??null,prompt:x.prompt??"",...x.tools!==void 0?{tools:x.tools}:{},...x.model!==void 0?{model:x.model}:{},skillPaths:n.filter(C=>u.subagentSkillOwners[C]===w)}});return{agents:[{key:o,name:h?.name??c,model:h?.model??null,description:h?.description??null,prompt:k,files:on(e,i,u,k,s),skills:P,subagents:g}],notes:b,registry:u.registry}}function ii(e,t,o,r){let i=G(e,Object.keys(o),X(r));return Object.hasOwn(i.subagentSkillOwners,t)?!0:ge(e,{skillPaths:i.subagentSkillPaths,paths:i.scoped,files:o,root:r})?.some(s=>s.files.some(c=>c.path===t))??!1}function tn(e,t,o){if(!t)return null;let r=Ve(e[t]);if(r.invalid)try{JSON.parse(e[t])}catch{o.push({code:"invalid-config",path:t})}return r.config}function Eo(e,t,o){if("entry"in t)return t.entry.text?{kind:"entry",...t.entry,text:t.entry.text}:(o.push({code:"no-prompt",path:t.entry.path}),{kind:"none"});let{files:r,c:i,guideRole:s,folderAgentsFound:c,root:l,config:u,explicitPath:b,pointerFiles:p}=t;if(b===null)return{kind:"none"};if(b!==void 0)return{kind:"explicit",path:b};let v=u?je(u)[0]?.prompt:void 0,m=u?go(e,u,l??"")[0]:void 0,f=v?Qe(e,v,{repoKey:"",markerDir:l??"",files:p??r}):null,y=m!==void 0&&Object.hasOwn(r,m),h=y&&!!r[m];if(y&&(h||p!==void 0)&&Object.hasOwn(i.subagentSkillOwners,m))o.push({code:"pointer-owned-by-subagent",path:m});else if(y&&(p===void 0?h:f?.kind==="resolved")){let a=f?.kind==="resolved"?f.prompt:null;return{kind:"pointer",path:m,...a&&a.kind!=="file"?{span:{...a.span},site:{kind:a.kind,start:a.start,symbol:a.symbol}}:{}}}else v&&o.push(p!==void 0&&f?.kind==="secret"?{code:"secret-file",path:f.path}:{code:"pointer-missed",...m?{path:m}:{},detail:v});return i.promptPath?{kind:"dedicated",path:i.promptPath}:i.registry&&i.soulPath?{kind:"registry",path:i.soulPath}:i.claudePath&&s==="prompt"?(o.push({code:"claude-fallback",...Te(e)?{path:i.claudePath}:{}}),{kind:"fallback",path:i.claudePath}):(o.push({code:"no-prompt",path:l??"",...c?{folderAgentsFound:!0}:{}}),{kind:"none"})}function Fo(e,t,o){if(t)for(let r of[...e.subagentSkillPaths,...e.subagentSkillRefPaths])e.subagentSkillOwners[r]||o.push({code:"orphan-skill",path:r})}function on(e,t,o,r,i){let s=[],c=(p,v,m=null)=>({role:p,label:m,path:v});if(r.kind!=="none"&&r.kind!=="registry"&&s.push(c("system prompt",r.path)),o.soulPath&&s.push(c("soul",o.soulPath)),o.knowledgePath&&s.push(c("knowledge",o.knowledgePath)),i)for(let p of o.skillPaths)s.push(c("skill",p,o.skillNames[p]));for(let p of o.templatePaths)s.push(c("template",p));if(i)for(let p of o.skillRefPaths)s.push(c("reference",p,o.skillRefNames[p]));let l=[];o.configPath&&l.push(c("config",o.configPath));for(let p of[o.toolsPath,o.toolsTsPath,o.cliPath])p&&l.push(c("tools",p));o.mcpPath&&l.push(c("mcp",o.mcpPath));let u=new Set([...s.map(p=>p.path),...l.map(p=>p.path),...o.subagentPaths,...Object.keys(o.subagentSkillOwners),...o.skillPaths,...o.skillRefPaths]),b=o.scoped.filter(p=>!u.has(p)&&te(p)).sort();return s.push(...se(b,s.map(p=>t[p.path]),o.stripRoot).map(p=>c("reference",p)),...l),s}export{se as a,yn as b,No as c,Xt as d,Ce as e,ge as f,Qt as g,qe as h,_o as i,qn as j,Un as k,Yn as l,Ht as m,eo as n,Bo as o,Ss as p,Ye as q,Cs as r,be as s,uo as t,Jo as u,Qs as v,Ve as w,sr as x,Xe as y,go as z,yo as A,rr as B,Xo as C,pr as D,bo as E,Po as F,vo as G,si as H,ri as I,ii as J};
@@ -1 +1 @@
1
- import{D as O}from"./K5OTWBTT.js";import{a as N}from"./326F4XNG.js";import{b as F}from"./2PSNOSJ2.js";import{o as x}from"./HPIAEQHE.js";import{e as P}from"./T5TREZCQ.js";async function H(S,t){let a={entriesVisited:0,filesRead:0,bytesRead:0,truncated:!1},d=[],R=()=>({files:t.selected.files,selection:t.selection,skippedFiles:F(d),search:a});if(O(S,{selected:t.selected,codeAgentsFound:t.codeAgentsFound}).kind==="none")return R();let h=await t.port.context();if(!h)return R();let E=[];try{let r=e=>P(e,h.selectedRoot),L=e=>Object.fromEntries(Object.entries(e).map(([c,I])=>[r(c),I])),A={...t.selected,files:L(t.selected.files),root:h.selectedRoot,...t.selected.listedPaths?{listedPaths:t.selected.listedPaths.map(r)}:{},...t.selected.pointerFiles?{pointerFiles:L(t.selected.pointerFiles)}:{},...typeof t.selected.explicitPrompt=="string"?{explicitPrompt:r(t.selected.explicitPrompt)}:{}},l=await t.port.list();a.entriesVisited=l.entriesVisited,a.truncated=l.truncated;let w=new Map(l.entries.map(e=>[e.path,e])),u=new Set,p={},m=x.codeScan,b=()=>O(S,{selected:A,codeAgentsFound:t.codeAgentsFound,entries:l.entries,bodies:p,attemptedPaths:[...u],completeListing:!l.truncated}),n=b();for(;n.kind==="search"&&n.paths.length;){let e=[],c=0;for(let s of n.paths){let i=w.get(s);if(i.size>m.fileBytes){d.push({path:s,reason:"too-large"}),u.add(s);continue}let o=i.size+1;if(e.length>=4||a.filesRead+e.length>=m.files||a.bytesRead+c+o>m.bytes)break;e.push({entry:i,allowance:o}),c+=o}if(!e.length){if(n=b(),n.kind==="none"||!n.paths.length)break;a.truncated=!0,d.push(...n.paths.map(s=>({path:s,reason:"scan-limit"})));break}(await N(e,4,async({entry:s,allowance:i})=>{u.add(s.path),a.filesRead++;try{return await t.port.read(s,i)}catch(o){if(o instanceof Error&&o.name==="AbortError")throw o;return{text:null,bytesRead:i,refusal:"unreadable"}}},{settleStartedOnError:!0})).forEach((s,i)=>{let{entry:o,allowance:k}=e[i],z=Number.isSafeInteger(s.bytesRead)&&s.bytesRead>=0&&s.bytesRead<=k;a.bytesRead+=z?s.bytesRead:k,z&&s.text!==null&&!s.refusal&&s.bytesRead<=m.fileBytes&&s.bytesRead<k&&Buffer.byteLength(s.text)===s.bytesRead?p[o.path]=s.text:d.push({path:o.path,reason:s.refusal??"unreadable"})}),n=b()}let g=b();if(g.kind==="none"||!g.ownedPaths.length)return R();let f={...A.files};for(let e of g.ownedPaths)Object.hasOwn(p,e)&&(f[e]=p[e]);let v=e=>({...e,path:r(e.path),...e.ref===e.path?{ref:r(e.ref)}:{}}),B=t.selection.selected.map(v),M=new Set(B.map(e=>e.path)),j=g.ownedPaths.filter(e=>!M.has(e)&&Object.hasOwn(f,e)).map(e=>({...w.get(e),path:e,size:Buffer.byteLength(f[e]),ref:w.get(e)?.ref??e})),y=t.selection.readingNotes,V={files:f,root:h.selectedRoot,search:a,skippedFiles:F(d),selection:{...t.selection,selected:[...B,...j],totalBytes:t.selection.totalBytes+j.reduce((e,c)=>e+c.size,0),refused:t.selection.refused.map(e=>({...e,path:r(e.path)})),...y?{readingNotes:{instruction:y.instruction.map(r),code:y.code.map(r),agents:y.agents.map(r)}}:{}}};return E=Object.keys(f),V}finally{t.port.finish?.(E)}}export{H as a};
1
+ import{I as O}from"./377MLK4M.js";import{a as N}from"./326F4XNG.js";import{b as F}from"./2PSNOSJ2.js";import{A as x}from"./NIOS7U6C.js";import{e as P}from"./C6X5GDG4.js";async function H(S,t){let a={entriesVisited:0,filesRead:0,bytesRead:0,truncated:!1},d=[],R=()=>({files:t.selected.files,selection:t.selection,skippedFiles:F(d),search:a});if(O(S,{selected:t.selected,codeAgentsFound:t.codeAgentsFound}).kind==="none")return R();let h=await t.port.context();if(!h)return R();let E=[];try{let r=e=>P(e,h.selectedRoot),L=e=>Object.fromEntries(Object.entries(e).map(([c,I])=>[r(c),I])),A={...t.selected,files:L(t.selected.files),root:h.selectedRoot,...t.selected.listedPaths?{listedPaths:t.selected.listedPaths.map(r)}:{},...t.selected.pointerFiles?{pointerFiles:L(t.selected.pointerFiles)}:{},...typeof t.selected.explicitPrompt=="string"?{explicitPrompt:r(t.selected.explicitPrompt)}:{}},l=await t.port.list();a.entriesVisited=l.entriesVisited,a.truncated=l.truncated;let w=new Map(l.entries.map(e=>[e.path,e])),u=new Set,p={},m=x.codeScan,b=()=>O(S,{selected:A,codeAgentsFound:t.codeAgentsFound,entries:l.entries,bodies:p,attemptedPaths:[...u],completeListing:!l.truncated}),n=b();for(;n.kind==="search"&&n.paths.length;){let e=[],c=0;for(let s of n.paths){let i=w.get(s);if(i.size>m.fileBytes){d.push({path:s,reason:"too-large"}),u.add(s);continue}let o=i.size+1;if(e.length>=4||a.filesRead+e.length>=m.files||a.bytesRead+c+o>m.bytes)break;e.push({entry:i,allowance:o}),c+=o}if(!e.length){if(n=b(),n.kind==="none"||!n.paths.length)break;a.truncated=!0,d.push(...n.paths.map(s=>({path:s,reason:"scan-limit"})));break}(await N(e,4,async({entry:s,allowance:i})=>{u.add(s.path),a.filesRead++;try{return await t.port.read(s,i)}catch(o){if(o instanceof Error&&o.name==="AbortError")throw o;return{text:null,bytesRead:i,refusal:"unreadable"}}},{settleStartedOnError:!0})).forEach((s,i)=>{let{entry:o,allowance:k}=e[i],z=Number.isSafeInteger(s.bytesRead)&&s.bytesRead>=0&&s.bytesRead<=k;a.bytesRead+=z?s.bytesRead:k,z&&s.text!==null&&!s.refusal&&s.bytesRead<=m.fileBytes&&s.bytesRead<k&&Buffer.byteLength(s.text)===s.bytesRead?p[o.path]=s.text:d.push({path:o.path,reason:s.refusal??"unreadable"})}),n=b()}let g=b();if(g.kind==="none"||!g.ownedPaths.length)return R();let f={...A.files};for(let e of g.ownedPaths)Object.hasOwn(p,e)&&(f[e]=p[e]);let v=e=>({...e,path:r(e.path),...e.ref===e.path?{ref:r(e.ref)}:{}}),B=t.selection.selected.map(v),M=new Set(B.map(e=>e.path)),j=g.ownedPaths.filter(e=>!M.has(e)&&Object.hasOwn(f,e)).map(e=>({...w.get(e),path:e,size:Buffer.byteLength(f[e]),ref:w.get(e)?.ref??e})),y=t.selection.readingNotes,V={files:f,root:h.selectedRoot,search:a,skippedFiles:F(d),selection:{...t.selection,selected:[...B,...j],totalBytes:t.selection.totalBytes+j.reduce((e,c)=>e+c.size,0),refused:t.selection.refused.map(e=>({...e,path:r(e.path)})),...y?{readingNotes:{instruction:y.instruction.map(r),code:y.code.map(r),agents:y.agents.map(r)}}:{}}};return E=Object.keys(f),V}finally{t.port.finish?.(E)}}export{H as a};
@@ -1 +1 @@
1
- var e={explain:"claude-sonnet-5",generate:"claude-opus-5-5",grade:"claude-opus-5-5",mechanical:"claude-haiku-4-5",chat:"claude-sonnet-5"},a=64e3;export{e as a,a as b};
1
+ var e={explain:"claude-sonnet-5",generate:"claude-opus-5-5",grade:"claude-opus-5-5",mechanical:"claude-haiku-4-5",chat:"claude-sonnet-5"},a=["low","medium","high","max"],t={adaptive:"adaptive",disabled:"disabled"},d=64e3;export{e as a,a as b,t as c,d};
@@ -0,0 +1 @@
1
+ import{a as p,b as m}from"./6U2IR4XB.js";import{a as u}from"./MJGB25S5.js";import{j as c,k as d}from"./X7WZAA7S.js";import{z as n}from"zod";var l=n.lazy(()=>n.union([n.string(),n.number(),n.boolean(),n.null(),n.array(l),n.record(n.string(),l)])),g=n.object({data:n.record(n.string(),l),settings:d,maxInputBytes:n.number().int().positive().optional()}).strict(),h=n.string().min(1).max(128).regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]*$/),w=n.object({maxTokens:n.number().int().positive().optional(),effort:n.enum(["low","medium","high","max"]).optional(),thinking:n.literal("disabled").optional(),promptCache:n.boolean().optional()}).strict(),b=n.object({template:n.string().min(1),inputs:g,answerFormat:n.string().min(1),model:h,limits:w.optional()}).strict();function A(e,i={},r){let o={data:e.inputs,settings:c(i),...r===void 0?{}:{maxInputBytes:r}};return b.parse({...e,answerFormat:Object.hasOwn(s,e.template)?x(e.template,e.answerFormat,i):e.answerFormat,limits:{...e.limits,promptCache:u(i,{template:e.template},e.model).enabled},inputs:JSON.parse(JSON.stringify(o))})}var t=(e,...i)=>Object.freeze({role:e,answerFormats:Object.freeze(i)}),a=m().map(e=>e.name),s=Object.freeze({"derive-findings":t("required",...a),"derive-findings-legacy":t("required",...a),"derive-findings-no-outcome":t("required",...a),"derive-findings-legacy-no-outcome":t("required",...a),"benchmark-judge":t("required","judge"),"judge-code-prompt":t("optional","codeJudge"),"derive-structure":t("optional","structures"),"structure-recheck":t("optional","recheck"),"derive-shape":t("optional","shape"),"scope-items":t("optional","structureScope"),"scope-findings":t("optional","scope"),"check-findings":t("optional","check"),"check-findings-precision-v1":t("optional","check"),"second-opinion":t("optional","opinion"),"explain-sources":t("optional","sourceNotes"),"finding-headlines":t("optional","findingHeadlines")});function S(){return s}function z(e,i,r){let o=r??(e==="derive"?"derive-findings":"check-findings");if(!Object.keys(s).filter(f=>s[f].answerFormats.includes(e==="derive"?"findings":"check")).includes(o))throw new Error("Unknown analysis template");return e==="derive"&&!p(i).switches.expectedOutcome&&!o.endsWith("-no-outcome")?`${o}-no-outcome`:o}function x(e,i,r){let o=i==="findings"?p(r).name:i;if(!Object.hasOwn(s,e)||!s[e].answerFormats.includes(o))throw new Error("Unsupported template answer format");return o}function N(e,i,r){if(r(i),!Object.hasOwn(s,e)||s[e].role!=="optional")throw i}export{g as a,h as b,w as c,b as d,A as e,S as f,z as g,x as h,N as i};
@@ -0,0 +1 @@
1
+ import{a as c}from"./C6X5GDG4.js";var p=/^[A-Za-z0-9_.-]+$/;function a(t){return t.endsWith(".git")?t.slice(0,-4):t}function f(t,r){return p.test(t)&&p.test(r)&&t!=="."&&t!==".."&&r!=="."&&r!==".."}function $(t){let r=t.trim();if(!r)return null;let i=r.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/);if(i){let n=i[1]??"",e=a(i[2]??"");return f(n,e)?{owner:n,repo:e}:null}if(/^https?:\/\//i.test(r)){let n;try{n=new URL(r)}catch{return null}if(n.hostname!=="github.com"&&n.hostname!=="www.github.com")return null;let e=n.pathname.split("/").filter(Boolean),[o,m]=e;if(!o||!m)return null;let u=a(m);if(!f(o,u))return null;if(e.length===2)return{owner:o,repo:u};if(e[2]==="tree"&&e[3]){let d;try{d=decodeURIComponent(e[3])}catch{return null}let h=e.slice(4);if(h.some(s=>s==="."||s===".."||!p.test(s)))return null;let w=h.join("/");return{owner:o,repo:u,ref:d,...w?{dir:w}:{}}}return null}let l=r.match(/^([^/\s]+)\/([^/\s]+)$/);if(l){let n=l[1]??"",e=a(l[2]??"");return f(n,e)?{owner:n,repo:e}:null}return null}function R(t){let r=c(t.dir);return r?`${t.owner}/${t.repo}/${r}`:`${t.owner}/${t.repo}`}function g(t){return`local:${t.replace(/\/+$/,"").split("/").pop()??"repo"}`}function y(t){let r=$(t);return r?R({owner:r.owner,repo:r.repo,dir:r.dir}):null}function U(t){return t.startsWith("upload:")?t:y(t)??(t.startsWith("/")?g(t):null)}function F(t){return c(t.split("/").slice(2).join("/"))||void 0}export{R as a,g as b,y as c,U as d,F as e};
@@ -1 +1 @@
1
- import{c as u,d as p}from"./FSLWD2PE.js";import{a as c,b as l,c as s,d as m,f as i}from"./JF4GYMOZ.js";function n(a,d={}){return JSON.stringify({bundleDescription:a,inputs:d})}import{z as e}from"zod";import{z as t}from"zod";var r=t.object({motivation:t.array(t.object({kind:t.string(),reason:t.string(),evidence:t.string()})),outcomes:t.array(t.object({improvement:t.string(),measurement:t.string()}))}),O=r.extend({motivation:r.shape.motivation.default([]),outcomes:r.shape.outcomes.default([])});var h=e.object({path:e.string().min(1),line:e.number().int().positive().nullable()}),f=e.object({label:e.string(),source:e.literal("mcp").optional(),brand:e.string().nullable().default(()=>null)}),x=["system prompt","soul","knowledge","skill","config","tools","mcp","template","reference","code"],y=e.object({filledAtRunTime:e.boolean().optional(),role:e.enum(x),label:e.string().nullable().default(()=>null),path:e.string().min(1),span:e.object({from:e.number().int(),to:e.number().int()}).optional()}),S=e.object({id:e.string().min(1),label:e.string().min(1),kind:e.enum(["entry","agent","tool","store","exit"]),desc:e.string(),meta:e.string().nullable(),sourceRef:h.nullable(),sourcePaths:e.array(e.string()).optional(),files:e.array(y).default(()=>[]),tools:e.array(f).default(()=>[])}),j=e.object({from:e.string().min(1),to:e.string().min(1),kind:e.enum(["invokes","delegates","reads","writes","emits"]),label:e.string().nullable(),sourceRef:h.nullable()}),_=e.object({nodes:e.array(S),edges:e.array(j),warnings:e.array(e.string())}),v=e.object({...r.shape,title:e.string().min(1).describe(n("analysis-wire-schemas-1")),approach:e.string().min(1).describe(n("analysis-wire-schemas-2")),kind:e.enum(["code","prompt"]),targetFiles:e.array(e.object({path:e.string().min(1),create:e.boolean().nullable()})),...i.shape});function o(a){return e.string().describe(n("analysis-wire-schemas-3",{v0:Object.values(a.enum).join(", ")}))}var w=e.object({nodes:e.array(e.object({id:e.string().min(1),change:o(s),label:e.string().nullable()})),edges:e.array(e.object({from:e.string().min(1),to:e.string().min(1),kind:o(m),change:o(s),detail:e.string().nullable()}))}),k=v.omit({motivation:!0,outcomes:!0}).extend({expectedOutcome:e.string().describe(n("analysis-wire-schemas-4")),summary:i.shape.summary.catch(null),impact:i.shape.impact.catch(null),objective:i.shape.objective.catch(null),blockedBy:i.shape.blockedBy.catch(null),confidence:o(l).nullable().catch(null),status:o(c).nullable().catch(null),alsoFixes:e.array(e.string()).nullable().default([]).catch(()=>[]),delta:w.nullable().catch(null)}),q=e.object({path:e.string().min(1),line:e.number().int().positive(),excerpt:e.string().trim().min(1)}),F=e.object({path:e.string(),line:e.number(),excerpt:e.string()}),b=a=>e.string().describe(n("analysis-wire-schemas-5",{v0:u(a).join(", ")})).nullable().catch(null),g=e.object({kind:e.enum(["ordering","reliability","coverage","cost","safety","correctness"]),severity:e.enum(["low","medium","high","critical"]),title:e.string().min(1).describe(n("analysis-wire-schemas-6")),cause:e.string().min(1),summary:e.string().describe(n("analysis-wire-schemas-7")).catch(""),site:e.object({path:e.string().min(1),line:e.number().int().positive().nullable()}).nullable(),excerpt:e.string().nullable(),category:b({}),otherSites:e.array(F).nullable().default([]).catch(()=>[]),question:e.string().describe(n("analysis-wire-schemas-8")).catch(""),fixes:e.array(k).min(1)}),E=e.object({findings:e.array(g)});function A(a){return p(a)?E:e.object({findings:e.array(g.extend({category:b(a)}))})}export{n as a,_ as b,k as c,q as d,g as e,E as f,A as g};
1
+ import{a as c,c as l,d as s,e as m,g as i}from"./SKVEBOGA.js";import{c as u,d as p}from"./FSLWD2PE.js";function n(a,d={}){return JSON.stringify({bundleDescription:a,inputs:d})}import{z as e}from"zod";import{z as t}from"zod";var r=t.object({motivation:t.array(t.object({kind:t.string(),reason:t.string(),evidence:t.string()})),outcomes:t.array(t.object({improvement:t.string(),measurement:t.string()}))}),O=r.extend({motivation:r.shape.motivation.default([]),outcomes:r.shape.outcomes.default([])});var h=e.object({path:e.string().min(1),line:e.number().int().positive().nullable()}),f=e.object({label:e.string(),source:e.literal("mcp").optional(),brand:e.string().nullable().default(()=>null)}),x=["system prompt","soul","knowledge","skill","config","tools","mcp","template","reference","code"],y=e.object({filledAtRunTime:e.boolean().optional(),role:e.enum(x),label:e.string().nullable().default(()=>null),path:e.string().min(1),span:e.object({from:e.number().int(),to:e.number().int()}).optional()}),S=e.object({id:e.string().min(1),label:e.string().min(1),kind:e.enum(["entry","agent","tool","store","exit"]),desc:e.string(),meta:e.string().nullable(),sourceRef:h.nullable(),sourcePaths:e.array(e.string()).optional(),files:e.array(y).default(()=>[]),tools:e.array(f).default(()=>[])}),j=e.object({from:e.string().min(1),to:e.string().min(1),kind:e.enum(["invokes","delegates","reads","writes","emits"]),label:e.string().nullable(),sourceRef:h.nullable()}),_=e.object({nodes:e.array(S),edges:e.array(j),warnings:e.array(e.string())}),v=e.object({...r.shape,title:e.string().min(1).describe(n("analysis-wire-schemas-1")),approach:e.string().min(1).describe(n("analysis-wire-schemas-2")),kind:e.enum(["code","prompt"]),targetFiles:e.array(e.object({path:e.string().min(1),create:e.boolean().nullable()})),...i.shape});function o(a){return e.string().describe(n("analysis-wire-schemas-3",{v0:Object.values(a.enum).join(", ")}))}var w=e.object({nodes:e.array(e.object({id:e.string().min(1),change:o(s),label:e.string().nullable()})),edges:e.array(e.object({from:e.string().min(1),to:e.string().min(1),kind:o(m),change:o(s),detail:e.string().nullable()}))}),k=v.omit({motivation:!0,outcomes:!0}).extend({expectedOutcome:e.string().describe(n("analysis-wire-schemas-4")),summary:i.shape.summary.catch(null),impact:i.shape.impact.catch(null),objective:i.shape.objective.catch(null),blockedBy:i.shape.blockedBy.catch(null),confidence:o(l).nullable().catch(null),status:o(c).nullable().catch(null),alsoFixes:e.array(e.string()).nullable().default([]).catch(()=>[]),delta:w.nullable().catch(null)}),q=e.object({path:e.string().min(1),line:e.number().int().positive(),excerpt:e.string().trim().min(1)}),F=e.object({path:e.string(),line:e.number(),excerpt:e.string()}),b=a=>e.string().describe(n("analysis-wire-schemas-5",{v0:u(a).join(", ")})).nullable().catch(null),g=e.object({kind:e.enum(["ordering","reliability","coverage","cost","safety","correctness"]),severity:e.enum(["low","medium","high","critical"]),title:e.string().min(1).describe(n("analysis-wire-schemas-6")),cause:e.string().min(1),summary:e.string().describe(n("analysis-wire-schemas-7")).catch(""),site:e.object({path:e.string().min(1),line:e.number().int().positive().nullable()}).nullable(),excerpt:e.string().nullable(),category:b({}),otherSites:e.array(F).nullable().default([]).catch(()=>[]),question:e.string().describe(n("analysis-wire-schemas-8")).catch(""),fixes:e.array(k).min(1)}),E=e.object({findings:e.array(g)});function A(a){return p(a)?E:e.object({findings:e.array(g.extend({category:b(a)}))})}export{n as a,_ as b,k as c,q as d,g as e,E as f,A as g};
@@ -0,0 +1,14 @@
1
+ import{a as A}from"./Y7JGSUOA.js";import{d as M}from"./3MTXB4MK.js";import{j as U}from"./K2GNDX3W.js";import{a as P}from"./HTLIRVP7.js";import{a as K}from"./QDYMR6KS.js";import{b}from"./E7TFIHC5.js";import{d as S}from"./ZTOVBAG7.js";import{a as C}from"./74FPPPIG.js";import{d as L,e as N,f as v,g as D,h as $}from"./5DGPLXYB.js";import{a as w,b as E}from"./MJGB25S5.js";import{c as j}from"./FSLWD2PE.js";var J=Object.freeze({"benchmark-judge":"score_match","judge-code-prompt":"judge-code-prompt","derive-findings":"derive_findings","derive-findings-legacy":"derive_findings","derive-findings-no-outcome":"derive_findings","derive-findings-legacy-no-outcome":"derive_findings","derive-structure":"derive_structure","structure-recheck":"structure_recheck","derive-shape":"derive_shape","scope-items":"scope_check_structure","scope-findings":"scope_check","explain-sources":"explain_sources","finding-headlines":"finding_headlines","check-findings":"finding_check","check-findings-precision-v1":"finding_check","second-opinion":"finding_second_opinion"});function re(t){if(!Object.hasOwn(J,t))throw new Error("Unknown analysis template");return J[t]}function z(t){return Object.fromEntries(Object.entries(t).map(([e,o])=>[e,{...o,route:re(e)}]))}import{z as T}from"zod";function F(t,e){if(Buffer.byteLength(t)<=e)return t;let o=0,r=Math.min(t.length,e);for(;o<r;){let a=Math.ceil((o+r)/2);Buffer.byteLength(t.slice(0,a))<=e?o=a:r=a-1}return r>0&&/[\uD800-\uDBFF]/.test(t[r-1])&&r--,t.slice(0,r)}function G(t){let{bundleText:e}=t,o=i=>Buffer.byteLength(JSON.stringify(i));function r(i){let n=[];for(let s of i){if(o([...n,""])>4e3)break;let d=0,l=Buffer.byteLength(s);for(;d<l;){let m=Math.ceil((d+l)/2);o([...n,F(s,m)])<=4e3?d=m:l=m-1}n.push(F(s,d))}return n}function a(i,n=!1){return i.map(s=>typeof s!="string"&&s.kind==="no-core"&&n?e("analysis-check-input-1"):P([s])[0])}function p(i){let n=i.citedFiles===void 0?"":',"citedFiles":'+JSON.stringify(i.citedFiles),s=a(i.diagnostics,!0),d=i.citedFiles===void 0?s:r(s),l=[{text:'{"coreFiles":'+JSON.stringify(i.coreFiles)},{text:n+',"findings":'+JSON.stringify(i.findings)+',"diagnostics":'+JSON.stringify(d)+"}"}];return E(l,w({},{template:"check-findings"}).breakpoints)}function c(i){return Buffer.byteLength(p(i).map(n=>n.text).join(""))}return{checkDiagnosticsText:a,checkPromptBlocks:p,checkPayloadBytes:c}}function R(t,e={}){return t.length?t.map(o=>{let r=e.includeFiles===!1?"":`; files ${o.files.join(", ")||"none"}`;return`${o.ref} "${o.title}" (${o.subKind}): frozen ${o.frozen.join(", ")||"none"}; declined ${o.declined.join(", ")||"none"}${r}`}).join(`
2
+ `):"none"}function _(t){let{bundleText:e}=t,o=e("analysis-scope-check-1"),r=e("analysis-split-check-scope-rule-1"),a=[e("analysis-derive-structures-1"),e("analysis-derive-structures-2"),e("analysis-derive-structures-3"),e("analysis-derive-structures-4"),e("analysis-derive-structures-5"),e("analysis-derive-structures-6"),e("analysis-derive-structures-7"),e("analysis-derive-structures-8")].join(`
3
+ `),p=e("analysis-derive-structures-10");function c(n){return n.map(s=>({unit:JSON.stringify(s.unitKey),kind:s.kind,name:JSON.stringify(s.name),location:JSON.stringify(`${s.sourcePath}:${s.sourceLine}${s.sourceEndLine?`\u2013${s.sourceEndLine}`:""}`)}))}function i(n){return e("code-finding-note",{codeSources:c(n)})}return{RULE:o,SPLIT_SCOPE_RULE:r,SUB_KIND_DEFS:a,STRUCTURE_SCOPE_RULE:p,codeSourceLabels:c,codeFindingNote:i}}import{posix as V}from"node:path";function Q(t){let{bundleText:e}=t,o=.25,r=4;function a(c){let i=new Set(c.map(l=>l.name)),n=new Map(c.map(l=>[l.name,new Set(l.skills.filter(m=>m!==l.name&&i.has(m)))])),s=new Map;for(let l of n.values())for(let m of l)s.set(m,(s.get(m)??0)+1);let d=Math.max(r,(c.length-1)*o);return c.map(l=>({name:l.name,linkedFrom:s.get(l.name)??0,linksTo:n.get(l.name).size})).filter(l=>l.linkedFrom>=d||l.linksTo>=d)}function p(c){let i=a(c);if(!i.length)return null;let n=i.map(s=>e("shape-shared-skill",s));return e("analysis-split-check-shared-skills-1",{v0:n.join(`
4
+ `)})}return{sharedSkillsOf:a,sharedSkillsText:p}}function W(t){let{bundleText:e}=t,{shapeFindingsText:o}=M(t),{sharedSkillsText:r}=Q(t);function a(c){let i=new Map(c.map((n,s)=>[n.name,`s${s+1}`]));return e("shape-skills",{skills:c.map(n=>({...n,id:i.get(n.name),refs:n.references.map(s=>V.relative(V.dirname(n.path),s)).join(","),tools:n.tools.join(","),links:n.skills.map(s=>i.get(s)).join(","),hasRefs:n.references.length>0,hasTools:n.tools.length>0,hasLinks:n.skills.length>0,hasDetails:n.references.length>0||n.tools.length>0||n.skills.length>0}))})}function p(c){return e("shape-inventory",{agent:c.agent,v0:a(c.skills),shared:r(c.skills),tools:c.tools.map(i=>({...i,skills:i.skills.join(", ")})),subAgents:c.subAgents.map(i=>({...i,tools:i.tools.join(", "),skills:a(i.skills)})),prompts:c.prompts,knowledge:c.knowledge.map(i=>({...i,headings:i.sections.map(n=>`${n.startLine}-${n.endLine} ${n.heading}`).join(`
5
+ `)})),findings:o(c.findings)})}return{inventoryText:p}}function X(t){let{SPLIT_SCOPE_RULE:e}=_(t),{inventoryText:o}=W(t);function r(a){return{scopeRule:e,open:R(a.open),inventory:o(a)}}return{shapeInputs:r,SPLIT_SCOPE_RULE:e}}function O(t){let{bundleText:e}=t,o={contradiction:{def:e("analysis-categories-1"),evidence:e("analysis-categories-2")},ambiguity:{def:e("analysis-categories-3"),evidence:e("analysis-categories-4")},bypassable_requirement:{def:e("analysis-categories-5"),evidence:e("analysis-categories-6")},stale_fact:{def:e("analysis-categories-7"),evidence:e("analysis-categories-8")},description_mismatch:{def:e("analysis-categories-9"),evidence:e("analysis-categories-10")},ungoverned_tool:{def:e("analysis-categories-11"),evidence:e("analysis-categories-12")},untrusted_instructions:{def:e("analysis-categories-13"),evidence:e("analysis-categories-14")},better_as_code:{def:e("analysis-categories-15"),evidence:e("analysis-categories-16")}},r={untrusted_instructions:{derive:"analysis-categories-17",check:"analysis-categories-18"},better_as_code:{derive:"analysis-categories-19",check:"analysis-categories-20"}};function a(i){return j(i).map(n=>{let s=o[n];return e("category-entry",{category:n,definition:s.def,evidence:s.evidence})}).join(`
6
+ `)}function p(i,n){return j(i).map(s=>{let d=r[s]?.[n];return d?`
7
+
8
+ ${e(d,{promptAgreement:S(i)})}`:""}).join("")}function c(){return[e("analysis-categories-21"),e("analysis-categories-22"),e("analysis-categories-23"),e("analysis-categories-24"),e("analysis-categories-25"),e("analysis-categories-26")].join(`
9
+ `)}return{categoryBlock:a,categoryRules:p,impactBlock:c}}function Y(t){let{checkPromptBlocks:e}=G(t),{shapeInputs:o}=X(t),{templates:r}=t,{categoryBlock:a,categoryRules:p}=O(t);function c(i,n,s,d={}){if(i==="derive-shape")return{...n,...o(n.inventoryData)};if(i.startsWith("check-findings")||i==="second-opinion"){let l=e(n.checkInput),m=a(s),u=p(s,"check"),x=S(s),h={...n,promptAgreement:x,categories:m,categoryRules:u,core:l[0].text,claims:l[1].text};if(i!=="second-opinion")return h;let g;try{if(typeof n.checkTemplate!="string")throw new Error;g=D("check",s,n.checkTemplate)}catch{throw new Error("Unknown check template")}let y=typeof g=="string"&&Object.hasOwn(d,g)?d[g]:void 0;if(y?.route!=="finding_check"||y.system===void 0)throw new Error("Unknown check template");return{...h,checkSystem:b(y.system,{promptAgreement:x,categories:m,categoryRules:u},r)}}return n}return{stageInputs:c}}var Z="<<<BEGIN REPOSITORY TEXT>>>",q="<<<END REPOSITORY TEXT>>>";function I(t){let e=t;for(let o="";o!==e;)o=e,e=e.replaceAll(Z,"").replaceAll(q,"");return`${Z}
10
+ ${e.replaceAll("{{","{ {")}
11
+ ${q}`}function ee(t,e){return{location:I(String(t.location)),text:I(String(t.text)),usage:I(t.usage===null?e.bundleText("code-check-no-usage"):String(t.usage))}}function te(t){let{categoryBlock:e,categoryRules:o,impactBlock:r}=O(t),{codeSourceLabels:a,codeFindingNote:p,RULE:c,SPLIT_SCOPE_RULE:i,STRUCTURE_SCOPE_RULE:n,SUB_KIND_DEFS:s}=_(t),{bundleText:d}=t;function l(m,u,x){if(m==="finding-headlines")return{data:JSON.stringify(u.evidence),choiceCategories:C.join(", ")};if(m==="judge-code-prompt")return ee(u,t);if(m.startsWith("derive-findings"))return{...u,promptAgreement:S(x),pass:u.pass??null,codeSources:a(u.codeSources??[]),categories:e(x),categoryRules:o(x,"derive"),impacts:r()};if(m==="derive-structure"){let h=u.loadModesData,g=u.openStructuresData,y=u.findingsData;return{...u,findings:(y??[]).map(f=>({...f,category:f.category??"\u2014",excerpt:f.excerpt??"",site:f.site?{...f.site,line:f.site.line??"?"}:null,otherSites:(f.otherSites??[]).map(k=>({...k,line:k.line??"?",excerpt:k.excerpt??""})),question:f.question??"",options:f.fixes.map(k=>k.title)})),subKinds:s,scopeRule:n,open:R(g,{includeFiles:!1}),loadModes:h.map(f=>{let k=f.evidenceKind?d("load-evidence-skill-frontmatter"):f.evidence;return d("analysis-derive-structures-11",{v0:f.path,v1:f.mode,v2:f.unit??"no unit",v3:f.via,v4:k?` (${k})`:""})}).join(`
12
+ `)}}if(m==="scope-items"){let h=u.scopeRuleId==="structure"?n:u.scopeRuleId==="split"?i:"";return{items:u.items??[],scopeRule:h}}if(m==="scope-findings"){let h=u.codeSources,g=u.codeFiles,y=p(h);return{...u,system:y?d("scope-system-code")+`
13
+
14
+ `+y:c,code:g.length?d("code-evidence",{files:JSON.stringify(g)}):""}}return u}return{enrichRequestInputs:l,headlineFallbackQuestion:()=>t.description("finding-headlines-fallback-question")}}function ne(t,e){if(!Object.hasOwn(e.templates,t.template))throw new Error(`Unknown template: ${t.template}`);if(!Object.hasOwn(e.answerFormats,t.answerFormat))throw new Error(`Unknown answer format: ${t.answerFormat}`);let o=e.templates[t.template],r=t.limits??{};if(r.maxTokens!==void 0&&(!Number.isSafeInteger(r.maxTokens)||r.maxTokens<=0))throw new Error("Invalid maxTokens");let a=b(o.prompt,t.inputs,e.includes),p=o.promptBlocks?.map(c=>({text:b(c.text,t.inputs,e.includes),...c.cache?{cache:!0}:{}}));if(p&&p.map(c=>c.text).join("")!==a)throw new Error("Registered blocks must match the prompt");return{route:o.route??t.template,model:t.model,...o.system===void 0?{}:{system:b(o.system,t.inputs,e.includes)},prompt:a,...p?{promptBlocks:p}:{},schema:e.answerFormats[t.answerFormat],...r.maxTokens===void 0?{}:{maxTokens:r.maxTokens},...r.effort===void 0?{}:{effort:r.effort},...r.thinking===void 0?{}:{thinking:r.thinking}}}var B=class extends Error{name="InputBudgetError"};function nt(t){let{templates:e,descriptions:o}=t,{withDescriptions:r}=A(t),a=U(r,t.description);function p(){let s={prompt:e["check-evidence"],promptBlocks:[{text:"{{core}}"},{text:"{{claims}}"}]},d=z({"benchmark-judge":{system:e["benchmark-judge"],prompt:"{{data}}"},"judge-code-prompt":{prompt:e["judge-code-prompt"]},"derive-findings":{prompt:e["derive-findings"]},"derive-findings-legacy":{prompt:e["derive-findings-legacy"]},"derive-findings-no-outcome":{prompt:e["derive-findings-no-outcome"]},"derive-findings-legacy-no-outcome":{prompt:e["derive-findings-legacy-no-outcome"]},"derive-structure":{prompt:e["derive-structure"]},"structure-recheck":{system:e["structure-recheck-system"],prompt:e["structure-recheck"]},"derive-shape":{prompt:e["derive-shape"]},"scope-items":{prompt:e["scope-items"],system:e["scope-system"]},"scope-findings":{prompt:e["scope-findings"],system:"{{system}}"},"check-findings":{...s,system:e["check-findings"]},"check-findings-precision-v1":{...s,system:e["check-findings-precision-v1"]},"second-opinion":{...s,system:e["opinion-system"]},"explain-sources":{prompt:e["source-evidence"],system:e["explain-sources"]},"finding-headlines":{system:e["finding-headlines"],prompt:"{{data}}"}});return Object.fromEntries(Object.entries(d).map(([l,m])=>[l,{...m,...m.promptBlocks?{promptBlocks:E(m.promptBlocks,w({},{template:l}).breakpoints)}:{}}]))}function c(){return{templates:p(),includes:e,answerFormats:a,descriptions:o,policy:v()}}function i(s,d={}){let l=Object.hasOwn(v(),s.template)?$(s.template,s.answerFormat,d):s.answerFormat;return ie({...s,answerFormat:l},c(),d)}function n(s,d={}){let l=se(N(s,d),c());return{...l,schema:l.schema}}return{instructionRegistry:c,analysisModelRequest:i,analysisRequest:n,buildAnalysisCall:s=>se(s,c()),withDescriptions:r,callInputBytes:oe}}function oe(t){return Buffer.byteLength(t.prompt)+Buffer.byteLength(t.system??"")}function ie(t,e,o){let r=e.policy??v();if(!Object.hasOwn(r,t.template)||!r[t.template].answerFormats.includes(t.answerFormat))throw new Error("Unsupported template answer format");if(!Object.hasOwn(v(),t.template))return{...t,inputs:t.inputs};let a=K({templates:e.includes??{},descriptions:e.descriptions??{}}),{stageInputs:p}=Y(a),{enrichRequestInputs:c}=te(a);return{...t,inputs:c(t.template,p(t.template,t.inputs,o,e.templates),o)}}function se(t,e){let o=L.parse({template:t.template,inputs:t.inputs,answerFormat:t.answerFormat,model:t.model,...t.limits?{limits:t.limits}:{}}),{data:r,settings:a,maxInputBytes:p}=o.inputs,c=ne(ie({...o,inputs:r},e,a),e);if(p!==void 0&&oe(c)>p)throw new B("serialized evidence exceeds the priced input budget");let i=o.template==="judge-code-prompt"?T.object({path:T.string(),line:T.number()}).parse(r.at):o.template==="structure-recheck"?T.object({childId:T.string()}).parse(r):{};return{...c,...Object.hasOwn(v(),o.template)&&o.template!=="benchmark-judge"?{context:i}:{}}}export{ne as a,re as b,F as c,G as d,_ as e,Q as f,W as g,X as h,O as i,Y as j,te as k,B as l,nt as m,oe as n,se as o};
@@ -0,0 +1 @@
1
+ import{a as f,c as r,e as m,g as p}from"./6B2HILSY.js";import{b as o}from"./SKVEBOGA.js";import{a as c}from"./A7WJJMRY.js";import{e as x}from"./KWECQJ6X.js";import{a as d,b as u}from"./FSLWD2PE.js";import{z as s}from"zod";var g={expectedOutcome:{setting:"CF_FIX_EXPECTED_OUTCOME",enabled:e=>e.CF_FIX_EXPECTED_OUTCOME!=="0",suffix:"-no-outcome",suffixWhen:!1},untrustedContent:{setting:"CF_UNTRUSTED_CONTENT_CHECK",enabled:d,suffix:"-no-untrusted",suffixWhen:!1},betterAsCode:{setting:"CF_FINDING_BETTER_AS_CODE",enabled:u,suffix:"-better-as-code",suffixWhen:!0},audience:{setting:"CF_FINDING_AUDIENCE",enabled:c,suffix:"-audience",suffixWhen:!0}};function h(e){let t=Object.entries(g).map(([n,i])=>({key:n,rule:i,enabled:i.enabled(e)}));return{name:`findings${t.map(({rule:n,enabled:i})=>i===n.suffixWhen?n.suffix:"").join("")}`,switches:Object.fromEntries(t.map(({key:n,enabled:i})=>[n,i])),settings:Object.fromEntries(t.map(({rule:n,enabled:i})=>[n.setting,i?"1":"0"]))}}function D(){let e=[{}];for(let{setting:t}of Object.values(g))e=e.flatMap(n=>["0","1"].map(i=>({...n,[t]:i})));return e.map(t=>({...h(t),schema:F(t)}))}function b(e){return s.object({findings:s.array(e.shape.findings.element.extend({fixes:s.array(r.omit({expectedOutcome:!0})).min(1)}))})}var E=r.extend({expectedOutcome:s.string().default("")}),C=s.array(m.extend({audience:o.optional().catch(void 0),fixes:s.array(E).min(1),sourceNotes:x.nullable().optional().catch(null)}));function F(e){let t=h(e),n=p(t.settings),a=(t.switches.expectedOutcome?n:b(n)).shape.findings.element,l=o.describe(f("finding-audience"));return s.object({findings:s.array(t.switches.audience?a.extend({audience:l.catch(void 0)}):a)})}function W(e){return O(e.findings)}function O(e){return C.parse(e)}export{h as a,D as b,F as c,W as d,O as e};
@@ -0,0 +1 @@
1
+ function n(e,r){return e.CF_FINDING_AUDIENCE==="0"?!1:e.CF_FINDING_AUDIENCE==="1"?!0:typeof r=="object"&&r!==null&&"answerFormats"in r&&Array.isArray(r.answerFormats)&&r.answerFormats.includes("findings-audience")}function i(e,r){return Object.freeze({...e,CF_FINDING_AUDIENCE:n(e,r)?"1":"0"})}export{n as a,i as b};
@@ -0,0 +1 @@
1
+ function i(r,o={}){let n=0,t=r.length;if(!o.trailingOnly)for(;n<t&&r[n]==="/";)n+=1;for(;t>n&&r[t-1]==="/";)t-=1;return r.slice(n,t)}function e(r){return i(r??"")}function c(r){return e(r)||void 0}function l(r,o){let n=e(o);if(!n)return r;let t=`${n}/`;return r.startsWith(t)?r.slice(t.length):null}function f(r,o){return l(r,o)!==null}function p(r,o){let n=e(o);return n?`${n}/${r}`:r}export{e as a,c as b,l as c,f as d,p as e};