@moda-ai/cli 1.55.22 → 1.55.24

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 (40) hide show
  1. package/dist/{agent-mj622k8s.js → agent-b4tdzy9q.js} +8 -9
  2. package/dist/{cli-9x9adrtj.js → cli-0wr3483h.js} +1 -1
  3. package/dist/{cli-a5c9te95.js → cli-7xc585hc.js} +5 -5
  4. package/dist/{cli-rqk6f6n6.js → cli-9btx12wp.js} +24 -5
  5. package/dist/cli-9hc5bg2r.js +61 -0
  6. package/dist/{cli-cehskjde.js → cli-dn91fb56.js} +13 -15
  7. package/dist/{cli-5ke3xe6y.js → cli-dve50x7p.js} +258 -28
  8. package/dist/{cli-569hj0bj.js → cli-qvg26twp.js} +5 -4
  9. package/dist/{cli-033n2mpb.js → cli-qycsmxev.js} +6 -9
  10. package/dist/{cli-0ef72tqx.js → cli-rt26sbz7.js} +14 -14
  11. package/dist/{cli-pc5cw7mx.js → cli-vg88mg20.js} +5 -5
  12. package/dist/{cli-wf7gfa1e.js → cli-y2ty9vtv.js} +8 -10
  13. package/dist/cli.js +1310 -346
  14. package/dist/{doctor-mx6jf435.js → doctor-3r19ry92.js} +8 -9
  15. package/dist/{fix-9fmy6p2x.js → fix-exvxzvtz.js} +6 -7
  16. package/dist/{harness-github-actions-c826bfxs.js → harness-github-actions-atc5bbkj.js} +5 -6
  17. package/dist/{harness-xvg6ws6x.js → harness-vzy7n7ea.js} +5 -6
  18. package/dist/{index-1wbjz3jc.js → index-e1pf1qz2.js} +17 -17
  19. package/dist/{production-intelligence-dbe9dmc5.js → production-intelligence-c8e0xw3n.js} +17 -16
  20. package/dist/{profile-commands-kmmd9y86.js → profile-commands-6e2dgv72.js} +7 -48
  21. package/dist/prompt-source-mcp.js +5 -6
  22. package/dist/{prompts-1tkhrxkq.js → prompts-cvzt994j.js} +6 -7
  23. package/dist/{provision-wzttap58.js → provision-q86phh4a.js} +5 -4
  24. package/dist/{registry-atqyb5fa.js → registry-s2vdsfw8.js} +3 -4
  25. package/dist/{skills-gejdvjak.js → skills-tadh1jss.js} +5 -6
  26. package/dist/{sync-57ercmh9.js → sync-g8wtecz1.js} +7 -8
  27. package/package.json +1 -1
  28. package/skills/integration/index.json +2 -2
  29. package/skills/moda-cli/SKILL.md +31 -29
  30. package/skills/moda-cli/references/commands.md +22 -22
  31. package/skills/moda-cli/references/dashboard-parity.md +4 -4
  32. package/skills/moda-cli/references/detections.md +10 -10
  33. package/skills/moda-cli/references/feedback.md +2 -2
  34. package/skills/moda-cli/references/output-protocol.md +2 -2
  35. package/skills/moda-cli/references/production-intelligence.md +10 -10
  36. package/skills/moda-cli/references/recipes.md +14 -14
  37. package/skills/moda-cli/references/search-and-traces.md +32 -32
  38. package/skills/moda-cli/references/signals-and-false-positives.md +29 -29
  39. package/skills/moda-cli/references/troubleshooting.md +4 -4
  40. package/dist/cli-7ea02wca.js +0 -30
@@ -7,23 +7,23 @@ Loaded on demand from the moda-cli skill.
7
7
  **Mark anything as a false positive with one command.** `--reason` (why the
8
8
  detection is wrong) is optional but recommended; marks are logged for Moda's review.
9
9
  A marked item disappears from every list and count (`moda problems`,
10
- `hallucinations`, `laziness`, `tool-failures`, problem evidence, the dashboard);
11
- `--undo` brings it back.
10
+ `detections list`, `detections tools`, problem evidence, the dashboard);
11
+ `--verdict=clear` brings it back.
12
12
 
