@moda-ai/cli 1.55.36 → 1.55.38

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-9r58v0bc.js} +8 -8
  2. package/dist/{cli-e23g9ywa.js → cli-3n040fp2.js} +1 -1
  3. package/dist/{cli-k007ztbs.js → cli-93926afn.js} +4 -4
  4. package/dist/{cli-97jew729.js → cli-9g5kzsg6.js} +1 -1
  5. package/dist/{cli-dr6x0zv7.js → cli-b7nyw498.js} +1 -1
  6. package/dist/{cli-6j8h2ave.js → cli-dmnayt2r.js} +8 -8
  7. package/dist/{cli-fwpqghgc.js → cli-n311b8g0.js} +112 -2
  8. package/dist/{cli-602yx84w.js → cli-nh23q6ay.js} +5 -5
  9. package/dist/{cli-99p2jh28.js → cli-rcjhfts4.js} +24 -10
  10. package/dist/{cli-9bgnvth2.js → cli-sk1p71wr.js} +1 -1
  11. package/dist/{cli-x9cwat4a.js → cli-skvvwp2q.js} +5 -5
  12. package/dist/{cli-9bgk5jeh.js → cli-tdcx8yz9.js} +3 -3
  13. package/dist/{cli-n2hng3gv.js → cli-xheg54qc.js} +80 -7
  14. package/dist/{cli-yz8xcpyk.js → cli-xk630wjq.js} +1 -1
  15. package/dist/{cli-5fstvkva.js → cli-xtyszvq1.js} +5 -5
  16. package/dist/cli.js +319 -39
  17. package/dist/{doctor-tvre7zvk.js → doctor-xq5bjvpq.js} +7 -7
  18. package/dist/{fix-w5z02wt4.js → fix-kvszavm1.js} +4 -4
  19. package/dist/{harness-github-actions-6gdrpn4m.js → harness-github-actions-drbkcb8d.js} +5 -5
  20. package/dist/{harness-6vwehf47.js → harness-qatnwxrz.js} +5 -5
  21. package/dist/{index-75vcntpe.js → index-y5jnz2t2.js} +11 -11
  22. package/dist/{production-intelligence-7wb1djy2.js → production-intelligence-j55vaw6t.js} +61 -4
  23. package/dist/{profile-commands-h8evz9x0.js → profile-commands-skdxe17v.js} +3 -3
  24. package/dist/{prompt-attribution-t0eq8gn8.js → prompt-attribution-zq38actx.js} +5 -5
  25. package/dist/prompt-source-mcp.js +5 -5
  26. package/dist/{prompts-ab-t7xptf0c.js → prompts-ab-yd2dawe3.js} +7 -7
  27. package/dist/{prompts-b8qx3mrv.js → prompts-cwqn8a57.js} +5 -5
  28. package/dist/{prompts-propose-8feadk2t.js → prompts-propose-11dj9ked.js} +7 -7
  29. package/dist/{provision-y5bdbh4y.js → provision-ghca9d54.js} +5 -5
  30. package/dist/{registry-ctnn8e26.js → registry-76sngjw6.js} +3 -3
  31. package/dist/{skills-96z55tj4.js → skills-btn9r48v.js} +5 -5
  32. package/dist/{sync-drz7req6.js → sync-ye7nxeen.js} +7 -7
  33. package/package.json +1 -1
  34. package/skills/integration/index.json +2 -2
  35. package/skills/moda-cli/SKILL.md +5 -2
  36. package/skills/moda-cli/references/commands.md +3 -0
  37. package/skills/moda-cli/references/dashboard-parity.md +4 -0
  38. package/skills/moda-cli/references/detections.md +93 -0
@@ -44,6 +44,59 @@ slice centered on the anchor. `--window=N` (1–5, default `1`) is the
44
44
  half-width; `--window=1` ⇒ 3 messages total (anchor ± 1), the canonical
45
45
  "three lines" view.
46
46
 
