@moda-ai/cli 1.55.42 → 1.55.43
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-86hghww1.js → agent-x1gwrrvd.js} +6 -5
- package/dist/{cli-xddtv3yn.js → cli-5fhqfx04.js} +1 -39
- package/dist/{cli-gt3yq1y5.js → cli-5y9tj6cb.js} +183 -1
- package/dist/{cli-4sy4tytm.js → cli-9a0a3v13.js} +17 -3
- package/dist/cli-e0kbye4s.js +39 -0
- package/dist/{cli-hjm9151g.js → cli-fpd1pfvt.js} +2 -2
- package/dist/{cli-srwzar82.js → cli-h62j4jn7.js} +2 -2
- package/dist/{cli-he8csgsr.js → cli-k5drmy8r.js} +7 -7
- package/dist/{cli-vwpbspr5.js → cli-s1w5phms.js} +3 -3
- package/dist/{cli-mxfyq5nq.js → cli-stfpr2ct.js} +2 -2
- package/dist/cli.js +65 -28
- package/dist/{doctor-c05njdv8.js → doctor-wrgajgev.js} +5 -4
- package/dist/{fix-aghp304m.js → fix-7aajsdbf.js} +1 -1
- package/dist/{harness-vabp33ak.js → harness-1rn1hqzz.js} +4 -3
- package/dist/{harness-github-actions-112503xs.js → harness-github-actions-m95qvgbs.js} +4 -3
- package/dist/{index-dtxvvcq2.js → index-svfzq5rb.js} +7 -6
- package/dist/{production-intelligence-e5vsc6cw.js → production-intelligence-7jvfdz6b.js} +22 -5
- package/dist/{prompt-attribution-pbns1ya3.js → prompt-attribution-hc6mcvee.js} +4 -3
- package/dist/prompt-source-mcp.js +4 -3
- package/dist/{prompts-ab-f5qrvpkt.js → prompts-ab-ws66335h.js} +5 -4
- package/dist/{prompts-propose-jg2j41wx.js → prompts-propose-a9m0p9nr.js} +5 -4
- package/dist/{prompts-qppk0mhp.js → prompts-xe5bgbx8.js} +4 -3
- package/dist/{provision-cya5rpxa.js → provision-a9kkfvp7.js} +2 -1
- package/dist/{registry-8a1940sr.js → registry-j2dsfh6v.js} +1 -1
- package/dist/{skills-sh93b156.js → skills-vveagdwe.js} +4 -3
- package/dist/{sync-0pp1c8hs.js → sync-yy3fgnxe.js} +6 -5
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
- package/skills/moda-cli/SKILL.md +3 -1
- package/skills/moda-cli/references/commands.md +4 -2
- package/skills/moda-cli/references/dashboard-parity.md +3 -0
- package/skills/moda-cli/references/detections.md +20 -0
- package/skills/moda-cli/references/production-intelligence.md +48 -0
|
@@ -15,7 +15,7 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
|
|
|
15
15
|
| `moda auth status` | Both credentials; exit `0` if either is usable, `4` if neither (expected, not an error) |
|
|
16
16
|
| `moda auth token` | Print the raw bearer token for `$(moda auth token)` composition |
|
|
17
17
|
| `moda traces search "<query>"` | **Message-grain semantic/keyword/hybrid search (incl. tool calls); primary content-discovery path** |
|
|
18
|
-
| `moda overview` | Dashboard KPIs, top clusters, recent activity |
|
|
18
|
+
| `moda overview` | Dashboard KPIs, top clusters, recent activity. `--compare` adds `trends`: overview KPIs, per-unit rates, Problems and each detector family against the previous window of equal length; `--series` adds `[bucket, value]` arrays; `--since=<ISO> [--until=<ISO>]` sets the window (before/after a deploy); `--agent-name=<sub-agent>`; `--unit=conversation\|segment\|turn` |
|
|
19
19
|
| `moda ask "<question>"` | Natural-language production/harness answer with evidence (exit `3` = degraded local fallback) |
|
|
20
20
|
| `moda investigate` | Rank production issues (tool failures, frustrations, top Problems) with evidence + next commands |
|
|
21
21
|
| `moda clusters` | Browse topic cluster hierarchy; `--search="q"` finds clusters by meaning, `--node-id=ID` resolves a deep link |
|
|
@@ -25,7 +25,7 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
|
|
|
25
25
|
| `moda detections list --family=frustration` | User frustration detections with evidence (the frustration family of `emotions`, legacy field names) |
|
|
26
26
|
| `moda detections list --family=emotion` | Multi-family emotion detections: frustration, disapproval, sadness, confusion, anxiety, trust, positive (`--family=F`, `--user-id`, `--conversation-id`, limit 1–20) |
|
|
27
27
|
| `moda detections list --family=hallucination` | Grounding detections: contradicted/verified outputs, rule breakdown (`--kind=contradicted\|verified`, `--conversation-id=ID`) |
|
|
28
|
-
| `moda detections tools` | Tool failure overview |
|
|
28
|
+
| `moda detections tools` | Tool failure overview (`--compare` adds `summary.compare`) |
|
|
29
29
|
| `moda detections tools <tool_name>` | Per-tool failure breakdown + examples |
|
|
30
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
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`) |
|
|
@@ -35,6 +35,8 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
|
|
|
35
35
|
| `moda review <kind> <target>` | Write: kinds `problem\|problem-detection\|quote\|tool\|laziness\|hallucination\|custom-signal`; `--reason` optional; problem-detection needs `--conversation-id` + `--attribution-id`; quote needs `--family`, `--turn`, `--quote`; tool needs `--tool` plus `--tool-use-id` or `--msg-index`; custom-signal needs `--conversation-id`; `--verdict=clear` removes a mark (not for problem) |
|
|
36
36
|
| `moda reviews list [conversation_id]` | Current false-positive marks: all (`--kind=quote\|tool\|laziness\|hallucination\|custom-signal`, `--all` to include removed, `--limit`) or one trace with its problem detection reviews. Problem dismissals are read with `moda problems get <problem_id> --feedback`, detection reviews with `moda reviews list <conversation_id> --kind=problem-detection` |
|
|
37
37
|
| `moda detections list --family=laziness` | Laziness detections per trace (`--days-back`, `--limit` 1-50, `--conversation-id`, `--family`) |
|
|
38
|
+
| `moda detections list --family=<f> --compare` | Adds `summary.compare`: the family's dashboard KPI tiles and per-trace rate for the list's `--days-back` window against the previous window of equal length (whole family; not with `--conversation-id`/`--user-id`) |
|
|
39
|
+
| `moda problems get <problem_id> --trend` | Incidents and users per day (`[date, value]`) and incidents/signals against the previous window of equal length (`--days-back`, default 30; no comparison above 45) |
|
|
38
40
|
| `moda detections list --family=<f> --group-by=trace` | The dashboard's per-trace list for emotion, frustration and hallucination: totals count traces. Dashboard filters imply it: emotion/frustration `--search --status --elicitor --trajectory --signal --sort --order`; hallucination `--search --status --rule --source --sort --order`; laziness (always per trace) `--search --status --sort --order`. See detections.md 5a |
|
|
39
41
|
| `moda problems linear <problem_id>` | The Problem's linked Linear issue (key, state, URL) or `link: null`; needs Linear connected (Integrations → Linear) |
|
|
40
42
|
| `moda problems link <problem_id>` | Write: file the Problem as a Linear issue (`--team-id`, `--title`, `--priority=0-4`), or link an existing one with `--issue=ENG-123\|URL` (exclusive with the others). Idempotent per Problem |
|
|
@@ -14,6 +14,9 @@ Writes listed here accept `--dry-run`: it validates the call, prints the exact r
|
|
|
14
14
|
| Traces list: Processed, Use case confidence, Indexed columns | `moda traces` rows: `processing_status`, `error_message`, `membership_score`, `indexed_at`; `moda traces get <id>`: `trace_state` |
|
|
15
15
|
| Signals tabs: per-trace list, filters, sort | `moda detections list --family=<f> --group-by=trace` plus `--trajectory --elicitor --signal --status --search --sort --order` (emotion), `--rule --source` (hallucination) |
|
|
16
16
|
| Settings: which detectors run | `moda overview` → `detectors` (read-only; switching one is dashboard-only) |
|
|
17
|
+
| Home / Analytics / Signals KPI cards: change against the previous period, sparklines, agent selector | `moda overview --compare [--series] [--since=<ISO> --until=<ISO>] [--agent-name=<sub-agent>] [--unit=turn]` |
|
|
18
|
+
| Detector tab KPI tiles with deltas | `moda detections list --family=<f> --compare` (`summary.compare`) |
|
|
19
|
+
| Problem history per day | `moda problems get <problem_id> --trend [--days-back=N]` |
|
|
17
20
|
| Users page / user profile | `moda users [--window --cohort --sort --order --health-status]`, `moda user <id>` (`--cohort` takes `builtin:<key>`, a saved cohort id, or a bare built-in key) |
|
|
18
21
|
| Cohort selector on Problems, Traces, Signals tabs, custom signals, Topics | `--cohort=builtin:<key>\|<saved id>` on `problems list`, `traces list`, `detections list` (emotion, frustration and hallucination read the per-trace list; laziness; custom_signal `--signal-id`), `detections tools`, `clusters` (`--time-range=all\|3d\|7d\|30d`, also with `--search`). Output says which cohort scoped it (summary line and `cohort` in the data). `traces search` has no cohort scope |
|
|
19
22
|
| Cohort builder: list, fields, preview, compare, save, edit | `moda cohorts list [--include-archived]`, `get <ref>`, `fields`, `preview --file=<definition.json>`, `compare <a> <b> [--days=7\|30\|90]`, `create --name --file [--dry-run]`, `update <cohort_id> [--name --file --note] [--dry-run]` (archiving is dashboard-only) |
|
|
@@ -126,6 +126,26 @@ An empty detection list is not proof a trace is clean:
|
|
|
126
126
|
pending or errored traces: a pending trace may already have some detections,
|
|
127
127
|
but its detections may be incomplete.
|
|
128
128
|
|
|
129
|
+
### 5c. Is a family getting worse? (`--compare`)
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
moda detections list --family=frustration --compare --days-back=7
|
|
133
|
+
moda detections list --family=laziness:stub_body --compare
|
|
134
|
+
moda detections tools --compare --days-back=14
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
`--compare` adds `summary.compare`, one more read (GET `/v1/data/trends`)
|
|
138
|
+
with the dashboard's KPI tiles for the family: `kpis` (for example emotion
|
|
139
|
+
analyzed traces, negative rate, negative detections, affected users and traces
|
|
140
|
+
per family) and `rate` (share of traces with a detection, the Signals rate
|
|
141
|
+
card; left out for `frustration` and a sub-family, since the card counts the
|
|
142
|
+
whole detector, and `notes` says so). Each figure is `{current, previous, delta, delta_pct, spike?}` for the
|
|
143
|
+
list's `--days-back` window against the window of equal length just before it.
|
|
144
|
+
It covers the whole family, so it rejects `--conversation-id` and `--user-id`;
|
|
145
|
+
other list filters do not narrow it. For a before/after-deploy window, or a
|
|
146
|
+
series per hour or day, use `moda overview --compare --since=<deploy time>`
|
|
147
|
+
and `--series` (see production-intelligence.md).
|
|
148
|
+
|
|
129
149
|
### 6. Tool failure investigation
|
|
130
150
|
|
|
131
151
|
```bash
|
|
@@ -12,6 +12,54 @@ moda overview --days-back=30
|
|
|
12
12
|
Returns total traces, trend, frustration rate, tool failure summary,
|
|
13
13
|
top clusters, recent activity.
|
|
14
14
|
|
|
15
|
+
#### Before/after and trends (`--compare`, `--series`)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
moda overview --compare # last 7 days against the 7 days before
|
|
19
|
+
moda overview --compare --since=2026-10-17T14:00:00Z # after a deploy against the same span before it
|
|
20
|
+
moda overview --compare --since=2026-10-10 --until=2026-10-12 # a fixed window against the one before it
|
|
21
|
+
moda overview --series --days-back=14 # adds [bucket, value] series (implies --compare)
|
|
22
|
+
moda overview --compare --agent-name=planner # one sub-agent (names in trends.agent.options)
|
|
23
|
+
moda overview --compare --unit=turn # rates per user turn (or segment) instead of per trace
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Adds `trends` (GET `/v1/data/trends`), read from the dashboard's own loaders.
|
|
27
|
+
The previous window is always the span of equal length just before the window,
|
|
28
|
+
as the dashboard defines it. So `--since=<deploy time>` (to now) compares after
|
|
29
|
+
the deploy with the same length of time before it. There is no separate
|
|
30
|
+
`--compare-to` flag: every dashboard loader computes "previous" this way.
|
|
31
|
+
`--days-back` and `--since` are exclusive; `--until` needs `--since`; a window
|
|
32
|
+
can be up to 90 days.
|
|
33
|
+
|
|
34
|
+
Each figure is `{current, previous, delta, delta_pct, spike?}`. `delta` is
|
|
35
|
+
current minus previous (percentage points for a `_pct` rate). `delta_pct` is the
|
|
36
|
+
relative change. `spike` is the dashboard's spike rule. Sections:
|
|
37
|
+
|
|
38
|
+
| Section | Dashboard source | Figures |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `overview` | Analytics overview | traces, messages, negative emotion rate (per analyzed trace), failed tool calls (per call), ungrounded claims (per scored message); `n` gives numerator and denominator |
|
|
41
|
+
| `problems` | Problems trend card | analysed traces, traces with any signal, signal rate (`--days-back` only) |
|
|
42
|
+
| `rates` | Signals overview rate cards | each detector's share of units with a detection (`--unit=conversation\|segment\|turn`) |
|
|
43
|
+
| `detectors` | Detector tab KPI tiles | emotion (analyzed, negative rate, detections, affected users, traces per family), tool_failure (failed traces, classified failures, failure rate, calls, users, tools), laziness, hallucination |
|
|
44
|
+
|
|
45
|
+
The same detector can show different rates in different sections because each
|
|
46
|
+
uses its own denominator (`rate_note` says which). `detectors.tool_failure.failure_rate_pct`
|
|
47
|
+
counts classified failures per call and is higher than `overview.tool_failure_rate_pct`
|
|
48
|
+
(failed call records per call).
|
|
49
|
+
|
|
50
|
+
`--series` adds `trends.series`: compact `[bucket, value]` arrays, per hour for
|
|
51
|
+
windows up to 2 days and per day above. Bucket keys are `YYYY-MM-DD` or
|
|
52
|
+
`YYYY-MM-DDTHH:00Z`.
|
|
53
|
+
|
|
54
|
+
`--agent-name` scopes the `overview` section only. The Problems, rates and
|
|
55
|
+
detector loaders have no sub-agent filter, so those sections are left out and
|
|
56
|
+
`trends.notes` says so.
|
|
57
|
+
|
|
58
|
+
The `overview` section is the slow part: on a large workspace a 30-day window
|
|
59
|
+
can take about 40 seconds, and the CLI waits up to 90. A figure whose read
|
|
60
|
+
failed is `null` with `unavailable: true` (never zero), and `trends.notes`
|
|
61
|
+
names it.
|
|
62
|
+
|
|
15
63
|
### 2b. Ask & investigate (production intelligence)
|
|
16
64
|
|
|
17
65
|
`moda ask` answers a natural-language production/harness question (a paid
|