13
13
  ```bash
14
- moda false-positive problem <problem_id> --reason="two unrelated tools" # dismiss: hidden at once
15
- moda false-positive problem-detection <problem_id> --conversation-id=<id> \
14
+ moda review problem <problem_id> --reason="two unrelated tools" # dismiss: hidden at once
15
+ moda review problem-detection <problem_id> --conversation-id=<id> \
16
16
  --attribution-id=<uuid> --reason="refund was approved" # one piece of evidence
17
- moda false-positive quote <conversation_id> --family=frustration --turn=3 \
17
+ moda review quote <conversation_id> --family=frustration --turn=3 \
18
18
  --quote="this is useless lol" --reason="user was joking" # one user quote
19
- moda false-positive tool <conversation_id> --tool=send_invoice \
19
+ moda review tool <conversation_id> --tool=send_invoice \
20
20
  --tool-use-id=<tool_use_id> --reason="retried upstream" # one failing tool call
21
- moda false-positive laziness <conversation_id> --reason="reload is expected"
22
- moda false-positive hallucination <conversation_id> --reason="price came from the tool result"
23
- moda false-positive custom-signal <signal_id> --conversation-id=<id> --reason="refund was approved"
24
- moda false-positive laziness <conversation_id> --undo # remove a mark (any kind but problem)
25
- moda false-positives # every current mark (--kind=tool, --all, --limit)
26
- moda false-positives <conversation_id> # marks + problem reviews on a trace
21
+ moda review laziness <conversation_id> --reason="reload is expected"
22
+ moda review hallucination <conversation_id> --reason="price came from the tool result"
23
+ moda review custom-signal <signal_id> --conversation-id=<id> --reason="refund was approved"
24
+ moda review laziness <conversation_id> --verdict=clear # remove a mark (any kind but problem)
25
+ moda reviews list # every current mark (--kind=tool, --all, --limit)
26
+ moda reviews list <conversation_id> # marks + problem reviews on a trace
27
27
  ```
28
28
 
29
29
  What each flag does downstream:
@@ -36,12 +36,12 @@ What each flag does downstream:
36
36
  | `quote`, `tool`, `laziness`, `hallucination` | Audit only: recorded for review, never fed back to the detectors |
37
37
 
38
38
  Find targets with the read commands: `--family`, `--turn` and `--quote` verbatim
39
- from a `user_quotes` entry in `moda emotions`; a failing call's `tool_use_id` (or `msg_index` when it has none) from
40
- `moda tool-failure-detail <tool_name>`;
41
- laziness traces from `moda laziness`; hallucination traces from
42
- `moda hallucinations`; custom-signal hits from `moda trace-signals` or
43
- `moda signal <id> --detections`; problem evidence ids from
44
- `moda problem <id> --evidence`.
39
+ from a `user_quotes` entry in `moda detections list --family=emotion`; a failing call's `tool_use_id` (or `msg_index` when it has none) from
40
+ `moda detections tools <tool_name>`;
41
+ laziness traces from `moda detections list --family=laziness`; hallucination traces from
42
+ `moda detections list --family=hallucination`; custom-signal hits from `moda detections list --family=custom_signal` or
43
+ `moda detections list --family=custom_signal --signal-id=<id>`; problem evidence ids from
44
+ `moda problems get <id> --evidence`.
45
45
 
46
46
  **Custom signals** are tenant-defined behaviors (pass/fail criteria) judged on
47
47
  every trace. Read them, then label hits so each signal has labelled examples:
@@ -49,9 +49,9 @@ every trace. Read them, then label hits so each signal has labelled examples:
49
49
  ```bash
50
50
  moda signals # every signal: criteria, status, 7-day judged/matched
51
51
  moda signal <signal_id> # one signal's summary
52
- moda signal <signal_id> --detections --days-back=30 # recent hits (limit 1–20, --offset to page)
53
- moda trace-signals <conversation_id> # signal hits on one trace
54
- moda signal-label <signal_id> --conversation-id=<id> --label=does_not_fit \
52
+ moda detections list --family=custom_signal --signal-id=<signal_id> --days-back=30 # recent hits (limit 1–20, --offset to page)
53
+ moda detections list --family=custom_signal --conversation-id=<conversation_id> # signal hits on one trace
54
+ moda review custom-signal <signal_id> --conversation-id=<id> --verdict=false_positive \
55
55
  --note="refund was approved" --msg-index=<anchor_msg_index>
56
56
  ```
57
57
 
@@ -62,18 +62,18 @@ message, and always give a `--note` when rejecting. Labels are throttled to 10
62
62
  per minute per API key and are never retried automatically.
63
63
 
