@moda-ai/cli 1.55.76 → 1.55.77

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.
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  buildDoctorReport
3
- } from "./cli-ven3j7j1.js";
3
+ } from "./cli-37gk6etv.js";
4
4
  import"./cli-rrggdmf8.js";
5
- import"./cli-09ym9jac.js";
5
+ import"./cli-0799n1ej.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-esh9wa9a.js") : undefined;
98
+ const harness = graph ? await import("./harness-gkc072np.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-esh9wa9a.js");
5771
+ const { analyzeHarnessPrompts } = await import("./harness-gkc072np.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-cswtxj5v.js");
5799
+ const { checkPromptAttribution } = await import("./prompt-attribution-jqer74f1.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-esh9wa9a.js");
6105
+ const { analyzeHarnessPrompts } = await import("./harness-gkc072np.js");
6106
6106
  const result = await analyzeHarnessPrompts({
6107
6107
  rootDir: root,
6108
6108
  existing: manifest.sources,
@@ -4,7 +4,7 @@ import {
4
4
  } from "./cli-rrggdmf8.js";
5
5
  import {
6
6
  inspectPromptManifest
7
- } from "./cli-09ym9jac.js";
7
+ } from "./cli-0799n1ej.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-esh9wa9a.js");
398
+ const { scanHarness } = await import("./harness-gkc072np.js");
399
399
  const current = scanHarness({
400
400
  rootDir: cwd,
401
401
  scannerVersion: "doctor",
@@ -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-d9tnwd05.js");
19152
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-551gfrhe.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-vx8ym8p0.js");
19299
- const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-f89md6eg.js");
19298
+ const { extractHarnessWithContext: extractHarnessWithContext2 } = await import("./index-skaf1djt.js");
19299
+ const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-05gdag9e.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-vx8ym8p0.js");
19334
- const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-f89md6eg.js");
19333
+ const { extractHarnessWithContext: extractHarnessWithContext2, serializeExtractResult } = await import("./index-skaf1djt.js");
19334
+ const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-05gdag9e.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
- mergeDeterministicArtifacts(normalized.graph, rootDir, { concern: options.concern });
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, guardrails, or evals, and do not map agent topology beyond bare stubs needed for tool linkage."
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, guardrail, eval, memory, or retrieval_index artifacts — other concern passes own those.",
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
- 'Artifacts must include id, type:"tool", name, scope, usedByAgentIds, confidence, evidence, and optional sourcePath/contentHash/ownedByAgentId. Emit one artifact PER tool — enumerate them all.',
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
@@ -29201,4 +29326,4 @@ function mergeEnumeratedComponents(artifacts, components) {
29201
29326
  return { runtimeAgents, artifacts: output };
29202
29327
  }
29203
29328
 
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 };
29329
+ 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 };
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-cn8a2cwp.js")).runPromptsCommand(...args);
2978
+ return (await import("./prompts-8n2ctn3g.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-esh9wa9a.js")).runHarnessCommand(...args);
2984
+ return (await import("./harness-gkc072np.js")).runHarnessCommand(...args);
2985
2985
  }
2986
2986
  async function runSyncCommand(...args) {
2987
- return (await import("./sync-ce5j09v7.js")).runSyncCommand(...args);
2987
+ return (await import("./sync-e71ew4yt.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-94cwvz8p.js")).runDoctorCommand(...args);
2993
+ return (await import("./doctor-7bd2q83j.js")).runDoctorCommand(...args);
2994
2994
  }
