@moda-ai/cli 1.55.48 → 1.55.50

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 (34) hide show
  1. package/dist/{agent-de8bnj8x.js → agent-vdqppnq3.js} +10 -10
  2. package/dist/{cli-4kf462jq.js → cli-1ehmy9rh.js} +2 -2
  3. package/dist/{cli-d6gfxx8t.js → cli-3dj84cbk.js} +1 -1
  4. package/dist/{cli-da3h2p6w.js → cli-40fqk078.js} +1 -1
  5. package/dist/{cli-sqnw96gj.js → cli-4pzbgxcn.js} +2 -2
  6. package/dist/{cli-629tc1d0.js → cli-73x2yznb.js} +5 -5
  7. package/dist/{cli-0zws61ba.js → cli-79pzgqtj.js} +8 -8
  8. package/dist/{cli-ns5fcnkz.js → cli-c1k20j6e.js} +2 -1
  9. package/dist/{cli-xctqdn42.js → cli-dxxc7tzq.js} +3 -3
  10. package/dist/{cli-m4474bnj.js → cli-gtke9wrw.js} +1 -1
  11. package/dist/{cli-s7d069g0.js → cli-mf37dxpc.js} +4 -4
  12. package/dist/{cli-10zgbewk.js → cli-n3bjh1pc.js} +109 -13
  13. package/dist/{cli-h1z9yyqk.js → cli-rdh9jjr2.js} +1 -1
  14. package/dist/{cli-qpq84eee.js → cli-vswckv9g.js} +1 -1
  15. package/dist/{cli-jj77e5yp.js → cli-wqyrcnm1.js} +17 -2
  16. package/dist/{cli-j08a1mam.js → cli-wry78bg8.js} +1 -1
  17. package/dist/cli.js +20 -20
  18. package/dist/{doctor-dw9bqzeg.js → doctor-dz8gfz2h.js} +8 -8
  19. package/dist/{harness-v7kgnpr6.js → harness-fx091nmr.js} +10 -8
  20. package/dist/{harness-github-actions-njdxwsn5.js → harness-github-actions-jfbcsx2s.js} +8 -8
  21. package/dist/{harness-report-r0dkpafy.js → harness-report-d64517j4.js} +1 -1
  22. package/dist/{index-40b5v59z.js → index-q2d1fva7.js} +14 -14
  23. package/dist/{production-intelligence-fe5masaa.js → production-intelligence-zek0rkzj.js} +4 -4
  24. package/dist/{profile-commands-zbyn9xg2.js → profile-commands-nbaec4y9.js} +5 -5
  25. package/dist/{prompt-attribution-d1vj2cxt.js → prompt-attribution-avvkfq8c.js} +8 -8
  26. package/dist/prompt-source-mcp.js +8 -8
  27. package/dist/{prompt-sources-07tczyqa.js → prompt-sources-qw2p4t5h.js} +2 -2
  28. package/dist/{prompts-qh1akhfz.js → prompts-hcecy2na.js} +6 -6
  29. package/dist/{provision-xkhwz86g.js → provision-tch8rc3y.js} +6 -6
  30. package/dist/{registry-d7xdm4dw.js → registry-tv8fktxc.js} +4 -4
  31. package/dist/{skills-zfenne8w.js → skills-mwftqzyk.js} +6 -6
  32. package/dist/{sync-ra280dhc.js → sync-v0me021f.js} +10 -10
  33. package/package.json +1 -1
  34. package/skills/integration/index.json +2 -2
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  buildDoctorReport
3
- } from "./cli-629tc1d0.js";
4
- import"./cli-h1z9yyqk.js";
5
- import"./cli-0zws61ba.js";
3
+ } from "./cli-73x2yznb.js";
4
+ import"./cli-rdh9jjr2.js";
5
+ import"./cli-79pzgqtj.js";
6
6
  import"./cli-mm48br00.js";
7
7
  import {
8
8
  readHarnessSyncState
9
9
  } from "./cli-xq45etg1.js";
10
- import"./cli-m4474bnj.js";
10
+ import"./cli-gtke9wrw.js";
11
11
  import"./cli-e0kbye4s.js";
12
- import"./cli-4kf462jq.js";
13
- import"./cli-j08a1mam.js";
12
+ import"./cli-1ehmy9rh.js";
13
+ import"./cli-wry78bg8.js";
14
14
  import {
15
15
  resolveApiKey,
16
16
  resolveIngestUrl,
17
17
  resolveModaBaseUrl,
18
18
  resolveTenantId
19
- } from "./cli-da3h2p6w.js";
19
+ } from "./cli-40fqk078.js";
20
20
  import"./cli-9kfxkxmk.js";
21
- import"./cli-ns5fcnkz.js";
21
+ import"./cli-c1k20j6e.js";
22
22
  import {
23
23
  HARNESS_REPORT_APPROVAL_PATH,
24
24
  HARNESS_REPORT_PATH,
@@ -26,7 +26,7 @@ import {
26
26
  hashStableJson,
27
27
  readHarnessReport,
28
28
  validateHarnessReport
29
- } from "./cli-jj77e5yp.js";
29
+ } from "./cli-wqyrcnm1.js";
30
30
  import {
31
31
  CliInputError
32
32
  } from "./cli-k4tqwah4.js";
@@ -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-v7kgnpr6.js") : undefined;
98
+ const harness = graph ? await import("./harness-fx091nmr.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),
@@ -2,7 +2,7 @@ import {
2
2
  ApiError,
3
3
  callControlAPI,
4
4
  callDataAPI
5
- } from "./cli-j08a1mam.js";
5
+ } from "./cli-wry78bg8.js";
6
6
  import {
7
7
  continuationCommand,
8
8
  embeddedTenantIdFromApiKey,
@@ -11,7 +11,7 @@ import {
11
11
  resolveApiTenantId,
12
12
  setPlatformTenantOverride,
13
13
  shellArg
14
- } from "./cli-da3h2p6w.js";
14
+ } from "./cli-40fqk078.js";
15
15
  import {
16
16
  CliAccessError,
17
17
  CliInputError
@@ -5,7 +5,7 @@ import {
5
5
  resolveApiKey,
6
6
  resolveApiKeyFromActiveProfile,
7
7
  resolveModaBaseUrl
8
- } from "./cli-da3h2p6w.js";
8
+ } from "./cli-40fqk078.js";
9
9
 
10
10
  // src/api-key-auth.ts
11
11
  var PROBE_TIMEOUT_MS = 1e4;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactDeep
3
- } from "./cli-ns5fcnkz.js";
3
+ } from "./cli-c1k20j6e.js";
4
4
  import {
5
5
  CliAccessError,
6
6
  CliAuthError,
@@ -3,10 +3,10 @@ import {
3
3
  } from "./cli-e0kbye4s.js";
4
4
  import {
5
5
  callDataAPI
6
- } from "./cli-j08a1mam.js";
6
+ } from "./cli-wry78bg8.js";
7
7
  import {
8
8
  shellArg
9
- } from "./cli-da3h2p6w.js";
9
+ } from "./cli-40fqk078.js";
10
10
  import {
11
11
  CliInputError
12
12
  } from "./cli-k4tqwah4.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  isAuthSessionValid,
3
3
  loadAuthSession