64
64
  **Problem detections** (the dashboard's flag on problem evidence) are reviewed with
65
- `detection-review`. A `false_positive` drops the detection out of
66
- `moda problem <id> --evidence` and is fed back to the problem reader; `clear`
65
+ `moda review problem-detection`. A `false_positive` drops the detection out of
66
+ `moda problems get <id> --evidence` and is fed back to the problem reader; `clear`
67
67
  undoes an earlier review.
68
68
 
69
69
  ```bash
70
- moda detection-reviews <conversation_id> # problem detections on a trace + review state
71
- moda detection-review <problem_id> --conversation-id=<id> \
70
+ moda reviews list <conversation_id> --kind=problem-detection # problem detections on a trace + review state
71
+ moda review problem-detection <problem_id> --conversation-id=<id> \
72
72
  --attribution-id=<uuid> --verdict=false_positive --note="retry was expected"
73
- moda detection-review <problem_id> --conversation-id=<id> \
73
+ moda review problem-detection <problem_id> --conversation-id=<id> \
74
74
  --attribution-id=<uuid> --verdict=clear # undo
75
75
  ```
76
76
 
77
- `attribution_id` comes from `moda detection-reviews <conversation_id>` or
78
- `moda problem <problem_id> --evidence`. Prefer `detection-review` over
79
- `problem-feedback --action=flag_attribution` for a single wrong detection.
77
+ `attribution_id` comes from `moda reviews list <conversation_id> --kind=problem-detection` or
78
+ `moda problems get <problem_id> --evidence`. Prefer `review problem-detection` over
79
+ `problems feedback --action=flag_attribution` for a single wrong detection.
@@ -14,9 +14,9 @@ Loaded on demand from the moda-cli skill.
14
14
  mode prints prose to stderr. Check the exit code before claiming success.
15
15
  - An unknown trace, problem, or cluster id exits 1 with
16
16
  `errors[0].code: "not_found"`; it is not an empty success.
17
- - `moda world-state` returns success with a warning when state is missing.
17
+ - `moda traces state` returns success with a warning when state is missing.
18
18
  This can mean an unknown trace or a real trace without generated state.
19
- Use `moda context <id> --metadata-only` to check whether the trace exists.
19
+ Use `moda traces get <id> --metadata-only` to check whether the trace exists.
20
20
  - If the JSON has `"conversations": []` or `"frustrations": []`, the call
21
21
  worked but the time window is empty. Widen the window once
22
22
  (`--days-back` on detection commands, `--time-range` on `traces`,
@@ -36,7 +36,7 @@ save it with `moda auth login --api-key`.
36
36
  **`not_found` (exit 1)**
37
37
  The trace, problem, or cluster id does not exist in this tenant (a trace with
38
38
  no generated world state returns a warning, not `not_found`).
39
- `errors[0].cause` names the listing command: `moda search`/`moda traces`,
39
+ `errors[0].cause` names the listing command: `moda traces search`/`moda traces`,
40
40
  `moda problems`, `moda clusters`. A tool name with no failures in the window
41
41
  returns an empty result with a warning instead.
42
42
 
@@ -52,7 +52,7 @@ warning that gives the `--all` command for a wider slice.
52
52
  Widen the window: try `--days-back=30` or `--time-range=30d`. Confirm with
53
53
  `moda overview` that data exists in the tenant at all.
54
54
 
55
- **`moda search` returns nothing, or semantic feels like keyword**
55
+ **`moda traces search` returns nothing, or semantic feels like keyword**
56
56
  The default `--time-range` is `all`, so an empty result usually means the
57
57
  phrasing, not the window: try a shorter phrase or the exact identifier with
58
58
  `--mode=keyword`, and add `--include-tool-io` for strings that only appear in
@@ -1,30 +0,0 @@
1
- import {
2
- resolveTenantId
3
- } from "./cli-5ke3xe6y.js";
4
-
5
- // src/api-key-headers.ts
6
- var PLATFORM_API_KEY_PREFIX = "moda_pk_";
7
- var TENANT_HEADER = "x-moda-tenant-id";
8
- function isPlatformApiKey(key) {
9
- return Boolean(key?.startsWith(PLATFORM_API_KEY_PREFIX));
10
- }
11
- var platformTenantOverride;
12
- function setPlatformTenantOverride(tenantId) {
13
- platformTenantOverride = tenantId;
14
- }
15
- var TENANT_PATH = /\/tenants\/([^/?#]+)/;
16
- function tenantFromUrl(url) {
17
- const match = url ? TENANT_PATH.exec(url) : null;
18
- return match ? decodeURIComponent(match[1]) : undefined;
19
- }
20
- function apiKeyHeaders(key, options = {}, url) {
21
- const headers = { "x-api-key": key };
22
- if (isPlatformApiKey(key)) {
23
- const tenantId = tenantFromUrl(url) || platformTenantOverride || resolveTenantId(options);
24
- if (tenantId)
25
- headers[TENANT_HEADER] = tenantId;
26
- }
27
- return headers;
28
- }
29
-
30
- export { isPlatformApiKey, setPlatformTenantOverride, apiKeyHeaders };