@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.
- package/dist/{agent-g07tg64w.js → agent-9r58v0bc.js} +8 -8
- package/dist/{cli-e23g9ywa.js → cli-3n040fp2.js} +1 -1
- package/dist/{cli-k007ztbs.js → cli-93926afn.js} +4 -4
- package/dist/{cli-97jew729.js → cli-9g5kzsg6.js} +1 -1
- package/dist/{cli-dr6x0zv7.js → cli-b7nyw498.js} +1 -1
- package/dist/{cli-6j8h2ave.js → cli-dmnayt2r.js} +8 -8
- package/dist/{cli-fwpqghgc.js → cli-n311b8g0.js} +112 -2
- package/dist/{cli-602yx84w.js → cli-nh23q6ay.js} +5 -5
- package/dist/{cli-99p2jh28.js → cli-rcjhfts4.js} +24 -10
- package/dist/{cli-9bgnvth2.js → cli-sk1p71wr.js} +1 -1
- package/dist/{cli-x9cwat4a.js → cli-skvvwp2q.js} +5 -5
- package/dist/{cli-9bgk5jeh.js → cli-tdcx8yz9.js} +3 -3
- package/dist/{cli-n2hng3gv.js → cli-xheg54qc.js} +80 -7
- package/dist/{cli-yz8xcpyk.js → cli-xk630wjq.js} +1 -1
- package/dist/{cli-5fstvkva.js → cli-xtyszvq1.js} +5 -5
- package/dist/cli.js +319 -39
- package/dist/{doctor-tvre7zvk.js → doctor-xq5bjvpq.js} +7 -7
- package/dist/{fix-w5z02wt4.js → fix-kvszavm1.js} +4 -4
- package/dist/{harness-github-actions-6gdrpn4m.js → harness-github-actions-drbkcb8d.js} +5 -5
- package/dist/{harness-6vwehf47.js → harness-qatnwxrz.js} +5 -5
- package/dist/{index-75vcntpe.js → index-y5jnz2t2.js} +11 -11
- package/dist/{production-intelligence-7wb1djy2.js → production-intelligence-j55vaw6t.js} +61 -4
- package/dist/{profile-commands-h8evz9x0.js → profile-commands-skdxe17v.js} +3 -3
- package/dist/{prompt-attribution-t0eq8gn8.js → prompt-attribution-zq38actx.js} +5 -5
- package/dist/prompt-source-mcp.js +5 -5
- package/dist/{prompts-ab-t7xptf0c.js → prompts-ab-yd2dawe3.js} +7 -7
- package/dist/{prompts-b8qx3mrv.js → prompts-cwqn8a57.js} +5 -5
- package/dist/{prompts-propose-8feadk2t.js → prompts-propose-11dj9ked.js} +7 -7
- package/dist/{provision-y5bdbh4y.js → provision-ghca9d54.js} +5 -5
- package/dist/{registry-ctnn8e26.js → registry-76sngjw6.js} +3 -3
- package/dist/{skills-96z55tj4.js → skills-btn9r48v.js} +5 -5
- package/dist/{sync-drz7req6.js → sync-ye7nxeen.js} +7 -7
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
- package/skills/moda-cli/SKILL.md +5 -2
- package/skills/moda-cli/references/commands.md +3 -0
- package/skills/moda-cli/references/dashboard-parity.md +4 -0
- 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.
|