4
- } from "./cli-h1z9yyqk.js";
4
+ } from "./cli-rdh9jjr2.js";
5
5
  import {
6
6
  inspectPromptManifest
7
- } from "./cli-0zws61ba.js";
7
+ } from "./cli-79pzgqtj.js";
8
8
  import {
9
9
  readHarnessSyncState,
10
10
  renderDoctorHuman,
@@ -12,7 +12,7 @@ import {
12
12
  } from "./cli-xq45etg1.js";
13
13
  import {
14
14
  callDataAPI
15
- } from "./cli-j08a1mam.js";
15
+ } from "./cli-wry78bg8.js";
16
16
  import {
17
17
  describeModaBaseUrl,
18
18
  ensureSecretFilePermissions,
@@ -27,7 +27,7 @@ import {
27
27
  resolveSecretReference,
28
28
  resolveTenantId,
29
29
  secretFilePathFromRef
30
- } from "./cli-da3h2p6w.js";
30
+ } from "./cli-40fqk078.js";
31
31
  import {
32
32
  __require
33
33
  } from "./cli-0v6na3yp.js";
@@ -395,7 +395,7 @@ async function harnessCurrentCheck(cwd, manifestPath, manifestExists, tenantId)
395
395
  };
396
396
  }
397
397
  try {
398
- const { scanHarness } = await import("./harness-v7kgnpr6.js");
398
+ const { scanHarness } = await import("./harness-fx091nmr.js");
399
399
  const current = scanHarness({
400
400
  rootDir: cwd,
401
401
  scannerVersion: "doctor",
@@ -4,14 +4,14 @@ import {
4
4
  } from "./cli-mm48br00.js";
5
5
  import {
6
6
  createCommandContext
7
- } from "./cli-m4474bnj.js";
7
+ } from "./cli-gtke9wrw.js";
8
8
  import {
9
9
  assertFlags,
10
10
  assertPositionals
11
- } from "./cli-4kf462jq.js";
11
+ } from "./cli-1ehmy9rh.js";
12
12
  import {
13
13
  callControlAPI
14
- } from "./cli-j08a1mam.js";
14
+ } from "./cli-wry78bg8.js";
15
15
  import {
16
16
  $isSeq,
17
17
  $parseDocument,
@@ -5543,7 +5543,7 @@ import {
5543
5543
  import { dirname, isAbsolute, join, relative, resolve } from "node:path";
5544
5544
  var promptSourcesModule;
5545
5545
  async function loadPromptSources() {
5546
- promptSourcesModule ??= await import("./prompt-sources-07tczyqa.js");
5546
+ promptSourcesModule ??= await import("./prompt-sources-qw2p4t5h.js");
5547
5547
  return promptSourcesModule;
5548
5548
  }
5549
5549
  var MODA_DIR = ".moda";
@@ -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-v7kgnpr6.js");
5771
+ const { analyzeHarnessPrompts } = await import("./harness-fx091nmr.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-d1vj2cxt.js");
5799
+ const { checkPromptAttribution } = await import("./prompt-attribution-avvkfq8c.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-v7kgnpr6.js");
6105
+ const { analyzeHarnessPrompts } = await import("./harness-fx091nmr.js");
6106
6106
  const result = await analyzeHarnessPrompts({
6107
6107
  rootDir: root,
6108
6108
  existing: manifest.sources,
@@ -6303,7 +6303,7 @@ async function readHarnessSources(reportPath) {
6303
6303
  if (!graph) {
6304
6304
  throw new CliInputError(`${selected} is not a harness report with a graph (schema: ${schemaLabel}). Regenerate it with \`${HARNESS_REANALYZE_COMMAND}\`.`);
6305
6305
  }
6306
- const { normalizeHarnessReport } = await import("./harness-report-r0dkpafy.js");
6306
+ const { normalizeHarnessReport } = await import("./harness-report-d64517j4.js");
6307
6307
  const { backfillPromptSource, resolvePromptSource } = await loadPromptSources();
6308
6308
  const report = normalizeHarnessReport(raw);
6309
6309
  const artifacts = (report.graph.artifacts ?? []).filter((artifact) => artifact.type === "prompt");
@@ -84,7 +84,7 @@ function isEvalLikePath(path) {
84
84
  return /(^|\/)(evals?|tests?|__tests__)\//i.test(path) && /\.(ts|tsx|js|mjs|py|json|ya?ml)$/i.test(path);
85
85
  }
86
86
  function isDeploymentLikePath(path) {
87
- return /(^|\/)(wrangler\.toml|vercel\.json|render\.ya?ml|railway\.json|Dockerfile|docker-compose\.ya?ml)$/i.test(path) || /^\.github\/workflows\/[^/]+\.ya?ml$/i.test(path);
87
+ return /(^|\/)(wrangler\.(toml|json|jsonc)|vercel\.json|render\.ya?ml|railway\.json|Dockerfile|docker-compose\.ya?ml)$/i.test(path) || /^\.github\/workflows\/[^/]+\.ya?ml$/i.test(path);
88
88
  }
89
89
  function isDeveloperAgentConfigPath(path) {
90
90
  return path === ".claude/settings.json" || path === ".codex/hooks.json" || path === ".cursor/hooks.json";
@@ -122,6 +122,7 @@ function isTextFile(path) {
122
122
  ".cjs",
123
123
  ".js",
124
124
  ".json",
125
+ ".jsonc",
125
126
  ".jsx",
126
127
  ".md",
127
128
  ".mdc",
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  fetchApiKeyProbe
3
- } from "./cli-d6gfxx8t.js";
3
+ } from "./cli-3dj84cbk.js";
4
4
  import {
5
5
  authFetch,
6
6
  getCachedLoginContext
7
- } from "./cli-h1z9yyqk.js";
7
+ } from "./cli-rdh9jjr2.js";
8
8
  import {
9
9
  embeddedTenantIdFromApiKey,
10
10
  getModaDir,
@@ -15,7 +15,7 @@ import {
15
15
  resolveTenantIdFromActiveProfile,
16
16
  saveCliConfig,
17
17
  writeSecretJsonFile
18
- } from "./cli-da3h2p6w.js";
18
+ } from "./cli-40fqk078.js";
19
19
  import {
20
20
  CliAccessError,
21
21
  CliInputError,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createCliOutput,
3
3
  outputModeFromFlags
4
- } from "./cli-da3h2p6w.js";
4
+ } from "./cli-40fqk078.js";
5
5
 
6
6
  // src/command-context.ts
7
7
  function flagEnabled(flags, key) {
@@ -13,22 +13,22 @@ import {
13
13
  } from "./cli-hcwdz9sd.js";
14
14
  import {
15
15
  createCommandContext
16
- } from "./cli-m4474bnj.js";
16
+ } from "./cli-gtke9wrw.js";
17
17
  import {
18
18
  assertFlags,
19
19
  assertPositionals,
20
20
  writeDryRun
21
- } from "./cli-4kf462jq.js";
21
+ } from "./cli-1ehmy9rh.js";
22
22
  import {
23
23
  callControlAPI
24
- } from "./cli-j08a1mam.js";
24
+ } from "./cli-wry78bg8.js";
25
25
  import {
26
26
  recordApiRequest,
27
27
  resolveApiKey,
28
28
  resolveIngestUrl,
29
29
  resolveTenantId,
30
30
  shellArg
31
- } from "./cli-da3h2p6w.js";
31
+ } from "./cli-40fqk078.js";
32
32
  import {
33
33
  CliInputError
34
34
  } from "./cli-k4tqwah4.js";
