@moda-ai/cli 1.55.35 → 1.55.37
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/dist/{agent-g07tg64w.js → agent-4pyeecf7.js} +8 -8
- package/dist/{cli-dr6x0zv7.js → cli-4d92a450.js} +1 -1
- package/dist/{cli-n2hng3gv.js → cli-cdx6yd7m.js} +19 -2
- package/dist/{cli-5fstvkva.js → cli-cr44672e.js} +5 -5
- package/dist/{cli-97jew729.js → cli-ef9eagsc.js} +1 -1
- package/dist/{cli-9bgnvth2.js → cli-gjzr7jq5.js} +1 -1
- package/dist/{cli-6j8h2ave.js → cli-npkb08xt.js} +8 -8
- package/dist/{cli-fwpqghgc.js → cli-nqgyz74b.js} +112 -2
- package/dist/{cli-yz8xcpyk.js → cli-nzx7rqjs.js} +1 -1
- package/dist/{cli-e23g9ywa.js → cli-s72pph9c.js} +1 -1
- package/dist/{cli-9bgk5jeh.js → cli-w3ckvma5.js} +3 -3
- package/dist/{cli-99p2jh28.js → cli-wg6e2a1g.js} +17 -4
- package/dist/{cli-k007ztbs.js → cli-wh83c3ss.js} +4 -4
- package/dist/{cli-x9cwat4a.js → cli-x605txan.js} +5 -5
- package/dist/{cli-602yx84w.js → cli-xkcy9wns.js} +5 -5
- package/dist/cli.js +179 -27
- package/dist/{doctor-tvre7zvk.js → doctor-w8z3wj1e.js} +7 -7
- package/dist/{fix-w5z02wt4.js → fix-667fyx00.js} +4 -4
- package/dist/{harness-6vwehf47.js → harness-fb0083ap.js} +5 -5
- package/dist/{harness-github-actions-6gdrpn4m.js → harness-github-actions-7s41s1vg.js} +5 -5
- package/dist/{index-75vcntpe.js → index-4w5szrnw.js} +11 -11
- package/dist/{production-intelligence-7wb1djy2.js → production-intelligence-v2wq2aqv.js} +3 -3
- package/dist/{profile-commands-h8evz9x0.js → profile-commands-3hw4trwk.js} +3 -3
- package/dist/{prompt-attribution-t0eq8gn8.js → prompt-attribution-g7md8hzc.js} +5 -5
- package/dist/prompt-source-mcp.js +5 -5
- package/dist/{prompts-b8qx3mrv.js → prompts-90v9eg2k.js} +5 -5
- package/dist/{prompts-ab-t7xptf0c.js → prompts-ab-59r52mxw.js} +7 -7
- package/dist/{prompts-propose-8feadk2t.js → prompts-propose-cbenbk8w.js} +7 -7
- package/dist/{provision-y5bdbh4y.js → provision-8c4s6vgg.js} +5 -5
- package/dist/{registry-ctnn8e26.js → registry-qvjyvbk8.js} +3 -3
- package/dist/{skills-96z55tj4.js → skills-z7w5x7jj.js} +5 -5
- package/dist/{sync-drz7req6.js → sync-r32tgpar.js} +7 -7
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
- package/skills/moda-cli/SKILL.md +3 -2
- package/skills/moda-cli/references/commands.md +2 -0
- package/skills/moda-cli/references/dashboard-parity.md +1 -0
- package/skills/moda-cli/references/detections.md +40 -0
package/dist/cli.js
CHANGED
|
@@ -13,11 +13,14 @@ import {
|
|
|
13
13
|
frustrationsFromEmotions,
|
|
14
14
|
mapWithConcurrency,
|
|
15
15
|
parseBatchTarget,
|
|
16
|
+
shapeToolCatalogDetail,
|
|
17
|
+
toolCatalogGetCommand,
|
|
18
|
+
toolFailureExamplesCommand,
|
|
16
19
|
trimToolFailureConversations,
|
|
17
20
|
withFrustrationAnchors,
|
|
18
21
|
withToolFailureAnchors,
|
|
19
22
|
withoutDetectionWindows
|
|
20
|
-
} from "./cli-
|
|
23
|
+
} from "./cli-nqgyz74b.js";
|
|
21
24
|
import {
|
|
22
25
|
createCommandContext,
|
|
23
26
|
envOptOutSet,
|
|
@@ -25,7 +28,7 @@ import {
|
|
|
25
28
|
optOutFlagSet,
|
|
26
29
|
parseBooleanFlagValue,
|
|
27
30
|
withoutFlag
|
|
28
|
-
} from "./cli-
|
|
31
|
+
} from "./cli-4d92a450.js";
|
|
29
32
|
import {
|
|
30
33
|
AuditSchema,
|
|
31
34
|
COMMAND_FLAG_SPECS,
|
|
@@ -67,12 +70,12 @@ import {
|
|
|
67
70
|
unknownSignalsSubcommandError,
|
|
68
71
|
usageLine,
|
|
69
72
|
writeDryRun
|
|
70
|
-
} from "./cli-
|
|
73
|
+
} from "./cli-cdx6yd7m.js";
|
|
71
74
|
import {
|
|
72
75
|
ApiError,
|
|
73
76
|
callControlAPI,
|
|
74
77
|
callDataAPI
|
|
75
|
-
} from "./cli-
|
|
78
|
+
} from "./cli-s72pph9c.js";
|
|
76
79
|
import {
|
|
77
80
|
AGENT_ERROR_CODES,
|
|
78
81
|
EXIT_AUTH_REQUIRED,
|
|
@@ -109,7 +112,7 @@ import {
|
|
|
109
112
|
shellArg,
|
|
110
113
|
validateConfig,
|
|
111
114
|
wasOutputCancelled
|
|
112
|
-
} from "./cli-
|
|
115
|
+
} from "./cli-wg6e2a1g.js";
|
|
113
116
|
import {
|
|
114
117
|
CliAccessError,
|
|
115
118
|
CliAuthError,
|
|
@@ -1242,6 +1245,24 @@ var CANONICAL_LEAVES = [
|
|
|
1242
1245
|
summary: "Tool failure leaderboard, or one tool's failure examples",
|
|
1243
1246
|
examples: ["moda detections tools --days-back=14", "moda detections tools <tool_name> --limit=3"]
|
|
1244
1247
|
},
|
|
1248
|
+
{
|
|
1249
|
+
noun: "tools",
|
|
1250
|
+
verb: "list",
|
|
1251
|
+
path: "tools list",
|
|
1252
|
+
args: "",
|
|
1253
|
+
handler: "tool-catalog",
|
|
1254
|
+
summary: "Every tool called in the window: calls, failed calls, success rate, effect direction, last seen",
|
|
1255
|
+
examples: ["moda tools list --days-back=7", "moda tools list --sort=failure_rate --limit=10", "moda tools list --search=calendar --direction=write"]
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
noun: "tools",
|
|
1259
|
+
verb: "get",
|
|
1260
|
+
path: "tools get",
|
|
1261
|
+
args: "<tool_name>",
|
|
1262
|
+
handler: "tool-catalog-detail",
|
|
1263
|
+
summary: "One tool: calls, recorded schema and payload fields, usage over time, top failure categories",
|
|
1264
|
+
examples: ["moda tools get <tool_name>", "moda tools get <tool_name> --days-back=30 --full"]
|
|
1265
|
+
},
|
|
1245
1266
|
{
|
|
1246
1267
|
noun: "review",
|
|
1247
1268
|
verb: "",
|
|
@@ -1275,11 +1296,12 @@ var CANONICAL_LEAVES = [
|
|
|
1275
1296
|
examples: ["moda skills push --dry-run", "moda skills push"]
|
|
1276
1297
|
}
|
|
1277
1298
|
];
|
|
1278
|
-
var CANONICAL_NOUNS = ["traces", "problems", "detections", "review", "reviews", "skills"];
|
|
1299
|
+
var CANONICAL_NOUNS = ["traces", "problems", "detections", "tools", "review", "reviews", "skills"];
|
|
1279
1300
|
var NOUN_SUMMARIES = {
|
|
1280
1301
|
traces: "Traces (agent runs): list, search, read, world state, raw spans",
|
|
1281
1302
|
problems: "Problems ranked by root cause, their evidence, impact and lifecycle",
|
|
1282
1303
|
detections: "Detections of every family, and the tool failure leaderboard",
|
|
1304
|
+
tools: "The Tool catalog: every tool with calls and success rate, and one tool's schema, usage and failure categories",
|
|
1283
1305
|
review: "Mark a detection a false positive, correct, or clear the mark",
|
|
1284
1306
|
reviews: "List false-positive marks and detection reviews",
|
|
1285
1307
|
skills: "Generate, pull, push, and install agent skills"
|
|
@@ -2959,46 +2981,46 @@ function leafManifestFields(leaf, commands) {
|
|
|
2959
2981
|
import { fileURLToPath } from "url";
|
|
2960
2982
|
import { realpathSync } from "fs";
|
|
2961
2983
|
async function runPromptsCommand(...args) {
|
|
2962
|
-
return (await import("./prompts-
|
|
2984
|
+
return (await import("./prompts-90v9eg2k.js")).runPromptsCommand(...args);
|
|
2963
2985
|
}
|
|
2964
2986
|
async function runSkillsCommand(...args) {
|
|
2965
|
-
return (await import("./skills-
|
|
2987
|
+
return (await import("./skills-z7w5x7jj.js")).runSkillsCommand(...args);
|
|
2966
2988
|
}
|
|
2967
2989
|
async function runFixCommand(...args) {
|
|
2968
|
-
return (await import("./fix-
|
|
2990
|
+
return (await import("./fix-667fyx00.js")).runFixCommand(...args);
|
|
2969
2991
|
}
|
|
2970
2992
|
async function runFixesCommand(...args) {
|
|
2971
|
-
return (await import("./fix-
|
|
2993
|
+
return (await import("./fix-667fyx00.js")).runFixesCommand(...args);
|
|
2972
2994
|
}
|
|
2973
2995
|
async function runHarnessCommand(...args) {
|
|
2974
|
-
return (await import("./harness-
|
|
2996
|
+
return (await import("./harness-fb0083ap.js")).runHarnessCommand(...args);
|
|
2975
2997
|
}
|
|
2976
2998
|
async function runSyncCommand(...args) {
|
|
2977
|
-
return (await import("./sync-
|
|
2999
|
+
return (await import("./sync-r32tgpar.js")).runSyncCommand(...args);
|
|
2978
3000
|
}
|
|
2979
3001
|
async function runRegistryCommand(...args) {
|
|
2980
|
-
return (await import("./registry-
|
|
3002
|
+
return (await import("./registry-qvjyvbk8.js")).runRegistryCommand(...args);
|
|
2981
3003
|
}
|
|
2982
3004
|
async function runDoctorCommand(...args) {
|
|
2983
|
-
return (await import("./doctor-
|
|
3005
|
+
return (await import("./doctor-w8z3wj1e.js")).runDoctorCommand(...args);
|
|
2984
3006
|
}
|
|
2985
3007
|
async function runStatusCommand(...args) {
|
|
2986
|
-
return (await import("./doctor-
|
|
3008
|
+
return (await import("./doctor-w8z3wj1e.js")).runStatusCommand(...args);
|
|
2987
3009
|
}
|
|
2988
3010
|
async function runAuthCommand(...args) {
|
|
2989
|
-
return (await import("./profile-commands-
|
|
3011
|
+
return (await import("./profile-commands-3hw4trwk.js")).runAuthCommand(...args);
|
|
2990
3012
|
}
|
|
2991
3013
|
async function runConfigCommand(...args) {
|
|
2992
|
-
return (await import("./profile-commands-
|
|
3014
|
+
return (await import("./profile-commands-3hw4trwk.js")).runConfigCommand(...args);
|
|
2993
3015
|
}
|
|
2994
3016
|
async function runProfilesCommand(...args) {
|
|
2995
|
-
return (await import("./profile-commands-
|
|
3017
|
+
return (await import("./profile-commands-3hw4trwk.js")).runProfilesCommand(...args);
|
|
2996
3018
|
}
|
|
2997
3019
|
async function runAgentCommand(...args) {
|
|
2998
|
-
return (await import("./agent-
|
|
3020
|
+
return (await import("./agent-4pyeecf7.js")).runAgentCommand(...args);
|
|
2999
3021
|
}
|
|
3000
3022
|
async function runProductionCommand(...args) {
|
|
3001
|
-
return (await import("./production-intelligence-
|
|
3023
|
+
return (await import("./production-intelligence-v2wq2aqv.js")).runProductionCommand(...args);
|
|
3002
3024
|
}
|
|
3003
3025
|
function parseArgs(argv) {
|
|
3004
3026
|
const args = argv.slice(2);
|
|
@@ -3285,6 +3307,7 @@ Start here (goal -> command):
|
|
|
3285
3307
|
read one trace moda traces get <conversation_id> (whole trace: --all)
|
|
3286
3308
|
what is broken moda overview, then moda problems list
|
|
3287
3309
|
tool errors moda detections tools, then moda detections tools <tool_name>
|
|
3310
|
+
tool calls, success rate, schema moda tools list, then moda tools get <tool_name>
|
|
3288
3311
|
user emotion and frustration moda detections list --family=emotion (or --family=frustration)
|
|
3289
3312
|
raw spans for one trace moda traces spans <conversation_id|trace_id>
|
|
3290
3313
|
a detection is wrong moda review <kind> <target> --reason=TEXT
|
|
@@ -3300,7 +3323,7 @@ Production data:
|
|
|
3300
3323
|
users / user <user_id> End users with health and activity (the dashboard Users page)
|
|
3301
3324
|
tail Live-tail new traces/detections as NDJSON (one line per item)
|
|
3302
3325
|
|
|
3303
|
-
Traces, Problems, detections and review (moda <noun> --help lists the verbs):
|
|
3326
|
+
Traces, Problems, detections, tools and review (moda <noun> --help lists the verbs):
|
|
3304
3327
|
${canonicalTreeHelpLines().join(`
|
|
3305
3328
|
`)}
|
|
3306
3329
|
|
|
@@ -3650,7 +3673,9 @@ async function attachWindows(rows, windowSize, budgetBytes) {
|
|
|
3650
3673
|
}
|
|
3651
3674
|
var TOOL_FAILURE_DETAIL_DEFAULT_LIMIT = 5;
|
|
3652
3675
|
var TOOL_FAILURE_AGENT_SUBTYPES = 20;
|
|
3653
|
-
|
|
3676
|
+
var TOOL_FAILURE_CATALOG_LINKS = 3;
|
|
3677
|
+
var TOOL_CATALOG_DEFAULT_LIMIT = 25;
|
|
3678
|
+
async function printWithOptionalWindows(enriched, listKey, includeWindow, windowSize, output, warnings, finalize, nextCommands = []) {
|
|
3654
3679
|
const allWarnings = [...warnings ?? []];
|
|
3655
3680
|
let data = enriched;
|
|
3656
3681
|
if (includeWindow) {
|
|
@@ -3660,7 +3685,11 @@ async function printWithOptionalWindows(enriched, listKey, includeWindow, window
|
|
|
3660
3685
|
}
|
|
3661
3686
|
if (finalize)
|
|
3662
3687
|
data = finalize(data, allWarnings);
|
|
3663
|
-
|
|
3688
|
+
const options = {
|
|
3689
|
+
...allWarnings.length > 0 ? { warnings: allWarnings } : {},
|
|
3690
|
+
...nextCommands.length > 0 ? { nextCommands } : {}
|
|
3691
|
+
};
|
|
3692
|
+
output.writeData(data, Object.keys(options).length > 0 ? options : undefined);
|
|
3664
3693
|
}
|
|
3665
3694
|
function withoutRepeatedFrustrationWindow(data) {
|
|
3666
3695
|
if (!Array.isArray(data.frustrations))
|
|
@@ -5346,7 +5375,98 @@ async function runCommand(command, positional, flags, positionals = positional ?
|
|
|
5346
5375
|
const params = parseSpecFlags("tool-failures", args, command);
|
|
5347
5376
|
const queryString = params.days_back ? `?days_back=${params.days_back}` : "";
|
|
5348
5377
|
const data = await callDataAPI(`/tool-failures${queryString}`);
|
|
5349
|
-
|
|
5378
|
+
const daysBack = params.days_back ?? 7;
|
|
5379
|
+
const failing = (Array.isArray(asRecord(data)?.tools) ? asRecord(data).tools : []).map((row) => asString(asRecord(row)?.tool_name)).filter((name) => Boolean(name)).slice(0, TOOL_FAILURE_CATALOG_LINKS);
|
|
5380
|
+
const nextCommands = failing.flatMap((name, index) => [
|
|
5381
|
+
...index === 0 ? [{ command: toolFailureExamplesCommand(name, daysBack), purpose: `Read failure examples of ${name}, the tool with the most failures.`, mutability: "read", requires_approval: false }] : [],
|
|
5382
|
+
{ command: toolCatalogGetCommand(name, daysBack), purpose: `Calls, recorded schema, usage over time and failure categories of ${name}.`, mutability: "read", requires_approval: false }
|
|
5383
|
+
]);
|
|
5384
|
+
context.output.writeData(data, nextCommands.length > 0 ? { nextCommands } : undefined);
|
|
5385
|
+
break;
|
|
5386
|
+
}
|
|
5387
|
+
case "tool-catalog": {
|
|
5388
|
+
const params = parseSpecFlags("tool-catalog", flagsToArgs(flags), command);
|
|
5389
|
+
const daysBack = params.days_back ?? 7;
|
|
5390
|
+
const limit = params.limit ?? TOOL_CATALOG_DEFAULT_LIMIT;
|
|
5391
|
+
const offset = params.offset ?? 0;
|
|
5392
|
+
const sort = params.sort ?? "calls";
|
|
5393
|
+
const query2 = new URLSearchParams({ days_back: String(daysBack), sort, limit: String(limit), offset: String(offset) });
|
|
5394
|
+
if (params.search)
|
|
5395
|
+
query2.set("search", params.search);
|
|
5396
|
+
if (params.direction)
|
|
5397
|
+
query2.set("direction", params.direction);
|
|
5398
|
+
const data = asRecord(await callDataAPI(`/tools?${query2.toString()}`)) ?? {};
|
|
5399
|
+
const pagination = asRecord(data.pagination);
|
|
5400
|
+
const tools = Array.isArray(data.tools) ? data.tools.map((row) => asRecord(row)).filter((row) => row !== null) : [];
|
|
5401
|
+
const listFlags = [
|
|
5402
|
+
`--days-back=${daysBack}`,
|
|
5403
|
+
...sort !== "calls" ? [`--sort=${sort}`] : [],
|
|
5404
|
+
...params.search ? [`--search=${shellArg(params.search)}`] : [],
|
|
5405
|
+
...params.direction ? [`--direction=${params.direction}`] : []
|
|
5406
|
+
];
|
|
5407
|
+
const nextCommands = [];
|
|
5408
|
+
const nextOffset = asNumber(pagination?.next_offset);
|
|
5409
|
+
if (pagination?.has_more === true && nextOffset !== null && nextOffset <= 1e4) {
|
|
5410
|
+
nextCommands.push({
|
|
5411
|
+
command: ["moda tools list", ...listFlags, `--limit=${limit}`, `--offset=${nextOffset}`].join(" "),
|
|
5412
|
+
purpose: `Read the next page: tools ${nextOffset + 1}-${Math.min(nextOffset + limit, asNumber(pagination.total) ?? nextOffset + limit)} of ${asNumber(pagination.total) ?? "more"}.`,
|
|
5413
|
+
mutability: "read",
|
|
5414
|
+
requires_approval: false
|
|
5415
|
+
});
|
|
5416
|
+
}
|
|
5417
|
+
const top = asString(tools[0]?.tool_name);
|
|
5418
|
+
if (top) {
|
|
5419
|
+
nextCommands.push({ command: toolCatalogGetCommand(top, daysBack), purpose: `Recorded schema, usage over time and failure categories of ${top}, the first tool on this page.`, mutability: "read", requires_approval: false });
|
|
5420
|
+
}
|
|
5421
|
+
const warnings = tools.length === 0 ? [`No tool calls recorded in the last ${daysBack} day(s)${params.search || params.direction ? " that match the filters" : ""}. Widen --days-back${params.search || params.direction ? " or drop --search/--direction" : ""}.`] : [];
|
|
5422
|
+
context.output.writeData(data, {
|
|
5423
|
+
...warnings.length > 0 ? { warnings } : {},
|
|
5424
|
+
...nextCommands.length > 0 ? { nextCommands } : {}
|
|
5425
|
+
});
|
|
5426
|
+
break;
|
|
5427
|
+
}
|
|
5428
|
+
case "tool-catalog-detail": {
|
|
5429
|
+
if (!positional) {
|
|
5430
|
+
throw new CliInputError("<tool_name> is required", "Usage: moda tools get <tool_name> [--days-back=N] [--full]", "missing_positional", {
|
|
5431
|
+
field: "<tool_name>",
|
|
5432
|
+
suggestedCommands: ["moda tools list"]
|
|
5433
|
+
});
|
|
5434
|
+
}
|
|
5435
|
+
const params = parseSpecFlags("tool-catalog-detail", flagsToArgs(flags, "tool_name", positional), command);
|
|
5436
|
+
const daysBack = params.days_back ?? 7;
|
|
5437
|
+
const agentMode = context.output.mode === "agent" || context.output.mode === "agent-stream";
|
|
5438
|
+
let raw;
|
|
5439
|
+
try {
|
|
5440
|
+
raw = asRecord(await callDataAPI(`/tools/${encodeURIComponent(params.tool_name)}?days_back=${daysBack}`)) ?? {};
|
|
5441
|
+
} catch (error) {
|
|
5442
|
+
if (!(error instanceof ApiError) || error.statusCode !== 404)
|
|
5443
|
+
throw error;
|
|
5444
|
+
throw new CliNotFoundError("tool", params.tool_name, `Tool "${params.tool_name}" has no recorded calls in the last ${daysBack} day(s): the name may be mistyped, or the tool was not called in this window.`, `moda tools list --search=${shellArg(params.tool_name)} --days-back=${daysBack}`);
|
|
5445
|
+
}
|
|
5446
|
+
const { data, shortened } = shapeToolCatalogDetail(raw, { daysBack, shorten: agentMode && params.full !== true });
|
|
5447
|
+
const warnings = [];
|
|
5448
|
+
if (shortened > 0) {
|
|
5449
|
+
warnings.push(`Agent output capped ${shortened} list(s) or value(s): at most 20 observed fields with 3 common values each, 5 recent calls, and 200 characters per input or sample error (the *_total fields give the full counts). Add --full for everything. The registered schema is never cut.`);
|
|
5450
|
+
}
|
|
5451
|
+
const definition = asRecord(data.definition);
|
|
5452
|
+
if (definition && definition.registered === null) {
|
|
5453
|
+
warnings.push(`No registered definition for "${params.tool_name}"; definition.observed_fields is the payload shape seen in recorded calls. Register tools with \`moda registry push\`.`);
|
|
5454
|
+
}
|
|
5455
|
+
const failureBlock = asRecord(data.failure_categories);
|
|
5456
|
+
const totalFailures = asNumber(failureBlock?.total_failures) ?? 0;
|
|
5457
|
+
const nextCommands = [];
|
|
5458
|
+
if (totalFailures > 0) {
|
|
5459
|
+
nextCommands.push({ command: toolFailureExamplesCommand(params.tool_name, daysBack), purpose: `Read the ${totalFailures} failure detection row(s) of ${params.tool_name}, with error text and tool input.`, mutability: "read", requires_approval: false });
|
|
5460
|
+
const first = asRecord(Array.isArray(failureBlock?.categories) ? failureBlock.categories[0] : undefined);
|
|
5461
|
+
const contextCommand = asString(first?.context_command);
|
|
5462
|
+
if (contextCommand) {
|
|
5463
|
+
nextCommands.push({ command: contextCommand, purpose: `Open the newest failure of the top category (${asString(first?.category) ?? "unknown"}) in its trace.`, mutability: "read", requires_approval: false });
|
|
5464
|
+
}
|
|
5465
|
+
}
|
|
5466
|
+
context.output.writeData(data, {
|
|
5467
|
+
...warnings.length > 0 ? { warnings } : {},
|
|
5468
|
+
...nextCommands.length > 0 ? { nextCommands } : {}
|
|
5469
|
+
});
|
|
5350
5470
|
break;
|
|
5351
5471
|
}
|
|
5352
5472
|
case "tool-failure-detail": {
|
|
@@ -5401,7 +5521,12 @@ async function runCommand(command, positional, flags, positionals = positional ?
|
|
|
5401
5521
|
out.push(`Showing the ${TOOL_FAILURE_AGENT_SUBTYPES} most frequent of ${subtypes.length} failure subtypes; --json lists all of them.`);
|
|
5402
5522
|
}
|
|
5403
5523
|
return trimmed;
|
|
5404
|
-
}
|
|
5524
|
+
}, [{
|
|
5525
|
+
command: toolCatalogGetCommand(params.tool_name, params.days_back ?? 7),
|
|
5526
|
+
purpose: subtypeCount === 0 && exampleCount === 0 ? `Check whether ${params.tool_name} was called at all in this window (it answers not found when it was not).` : `Call count, success rate, recorded schema and usage over time of ${params.tool_name}.`,
|
|
5527
|
+
mutability: "read",
|
|
5528
|
+
requires_approval: false
|
|
5529
|
+
}]);
|
|
5405
5530
|
break;
|
|
5406
5531
|
}
|
|
5407
5532
|
case "problem-impact": {
|
|
@@ -6143,7 +6268,7 @@ var commandRegistry = createCommandRegistry([
|
|
|
6143
6268
|
resetApiRequestCountBeforeRun: true,
|
|
6144
6269
|
telemetry: "result-and-error",
|
|
6145
6270
|
handler: async (context) => {
|
|
6146
|
-
const { runInit } = await import("./index-
|
|
6271
|
+
const { runInit } = await import("./index-4w5szrnw.js");
|
|
6147
6272
|
if (context.outputMode === "agent-stream") {
|
|
6148
6273
|
context.output.writeEvent({
|
|
6149
6274
|
event: "started",
|
|
@@ -6193,7 +6318,7 @@ var commandRegistry = createCommandRegistry([
|
|
|
6193
6318
|
resetApiRequestCountBeforeRun: true,
|
|
6194
6319
|
telemetry: "result-and-error",
|
|
6195
6320
|
handler: async (context) => {
|
|
6196
|
-
const { runProvision } = await import("./provision-
|
|
6321
|
+
const { runProvision } = await import("./provision-8c4s6vgg.js");
|
|
6197
6322
|
return runProvision(context, {
|
|
6198
6323
|
resumeCommand: buildResumeCommand("provision", context.rawFlags)
|
|
6199
6324
|
});
|
|
@@ -6919,6 +7044,33 @@ var commandRegistry = createCommandRegistry([
|
|
|
6919
7044
|
telemetry: "result-and-error",
|
|
6920
7045
|
handler: canonicalNounHandler
|
|
6921
7046
|
},
|
|
7047
|
+
{
|
|
7048
|
+
name: "tools",
|
|
7049
|
+
description: NOUN_SUMMARIES.tools,
|
|
7050
|
+
examples: [...leavesOf("tools").flatMap((leaf) => leaf.examples.slice(0, 2))],
|
|
7051
|
+
subcommands: treeSubcommandHelp("tools"),
|
|
7052
|
+
auth: "api-key",
|
|
7053
|
+
outputModes: ["human", "json", "agent"],
|
|
7054
|
+
mutability: "read",
|
|
7055
|
+
validateConfigBeforeRun: false,
|
|
7056
|
+
resetApiRequestCountBeforeRun: false,
|
|
7057
|
+
telemetry: "result-and-error",
|
|
7058
|
+
handler: canonicalNounHandler
|
|
7059
|
+
},
|
|
7060
|
+
legacyCommand({
|
|
7061
|
+
name: "tool-catalog",
|
|
7062
|
+
description: "The Tool catalog: every tool called in the window with calls, failed calls, success rate, effect direction and last seen",
|
|
7063
|
+
examples: ["moda tools list --sort=failure_rate --limit=10"],
|
|
7064
|
+
hidden: true,
|
|
7065
|
+
...dataApiDefaults
|
|
7066
|
+
}),
|
|
7067
|
+
legacyCommand({
|
|
7068
|
+
name: "tool-catalog-detail",
|
|
7069
|
+
description: "One tool's calls, recorded schema and observed payload fields, usage over time and top failure categories",
|
|
7070
|
+
examples: ["moda tools get <tool_name>"],
|
|
7071
|
+
hidden: true,
|
|
7072
|
+
...dataApiDefaults
|
|
7073
|
+
}),
|
|
6922
7074
|
{
|
|
6923
7075
|
name: "review",
|
|
6924
7076
|
description: NOUN_SUMMARIES.review,
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
promptsDiscoveredCheck,
|
|
4
4
|
runDoctorCommand,
|
|
5
5
|
runStatusCommand
|
|
6
|
-
} from "./cli-
|
|
7
|
-
import"./cli-
|
|
8
|
-
import"./cli-
|
|
6
|
+
} from "./cli-cr44672e.js";
|
|
7
|
+
import"./cli-gjzr7jq5.js";
|
|
8
|
+
import"./cli-npkb08xt.js";
|
|
9
9
|
import"./cli-mm48br00.js";
|
|
10
10
|
import"./cli-xq45etg1.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
11
|
+
import"./cli-4d92a450.js";
|
|
12
|
+
import"./cli-cdx6yd7m.js";
|
|
13
|
+
import"./cli-s72pph9c.js";
|
|
14
|
+
import"./cli-wg6e2a1g.js";
|
|
15
15
|
import"./cli-k4tqwah4.js";
|
|
16
16
|
import"./cli-9kfxkxmk.js";
|
|
17
17
|
import"./cli-ns5fcnkz.js";
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
DEFAULT_POLL_INTERVAL_MS,
|
|
3
3
|
DEFAULT_WAIT_TIMEOUT_MS,
|
|
4
4
|
fetchLatestRun
|
|
5
|
-
} from "./cli-
|
|
5
|
+
} from "./cli-nzx7rqjs.js";
|
|
6
6
|
import {
|
|
7
7
|
assertFlags
|
|
8
|
-
} from "./cli-
|
|
8
|
+
} from "./cli-cdx6yd7m.js";
|
|
9
9
|
import {
|
|
10
10
|
callControlAPI
|
|
11
|
-
} from "./cli-
|
|
11
|
+
} from "./cli-s72pph9c.js";
|
|
12
12
|
import {
|
|
13
13
|
EXIT_DEGRADED,
|
|
14
14
|
EXIT_ERROR,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
resolveApiTenantId,
|
|
18
18
|
shellArg,
|
|
19
19
|
validateConfig
|
|
20
|
-
} from "./cli-
|
|
20
|
+
} from "./cli-wg6e2a1g.js";
|
|
21
21
|
import {
|
|
22
22
|
CliInputError
|
|
23
23
|
} from "./cli-k4tqwah4.js";
|
|
@@ -40,17 +40,17 @@ import {
|
|
|
40
40
|
writeHarnessAnalyzeResult,
|
|
41
41
|
writeHarnessArtifacts,
|
|
42
42
|
writeHumanProgress
|
|
43
|
-
} from "./cli-
|
|
43
|
+
} from "./cli-x605txan.js";
|
|
44
44
|
import"./cli-xq45etg1.js";
|
|
45
45
|
import"./cli-97fnztpy.js";
|
|
46
46
|
import {
|
|
47
47
|
HARNESS_ANALYZE_CONCERNS
|
|
48
48
|
} from "./cli-cesds766.js";
|
|
49
49
|
import"./cli-qpq84eee.js";
|
|
50
|
-
import"./cli-
|
|
51
|
-
import"./cli-
|
|
52
|
-
import"./cli-
|
|
53
|
-
import"./cli-
|
|
50
|
+
import"./cli-4d92a450.js";
|
|
51
|
+
import"./cli-cdx6yd7m.js";
|
|
52
|
+
import"./cli-s72pph9c.js";
|
|
53
|
+
import"./cli-wg6e2a1g.js";
|
|
54
54
|
import"./cli-k4tqwah4.js";
|
|
55
55
|
import"./cli-9kfxkxmk.js";
|
|
56
56
|
import"./cli-ns5fcnkz.js";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildSourceSnapshot
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-x605txan.js";
|
|
4
4
|
import"./cli-xq45etg1.js";
|
|
5
5
|
import"./cli-97fnztpy.js";
|
|
6
6
|
import"./cli-cesds766.js";
|
|
7
7
|
import"./cli-qpq84eee.js";
|
|
8
|
-
import"./cli-
|
|
9
|
-
import"./cli-
|
|
10
|
-
import"./cli-
|
|
8
|
+
import"./cli-4d92a450.js";
|
|
9
|
+
import"./cli-cdx6yd7m.js";
|
|
10
|
+
import"./cli-s72pph9c.js";
|
|
11
11
|
import {
|
|
12
12
|
recordApiRequest
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-wg6e2a1g.js";
|
|
14
14
|
import"./cli-k4tqwah4.js";
|
|
15
15
|
import"./cli-9kfxkxmk.js";
|
|
16
16
|
import"./cli-ns5fcnkz.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildDoctorReport
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-cr44672e.js";
|
|
4
4
|
import {
|
|
5
5
|
selectTenantAndCreateKey
|
|
6
|
-
} from "./cli-
|
|
7
|
-
import"./cli-
|
|
6
|
+
} from "./cli-w3ckvma5.js";
|
|
7
|
+
import"./cli-ef9eagsc.js";
|
|
8
8
|
import {
|
|
9
9
|
ConnectCodeError,
|
|
10
10
|
connectWithCode,
|
|
11
11
|
loadAuthSession,
|
|
12
12
|
loadToken,
|
|
13
13
|
login
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-gjzr7jq5.js";
|
|
15
15
|
import {
|
|
16
16
|
bundledSkillsDir,
|
|
17
17
|
installIntegrationSkill,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
agentsMdProblem,
|
|
22
22
|
runSkillSync
|
|
23
|
-
} from "./cli-
|
|
23
|
+
} from "./cli-wh83c3ss.js";
|
|
24
24
|
import"./cli-qm5b1vck.js";
|
|
25
25
|
import {
|
|
26
26
|
detectAgents
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
initPrompts,
|
|
34
34
|
runPromptSync
|
|
35
|
-
} from "./cli-
|
|
35
|
+
} from "./cli-npkb08xt.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-
|
|
49
|
+
} from "./cli-x605txan.js";
|
|
50
50
|
import {
|
|
51
51
|
canonicalText,
|
|
52
52
|
renderInitBanner,
|
|
@@ -62,16 +62,16 @@ import"./cli-cesds766.js";
|
|
|
62
62
|
import"./cli-qpq84eee.js";
|
|
63
63
|
import {
|
|
64
64
|
createCommandContext
|
|
65
|
-
} from "./cli-
|
|
66
|
-
import"./cli-
|
|
67
|
-
import"./cli-
|
|
65
|
+
} from "./cli-4d92a450.js";
|
|
66
|
+
import"./cli-cdx6yd7m.js";
|
|
67
|
+
import"./cli-s72pph9c.js";
|
|
68
68
|
import {
|
|
69
69
|
VERSION,
|
|
70
70
|
recordApiRequest,
|
|
71
71
|
resolveIngestUrl,
|
|
72
72
|
resolveModaBaseUrl,
|
|
73
73
|
shellArg
|
|
74
|
-
} from "./cli-
|
|
74
|
+
} from "./cli-wg6e2a1g.js";
|
|
75
75
|
import {
|
|
76
76
|
CliAuthError,
|
|
77
77
|
CliInputError
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
contextTarget,
|
|
7
7
|
frustrationAnchorIndex,
|
|
8
8
|
frustrationsFromEmotions
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-nqgyz74b.js";
|
|
10
10
|
import {
|
|
11
11
|
renderMarkdownForTerminal,
|
|
12
12
|
shouldColorTerminalOutput,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
callControlAPI,
|
|
18
18
|
callDataAPI
|
|
19
|
-
} from "./cli-
|
|
19
|
+
} from "./cli-s72pph9c.js";
|
|
20
20
|
import {
|
|
21
21
|
EXIT_DEGRADED,
|
|
22
22
|
EXIT_OK,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
resolveModaBaseUrl,
|
|
27
27
|
safeWriteStderr,
|
|
28
28
|
shellArg
|
|
29
|
-
} from "./cli-
|
|
29
|
+
} from "./cli-wg6e2a1g.js";
|
|
30
30
|
import {
|
|
31
31
|
CliAuthError,
|
|
32
32
|
CliInputError,
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
probeApiKey,
|
|
3
3
|
redactApiKey,
|
|
4
4
|
resolveApiKeyCredential
|
|
5
|
-
} from "./cli-
|
|
5
|
+
} from "./cli-ef9eagsc.js";
|
|
6
6
|
import {
|
|
7
7
|
authFetch,
|
|
8
8
|
clearAuthSession,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadAuthSession,
|
|
11
11
|
login,
|
|
12
12
|
revokeCliSessionToken
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-gjzr7jq5.js";
|
|
14
14
|
import {
|
|
15
15
|
DEFAULT_INGEST_URL,
|
|
16
16
|
EXIT_AUTH_REQUIRED,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
setActiveProfile,
|
|
36
36
|
shellArg,
|
|
37
37
|
upsertProfile
|
|
38
|
-
} from "./cli-
|
|
38
|
+
} from "./cli-wg6e2a1g.js";
|
|
39
39
|
import {
|
|
40
40
|
CliInputError
|
|
41
41
|
} from "./cli-k4tqwah4.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
inventoryFiles,
|
|
3
3
|
safePromptEvidencePath
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-x605txan.js";
|
|
5
5
|
import"./cli-xq45etg1.js";
|
|
6
6
|
import"./cli-97fnztpy.js";
|
|
7
7
|
import"./cli-cesds766.js";
|
|
8
8
|
import {
|
|
9
9
|
require_typescript
|
|
10
10
|
} from "./cli-qpq84eee.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
11
|
+
import"./cli-4d92a450.js";
|
|
12
|
+
import"./cli-cdx6yd7m.js";
|
|
13
|
+
import"./cli-s72pph9c.js";
|
|
14
|
+
import"./cli-wg6e2a1g.js";
|
|
15
15
|
import"./cli-k4tqwah4.js";
|
|
16
16
|
import"./cli-9kfxkxmk.js";
|
|
17
17
|
import"./cli-ns5fcnkz.js";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
checkPromptMapping,
|
|
4
4
|
discoverHarnessPromptSources,
|
|
5
5
|
safePromptEvidencePath
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-x605txan.js";
|
|
7
7
|
import"./cli-xq45etg1.js";
|
|
8
8
|
import"./cli-97fnztpy.js";
|
|
9
9
|
import"./cli-cesds766.js";
|
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
inspectCodeSelectors,
|
|
12
12
|
inspectPythonSelectors
|
|
13
13
|
} from "./cli-qpq84eee.js";
|
|
14
|
-
import"./cli-
|
|
15
|
-
import"./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-
|
|
14
|
+
import"./cli-4d92a450.js";
|
|
15
|
+
import"./cli-cdx6yd7m.js";
|
|
16
|
+
import"./cli-s72pph9c.js";
|
|
17
|
+
import"./cli-wg6e2a1g.js";
|
|
18
18
|
import"./cli-k4tqwah4.js";
|
|
19
19
|
import"./cli-9kfxkxmk.js";
|
|
20
20
|
import"./cli-ns5fcnkz.js";
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
runPromptSync,
|
|
12
12
|
runPromptsCommand,
|
|
13
13
|
writePromptSyncProgress
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-npkb08xt.js";
|
|
15
15
|
import {
|
|
16
16
|
promptSourceHashPayload
|
|
17
17
|
} from "./cli-mm48br00.js";
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
18
|
+
import"./cli-4d92a450.js";
|
|
19
|
+
import"./cli-cdx6yd7m.js";
|
|
20
|
+
import"./cli-s72pph9c.js";
|
|
21
|
+
import"./cli-wg6e2a1g.js";
|
|
22
22
|
import"./cli-k4tqwah4.js";
|
|
23
23
|
import"./cli-9kfxkxmk.js";
|
|
24
24
|
import"./cli-ns5fcnkz.js";
|
|
@@ -23,14 +23,14 @@ import {
|
|
|
23
23
|
runPromptAb,
|
|
24
24
|
selectProblemCases,
|
|
25
25
|
waitLabel
|
|
26
|
-
} from "./cli-
|
|
27
|
-
import"./cli-
|
|
28
|
-
import"./cli-
|
|
26
|
+
} from "./cli-xkcy9wns.js";
|
|
27
|
+
import"./cli-npkb08xt.js";
|
|
28
|
+
import"./cli-nzx7rqjs.js";
|
|
29
29
|
import"./cli-mm48br00.js";
|
|
30
|
-
import"./cli-
|
|
31
|
-
import"./cli-
|
|
32
|
-
import"./cli-
|
|
33
|
-
import"./cli-
|
|
30
|
+
import"./cli-4d92a450.js";
|
|
31
|
+
import"./cli-cdx6yd7m.js";
|
|
32
|
+
import"./cli-s72pph9c.js";
|
|
33
|
+
import"./cli-wg6e2a1g.js";
|
|
34
34
|
import"./cli-k4tqwah4.js";
|
|
35
35
|
import"./cli-9kfxkxmk.js";
|
|
36
36
|
import"./cli-ns5fcnkz.js";
|