47
+ ### 5a. Per-trace lists and dashboard filters (`--group-by=trace`)
48
+
49
+ By default emotion and frustration rows are one per (trace, family)
50
+ detection, and hallucination rows are one per scored message, so their
51
+ `pagination.total` is NOT the dashboard's trace count. Every list response
52
+ says which counting it uses in `counting` (`per_detection`, `per_message` or
53
+ `per_trace`), and the agent summary repeats it.
54
+
55
+ `--group-by=trace` reads the dashboard Signals tab's own list: one row per
56
+ trace in `traces[]`, the dashboard's filters and sort, and a total that
57
+ counts traces exactly as the dashboard does. Any filter below implies it.
58
+
59
+ ```bash
60
+ moda detections list --family=emotion --group-by=trace # emotion tab, per trace
61
+ moda detections list --family=frustration --trajectory=building # implies --group-by=trace
62
+ moda detections list --family=emotion:sadness --elicitor=bot --status=detected
63
+ moda detections list --family=emotion --signal=sarcasm,anger --sort=risk_score --order=desc
64
+ moda detections list --family=hallucination --rule=<rule_id> --status=all # rule ids: summary.rule_breakdown
65
+ moda detections list --family=hallucination --source=judge --sort=last_detected_at
66
+ moda detections list --family=laziness --status=strong --sort=strong_count # laziness is always per trace
67
+ ```
68
+
69
+ | family | flags (values) |
70
+ |---|---|
71
+ | emotion, frustration | `--search` (trace ID or cause), `--status=all\|detected`, `--elicitor=bot\|external\|self\|ambiguous`, `--trajectory=none\|building\|peak\|resolved\|sustained`, `--signal=<s>[,<s>]`, `--sort=score\|risk_score\|detected_at\|message_count`, `--order=asc\|desc` |
72
+ | hallucination | `--search` (trace ID), `--status=contradicted\|all`, `--rule=<rule_id>`, `--source=rule\|classifier\|gpu\|judge\|human`, `--sort=contradicted_count\|verified_count\|last_detected_at`, `--order` |
73
+ | laziness | `--search` (trace ID), `--status=all\|strong`, `--sort=detections_count\|strong_count\|last_detected_at`, `--order` |
74
+
75
+ The per-trace list has no user scope and no single-trace read: `--user-id`,
76
+ `--conversation-id`, `--include-window` (and `--kind` for hallucinations) are
77
+ rejected with it; drop the trace filters to use them. `summary` in a per-trace
78
+ response covers the whole window and ignores the list filters (except
79
+ hallucination `--rule`, which scopes the summary too, as on the dashboard).
80
+
81
+ ### 5b. Detector switched off, or trace not processed
82
+
83
+ An empty detection list is not proof a trace is clean:
84
+
85
+ - **Detector off.** `moda overview` lists every detector under `detectors`
86
+ (`enabled: true|false|null`, the `setting` it reads). The emotion stage
87
+ (every emotion family, frustration included) reads `signals.frustration`;
88
+ custom signals read `signals.custom_signals`; laziness, hallucination and
89
+ tool failures have no tenant switch. `detections list --family=emotion|frustration`
90
+ and `--family=custom_signal` carry the same state in `processing` and warn
91
+ when it is off.
92
+ - **Not processed yet.** `traces list` rows carry `processing_status`
93
+ (`pending` until the pipeline completes the trace, then `complete`),
94
+ `error_message`, `indexed_at` and `membership_score` (use-case confidence
95
+ for `cluster_id`), the same values as the dashboard trace list.
96
+ `traces get` (including `--all`) carries them in `trace_state`. Both warn on
97
+ pending or errored traces: a pending trace may already have some detections,
98
+ but its detections may be incomplete.
99
+
47
100
  ### 6. Tool failure investigation
48
101
 
49
102
  ```bash
@@ -77,3 +130,43 @@ Examples default to `--limit=5` (max 20). Example text is returned whole; if
77
130
  the agent envelope goes over its byte limit, whole trailing examples are
78
131
  dropped and `truncation.data.full_output_path` holds every example. Agent output lists the 20 most frequent
79
132
  `subtypes` (`subtypes_total` has the full count); `--json` lists all.
133
+ `next_commands` include `moda tools get <tool_name>` for the tool's call
134
+ count, success rate and schema.
135
+
136
+ ### 7. Tool catalog: calls, success rate and schema
137
+
138
+ `moda detections tools` lists failing tools only. For the call denominator of
139
+ every tool, healthy ones included, and for what a tool takes as input, use the
140
+ Tool catalog (the same figures as the dashboard Tool catalog page):
141
+
142
+ ```bash
143
+ moda tools list # every tool, most called first
144
+ moda tools list --sort=failure_rate --limit=10 # calls, failed calls, success rate
145
+ moda tools list --search=calendar --direction=write
146
+ moda tools get <tool_name> # stats, schema, usage, failure categories
147
+ moda tools get <tool_name> --days-back=30 --full # observed values and inputs uncut
148
+ ```
149
+
150
+ `tools list` pages with `--limit` (1-200, default 25) and `--offset`; when
151
+ `pagination.has_more` is true, `next_commands` holds the next page. Sorts are
152
+ `calls`, `failure_rate`, `failures`, `traces`, `last_seen` (all descending).
153
+
154
+ `tools get` returns `stats`, `definition.registered` (the description and
155
+ schema pushed with `moda registry push` or added in the dashboard, else `null`),
156
+ `definition.observed_fields` (keys seen in recorded call inputs, with types and
157
+ common values), `usage` (calls and failed calls per day, or per hour under 7
158
+ days), `tool_classes`, `effect_profile`, `failure_categories` and
159
+ `recent_calls`. Each failure category carries `latest_failure`, a
160
+ `context_command` that opens it, and an `examples_command`
161
+ (`moda detections tools <tool_name> --subtype=<category>`). Agent output keeps
162
+ 20 observed fields with 3 common values each and 5 recent calls, and cuts
163
+ inputs and sample errors at 200 characters (`*_total` fields give the full
164
+ counts); `--full` keeps everything. The registered schema is never cut. A tool with no calls in the window is
165
+ `not_found`.
166
+
167
+ Two failure counts, from two sources: `calls`, `failed_calls` and
168
+ `success_rate_pct` count recorded tool receipts (what the catalog shows);
169
+ `stats.failure_detections` and `failure_categories` count classified tool
170
+ failures, the same rows as `moda detections tools`. A call can succeed on its
171
+ receipt and still be classified as a failure (wrong content, a policy block),
172
+ so the second count can be higher. `metric_note` in each response says the same.