@@ -13,16 +13,16 @@ import {
13
13
  import {
14
14
  createCommandContext,
15
15
  stringOption
16
- } from "./cli-m4474bnj.js";
16
+ } from "./cli-gtke9wrw.js";
17
17
  import {
18
18
  assertFlags,
19
19
  assertPositionals,
20
20
  requireTenant
21
- } from "./cli-4kf462jq.js";
21
+ } from "./cli-1ehmy9rh.js";
22
22
  import {
23
23
  ApiError,
24
24
  callControlAPI
25
- } from "./cli-j08a1mam.js";
25
+ } from "./cli-wry78bg8.js";
26
26
  import {
27
27
  embeddedTenantIdFromApiKey,
28
28
  getActiveProfile,
@@ -32,7 +32,7 @@ import {
32
32
  resolveModaBaseUrl,
33
33
  resolveTenantId,
34
34
  shellArg
35
- } from "./cli-da3h2p6w.js";
35
+ } from "./cli-40fqk078.js";
36
36
  import {
37
37
  PYTHON_AGENT_MODULES,
38
38
  TYPESCRIPT_AGENT_MODULES,
@@ -44,7 +44,7 @@ import {
44
44
  require_typescript,
45
45
  resolvePromptSource,
46
46
  validatePromptSource
47
- } from "./cli-qpq84eee.js";
47
+ } from "./cli-vswckv9g.js";
48
48
  import {
49
49
  $isMap,
50
50
  $isNode,
@@ -70,7 +70,7 @@ import {
70
70
  packSnapshot,
71
71
  redactDeep,
72
72
  shouldInventoryFile
73
- } from "./cli-ns5fcnkz.js";
73
+ } from "./cli-c1k20j6e.js";
74
74
  import {
75
75
  HARNESS_ANALYZE_CONCERNS,
76
76
  HARNESS_REPORT_PATH,
@@ -90,7 +90,7 @@ import {
90
90
  stampRemoteSnapshotTruncation,
91
91
  validateHarnessReport,
92
92
  writeHarnessReportArtifacts
93
- } from "./cli-jj77e5yp.js";
93
+ } from "./cli-wqyrcnm1.js";
94
94
  import {
95
95
  CliInputError,
96
96
  CliInputRequiredError
@@ -409,7 +409,7 @@ function stripAnsi2(value) {
409
409
  // src/harness-remote.ts
410
410
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
411
411
  import { join } from "node:path";
412
- var DEFAULT_REMOTE_ANALYZE_TIMEOUT_MS = 2100000;
412
+ var DEFAULT_REMOTE_ANALYZE_TIMEOUT_MS = 3600000;
413
413
  var DEFAULT_REMOTE_POLL_INITIAL_MS = 3000;
414
414
  var DEFAULT_REMOTE_POLL_MAX_MS = 15000;
415
415
  var MIN_REMOTE_POLL_DELAY_MS = 250;
@@ -14049,7 +14049,7 @@ async function runHarnessCommand(context) {
14049
14049
  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.");
14050
14050
  }
14051
14051
  if (context.flags["github-actions"] === "true") {
14052
- const { runGithubActionsAnalyze } = await import("./harness-github-actions-njdxwsn5.js");
14052
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-jfbcsx2s.js");
14053
14053
  const result = await runGithubActionsAnalyze(rootDir, {
14054
14054
  writeReport: (report2) => {
14055
14055
  const normalized = normalizeHarnessReport(report2);
@@ -14725,8 +14725,8 @@ function removeArtifacts(report, ids) {
14725
14725
  ...claim,
14726
14726
  kind: "unknown",
14727
14727
  subjectId: `unresolved_${removed}`,
14728
- title: `Unverified prompt source: ${claim.title}`,
14729
- summary: `The analyst's source mapping for ${removed} did not verify against the repository, so it was left out of the harness. ${claim.summary ?? ""}`.trim().slice(0, MAX_HARNESS_REPORT_SUMMARY_LENGTH)
14728
+ title: `Unverified: ${claim.title}`,
14729
+ summary: `${removed} could not be verified against the analyzed source, so it was left out of the harness. ${claim.summary ?? ""}`.trim().slice(0, MAX_HARNESS_REPORT_SUMMARY_LENGTH)
14730
14730
  };
14731
14731
  });
14732
14732
  }
@@ -14751,6 +14751,19 @@ function repairExternalAnalystReport(report, rootDir, options = {}) {
14751
14751
  normalized.graph.unknowns.push({ id: `unresolved_${artifact.id}`, question: error instanceof Error ? error.message : String(error), candidateIds: [artifact.id], evidence: artifact.evidence });
14752
14752
  }
14753
14753
  }
14754
+ for (const artifact of normalized.graph.artifacts) {
14755
+ if (unverified.has(artifact.id) || !requiresArtifactBody(artifact.type))
14756
+ continue;
14757
+ if (artifactHasBody(artifact))
14758
+ continue;
14759
+ unverified.add(artifact.id);
14760
+ normalized.graph.unknowns.push({
14761
+ id: `unresolved_${artifact.id}`,
14762
+ question: `No source for ${artifact.type} ${artifact.name ?? artifact.id} was found in the analyzed snapshot, so its content could not be captured.`,
14763
+ candidateIds: [artifact.id],
14764
+ evidence: artifact.evidence
14765
+ });
14766
+ }
14754
14767
  if (unverified.size > 0)
14755
14768
  removeArtifacts(normalized, unverified);
14756
14769
  deriveRelationshipsFromGraph(normalized.graph);
@@ -14833,17 +14846,100 @@ function mergeDeterministicArtifacts(graph, rootDir, options = {}) {
14833
14846
  } catch {
14834
14847
  return { added: 0 };
14835
14848
  }
14849
+ backfillRefutationEvidenceReasons(graph);
14850
+ const refuted = analystRefutations(graph);
14851
+ const candidatePaths = new Set(promoted.flatMap((artifact) => artifact.evidence.map((entry) => typeof entry.path === "string" ? normalizePath2(entry.path) : "").filter(Boolean)));
14836
14852
  let added = 0;
14837
14853
  for (const artifact of promoted) {
14838
14854
  if (allowedTypes && !allowedTypes.has(artifact.type))
14839
14855
  continue;
14840
14856
  if (graphCoversPromotedArtifact(graph, artifact))
14841
14857
  continue;
14858
+ if (isRefutedByAnalyst(artifact, refuted, candidatePaths))
14859
+ continue;
14842
14860
  graph.artifacts.push(artifact);
14843
14861
  added += 1;
14844
14862
  }
14845
14863
  return { added };
14846
14864
  }
14865
+ function backfillRefutationEvidenceReasons(graph) {
14866
+ for (const unknown of graph.unknowns ?? []) {
14867
+ if (!/refut/i.test(String(unknown.id ?? "")))
14868
+ continue;
14869
+ for (const entry of unknown.evidence ?? []) {
14870
+ if (entry && typeof entry.path === "string" && (typeof entry.reason !== "string" || !entry.reason.trim())) {
14871
+ entry.reason = "Refuted deterministic candidate";
14872
+ }
14873
+ }
14874
+ }
14875
+ }
14876
+ var DETECTOR_ARTIFACT_TYPES = {
14877
+ prompt_literal: "prompt",
14878
+ prompt_file: "prompt",
14879
+ message_construction: "prompt",
14880
+ tool_definition: "tool",
14881
+ tool_schema: "tool",
14882
+ model_config: "model_config"
14883
+ };
14884
+ function refutedTypes(...texts) {
14885
+ const types = new Set;
14886
+ for (const text of texts) {
14887
+ for (const match of String(text ?? "").matchAll(/\b(prompt_literal|prompt_file|message_construction|tool_definition|tool_schema|model_config)\b/g)) {
14888
+ types.add(DETECTOR_ARTIFACT_TYPES[match[1]]);
14889
+ }
14890
+ }
14891
+ return types.size > 0 ? types : undefined;
14892
+ }
14893
+ function analystRefutations(graph) {
14894
+ const result = { candidateIds: new Set, locations: [] };
14895
+ for (const unknown of graph.unknowns ?? []) {
14896
+ const id = String(unknown.id ?? "");
14897
+ const question = String(unknown.question ?? "");
14898
+ if (!/refut/i.test(id) && !/refut/i.test(question))
14899
+ continue;
14900
+ for (const candidateId of unknown.candidateIds ?? [])
14901
+ result.candidateIds.add(String(candidateId));
14902
+ for (const entry of unknown.evidence ?? []) {
14903
+ if (typeof entry?.path !== "string" || !entry.path)
14904
+ continue;
14905
+ const line = typeof entry.line === "number" ? entry.line : undefined;
14906
+ result.locations.push({ path: normalizePath2(entry.path), start: line, end: line, types: refutedTypes(entry.reason, question) });
14907
+ }
14908
+ for (const match of question.matchAll(/([\w./-]+\.[a-z0-9]{1,5})(?::|\s+(?:lines?\s+)?)(\d+)(?:\s*[-\u2013]\s*(\d+))?/gi)) {
14909
+ const start = Number(match[2]);
14910
+ result.locations.push({ path: normalizePath2(match[1]), start, end: match[3] ? Number(match[3]) : start, types: refutedTypes(question) });
14911
+ }
14912
+ }
14913
+ return result;
14914
+ }
14915
+ function refutationMatchesPath(location, path, candidatePaths) {
14916
+ if (location === path)
14917
+ return true;
14918
+ if (location.includes("/"))
14919
+ return false;
14920
+ const matches = [...candidatePaths].filter((candidate) => candidate === location || candidate.endsWith(`/${location}`));
14921
+ return matches.length === 1 && matches[0] === path;
14922
+ }
14923
+ function isRefutedByAnalyst(artifact, refuted, candidatePaths) {
14924
+ if (refuted.candidateIds.has(artifact.id))
14925
+ return true;
14926
+ return artifact.evidence.some((entry) => {
14927
+ if (typeof entry.path !== "string")
14928
+ return false;
14929
+ const path = normalizePath2(entry.path);
14930
+ return refuted.locations.some((location) => {
14931
+ if (location.types && !location.types.has(artifact.type))
14932
+ return false;
14933
+ if (!refutationMatchesPath(location.path, path, candidatePaths))
14934
+ return false;
14935
+ if (location.start === undefined)
14936
+ return typeof entry.line !== "number";
14937
+ if (typeof entry.line !== "number")
14938
+ return false;
14939
+ return entry.line >= location.start && entry.line <= (location.end ?? location.start);
14940
+ });
14941
+ });
14942
+ }
14847
14943
  function artifactSourceKey(artifact) {
14848
14944
  if (artifact.sourcePath)
14849
14945
  return normalizePath2(artifact.sourcePath);
@@ -15859,7 +15955,7 @@ function renderAnalystCandidateLines(report, concern) {
15859
15955
  const lines = [
15860
15956
  "",
15861
15957
  concern ? `Deterministic candidate inventory for the ${concern} concern (${candidates.length} candidates, scanned in ${report.stats.durationMs}ms):` : `Deterministic candidate inventory (${candidates.length} candidates across ${report.stats.filesWithCandidates} files, scanned in ${report.stats.durationMs}ms):`,
15862
- concern ? "Each entry is path:line [detector] excerpt. Candidates are pattern matches — verify each against the real file, drop false positives (list refuted ones in unknowns), and hunt for in-concern items the patterns cannot see. Do not cite this list as evidence; cite the files." : "Each entry is path:line [detector] excerpt. Candidates are pattern matches — verify each against the real file and drop false positives. Verified deterministic candidates are also auto-merged into the graph after your run, so prioritize (1) agents, topology, and relationships, (2) verifying or refuting these candidates (list refuted ones in unknowns), and (3) artifacts the patterns cannot see (runtime agents, prompts assembled at runtime, cross-file wiring) — rather than re-listing every candidate as an artifact. Do not cite this list as evidence; cite the files."
15958
+ concern ? 'Each entry is path:line [detector] excerpt. Candidates are pattern matches — verify each against the real file, drop false positives (list refuted ones in unknowns: an unknown whose id starts with "refuted_", with one evidence entry {path, line, reason} per refuted candidate, using the path:line shown for that candidate and starting the reason with its [detector]), and hunt for in-concern items the patterns cannot see. Do not cite this list as evidence; cite the files.' : 'Each entry is path:line [detector] excerpt. Candidates are pattern matches — verify each against the real file and drop false positives. Verified deterministic candidates are also auto-merged into the graph after your run, so prioritize (1) agents, topology, and relationships, (2) verifying or refuting these candidates (list refuted ones in unknowns: an unknown whose id starts with "refuted_", with one evidence entry {path, line, reason} per refuted candidate, using the path:line shown for that candidate and starting the reason with its [detector]; refuted candidates are never auto-merged), and (3) artifacts the patterns cannot see (runtime agents, prompts assembled at runtime, cross-file wiring) — rather than re-listing every candidate as an artifact. Do not cite this list as evidence; cite the files.'
15863
15959
  ];
15864
15960
  if (concern === "evals") {
15865
15961
  lines.push("Note: evals, guardrails, and memory/retrieval stores have no deterministic detector — only model_config candidates are seeded. Discover the rest by investigation.");
@@ -18125,4 +18221,4 @@ function hashText(text) {
18125
18221
  return createHash5("sha256").update(text).digest("hex");
18126
18222
  }
18127
18223
 
18128
- export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, repairExternalAnalystReport, deriveRelationshipsFromGraph, mergeDeterministicArtifacts, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, 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 };
18224
+ export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, repairExternalAnalystReport, deriveRelationshipsFromGraph, mergeDeterministicArtifacts, analystRefutations, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, 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 };
@@ -6,7 +6,7 @@ import {
6
6
  saveProfileConfig,
7
7
  secretFilePathFromRef,
8
8
  writeSecretJsonFile
9
- } from "./cli-da3h2p6w.js";
9
+ } from "./cli-40fqk078.js";
10
10
  import {
11
11
  CliAuthError,
12
12
  CliInputError
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  SECRET_KEYS,
6
6
  redactString
7
- } from "./cli-ns5fcnkz.js";
7
+ } from "./cli-c1k20j6e.js";
8
8
  import {
9
9
  __commonJS,
10
10
  __require,
@@ -464,6 +464,19 @@ function validateHarnessReport(report, rootDir, options) {
464
464
  warnings
465
465
  };
466
466
  }
