agent-afk 5.340.0 → 5.342.0

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 (131) hide show
  1. package/dist/agent/command-classifier.d.ts +16 -0
  2. package/dist/agent/command-classifier.risk.d.ts +3 -0
  3. package/dist/agent/episodes/extract.d.ts +2 -0
  4. package/dist/agent/episodes/index.d.ts +6 -0
  5. package/dist/agent/episodes/session-end-hook.d.ts +2 -0
  6. package/dist/agent/episodes/synthesize.d.ts +2 -0
  7. package/dist/agent/episodes/types.d.ts +24 -0
  8. package/dist/agent/episodes/writer.d.ts +4 -0
  9. package/dist/agent/provider.d.ts +0 -5
  10. package/dist/agent/providers/anthropic-direct/query/cwd-dependents.d.ts +1 -0
  11. package/dist/agent/providers/anthropic-direct/query-runtime.d.ts +0 -5
  12. package/dist/agent/providers/openai-compatible/index.d.ts +2 -1
  13. package/dist/agent/providers/openai-compatible/index.options.d.ts +1 -0
  14. package/dist/agent/providers/openai-compatible/provider-schemas.d.ts +3 -0
  15. package/dist/agent/providers/router/provider-router.d.ts +0 -5
  16. package/dist/agent/providers/whatif-api.d.ts +4 -0
  17. package/dist/agent/risk-classifier.bash-safe.d.ts +1 -1
  18. package/dist/agent/session/agent-session.d.ts +0 -5
  19. package/dist/agent/session/ledger-lifecycle.d.ts +6 -0
  20. package/dist/agent/session/session-config.d.ts +0 -5
  21. package/dist/agent/session/session-meta.d.ts +8 -0
  22. package/dist/agent/tools/compose-agent-resolve.d.ts +2 -0
  23. package/dist/agent/tools/compose-executor.node-build.d.ts +0 -1
  24. package/dist/agent/tools/dispatch-preparation.d.ts +14 -0
  25. package/dist/agent/tools/handlers/_cwd-utils.d.ts +1 -2
  26. package/dist/agent/tools/handlers/path-policy.d.ts +12 -1
  27. package/dist/agent/tools/handlers/path-policy.roots.d.ts +15 -0
  28. package/dist/agent/tools/handlers/wait-for-command-policy.d.ts +4 -3
  29. package/dist/agent/tools/handlers/write-denylist.d.ts +5 -0
  30. package/dist/agent/tools/readonly-bash.d.ts +1 -1
  31. package/dist/agent/tools/readonly-bash.mutation.d.ts +5 -0
  32. package/dist/agent/tools/readonly-bash.tokenizer.d.ts +1 -0
  33. package/dist/agent/tools/subagent/child-config.helpers.d.ts +5 -10
  34. package/dist/agent/tools/system-prompt.d.ts +2 -2
  35. package/dist/agent/tools/usage-notice.d.ts +6 -2
  36. package/dist/agent/usage/usage-budget.d.ts +2 -2
  37. package/dist/bundled-plugins/awa-bundled/skills/consumer-map/SKILL.md +154 -0
  38. package/dist/bundled-plugins/awa-bundled/skills/devils-advocate/SKILL.md +12 -0
  39. package/dist/bundled-plugins/awa-bundled/skills/ground-state/SKILL.md +8 -11
  40. package/dist/cli/commands/episode.d.ts +2 -0
  41. package/dist/cli/commands/receipt.d.ts +2 -0
  42. package/dist/cli/slash/commands/branches.d.ts +2 -0
  43. package/dist/cli/slash/commands/resume.d.ts +3 -0
  44. package/dist/cli/slash/commands/{reauth.d.ts → where.d.ts} +1 -1
  45. package/dist/cli.mjs +578 -536
  46. package/dist/config/env.d.ts +8 -0
  47. package/dist/config/env.episode.d.ts +9 -0
  48. package/dist/index.mjs +415 -403
  49. package/dist/telegram/formatter.d.ts +2 -2
  50. package/dist/telegram.mjs +465 -441
  51. package/dist/web-ui-assets/assets/{angular-html-CGhXdqey.js → angular-html-D9HxDckB.js} +1 -1
  52. package/dist/web-ui-assets/assets/{angular-ts-CvXSYqzW.js → angular-ts-CU-2-qNu.js} +1 -1
  53. package/dist/web-ui-assets/assets/{apl-CHd928O5.js → apl-CjRnf8iv.js} +1 -1
  54. package/dist/web-ui-assets/assets/{astro-BoLrHJmk.js → astro-BeJmvzqF.js} +1 -1
  55. package/dist/web-ui-assets/assets/{blade-DY1IktSs.js → blade-B-b54web.js} +1 -1
  56. package/dist/web-ui-assets/assets/{c-DxAZbdBx.js → c-BB8Pfjsa.js} +1 -1
  57. package/dist/web-ui-assets/assets/{chapel-DYsDnfcl.js → chapel-BPpnrh4V.js} +1 -1
  58. package/dist/web-ui-assets/assets/{cobol-DWGkS6M4.js → cobol-BwwGtgEh.js} +1 -1
  59. package/dist/web-ui-assets/assets/{coffee-DlkYkLNu.js → coffee-ilL4_8aT.js} +1 -1
  60. package/dist/web-ui-assets/assets/{cpp-EPEhiLov.js → cpp-moR8pzFi.js} +1 -1
  61. package/dist/web-ui-assets/assets/{crystal-BEErPI0z.js → crystal-J88aQzxf.js} +1 -1
  62. package/dist/web-ui-assets/assets/{css-B0GwOWpN.js → css-fKeg4Z2o.js} +1 -1
  63. package/dist/web-ui-assets/assets/{dist-ETE6tN-C.js → dist-Dd0e8ZPM.js} +2 -2
  64. package/dist/web-ui-assets/assets/{edge-DSYFnYrA.js → edge-CaGjLI0R.js} +1 -1
  65. package/dist/web-ui-assets/assets/{elixir-YnBo-E2b.js → elixir-BVyPPV6a.js} +1 -1
  66. package/dist/web-ui-assets/assets/{elm-BTbb8S23.js → elm-CIqALtqh.js} +1 -1
  67. package/dist/web-ui-assets/assets/{erb-CmjdbA27.js → erb-BHaTiy6b.js} +1 -1
  68. package/dist/web-ui-assets/assets/{git-rebase-CGODI_wc.js → git-rebase-Bw9lRZ3B.js} +1 -1
  69. package/dist/web-ui-assets/assets/{glimmer-js-CH0RFAMi.js → glimmer-js-uxjWrvye.js} +1 -1
  70. package/dist/web-ui-assets/assets/{glimmer-ts-C-QtJVYf.js → glimmer-ts-rPLZ6DTy.js} +1 -1
  71. package/dist/web-ui-assets/assets/{glsl-B4-SloMd.js → glsl-TwBArQ34.js} +1 -1
  72. package/dist/web-ui-assets/assets/{graphql-DgGBaJER.js → graphql-_6xxTmcw.js} +1 -1
  73. package/dist/web-ui-assets/assets/{hack-CiownsYp.js → hack-BBdbXDKi.js} +1 -1
  74. package/dist/web-ui-assets/assets/{haml-M26UGD_a.js → haml-CGwAOG_L.js} +1 -1
  75. package/dist/web-ui-assets/assets/{handlebars-gqoiXao1.js → handlebars-V6069UIv.js} +1 -1
  76. package/dist/web-ui-assets/assets/{html-DbYXE9Fl.js → html-DlFVgVkx.js} +1 -1
  77. package/dist/web-ui-assets/assets/{html-derivative-P6gcNKB0.js → html-derivative-C3lmdCJP.js} +1 -1
  78. package/dist/web-ui-assets/assets/{http-DnPL1Yqt.js → http-Bez3OCbh.js} +1 -1
  79. package/dist/web-ui-assets/assets/{hurl-DcpACPE-.js → hurl-BSiqIbZR.js} +1 -1
  80. package/dist/web-ui-assets/assets/index-DBXn_P4Z.css +2 -0
  81. package/dist/web-ui-assets/assets/{index-J4Gmj9de.js → index-DxraiEXA.js} +2 -2
  82. package/dist/web-ui-assets/assets/{java-8dkCcwWP.js → java-DHCJgaYo.js} +1 -1
  83. package/dist/web-ui-assets/assets/{javascript-CjgqT0hZ.js → javascript-UwR15CHn.js} +1 -1
  84. package/dist/web-ui-assets/assets/{jinja-5n1p1jzI.js → jinja-vv0QfMTf.js} +1 -1
  85. package/dist/web-ui-assets/assets/{jison-BirvaJHT.js → jison-BdsuKmFE.js} +1 -1
  86. package/dist/web-ui-assets/assets/{json-DmipamAZ.js → json-DNO2HE_Y.js} +1 -1
  87. package/dist/web-ui-assets/assets/{jsx-w134sGXK.js → jsx-U1H5CsFs.js} +1 -1
  88. package/dist/web-ui-assets/assets/{julia-CP0_Sn17.js → julia-C330XKUM.js} +1 -1
  89. package/dist/web-ui-assets/assets/{just-C2Hxq1M-.js → just-RaEEprm5.js} +1 -1
  90. package/dist/web-ui-assets/assets/{latex-C2pnLSMg.js → latex-BkviF63W.js} +1 -1
  91. package/dist/web-ui-assets/assets/{liquid-A9v-zdj1.js → liquid-BXBmBztm.js} +1 -1
  92. package/dist/web-ui-assets/assets/{lua-BUYvMhIp.js → lua-BaWbDujq.js} +1 -1
  93. package/dist/web-ui-assets/assets/{marko-DIaJyZ2t.js → marko-BQsI2D3T.js} +1 -1
  94. package/dist/web-ui-assets/assets/{mdc-DnSkIciD.js → mdc-D0P-XiqT.js} +1 -1
  95. package/dist/web-ui-assets/assets/{nginx-BxbUPYEw.js → nginx-Bs26owa3.js} +1 -1
  96. package/dist/web-ui-assets/assets/{nim-Dxaqe1Bn.js → nim-DnTXTHij.js} +1 -1
  97. package/dist/web-ui-assets/assets/{org-Bi4gmD-8.js → org-Bda-wEk8.js} +1 -1
  98. package/dist/web-ui-assets/assets/{perl-DrrYP5ph.js → perl-CazUTglO.js} +1 -1
  99. package/dist/web-ui-assets/assets/{php-DqWFNwEA.js → php-beb386wl.js} +1 -1
  100. package/dist/web-ui-assets/assets/{pug-CeN90-9K.js → pug-BNMtKALj.js} +1 -1
  101. package/dist/web-ui-assets/assets/{qml-CKa9kb6a.js → qml-B0K9OgdI.js} +1 -1
  102. package/dist/web-ui-assets/assets/{r-CfEfxRBn.js → r-DBHyJsFw.js} +1 -1
  103. package/dist/web-ui-assets/assets/{razor-BJe66PT7.js → razor-CgwxupjW.js} +1 -1
  104. package/dist/web-ui-assets/assets/{regexp-C3vAdVA_.js → regexp-DxkUG43n.js} +1 -1
  105. package/dist/web-ui-assets/assets/{rst-hFT2ijNs.js → rst-BHb8uy7y.js} +1 -1
  106. package/dist/web-ui-assets/assets/{ruby-C3iLnR5f.js → ruby-CkhP59zd.js} +1 -1
  107. package/dist/web-ui-assets/assets/{sas-I2KZLci2.js → sas-C4mIXV2D.js} +1 -1
  108. package/dist/web-ui-assets/assets/{scss-Bfvb3Jj7.js → scss-BGTKsyE5.js} +1 -1
  109. package/dist/web-ui-assets/assets/{shellscript-zBQss7DO.js → shellscript-BhvAyKWQ.js} +1 -1
  110. package/dist/web-ui-assets/assets/{shellsession-DKWG3ja3.js → shellsession-BIZJ_qLc.js} +1 -1
  111. package/dist/web-ui-assets/assets/{soy-6kJwd0PX.js → soy-P6r6yOzU.js} +1 -1
  112. package/dist/web-ui-assets/assets/{sql-ZKBtdTrV.js → sql-BVBigw-2.js} +1 -1
  113. package/dist/web-ui-assets/assets/{stata-D1HN1GWw.js → stata-54jAGrgC.js} +1 -1
  114. package/dist/web-ui-assets/assets/{surrealql-B89pu-_8.js → surrealql-C8HhiqK7.js} +1 -1
  115. package/dist/web-ui-assets/assets/{svelte-DdjVDQDX.js → svelte-BueIeAvu.js} +1 -1
  116. package/dist/web-ui-assets/assets/{templ-CB3fWEmc.js → templ-Ofro3fhP.js} +1 -1
  117. package/dist/web-ui-assets/assets/{tex-DSK5fycz.js → tex-DJIpqw-n.js} +1 -1
  118. package/dist/web-ui-assets/assets/{ts-tags-CgD9RStv.js → ts-tags-ZY2vEszt.js} +1 -1
  119. package/dist/web-ui-assets/assets/{tsx-Csypjqle.js → tsx-WIiPFMv9.js} +1 -1
  120. package/dist/web-ui-assets/assets/{twig-PQ2ijmIy.js → twig-m538Ma7t.js} +1 -1
  121. package/dist/web-ui-assets/assets/{typescript-B4KejusE.js → typescript-Clk_YKGZ.js} +1 -1
  122. package/dist/web-ui-assets/assets/{typst-DA48RLSp.js → typst-F1lfBqcy.js} +1 -1
  123. package/dist/web-ui-assets/assets/{vue-C6y4X9p-.js → vue-BEXL-pWx.js} +1 -1
  124. package/dist/web-ui-assets/assets/{vue-html-1Vzn6gNz.js → vue-html-BWHrTaZI.js} +1 -1
  125. package/dist/web-ui-assets/assets/{vue-vine-DRny2ZQS.js → vue-vine-vuvJlse5.js} +1 -1
  126. package/dist/web-ui-assets/assets/{xml-k_Mgt1sq.js → xml-CFxeGMBh.js} +1 -1
  127. package/dist/web-ui-assets/assets/{xsl-BvSmCHX2.js → xsl-Gm-otioc.js} +1 -1
  128. package/dist/web-ui-assets/assets/{yaml-BmZoDLOb.js → yaml-B2Lu9Cr1.js} +1 -1
  129. package/dist/web-ui-assets/index.html +2 -2
  130. package/package.json +1 -1
  131. package/dist/web-ui-assets/assets/index-C6Xq_kK1.css +0 -2
