@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.
Files changed (38) hide show
  1. package/dist/{agent-g07tg64w.js → agent-4pyeecf7.js} +8 -8
  2. package/dist/{cli-dr6x0zv7.js → cli-4d92a450.js} +1 -1
  3. package/dist/{cli-n2hng3gv.js → cli-cdx6yd7m.js} +19 -2
  4. package/dist/{cli-5fstvkva.js → cli-cr44672e.js} +5 -5
  5. package/dist/{cli-97jew729.js → cli-ef9eagsc.js} +1 -1
  6. package/dist/{cli-9bgnvth2.js → cli-gjzr7jq5.js} +1 -1
  7. package/dist/{cli-6j8h2ave.js → cli-npkb08xt.js} +8 -8
  8. package/dist/{cli-fwpqghgc.js → cli-nqgyz74b.js} +112 -2
  9. package/dist/{cli-yz8xcpyk.js → cli-nzx7rqjs.js} +1 -1
  10. package/dist/{cli-e23g9ywa.js → cli-s72pph9c.js} +1 -1
  11. package/dist/{cli-9bgk5jeh.js → cli-w3ckvma5.js} +3 -3
  12. package/dist/{cli-99p2jh28.js → cli-wg6e2a1g.js} +17 -4
  13. package/dist/{cli-k007ztbs.js → cli-wh83c3ss.js} +4 -4
  14. package/dist/{cli-x9cwat4a.js → cli-x605txan.js} +5 -5
  15. package/dist/{cli-602yx84w.js → cli-xkcy9wns.js} +5 -5
  16. package/dist/cli.js +179 -27
  17. package/dist/{doctor-tvre7zvk.js → doctor-w8z3wj1e.js} +7 -7
  18. package/dist/{fix-w5z02wt4.js → fix-667fyx00.js} +4 -4
  19. package/dist/{harness-6vwehf47.js → harness-fb0083ap.js} +5 -5
  20. package/dist/{harness-github-actions-6gdrpn4m.js → harness-github-actions-7s41s1vg.js} +5 -5
  21. package/dist/{index-75vcntpe.js → index-4w5szrnw.js} +11 -11
  22. package/dist/{production-intelligence-7wb1djy2.js → production-intelligence-v2wq2aqv.js} +3 -3
  23. package/dist/{profile-commands-h8evz9x0.js → profile-commands-3hw4trwk.js} +3 -3
  24. package/dist/{prompt-attribution-t0eq8gn8.js → prompt-attribution-g7md8hzc.js} +5 -5
  25. package/dist/prompt-source-mcp.js +5 -5
  26. package/dist/{prompts-b8qx3mrv.js → prompts-90v9eg2k.js} +5 -5
  27. package/dist/{prompts-ab-t7xptf0c.js → prompts-ab-59r52mxw.js} +7 -7
  28. package/dist/{prompts-propose-8feadk2t.js → prompts-propose-cbenbk8w.js} +7 -7
  29. package/dist/{provision-y5bdbh4y.js → provision-8c4s6vgg.js} +5 -5
  30. package/dist/{registry-ctnn8e26.js → registry-qvjyvbk8.js} +3 -3
  31. package/dist/{skills-96z55tj4.js → skills-z7w5x7jj.js} +5 -5
  32. package/dist/{sync-drz7req6.js → sync-r32tgpar.js} +7 -7
  33. package/package.json +1 -1
  34. package/skills/integration/index.json +2 -2
  35. package/skills/moda-cli/SKILL.md +3 -2
  36. package/skills/moda-cli/references/commands.md +2 -0
  37. package/skills/moda-cli/references/dashboard-parity.md +1 -0
  38. package/skills/moda-cli/references/detections.md +40 -0
@@ -7,20 +7,20 @@ import {
7
7
  formatVerdict,
8
8
  rerunWithYes,
9
9
  resolvePromptArmSpec
10
- } from "./cli-602yx84w.js";
11
- import"./cli-6j8h2ave.js";
12
- import"./cli-yz8xcpyk.js";
10
+ } from "./cli-xkcy9wns.js";
11
+ import"./cli-npkb08xt.js";
12
+ import"./cli-nzx7rqjs.js";
13
13
  import"./cli-mm48br00.js";