467
+ function refutedToolCandidateCount(graph) {
468
+ const unknowns = Array.isArray(graph.unknowns) ? graph.unknowns.filter(isRecord) : [];
469
+ let count = 0;
470
+ for (const unknown of unknowns) {
471
+ const label = `${String(unknown.id ?? "")} ${String(unknown.question ?? "")}`;
472
+ if (!/refut/i.test(String(unknown.id ?? "")) || !/tool/i.test(label))
473
+ continue;
474
+ const ids = Array.isArray(unknown.candidateIds) ? unknown.candidateIds.length : 0;
475
+ const evidence = Array.isArray(unknown.evidence) ? unknown.evidence.length : 0;
476
+ count += Math.max(ids, evidence);
477
+ }
478
+ return count;
479
+ }
467
480
  function validateDeterministicFloor(report, floor, check, warn, concern) {
468
481
  if (!floor)
469
482
  return;
@@ -476,8 +489,10 @@ function validateDeterministicFloor(report, floor, check, warn, concern) {
476
489
  const providerCount = safeArrayLength(graph.modelProviders);
477
490
  const runtimeAgentCount = safeArrayLength(graph.runtimeAgents);
478
491
  if (applyToolFloor && typeof floor.toolCandidates === "number" && floor.toolCandidates >= 5) {
479
- const minimumTools = Math.ceil(0.5 * floor.toolCandidates);
480
- check("floor_tools", toolArtifactCount >= minimumTools, `Deterministic scan found ${floor.toolCandidates} high-confidence tool definition candidate(s); the report graph must include at least ${minimumTools} tool artifact(s) but has ${toolArtifactCount}.`);
492
+ const refutedTools = refutedToolCandidateCount(graph);
493
+ const effectiveCandidates = Math.max(0, floor.toolCandidates - refutedTools);
494
+ const minimumTools = Math.ceil(0.5 * effectiveCandidates);
495
+ check("floor_tools", toolArtifactCount >= minimumTools, `Deterministic scan found ${floor.toolCandidates} high-confidence tool definition candidate(s)${refutedTools ? ` (${refutedTools} refuted by the analyst)` : ""}; the report graph must include at least ${minimumTools} tool artifact(s) but has ${toolArtifactCount}.`);
481
496
  }
482
497
  const providerPackages = Array.isArray(floor.providerPackages) ? floor.providerPackages.filter((name) => typeof name === "string" && name.length > 0) : [];
483
498
  if (applyTopologyFloors && providerPackages.length > 0) {
@@ -3,7 +3,7 @@ import {
3
3
  recordApiRequest,
4
4
  resolveApiKey,
5
5
  resolveModaBaseUrl
6
- } from "./cli-da3h2p6w.js";
6
+ } from "./cli-40fqk078.js";
7
7
 
8
8
  // src/api-client.ts
9
9
  var REQUEST_TIMEOUT_MS = 30000;
package/dist/cli.js CHANGED
@@ -26,10 +26,10 @@ import {
26
26
  withSummaryCompare,
27
27
  withToolFailureAnchors,
28
28
  withoutDetectionWindows
29
- } from "./cli-sqnw96gj.js";
29
+ } from "./cli-4pzbgxcn.js";
30
30
  import {
31
31
  createCommandContext
32
- } from "./cli-m4474bnj.js";
32
+ } from "./cli-gtke9wrw.js";
33
33
  import {
34
34
  envOptOutSet,
35
35
  envSwitchedOff,
@@ -85,11 +85,11 @@ import {
85
85
  unknownSignalsSubcommandError,
86
86
  usageLine,
87
87
  writeDryRun
88
- } from "./cli-4kf462jq.js";
88
+ } from "./cli-1ehmy9rh.js";
89
89
  import {
90
90
  ApiError,
91
91
  callDataAPI
92
- } from "./cli-j08a1mam.js";
92
+ } from "./cli-wry78bg8.js";
93
93
  import {
94
94
  AGENT_ERROR_CODES,
95
95
  EXIT_AUTH_REQUIRED,
@@ -122,8 +122,8 @@ import {
122
122
  shellArg,
123
123
  validateConfig,
124
124
  wasOutputCancelled
125
- } from "./cli-da3h2p6w.js";
126
- import"./cli-ns5fcnkz.js";
125
+ } from "./cli-40fqk078.js";
126
+ import"./cli-c1k20j6e.js";
127
127
  import {
128
128
  CliAccessError,
129
129
  CliAuthError,
@@ -2967,40 +2967,40 @@ function leafManifestFields(leaf, commands) {
2967
2967
  import { fileURLToPath } from "url";
2968
2968
  import { realpathSync } from "fs";
2969
2969
  async function runPromptsCommand(...args) {
2970
- return (await import("./prompts-qh1akhfz.js")).runPromptsCommand(...args);
2970
+ return (await import("./prompts-hcecy2na.js")).runPromptsCommand(...args);
2971
2971
  }
2972
2972
  async function runSkillsCommand(...args) {
2973
- return (await import("./skills-zfenne8w.js")).runSkillsCommand(...args);
2973
+ return (await import("./skills-mwftqzyk.js")).runSkillsCommand(...args);
2974
2974
  }
2975
2975
  async function runHarnessCommand(...args) {
2976
- return (await import("./harness-v7kgnpr6.js")).runHarnessCommand(...args);
2976
+ return (await import("./harness-fx091nmr.js")).runHarnessCommand(...args);
2977
2977
  }
2978
2978
  async function runSyncCommand(...args) {
2979
- return (await import("./sync-ra280dhc.js")).runSyncCommand(...args);
2979
+ return (await import("./sync-v0me021f.js")).runSyncCommand(...args);
2980
2980
  }
2981
2981
  async function runRegistryCommand(...args) {
2982
- return (await import("./registry-d7xdm4dw.js")).runRegistryCommand(...args);
2982
+ return (await import("./registry-tv8fktxc.js")).runRegistryCommand(...args);
2983
2983
  }
2984
2984
  async function runDoctorCommand(...args) {
2985
- return (await import("./doctor-dw9bqzeg.js")).runDoctorCommand(...args);
2985
+ return (await import("./doctor-dz8gfz2h.js")).runDoctorCommand(...args);
2986
2986
  }
2987
2987
  async function runStatusCommand(...args) {
2988
- return (await import("./doctor-dw9bqzeg.js")).runStatusCommand(...args);
2988
+ return (await import("./doctor-dz8gfz2h.js")).runStatusCommand(...args);
2989
2989
  }
2990
2990
  async function runAuthCommand(...args) {
2991
- return (await import("./profile-commands-zbyn9xg2.js")).runAuthCommand(...args);
2991
+ return (await import("./profile-commands-nbaec4y9.js")).runAuthCommand(...args);
2992
2992
  }
2993
2993
  async function runConfigCommand(...args) {
2994
- return (await import("./profile-commands-zbyn9xg2.js")).runConfigCommand(...args);
2994
+ return (await import("./profile-commands-nbaec4y9.js")).runConfigCommand(...args);
2995
2995
  }
2996
2996
  async function runProfilesCommand(...args) {
2997
- return (await import("./profile-commands-zbyn9xg2.js")).runProfilesCommand(...args);
2997
+ return (await import("./profile-commands-nbaec4y9.js")).runProfilesCommand(...args);
2998
2998
  }
2999
2999
  async function runAgentCommand(...args) {
3000
- return (await import("./agent-de8bnj8x.js")).runAgentCommand(...args);
3000
+ return (await import("./agent-vdqppnq3.js")).runAgentCommand(...args);
3001
3001
  }
3002
3002
  async function runProductionCommand(...args) {
3003
- return (await import("./production-intelligence-fe5masaa.js")).runProductionCommand(...args);
3003
+ return (await import("./production-intelligence-zek0rkzj.js")).runProductionCommand(...args);
3004
3004
  }
3005
3005
  function parseArgs(argv) {
3006
3006
  const args = argv.slice(2);
@@ -6761,7 +6761,7 @@ var commandRegistry = createCommandRegistry([
6761
6761
  resetApiRequestCountBeforeRun: true,
6762
6762
  telemetry: "result-and-error",
6763
6763
  handler: async (context) => {
6764
- const { runInit } = await import("./index-40b5v59z.js");
6764
+ const { runInit } = await import("./index-q2d1fva7.js");
6765
6765
  if (context.outputMode === "agent-stream") {
6766
6766
  context.output.writeEvent({
6767
6767
  event: "started",
@@ -6811,7 +6811,7 @@ var commandRegistry = createCommandRegistry([
6811
6811
  resetApiRequestCountBeforeRun: true,
6812
6812
  telemetry: "result-and-error",
6813
6813
  handler: async (context) => {
6814
- const { runProvision } = await import("./provision-xkhwz86g.js");
6814
+ const { runProvision } = await import("./provision-tch8rc3y.js");
6815
6815
  return runProvision(context, {
6816
6816
  resumeCommand: buildResumeCommand("provision", context.rawFlags)
6817
6817
  });
@@ -3,18 +3,18 @@ import {
3
3
  promptsDiscoveredCheck,
4
4
  runDoctorCommand,
5
5
  runStatusCommand
6
- } from "./cli-629tc1d0.js";
7
- import"./cli-h1z9yyqk.js";
8
- import"./cli-0zws61ba.js";
6
+ } from "./cli-73x2yznb.js";
7
+ import"./cli-rdh9jjr2.js";
8
+ import"./cli-79pzgqtj.js";
9
9
  import"./cli-mm48br00.js";
10
10
  import"./cli-xq45etg1.js";
11
- import"./cli-m4474bnj.js";
11
+ import"./cli-gtke9wrw.js";
12
12
  import"./cli-e0kbye4s.js";
13
- import"./cli-4kf462jq.js";
14
- import"./cli-j08a1mam.js";
15
- import"./cli-da3h2p6w.js";
13
+ import"./cli-1ehmy9rh.js";
14
+ import"./cli-wry78bg8.js";
15
+ import"./cli-40fqk078.js";
16
16
  import"./cli-9kfxkxmk.js";
17
- import"./cli-ns5fcnkz.js";
17
+ import"./cli-c1k20j6e.js";
18
18
  import"./cli-k4tqwah4.js";
19
19
  import"./cli-0v6na3yp.js";
20
20
  export {
@@ -2,6 +2,7 @@ import {
2
2
  CONCERN_CANDIDATE_KINDS,
3
3
  SEED_CANDIDATE_KIND_LABELS,
4
4
  analystEventProgress,
5
+ analystRefutations,
5
6
  analyzeHarnessPrompts,
6
7
  assertHarnessGraphSyncQuality,
7
8
  buildSourceSnapshot,
@@ -40,20 +41,20 @@ import {
40
41
  writeHarnessAnalyzeResult,
41
42
  writeHarnessArtifacts,
42
43
  writeHumanProgress
43
- } from "./cli-10zgbewk.js";
44
+ } from "./cli-n3bjh1pc.js";
44
45
  import"./cli-97fnztpy.js";
45
46
  import"./cli-xq45etg1.js";
46
- import"./cli-m4474bnj.js";
47
+ import"./cli-gtke9wrw.js";
47
48
  import"./cli-e0kbye4s.js";
48
- import"./cli-4kf462jq.js";
49
- import"./cli-j08a1mam.js";
50
- import"./cli-da3h2p6w.js";
51
- import"./cli-qpq84eee.js";
49
+ import"./cli-1ehmy9rh.js";
50
+ import"./cli-wry78bg8.js";
51
+ import"./cli-40fqk078.js";
52
+ import"./cli-vswckv9g.js";
52
53
  import"./cli-9kfxkxmk.js";
53
- import"./cli-ns5fcnkz.js";
54
+ import"./cli-c1k20j6e.js";
54
55
  import {
55
56
  HARNESS_ANALYZE_CONCERNS
56
- } from "./cli-jj77e5yp.js";
57
+ } from "./cli-wqyrcnm1.js";
57
58
  import"./cli-k4tqwah4.js";
58
59
  import"./cli-0v6na3yp.js";
59
60
  export {
@@ -95,6 +96,7 @@ export {
95
96
  buildSourceSnapshot,
96
97
  assertHarnessGraphSyncQuality,
97
98
  analyzeHarnessPrompts,
99
+ analystRefutations,
98
100
  analystEventProgress,
99
101
  SEED_CANDIDATE_KIND_LABELS,
100
102
  HARNESS_ANALYZE_CONCERNS,
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  buildSourceSnapshot
3
- } from "./cli-10zgbewk.js";
3
+ } from "./cli-n3bjh1pc.js";
4
4
  import"./cli-97fnztpy.js";
5
5
  import"./cli-xq45etg1.js";
6
- import"./cli-m4474bnj.js";
6
+ import"./cli-gtke9wrw.js";
7
7
  import"./cli-e0kbye4s.js";
8
- import"./cli-4kf462jq.js";
9
- import"./cli-j08a1mam.js";
8
+ import"./cli-1ehmy9rh.js";
9
+ import"./cli-wry78bg8.js";
10
10
  import {
11
11
  recordApiRequest
12
- } from "./cli-da3h2p6w.js";
13
- import"./cli-qpq84eee.js";
12
+ } from "./cli-40fqk078.js";
13
+ import"./cli-vswckv9g.js";
14
14
  import"./cli-9kfxkxmk.js";
15
- import"./cli-ns5fcnkz.js";
16
- import"./cli-jj77e5yp.js";
15
+ import"./cli-c1k20j6e.js";
16
+ import"./cli-wqyrcnm1.js";
17
17
  import"./cli-k4tqwah4.js";
18
18
  import"./cli-0v6na3yp.js";
19
19
 
@@ -24,7 +24,7 @@ import {
24
24
  stampRemoteSnapshotTruncation,
25
25
  validateHarnessReport,
26
26
  writeHarnessReportArtifacts
27
- } from "./cli-jj77e5yp.js";
27
+ } from "./cli-wqyrcnm1.js";
28
28
  import"./cli-k4tqwah4.js";
29
29
  import"./cli-0v6na3yp.js";
30
30
  export {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  selectTenantAndCreateKey
3
- } from "./cli-xctqdn42.js";
4
- import"./cli-d6gfxx8t.js";
3
+ } from "./cli-dxxc7tzq.js";
4
+ import"./cli-3dj84cbk.js";
5
5
  import {
6
6
  bundledSkillsDir,
7
7
  installIntegrationSkill,
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  agentsMdProblem,
12
12
  runSkillSync
13
- } from "./cli-s7d069g0.js";
13
+ } from "./cli-mf37dxpc.js";
14
14
  import"./cli-qm5b1vck.js";
15
15
  import {
16
16
  detectAgents
@@ -21,18 +21,18 @@ import {
21
21
  } from "./cli-hcwdz9sd.js";
22
22
  import {
23
23
  buildDoctorReport
24
- } from "./cli-629tc1d0.js";
24
+ } from "./cli-73x2yznb.js";
25
25
  import {
26
26
  ConnectCodeError,
27
27
  connectWithCode,
28
28
  loadAuthSession,
29
29
  loadToken,
30
30
  login
31
- } from "./cli-h1z9yyqk.js";
31
+ } from "./cli-rdh9jjr2.js";
32
32
  import {
33
33
  initPrompts,
34
34
  runPromptSync
35
- } from "./cli-0zws61ba.js";
35
+ } from "./cli-79pzgqtj.js";
36
36
  import"./cli-mm48br00.js";
37
37
  import {
38
38
  codingAgentDisplayName,
@@ -46,7 +46,7 @@ import {
46
46
  runCodingAgent,
47
47
  runHarnessCommand,
48
48
  startRemoteAnalyze
49
- } from "./cli-10zgbewk.js";
49
+ } from "./cli-n3bjh1pc.js";
50
50
  import {
51
51
  stripAnsi
52
52
  } from "./cli-97fnztpy.js";
@@ -60,21 +60,21 @@ import {
60
60
  } from "./cli-xq45etg1.js";
61
61
  import {
62
62
  createCommandContext
63
- } from "./cli-m4474bnj.js";
63
+ } from "./cli-gtke9wrw.js";
64
64
  import"./cli-e0kbye4s.js";
65
- import"./cli-4kf462jq.js";
66
- import"./cli-j08a1mam.js";
65
+ import"./cli-1ehmy9rh.js";
66
+ import"./cli-wry78bg8.js";
67
67
  import {
68
68
  VERSION,
69
69
  recordApiRequest,
70
70
  resolveIngestUrl,
71
71
  resolveModaBaseUrl,
72
72
  shellArg
73
- } from "./cli-da3h2p6w.js";
74
- import"./cli-qpq84eee.js";
73
+ } from "./cli-40fqk078.js";
74
+ import"./cli-vswckv9g.js";
75
75
  import"./cli-9kfxkxmk.js";
76
- import"./cli-ns5fcnkz.js";
77
- import"./cli-jj77e5yp.js";
76
+ import"./cli-c1k20j6e.js";
77
+ import"./cli-wqyrcnm1.js";
78
78
  import {
79
79
  CliAuthError,
80
80
  CliInputError
@@ -10,7 +10,7 @@ import {
10
10
  overviewTrendsQuery,
11
11
  renderTrendsHuman,
12
12
  trendsSummaryText
13
- } from "./cli-sqnw96gj.js";
13
+ } from "./cli-4pzbgxcn.js";
14
14
  import {
15
15
  renderMarkdownForTerminal,
16
16
  shouldColorTerminalOutput,
@@ -21,7 +21,7 @@ import"./cli-e0kbye4s.js";
21
21
  import {
22
22
  callControlAPI,
23
23
  callDataAPI
24
- } from "./cli-j08a1mam.js";
24
+ } from "./cli-wry78bg8.js";
25
25
  import {
26
26
  EXIT_DEGRADED,
27
27
  EXIT_OK,
@@ -31,8 +31,8 @@ import {
31
31
  resolveModaBaseUrl,
32
32
  safeWriteStderr,
33
33
  shellArg
34
- } from "./cli-da3h2p6w.js";
35
- import"./cli-ns5fcnkz.js";
34
+ } from "./cli-40fqk078.js";
35
+ import"./cli-c1k20j6e.js";
36
36
  import {
37
37
  CliAuthError,
38
38
  CliInputError,
@@ -2,7 +2,7 @@ import {
2
2
  probeApiKey,
3
3
  redactApiKey,
4
4
  resolveApiKeyCredential
5
- } from "./cli-d6gfxx8t.js";
5
+ } from "./cli-3dj84cbk.js";
6
6
  import {
7
7
  authFetch,
8
8
  clearAuthSession,
@@ -10,10 +10,10 @@ import {
10
10
  loadAuthSession,
11
11
  login,
12
12
  revokeCliSessionToken
13
- } from "./cli-h1z9yyqk.js";
13
+ } from "./cli-rdh9jjr2.js";
14
14
  import {
15
15
  ApiError
16
- } from "./cli-j08a1mam.js";
16
+ } from "./cli-wry78bg8.js";
17
17
  import {
18
18
  DEFAULT_INGEST_URL,
19
19
  EXIT_AUTH_REQUIRED,
@@ -44,8 +44,8 @@ import {
44
44
  setActiveProfile,
45
45
  shellArg,
46
46
  upsertProfile
47
- } from "./cli-da3h2p6w.js";
48
- import"./cli-ns5fcnkz.js";
47
+ } from "./cli-40fqk078.js";
48
+ import"./cli-c1k20j6e.js";
49
49
  import {
50
50
  CliInputError
51
51
  } from "./cli-k4tqwah4.js";
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  inventoryFiles,
3
3
  safePromptEvidencePath
4
- } from "./cli-10zgbewk.js";
4
+ } from "./cli-n3bjh1pc.js";
5
5
  import"./cli-97fnztpy.js";