@@ -38,6 +38,18 @@ Until the verifier returns `CONFIRMED`, the convergent recommendation is a **can
38
38
 
39
39
  **Scope guard:** skip when the proposal is purely local with no composition surface, or is anchored to an external referent that survives independently of the system. Does not fire when `dissent = true` — that path surfaces the matrix directly; adding a Wave 3.5 gate on already-uncertain output adds friction without signal. Fires once per convergent verdict, not per critic.
40
40
 
41
+ **Post-synthesis annotation — Consumer surface (inline, no dispatch):**
42
+ After Wave 3 picks a recommendation — and after Wave 3.5 resolves, if it fired — the coordinator runs an inline consumer-surface check before surfacing. This is deterministic coordinator work, not a sub-agent dispatch.
43
+
44
+ 1. **Trigger:** fires only when the final recommendation names concrete code symbols (function, class, type, exported name) or file paths. If the recommendation is purely conceptual (an architectural stance, a process change, a scoping decision with no named code artifact), skip entirely.
45
+ 2. **Skip on dissent:** when `dissent = true`, the matrix is surfaced directly and the operator makes the call. Adding consumer counts to an already-uncertain matrix adds noise, not signal.
46
+ 3. **Extraction:** from the recommendation text, extract only the exported symbol names and/or file paths it references. Do not extract from the rationale, critic outputs, or the original proposal — the annotation checks the recommendation's own named targets, nothing more.
47
+ 4. **Bounded grep:** run at most 5 grep/glob calls against the repo to count importers of each extracted symbol or file. Use the ≥3 importer threshold for `shared_utilities` — a file imported by fewer than 3 modules is not a shared utility and does not warrant annotation.
48
+ 5. **Append:** add a `Consumer surface:` line to the recommendation output. For each symbol or file that meets the ≥3 threshold, show `<name> — <N> importers (search scope: <glob used>)`. For symbols below the threshold, omit them. If no concrete symbols were extractable from the recommendation, write `Consumer surface: not checked`. If symbols were extracted and checked but none met the ≥3 threshold, write `Consumer surface: checked — no symbol ≥3 importers (scope: <glob used>)`. Never write `accounted` or any verdict that implies completeness.
49
+ 6. **Defer:** when any symbol shows ≥3 importers, append: `For the full consumer graph, run /consumer-map <target> or /consumer-map <PR-number>.` This annotation is a lightweight signal, not a substitute for that skill.
50
+
51
+ **Why not a verdict:** grep-only coverage misses dynamic imports, string-keyed config references, event-pipeline membership, and transitive consumers beyond one level. Emitting `ACCOUNTED` or `BLIND_SPOT` on incomplete evidence would create false assurance or false alarm. Raw counts with explicit search scope let the operator and downstream skills make their own judgment.
52
+
41
53
  **Merge + surface:**
