@moda-ai/cli 1.44.1 → 1.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -274,24 +274,36 @@ rendered = moda.prompt("support.triage").render({
274
274
  })
275
275
  ```
276
276
 
277
- ## Push prompts, skills, and tools without a repo scan
277
+ ## Register your harness for replays
278
278
 
279
279
  When the GitHub App or `moda harness analyze` isn't an option, have your coding
280
280
  agent write `.moda/registry.json` from the codebase and push it. Only what the
281
281
  manifest lists is uploaded. It needs just an API key.
282
282
 
283
283
  ```bash
284
- moda registry template --out=.moda/registry.json # starter manifest (moda_registry.v1)
284
+ moda registry prompt # brief to hand your coding agent
285
+ moda registry template --out=.moda/registry.json # starter manifest (moda_registry.v2)
285
286
  moda registry validate # local validation, no network
286
287
  moda registry push --dry-run # server-side preview
287
- moda registry push # prompts, skills, and tools
288
+ moda registry push # prompts, skills, tools, then agent wiring
289
+ moda registry status # registered harness and version
290
+ moda registry coverage --days=7 # recent traces vs the registry
288
291
  ```
289
292
 
290
293
  Prompts go to the prompt registry, skills to the skill library (pass `--live`
291
294
  or set `"live": true` to serve them), and tools to the tool registry as OpenAI
292
- function schemas. The format is in the bundled `moda-cli` skill. This fills
293
- the registries only: the harness graph (agents and how they connect) still
294
- comes from `moda harness analyze`, the GitHub App, or an approved report.
295
+ function schemas. The v2 sections describe how the harness runs:
296
+
297
+ - `agents`: each agent's prompt, model and params, tools, skills, handoffs,
298
+ and trace names.
299
+ - `routing`: how the harness switches prompts.
300
+ - `context`: what the runtime injects into prompts.
301
+ - `runtime` and `mcpServers`.
302
+
303
+ Replay rebuilds the agent that answered each replayed turn from these, and
304
+ switches agents when the model hands off. The format is in the bundled
305
+ `moda-cli` skill. The analyzer's citation graph (the dashboard Harness map)
306
+ still comes from `moda harness analyze`, the GitHub App, or an approved report.
295
307
 
296
308
  ## Anchors and message windows
297
309
 
@@ -25,7 +25,7 @@ import {
25
25
  resolveTenantId,
26
26
  shouldInventoryFile,
27
27
  stringOption
28
- } from "./cli-8c60k2p4.js";
28
+ } from "./cli-bvnw7585.js";
29
29
  import {
30
30
  __commonJS,
31
31
  __require,
@@ -184813,7 +184813,7 @@ async function runHarnessCommand(context) {
184813
184813
  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.");
184814
184814
  }
184815
184815
  if (context.flags["github-actions"] === "true") {
184816
- const { runGithubActionsAnalyze } = await import("./harness-github-actions-pg0azf3h.js");
184816
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-ky4ym5n3.js");
184817
184817
  const result = await runGithubActionsAnalyze(rootDir, {
184818
184818
  writeReport: (report2) => {
184819
184819
  const normalized = normalizeHarnessReport(report2);
@@ -1075,6 +1075,9 @@ function explicitModeFromFlags(flags) {
1075
1075
  return "human";
1076
1076
  return;
1077
1077
  }
1078
+ function explicitOutputMode(flags, env = process.env) {
1079
+ return explicitModeFromFlags(flags) ?? outputModeFromEnv(env);
1080
+ }
1078
1081
  function outputModeFromFlags(flags) {
1079
1082
  return explicitModeFromFlags(flags) ?? "human";
1080
1083
  }
@@ -1713,4 +1716,4 @@ function createCommandContext(input, options = {}) {
1713
1716
  };
1714
1717
  }
1715
1718
 
1716
- export { PROD_BASE_URL, DEFAULT_INGEST_URL, getModaPaths, getModaDir, isLoopbackBaseUrl, assertValidProfileName, describeBaseUrlSource, loadProfileConfig, saveProfileConfig, getActiveProfile, setActiveProfile, upsertProfile, clearStoredApiKeyCredentials, secretFilePathFromRef, resolveSecretReference, resolveApiKeyFromActiveProfile, resolveTenantIdFromActiveProfile, ensureSecretFilePermissions, writeSecretJsonFile, CliInputError, CliAccessError, CliInputRequiredError, CliAuthError, CliCancellationError, isNetworkLikeError, isApiLikeError, VERSION, MODA_BASE_URL, loadCliConfig, saveCliConfig, resolveApiKey, embeddedTenantIdFromApiKey, resolveIngestUrl2 as resolveIngestUrl, resolveTenantId, resolveApiTenantId, resolveModaBaseUrl, validateConfig, MAX_SCANNED_FILE_BYTES, DEFAULT_MAX_INVENTORY_FILES, DEFAULT_MAX_INVENTORY_TEXT_BYTES, MAX_RECORDED_SKIPS, SKIPPED_DIRS, isSkippedDir, isSkippedPathPrefix, isEvalLikePath, shouldInventoryFile, isTextFile, isSecretishPath, SECRET_KEYS, redactDeep, redactString, packSnapshot, EXIT_OK, EXIT_ERROR, EXIT_DEGRADED, EXIT_AUTH_REQUIRED, EXIT_INPUT_REQUIRED, EXIT_CANCELLED, AGENT_ERROR_CODES, wasOutputCancelled, safeWriteStdout, safeWriteStderr, resolveOutputMode, createCliOutput, agentEnvelopeFits, stringOption, createCommandContext };
1719
+ export { PROD_BASE_URL, DEFAULT_INGEST_URL, getModaPaths, getModaDir, isLoopbackBaseUrl, assertValidProfileName, describeBaseUrlSource, loadProfileConfig, saveProfileConfig, getActiveProfile, setActiveProfile, upsertProfile, clearStoredApiKeyCredentials, secretFilePathFromRef, resolveSecretReference, resolveApiKeyFromActiveProfile, resolveTenantIdFromActiveProfile, ensureSecretFilePermissions, writeSecretJsonFile, CliInputError, CliAccessError, CliInputRequiredError, CliAuthError, CliCancellationError, isNetworkLikeError, isApiLikeError, VERSION, MODA_BASE_URL, loadCliConfig, saveCliConfig, resolveApiKey, embeddedTenantIdFromApiKey, resolveIngestUrl2 as resolveIngestUrl, resolveTenantId, resolveApiTenantId, resolveModaBaseUrl, validateConfig, MAX_SCANNED_FILE_BYTES, DEFAULT_MAX_INVENTORY_FILES, DEFAULT_MAX_INVENTORY_TEXT_BYTES, MAX_RECORDED_SKIPS, SKIPPED_DIRS, isSkippedDir, isSkippedPathPrefix, isEvalLikePath, shouldInventoryFile, isTextFile, isSecretishPath, SECRET_KEYS, redactDeep, redactString, packSnapshot, EXIT_OK, EXIT_ERROR, EXIT_DEGRADED, EXIT_AUTH_REQUIRED, EXIT_INPUT_REQUIRED, EXIT_CANCELLED, AGENT_ERROR_CODES, wasOutputCancelled, safeWriteStdout, safeWriteStderr, explicitOutputMode, resolveOutputMode, createCliOutput, agentEnvelopeFits, stringOption, createCommandContext };
@@ -7,7 +7,7 @@ import {
7
7
  saveProfileConfig,
8
8
  secretFilePathFromRef,
9
9
  writeSecretJsonFile
10
- } from "./cli-8c60k2p4.js";
10
+ } from "./cli-bvnw7585.js";
11
11
  import {
12
12
  __require
13
13
  } from "./cli-0v6na3yp.js";
@@ -13,7 +13,7 @@ import {
13
13
  resolvePromptSource,
14
14
  safePromptEvidencePath,
15
15
  scanHarness
16
- } from "./cli-5tsqk3jt.js";
16
+ } from "./cli-3xh2w7hb.js";
17
17
  import {
18
18
  SKILL_SOURCE_HARNESS,
19
19
  SKILL_SOURCE_INTEGRATION_BUNDLED,
@@ -26,7 +26,7 @@ import {
26
26
  import {
27
27
  isAuthSessionValid,
28
28
  loadAuthSession
29
- } from "./cli-rycpwqzm.js";
29
+ } from "./cli-dy2aavbe.js";
30
30
  import {
31
31
  CliInputError,
32
32
  EXIT_ERROR,
@@ -45,7 +45,7 @@ import {
45
45
  resolveTenantId,
46
46
  secretFilePathFromRef,
47
47
  validateConfig
48
- } from "./cli-8c60k2p4.js";
48
+ } from "./cli-bvnw7585.js";
49
49
  import {
50
50
  __commonJS,
51
51
  __require,
@@ -6711,7 +6711,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
6711
6711
  const analyzedDefinitions = new Map;
6712
6712
  if (flags["no-analyze"] !== "true") {
6713
6713
  options.onProgress?.("Analyzing prompt sources before sync.");
6714
- const { analyzeHarnessPrompts } = await import("./harness-sqngqjrd.js");
6714
+ const { analyzeHarnessPrompts } = await import("./harness-9qpbj2qj.js");
6715
6715
  const result = await analyzeHarnessPrompts({
6716
6716
  rootDir: process.cwd(),
6717
6717
  existing: established.flatMap((prompt) => prompt.sourceDefinition ? [prompt.sourceDefinition.source] : []),
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  authFetch,
3
3
  getCachedLoginContext
4
- } from "./cli-rycpwqzm.js";
4
+ } from "./cli-dy2aavbe.js";
5
5
  import {
6
6
  CliAccessError,
7
7
  CliInputError,
@@ -15,7 +15,7 @@ import {
15
15
  resolveTenantIdFromActiveProfile,
16
16
  saveCliConfig,
17
17
  writeSecretJsonFile
18
- } from "./cli-8c60k2p4.js";
18
+ } from "./cli-bvnw7585.js";
19
19
 
20
20
  // src/init/tenant.ts
21
21
  import { randomUUID } from "node:crypto";