6
6
  import"./cli-xq45etg1.js";
7
- import"./cli-m4474bnj.js";
7
+ import"./cli-gtke9wrw.js";
8
8
  import"./cli-e0kbye4s.js";
9
- import"./cli-4kf462jq.js";
10
- import"./cli-j08a1mam.js";
11
- import"./cli-da3h2p6w.js";
9
+ import"./cli-1ehmy9rh.js";
10
+ import"./cli-wry78bg8.js";
11
+ import"./cli-40fqk078.js";
12
12
  import {
13
13
  require_typescript
14
- } from "./cli-qpq84eee.js";
14
+ } from "./cli-vswckv9g.js";
15
15
  import"./cli-9kfxkxmk.js";
16
- import"./cli-ns5fcnkz.js";
17
- import"./cli-jj77e5yp.js";
16
+ import"./cli-c1k20j6e.js";
17
+ import"./cli-wqyrcnm1.js";
18
18
  import"./cli-k4tqwah4.js";
19
19
  import {
20
20
  __toESM
@@ -3,21 +3,21 @@ import {
3
3
  checkPromptMapping,
4
4
  discoverHarnessPromptSources,
5
5
  safePromptEvidencePath
6
- } from "./cli-10zgbewk.js";
6
+ } from "./cli-n3bjh1pc.js";
7
7
  import"./cli-97fnztpy.js";