42
54
  - Recommendation = `original` → the proposal survived critique; proceed with it. **With a steelman annotation present, the strengthened form is what survived and is therefore what you proceed with** — it is the artifact Wave 3 actually scored, and executing the verbatim text instead would run a version that never won: one that can omit a prerequisite the steelman made explicit, or reinstate a claim it dropped as indefensible. Rank and execute must name the same artifact. Surface it **as** the strengthened version, with `gaps_filled` (assumptions the proposal depends on but never stated) and `weak_claims_dropped` (claims too weak to defend) shown as an explicit delta against what the user wrote, so they can see exactly what changed and reject it if they disagree. The substitution must be **visible, never silent** — do not present strengthened text as if it were the user's verbatim proposal. With no steelman annotation, `original` is the verbatim proposal and proceeds unchanged.
43
55
  - Recommendation ≠ `original`, `dissent = false`, ≥2 critics returned the same alternative → convergent path: run Wave 3.5, then surface the alternative with rationale (on `OVERRIDE`, re-rank first) before acting.
@@ -12,7 +12,7 @@ failure_modes:
12
12
  ## Sub-agent contract
13
13
  /contract
14
14
 
15
- **Constraint: read-only reconnaissance.** You MUST NOT call `edit_file`, `write_file`, or any mutating bash command (no `git commit`, `git push`, `git checkout`, `mv`, `rm`, file redirection, package installs, etc.). Read-only tools only: `read_file`, `grep`, `glob`, `list_directory`, `memory_search`, and read-only bash (`git status`, `git log`, `git diff`, `cat`, `ls`, `find`, etc.). `memory_search` is non-mutating and is the **only** way to reach the cross-session fact archive — it is in scope for this skill, do not strip it from this list.
15
+ **Constraint: read-only reconnaissance.** You MUST NOT call `edit_file`, `write_file`, or any mutating bash command (no `git commit`, `git push`, `git checkout`, `mv`, `rm`, file redirection, package installs, etc.). Read-only tools only: `read_file`, `grep`, `glob`, `list_directory`, `memory_search`, and git queries (via `bash` or `git_read` when bash is unavailable). Under `git_read`, non-git shell commands (`cat`, `ls`, `stat`, `tail`) are not available; use `read_file`, `glob`, and `list_directory` instead. `memory_search` is non-mutating and is the **only** way to reach the cross-session fact archive — it is in scope for this skill, do not strip it from this list.
16
16
 
