@moda-ai/cli 1.55.74 → 1.55.76

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-s4j2m651.js";
3
+ } from "./cli-ven3j7j1.js";
4
4
  import"./cli-rrggdmf8.js";
5
- import"./cli-4qx5ax0a.js";
5
+ import"./cli-09ym9jac.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-acdx3zgk.js") : undefined;
98
+ const harness = graph ? await import("./harness-esh9wa9a.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-acdx3zgk.js");
5771
+ const { analyzeHarnessPrompts } = await import("./harness-esh9wa9a.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-b0ccme35.js");
5799
+ const { checkPromptAttribution } = await import("./prompt-attribution-cswtxj5v.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-acdx3zgk.js");
6105
+ const { analyzeHarnessPrompts } = await import("./harness-esh9wa9a.js");
6106
6106
  const result = await analyzeHarnessPrompts({
6107
6107
  rootDir: root,
6108
6108
  existing: manifest.sources,
@@ -1307,8 +1307,11 @@ function selectKey(tree, key, missing) {
1307
1307
  if (member.key === "...") {
1308
1308
  const fromSpread = selectKey(member, key, missing);
1309
1309
  if (fromSpread !== missing) {
1310
- if (fromSpread.resolution === "unresolved") {
1310
+ const mayLack = hasWhere(fromSpread, (node) => node === missing);
1311
+ if (mayLack || fromSpread.resolution === "unresolved") {
1311
1312
  const prior = selectKey({ ...tree, children: members.slice(0, index) }, key, missing);
1313
+ if (prior !== missing && mayLack)
1314
+ return substituteWhere(fromSpread, (node) => node === missing, prior);
1312
1315
  if (prior !== missing)
1313
1316
  return { ...fromSpread, kind: "oneOf", children: [prior, fromSpread], resolution: "partial", note: "unknown spread may override property" };
1314
1317
  }
@@ -1354,16 +1357,14 @@ function leaves(tree) {
1354
1357
  return flow.length > 0 && tree.kind !== "template" ? flow.flatMap(leaves) : [tree];
1355
1358
  }
1356
1359
  function hasWhere(tree, match) {
1357
- return match(tree) || valueChildren(tree).some((child) => hasWhere(child, match));
1360
+ return match(tree) || FLOW_KINDS.has(tree.kind) && valueChildren(tree).some((child) => hasWhere(child, match));
1358
1361
  }
1359
1362
  function substituteWhere(tree, match, replacement) {
1360
1363
  if (match(tree))
1361
1364
  return tree.key !== undefined ? { ...replacement, key: tree.key } : replacement;
1362
1365
  if (!hasWhere(tree, match))
1363
1366
  return tree;
1364
- if (FLOW_KINDS.has(tree.kind))
1365
- return mapFlow(tree, (child) => substituteWhere(child, match, replacement));
1366
- return { ...tree, children: (tree.children ?? []).map((child) => substituteWhere(child, match, replacement)) };
1367
+ return mapFlow(tree, (child) => substituteWhere(child, match, replacement));
1367
1368
  }
1368
1369
  function allValues(tree) {
1369
1370
  if (tree.kind === "object" || tree.kind === "array" || tree.kind === "assembled" && tree.text === "array") {
@@ -1610,7 +1611,7 @@ class CallIndex {
1610
1611
  this.byName ??= this.build();
1611
1612
  const out = this.direct(name, limit, (declaration) => declares(declaration, fn));
1612
1613
  if (isDefaultExport(fn) && name !== "default" && out.length < limit)
1613
- out.push(...this.direct("default", limit - out.length, (declaration) => declares(declaration, fn)));
1614
+ out.push(...this.direct("default", limit - out.length, (declaration) => declares(declaration, fn), new Set(out)));
1614
1615
  for (const alias of this.aliases.get(name) ?? []) {
1615
1616
  if (out.length >= limit)
1616
1617
  break;
@@ -1711,11 +1712,13 @@ class CallIndex {
1711
1712
  this.checkingDefaults.delete(declaration);
1712
1713
  }
1713
1714
  }
1714
- direct(name, limit, matches) {
1715
+ direct(name, limit, matches, found) {
1715
1716
  const candidates = this.byName.get(name) ?? [];
1716
1717
  const out = [];
1717
1718
  let checked = 0;
1718
1719
  for (const call of candidates) {
1720
+ if (found?.has(call))
1721
+ continue;
1719
1722
  if (out.length >= limit || checked >= limit * 20)
1720
1723
  break;
1721
1724
  checked += 1;
@@ -19146,7 +19149,7 @@ async function runHarnessCommand(context) {
19146
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.");
19147
19150
  }
19148
19151
  if (context.flags["github-actions"] === "true") {
19149
- const { runGithubActionsAnalyze } = await import("./harness-github-actions-m26tapfj.js");
19152
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-d9tnwd05.js");
19150
19153
  const result = await runGithubActionsAnalyze(rootDir, {
19151
19154
  writeReport: (report2) => {
19152
19155
  const normalized = normalizeHarnessReport(report2);
@@ -19292,8 +19295,8 @@ async function runHarnessCommand(context) {
19292
19295
  }
19293
19296
  const { artifacts, unknowns } = deterministicGraphItems(rootDir, promote === "all" ? undefined : promote);
19294
19297
  tagComponentStatus({ runtimeAgents: [], artifacts }, rootDir);
19295
- const { extractHarnessWithContext: extractHarnessWithContext2 } = await import("./index-cpz85prt.js");
19296
- const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-0wm7157z.js");
19298
+ const { extractHarnessWithContext: extractHarnessWithContext2 } = await import("./index-vx8ym8p0.js");
19299
+ const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-f89md6eg.js");
19297
19300
  let components = { runtimeAgents: [], artifacts: [], warnings: [] };
19298
19301
  if (promote === "all" || promote === "topology" || promote === "tools") {
19299
19302
  const { result, ctx } = extractHarnessWithContext2(rootDir);
@@ -19327,8 +19330,8 @@ async function runHarnessCommand(context) {
19327
19330
  }
19328
19331
  case "extract": {
19329
19332
  writeHumanProgress(context, "Harness extract: tracing model call sites (no LLM, no network)...");
19330
- const { extractHarnessWithContext: extractHarnessWithContext2, serializeExtractResult } = await import("./index-cpz85prt.js");
19331
- const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-0wm7157z.js");
19333
+ const { extractHarnessWithContext: extractHarnessWithContext2, serializeExtractResult } = await import("./index-vx8ym8p0.js");
19334
+ const { enumerateHarnessComponents, mergeEnumeratedComponents } = await import("./index-f89md6eg.js");
19332
19335
  const { result, ctx } = extractHarnessWithContext2(rootDir, { fresh: true });
19333
19336
  const artifacts = deterministicArtifacts(rootDir);
19334
19337
  tagComponentStatus({ runtimeAgents: [], artifacts }, rootDir);
@@ -28549,7 +28552,7 @@ function enumerateAgents(result, ctx) {
28549
28552
  const direct = byNode.get(declaration) ?? scopes.get(keyOf(declaration));
28550
28553
  if (direct)
28551
28554
  return [direct];
28552
- if (import_typescript14.default.isVariableDeclaration(declaration) && declaration.initializer) {
28555
+ if ((import_typescript14.default.isVariableDeclaration(declaration) || import_typescript14.default.isPropertyAssignment(declaration) || import_typescript14.default.isPropertyDeclaration(declaration)) && declaration.initializer) {
28553
28556
  const fn = byNode.get(declaration.initializer) ?? scopes.get(keyOf(declaration.initializer));
28554
28557
  if (fn)
28555
28558
  return [fn];
@@ -28698,10 +28701,12 @@ function enumerateAgents(result, ctx) {
28698
28701
  for (const id of owners.get(scope.key) ?? []) {
28699
28702
  let targetKey = callee;
28700
28703
  const virtual = virtualEdges.get(`${scope.key}|${callee}`), concrete = classes.find((cls) => componentId("agent", cls.file.path, cls.name) === id);
28701
- if (virtual && concrete) {
28702
- const implementation = concrete.nodes.flatMap((node) => node.members.filter((member2) => nameOf(member2.name) === virtual))[0];
28703
- if (implementation && scopes.has(keyOf(implementation)))
28704
- targetKey = keyOf(implementation);
28704
+ const callerClass = enclosingClass(scope.node);
28705
+ if (virtual && concrete && callerClass && concrete.nodes.some((node) => keyOf(node) === keyOf(callerClass))) {
28706
+ const implementation = concrete.nodes.flatMap((node) => node.members.filter((member2) => nameOf(member2.name) === virtual && !(import_typescript14.default.getCombinedModifierFlags(member2) & import_typescript14.default.ModifierFlags.Static)))[0];
28707
+ const implementationKey = implementation && (scopes.has(keyOf(implementation)) ? keyOf(implementation) : import_typescript14.default.isPropertyDeclaration(implementation) && implementation.initializer && scopes.has(keyOf(implementation.initializer)) ? keyOf(implementation.initializer) : undefined);
28708
+ if (implementationKey)
28709
+ targetKey = implementationKey;
28705
28710
  }
28706
28711
  const before = owners.get(targetKey)?.size ?? 0;
28707
28712
  assign(targetKey, id);
@@ -4,7 +4,7 @@ import {
4
4
  } from "./cli-rrggdmf8.js";
5
5
  import {
6
6
  inspectPromptManifest
7
- } from "./cli-4qx5ax0a.js";
7
+ } from "./cli-09ym9jac.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-acdx3zgk.js");
398
+ const { scanHarness } = await import("./harness-esh9wa9a.js");
399
399
  const current = scanHarness({
400
400
  rootDir: cwd,
401
401
  scannerVersion: "doctor",
package/dist/cli.js CHANGED
@@ -2975,25 +2975,25 @@ function leafManifestFields(leaf, commands) {
2975
2975
  import { fileURLToPath } from "url";
2976
2976
  import { realpathSync } from "fs";
2977
2977
  async function runPromptsCommand(...args) {
2978
- return (await import("./prompts-wqkgnb1b.js")).runPromptsCommand(...args);
2978
+ return (await import("./prompts-cn8a2cwp.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-acdx3zgk.js")).runHarnessCommand(...args);
2984
+ return (await import("./harness-esh9wa9a.js")).runHarnessCommand(...args);
2985
2985
  }
2986
2986
  async function runSyncCommand(...args) {
2987
- return (await import("./sync-q0rm0s5s.js")).runSyncCommand(...args);
2987
+ return (await import("./sync-ce5j09v7.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-8tenph7m.js")).runDoctorCommand(...args);
2993
+ return (await import("./doctor-94cwvz8p.js")).runDoctorCommand(...args);
2994
2994
  }
2995
2995
  async function runStatusCommand(...args) {
2996
- return (await import("./doctor-8tenph7m.js")).runStatusCommand(...args);
2996
+ return (await import("./doctor-94cwvz8p.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-8jsrjbx5.js")).runAgentCommand(...args);
3008
+ return (await import("./agent-gtq5t0av.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-1wxmsrfe.js");
6772
+ const { runInit } = await import("./index-p0cxzngv.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-s4j2m651.js";
6
+ } from "./cli-ven3j7j1.js";
7
7
  import"./cli-rrggdmf8.js";
8
- import"./cli-4qx5ax0a.js";
8
+ import"./cli-09ym9jac.js";
9
9
  import"./cli-mm48br00.js";
10
10
  import"./cli-k0vxtzxb.js";
11
11
  import"./cli-22yvg5kh.js";
@@ -46,7 +46,7 @@ import {
46
46
  writeHarnessAnalyzeResult,
47
47
  writeHarnessArtifacts,
48
48
  writeHumanProgress
49
- } from "./cli-82dggtv9.js";
49
+ } from "./cli-5bh9tky2.js";
50
50
  import"./cli-k0vxtzxb.js";
51
51
  import"./cli-97fnztpy.js";
52
52
  import {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildSourceSnapshot
3
- } from "./cli-82dggtv9.js";
3
+ } from "./cli-5bh9tky2.js";
4
4
  import"./cli-k0vxtzxb.js";
5
5
  import"./cli-97fnztpy.js";
6
6
  import"./cli-y333w08f.js";
@@ -7,7 +7,7 @@ import {
7
7
  enumerateToolCatalog,
8
8
  enumerateWorkflows,
9
9
  mergeEnumeratedComponents
10
- } from "./cli-82dggtv9.js";
10
+ } from "./cli-5bh9tky2.js";
11
11
  import"./cli-k0vxtzxb.js";
12
12
  import"./cli-97fnztpy.js";
13
13
  import"./cli-y333w08f.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildDoctorReport
3
- } from "./cli-s4j2m651.js";
3
+ } from "./cli-ven3j7j1.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-4qx5ax0a.js";
23
+ } from "./cli-09ym9jac.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-82dggtv9.js";
49
+ } from "./cli-5bh9tky2.js";
50
50
  import {
51
51
  canonicalText,
52
52
  renderInitBanner,
@@ -21,7 +21,7 @@ import {
21
21
  serializeExtractResult,
22
22
  toolNamesOf,
23
23
  valueChildren
24
- } from "./cli-82dggtv9.js";
24
+ } from "./cli-5bh9tky2.js";
25
25
  import"./cli-k0vxtzxb.js";
26
26
  import"./cli-97fnztpy.js";
27
27
  import"./cli-y333w08f.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  inventoryFiles,
3
3
  safePromptEvidencePath
4
- } from "./cli-82dggtv9.js";
4
+ } from "./cli-5bh9tky2.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-82dggtv9.js";
6
+ } from "./cli-5bh9tky2.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-4qx5ax0a.js";
12
+ } from "./cli-09ym9jac.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-4qx5ax0a.js";
3
+ } from "./cli-09ym9jac.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-82dggtv9.js";
13
+ } from "./cli-5bh9tky2.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.74",
3
+ "version": "1.55.76",
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-21T08:48:29.242Z",
4
- "cli_version": "1.55.74",
3
+ "bundled_at": "2026-10-21T09:01:57.832Z",
4
+ "cli_version": "1.55.76",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",