14
- import"./cli-dr6x0zv7.js";
15
- import"./cli-n2hng3gv.js";
14
+ import"./cli-4d92a450.js";
15
+ import"./cli-cdx6yd7m.js";
16
16
  import {
17
17
  callControlAPI
18
- } from "./cli-e23g9ywa.js";
18
+ } from "./cli-s72pph9c.js";
19
19
  import {
20
20
  resolveApiTenantId,
21
21
  shellArg,
22
22
  validateConfig
23
- } from "./cli-99p2jh28.js";
23
+ } from "./cli-wg6e2a1g.js";
24
24
  import {
25
25
  CliInputError
26
26
  } from "./cli-k4tqwah4.js";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  selectTenantAndCreateKey
3
- } from "./cli-9bgk5jeh.js";
4
- import"./cli-97jew729.js";
3
+ } from "./cli-w3ckvma5.js";
4
+ import"./cli-ef9eagsc.js";
5
5
  import {
6
6
  loadAuthSession
7
- } from "./cli-9bgnvth2.js";
7
+ } from "./cli-gjzr7jq5.js";
8
8
  import {
9
9
  stringOption
10
- } from "./cli-dr6x0zv7.js";
10
+ } from "./cli-4d92a450.js";
11
11
  import {
12
12
  resolveIngestUrl,
13
13
  resolveModaBaseUrl
14
- } from "./cli-99p2jh28.js";
14
+ } from "./cli-wg6e2a1g.js";
15
15
  import {
16
16
  CliAuthError
17
17
  } from "./cli-k4tqwah4.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  assertFlags
3
- } from "./cli-n2hng3gv.js";
3
+ } from "./cli-cdx6yd7m.js";
4
4
  import {
5
5
  callControlAPI
6
- } from "./cli-e23g9ywa.js";
6
+ } from "./cli-s72pph9c.js";
7
7
  import {
8
8
  explicitOutputMode,
9
9
  resolveApiKey
10
- } from "./cli-99p2jh28.js";
10
+ } from "./cli-wg6e2a1g.js";
11
11
  import {
12
12
  CliInputError
13
13
  } from "./cli-k4tqwah4.js";
@@ -3,14 +3,14 @@ import {
3
3
  pullSkills,
4
4
  runSkillSync,
5
5
  runSkillsCommand
6
- } from "./cli-k007ztbs.js";
6
+ } from "./cli-wh83c3ss.js";
7
7
  import"./cli-qm5b1vck.js";
8
8
  import"./cli-rjav0vj1.js";
9
9
  import"./cli-hcwdz9sd.js";
10
- import"./cli-dr6x0zv7.js";
11
- import"./cli-n2hng3gv.js";
12
- import"./cli-e23g9ywa.js";
13
- import"./cli-99p2jh28.js";
10
+ import"./cli-4d92a450.js";
11
+ import"./cli-cdx6yd7m.js";
12
+ import"./cli-s72pph9c.js";
13
+ import"./cli-wg6e2a1g.js";
14
14
  import"./cli-k4tqwah4.js";
15
15
  import"./cli-ns5fcnkz.js";
16
16
  import"./cli-0v6na3yp.js";
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  runSkillsCommand
3
- } from "./cli-k007ztbs.js";
3
+ } from "./cli-wh83c3ss.js";
4
4
  import"./cli-qm5b1vck.js";
5
5
  import"./cli-rjav0vj1.js";
6
6
  import"./cli-hcwdz9sd.js";
7
7
  import {
8
8
  runPromptsCommand
9
- } from "./cli-6j8h2ave.js";
9
+ } from "./cli-npkb08xt.js";
10
10
  import"./cli-mm48br00.js";
11
11
  import {
12
12
  runHarnessCommand
13
- } from "./cli-x9cwat4a.js";
13
+ } from "./cli-x605txan.js";
14
14
  import"./cli-xq45etg1.js";
15
15
  import"./cli-97fnztpy.js";
16
16
  import"./cli-cesds766.js";
17
17
  import"./cli-qpq84eee.js";
18
- import"./cli-dr6x0zv7.js";
19
- import"./cli-n2hng3gv.js";
20
- import"./cli-e23g9ywa.js";
21
- import"./cli-99p2jh28.js";
18
+ import"./cli-4d92a450.js";
19
+ import"./cli-cdx6yd7m.js";
20
+ import"./cli-s72pph9c.js";
21
+ import"./cli-wg6e2a1g.js";
22
22
  import {
23
23
  CliInputError
24
24
  } from "./cli-k4tqwah4.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moda-ai/cli",