8
8
  import"./cli-xq45etg1.js";
9
- import"./cli-m4474bnj.js";
9
+ import"./cli-gtke9wrw.js";
10
10
  import"./cli-e0kbye4s.js";
11
- import"./cli-4kf462jq.js";
12
- import"./cli-j08a1mam.js";
13
- import"./cli-da3h2p6w.js";
11
+ import"./cli-1ehmy9rh.js";
12
+ import"./cli-wry78bg8.js";
13
+ import"./cli-40fqk078.js";
14
14
  import {
15
15
  inspectCodeSelectors,
16
16
  inspectPythonSelectors
17
- } from "./cli-qpq84eee.js";
17
+ } from "./cli-vswckv9g.js";
18
18
  import"./cli-9kfxkxmk.js";
19
- import"./cli-ns5fcnkz.js";
20
- import"./cli-jj77e5yp.js";
19
+ import"./cli-c1k20j6e.js";
20
+ import"./cli-wqyrcnm1.js";
21
21
  import"./cli-k4tqwah4.js";
22
22
  import {
23
23
  __commonJS,
@@ -5,9 +5,9 @@ import {
5
5
  discoverStructuredPromptSources,
6
6
  resolvePromptSource,
7
7
  validatePromptSource
8
- } from "./cli-qpq84eee.js";
8
+ } from "./cli-vswckv9g.js";
9
9
  import"./cli-9kfxkxmk.js";
