@moda-ai/cli 1.55.58 → 1.55.60

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-a821bf9p.js";
3
+ } from "./cli-bt564t50.js";
4
4
  import"./cli-94r5x9bg.js";
5
- import"./cli-4zdem6xd.js";
5
+ import"./cli-hxy54rx3.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-2jb52s8r.js") : undefined;
98
+ const harness = graph ? await import("./harness-bxcetthw.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),
@@ -4,7 +4,7 @@ import {
4
4
  } from "./cli-94r5x9bg.js";
5
5
  import {
6
6
  inspectPromptManifest
7
- } from "./cli-4zdem6xd.js";
7
+ } from "./cli-hxy54rx3.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-2jb52s8r.js");
398
+ const { scanHarness } = await import("./harness-bxcetthw.js");
399
399
  const current = scanHarness({
400
400
  rootDir: cwd,
401
401
  scannerVersion: "doctor",
@@ -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-2jb52s8r.js");
5771
+ const { analyzeHarnessPrompts } = await import("./harness-bxcetthw.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-ndw4jvew.js");
5799
+ const { checkPromptAttribution } = await import("./prompt-attribution-6xc7h59r.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-2jb52s8r.js");
6105
+ const { analyzeHarnessPrompts } = await import("./harness-bxcetthw.js");
6106
6106
  const result = await analyzeHarnessPrompts({
6107
6107
  rootDir: root,
6108
6108
  existing: manifest.sources,
@@ -15325,7 +15325,7 @@ async function runHarnessCommand(context) {
15325
15325
  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.");
15326
15326
  }
15327
15327
  if (context.flags["github-actions"] === "true") {
15328
- const { runGithubActionsAnalyze } = await import("./harness-github-actions-4q0nkvxb.js");
15328
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-acxh0dbf.js");
15329
15329
  const result = await runGithubActionsAnalyze(rootDir, {
15330
15330
  writeReport: (report2) => {
15331
15331
  const normalized = normalizeHarnessReport(report2);
@@ -16012,6 +16012,89 @@ function isToolGroupPlaceholder(name) {
16012
16012
  function isDetectedToolDefinitionReason(reason) {
16013
16013
  return typeof reason === "string" && (reason.startsWith("deterministic detector ") || reason.startsWith("Tool definition detected"));
16014
16014
  }
16015
+ var MODEL_SOURCE_FILE2 = /\.(?:[cm]?[jt]sx?|py|json|jsonc|ya?ml|toml)$/i;
16016
+ var NON_SOURCE_DIR2 = /(^|\/)(?:docs?|\.moda)\//i;
16017
+ function isSearchableModelId(id) {
16018
+ return id.length >= 4 && !/\s/.test(id) && /[\d/.:_-]/.test(id);
16019
+ }
16020
+ function modelIdsUsedInSource(rootDir, ids) {
16021
+ const pending = new Map;
16022
+ for (const id of new Set(ids.filter(isSearchableModelId))) {
16023
+ const token = `(?<![\\w-])${id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(?![\\w-]|\\.\\w)`;
16024
+ pending.set(id, { quoted: new RegExp(`(['"\`])[^'"\`\\n]*?${token}[^'"\`\\n]*?\\1`), bare: new RegExp(token) });
16025
+ }
16026
+ const found = new Set;
16027
+ if (pending.size === 0)
16028
+ return found;
16029
+ const rootReal = resolve10(rootDir);
16030
+ const maxFiles = numericEnv("MODA_HARNESS_MAX_FILES", DEFAULT_MAX_INVENTORY_FILES);
16031
+ const maxTextBytes = numericEnv("MODA_HARNESS_MAX_TEXT_BYTES", DEFAULT_MAX_INVENTORY_TEXT_BYTES);
16032
+ let files = 0;
16033
+ let textBytes = 0;
16034
+ let complete = true;
16035
+ const search = (rel2, text) => {
16036
+ const bareValues = /\.(?:ya?ml|toml)$/i.test(rel2);
16037
+ const lines = text.split(`
16038
+ `).filter((line) => !/^\s*(?:\/\/|\/\*|\*|#)/.test(line));
16039
+ for (const [id, pattern] of pending) {
16040
+ if (lines.some((line) => pattern.quoted.test(line) || bareValues && pattern.bare.test(line))) {
16041
+ found.add(id);
16042
+ pending.delete(id);
16043
+ }
16044
+ }
16045
+ };
16046
+ const walk = (current) => {
16047
+ if (pending.size === 0)
16048
+ return false;
16049
+ const rel2 = normalizePath2(relative6(rootReal, current)) || ".";
16050
+ let stat;
16051
+ try {
16052
+ stat = lstatSync7(current);
16053
+ } catch {
16054
+ return true;
16055
+ }
16056
+ if (stat.isSymbolicLink())
16057
+ return true;
16058
+ if (stat.isDirectory()) {
16059
+ if (rel2 !== "." && (shouldSkipDirectory(rel2) || NON_SOURCE_DIR2.test(`${rel2}/`)))
16060
+ return true;
16061
+ let entries;
16062
+ try {
16063
+ entries = readdirSync4(current).sort();
16064
+ } catch {
16065
+ return true;
16066
+ }
16067
+ for (const entry of entries) {
16068
+ if (!walk(join9(current, entry)))
16069
+ return false;
16070
+ }
16071
+ return true;
16072
+ }
16073
+ if (!stat.isFile() || stat.size > MAX_SCANNED_FILE_BYTES || isSecretishPath(rel2))
16074
+ return true;
16075
+ if (TEST_PATH2.test(rel2) || !MODEL_SOURCE_FILE2.test(rel2))
16076
+ return true;
16077
+ if (files >= maxFiles) {
16078
+ complete = false;
16079
+ return false;
16080
+ }
16081
+ if (textBytes + stat.size > maxTextBytes) {
16082
+ complete = false;
16083
+ return true;
16084
+ }
16085
+ files += 1;
16086
+ textBytes += stat.size;
16087
+ try {
16088
+ search(rel2, readFileSync12(current, "utf8"));
16089
+ } catch {}
16090
+ return true;
16091
+ };
16092
+ walk(rootReal);
16093
+ if (!complete)
16094
+ for (const id of pending.keys())
16095
+ found.add(id);
16096
+ return found;
16097
+ }
16015
16098
  function removeArtifacts(report, ids) {
16016
16099
  const graph = report.graph;
16017
16100
  const keep = (id) => typeof id !== "string" || !ids.has(id);
@@ -16077,16 +16160,20 @@ function repairExternalAnalystReport(report, rootDir, options = {}) {
16077
16160
  evidence: artifact.evidence
16078
16161
  });
16079
16162
  }
16080
- for (const artifact of normalized.graph.artifacts) {
16163
+ const testOnlyModels = normalized.graph.artifacts.filter((artifact) => {
16081
16164
  if (artifact.type !== "model_config" || unverified.has(artifact.id))
16082
- continue;
16165
+ return false;
16083
16166
  const paths = artifact.evidence.map((entry) => entry.path).filter((path) => typeof path === "string" && path.length > 0);
16084
- if (paths.length === 0 || !paths.every((path) => TEST_PATH2.test(path)))
16167
+ return paths.length > 0 && paths.every((path) => TEST_PATH2.test(path));
16168
+ });
16169
+ const usedInSource = testOnlyModels.length > 0 ? modelIdsUsedInSource(rootDir, testOnlyModels.map((artifact) => (artifact.name ?? "").trim())) : new Set;
16170
+ for (const artifact of testOnlyModels) {
16171
+ if (usedInSource.has((artifact.name ?? "").trim()))
16085
16172
  continue;
16086
16173
  unverified.add(artifact.id);
16087
16174
  normalized.graph.unknowns.push({
16088
16175
  id: `unresolved_${artifact.id}`,
16089
- question: `Model ${artifact.name ?? artifact.id} is cited only from test or fixture files, so it is a test input rather than the harness's model configuration.`,
16176
+ question: `Model ${artifact.name ?? artifact.id} appears only in test or fixture files, so it is a test input rather than the harness's model configuration.`,
16090
16177
  candidateIds: [artifact.id],
16091
16178
  evidence: artifact.evidence
16092
16179
  });
@@ -16878,13 +16965,17 @@ function resolveExternalHarnessAnalystInvocation(options) {
16878
16965
  throw new CliInputError(`${titleFromId(options.adapter)} analyst CLI was not found.`, `Install/sign into ${titleFromId(options.adapter)}, set MODA_HARNESS_ANALYST_COMMAND, or choose another analyst with --analyst=claude|codex|cursor.`);
16879
16966
  }
16880
16967
  if (options.adapter === "claude") {
16881
- const extraArgs = options.promptTools ? [] : externalAnalystExtraArgs(options.adapter);
16968
+ const extraArgs = options.promptTools ? [] : mode === "write" ? externalAnalystExtraArgs(options.adapter) : readOnlyClaudeExtraArgs(externalAnalystExtraArgs(options.adapter));
16882
16969
  const model = resolveAnalystModel(options.adapter, options.flags);
16883
- const permission = mode === "write" ? ["--permission-mode", "acceptEdits", "--allowedTools", "Read,Grep,Glob,Edit,Write,Bash"] : ["--allowedTools", `Read,Grep,Glob,Edit(${HARNESS_REPORT_PATH}),Bash(pwd),Bash(ls *),Bash(find *),Bash(rg *),Bash(grep *),Bash(cat *),Bash(git status *),Bash(git ls-files *),Bash(git grep *)`];
16970
+ const permission = mode === "write" ? ["--permission-mode", "acceptEdits", "--allowedTools", "Read,Grep,Glob,Edit,Write,Bash"] : ["--allowedTools", `Read,Grep,Glob,Edit(${HARNESS_REPORT_PATH})`, "--disallowedTools", "Bash"];
16884
16971
  if (isolated) {
16885
16972
  permission[1] = "Read,Grep,Glob,mcp__moda-prompt-source__inspect_sources,mcp__moda-prompt-source__check_mapping";
16886
16973
  permission.push("--mcp-config", isolated.configPath, "--strict-mcp-config");
16974
+ } else if (mode !== "write") {
16975
+ permission.push("--mcp-config", '{"mcpServers":{}}', "--strict-mcp-config");
16887
16976
  }
16977
+ if (mode !== "write")
16978
+ permission.push("--setting-sources", "user");
16888
16979
  return {
16889
16980
  adapter: options.adapter,
16890
16981
  command,
@@ -17023,6 +17114,37 @@ async function runCodingAgent(options) {
17023
17114
  function externalAnalystExtraArgs(adapter) {
17024
17115
  return splitCommandLine(process.env[`MODA_HARNESS_ANALYST_${adapter.toUpperCase()}_ARGS`] ?? "");
17025
17116
  }
17117
+ var READ_ONLY_CLAUDE_ARG_FLAGS = new Map([
17118
+ ["--model", true],
17119
+ ["--fallback-model", true],
17120
+ ["--effort", true],
17121
+ ["--max-turns", true],
17122
+ ["--debug-file", true],
17123
+ ["--debug", false],
17124
+ ["--verbose", false],
17125
+ ["--exclude-dynamic-system-prompt-sections", false]
17126
+ ]);
17127
+ function readOnlyClaudeExtraArgs(args) {
17128
+ const kept = [];
17129
+ for (let i = 0;i < args.length; i += 1) {
17130
+ const [flag, inline] = args[i].split(/=(.*)/s, 2);
17131
+ const takesValue = READ_ONLY_CLAUDE_ARG_FLAGS.get(flag);
17132
+ if (takesValue === undefined) {
17133
+ if (inline === undefined && args[i + 1] !== undefined && !args[i + 1].startsWith("-"))
17134
+ i += 1;
17135
+ continue;
17136
+ }
17137
+ if (takesValue && inline === undefined) {
17138
+ if (args[i + 1] === undefined)
17139
+ continue;
17140
+ kept.push(flag, args[i + 1]);
17141
+ i += 1;
17142
+ } else {
17143
+ kept.push(args[i]);
17144
+ }
17145
+ }
17146
+ return kept;
17147
+ }
17026
17148
  var DEFAULT_CLAUDE_ANALYST_MODEL = "sonnet";
17027
17149
  function resolveAnalystModel(adapter, flags) {
17028
17150
  const flagValue = flags["analyst-model"] && flags["analyst-model"] !== "true" ? flags["analyst-model"] : undefined;
@@ -19577,4 +19699,4 @@ function hashText(text) {
19577
19699
  return createHash5("sha256").update(text).digest("hex");
19578
19700
  }
19579
19701
 
19580
- export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, isToolGroupPlaceholder, repairExternalAnalystReport, deriveRelationshipsFromGraph, deterministicArtifacts, 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 };
19702
+ export { startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, isToolGroupPlaceholder, repairExternalAnalystReport, deriveRelationshipsFromGraph, deterministicArtifacts, 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
@@ -2968,25 +2968,25 @@ function leafManifestFields(leaf, commands) {
2968
2968
  import { fileURLToPath } from "url";
2969
2969
  import { realpathSync } from "fs";
2970
2970
  async function runPromptsCommand(...args) {
2971
- return (await import("./prompts-2z3cdc52.js")).runPromptsCommand(...args);
2971
+ return (await import("./prompts-e8rhawyc.js")).runPromptsCommand(...args);
2972
2972
  }
2973
2973
  async function runSkillsCommand(...args) {
2974
2974
  return (await import("./skills-etzcqhp8.js")).runSkillsCommand(...args);
2975
2975
  }
2976
2976
  async function runHarnessCommand(...args) {
2977
- return (await import("./harness-2jb52s8r.js")).runHarnessCommand(...args);
2977
+ return (await import("./harness-bxcetthw.js")).runHarnessCommand(...args);
2978
2978
  }
2979
2979
  async function runSyncCommand(...args) {
2980
- return (await import("./sync-y4tcnmg6.js")).runSyncCommand(...args);
2980
+ return (await import("./sync-m9htrc8t.js")).runSyncCommand(...args);
2981
2981
  }
2982
2982
  async function runRegistryCommand(...args) {
2983
2983
  return (await import("./registry-wv1zzyce.js")).runRegistryCommand(...args);
2984
2984
  }
2985
2985
  async function runDoctorCommand(...args) {
2986
- return (await import("./doctor-m6v07zc7.js")).runDoctorCommand(...args);
2986
+ return (await import("./doctor-s9t8e808.js")).runDoctorCommand(...args);
2987
2987
  }
2988
2988
  async function runStatusCommand(...args) {
2989
- return (await import("./doctor-m6v07zc7.js")).runStatusCommand(...args);
2989
+ return (await import("./doctor-s9t8e808.js")).runStatusCommand(...args);
2990
2990
  }
2991
2991
  async function runAuthCommand(...args) {
2992
2992
  return (await import("./profile-commands-yvpe4d8y.js")).runAuthCommand(...args);
@@ -2998,7 +2998,7 @@ async function runProfilesCommand(...args) {
2998
2998
  return (await import("./profile-commands-yvpe4d8y.js")).runProfilesCommand(...args);
2999
2999
  }
3000
3000
  async function runAgentCommand(...args) {
3001
- return (await import("./agent-921q6yvy.js")).runAgentCommand(...args);
3001
+ return (await import("./agent-ds0qdtxz.js")).runAgentCommand(...args);
3002
3002
  }
3003
3003
  async function runProductionCommand(...args) {
3004
3004
  return (await import("./production-intelligence-fqvhzq6s.js")).runProductionCommand(...args);
@@ -6762,7 +6762,7 @@ var commandRegistry = createCommandRegistry([
6762
6762
  resetApiRequestCountBeforeRun: true,
6763
6763
  telemetry: "result-and-error",
6764
6764
  handler: async (context) => {
6765
- const { runInit } = await import("./index-2crvn108.js");
6765
+ const { runInit } = await import("./index-d8hc0er0.js");
6766
6766
  if (context.outputMode === "agent-stream") {
6767
6767
  context.output.writeEvent({
6768
6768
  event: "started",
@@ -3,9 +3,9 @@ import {
3
3
  promptsDiscoveredCheck,
4
4
  runDoctorCommand,
5
5
  runStatusCommand
6
- } from "./cli-a821bf9p.js";
6
+ } from "./cli-bt564t50.js";
7
7
  import"./cli-94r5x9bg.js";
8
- import"./cli-4zdem6xd.js";
8
+ import"./cli-hxy54rx3.js";
9
9
  import"./cli-mm48br00.js";
10
10
  import"./cli-k0vxtzxb.js";
11
11
  import"./cli-v2h21cgf.js";
@@ -25,11 +25,13 @@ import {
25
25
  numericEnv,
26
26
  numericEnvAllowZero,
27
27
  promptNameFromPath,
28
+ readOnlyClaudeExtraArgs,
28
29
  renderAnalystCandidateLines,
29
30
  renderAnalystSeedLines,
30
31
  renderExternalHarnessAnalystPrompt,
31
32
  repairExternalAnalystReport,
32
33
  resolveAnalystModel,
34
+ resolveExternalHarnessAnalystInvocation,
33
35
  resolveHarnessAnalyzeConcern,
34
36
  runCodingAgent,
35
37
  runHarnessCommand,
@@ -43,7 +45,7 @@ import {
43
45
  writeHarnessAnalyzeResult,
44
46
  writeHarnessArtifacts,
45
47
  writeHumanProgress
46
- } from "./cli-tp48x76x.js";
48
+ } from "./cli-wbd3hzqh.js";
47
49
  import"./cli-97fnztpy.js";
48
50
  import"./cli-k0vxtzxb.js";
49
51
  import"./cli-v2h21cgf.js";
@@ -73,11 +75,13 @@ export {
73
75
  runHarnessCommand,
74
76
  runCodingAgent,
75
77
  resolveHarnessAnalyzeConcern,
78
+ resolveExternalHarnessAnalystInvocation,
76
79
  resolveAnalystModel,
77
80
  repairExternalAnalystReport,
78
81
  renderExternalHarnessAnalystPrompt,
79
82
  renderAnalystSeedLines,
80
83
  renderAnalystCandidateLines,
84
+ readOnlyClaudeExtraArgs,
81
85
  promptNameFromPath,
82
86
  numericEnvAllowZero,
83
87
  numericEnv,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildSourceSnapshot
3
- } from "./cli-tp48x76x.js";
3
+ } from "./cli-wbd3hzqh.js";
4
4
  import"./cli-97fnztpy.js";
5
5
  import"./cli-k0vxtzxb.js";
6
6
  import"./cli-v2h21cgf.js";
@@ -21,7 +21,7 @@ import {
21
21
  } from "./cli-hcwdz9sd.js";
22
22
  import {
23
23
  buildDoctorReport
24
- } from "./cli-a821bf9p.js";
24
+ } from "./cli-bt564t50.js";
25
25
  import {
26
26
  ConnectCodeError,
27
27
  connectWithCode,
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  initPrompts,
34
34
  runPromptSync
35
- } from "./cli-4zdem6xd.js";
35
+ } from "./cli-hxy54rx3.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-tp48x76x.js";
49
+ } from "./cli-wbd3hzqh.js";
50
50
  import {
51
51
  stripAnsi
52
52
  } from "./cli-97fnztpy.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  inventoryFiles,
3
3
  safePromptEvidencePath
4
- } from "./cli-tp48x76x.js";
4
+ } from "./cli-wbd3hzqh.js";
5
5
  import"./cli-97fnztpy.js";
6
6
  import"./cli-k0vxtzxb.js";
7
7
  import"./cli-v2h21cgf.js";
@@ -3,7 +3,7 @@ import {
3
3
  checkPromptMapping,
4
4
  discoverHarnessPromptSources,
5
5
  safePromptEvidencePath
6
- } from "./cli-tp48x76x.js";
6
+ } from "./cli-wbd3hzqh.js";
7
7
  import"./cli-97fnztpy.js";
8
8
  import"./cli-k0vxtzxb.js";
9
9
  import"./cli-v2h21cgf.js";
@@ -9,7 +9,7 @@ import {
9
9
  runPromptSync,
10
10
  runPromptsCommand,
11
11
  writePromptSyncProgress
12
- } from "./cli-4zdem6xd.js";
12
+ } from "./cli-hxy54rx3.js";
13
13
  import {
14
14
  promptSourceHashPayload
15
15
  } from "./cli-mm48br00.js";
@@ -6,11 +6,11 @@ import"./cli-rjav0vj1.js";
6
6
  import"./cli-hcwdz9sd.js";
7
7
  import {
8
8
  runPromptsCommand
9
- } from "./cli-4zdem6xd.js";
9
+ } from "./cli-hxy54rx3.js";
10
10
  import"./cli-mm48br00.js";
11
11
  import {
12
12
  runHarnessCommand
13
- } from "./cli-tp48x76x.js";
13
+ } from "./cli-wbd3hzqh.js";
14
14
  import"./cli-97fnztpy.js";
15
15
  import"./cli-k0vxtzxb.js";
16
16
  import"./cli-v2h21cgf.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moda-ai/cli",
3
- "version": "1.55.58",
3
+ "version": "1.55.60",
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-21T04:24:23.494Z",
4
- "cli_version": "1.55.58",
3
+ "bundled_at": "2026-10-21T04:53:20.126Z",
4
+ "cli_version": "1.55.60",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",