3
- "version": "1.55.35",
3
+ "version": "1.55.37",
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-17T14:15:17.680Z",
4
- "cli_version": "1.55.35",
3
+ "bundled_at": "2026-10-18T00:25:21.733Z",
4
+ "cli_version": "1.55.37",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: moda-cli
3
- version: 3.0.2
3
+ version: 3.0.3
4
4
  description: Investigate a production AI agent with the Moda CLI (`moda`) - find where something happened in real traces (traces search, then traces get), check agent health, rank what to fix (investigate, problems), and dig into tool failures, user frustration, and hallucinations. Also prompt registry sync/promote, replays, custom signals, and false-positive marking. Use when the user mentions Moda, production traces or conversations of their agent, agent failures, or asks what to fix.
5
5
  ---
6
6
 
@@ -10,7 +10,7 @@ description: Investigate a production AI agent with the Moda CLI (`moda`) - find
10
10
  run: every message, tool call, and step sharing one `conversation_id` (older
11
11
  names: "conversation"; `moda conversations` is an alias of `moda traces list`).
12
12
  Analytics commands are read-only. Commands are `moda <noun> <verb>` (`traces`,
13
- `problems`, `detections`, `review`); older names such as `moda context` still
13
+ `problems`, `detections`, `tools`, `review`); older names such as `moda context` still
14
14
  work but warn (`meta.deprecated`), so use the forms below. Detailed guides live
15
15
  in `references/`; read one only when the task needs it.
16
16
 
@@ -62,6 +62,7 @@ Details: `references/output-protocol.md`.
62
62
  | Is the agent healthy? | `moda overview --days-back=7` | `moda investigate` |
63
63
  | What to fix first? | `moda investigate` or `moda problems` (free) | `moda problems get <problem_id>`, then `--evidence` / `--traces` |