2995
2995
  async function runStatusCommand(...args) {
2996
- return (await import("./doctor-94cwvz8p.js")).runStatusCommand(...args);
2996
+ return (await import("./doctor-7bd2q83j.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-gtq5t0av.js")).runAgentCommand(...args);
3008
+ return (await import("./agent-wrc7kn21.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-p0cxzngv.js");
6772
+ const { runInit } = await import("./index-smy7hrm5.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-ven3j7j1.js";
6
+ } from "./cli-37gk6etv.js";
7
7
  import"./cli-rrggdmf8.js";
8
- import"./cli-09ym9jac.js";
8
+ import"./cli-0799n1ej.js";
9
9
  import"./cli-mm48br00.js";
10
10
  import"./cli-k0vxtzxb.js";
11
11
  import"./cli-22yvg5kh.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildSourceSnapshot
3
- } from "./cli-5bh9tky2.js";
3
+ } from "./cli-t8mvqe7n.js";
4
4
  import"./cli-k0vxtzxb.js";
5
5
  import"./cli-97fnztpy.js";
6
6
  import"./cli-y333w08f.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-5bh9tky2.js";
50
+ } from "./cli-t8mvqe7n.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,
@@ -7,7 +7,7 @@ import {
7
7
  enumerateToolCatalog,
8
8
  enumerateWorkflows,
9
9
  mergeEnumeratedComponents
10
- } from "./cli-5bh9tky2.js";
10
+ } from "./cli-t8mvqe7n.js";
11
11
  import"./cli-k0vxtzxb.js";
12
12
  import"./cli-97fnztpy.js";
13
13
  import"./cli-y333w08f.js";
@@ -21,7 +21,7 @@ import {
21
21
  serializeExtractResult,
22
22
  toolNamesOf,
23
23
  valueChildren
24
- } from "./cli-5bh9tky2.js";
24
+ } from "./cli-t8mvqe7n.js";
25
25
  import"./cli-k0vxtzxb.js";
26
26
  import"./cli-97fnztpy.js";
27
27
  import"./cli-y333w08f.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildDoctorReport
3
- } from "./cli-ven3j7j1.js";
3
+ } from "./cli-37gk6etv.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-09ym9jac.js";
23
+ } from "./cli-0799n1ej.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-5bh9tky2.js";
49
+ } from "./cli-t8mvqe7n.js";
50
50
  import {
51
51
  canonicalText,
52
52
  renderInitBanner,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  inventoryFiles,
3
3
  safePromptEvidencePath
4
- } from "./cli-5bh9tky2.js";
4
+ } from "./cli-t8mvqe7n.js";
5
5
  import"./cli-k0vxtzxb.js";
6
6
  import"./cli-97fnztpy.js";
7
7
  import"./cli-y333w08f.js";
@@ -3,7 +3,7 @@ import {
3
3
  checkPromptMapping,
4
4
  discoverHarnessPromptSources,
5
5
  safePromptEvidencePath
6
- } from "./cli-5bh9tky2.js";
6
+ } from "./cli-t8mvqe7n.js";
7
7
  import"./cli-k0vxtzxb.js";
8
8
  import"./cli-97fnztpy.js";
9
9
  import"./cli-y333w08f.js";
@@ -9,7 +9,7 @@ import {
9
9
  runPromptSync,
10
10
  runPromptsCommand,
11
11
  writePromptSyncProgress
12
- } from "./cli-09ym9jac.js";
12
+ } from "./cli-0799n1ej.js";
13
13
  import {
14
14
  promptSourceHashPayload
15
15
  } from "./cli-mm48br00.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runPromptsCommand
3
- } from "./cli-09ym9jac.js";
3
+ } from "./cli-0799n1ej.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-5bh9tky2.js";
13
+ } from "./cli-t8mvqe7n.js";
14
14
  import"./cli-k0vxtzxb.js";
15
15
  import"./cli-97fnztpy.js";
16
16
  import"./cli-y333w08f.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moda-ai/cli",
3
- "version": "1.55.76",
3
+ "version": "1.55.77",
4
4
  "description": "CLI for Moda: production monitoring and evals for AI agents.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": "moda.skill_index.v1",
3
- "bundled_at": "2026-10-21T09:01:57.832Z",
4
- "cli_version": "1.55.76",
3
+ "bundled_at": "2026-10-21T09:26:39.170Z",
4
+ "cli_version": "1.55.77",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",