17
17
  If the survey reveals a fix that's tempting to apply, **return it as a recommendation in the snapshot** — the orchestrator decides whether to act. Even if the invoking brief sounds prescriptive ("draft the edit", "apply the change"), this skill stops at the snapshot and the preamble artifact. The orchestrator dispatches a separate implementation step afterward.
18
18
 
@@ -48,7 +48,7 @@ Check for relevant tooling and configs. Use the domain table below to decide whi
48
48
 
49
49
  | Domain | What to scan |
50
50
  |--------|-------------|
51
- | `software` | CI configs (`ls .github/workflows/ 2>/dev/null`), package scripts (`package.json`, `Makefile`, `pyproject.toml`), linters/formatters, authoritative config files for the task. |
51
+ | `software` | CI configs (`list_directory` or `glob` on `.github/workflows/`), package scripts (`package.json`, `Makefile`, `pyproject.toml`), linters/formatters, authoritative config files for the task. |
52
52
  | `research` | Reference manager (.bib files), LaTeX setup, data analysis tools (Jupyter, R scripts), collaboration setup. |
53
53
  | `design` | Design tool configs, prototyping tools, handoff configs (Storybook), asset pipeline scripts. |
54
54
  | `business` | Modeling tool configs, presentation formats, data source configs, collaboration tool structure. |
