@moda-ai/cli 1.55.39 → 1.55.40

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 (37) hide show
  1. package/dist/{agent-bhe95ae8.js → agent-ck6y31n2.js} +8 -8
  2. package/dist/{cli-qzag917n.js → cli-0xc5htv7.js} +1 -1
  3. package/dist/{cli-39617gab.js → cli-1z1sx8dg.js} +3 -3
  4. package/dist/{cli-jmbt1hf9.js → cli-4tg0hkbz.js} +8 -8
  5. package/dist/{cli-4hkesrkq.js → cli-77ekrx7d.js} +1 -1
  6. package/dist/{cli-6gtgm2gx.js → cli-7bn406mt.js} +4 -4
  7. package/dist/{cli-msgp78ag.js → cli-a8nxbtpk.js} +5 -5
  8. package/dist/{cli-c7vj8tq1.js → cli-azage7s0.js} +5 -5
  9. package/dist/{cli-2h2nvq6w.js → cli-daqkdnm1.js} +1 -1
  10. package/dist/{cli-k9se46y4.js → cli-f1jfrqgf.js} +21 -4
  11. package/dist/{cli-1vqq24qh.js → cli-gt3yq1y5.js} +2 -2
  12. package/dist/{cli-ptm7pwqg.js → cli-pmzh2qjy.js} +1 -1
  13. package/dist/{cli-wr6f0kyw.js → cli-t0pb7qbs.js} +1 -0
  14. package/dist/{cli-jkza0bj6.js → cli-xddtv3yn.js} +1 -1
  15. package/dist/{cli-as4c1xwm.js → cli-ypqwcf9n.js} +5 -5
  16. package/dist/cli.js +313 -26
  17. package/dist/{doctor-3v20hc26.js → doctor-p8sp6cbk.js} +7 -7
  18. package/dist/{fix-s3zkjt69.js → fix-0r974yge.js} +4 -4
  19. package/dist/{harness-n4569wbm.js → harness-72ejenza.js} +5 -5
  20. package/dist/{harness-github-actions-mcy21e4d.js → harness-github-actions-2qc4gg2w.js} +5 -5
  21. package/dist/{index-2qm3h7v2.js → index-w7v472w4.js} +11 -11
  22. package/dist/{production-intelligence-z2cad1hv.js → production-intelligence-hs2sm8t5.js} +3 -3
  23. package/dist/{profile-commands-7ck1tqfv.js → profile-commands-se9947c1.js} +3 -3
  24. package/dist/{prompt-attribution-dm50am6e.js → prompt-attribution-3987hhqz.js} +5 -5
  25. package/dist/prompt-source-mcp.js +5 -5
  26. package/dist/{prompts-ab-9e0dsmce.js → prompts-ab-gmd10n5d.js} +7 -7
  27. package/dist/{prompts-propose-91qrjpd0.js → prompts-propose-q626zmm4.js} +7 -7
  28. package/dist/{prompts-p9hhxx0c.js → prompts-ysm9ra72.js} +5 -5
  29. package/dist/{provision-x4wkyw60.js → provision-cya5rpxa.js} +5 -5
  30. package/dist/{registry-nq8qsqtv.js → registry-7xz09ry0.js} +3 -3
  31. package/dist/{skills-rk2pmwx8.js → skills-x6yszxxn.js} +5 -5
  32. package/dist/{sync-xxbfjcz5.js → sync-trjzvam9.js} +7 -7
  33. package/package.json +1 -1
  34. package/skills/integration/index.json +2 -2
  35. package/skills/moda-cli/SKILL.md +6 -2
  36. package/skills/moda-cli/references/commands.md +1 -0
  37. package/skills/moda-cli/references/detections.md +29 -0
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  buildDoctorReport
3
- } from "./cli-msgp78ag.js";
3
+ } from "./cli-a8nxbtpk.js";
4
4
  import {
5
5
  selectTenantAndCreateKey
6
- } from "./cli-39617gab.js";
7
- import"./cli-4hkesrkq.js";
6
+ } from "./cli-1z1sx8dg.js";
7
+ import"./cli-77ekrx7d.js";
8
8
  import {
9
9
  ConnectCodeError,
10
10
  connectWithCode,
11
11
  loadAuthSession,
12
12
  loadToken,
13
13
  login
14
- } from "./cli-ptm7pwqg.js";
14
+ } from "./cli-pmzh2qjy.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-6gtgm2gx.js";
23
+ } from "./cli-7bn406mt.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-jmbt1hf9.js";
35
+ } from "./cli-4tg0hkbz.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-c7vj8tq1.js";
49
+ } from "./cli-azage7s0.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-jkza0bj6.js";
66
- import"./cli-k9se46y4.js";
67
- import"./cli-qzag917n.js";
65
+ } from "./cli-xddtv3yn.js";
66
+ import"./cli-f1jfrqgf.js";
67
+ import"./cli-0xc5htv7.js";
68
68
  import {
69
69
  VERSION,
70
70
  recordApiRequest,
71
71
  resolveIngestUrl,
72
72
  resolveModaBaseUrl,
73
73
  shellArg
74
- } from "./cli-wr6f0kyw.js";
74
+ } from "./cli-t0pb7qbs.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-1vqq24qh.js";
9
+ } from "./cli-gt3yq1y5.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-qzag917n.js";
19
+ } from "./cli-0xc5htv7.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-wr6f0kyw.js";
29
+ } from "./cli-t0pb7qbs.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-4hkesrkq.js";
5
+ } from "./cli-77ekrx7d.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-ptm7pwqg.js";
13
+ } from "./cli-pmzh2qjy.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-wr6f0kyw.js";
38
+ } from "./cli-t0pb7qbs.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-c7vj8tq1.js";
4
+ } from "./cli-azage7s0.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-jkza0bj6.js";
12
- import"./cli-k9se46y4.js";
13
- import"./cli-qzag917n.js";
14
- import"./cli-wr6f0kyw.js";
11
+ import"./cli-xddtv3yn.js";
12
+ import"./cli-f1jfrqgf.js";
13
+ import"./cli-0xc5htv7.js";
14
+ import"./cli-t0pb7qbs.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-c7vj8tq1.js";
6
+ } from "./cli-azage7s0.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-jkza0bj6.js";
15
- import"./cli-k9se46y4.js";
16
- import"./cli-qzag917n.js";
17
- import"./cli-wr6f0kyw.js";
14
+ import"./cli-xddtv3yn.js";
15
+ import"./cli-f1jfrqgf.js";
16
+ import"./cli-0xc5htv7.js";
17
+ import"./cli-t0pb7qbs.js";
18
18
  import"./cli-k4tqwah4.js";