10
- import"./cli-ns5fcnkz.js";
10
+ import"./cli-c1k20j6e.js";
11
11
  import"./cli-0v6na3yp.js";
12
12
  export {
13
13
  validatePromptSource,
@@ -9,17 +9,17 @@ import {
9
9
  runPromptSync,
10
10
  runPromptsCommand,
11
11
  writePromptSyncProgress
12
- } from "./cli-0zws61ba.js";
12
+ } from "./cli-79pzgqtj.js";
13
13
  import {
14
14
  promptSourceHashPayload
15
15
  } from "./cli-mm48br00.js";
16
- import"./cli-m4474bnj.js";
16
+ import"./cli-gtke9wrw.js";
17
17
  import"./cli-e0kbye4s.js";
18
- import"./cli-4kf462jq.js";
19
- import"./cli-j08a1mam.js";
20
- import"./cli-da3h2p6w.js";
18
+ import"./cli-1ehmy9rh.js";
19
+ import"./cli-wry78bg8.js";
20
+ import"./cli-40fqk078.js";
21
21
  import"./cli-9kfxkxmk.js";
22
- import"./cli-ns5fcnkz.js";
22
+ import"./cli-c1k20j6e.js";
23
23
  import"./cli-k4tqwah4.js";
24
24
  import"./cli-0v6na3yp.js";
