@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 +18 -6
- package/dist/{cli-5tsqk3jt.js → cli-3xh2w7hb.js} +2 -2
- package/dist/{cli-8c60k2p4.js → cli-bvnw7585.js} +4 -1
- package/dist/{cli-rycpwqzm.js → cli-dy2aavbe.js} +1 -1
- package/dist/{cli-j2rdgd3p.js → cli-nnwegmzh.js} +4 -4
- package/dist/{cli-j2fapt3g.js → cli-phgzghwq.js} +2 -2
- package/dist/cli.js +756 -41
- package/dist/{harness-sqngqjrd.js → harness-9qpbj2qj.js} +2 -2
- package/dist/{harness-github-actions-pg0azf3h.js → harness-github-actions-ky4ym5n3.js} +2 -2
- package/dist/{index-nepr7cw7.js → index-bcn5chmf.js} +5 -5
- package/dist/prompt-source-mcp.js +2 -2
- package/dist/{provision-02wqtkvm.js → provision-mqw8s0jb.js} +3 -3
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
- package/skills/moda-cli/SKILL.md +92 -26
package/README.md
CHANGED
|
@@ -274,24 +274,36 @@ rendered = moda.prompt("support.triage").render({
|
|
|
274
274
|
})
|
|
275
275
|
```
|
|
276
276
|
|
|
277
|
-
##
|
|
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
|
|
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,
|
|
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
|
|
293
|
-
|
|
294
|
-
|
|
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-
|
|
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-
|
|
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 };
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
resolvePromptSource,
|
|
14
14
|
safePromptEvidencePath,
|
|
15
15
|
scanHarness
|
|
16
|
-
} from "./cli-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
18
|
+
} from "./cli-bvnw7585.js";
|
|
19
19
|
|
|
20
20
|
// src/init/tenant.ts
|
|
21
21
|
import { randomUUID } from "node:crypto";
|