19
19
  import"./cli-9kfxkxmk.js";
20
20
  import"./cli-ns5fcnkz.js";
@@ -23,14 +23,14 @@ import {
23
23
  runPromptAb,
24
24
  selectProblemCases,
25
25
  waitLabel
26
- } from "./cli-as4c1xwm.js";
27
- import"./cli-jmbt1hf9.js";
28
- import"./cli-2h2nvq6w.js";
26
+ } from "./cli-ypqwcf9n.js";
27
+ import"./cli-4tg0hkbz.js";
28
+ import"./cli-daqkdnm1.js";
29
29
  import"./cli-mm48br00.js";
30
- import"./cli-jkza0bj6.js";
31
- import"./cli-k9se46y4.js";
32
- import"./cli-qzag917n.js";
33
- import"./cli-wr6f0kyw.js";
30
+ import"./cli-xddtv3yn.js";
31
+ import"./cli-f1jfrqgf.js";
32
+ import"./cli-0xc5htv7.js";
33
+ import"./cli-t0pb7qbs.js";
34
34
  import"./cli-k4tqwah4.js";
35
35
  import"./cli-9kfxkxmk.js";
36
36
  import"./cli-ns5fcnkz.js";
@@ -7,20 +7,20 @@ import {
7
7
  formatVerdict,
8
8
  rerunWithYes,
9
9
  resolvePromptArmSpec
10
- } from "./cli-as4c1xwm.js";
11
- import"./cli-jmbt1hf9.js";
12
- import"./cli-2h2nvq6w.js";
10
+ } from "./cli-ypqwcf9n.js";
11
+ import"./cli-4tg0hkbz.js";
12
+ import"./cli-daqkdnm1.js";
13
13
  import"./cli-mm48br00.js";