25
25
  export {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  selectTenantAndCreateKey
3
- } from "./cli-xctqdn42.js";
4
- import"./cli-d6gfxx8t.js";
3
+ } from "./cli-dxxc7tzq.js";
4
+ import"./cli-3dj84cbk.js";
5
5
  import {
6
6
  loadAuthSession
7
- } from "./cli-h1z9yyqk.js";
7
+ } from "./cli-rdh9jjr2.js";
8
8
  import {
9
9
  stringOption
10
- } from "./cli-m4474bnj.js";
10
+ } from "./cli-gtke9wrw.js";
11
11
  import"./cli-e0kbye4s.js";
12
12
  import {
13
13
  resolveIngestUrl,
14
14
  resolveModaBaseUrl
15
- } from "./cli-da3h2p6w.js";
16
- import"./cli-ns5fcnkz.js";
15
+ } from "./cli-40fqk078.js";
16
+ import"./cli-c1k20j6e.js";
17
17
  import {
18
18
  CliAuthError
19
19
  } from "./cli-k4tqwah4.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  assertFlags
3
- } from "./cli-4kf462jq.js";
3
+ } from "./cli-1ehmy9rh.js";
4
4
  import {
5
5
  callControlAPI
6
- } from "./cli-j08a1mam.js";
6
+ } from "./cli-wry78bg8.js";
7
7
  import {
8
8
  explicitOutputMode,
9
9
  resolveApiKey
10
- } from "./cli-da3h2p6w.js";
11
- import"./cli-ns5fcnkz.js";
10
+ } from "./cli-40fqk078.js";
11
+ import"./cli-c1k20j6e.js";
12
12
  import {
13
13
  CliInputError
14
14
  } from "./cli-k4tqwah4.js";
@@ -3,16 +3,16 @@ import {
3
3
  pullSkills,
4
4
  runSkillSync,
5
5
  runSkillsCommand
6
- } from "./cli-s7d069g0.js";
6
+ } from "./cli-mf37dxpc.js";
7
7
  import"./cli-qm5b1vck.js";
8
8
  import"./cli-rjav0vj1.js";
9
9
  import"./cli-hcwdz9sd.js";
10
- import"./cli-m4474bnj.js";
10
+ import"./cli-gtke9wrw.js";
11
11
  import"./cli-e0kbye4s.js";
12
- import"./cli-4kf462jq.js";
13
- import"./cli-j08a1mam.js";
14
- import"./cli-da3h2p6w.js";
15
- import"./cli-ns5fcnkz.js";
12
+ import"./cli-1ehmy9rh.js";
13
+ import"./cli-wry78bg8.js";
14
+ import"./cli-40fqk078.js";
15
+ import"./cli-c1k20j6e.js";
16
16
  import"./cli-k4tqwah4.js";
17
17
  import"./cli-0v6na3yp.js";
18
18
  export {
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  runSkillsCommand
3
- } from "./cli-s7d069g0.js";
3
+ } from "./cli-mf37dxpc.js";
4
4
  import"./cli-qm5b1vck.js";
5
5
  import"./cli-rjav0vj1.js";
6
6
  import"./cli-hcwdz9sd.js";
7
7
  import {
8
8
  runPromptsCommand
9
- } from "./cli-0zws61ba.js";
9
+ } from "./cli-79pzgqtj.js";
10
10
  import"./cli-mm48br00.js";
11
11
  import {
12
12
  runHarnessCommand
13
- } from "./cli-10zgbewk.js";
13
+ } from "./cli-n3bjh1pc.js";
14
14
  import"./cli-97fnztpy.js";
15
15
  import"./cli-xq45etg1.js";
16
- import"./cli-m4474bnj.js";
16
+ import"./cli-gtke9wrw.js";
17
17
  import"./cli-e0kbye4s.js";
18
- import"./cli-4kf462jq.js";
19
- import"./cli-j08a1mam.js";
20
- import"./cli-da3h2p6w.js";
21
- import"./cli-qpq84eee.js";
18
+ import"./cli-1ehmy9rh.js";
19
+ import"./cli-wry78bg8.js";
20
+ import"./cli-40fqk078.js";
21
+ import"./cli-vswckv9g.js";
22
22
  import"./cli-9kfxkxmk.js";
23
- import"./cli-ns5fcnkz.js";
24
- import"./cli-jj77e5yp.js";
23
+ import"./cli-c1k20j6e.js";
24
+ import"./cli-wqyrcnm1.js";
25
25
  import {
26
26
  CliInputError
27
27
  } from "./cli-k4tqwah4.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moda-ai/cli",
3
- "version": "1.55.48",
3
+ "version": "1.55.50",
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-20T06:53:25.310Z",
4
- "cli_version": "1.55.48",
3
+ "bundled_at": "2026-10-20T15:58:32.977Z",
4
+ "cli_version": "1.55.50",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",