@@ -66,14 +66,11 @@ Return: relevant facts with 1-line summaries, **plus the stores actually consult
66
66
 
67
67
  Read `SPINE.md` from the repo root (same directory as `AFK.md`). If the file does not exist or is empty, skip silently -- do not mention it in the snapshot. If it exists and has entries, extract its invariant (INV-*), rejected-pattern (REJ-*), and taste entries (TST-*) and include them in the snapshot so architectural constraints are visible before proposing changes.
68
68
 
69
- ### Eval-pipeline recency survey *(bash — software domain only)*
69
+ ### Eval-pipeline recency survey *(software domain only)*
70
70
 
71
71
  For software-domain sessions, check whether the eval-run pipeline is current. This guard catches silent regressions that accumulate when the pipeline goes unrun during high-velocity sprints.
72
72
 
73
- Run:
74
- ```
75
- tail -1 ~/.afk/agent-framework/improve/eval-runs/.index.jsonl 2>/dev/null
76
- ```
73
+ Read the last line of `~/.afk/agent-framework/improve/eval-runs/.index.jsonl` (use `read_file`; if the file does not exist, treat as "never run").
77
74
 
78
75
  Parse the `timestamp` field from the output. Then compute the age in days relative to today's date.
79
76
 
@@ -110,8 +107,8 @@ After the snapshot is assembled, construct the **Brief Anchor** — a path-verif
110
107
 