14
- import"./cli-jkza0bj6.js";
15
- import"./cli-k9se46y4.js";
14
+ import"./cli-xddtv3yn.js";
15
+ import"./cli-f1jfrqgf.js";
16
16
  import {
17
17
  callControlAPI
18
- } from "./cli-qzag917n.js";
18
+ } from "./cli-0xc5htv7.js";
19
19
  import {
20
20
  resolveApiTenantId,
21
21
  shellArg,
22
22
  validateConfig
23
- } from "./cli-wr6f0kyw.js";
23
+ } from "./cli-t0pb7qbs.js";
24
24
  import {
25
25
  CliInputError
26
26
  } from "./cli-k4tqwah4.js";
@@ -11,14 +11,14 @@ import {
11
11
  runPromptSync,
12
12
  runPromptsCommand,
13
13
  writePromptSyncProgress
14
- } from "./cli-jmbt1hf9.js";
14
+ } from "./cli-4tg0hkbz.js";
15
15
  import {
16
16
  promptSourceHashPayload
17
17
  } from "./cli-mm48br00.js";
18
- import"./cli-jkza0bj6.js";
19
- import"./cli-k9se46y4.js";
20
- import"./cli-qzag917n.js";
21
- import"./cli-wr6f0kyw.js";
18
+ import"./cli-xddtv3yn.js";
19
+ import"./cli-f1jfrqgf.js";
20
+ import"./cli-0xc5htv7.js";
21
+ import"./cli-t0pb7qbs.js";
22
22
  import"./cli-k4tqwah4.js";
23
23
  import"./cli-9kfxkxmk.js";
24
24
  import"./cli-ns5fcnkz.js";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  selectTenantAndCreateKey
3
- } from "./cli-39617gab.js";
4
- import"./cli-4hkesrkq.js";
3
+ } from "./cli-1z1sx8dg.js";
4
+ import"./cli-77ekrx7d.js";
5
5
  import {
6
6
  loadAuthSession
7
- } from "./cli-ptm7pwqg.js";
7
+ } from "./cli-pmzh2qjy.js";
8
8
  import {
9
9
  stringOption
10
- } from "./cli-jkza0bj6.js";
10
+ } from "./cli-xddtv3yn.js";
11
11
  import {
12
12
  resolveIngestUrl,
13
13
  resolveModaBaseUrl
14
- } from "./cli-wr6f0kyw.js";
14
+ } from "./cli-t0pb7qbs.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-k9se46y4.js";
3
+ } from "./cli-f1jfrqgf.js";
4
4
  import {
5
5
  callControlAPI
6
- } from "./cli-qzag917n.js";
6
+ } from "./cli-0xc5htv7.js";
7
7
  import {
8
8
  explicitOutputMode,
9
9
  resolveApiKey
10
- } from "./cli-wr6f0kyw.js";
10
+ } from "./cli-t0pb7qbs.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-6gtgm2gx.js";
6
+ } from "./cli-7bn406mt.js";
7
7
  import"./cli-qm5b1vck.js";
8
8
  import"./cli-rjav0vj1.js";
9
9
  import"./cli-hcwdz9sd.js";
10
- import"./cli-jkza0bj6.js";
11
- import"./cli-k9se46y4.js";
12
- import"./cli-qzag917n.js";
13
- import"./cli-wr6f0kyw.js";
10
+ import"./cli-xddtv3yn.js";
11
+ import"./cli-f1jfrqgf.js";
12
+ import"./cli-0xc5htv7.js";
13
+ import"./cli-t0pb7qbs.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-6gtgm2gx.js";
3
+ } from "./cli-7bn406mt.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-jmbt1hf9.js";
9
+ } from "./cli-4tg0hkbz.js";
10
10
  import"./cli-mm48br00.js";
