@moda-ai/cli 1.55.76 → 1.55.78
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.
- package/dist/{agent-gtq5t0av.js → agent-9bb3wryr.js} +3 -3
- package/dist/{cli-09ym9jac.js → cli-8y7tzqkf.js} +3 -3
- package/dist/{cli-5bh9tky2.js → cli-pqnd8are.js} +275 -41
- package/dist/{cli-ven3j7j1.js → cli-rp1079xm.js} +2 -2
- package/dist/cli.js +7 -7
- package/dist/{doctor-94cwvz8p.js → doctor-swctmdap.js} +2 -2
- package/dist/{harness-github-actions-d9tnwd05.js → harness-github-actions-pdm6ee74.js} +1 -1
- package/dist/{harness-esh9wa9a.js → harness-nryjq52p.js} +3 -1
- package/dist/{index-f89md6eg.js → index-ms5t7pph.js} +1 -1
- package/dist/{index-vx8ym8p0.js → index-xqa9km2a.js} +1 -1
- package/dist/{index-p0cxzngv.js → index-y5ay9p49.js} +3 -3
- package/dist/{prompt-attribution-cswtxj5v.js → prompt-attribution-2srq4cp7.js} +1 -1
- package/dist/prompt-source-mcp.js +1 -1
- package/dist/{prompts-cn8a2cwp.js → prompts-tr91zg4n.js} +1 -1
- package/dist/{sync-ce5j09v7.js → sync-nfdd69cw.js} +2 -2
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildDoctorReport
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-rp1079xm.js";
|
|
4
4
|
import"./cli-rrggdmf8.js";
|
|
5
|
-
import"./cli-
|
|
5
|
+
import"./cli-8y7tzqkf.js";
|
|
6
6
|
import"./cli-mm48br00.js";
|
|
7
7
|
import {
|
|
8
8
|
readHarnessSyncState
|
|
@@ -95,7 +95,7 @@ async function buildAgentContext(context) {
|
|
|
95
95
|
const graph = readHarnessGraphIfPresent(context.cwd);
|
|
96
96
|
const reportState = readHarnessReportState(context.cwd);
|
|
97
97
|
const syncState = readHarnessSyncState(context.cwd);
|
|
98
|
-
const harness = graph ? await import("./harness-
|
|
98
|
+
const harness = graph ? await import("./harness-nryjq52p.js") : undefined;
|
|
99
99
|
const topFindings = doctor.checks.filter((check) => check.status === "fail" || check.status === "warning").slice(0, 12).map(checkToFinding);
|
|
100
100
|
const evidenceRefs = [
|
|
101
101
|
...doctor.checks.map(checkToEvidenceRef),
|
|
@@ -5768,7 +5768,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
|
|
|
5768
5768
|
const analyzedDefinitions = new Map;
|
|
5769
5769
|
if (flags["no-analyze"] !== "true") {
|
|
5770
5770
|
options.onProgress?.("Analyzing prompt sources before sync.");
|
|
5771
|
-
const { analyzeHarnessPrompts } = await import("./harness-
|
|
5771
|
+
const { analyzeHarnessPrompts } = await import("./harness-nryjq52p.js");
|
|
5772
5772
|
const result = await analyzeHarnessPrompts({
|
|
5773
5773
|
rootDir: process.cwd(),
|
|
5774
5774
|
existing: established.flatMap((prompt) => prompt.sourceDefinition ? [prompt.sourceDefinition.source] : []),
|
|
@@ -5796,7 +5796,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
|
|
|
5796
5796
|
const mergedSources = mergePromptSources(manifest.sources, extraSources);
|
|
5797
5797
|
const manifestUpdate = stableJson(mergedSources) === stableJson(mergePromptSources(manifest.sources, [])) ? undefined : $stringify({ version: 2, prompt_paths: manifest.promptPaths, sources: mergedSources });
|
|
5798
5798
|
const prompts = await discoverPrompts(extraSources);
|
|
5799
|
-
const { checkPromptAttribution } = await import("./prompt-attribution-
|
|
5799
|
+
const { checkPromptAttribution } = await import("./prompt-attribution-2srq4cp7.js");
|
|
5800
5800
|
const attribution = checkPromptAttribution(process.cwd(), prompts.map((prompt) => prompt.key));
|
|
5801
5801
|
const brokenAttribution = attribution.references.filter((reference) => reference.status === "missing");
|
|
5802
5802
|
if (brokenAttribution.length) {
|
|
@@ -6102,7 +6102,7 @@ async function migratePromptManifest(options = {}) {
|
|
|
6102
6102
|
let addedSources = [];
|
|
6103
6103
|
let pendingSources = [];
|
|
6104
6104
|
if (options.discover) {
|
|
6105
|
-
const { analyzeHarnessPrompts } = await import("./harness-
|
|
6105
|
+
const { analyzeHarnessPrompts } = await import("./harness-nryjq52p.js");
|
|
6106
6106
|
const result = await analyzeHarnessPrompts({
|
|
6107
6107
|
rootDir: root,
|
|
6108
6108
|
existing: manifest.sources,
|
|
@@ -17654,7 +17654,7 @@ function toolResultIsPrompt(owner, pieces) {
|
|
|
17654
17654
|
if (own.length === 0)
|
|
17655
17655
|
return false;
|
|
17656
17656
|
const text = withoutLabels(own.join(`
|
|
17657
|
-
`));
|
|
17657
|
+
`)).replace(/(^|[.!?;\n]\s*)[A-Za-z][\w-]*\s+(?:(?:was|were|is|are|has been|have been)\s+)?(?:saved|cleared|completed|created|updated|deleted|removed|scheduled|sent|loaded|finished|cancelled|canceled)\b(?=\s*(?:$|[.!?,;:(\n]))/gi, "$1");
|
|
17658
17658
|
if (own.every((piece) => ERROR_TEXT.test(piece)) && !IMPERATIVE.test(text))
|
|
17659
17659
|
return false;
|
|
17660
17660
|
if (!hasDirective(text) && !IMPERATIVE.test(text))
|
|
@@ -19149,7 +19149,7 @@ async function runHarnessCommand(context) {
|
|
|
19149
19149
|
throw new CliInputError("Focused remote prompt analysis is not supported yet.", "Use local --analyst=claude|codex|cursor|local-scan, or drop --concern for a full remote report.");
|
|
19150
19150
|
}
|
|
19151
19151
|
if (context.flags["github-actions"] === "true") {
|
|
19152
|
-
const { runGithubActionsAnalyze } = await import("./harness-github-actions-
|
|
19152
|
+
const { runGithubActionsAnalyze } = await import("./harness-github-actions-pdm6ee74.js");
|
|
19153
19153
|
const result = await runGithubActionsAnalyze(rootDir, {
|
|
19154
19154
|
writeReport: (report2) => {
|
|
19155
19155
|
const normalized = normalizeHarnessReport(report2);
|
|
@@ -19295,8 +19295,8 @@ async function runHarnessCommand(context) {
|
|
|
19295
19295
|
}
|
|
19296
19296
|
const { artifacts, unknowns } = deterministicGraphItems(rootDir, promote === "all" ? undefined : promote);
|
|
19297
19297
|
tagComponentStatus({ runtimeAgents: [], artifacts }, rootDir);
|
|
19298
|
-
const { extractHarnessWithContext: extractHarnessWithContext2 } = await import("./index-
|
|
19299
|
-
const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-
|
|
19298
|
+
const { extractHarnessWithContext: extractHarnessWithContext2 } = await import("./index-xqa9km2a.js");
|
|
19299
|
+
const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-ms5t7pph.js");
|
|
19300
19300
|
let components = { runtimeAgents: [], artifacts: [], warnings: [] };
|
|
19301
19301
|
if (promote === "all" || promote === "topology" || promote === "tools") {
|
|
19302
19302
|
const { result, ctx } = extractHarnessWithContext2(rootDir);
|
|
@@ -19330,8 +19330,8 @@ async function runHarnessCommand(context) {
|
|
|
19330
19330
|
}
|
|
19331
19331
|
case "extract": {
|
|
19332
19332
|
writeHumanProgress(context, "Harness extract: tracing model call sites (no LLM, no network)...");
|
|
19333
|
-
const { extractHarnessWithContext: extractHarnessWithContext2, serializeExtractResult } = await import("./index-
|
|
19334
|
-
const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-
|
|
19333
|
+
const { extractHarnessWithContext: extractHarnessWithContext2, serializeExtractResult } = await import("./index-xqa9km2a.js");
|
|
19334
|
+
const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-ms5t7pph.js");
|
|
19335
19335
|
const { result, ctx } = extractHarnessWithContext2(rootDir, { fresh: true });
|
|
19336
19336
|
const artifacts = deterministicArtifacts(rootDir);
|
|
19337
19337
|
tagComponentStatus({ runtimeAgents: [], artifacts }, rootDir);
|
|
@@ -19942,6 +19942,79 @@ function modelIdsUsedInSource(rootDir, ids) {
|
|
|
19942
19942
|
found.add(id);
|
|
19943
19943
|
return found;
|
|
19944
19944
|
}
|
|
19945
|
+
function deterministicOnlyArtifactTypes(raw = process.env.MODA_HARNESS_DETERMINISTIC_CONCERNS) {
|
|
19946
|
+
const types = new Set;
|
|
19947
|
+
for (const concern of String(raw ?? "").toLowerCase().split(",").map((value) => value.trim())) {
|
|
19948
|
+
if (concern === "evals")
|
|
19949
|
+
types.add("eval");
|
|
19950
|
+
if (concern === "prompts")
|
|
19951
|
+
types.add("prompt");
|
|
19952
|
+
}
|
|
19953
|
+
return types;
|
|
19954
|
+
}
|
|
19955
|
+
function mergeDeterministicReplacement(report, rootDir, options) {
|
|
19956
|
+
const types = deterministicOnlyArtifactTypes();
|
|
19957
|
+
const old = report.graph.artifacts.filter((artifact) => types.has(artifact.type));
|
|
19958
|
+
if (old.length === 0) {
|
|
19959
|
+
mergeDeterministicArtifacts(report.graph, rootDir, options);
|
|
19960
|
+
return;
|
|
19961
|
+
}
|
|
19962
|
+
const ids = new Set(old.map((artifact) => artifact.id));
|
|
19963
|
+
const agentLinks = report.graph.runtimeAgents.map((agent) => ({ id: agent.id, artifacts: [...agent.artifactIds ?? []] }));
|
|
19964
|
+
const familyLinks = report.graph.agentFamilies.map((family) => ({ id: family.id, artifacts: [...family.sharedArtifactIds ?? []] }));
|
|
19965
|
+
const edges = report.graph.relationships.filter((edge) => ids.has(edge.from) || ids.has(edge.to));
|
|
19966
|
+
const removedClaims = report.claims?.filter((claim) => claim.kind === "artifact" && ids.has(claim.subjectId) || claim.kind === "relationship" && String(claim.subjectId).split("->").some((id) => ids.has(id))) ?? [];
|
|
19967
|
+
const discardedCitations = new Set(removedClaims.flatMap((claim) => claim.citationIds ?? []));
|
|
19968
|
+
const removedClaimSet = new Set(removedClaims);
|
|
19969
|
+
if (report.claims)
|
|
19970
|
+
report.claims = report.claims.filter((claim) => !removedClaimSet.has(claim));
|
|
19971
|
+
const remainingCitations = new Set([...(report.claims ?? []).flatMap((claim) => claim.citationIds ?? []), ...(report.unknowns ?? []).flatMap((unknown) => unknown.citationIds ?? [])]);
|
|
19972
|
+
report.citations = report.citations.filter((citation) => !discardedCitations.has(citation.id) || remainingCitations.has(citation.id));
|
|
19973
|
+
const retainedCitationIds = new Set(report.citations.map((citation) => citation.id));
|
|
19974
|
+
for (const unknown of report.unknowns ?? [])
|
|
19975
|
+
unknown.citationIds = unknown.citationIds.filter((id) => retainedCitationIds.has(id));
|
|
19976
|
+
removeArtifacts(report, ids);
|
|
19977
|
+
mergeDeterministicArtifacts(report.graph, rootDir, options);
|
|
19978
|
+
const replacements = new Map;
|
|
19979
|
+
for (const artifact of old) {
|
|
19980
|
+
const paths = artifactPaths(artifact);
|
|
19981
|
+
const exact = report.graph.artifacts.filter((candidate) => candidate.type === artifact.type && artifactPaths(candidate).some((path) => paths.includes(path)));
|
|
19982
|
+
const matches = exact.length ? exact : report.graph.artifacts.filter((candidate) => candidate.type === artifact.type && candidate.type === "eval" && artifactPaths(candidate).some((path) => paths.some((source) => evalSuiteKey(source) !== undefined && evalSuiteKey(source) === evalSuiteKey(path))));
|
|
19983
|
+
replacements.set(artifact.id, matches);
|
|
19984
|
+
const owners = new Set([...artifact.usedByAgentIds ?? [], ...artifact.ownedByAgentId ? [artifact.ownedByAgentId] : []]);
|
|
19985
|
+
for (const link of agentLinks)
|
|
19986
|
+
if (link.artifacts.includes(artifact.id))
|
|
19987
|
+
owners.add(link.id);
|
|
19988
|
+
for (const candidate of matches) {
|
|
19989
|
+
candidate.usedByAgentIds = [...new Set([...candidate.usedByAgentIds ?? [], ...owners])];
|
|
19990
|
+
if (candidate.usedByAgentIds.length === 1)
|
|
19991
|
+
candidate.ownedByAgentId = candidate.usedByAgentIds[0];
|
|
19992
|
+
else
|
|
19993
|
+
delete candidate.ownedByAgentId;
|
|
19994
|
+
}
|
|
19995
|
+
}
|
|
19996
|
+
const replace = (oldIds) => oldIds.flatMap((id) => replacements.get(id)?.map((artifact) => artifact.id) ?? (ids.has(id) ? [] : [id]));
|
|
19997
|
+
for (const agent of report.graph.runtimeAgents) {
|
|
19998
|
+
const original = agentLinks.find((link) => link.id === agent.id);
|
|
19999
|
+
if (original)
|
|
20000
|
+
agent.artifactIds = [...new Set([...agent.artifactIds ?? [], ...replace(original.artifacts)])];
|
|
20001
|
+
}
|
|
20002
|
+
for (const family of report.graph.agentFamilies) {
|
|
20003
|
+
const original = familyLinks.find((link) => link.id === family.id);
|
|
20004
|
+
if (original)
|
|
20005
|
+
family.sharedArtifactIds = [...new Set([...family.sharedArtifactIds ?? [], ...replace(original.artifacts)])];
|
|
20006
|
+
}
|
|
20007
|
+
const seen = new Set(report.graph.relationships.map((edge) => `${edge.type}|${edge.from}|${edge.to}`));
|
|
20008
|
+
for (const edge of edges)
|
|
20009
|
+
for (const from of replace([edge.from]))
|
|
20010
|
+
for (const to of replace([edge.to])) {
|
|
20011
|
+
const key = `${edge.type}|${from}|${to}`;
|
|
20012
|
+
if (!seen.has(key)) {
|
|
20013
|
+
seen.add(key);
|
|
20014
|
+
report.graph.relationships.push({ ...edge, from, to });
|
|
20015
|
+
}
|
|
20016
|
+
}
|
|
20017
|
+
}
|
|
19945
20018
|
function removeArtifacts(report, ids) {
|
|
19946
20019
|
const graph = report.graph;
|
|
19947
20020
|
const keep = (id) => typeof id !== "string" || !ids.has(id);
|
|
@@ -19974,7 +20047,7 @@ function removeArtifacts(report, ids) {
|
|
|
19974
20047
|
function repairExternalAnalystReport(report, rootDir, options = {}) {
|
|
19975
20048
|
const normalized = normalizeHarnessReport(report);
|
|
19976
20049
|
repairCitationLines(normalized, rootDir);
|
|
19977
|
-
|
|
20050
|
+
mergeDeterministicReplacement(normalized, rootDir, options);
|
|
19978
20051
|
if (!options.concern || options.concern === "topology")
|
|
19979
20052
|
mergeBoundRuntimeClasses(normalized.graph, rootDir);
|
|
19980
20053
|
tagComponentStatus(normalized.graph, rootDir);
|
|
@@ -20041,6 +20114,33 @@ function repairExternalAnalystReport(report, rootDir, options = {}) {
|
|
|
20041
20114
|
if (unverified.size > 0)
|
|
20042
20115
|
removeArtifacts(normalized, unverified);
|
|
20043
20116
|
deriveRelationshipsFromGraph(normalized.graph);
|
|
20117
|
+
dropUnlocatedAgentCitations(normalized);
|
|
20118
|
+
if ((normalized.claims?.length ?? 0) === 0 && deterministicOnlyArtifactTypes().has("eval")) {
|
|
20119
|
+
const grounded = createHarnessReport({ graph: {
|
|
20120
|
+
...normalized.graph,
|
|
20121
|
+
runtimeAgents: [],
|
|
20122
|
+
agentFamilies: [],
|
|
20123
|
+
artifacts: normalized.graph.artifacts.filter((artifact) => artifact.type === "eval")
|
|
20124
|
+
}, rootDir });
|
|
20125
|
+
const claim = grounded.claims.find((candidate) => candidate.kind === "artifact" && candidate.citationIds.length > 0 && candidate.citationIds.every((id) => {
|
|
20126
|
+
const citation = grounded.citations.find((entry) => entry.id === id);
|
|
20127
|
+
return citation?.line !== undefined && Boolean(citation.excerpt);
|
|
20128
|
+
}));
|
|
20129
|
+
if (claim) {
|
|
20130
|
+
const usedIds = new Set(normalized.citations.map((citation) => citation.id));
|
|
20131
|
+
const citationIds = claim.citationIds.slice(0, 1).map((id) => {
|
|
20132
|
+
const citation = grounded.citations.find((entry) => entry.id === id);
|
|
20133
|
+
let index = normalized.citations.length;
|
|
20134
|
+
while (usedIds.has(`replacement_${index}`))
|
|
20135
|
+
index++;
|
|
20136
|
+
const replacementId = `replacement_${index}`;
|
|
20137
|
+
usedIds.add(replacementId);
|
|
20138
|
+
normalized.citations.push({ ...citation, id: replacementId });
|
|
20139
|
+
return replacementId;
|
|
20140
|
+
});
|
|
20141
|
+
(normalized.claims ??= []).push({ ...claim, citationIds });
|
|
20142
|
+
}
|
|
20143
|
+
}
|
|
20044
20144
|
repairReportSummaryCounts(normalized);
|
|
20045
20145
|
if (options.concern) {
|
|
20046
20146
|
normalized.source = {
|
|
@@ -20478,6 +20578,26 @@ function repairReportSummaryCounts(report) {
|
|
|
20478
20578
|
unknownCount: graph.unknowns.length
|
|
20479
20579
|
};
|
|
20480
20580
|
}
|
|
20581
|
+
function dropUnlocatedAgentCitations(report) {
|
|
20582
|
+
if (report.analyst?.mode !== "agent")
|
|
20583
|
+
return;
|
|
20584
|
+
const ids = new Set(report.citations.filter((citation) => (citation.type === "file" || citation.type === "generated_doc") && citation.line === undefined).map((citation) => citation.id));
|
|
20585
|
+
if (ids.size === 0)
|
|
20586
|
+
return;
|
|
20587
|
+
report.citations = report.citations.filter((citation) => !ids.has(citation.id));
|
|
20588
|
+
for (const unknown of report.unknowns ?? [])
|
|
20589
|
+
unknown.citationIds = unknown.citationIds.filter((id) => !ids.has(id));
|
|
20590
|
+
report.claims = (report.claims ?? []).flatMap((claim) => {
|
|
20591
|
+
const citationIds = claim.citationIds.filter((id2) => !ids.has(id2));
|
|
20592
|
+
if (citationIds.length || !claim.citationIds.some((id2) => ids.has(id2)))
|
|
20593
|
+
return [{ ...claim, citationIds }];
|
|
20594
|
+
const id = `unlocated_${claim.id}`;
|
|
20595
|
+
if (!(report.unknowns ?? []).some((unknown) => unknown.id === id)) {
|
|
20596
|
+
(report.unknowns ??= []).push({ id, question: `Verify source lines for ${claim.subjectId}: ${claim.title}`.slice(0, MAX_HARNESS_REPORT_SUMMARY_LENGTH), citationIds: [] });
|
|
20597
|
+
}
|
|
20598
|
+
return [];
|
|
20599
|
+
});
|
|
20600
|
+
}
|
|
20481
20601
|
function repairCitationLines(report, rootDir) {
|
|
20482
20602
|
for (const citation of report.citations) {
|
|
20483
20603
|
if (citation.type !== "file" && citation.type !== "generated_doc" || !citation.path || !citation.excerpt)
|
|
@@ -20500,6 +20620,11 @@ function repairCitationLines(report, rootDir) {
|
|
|
20500
20620
|
if (!needle)
|
|
20501
20621
|
continue;
|
|
20502
20622
|
const sourceLines = lines.map((line, index) => ({ text: normalizeComparableLine(line), index })).filter((line) => line.text.length > 0);
|
|
20623
|
+
const wholeLines = sourceLines.filter((line) => line.text === needle);
|
|
20624
|
+
if (wholeLines.length === 1) {
|
|
20625
|
+
citation.line = wholeLines[0].index + 1;
|
|
20626
|
+
continue;
|
|
20627
|
+
}
|
|
20503
20628
|
const source = sourceLines.map((line) => line.text).join(" ");
|
|
20504
20629
|
const match = source.indexOf(needle);
|
|
20505
20630
|
if (match < 0 || source.indexOf(needle, match + 1) >= 0)
|
|
@@ -21238,20 +21363,20 @@ var CONCERN_PROMPT_SPECS = {
|
|
|
21238
21363
|
largeRepoLine: "If the repository is very large, model runtime agents representatively rather than exhaustively, but never drop channel adapters, providers, frameworks, or deployments you have evidence for."
|
|
21239
21364
|
},
|
|
21240
21365
|
tools: {
|
|
21241
|
-
mission: "Your single concern for this pass is TOOLS: the exhaustive tool inventory. Other concern passes cover agents/topology, prompts, and evals — you must not enumerate those.",
|
|
21366
|
+
mission: "Your single concern for this pass is TOOLS & RUNTIME CONTROLS: the exhaustive tool inventory, guardrails, memory/session stores and retrieval indexes. Other concern passes cover agents/topology, prompts, and evals — you must not enumerate those.",
|
|
21242
21367
|
taskLines: [
|
|
21243
21368
|
"1. Exhaustively enumerate EVERY tool as its own `tool` graph artifact — the complete inventory, not a sample. This report feeds tool optimization, so a missing tool is a real defect.",
|
|
21244
|
-
"2. Do NOT enumerate prompts
|
|
21369
|
+
"2. Also enumerate guardrails (guardrail), memory/session stores (memory) and retrieval indexes (retrieval_index), with source evidence. Do NOT enumerate prompts or evals, and do not map agent topology beyond bare stubs needed for linkage."
|
|
21245
21370
|
],
|
|
21246
21371
|
protocolLines: [
|
|
21247
21372
|
"- Tools: emit a `tool` artifact for EVERY tool definition — each `@function_tool` / `function_tool(...)`-decorated function, every hosted/first-party tool class (e.g. WebSearchTool, FileSearchTool, ComputerTool, CodeInterpreterTool, HostedMCPTool, ImageGenerationTool, LocalShellTool), and every `tool({...})` / `createTool(...)` / `new *Tool(...)` factory. Name each artifact after the tool/function and cite its definition line.",
|
|
21248
21373
|
"- Populate usedByAgentIds on every tool artifact whenever the using agent is determinable (and ownedByAgentId when a single agent owns it).",
|
|
21249
21374
|
`- ${CONCERN_AGENT_STUB_LINE}`,
|
|
21250
|
-
"- Do NOT emit prompt
|
|
21375
|
+
"- Emit guardrail, memory and retrieval_index artifacts for runtime controls and stores. Do NOT emit prompt or eval artifacts — other concern passes own those.",
|
|
21251
21376
|
CONCERN_CAPS_LINE
|
|
21252
21377
|
],
|
|
21253
21378
|
contractLines: [
|
|
21254
|
-
|
|
21379
|
+
"Artifacts must include id, type (tool, guardrail, memory or retrieval_index), name, scope, usedByAgentIds, confidence, evidence, and optional sourcePath/contentHash/ownedByAgentId. Emit one artifact PER tool or runtime control/store — enumerate them all.",
|
|
21255
21380
|
CONCERN_NO_TRANSCRIPTION_LINE,
|
|
21256
21381
|
CONCERN_LOCATION_PIN_LINE,
|
|
21257
21382
|
CONCERN_AGENT_STUB_LINE
|
|
@@ -27433,6 +27558,12 @@ var TOOL_FACTORY = /^(?:tool|dynamicTool|agentTool|createTool|defineTool)$/;
|
|
|
27433
27558
|
var TOOL_MODULE = /^(?:ai|agents(?:\/.*)?|@cloudflare\/[\w-]+(?:\/.*)?|@mastra\/[\w-]+|@ai-sdk\/[\w-]+|@openai\/agents(?:-core)?|@langchain\/[\w-]+)$/;
|
|
27434
27559
|
var MODEL_FACING_NAME = /^[A-Za-z_][\w.:-]{0,127}$/;
|
|
27435
27560
|
var MAX_NAMES_PER_SITE = 64;
|
|
27561
|
+
var EVAL_PATH3 = /(?:^|\/)evals?\/|\.eval\.[cm]?[jt]sx?$/;
|
|
27562
|
+
function surfaceOf(rel2, pkg) {
|
|
27563
|
+
const inside = pkg ? rel2.slice(pkg.length + 1) : rel2;
|
|
27564
|
+
const dirs = posix3.dirname(inside).split("/").filter((part) => part && part !== ".");
|
|
27565
|
+
return `${pkg}:${dirs.slice(0, 2).join("/")}`;
|
|
27566
|
+
}
|
|
27436
27567
|
var MAX_TOOLS = 1e4;
|
|
27437
27568
|
var MAX_EVIDENCE_PER_TOOL = 64;
|
|
27438
27569
|
var MAX_DEFINITIONS_PER_TOOL = 64;
|
|
@@ -27467,18 +27598,22 @@ function emitTools(result, ctx, options = {}) {
|
|
|
27467
27598
|
if (!result.warnings.includes(warning))
|
|
27468
27599
|
result.warnings.push(warning);
|
|
27469
27600
|
};
|
|
27470
|
-
const add = (name, via, evidence, toolOwners, definition, displayName, enclosing) => {
|
|
27601
|
+
const add = (name, via, evidence, toolOwners, definition, displayName, enclosing, surfaceHint) => {
|
|
27471
27602
|
if (!MODEL_FACING_NAME.test(name))
|
|
27472
27603
|
return;
|
|
27473
|
-
const
|
|
27474
|
-
const
|
|
27604
|
+
const definedIn = definition ? relPath(ctx.rootDir, definition.getSourceFile().fileName) : undefined;
|
|
27605
|
+
const pkg = packageOf(definedIn ?? evidence.path);
|
|
27606
|
+
const surface = surfaceHint ?? (definedIn && !EVAL_PATH3.test(definedIn) ? surfaceOf(definedIn, pkg) : undefined);
|
|
27607
|
+
const tracedSurface = surfaceOf(evidence.path, pkg);
|
|
27608
|
+
const matchingKey = `${name}\x00${tracedSurface}`;
|
|
27609
|
+
const key = surface ? `${name}\x00${surface}` : found.has(matchingKey) ? matchingKey : `${name}\x01${pkg}`;
|
|
27475
27610
|
let tool = found.get(key);
|
|
27476
27611
|
if (!tool) {
|
|
27477
27612
|
if (found.size >= MAX_TOOLS) {
|
|
27478
27613
|
limit();
|
|
27479
27614
|
return;
|
|
27480
27615
|
}
|
|
27481
|
-
tool = { name, status: enumerationRepository(ctx).status(evidence.path) === "defined_only" ? "defined_only" : "reachable", ...pkg ? { package: pkg } : {}, via, evidence: [], agents: [], calledFrom: [], definitions: [] };
|
|
27616
|
+
tool = { name, status: enumerationRepository(ctx).status(evidence.path) === "defined_only" ? "defined_only" : "reachable", ...pkg ? { package: pkg } : {}, ...surface ? { surface } : {}, via, evidence: [], agents: [], calledFrom: [], definitions: [] };
|
|
27482
27617
|
found.set(key, tool);
|
|
27483
27618
|
ownersByTool.set(key, { direct: [], rpc: [], open: [] });
|
|
27484
27619
|
}
|
|
@@ -27577,6 +27712,17 @@ function emitTools(result, ctx, options = {}) {
|
|
|
27577
27712
|
};
|
|
27578
27713
|
visit2(source);
|
|
27579
27714
|
}
|
|
27715
|
+
const targetFor = (name, path) => {
|
|
27716
|
+
const candidates = [...found.values()].filter((tool) => tool.name === name && tool.surface);
|
|
27717
|
+
const exact = candidates.filter((tool) => tool.definitions.some((definition) => definition.path === path));
|
|
27718
|
+
if (exact.length === 1)
|
|
27719
|
+
return exact[0];
|
|
27720
|
+
const nearby = candidates.filter((tool) => tool.surface === surfaceOf(path, packageOf(path)));
|
|
27721
|
+
if (nearby.length === 1)
|
|
27722
|
+
return nearby[0];
|
|
27723
|
+
const local = candidates.filter((tool) => (tool.package ?? "") === packageOf(path));
|
|
27724
|
+
return local.length === 1 ? local[0] : candidates.length === 1 ? candidates[0] : undefined;
|
|
27725
|
+
};
|
|
27580
27726
|
for (const role of result.roles) {
|
|
27581
27727
|
if (role.role !== "tools" || role.sink.isTest || skipPath(role.sink.path))
|
|
27582
27728
|
continue;
|
|
@@ -27585,10 +27731,16 @@ function emitTools(result, ctx, options = {}) {
|
|
|
27585
27731
|
for (const hit of toolNamesOf(role.tree).names) {
|
|
27586
27732
|
if (skipPath(hit.path))
|
|
27587
27733
|
continue;
|
|
27588
|
-
|
|
27734
|
+
const target = targetFor(hit.name, hit.path);
|
|
27735
|
+
const ambiguous = !target && [...found.values()].some((tool) => tool.name === hit.name && tool.surface);
|
|
27736
|
+
add(hit.name, "tools-arg", { path: hit.path, line: hit.line, reason: `named in the tools argument of ${role.sink.callee} at ${role.sink.path}:${role.sink.line}` }, ambiguous ? { direct: [], rpc: [], open: [] } : siteOwners, undefined, undefined, role.sink.enclosing, target?.surface);
|
|
27589
27737
|
}
|
|
27590
27738
|
}
|
|
27739
|
+
joinSurfaces(found, ownersByTool);
|
|
27591
27740
|
owners.indexAllowlists(new Set([...found.values()].map((tool) => tool.name)));
|
|
27741
|
+
const surfacesByName = new Map;
|
|
27742
|
+
for (const tool of found.values())
|
|
27743
|
+
surfacesByName.set(tool.name, (surfacesByName.get(tool.name) ?? 0) + 1);
|
|
27592
27744
|
const callOwners = new Map;
|
|
27593
27745
|
for (const role of result.roles) {
|
|
27594
27746
|
if (role.role !== "tools" || role.sink.isTest || skipPath(role.sink.path))
|
|
@@ -27597,24 +27749,86 @@ function emitTools(result, ctx, options = {}) {
|
|
|
27597
27749
|
for (const hit of toolNamesOf(role.tree).names) {
|
|
27598
27750
|
let owners2 = callOwners.get(hit.name);
|
|
27599
27751
|
if (!owners2)
|
|
27600
|
-
callOwners.set(hit.name, owners2 =
|
|
27601
|
-
|
|
27602
|
-
owners2.add(id);
|
|
27752
|
+
callOwners.set(hit.name, owners2 = []);
|
|
27753
|
+
owners2.push({ pkg: packageOf(hit.path), surface: surfaceOf(hit.path, packageOf(hit.path)), ids });
|
|
27603
27754
|
}
|
|
27604
27755
|
}
|
|
27605
27756
|
for (const [key, tool] of found) {
|
|
27606
27757
|
const ids = new Set;
|
|
27607
|
-
|
|
27758
|
+
const allowlistApplies = (allowlistPath) => targetFor(tool.name, allowlistPath) === tool || (surfacesByName.get(tool.name) ?? 1) === 1;
|
|
27759
|
+
for (const name of owners.agentsFor(tool.name, ownersByTool.get(key), allowlistApplies)) {
|
|
27608
27760
|
const classes = owners.classes.filter((entry) => entry.name === name);
|
|
27609
27761
|
if (classes.length === 1)
|
|
27610
27762
|
for (const id of agentForScope(`${classes[0].path}#${name}`))
|
|
27611
27763
|
ids.add(id);
|
|
27612
27764
|
}
|
|
27613
|
-
|
|
27614
|
-
|
|
27765
|
+
const single = (surfacesByName.get(tool.name) ?? 1) === 1;
|
|
27766
|
+
for (const entry of callOwners.get(tool.name) ?? []) {
|
|
27767
|
+
if (single || entry.surface === tool.surface || !tool.surface && entry.pkg === (tool.package ?? ""))
|
|
27768
|
+
for (const id of entry.ids)
|
|
27769
|
+
ids.add(id);
|
|
27770
|
+
}
|
|
27615
27771
|
tool.agents = [...ids].sort();
|
|
27616
27772
|
}
|
|
27617
|
-
|
|
27773
|
+
assignToolIds(found.values());
|
|
27774
|
+
return [...found.values()].sort((a, b) => a.name.localeCompare(b.name) || (a.package ?? "").localeCompare(b.package ?? "") || (a.surface ?? "").localeCompare(b.surface ?? ""));
|
|
27775
|
+
}
|
|
27776
|
+
function joinSurfaces(found, ownersByTool) {
|
|
27777
|
+
for (const [key, pending] of [...found]) {
|
|
27778
|
+
if (pending.surface)
|
|
27779
|
+
continue;
|
|
27780
|
+
const defined = [...found.entries()].filter(([, tool]) => tool.name === pending.name && tool.surface);
|
|
27781
|
+
if (defined.length === 0)
|
|
27782
|
+
continue;
|
|
27783
|
+
const local = defined.filter(([, tool]) => (tool.package ?? "") === (pending.package ?? ""));
|
|
27784
|
+
const matching = local.filter(([, tool]) => pending.evidence.some((entry) => surfaceOf(entry.path, pending.package ?? "") === tool.surface));
|
|
27785
|
+
const selected = matching.length === 1 ? matching[0] : local.length === 1 ? local[0] : defined.length === 1 ? defined[0] : undefined;
|
|
27786
|
+
if (!selected) {
|
|
27787
|
+
if (pending.evidence.every((entry) => EVAL_PATH3.test(entry.path))) {
|
|
27788
|
+
found.delete(key);
|
|
27789
|
+
ownersByTool.delete(key);
|
|
27790
|
+
}
|
|
27791
|
+
continue;
|
|
27792
|
+
}
|
|
27793
|
+
const [targetKey, target] = selected;
|
|
27794
|
+
for (const entry of pending.evidence) {
|
|
27795
|
+
if (target.evidence.length >= MAX_EVIDENCE_PER_TOOL)
|
|
27796
|
+
break;
|
|
27797
|
+
if (!target.evidence.some((other) => other.path === entry.path && other.line === entry.line))
|
|
27798
|
+
target.evidence.push(entry);
|
|
27799
|
+
}
|
|
27800
|
+
for (const entry of pending.calledFrom) {
|
|
27801
|
+
if (!target.calledFrom.some((other) => other.path === entry.path && other.line === entry.line))
|
|
27802
|
+
target.calledFrom.push(entry);
|
|
27803
|
+
}
|
|
27804
|
+
if (pending.status === "reachable")
|
|
27805
|
+
target.status = "reachable";
|
|
27806
|
+
target.displayName ??= pending.displayName;
|
|
27807
|
+
const from = ownersByTool.get(key), into = ownersByTool.get(targetKey);
|
|
27808
|
+
if (from && into) {
|
|
27809
|
+
for (const field of ["direct", "rpc", "open"])
|
|
27810
|
+
for (const agent2 of from[field])
|
|
27811
|
+
if (!into[field].includes(agent2))
|
|
27812
|
+
into[field].push(agent2);
|
|
27813
|
+
}
|
|
27814
|
+
found.delete(key);
|
|
27815
|
+
ownersByTool.delete(key);
|
|
27816
|
+
}
|
|
27817
|
+
}
|
|
27818
|
+
function assignToolIds(tools) {
|
|
27819
|
+
const byName = new Map;
|
|
27820
|
+
for (const tool of tools) {
|
|
27821
|
+
let list = byName.get(tool.name);
|
|
27822
|
+
if (!list)
|
|
27823
|
+
byName.set(tool.name, list = []);
|
|
27824
|
+
list.push(tool);
|
|
27825
|
+
}
|
|
27826
|
+
for (const list of byName.values()) {
|
|
27827
|
+
list.sort((a, b) => Number(Boolean(a.package)) - Number(Boolean(b.package)) || (a.surface ?? "").localeCompare(b.surface ?? ""));
|
|
27828
|
+
list.forEach((tool, index) => {
|
|
27829
|
+
tool.id = toolArtifactId(tool.name, index === 0 ? undefined : tool.surface ?? surfaceOf(tool.evidence[0]?.path ?? "", tool.package ?? ""));
|
|
27830
|
+
});
|
|
27831
|
+
}
|
|
27618
27832
|
}
|
|
27619
27833
|
function registryEntryOf(object) {
|
|
27620
27834
|
const parent = object.parent;
|
|
@@ -27747,9 +27961,9 @@ function emitToolsCached(result, ctx) {
|
|
|
27747
27961
|
}
|
|
27748
27962
|
return tools;
|
|
27749
27963
|
}
|
|
27750
|
-
function toolArtifactId(name,
|
|
27964
|
+
function toolArtifactId(name, surface) {
|
|
27751
27965
|
const slug2 = (text) => text.replace(/[^A-Za-z0-9_.:-]+/g, "_");
|
|
27752
|
-
return `tool.extract.${slug2(name)}`;
|
|
27966
|
+
return surface ? `tool.extract.${slug2(name)}@${encodeURIComponent(surface)}` : `tool.extract.${slug2(name)}`;
|
|
27753
27967
|
}
|
|
27754
27968
|
function workspacePackages(rootDir) {
|
|
27755
27969
|
const cache2 = new Map;
|
|
@@ -27768,16 +27982,15 @@ function workspacePackages(rootDir) {
|
|
|
27768
27982
|
function toolDefinitionRefs(tools) {
|
|
27769
27983
|
const out = [];
|
|
27770
27984
|
for (const tool of tools) {
|
|
27771
|
-
const definition
|
|
27772
|
-
|
|
27773
|
-
|
|
27774
|
-
|
|
27775
|
-
|
|
27776
|
-
|
|
27777
|
-
|
|
27778
|
-
|
|
27779
|
-
|
|
27780
|
-
});
|
|
27985
|
+
for (const definition of tool.definitions) {
|
|
27986
|
+
out.push({
|
|
27987
|
+
toolId: tool.id ?? toolArtifactId(tool.name),
|
|
27988
|
+
name: tool.name,
|
|
27989
|
+
definition: { path: definition.path, start: definition.start, end: definition.end, line: definition.line },
|
|
27990
|
+
...tool.agents.length > 0 ? { agentIds: [...tool.agents] } : {},
|
|
27991
|
+
scope: definition.scope
|
|
27992
|
+
});
|
|
27993
|
+
}
|
|
27781
27994
|
}
|
|
27782
27995
|
return out;
|
|
27783
27996
|
}
|
|
@@ -27786,7 +27999,7 @@ function toolArtifacts(tools, runtimeAgents = []) {
|
|
|
27786
27999
|
return tools.map((tool) => {
|
|
27787
28000
|
const usedByAgentIds = [...new Set(tool.agents.filter((id) => knownIds.has(id)))];
|
|
27788
28001
|
const artifact2 = {
|
|
27789
|
-
id: toolArtifactId(tool.name
|
|
28002
|
+
id: tool.id ?? toolArtifactId(tool.name),
|
|
27790
28003
|
type: "tool",
|
|
27791
28004
|
name: tool.name,
|
|
27792
28005
|
status: tool.status,
|
|
@@ -29126,8 +29339,12 @@ function enumerateToolCatalog(result, ctx) {
|
|
|
29126
29339
|
}
|
|
29127
29340
|
}
|
|
29128
29341
|
const merged = new Map;
|
|
29342
|
+
const packageOf = workspacePackages(ctx.rootDir);
|
|
29129
29343
|
for (const item of output.artifacts) {
|
|
29130
|
-
const
|
|
29344
|
+
const path = item.sourcePath ?? "";
|
|
29345
|
+
const surface = surfaceOf(path, packageOf(path));
|
|
29346
|
+
const key = `${item.name}\x00${surface}`;
|
|
29347
|
+
const previous = merged.get(key);
|
|
29131
29348
|
if (previous) {
|
|
29132
29349
|
previous.usedByAgentIds = [...new Set([...previous.usedByAgentIds, ...item.usedByAgentIds])].sort();
|
|
29133
29350
|
const seen = new Set(previous.evidence.map((e) => `${e.path}:${e.line}`));
|
|
@@ -29135,8 +29352,8 @@ function enumerateToolCatalog(result, ctx) {
|
|
|
29135
29352
|
if (item.status === "in_prod" || item.status === "reachable" && previous.status === "defined_only")
|
|
29136
29353
|
previous.status = item.status;
|
|
29137
29354
|
} else {
|
|
29138
|
-
item.id = `tool:catalog:${item.name}`;
|
|
29139
|
-
merged.set(
|
|
29355
|
+
item.id = `tool:catalog:${item.name}@${encodeURIComponent(surface)}`;
|
|
29356
|
+
merged.set(key, item);
|
|
29140
29357
|
}
|
|
29141
29358
|
}
|
|
29142
29359
|
output.artifacts = [...merged.values()];
|
|
@@ -29158,8 +29375,25 @@ function mergeEnumeratedComponents(artifacts, components) {
|
|
|
29158
29375
|
const merged = new Map;
|
|
29159
29376
|
const definitions = new Map;
|
|
29160
29377
|
const registry = components.artifacts.filter((item) => item.type === "tool" && item.id.startsWith("tool.extract."));
|
|
29378
|
+
const extractedByName = new Map;
|
|
29379
|
+
for (const item of registry) {
|
|
29380
|
+
let list = extractedByName.get(item.name);
|
|
29381
|
+
if (!list)
|
|
29382
|
+
extractedByName.set(item.name, list = []);
|
|
29383
|
+
list.push(item);
|
|
29384
|
+
}
|
|
29385
|
+
const toolKey2 = (item) => {
|
|
29386
|
+
if (registry.includes(item))
|
|
29387
|
+
return `tool:${item.id}`;
|
|
29388
|
+
const candidates = extractedByName.get(item.name) ?? [];
|
|
29389
|
+
if (candidates.length === 0)
|
|
29390
|
+
return item.id.startsWith("tool:catalog:") ? `tool:${item.id}` : `tool:${item.name}`;
|
|
29391
|
+
const paths = new Set([item.sourcePath, ...item.evidence.map((entry) => entry.path)].filter(Boolean));
|
|
29392
|
+
const target = candidates.find((candidate) => candidate.sourcePath && paths.has(candidate.sourcePath) || candidate.definitionVariants?.some((variant) => variant.sourcePath && paths.has(variant.sourcePath))) ?? candidates.find((candidate) => !candidate.id.includes("@")) ?? candidates[0];
|
|
29393
|
+
return `tool:${target.id}`;
|
|
29394
|
+
};
|
|
29161
29395
|
for (const item of [...registry, ...artifacts, ...components.artifacts.filter((item2) => !registry.includes(item2))]) {
|
|
29162
|
-
const key = item.type === "tool" ?
|
|
29396
|
+
const key = item.type === "tool" ? toolKey2(item) : item.id;
|
|
29163
29397
|
if (item.type === "tool") {
|
|
29164
29398
|
const own = item.definitionVariants ?? (item.body ? [{ sourcePath: item.sourcePath, body: item.body, evidence: item.evidence }] : []);
|
|
29165
29399
|
let variants = definitions.get(key);
|
|
@@ -29201,4 +29435,4 @@ function mergeEnumeratedComponents(artifacts, components) {
|
|
|
29201
29435
|
return { runtimeAgents, artifacts: output };
|
|
29202
29436
|
}
|
|
29203
29437
|
|
|
29204
|
-
export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, valueChildren, selectKey, allValues, renderings, CALL_SINKS, registerCallSink, registerClassSink, isModelId, collectModels, modelArtifacts, modelUnknowns, collectModelLiterals, agentForScope, createAgentScopeResolver, enumerateAgents, toolNamesOf, EXTRACT_SCHEMA_VERSION, enumerateWorkflows, enumerateToolCatalog, ENUMERATORS, enumerateHarnessComponents, mergeEnumeratedComponents, clearExtractCache, extractHarness, extractHarnessWithContext, scopeOf, serializeExtractResult, runEnumerators, assignAgentIds, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, isToolGroupPlaceholder, repairExternalAnalystReport, deriveRelationshipsFromGraph, deterministicArtifacts, deterministicGraphItems, mergeDeterministicArtifacts, analystRefutations, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, resolveExternalHarnessAnalystInvocation, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, readOnlyClaudeExtraArgs, resolveAnalystModel, renderExternalHarnessAnalystPrompt, CONCERN_CANDIDATE_KINDS, SEED_CANDIDATE_KIND_LABELS, renderAnalystCandidateLines, renderAnalystSeedLines, truncateText, scanHarness, summarizeHarness, buildSourceSnapshot, writeHumanProgress, describeSyncIdentity, describeSyncTenantLabel, findFresherHarnessReports, writeHarnessArtifacts, assertHarnessGraphSyncQuality, graphForSync, inventoryFiles, numericEnv, numericEnvAllowZero, computeDeterministicFloor, stableId, titleFromId, promptNameFromPath };
|
|
29438
|
+
export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, valueChildren, selectKey, allValues, renderings, CALL_SINKS, registerCallSink, registerClassSink, isModelId, collectModels, modelArtifacts, modelUnknowns, collectModelLiterals, agentForScope, createAgentScopeResolver, enumerateAgents, toolNamesOf, EXTRACT_SCHEMA_VERSION, enumerateWorkflows, enumerateToolCatalog, ENUMERATORS, enumerateHarnessComponents, mergeEnumeratedComponents, clearExtractCache, extractHarness, extractHarnessWithContext, scopeOf, serializeExtractResult, runEnumerators, assignAgentIds, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, isToolGroupPlaceholder, deterministicOnlyArtifactTypes, repairExternalAnalystReport, deriveRelationshipsFromGraph, deterministicArtifacts, deterministicGraphItems, mergeDeterministicArtifacts, analystRefutations, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, resolveExternalHarnessAnalystInvocation, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, readOnlyClaudeExtraArgs, resolveAnalystModel, renderExternalHarnessAnalystPrompt, CONCERN_CANDIDATE_KINDS, SEED_CANDIDATE_KIND_LABELS, renderAnalystCandidateLines, renderAnalystSeedLines, truncateText, scanHarness, summarizeHarness, buildSourceSnapshot, writeHumanProgress, describeSyncIdentity, describeSyncTenantLabel, findFresherHarnessReports, writeHarnessArtifacts, assertHarnessGraphSyncQuality, graphForSync, inventoryFiles, numericEnv, numericEnvAllowZero, computeDeterministicFloor, stableId, titleFromId, promptNameFromPath };
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./cli-rrggdmf8.js";
|
|
5
5
|
import {
|
|
6
6
|
inspectPromptManifest
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-8y7tzqkf.js";
|
|
8
8
|
import {
|
|
9
9
|
readHarnessSyncState,
|
|
10
10
|
renderDoctorHuman,
|
|
@@ -395,7 +395,7 @@ async function harnessCurrentCheck(cwd, manifestPath, manifestExists, tenantId)
|
|
|
395
395
|
};
|
|
396
396
|
}
|
|
397
397
|
try {
|
|
398
|
-
const { scanHarness } = await import("./harness-
|
|
398
|
+
const { scanHarness } = await import("./harness-nryjq52p.js");
|
|
399
399
|
const current = scanHarness({
|
|
400
400
|
rootDir: cwd,
|
|
401
401
|
scannerVersion: "doctor",
|
package/dist/cli.js
CHANGED
|
@@ -2975,25 +2975,25 @@ function leafManifestFields(leaf, commands) {
|
|
|
2975
2975
|
import { fileURLToPath } from "url";
|
|
2976
2976
|
import { realpathSync } from "fs";
|
|
2977
2977
|
async function runPromptsCommand(...args) {
|
|
2978
|
-
return (await import("./prompts-
|
|
2978
|
+
return (await import("./prompts-tr91zg4n.js")).runPromptsCommand(...args);
|
|
2979
2979
|
}
|
|
2980
2980
|
async function runSkillsCommand(...args) {
|
|
2981
2981
|
return (await import("./skills-knpeqryb.js")).runSkillsCommand(...args);
|
|
2982
2982
|
}
|
|
2983
2983
|
async function runHarnessCommand(...args) {
|
|
2984
|
-
return (await import("./harness-
|
|
2984
|
+
return (await import("./harness-nryjq52p.js")).runHarnessCommand(...args);
|
|
2985
2985
|
}
|
|
2986
2986
|
async function runSyncCommand(...args) {
|
|
2987
|
-
return (await import("./sync-
|
|
2987
|
+
return (await import("./sync-nfdd69cw.js")).runSyncCommand(...args);
|
|
2988
2988
|
}
|
|
2989
2989
|
async function runRegistryCommand(...args) {
|
|
2990
2990
|
return (await import("./registry-c64qr7ta.js")).runRegistryCommand(...args);
|
|
2991
2991
|
}
|
|
2992
2992
|
async function runDoctorCommand(...args) {
|
|
2993
|
-
return (await import("./doctor-
|
|
2993
|
+
return (await import("./doctor-swctmdap.js")).runDoctorCommand(...args);
|
|
2994
2994
|
}
|
|
2995
2995
|
async function runStatusCommand(...args) {
|
|
2996
|
-
return (await import("./doctor-
|
|
2996
|
+
return (await import("./doctor-swctmdap.js")).runStatusCommand(...args);
|
|
2997
2997
|
}
|
|
2998
2998
|
async function runAuthCommand(...args) {
|
|
2999
2999
|
return (await import("./profile-commands-1fdvrs5y.js")).runAuthCommand(...args);
|
|
@@ -3005,7 +3005,7 @@ async function runProfilesCommand(...args) {
|
|
|
3005
3005
|
return (await import("./profile-commands-1fdvrs5y.js")).runProfilesCommand(...args);
|
|
3006
3006
|
}
|
|
3007
3007
|
async function runAgentCommand(...args) {
|
|
3008
|
-
return (await import("./agent-
|
|
3008
|
+
return (await import("./agent-9bb3wryr.js")).runAgentCommand(...args);
|
|
3009
3009
|
}
|
|
3010
3010
|
async function runProductionCommand(...args) {
|
|
3011
3011
|
return (await import("./production-intelligence-f9sd68te.js")).runProductionCommand(...args);
|
|
@@ -6769,7 +6769,7 @@ var commandRegistry = createCommandRegistry([
|
|
|
6769
6769
|
resetApiRequestCountBeforeRun: true,
|
|
6770
6770
|
telemetry: "result-and-error",
|
|
6771
6771
|
handler: async (context) => {
|
|
6772
|
-
const { runInit } = await import("./index-
|
|
6772
|
+
const { runInit } = await import("./index-y5ay9p49.js");
|
|
6773
6773
|
if (context.outputMode === "agent-stream") {
|
|
6774
6774
|
context.output.writeEvent({
|
|
6775
6775
|
event: "started",
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
promptsDiscoveredCheck,
|
|
4
4
|
runDoctorCommand,
|
|
5
5
|
runStatusCommand
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-rp1079xm.js";
|
|
7
7
|
import"./cli-rrggdmf8.js";
|
|
8
|
-
import"./cli-
|
|
8
|
+
import"./cli-8y7tzqkf.js";
|
|
9
9
|
import"./cli-mm48br00.js";
|
|
10
10
|
import"./cli-k0vxtzxb.js";
|
|
11
11
|
import"./cli-22yvg5kh.js";
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
detectAvailableCodingAgents,
|
|
16
16
|
deterministicArtifacts,
|
|
17
17
|
deterministicGraphItems,
|
|
18
|
+
deterministicOnlyArtifactTypes,
|
|
18
19
|
emitWrittenArtifacts,
|
|
19
20
|
findFresherHarnessReports,
|
|
20
21
|
graphForSync,
|
|
@@ -46,7 +47,7 @@ import {
|
|
|
46
47
|
writeHarnessAnalyzeResult,
|
|
47
48
|
writeHarnessArtifacts,
|
|
48
49
|
writeHumanProgress
|
|
49
|
-
} from "./cli-
|
|
50
|
+
} from "./cli-pqnd8are.js";
|
|
50
51
|
import"./cli-k0vxtzxb.js";
|
|
51
52
|
import"./cli-97fnztpy.js";
|
|
52
53
|
import {
|
|
@@ -94,6 +95,7 @@ export {
|
|
|
94
95
|
graphForSync,
|
|
95
96
|
findFresherHarnessReports,
|
|
96
97
|
emitWrittenArtifacts,
|
|
98
|
+
deterministicOnlyArtifactTypes,
|
|
97
99
|
deterministicGraphItems,
|
|
98
100
|
deterministicArtifacts,
|
|
99
101
|
detectAvailableCodingAgents,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildDoctorReport
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-rp1079xm.js";
|
|
4
4
|
import {
|
|
5
5
|
selectTenantAndCreateKey
|
|
6
6
|
} from "./cli-n1406hqg.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
initPrompts,
|
|
22
22
|
runPromptSync
|
|
23
|
-
} from "./cli-
|
|
23
|
+
} from "./cli-8y7tzqkf.js";
|
|
24
24
|
import {
|
|
25
25
|
agentsMdProblem,
|
|
26
26
|
runSkillSync
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
runCodingAgent,
|
|
47
47
|
runHarnessCommand,
|
|
48
48
|
startRemoteAnalyze
|
|
49
|
-
} from "./cli-
|
|
49
|
+
} from "./cli-pqnd8are.js";
|
|
50
50
|
import {
|
|
51
51
|
canonicalText,
|
|
52
52
|
renderInitBanner,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runPromptsCommand
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-8y7tzqkf.js";
|
|
4
4
|
import {
|
|
5
5
|
runSkillsCommand
|
|
6
6
|
} from "./cli-1smcq5pf.js";
|
|
@@ -10,7 +10,7 @@ import"./cli-hcwdz9sd.js";
|
|
|
10
10
|
import"./cli-mm48br00.js";
|
|
11
11
|
import {
|
|
12
12
|
runHarnessCommand
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-pqnd8are.js";
|
|
14
14
|
import"./cli-k0vxtzxb.js";
|
|
15
15
|
import"./cli-97fnztpy.js";
|
|
16
16
|
import"./cli-y333w08f.js";
|
package/package.json
CHANGED