111
108
  **Construction procedure:**
112
109
 
113
- 1. From your state survey output, extract the verified `cwd` (absolute path from `pwd`), `branch` (from `git rev-parse --abbrev-ref HEAD`), and `HEAD` SHA (from `git rev-parse HEAD`).
114
- 2. From your infrastructure survey output, extract the 2–4 canonical file paths most relevant to the task. For each, run `stat <path>` — include the path only if `stat` exits 0. Paths that fail `stat` are omitted; if zero paths survive, set the list to `(none verified)`.
110
+ 1. From your state survey output, extract the verified `cwd` (from `git rev-parse --show-toplevel` combined with `git rev-parse --show-prefix` to reconstruct the full session path: `<toplevel>/<prefix>`), `branch` (from `git rev-parse --abbrev-ref HEAD`), and `HEAD` SHA (from `git rev-parse HEAD`).
111
+ 2. From your infrastructure survey output, extract the 2–4 canonical file paths most relevant to the task. For each, verify existence with `glob` or `read_file`; include the path only if it exists. Paths that don't exist are omitted; if zero paths survive, set the list to `(none verified)`.
115
112
  3. Assemble the preamble block:
116
113
 
117
114
  ```
@@ -119,7 +116,7 @@ After the snapshot is assembled, construct the **Brief Anchor** — a path-verif
119
116
  - **cwd**: <absolute path>
120
117
  - **branch**: <branch name>
121
118
  - **HEAD**: <full SHA>
122
- - **canonical paths** (stat each on entry; emit GROUNDING_FAILED:<path> and abort if missing):
119
+ - **canonical paths** (verify each on entry; emit GROUNDING_FAILED:<path> and abort if missing):
123
120
  - <verified_path_1>
124
121
  - <verified_path_2> ← omit line if not applicable
125
122
  ```
@@ -129,7 +126,7 @@ After the snapshot is assembled, construct the **Brief Anchor** — a path-verif
129
126
  **Orchestrator usage contract:**
130
127
 
131
128
  - Prepend the Brief Anchor verbatim to every sub-agent brief that reads files, runs `git`/`gh` commands, or references explicit paths. Skip for pure-reasoning tasks.
132
- - Sub-agents receiving the anchor `stat` each listed path on entry. A missing path returns `GROUNDING_FAILED:<path>` — the orchestrator re-dispatches once with the corrected path. If the retry also returns `GROUNDING_FAILED`, emit `BRIEF_GROUND_ABORT` with both the expected and actual paths **plus the corrective command** the operator should run — `git worktree list` to find the intended checkout, then `cd <correct-worktree>` — and halt the wave.
129
+ - Sub-agents receiving the anchor verify each listed path on entry (via `glob` or `read_file`). A missing path returns `GROUNDING_FAILED:<path>` — the orchestrator re-dispatches once with the corrected path. If the retry also returns `GROUNDING_FAILED`, emit `BRIEF_GROUND_ABORT` with both the expected and actual paths **plus the corrective command** the operator should run — `git worktree list` to find the intended checkout, then `cd <correct-worktree>` — and halt the wave.
133
130
  - The anchor is session-scoped: one construction pass per `ground-state` invocation. Do not re-invoke `ground-state` mid-session to refresh it; instead pass the existing anchor through.
134
131
 
135
132
  **Skip when:**
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerEpisodeCommand(program: Command): void;
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerReceiptCommand(program: Command): void;
@@ -0,0 +1,2 @@
1
+ import type { SlashCommand } from '../types.js';
2
+ export declare const branchesCmd: SlashCommand;
@@ -1,2 +1,5 @@
1
+ import { findSession } from '../../session-store.js';
2
+ import type { ResolvedResumeTarget } from '../../resume-session.js';
1
3
  import type { SlashCommand } from '../types.js';
4
+ export declare function resolveFromFound(found: NonNullable<ReturnType<typeof findSession>>): ResolvedResumeTarget;
2
5
  export declare const resumeCmd: SlashCommand;
@@ -1,2 +1,2 @@
1
1
  import type { SlashCommand } from '../types.js';
2
- export declare const reauthCmd: SlashCommand;
2
+ export declare const whereCmd: SlashCommand;