11
11
  import {
12
12
  runHarnessCommand
13
- } from "./cli-c7vj8tq1.js";
13
+ } from "./cli-azage7s0.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-jkza0bj6.js";
19
- import"./cli-k9se46y4.js";
20
- import"./cli-qzag917n.js";
21
- import"./cli-wr6f0kyw.js";
18
+ import"./cli-xddtv3yn.js";
19
+ import"./cli-f1jfrqgf.js";
20
+ import"./cli-0xc5htv7.js";
21
+ import"./cli-t0pb7qbs.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.39",
3
+ "version": "1.55.40",
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-18T01:16:14.799Z",
4
- "cli_version": "1.55.39",
3
+ "bundled_at": "2026-10-18T01:43:16.412Z",
4
+ "cli_version": "1.55.40",
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.5
3
+ version: 3.0.6
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
 
@@ -67,6 +67,8 @@ Details: `references/output-protocol.md`.
67
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 |
68
68
  | Counts that match the dashboard, dashboard filters | `moda detections list --family=<f> --group-by=trace` (`--trajectory`, `--elicitor`, `--signal`, `--rule`, `--sort`, ...) | `references/detections.md` 5a |
69
69
  | Is an empty result really clean? | `moda overview` → `detectors` (is the detector on?); `traces` rows → `processing_status` (pending = not fully processed; detections may be incomplete) | `references/detections.md` 5b |
70
+ | Everything flagged on one trace | `moda traces findings <id>` (every detector family plus its Problems, no time window; up to 25 ids, or `--ids-from=-`) | `moda traces get <id> --msg-index=<n> --window=2` from its `next_commands` |
71
+ | Cross-signal question over many traces (e.g. contradictions and frustration) | `moda traces findings <id1> <id2> ...` (all families per trace, 25 per call), or one family over up to 50 traces in one request: `moda detections list --family=hallucination --conversation-ids=<id1>,<id2>,...` (or `--ids-from=-`) | Never loop `--conversation-id` one trace at a time |
70
72
  | Read one whole trace | `moda traces get <id> --all` (pages of up to 500 messages) | `moda traces spans <id>` for raw spans |
71
73
  | Read several traces or turns | `moda traces get <id1>@<msg_index> <id2>@<msg_index> ...` (up to 25; or one per line via `--ids-from=-`) | Same for `moda traces spans <id1> <id2> ...` |
72
74
  | One user's experience | `moda users`, `moda user <user_id>` | `moda traces search "<words>" --user-id=<id>` |
@@ -78,7 +80,9 @@ Details: `references/output-protocol.md`.
78
80
  | Prompts, replays, registry push | Only on explicit request | `references/prompts.md`, `references/replays-and-registry.md` |
79
81
 
80
82
  Time windows differ by command: `--days-back=N` (1-90) on overview,
81
- investigate, problems, and detection commands; `--time-range=1h|24h|3d|7d|30d|90d|all`
83
+ investigate, problems, and detection commands (`detections list
84
+ --conversation-id` is windowed too, so an older trace reads clean there; use
85
+ `moda traces findings`, which has no window); `--time-range=1h|24h|3d|7d|30d|90d|all`
82
86
  on search, traces, and clusters. The other spelling works when it names the
83
87
  same span (`--days-back=7` is `--time-range=7d`); anything else fails and
84
88
  names the closest values. `moda <noun> <verb> --help` shows which.
@@ -44,6 +44,7 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
44
44
  | `moda signal <signal_id>` | One custom signal; `--detections` pages recent hits (`--days-back` 1–90, `--limit` 1–20, `--offset`) |
45
45
  | `moda detections list --family=custom_signal --conversation-id=<conversation_id>` | Custom signal hits on one trace |
