@moda-ai/cli 1.55.38 → 1.55.39
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-9r58v0bc.js → agent-bhe95ae8.js} +8 -8
- package/dist/{cli-n311b8g0.js → cli-1vqq24qh.js} +1 -1
- package/dist/{cli-xk630wjq.js → cli-2h2nvq6w.js} +1 -1
- package/dist/{cli-tdcx8yz9.js → cli-39617gab.js} +3 -3
- package/dist/{cli-9g5kzsg6.js → cli-4hkesrkq.js} +1 -1
- package/dist/{cli-93926afn.js → cli-6gtgm2gx.js} +4 -4
- package/dist/{cli-nh23q6ay.js → cli-as4c1xwm.js} +5 -5
- package/dist/{cli-skvvwp2q.js → cli-c7vj8tq1.js} +5 -5
- package/dist/{cli-b7nyw498.js → cli-jkza0bj6.js} +1 -1
- package/dist/{cli-dmnayt2r.js → cli-jmbt1hf9.js} +8 -8
- package/dist/{cli-xheg54qc.js → cli-k9se46y4.js} +21 -6
- package/dist/{cli-xtyszvq1.js → cli-msgp78ag.js} +5 -5
- package/dist/{cli-sk1p71wr.js → cli-ptm7pwqg.js} +1 -1
- package/dist/{cli-3n040fp2.js → cli-qzag917n.js} +1 -1
- package/dist/{cli-rcjhfts4.js → cli-wr6f0kyw.js} +65 -16
- package/dist/cli.js +295 -47
- package/dist/{doctor-xq5bjvpq.js → doctor-3v20hc26.js} +7 -7
- package/dist/{fix-kvszavm1.js → fix-s3zkjt69.js} +4 -4
- package/dist/{harness-github-actions-drbkcb8d.js → harness-github-actions-mcy21e4d.js} +5 -5
- package/dist/{harness-qatnwxrz.js → harness-n4569wbm.js} +5 -5
- package/dist/{index-y5jnz2t2.js → index-2qm3h7v2.js} +11 -11
- package/dist/{production-intelligence-j55vaw6t.js → production-intelligence-z2cad1hv.js} +3 -3
- package/dist/{profile-commands-skdxe17v.js → profile-commands-7ck1tqfv.js} +3 -3
- package/dist/{prompt-attribution-zq38actx.js → prompt-attribution-dm50am6e.js} +5 -5
- package/dist/prompt-source-mcp.js +5 -5
- package/dist/{prompts-ab-yd2dawe3.js → prompts-ab-9e0dsmce.js} +7 -7
- package/dist/{prompts-cwqn8a57.js → prompts-p9hhxx0c.js} +5 -5
- package/dist/{prompts-propose-11dj9ked.js → prompts-propose-91qrjpd0.js} +7 -7
- package/dist/{provision-ghca9d54.js → provision-x4wkyw60.js} +5 -5
- package/dist/{registry-76sngjw6.js → registry-nq8qsqtv.js} +3 -3
- package/dist/{skills-btn9r48v.js → skills-rk2pmwx8.js} +5 -5
- package/dist/{sync-ye7nxeen.js → sync-xxbfjcz5.js} +7 -7
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
- package/skills/moda-cli/SKILL.md +2 -2
- package/skills/moda-cli/references/commands.md +2 -2
- package/skills/moda-cli/references/dashboard-parity.md +2 -0
- package/skills/moda-cli/references/production-intelligence.md +1 -1
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
contextTarget,
|
|
7
7
|
frustrationAnchorIndex,
|
|
8
8
|
frustrationsFromEmotions
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-1vqq24qh.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-
|
|
19
|
+
} from "./cli-qzag917n.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-
|
|
29
|
+
} from "./cli-wr6f0kyw.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-
|
|
5
|
+
} from "./cli-4hkesrkq.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-
|
|
13
|
+
} from "./cli-ptm7pwqg.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-
|
|
38
|
+
} from "./cli-wr6f0kyw.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-
|
|
4
|
+
} from "./cli-c7vj8tq1.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-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
11
|
+
import"./cli-jkza0bj6.js";
|
|
12
|
+
import"./cli-k9se46y4.js";
|
|
13
|
+
import"./cli-qzag917n.js";
|
|
14
|
+
import"./cli-wr6f0kyw.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-
|
|
6
|
+
} from "./cli-c7vj8tq1.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-
|
|
15
|
-
import"./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-
|
|
14
|
+
import"./cli-jkza0bj6.js";
|
|
15
|
+
import"./cli-k9se46y4.js";
|
|
16
|
+
import"./cli-qzag917n.js";
|
|
17
|
+
import"./cli-wr6f0kyw.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-
|
|
27
|
-
import"./cli-
|
|
28
|
-
import"./cli-
|
|
26
|
+
} from "./cli-as4c1xwm.js";
|
|
27
|
+
import"./cli-jmbt1hf9.js";
|
|
28
|
+
import"./cli-2h2nvq6w.js";
|
|
29
29
|
import"./cli-mm48br00.js";
|
|
30
|
-
import"./cli-
|
|
31
|
-
import"./cli-
|
|
32
|
-
import"./cli-
|
|
33
|
-
import"./cli-
|
|
30
|
+
import"./cli-jkza0bj6.js";
|
|
31
|
+
import"./cli-k9se46y4.js";
|
|
32
|
+
import"./cli-qzag917n.js";
|
|
33
|
+
import"./cli-wr6f0kyw.js";
|
|
34
34
|
import"./cli-k4tqwah4.js";
|
|
35
35
|
import"./cli-9kfxkxmk.js";
|
|
36
36
|
import"./cli-ns5fcnkz.js";
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
runPromptSync,
|
|
12
12
|
runPromptsCommand,
|
|
13
13
|
writePromptSyncProgress
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-jmbt1hf9.js";
|
|
15
15
|
import {
|
|
16
16
|
promptSourceHashPayload
|
|
17
17
|
} from "./cli-mm48br00.js";
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
18
|
+
import"./cli-jkza0bj6.js";
|
|
19
|
+
import"./cli-k9se46y4.js";
|
|
20
|
+
import"./cli-qzag917n.js";
|
|
21
|
+
import"./cli-wr6f0kyw.js";
|
|
22
22
|
import"./cli-k4tqwah4.js";
|
|
23
23
|
import"./cli-9kfxkxmk.js";
|
|
24
24
|
import"./cli-ns5fcnkz.js";
|
|
@@ -7,20 +7,20 @@ import {
|
|
|
7
7
|
formatVerdict,
|
|
8
8
|
rerunWithYes,
|
|
9
9
|
resolvePromptArmSpec
|
|
10
|
-
} from "./cli-
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
10
|
+
} from "./cli-as4c1xwm.js";
|
|
11
|
+
import"./cli-jmbt1hf9.js";
|
|
12
|
+
import"./cli-2h2nvq6w.js";
|
|
13
13
|
import"./cli-mm48br00.js";
|
|
14
|
-
import"./cli-
|
|
15
|
-
import"./cli-
|
|
14
|
+
import"./cli-jkza0bj6.js";
|
|
15
|
+
import"./cli-k9se46y4.js";
|
|
16
16
|
import {
|
|
17
17
|
callControlAPI
|
|
18
|
-
} from "./cli-
|
|
18
|
+
} from "./cli-qzag917n.js";
|
|
19
19
|
import {
|
|
20
20
|
resolveApiTenantId,
|
|
21
21
|
shellArg,
|
|
22
22
|
validateConfig
|
|
23
|
-
} from "./cli-
|
|
23
|
+
} from "./cli-wr6f0kyw.js";
|
|
24
24
|
import {
|
|
25
25
|
CliInputError
|
|
26
26
|
} from "./cli-k4tqwah4.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
selectTenantAndCreateKey
|
|
3
|
-
} from "./cli-
|
|
4
|
-
import"./cli-
|
|
3
|
+
} from "./cli-39617gab.js";
|
|
4
|
+
import"./cli-4hkesrkq.js";
|
|
5
5
|
import {
|
|
6
6
|
loadAuthSession
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-ptm7pwqg.js";
|
|
8
8
|
import {
|
|
9
9
|
stringOption
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-jkza0bj6.js";
|
|
11
11
|
import {
|
|
12
12
|
resolveIngestUrl,
|
|
13
13
|
resolveModaBaseUrl
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-wr6f0kyw.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-
|
|
3
|
+
} from "./cli-k9se46y4.js";
|
|
4
4
|
import {
|
|
5
5
|
callControlAPI
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-qzag917n.js";
|
|
7
7
|
import {
|
|
8
8
|
explicitOutputMode,
|
|
9
9
|
resolveApiKey
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-wr6f0kyw.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-
|
|
6
|
+
} from "./cli-6gtgm2gx.js";
|
|
7
7
|
import"./cli-qm5b1vck.js";
|
|
8
8
|
import"./cli-rjav0vj1.js";
|
|
9
9
|
import"./cli-hcwdz9sd.js";
|
|
10
|
-
import"./cli-
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
10
|
+
import"./cli-jkza0bj6.js";
|
|
11
|
+
import"./cli-k9se46y4.js";
|
|
12
|
+
import"./cli-qzag917n.js";
|
|
13
|
+
import"./cli-wr6f0kyw.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-
|
|
3
|
+
} from "./cli-6gtgm2gx.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-
|
|
9
|
+
} from "./cli-jmbt1hf9.js";
|
|
10
10
|
import"./cli-mm48br00.js";
|
|
11
11
|
import {
|
|
12
12
|
runHarnessCommand
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-c7vj8tq1.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-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
18
|
+
import"./cli-jkza0bj6.js";
|
|
19
|
+
import"./cli-k9se46y4.js";
|
|
20
|
+
import"./cli-qzag917n.js";
|
|
21
|
+
import"./cli-wr6f0kyw.js";
|
|
22
22
|
import {
|
|
23
23
|
CliInputError
|
|
24
24
|
} from "./cli-k4tqwah4.js";
|
package/package.json
CHANGED
package/skills/moda-cli/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: moda-cli
|
|
3
|
-
version: 3.0.
|
|
3
|
+
version: 3.0.5
|
|
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
|
|
|
@@ -60,7 +60,7 @@ Details: `references/output-protocol.md`.
|
|
|
60
60
|
| Where did X happen / traces about Y | `moda traces search "<words>"` (`--mode=keyword` for ids, error codes, exact strings; `--include-tool-io` for tool inputs/outputs) | `moda traces get <conversation_id> --msg-index=<message_index> --window=3` |
|
|
61
61
|
| Search returned nothing | Read `.warnings` (degraded mode, reason). Try a shorter phrase, `--mode=keyword`, a wider `--time-range` | `moda traces --search="<words>"` |
|
|
62
62
|
| Is the agent healthy? | `moda overview --days-back=7` | `moda investigate` |
|
|
63
|
-
| What to fix first? | `moda investigate` or `moda problems` (free) | `moda problems get <problem_id
|
|
63
|
+
| What to fix first? | `moda investigate` or `moda problems list` (free; the same list the dashboard shows) | `moda problems get <problem_id>` (`--view=dream` on a dream-grouped tenant), then `--evidence` / `--traces` |
|
|
64
64
|
| Why is tool T failing? | `moda detections tools` | `moda detections tools <T>` (use each row's `anchor`) |
|
|
65
65
|
| How often is tool T called / what is its schema? | `moda tools list` (every tool: calls, failed calls, success rate; `--sort=failure_rate`) | `moda tools get <T>` (registered schema, observed payload fields, usage over time, top failure categories) |
|
|
66
66
|
| What frustrates users? | `moda detections list --family=frustration --limit=10` | `moda traces get <anchor.conversation_id> --msg-index=<anchor.msg_index>` |
|
|
@@ -29,8 +29,8 @@ Loaded on demand from the moda-cli skill. This table can lag the CLI: `moda <com
|
|
|
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`) |
|
|
32
|
-
| `moda problems` |
|
|
33
|
-
| `moda problems get <problem_id>` | One Problem: dossier, or `--evidence`/`--reports`/`--traces`/`--feedback` pages (`--conversations` is a legacy alias of `--traces`) (`--limit` 1–50, `--cursor` verbatim keyset token) |
|
|
32
|
+
| `moda problems list` | The Problems the dashboard shows, ranked: the dream grouping when the tenant has one published, else the Book (`view` in the output says which; `--view=book\|dream` forces one). `--days-back`, `--limit` (1-200, default 10), `--offset` + `--list-version` (from the previous page; `next_commands` has the next page), `--sort=rank\|users` (dream: `severity\|silent`; Book: `signals\|problems\|signal:<family>`), `--dir`, `--cohort=builtin:<key>\|<saved id>`. Filter by family with `moda problems unexplained --family=F` or `moda problems get <problem_id> --traces --family=F` |
|
|
33
|
+
| `moda problems get <problem_id>` | One Problem: dossier, or `--evidence`/`--reports`/`--traces`/`--feedback` pages (`--conversations` is a legacy alias of `--traces`) (`--limit` 1–50, `--cursor` verbatim keyset token). `--view=dream`: the dashboard's dream page of it (definition, fix, severity, incidents with verdicts; `--limit` default 3, `--offset`). Dream problem ids are Book ids, so the dossier works for ids from either list view |
|
|
34
34
|
| `moda problems feedback <problem_id>` | Write: `--action=mark_fixed\|dismiss\|flag_attribution\|rename`. `--reason` required for flag_attribution, optional for dismiss; `--new-name` for rename; `--attribution-id` (UUID) required for flag_attribution |
|
|
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` |
|
|
@@ -16,6 +16,8 @@ Writes listed here accept `--dry-run`: it validates the call, prints the exact r
|
|
|
16
16
|
| Settings: which detectors run | `moda overview` → `detectors` (read-only; switching one is dashboard-only) |
|
|
17
17
|
| Users page / user profile | `moda users [--window --cohort --sort --order --health-status]`, `moda user <id>` |
|
|
18
18
|
| Tool catalog: every tool, its schema and usage | `moda tools list [--sort=calls\|failure_rate\|failures\|traces\|last_seen --search --direction --offset]`, `moda tools get <tool_name>` |
|
|
19
|
+
| Problems list (dream grouping or Book, as the page decides): sort, cohort, page | `moda problems list [--sort=users --cohort=builtin:<key> --offset=N --list-version=V]`; `--view=book\|dream` forces one |
|
|
20
|
+
| Problem page (dream view): severity, incidents with verdicts | `moda problems get <problem_id> --view=dream [--offset=N]` |
|
|
19
21
|
| Problems: unexplained remainder | `moda problems unexplained [--family=emotion\|tool_failure\|laziness\|… --cursor]` |
|
|
20
22
|
| Reopen a problem marked fixed | `moda problems reopen <problem_id> --reason="…"` (resolved ones return only via re-detection) |
|
|
21
23
|
| Custom signals: create | `moda signals draft --note="…"`, then `moda signals create --name --description --pass-criteria --fail-criteria [--tool-names=a,b]` or `--file=body.json` |
|
|
@@ -72,7 +72,7 @@ Problem, or before hand-editing prompt/skill files in a repo that talks to Moda.
|
|
|
72
72
|
```bash
|
|
73
73
|
moda investigate # rank tool failures, frustrations,
|
|
74
74
|
# and top Problems with evidence
|
|
75
|
-
moda problems
|
|
75
|
+
moda problems list # the Problems the dashboard shows (dream grouping or Book)
|
|
76
76
|
moda problems get <problem_id> # compact dossier: what, where, how often
|
|
77
77
|
moda problems get <problem_id> --full # every dossier block (large)
|
|
78
78
|
moda problems get <problem_id> --evidence # attribution rationales and anchors
|