64
64
  | Why is tool T failing? | `moda detections tools` | `moda detections tools <T>` (use each row's `anchor`) |
65
+ | How often is tool T called / what is its schema? | `moda tools list` (every tool: calls, failed calls, success rate; `--sort=failure_rate`) | `moda tools get <T>` (registered schema, observed payload fields, usage over time, top failure categories) |
65
66
  | What frustrates users? | `moda detections list --family=frustration --limit=10` | `moda traces get <anchor.conversation_id> --msg-index=<anchor.msg_index>` |
66
67
  | Other emotions, laziness, hallucinations | `moda detections list --family=emotion:<f>`, `moda detections list --family=laziness`, `moda detections list --family=hallucination --kind=contradicted` | context on the row's anchor |
67
68
  | Read one whole trace | `moda traces get <id> --all` (pages of up to 500 messages) | `moda traces spans <id>` for raw spans |
@@ -27,6 +27,8 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
27
27
  | `moda detections list --family=hallucination` | Grounding detections: contradicted/verified outputs, rule breakdown (`--kind=contradicted\|verified`, `--conversation-id=ID`) |
28
28
  | `moda detections tools` | Tool failure overview |
29
29
  | `moda detections tools <tool_name>` | Per-tool failure breakdown + examples |
30
+ | `moda tools list` | Tool catalog: every tool called in the window with calls, failed calls, success rate, traces, effect direction, last seen (`--sort=calls\|failure_rate\|failures\|traces\|last_seen`, `--search`, `--direction`, `--limit` 1-200, `--offset`) |
31
+ | `moda tools get <tool_name>` | One tool: call stats, registered description and schema, observed payload fields, usage over time, top failure categories with the newest failure (`--days-back`, `--full`) |
30
32
  | `moda problems` | Rank cross-signal Problems by root cause (what to fix first); takes only `--days-back`/`--limit`. Filter by family with `moda problems unexplained --family=F` or `moda problems get <problem_id> --traces --family=F` |
31
33
  | `moda problems get <problem_id>` | One Problem: dossier, or `--evidence`/`--reports`/`--traces`/`--feedback` pages (`--conversations` is a legacy alias of `--traces`) (`--limit` 1–50, `--cursor` verbatim keyset token) |
32
34
  | `moda problems feedback <problem_id>` | Write: `--action=mark_fixed\|dismiss\|flag_attribution\|rename`. `--reason` required for flag_attribution, optional for dismiss; `--new-name` for rename; `--attribution-id` (UUID) required for flag_attribution |
@@ -12,6 +12,7 @@ Writes listed here accept `--dry-run`: it validates the call, prints the exact r
12
12
  | Traces list: sort, page | `moda traces --sort=recent\|longest\|slowest --offset=N` |
13
13
  | Trace detail: whole transcript | `moda traces get <id> --all` (ordered, with tool calls/results) |
14
14
  | Users page / user profile | `moda users [--window --cohort --sort --order --health-status]`, `moda user <id>` |
15
+ | Tool catalog: every tool, its schema and usage | `moda tools list [--sort=calls\|failure_rate\|failures\|traces\|last_seen --search --direction --offset]`, `moda tools get <tool_name>` |
15
16
  | Problems: unexplained remainder | `moda problems unexplained [--family=emotion\|tool_failure\|laziness\|… --cursor]` |
16
17
  | Reopen a problem marked fixed | `moda problems reopen <problem_id> --reason="…"` (resolved ones return only via re-detection) |
17
18
  | Custom signals: create | `moda signals draft --note="…"`, then `moda signals create --name --description --pass-criteria --fail-criteria [--tool-names=a,b]` or `--file=body.json` |
@@ -77,3 +77,43 @@ Examples default to `--limit=5` (max 20). Example text is returned whole; if
77
77
  the agent envelope goes over its byte limit, whole trailing examples are
78
78
  dropped and `truncation.data.full_output_path` holds every example. Agent output lists the 20 most frequent
79
79
  `subtypes` (`subtypes_total` has the full count); `--json` lists all.
80
+ `next_commands` include `moda tools get <tool_name>` for the tool's call
81
+ count, success rate and schema.
82
+
83
+ ### 7. Tool catalog: calls, success rate and schema
84
+
85
+ `moda detections tools` lists failing tools only. For the call denominator of
86
+ every tool, healthy ones included, and for what a tool takes as input, use the
87
+ Tool catalog (the same figures as the dashboard Tool catalog page):
88
+
89
+ ```bash
90
+ moda tools list # every tool, most called first
91
+ moda tools list --sort=failure_rate --limit=10 # calls, failed calls, success rate
92
+ moda tools list --search=calendar --direction=write
93
+ moda tools get <tool_name> # stats, schema, usage, failure categories
94
+ moda tools get <tool_name> --days-back=30 --full # observed values and inputs uncut
95
+ ```
96
+
97
+ `tools list` pages with `--limit` (1-200, default 25) and `--offset`; when
98
+ `pagination.has_more` is true, `next_commands` holds the next page. Sorts are
99
+ `calls`, `failure_rate`, `failures`, `traces`, `last_seen` (all descending).
100
+
101
+ `tools get` returns `stats`, `definition.registered` (the description and
102
+ schema pushed with `moda registry push` or added in the dashboard, else `null`),
103
+ `definition.observed_fields` (keys seen in recorded call inputs, with types and
104
+ common values), `usage` (calls and failed calls per day, or per hour under 7
105
+ days), `tool_classes`, `effect_profile`, `failure_categories` and
106
+ `recent_calls`. Each failure category carries `latest_failure`, a
107
+ `context_command` that opens it, and an `examples_command`
108
+ (`moda detections tools <tool_name> --subtype=<category>`). Agent output keeps
109
+ 20 observed fields with 3 common values each and 5 recent calls, and cuts
110
+ inputs and sample errors at 200 characters (`*_total` fields give the full
111
+ counts); `--full` keeps everything. The registered schema is never cut. A tool with no calls in the window is
112
+ `not_found`.
113
+
114
+ Two failure counts, from two sources: `calls`, `failed_calls` and
115
+ `success_rate_pct` count recorded tool receipts (what the catalog shows);
116
+ `stats.failure_detections` and `failure_categories` count classified tool
117
+ failures, the same rows as `moda detections tools`. A call can succeed on its
118
+ receipt and still be classified as a failure (wrong content, a policy block),
119
+ so the second count can be higher. `metric_note` in each response says the same.