46
46
  | `moda review custom-signal <signal_id>` | Write: `--conversation-id`, `--verdict=correct\|false_positive\|clear`, optional `--note`, `--msg-index`/`--msg-dedup-token` |
47
+ | `moda traces findings <conversation_id>...` | Everything flagged on a trace, no time window: per family a `state` (`found`/`none`/`not_run`/`unknown`), count and top rows with `msg_index`, plus its Problems; up to 25 ids or `--ids-from`; `--limit` rows per family |
47
48
  | `moda traces state <conversation_id>` | Agent memory: slots/threads/events; `--summary-only`; `--snapshot --msg-index=N` (state at a turn); `--replay --message-count=N` (state over time) |
48
49
  | `moda failures` | Tool failures only, ranked (no frustrations or Problems) |
49
50
  | `moda tail` | Live tail: one JSON line per new trace/detection (`--signal=traces\|emotions\|all`, legacy alias `--signal=conversations`, `--interval=N`, `--once`, `--max-events=N`). **Emotions caveat:** `/emotions` is ranked by score with no time ordering or cursor, so the tail follows the *highest-scoring* detections rather than everything; each poll emits a `tail_coverage` line with `scanned`/`total`/`coverage_pct`/`complete`. Pass `--full-scan` for a complete window scan (many more requests, capped by the API's offset ceiling of 10000). |
@@ -10,8 +10,37 @@ moda detections list --family=frustration --days-back=14 --limit=20
10
10
  moda detections list --family=frustration --include-window --window=1 --limit=5 # agent output omits windows unless asked
11
11
  moda detections list --family=emotion:frustration --user-id=<id> # one end user
12
12
  moda detections list --family=emotion --conversation-id=<id> # every family, one trace
13
+ moda detections list --family=frustration --conversation-ids=<id1>,<id2>,<id3> # several traces, one request
14
+ moda detections list --family=hallucination --ids-from=ids.txt --days-back=30 # ids one per line (or - for stdin)
13
15
  ```
14
16
 
17
+ Several traces: `--conversation-ids=a,b,c` (or a JSON array, or `--ids-from=-|<file>`,
18
+ one id per line) takes up to 50 trace ids on `emotion`, `frustration`, `laziness`
19
+ and `hallucination`, and the server filters them in one request. Every figure
20
+ (summary, list, total) then covers just those traces. `--days-back` still
21
+ applies. For `custom_signal` and `tool_failure` per trace, or for every family
22
+ of a trace with no window, use `moda traces findings <id> ...` (below).
23
+
24
+ ### Everything flagged on one trace
25
+
26
+ ```bash
27
+ moda traces findings <conversation_id> # every family + its Problems, no time window
28
+ moda traces findings <id1> <id2> <id3> # up to 25 ids, one envelope (or --ids-from=-|<file>)
29
+ moda traces findings <conversation_id> --limit=10 # more rows per family (default 3; counts cover all)
30
+ ```
31
+
32
+ One read per trace returns emotion, laziness, hallucination (contradicted claims),
33
+ tool failure (with its category) and custom signal detections, each with the
34
+ `msg_index` it anchors to, plus the Problems the trace is evidence for (id, title,
35
+ attribution count, `in_book`). There is no time window, so a trace older than
36
+ `--days-back` does not read clean. Each family has a `state`:
37
+ `found`, `none` (its detector ran and found nothing), `not_run` (detector off for
38
+ the workspace, or the trace not processed yet) or `unknown` (nothing found, and the
39
+ detector records nothing for a clean trace, as laziness does). Only `none` means
40
+ clean. `next_commands` open each anchor with
41
+ `moda traces get <id> --msg-index=<n> --window=2`. `--json` returns the full
42
+ response (up to 50 rows per family).
43
+
15
44
  In agent output, `frustrations` and `emotions` rows leave out the embedded
16
45
  conversation window (most of each row) unless you pass `--include-window`;
17
46
  each row keeps `anchor` and a `context_command` to read the turns around it.