@selesai/code 0.13.6 → 0.13.7

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 (970) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +255 -102
  3. package/dist/cli/credential-print.js +4 -4
  4. package/dist/cli.js +0 -0
  5. package/dist/core/compaction/utils.js +2 -2
  6. package/dist/core/export-html/template.css +1066 -1066
  7. package/dist/core/export-html/template.html +55 -55
  8. package/dist/core/export-html/template.js +1864 -1864
  9. package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
  10. package/dist/core/export-html/vendor/marked.min.js +78 -78
  11. package/dist/core/messages.js +7 -7
  12. package/dist/extensions/context-compaction-reminder.test.ts +82 -82
  13. package/dist/extensions/context-compaction-reminder.ts +28 -28
  14. package/dist/extensions/pi-hermes-memory/scripts/check-min-sdk.mjs +0 -0
  15. package/dist/extensions/pi-hermes-memory/tests/run-all.sh +0 -0
  16. package/dist/extensions/pi-intercom/LICENSE +21 -21
  17. package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
  18. package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
  19. package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
  20. package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
  21. package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
  22. package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
  23. package/dist/extensions/pi-intercom/cwd.ts +31 -31
  24. package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
  25. package/dist/extensions/pi-intercom/format-context.ts +32 -32
  26. package/dist/extensions/pi-intercom/index.ts +71 -2
  27. package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
  28. package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
  29. package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
  30. package/dist/extensions/pi-subagents/.github/assets/subagent-fleet-inspector.png +0 -0
  31. package/dist/extensions/pi-subagents/.github/workflows/release.yml +1 -1
  32. package/dist/extensions/pi-subagents/.github/workflows/test.yml +1 -1
  33. package/dist/extensions/pi-subagents/.greptile/config.json +1 -1
  34. package/dist/extensions/pi-subagents/.greptile/files.json +1 -1
  35. package/dist/extensions/pi-subagents/.greptile/rules.md +1 -1
  36. package/dist/extensions/pi-subagents/.oxlintrc.json +2 -2
  37. package/dist/extensions/pi-subagents/AGENTS.md +1 -1
  38. package/dist/extensions/pi-subagents/CHANGELOG.md +34 -2
  39. package/dist/extensions/pi-subagents/LICENSE +1 -1
  40. package/dist/extensions/pi-subagents/README.md +1 -1
  41. package/dist/extensions/pi-subagents/VISION.md +1 -1
  42. package/dist/extensions/pi-subagents/agents/architect.md +1 -1
  43. package/dist/extensions/pi-subagents/agents/builder.md +1 -1
  44. package/dist/extensions/pi-subagents/agents/claude-code-writer.md +1 -1
  45. package/dist/extensions/pi-subagents/agents/claude-code.md +1 -1
  46. package/dist/extensions/pi-subagents/agents/codex-exec-writer.md +1 -1
  47. package/dist/extensions/pi-subagents/agents/codex-exec.md +1 -1
  48. package/dist/extensions/pi-subagents/agents/commentator.md +1 -1
  49. package/dist/extensions/pi-subagents/agents/cursor-agent-writer.md +1 -1
  50. package/dist/extensions/pi-subagents/agents/cursor-agent.md +1 -1
  51. package/dist/extensions/pi-subagents/agents/delegate.md +1 -1
  52. package/dist/extensions/pi-subagents/agents/explorer.md +1 -1
  53. package/dist/extensions/pi-subagents/agents/oracle.md +1 -1
  54. package/dist/extensions/pi-subagents/agents/recapper.md +1 -1
  55. package/dist/extensions/pi-subagents/agents/researcher.md +1 -1
  56. package/dist/extensions/pi-subagents/agents/reviewer.md +1 -1
  57. package/dist/extensions/pi-subagents/agents/scout.md +1 -1
  58. package/dist/extensions/pi-subagents/agents/worker.md +1 -1
  59. package/dist/extensions/pi-subagents/async-retention-discovery-worker.mjs +1 -1
  60. package/dist/extensions/pi-subagents/docs/agents.md +20 -20
  61. package/dist/extensions/pi-subagents/docs/configuration.md +10 -6
  62. package/dist/extensions/pi-subagents/docs/extension-api.md +15 -8
  63. package/dist/extensions/pi-subagents/docs/missions.md +1 -1
  64. package/dist/extensions/pi-subagents/docs/models.md +2 -2
  65. package/dist/extensions/pi-subagents/docs/observability.md +2 -2
  66. package/dist/extensions/pi-subagents/docs/tool-reference.md +13 -4
  67. package/dist/extensions/pi-subagents/docs/watchdog.md +1 -1
  68. package/dist/extensions/pi-subagents/docs/workflows.md +15 -14
  69. package/dist/extensions/pi-subagents/index.ts +1 -1
  70. package/dist/extensions/pi-subagents/inspector-runner.mjs +1 -1
  71. package/dist/extensions/pi-subagents/install.mjs +3 -2
  72. package/dist/extensions/pi-subagents/package-lock.json +3 -3
  73. package/dist/extensions/pi-subagents/package.json +2 -2
  74. package/dist/extensions/pi-subagents/prompts/council.md +1 -1
  75. package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
  76. package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +1 -1
  77. package/dist/extensions/pi-subagents/prompts/parallel-research.md +1 -1
  78. package/dist/extensions/pi-subagents/prompts/parallel-review.md +1 -1
  79. package/dist/extensions/pi-subagents/prompts/review-loop.md +1 -1
  80. package/dist/extensions/pi-subagents/skills/council-mode/SKILL.md +1 -1
  81. package/dist/extensions/pi-subagents/skills/council-mode/references/pass-contracts.md +1 -1
  82. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +7 -5
  83. package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +2 -2
  84. package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +43 -12
  85. package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +1 -1
  86. package/dist/extensions/pi-subagents/skills/pi-subagents/references/multi-lane-orchestration.md +2 -2
  87. package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +5 -5
  88. package/dist/extensions/pi-subagents/skills/pi-subagents/references/review-and-validation.md +2 -2
  89. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +103 -64
  90. package/dist/extensions/pi-subagents/src/agents/agent-memory.ts +1 -1
  91. package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +1 -1
  92. package/dist/extensions/pi-subagents/src/agents/agent-scope.ts +1 -1
  93. package/dist/extensions/pi-subagents/src/agents/agent-selection.ts +1 -1
  94. package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +1 -1
  95. package/dist/extensions/pi-subagents/src/agents/agents.ts +527 -221
  96. package/dist/extensions/pi-subagents/src/agents/builtin-names.ts +1 -1
  97. package/dist/extensions/pi-subagents/src/agents/chain-serializer.ts +1 -1
  98. package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +1 -1
  99. package/dist/extensions/pi-subagents/src/agents/identity.ts +1 -1
  100. package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +1 -1
  101. package/dist/extensions/pi-subagents/src/agents/runtime-agent-events.ts +1 -1
  102. package/dist/extensions/pi-subagents/src/agents/runtime-agent-registry.ts +1 -1
  103. package/dist/extensions/pi-subagents/src/agents/skills.ts +1 -1
  104. package/dist/extensions/pi-subagents/src/api/agents.ts +1 -1
  105. package/dist/extensions/pi-subagents/src/api/background-work.ts +8 -3
  106. package/dist/extensions/pi-subagents/src/api/capability-ceiling.ts +1 -1
  107. package/dist/extensions/pi-subagents/src/api/control-channel.ts +1 -1
  108. package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -1
  109. package/dist/extensions/pi-subagents/src/api/external-job-provider.ts +1 -1
  110. package/dist/extensions/pi-subagents/src/api/external-runs.ts +68 -5
  111. package/dist/extensions/pi-subagents/src/api/intercom-bridge.ts +1 -1
  112. package/dist/extensions/pi-subagents/src/api/pi-args.ts +1 -1
  113. package/dist/extensions/pi-subagents/src/api/preflight.ts +14 -9
  114. package/dist/extensions/pi-subagents/src/api/project-panes.ts +1 -1
  115. package/dist/extensions/pi-subagents/src/api/shared-types.ts +2 -1
  116. package/dist/extensions/pi-subagents/src/extension/config.ts +1 -1
  117. package/dist/extensions/pi-subagents/src/extension/control-notices.ts +1 -1
  118. package/dist/extensions/pi-subagents/src/extension/doctor.ts +1 -1
  119. package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +1 -1
  120. package/dist/extensions/pi-subagents/src/extension/index.ts +8 -5
  121. package/dist/extensions/pi-subagents/src/extension/public-execution.ts +48 -5
  122. package/dist/extensions/pi-subagents/src/extension/rpc.ts +63 -5
  123. package/dist/extensions/pi-subagents/src/extension/schemas.ts +12 -8
  124. package/dist/extensions/pi-subagents/src/extension/steering-notices.ts +1 -1
  125. package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +1 -1
  126. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +8 -4
  127. package/dist/extensions/pi-subagents/src/extension/tool-result.ts +1 -1
  128. package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +1 -1
  129. package/dist/extensions/pi-subagents/src/inspectors/herdr/client.ts +1 -1
  130. package/dist/extensions/pi-subagents/src/inspectors/herdr/focus.ts +1 -1
  131. package/dist/extensions/pi-subagents/src/inspectors/herdr/inspector-runner.ts +1 -1
  132. package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +1 -1
  133. package/dist/extensions/pi-subagents/src/inspectors/herdr/session-roots-codec.ts +1 -1
  134. package/dist/extensions/pi-subagents/src/inspectors/herdr/shell-command.ts +1 -1
  135. package/dist/extensions/pi-subagents/src/integrations/herdr-status.ts +1 -1
  136. package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +1 -1
  137. package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +1 -1
  138. package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +1 -1
  139. package/dist/extensions/pi-subagents/src/missions/actions.ts +1 -1
  140. package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +1 -1
  141. package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +1 -1
  142. package/dist/extensions/pi-subagents/src/missions/store.ts +1 -1
  143. package/dist/extensions/pi-subagents/src/missions/types.ts +1 -1
  144. package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +1 -1
  145. package/dist/extensions/pi-subagents/src/policy/authority.ts +1 -1
  146. package/dist/extensions/pi-subagents/src/profiles/profiles.ts +1 -1
  147. package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +1 -1
  148. package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +1 -1
  149. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +52 -36
  150. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +63 -4
  151. package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +4 -2
  152. package/dist/extensions/pi-subagents/src/runs/background/async-retention.ts +1 -1
  153. package/dist/extensions/pi-subagents/src/runs/background/async-status-snapshot.ts +1 -1
  154. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +69 -10
  155. package/dist/extensions/pi-subagents/src/runs/background/auto-drain.ts +2 -2
  156. package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +1 -1
  157. package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +1 -1
  158. package/dist/extensions/pi-subagents/src/runs/background/completion-batcher.ts +1 -1
  159. package/dist/extensions/pi-subagents/src/runs/background/completion-dedupe.ts +1 -1
  160. package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +1 -1
  161. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +1 -1
  162. package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +2 -2
  163. package/dist/extensions/pi-subagents/src/runs/background/index-segment.ts +1 -1
  164. package/dist/extensions/pi-subagents/src/runs/background/inspect-rpc.ts +1 -1
  165. package/dist/extensions/pi-subagents/src/runs/background/notify.ts +1 -1
  166. package/dist/extensions/pi-subagents/src/runs/background/owned-process-tree.ts +1 -1
  167. package/dist/extensions/pi-subagents/src/runs/background/parallel-groups.ts +1 -1
  168. package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +1 -1
  169. package/dist/extensions/pi-subagents/src/runs/background/result-delivery-ownership.ts +1 -1
  170. package/dist/extensions/pi-subagents/src/runs/background/result-files.ts +1 -1
  171. package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +2 -2
  172. package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +2 -2
  173. package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +1 -1
  174. package/dist/extensions/pi-subagents/src/runs/background/run-id-query.ts +1 -1
  175. package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +1 -1
  176. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +3 -3
  177. package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +1 -1
  178. package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +1 -1
  179. package/dist/extensions/pi-subagents/src/runs/background/steering.ts +1 -1
  180. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +2 -3
  181. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +21 -22
  182. package/dist/extensions/pi-subagents/src/runs/background/terminal-run-index.ts +1 -1
  183. package/dist/extensions/pi-subagents/src/runs/background/top-level-async.ts +1 -1
  184. package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +2 -2
  185. package/dist/extensions/pi-subagents/src/runs/background/wait-config.ts +1 -1
  186. package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +1 -1
  187. package/dist/extensions/pi-subagents/src/runs/background/wait-tool.ts +25 -19
  188. package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +1 -1
  189. package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +1 -1
  190. package/dist/extensions/pi-subagents/src/runs/foreground/async-stop-action.ts +1 -1
  191. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +63 -4
  192. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +1 -1
  193. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +1 -1
  194. package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +1 -1
  195. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +179 -59
  196. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-detach-reconcile.ts +1 -1
  197. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +1 -1
  198. package/dist/extensions/pi-subagents/src/runs/shared/abort-recovery.ts +1 -1
  199. package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +44 -19
  200. package/dist/extensions/pi-subagents/src/runs/shared/agent-contract.ts +1 -1
  201. package/dist/extensions/pi-subagents/src/runs/shared/async-status-projection.ts +1 -1
  202. package/dist/extensions/pi-subagents/src/runs/shared/background-process-options.ts +1 -1
  203. package/dist/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts +1 -1
  204. package/dist/extensions/pi-subagents/src/runs/shared/chain-outputs.ts +1 -1
  205. package/dist/extensions/pi-subagents/src/runs/shared/child-identity.ts +1 -1
  206. package/dist/extensions/pi-subagents/src/runs/shared/child-launch-plan.ts +1 -1
  207. package/dist/extensions/pi-subagents/src/runs/shared/child-protocol.ts +1 -1
  208. package/dist/extensions/pi-subagents/src/runs/shared/claude-code-adapter.ts +1 -1
  209. package/dist/extensions/pi-subagents/src/runs/shared/codex-exec-adapter.ts +1 -1
  210. package/dist/extensions/pi-subagents/src/runs/shared/completion-evidence.ts +1 -1
  211. package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +1 -1
  212. package/dist/extensions/pi-subagents/src/runs/shared/context-mode.ts +1 -1
  213. package/dist/extensions/pi-subagents/src/runs/shared/cursor-agent-adapter.ts +1 -1
  214. package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
  215. package/dist/extensions/pi-subagents/src/runs/shared/extension-bindings.ts +1 -1
  216. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-contract.ts +1 -1
  217. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-preflight.ts +1 -1
  218. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-runner.ts +1 -1
  219. package/dist/extensions/pi-subagents/src/runs/shared/external-job-bridge.ts +1 -1
  220. package/dist/extensions/pi-subagents/src/runs/shared/external-job-runner.ts +1 -1
  221. package/dist/extensions/pi-subagents/src/runs/shared/fast-mode-extension.ts +1 -1
  222. package/dist/extensions/pi-subagents/src/runs/shared/host-step-status.ts +2 -1
  223. package/dist/extensions/pi-subagents/src/runs/shared/lane-metadata.ts +1 -1
  224. package/dist/extensions/pi-subagents/src/runs/shared/launch-cwd.ts +1 -1
  225. package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +1 -1
  226. package/dist/extensions/pi-subagents/src/runs/shared/long-running-guard.ts +1 -1
  227. package/dist/extensions/pi-subagents/src/runs/shared/mcp-config-sources.ts +1 -1
  228. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -1
  229. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-grant.ts +1 -1
  230. package/dist/extensions/pi-subagents/src/runs/shared/model-exclusions.ts +1 -1
  231. package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +62 -18
  232. package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +1 -1
  233. package/dist/extensions/pi-subagents/src/runs/shared/mutation-evidence.ts +1 -1
  234. package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +1 -1
  235. package/dist/extensions/pi-subagents/src/runs/shared/nested-path.ts +1 -1
  236. package/dist/extensions/pi-subagents/src/runs/shared/nested-render.ts +1 -1
  237. package/dist/extensions/pi-subagents/src/runs/shared/orca-progress-tabs.ts +1 -1
  238. package/dist/extensions/pi-subagents/src/runs/shared/parallel-handoff.ts +1 -1
  239. package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +1 -1
  240. package/dist/extensions/pi-subagents/src/runs/shared/permissions.ts +2 -2
  241. package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +3 -3
  242. package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +1 -1
  243. package/dist/extensions/pi-subagents/src/runs/shared/process-signal.ts +1 -1
  244. package/dist/extensions/pi-subagents/src/runs/shared/run-fanout-budget.ts +1 -1
  245. package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +1 -1
  246. package/dist/extensions/pi-subagents/src/runs/shared/runtime-acknowledged-extensions.ts +1 -1
  247. package/dist/extensions/pi-subagents/src/runs/shared/session-lease.ts +1 -1
  248. package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +1 -1
  249. package/dist/extensions/pi-subagents/src/runs/shared/spawn-budget.ts +1 -1
  250. package/dist/extensions/pi-subagents/src/runs/shared/structured-output.ts +1 -1
  251. package/dist/extensions/pi-subagents/src/runs/shared/subagent-control.ts +1 -1
  252. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +2 -2
  253. package/dist/extensions/pi-subagents/src/runs/shared/subagent-startup-retry.ts +1 -1
  254. package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +1 -1
  255. package/dist/extensions/pi-subagents/src/runs/shared/tool-availability.ts +1 -1
  256. package/dist/extensions/pi-subagents/src/runs/shared/tool-budget.ts +1 -1
  257. package/dist/extensions/pi-subagents/src/runs/shared/tool-timeout.ts +2 -2
  258. package/dist/extensions/pi-subagents/src/runs/shared/usage-budget.ts +1 -1
  259. package/dist/extensions/pi-subagents/src/runs/shared/workflow-graph.ts +4 -3
  260. package/dist/extensions/pi-subagents/src/runs/shared/worktree-cleanup-plan.ts +1 -1
  261. package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +1 -1
  262. package/dist/extensions/pi-subagents/src/shared/accessible-dir.ts +1 -1
  263. package/dist/extensions/pi-subagents/src/shared/agent-stream-options.ts +1 -1
  264. package/dist/extensions/pi-subagents/src/shared/artifacts.ts +1 -1
  265. package/dist/extensions/pi-subagents/src/shared/atomic-json.ts +1 -1
  266. package/dist/extensions/pi-subagents/src/shared/capacity-resilient-json.ts +1 -1
  267. package/dist/extensions/pi-subagents/src/shared/child-session-name.ts +2 -2
  268. package/dist/extensions/pi-subagents/src/shared/child-transcript.ts +1 -1
  269. package/dist/extensions/pi-subagents/src/shared/completion-owner.ts +1 -1
  270. package/dist/extensions/pi-subagents/src/shared/display-text.ts +1 -1
  271. package/dist/extensions/pi-subagents/src/shared/extension-context.ts +1 -1
  272. package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +1 -1
  273. package/dist/extensions/pi-subagents/src/shared/file-system-retry.ts +1 -1
  274. package/dist/extensions/pi-subagents/src/shared/fork-context.ts +1 -1
  275. package/dist/extensions/pi-subagents/src/shared/formatters.ts +1 -1
  276. package/dist/extensions/pi-subagents/src/shared/jsonl-writer.ts +1 -1
  277. package/dist/extensions/pi-subagents/src/shared/launch-contract.ts +1 -1
  278. package/dist/extensions/pi-subagents/src/shared/model-info.ts +1 -1
  279. package/dist/extensions/pi-subagents/src/shared/node-executable.ts +1 -1
  280. package/dist/extensions/pi-subagents/src/shared/post-exit-stdio-guard.ts +1 -1
  281. package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +1 -1
  282. package/dist/extensions/pi-subagents/src/shared/pruned-fork.ts +1 -1
  283. package/dist/extensions/pi-subagents/src/shared/session-file-trust.ts +1 -1
  284. package/dist/extensions/pi-subagents/src/shared/session-identity.ts +1 -1
  285. package/dist/extensions/pi-subagents/src/shared/session-tokens.ts +1 -1
  286. package/dist/extensions/pi-subagents/src/shared/settings.ts +1 -1
  287. package/dist/extensions/pi-subagents/src/shared/shortcuts.ts +1 -1
  288. package/dist/extensions/pi-subagents/src/shared/status-format.ts +1 -1
  289. package/dist/extensions/pi-subagents/src/shared/thinking-ceiling.ts +1 -1
  290. package/dist/extensions/pi-subagents/src/shared/types.ts +41 -4
  291. package/dist/extensions/pi-subagents/src/shared/utf8.ts +1 -1
  292. package/dist/extensions/pi-subagents/src/shared/utils.ts +1 -1
  293. package/dist/extensions/pi-subagents/src/shared/watch-strategy.ts +1 -1
  294. package/dist/extensions/pi-subagents/src/shared/workflow-child-permit.ts +91 -0
  295. package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -1
  296. package/dist/extensions/pi-subagents/src/slash/delegation-json.ts +1 -1
  297. package/dist/extensions/pi-subagents/src/slash/delegation-request.ts +1 -1
  298. package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +38 -2
  299. package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +1 -1
  300. package/dist/extensions/pi-subagents/src/slash/selector.ts +1 -1
  301. package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +1 -1
  302. package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +19 -27
  303. package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +1 -1
  304. package/dist/extensions/pi-subagents/src/slash/subagents-admin.ts +1 -1
  305. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +1 -1
  306. package/dist/extensions/pi-subagents/src/tui/fleet-transcript.ts +1 -1
  307. package/dist/extensions/pi-subagents/src/tui/fleet.ts +1 -1
  308. package/dist/extensions/pi-subagents/src/tui/render-helpers.ts +1 -1
  309. package/dist/extensions/pi-subagents/src/tui/render.ts +96 -53
  310. package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +1 -1
  311. package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +1 -1
  312. package/dist/extensions/pi-subagents/src/watchdog/child-status.ts +1 -1
  313. package/dist/extensions/pi-subagents/src/watchdog/emission-guard.ts +1 -1
  314. package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +1 -1
  315. package/dist/extensions/pi-subagents/src/watchdog/model-selection.ts +1 -1
  316. package/dist/extensions/pi-subagents/src/watchdog/permission-arbiter.ts +1 -1
  317. package/dist/extensions/pi-subagents/src/watchdog/register-child.ts +1 -1
  318. package/dist/extensions/pi-subagents/src/watchdog/register-main.ts +1 -1
  319. package/dist/extensions/pi-subagents/src/watchdog/render.ts +1 -1
  320. package/dist/extensions/pi-subagents/src/watchdog/review.ts +1 -1
  321. package/dist/extensions/pi-subagents/src/watchdog/runtime.ts +1 -1
  322. package/dist/extensions/pi-subagents/src/watchdog/scope.ts +1 -1
  323. package/dist/extensions/pi-subagents/src/watchdog/settings.ts +1 -1
  324. package/dist/extensions/pi-subagents/src/watchdog/tool-actions.ts +1 -1
  325. package/dist/extensions/pi-subagents/src/watchdog/turn-delta.ts +1 -1
  326. package/dist/extensions/pi-subagents/src/watchdog/types.ts +1 -1
  327. package/dist/extensions/pi-subagents/src/watchdog/warning-format.ts +1 -1
  328. package/dist/extensions/pi-subagents/src/workflows/chat-progress.ts +1 -1
  329. package/dist/extensions/pi-subagents/src/workflows/host-command.ts +1 -1
  330. package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +154 -5
  331. package/dist/extensions/pi-subagents/src/workflows/workflow-child-summary.ts +2 -2
  332. package/dist/extensions/pi-subagents/src/workflows/workflow-preflight.ts +1 -1
  333. package/dist/extensions/pi-subagents/src/workflows/workflow-receipt.ts +42 -5
  334. package/dist/extensions/pi-subagents/src/workflows/workflow-resources.ts +150 -0
  335. package/dist/extensions/pi-subagents/src/workflows/workflow-settlement.ts +1 -1
  336. package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +1 -1
  337. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
  338. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
  339. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
  340. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
  341. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
  342. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
  343. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
  344. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
  345. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
  346. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
  347. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
  348. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
  349. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
  350. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
  351. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
  352. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
  353. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
  354. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
  355. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
  356. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
  357. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
  358. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
  359. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
  360. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
  361. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
  362. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
  363. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
  364. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
  365. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
  366. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
  367. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
  368. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
  369. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
  370. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
  371. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
  372. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
  373. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
  374. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
  375. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
  376. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
  377. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
  378. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
  379. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
  380. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
  381. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
  382. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
  383. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
  384. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
  385. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
  386. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
  387. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
  388. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
  389. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
  390. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
  391. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
  392. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
  393. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
  394. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
  395. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
  396. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
  397. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
  398. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
  399. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
  400. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
  401. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
  402. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
  403. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
  404. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
  405. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
  406. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
  407. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
  408. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
  409. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
  410. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
  411. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
  412. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
  413. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
  414. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
  415. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
  416. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
  417. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  418. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
  419. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
  420. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
  421. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
  422. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
  423. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
  424. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
  425. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
  426. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
  427. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
  428. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
  429. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
  430. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
  431. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
  432. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
  433. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  434. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  435. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  436. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  437. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  438. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
  439. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  440. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  441. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  442. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
  443. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  444. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
  445. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  446. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  447. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
  448. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
  449. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  450. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  451. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
  452. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
  453. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  454. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  455. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
  456. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  457. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  458. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  459. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
  460. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  461. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  462. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  463. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  464. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  465. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  466. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  467. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  468. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  469. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  470. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
  471. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  472. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
  473. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
  474. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
  475. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
  476. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
  477. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
  478. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
  479. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
  480. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
  481. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
  482. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
  483. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
  484. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
  485. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
  486. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
  487. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
  488. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
  489. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
  490. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
  491. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
  492. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
  493. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
  494. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
  495. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
  496. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
  497. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
  498. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
  499. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
  500. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
  501. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
  502. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
  503. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
  504. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
  505. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
  506. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
  507. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
  508. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
  509. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
  510. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
  511. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
  512. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/index.mjs +1 -1
  513. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +1 -1
  514. package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +1 -1
  515. package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +198 -6
  516. package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +250 -18
  517. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +323 -4
  518. package/dist/extensions/pi-subagents/test/integration/claude-code-smoke.test.ts +5 -5
  519. package/dist/extensions/pi-subagents/test/integration/claude-code-writer-smoke.test.ts +5 -5
  520. package/dist/extensions/pi-subagents/test/integration/codex-exec-smoke.test.ts +5 -5
  521. package/dist/extensions/pi-subagents/test/integration/codex-exec-writer-smoke.test.ts +5 -5
  522. package/dist/extensions/pi-subagents/test/integration/cursor-agent-smoke.test.ts +5 -5
  523. package/dist/extensions/pi-subagents/test/integration/cursor-agent-writer-smoke.test.ts +5 -5
  524. package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
  525. package/dist/extensions/pi-subagents/test/integration/doctor-executor.test.ts +1 -1
  526. package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +1 -1
  527. package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +1 -1
  528. package/dist/extensions/pi-subagents/test/integration/foreground-result-size.test.ts +1 -1
  529. package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +52 -1
  530. package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +4 -3
  531. package/dist/extensions/pi-subagents/test/integration/orca-progress-tabs.test.ts +1 -1
  532. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +1 -1
  533. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +75 -7
  534. package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +1 -1
  535. package/dist/extensions/pi-subagents/test/integration/session-tokens.test.ts +1 -1
  536. package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +274 -12
  537. package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +46 -1
  538. package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +1 -1
  539. package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +1 -1
  540. package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +1 -1
  541. package/dist/extensions/pi-subagents/test/support/cursor-smoke-inputs.ts +5 -5
  542. package/dist/extensions/pi-subagents/test/support/helpers.ts +1 -1
  543. package/dist/extensions/pi-subagents/test/support/isolated-temp-root.mjs +1 -1
  544. package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
  545. package/dist/extensions/pi-subagents/test/support/mock-pi.ts +1 -1
  546. package/dist/extensions/pi-subagents/test/support/node-command.ts +1 -1
  547. package/dist/extensions/pi-subagents/test/support/real-session-child-cli.mjs +1 -1
  548. package/dist/extensions/pi-subagents/test/support/real-session-runner.ts +1 -1
  549. package/dist/extensions/pi-subagents/test/support/register-loader.mjs +1 -1
  550. package/dist/extensions/pi-subagents/test/support/session-lease-child.mjs +1 -1
  551. package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +1 -1
  552. package/dist/extensions/pi-subagents/test/unit/abort-recovery.test.ts +1 -1
  553. package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +66 -1
  554. package/dist/extensions/pi-subagents/test/unit/accessible-dir.test.ts +1 -1
  555. package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +1 -1
  556. package/dist/extensions/pi-subagents/test/unit/agent-contract.test.ts +1 -1
  557. package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +1 -1
  558. package/dist/extensions/pi-subagents/test/unit/agent-discovery-cache.test.ts +232 -0
  559. package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +1 -1
  560. package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +3 -3
  561. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +66 -6
  562. package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +2 -2
  563. package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +1 -1
  564. package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +1 -1
  565. package/dist/extensions/pi-subagents/test/unit/agent-scope.test.ts +1 -1
  566. package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +1 -1
  567. package/dist/extensions/pi-subagents/test/unit/agent-stream-options.test.ts +1 -1
  568. package/dist/extensions/pi-subagents/test/unit/anti-slop-oxlint.test.ts +16 -4
  569. package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +1 -1
  570. package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +9 -5
  571. package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +1 -1
  572. package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +1 -1
  573. package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +57 -1
  574. package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +1 -1
  575. package/dist/extensions/pi-subagents/test/unit/async-retention.test.ts +1 -1
  576. package/dist/extensions/pi-subagents/test/unit/async-status-projection.test.ts +1 -1
  577. package/dist/extensions/pi-subagents/test/unit/async-status-snapshot.test.ts +1 -1
  578. package/dist/extensions/pi-subagents/test/unit/atomic-json.test.ts +1 -1
  579. package/dist/extensions/pi-subagents/test/unit/authority-policy.test.ts +1 -1
  580. package/dist/extensions/pi-subagents/test/unit/auto-drain.test.ts +1 -1
  581. package/dist/extensions/pi-subagents/test/unit/background-process-options.test.ts +1 -1
  582. package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +57 -2
  583. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +1 -1
  584. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-pi-args.test.ts +1 -1
  585. package/dist/extensions/pi-subagents/test/unit/capability-ceiling.test.ts +1 -1
  586. package/dist/extensions/pi-subagents/test/unit/capacity-resilient-json.test.ts +1 -1
  587. package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +1 -1
  588. package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +1 -1
  589. package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +1 -1
  590. package/dist/extensions/pi-subagents/test/unit/child-launch-plan.test.ts +1 -1
  591. package/dist/extensions/pi-subagents/test/unit/child-protocol.test.ts +1 -1
  592. package/dist/extensions/pi-subagents/test/unit/child-session-name.test.ts +1 -1
  593. package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +1 -1
  594. package/dist/extensions/pi-subagents/test/unit/claude-code-adapter.test.ts +1 -1
  595. package/dist/extensions/pi-subagents/test/unit/close-grace-timer.test.ts +1 -1
  596. package/dist/extensions/pi-subagents/test/unit/codex-exec-adapter.test.ts +1 -1
  597. package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +1 -1
  598. package/dist/extensions/pi-subagents/test/unit/completion-batcher.test.ts +1 -1
  599. package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +1 -1
  600. package/dist/extensions/pi-subagents/test/unit/completion-evidence.test.ts +1 -1
  601. package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +1 -1
  602. package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +1 -1
  603. package/dist/extensions/pi-subagents/test/unit/config-dir-runtime.test.ts +1 -1
  604. package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +1 -1
  605. package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +1 -1
  606. package/dist/extensions/pi-subagents/test/unit/cursor-agent-adapter.test.ts +1 -1
  607. package/dist/extensions/pi-subagents/test/unit/cursor-smoke-inputs.test.ts +5 -5
  608. package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +1 -1
  609. package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +117 -1
  610. package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +1 -1
  611. package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +1 -1
  612. package/dist/extensions/pi-subagents/test/unit/ensure-accessible-dir.test.ts +1 -1
  613. package/dist/extensions/pi-subagents/test/unit/extension-bindings.test.ts +1 -1
  614. package/dist/extensions/pi-subagents/test/unit/extension-context.test.ts +1 -1
  615. package/dist/extensions/pi-subagents/test/unit/external-cli-runner.test.ts +1 -1
  616. package/dist/extensions/pi-subagents/test/unit/external-job-runner.test.ts +1 -1
  617. package/dist/extensions/pi-subagents/test/unit/external-runs.test.ts +103 -1
  618. package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +1 -1
  619. package/dist/extensions/pi-subagents/test/unit/fast-mode-extension.test.ts +1 -1
  620. package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +1 -1
  621. package/dist/extensions/pi-subagents/test/unit/file-system-retry.test.ts +1 -1
  622. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +1 -1
  623. package/dist/extensions/pi-subagents/test/unit/fleet-transcript.test.ts +1 -1
  624. package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +1 -1
  625. package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +1 -1
  626. package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +1 -1
  627. package/dist/extensions/pi-subagents/test/unit/fork-cache-key.test.ts +2 -2
  628. package/dist/extensions/pi-subagents/test/unit/fork-context.test.ts +1 -1
  629. package/dist/extensions/pi-subagents/test/unit/formatters.test.ts +1 -1
  630. package/dist/extensions/pi-subagents/test/unit/get-final-output.test.ts +1 -1
  631. package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +1 -1
  632. package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +1 -1
  633. package/dist/extensions/pi-subagents/test/unit/herdr-session-roots-codec.test.ts +1 -1
  634. package/dist/extensions/pi-subagents/test/unit/herdr-shell-command.test.ts +1 -1
  635. package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +1 -1
  636. package/dist/extensions/pi-subagents/test/unit/host-command.test.ts +1 -1
  637. package/dist/extensions/pi-subagents/test/unit/host-peer-runtime-imports.test.ts +1 -1
  638. package/dist/extensions/pi-subagents/test/unit/host-step-status.test.ts +1 -1
  639. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +8 -4
  640. package/dist/extensions/pi-subagents/test/unit/index-segment.test.ts +1 -1
  641. package/dist/extensions/pi-subagents/test/unit/inspect-rpc.test.ts +1 -1
  642. package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +1 -1
  643. package/dist/extensions/pi-subagents/test/unit/jsonl-writer.test.ts +1 -1
  644. package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +1 -1
  645. package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-grant.test.ts +1 -1
  646. package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +1 -1
  647. package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +1 -1
  648. package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +1 -1
  649. package/dist/extensions/pi-subagents/test/unit/mock-pi.test.ts +1 -1
  650. package/dist/extensions/pi-subagents/test/unit/model-exclusions.test.ts +1 -1
  651. package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +102 -6
  652. package/dist/extensions/pi-subagents/test/unit/model-info.test.ts +1 -1
  653. package/dist/extensions/pi-subagents/test/unit/model-scope-settings.test.ts +1 -1
  654. package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +1 -1
  655. package/dist/extensions/pi-subagents/test/unit/mutation-evidence.test.ts +1 -1
  656. package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +1 -1
  657. package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +1 -1
  658. package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +1 -1
  659. package/dist/extensions/pi-subagents/test/unit/node-executable.test.ts +1 -1
  660. package/dist/extensions/pi-subagents/test/unit/notify.test.ts +1 -1
  661. package/dist/extensions/pi-subagents/test/unit/orca-progress-tabs.test.ts +1 -1
  662. package/dist/extensions/pi-subagents/test/unit/owned-process-tree.test.ts +1 -1
  663. package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +1 -1
  664. package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +1 -1
  665. package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +1 -1
  666. package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +0 -1
  667. package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +1 -1
  668. package/dist/extensions/pi-subagents/test/unit/permissions.test.ts +1 -1
  669. package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +1 -1
  670. package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +5 -5
  671. package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +2 -2
  672. package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +1 -1
  673. package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +106 -1
  674. package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +1 -1
  675. package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +1 -1
  676. package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +1 -1
  677. package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +1 -1
  678. package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +1 -1
  679. package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +1 -1
  680. package/dist/extensions/pi-subagents/test/unit/pruned-fork.test.ts +1 -1
  681. package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +40 -3
  682. package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +1 -1
  683. package/dist/extensions/pi-subagents/test/unit/recursion-guard.test.ts +1 -1
  684. package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +60 -10
  685. package/dist/extensions/pi-subagents/test/unit/result-delivery-ownership.test.ts +1 -1
  686. package/dist/extensions/pi-subagents/test/unit/result-files.test.ts +1 -1
  687. package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +1 -1
  688. package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +1 -1
  689. package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +98 -1
  690. package/dist/extensions/pi-subagents/test/unit/run-fanout-budget.test.ts +1 -1
  691. package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +1 -1
  692. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +3 -3
  693. package/dist/extensions/pi-subagents/test/unit/runtime-acknowledged-extensions.test.ts +1 -1
  694. package/dist/extensions/pi-subagents/test/unit/runtime-agent-registration.test.ts +44 -2
  695. package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +3 -3
  696. package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +1 -1
  697. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +48 -5
  698. package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +427 -3
  699. package/dist/extensions/pi-subagents/test/unit/selector.test.ts +1 -1
  700. package/dist/extensions/pi-subagents/test/unit/session-lease.test.ts +1 -1
  701. package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +1 -1
  702. package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +1 -1
  703. package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +1 -1
  704. package/dist/extensions/pi-subagents/test/unit/spawn-budget.test.ts +1 -1
  705. package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +41 -1
  706. package/dist/extensions/pi-subagents/test/unit/status-format.test.ts +1 -1
  707. package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +1 -1
  708. package/dist/extensions/pi-subagents/test/unit/steering-notices.test.ts +1 -1
  709. package/dist/extensions/pi-subagents/test/unit/steering.test.ts +1 -1
  710. package/dist/extensions/pi-subagents/test/unit/streamed-progress-bounds.test.ts +1 -1
  711. package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +1 -1
  712. package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +1 -1
  713. package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +9 -1
  714. package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +11 -11
  715. package/dist/extensions/pi-subagents/test/unit/subagent-startup-retry.test.ts +1 -1
  716. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +5 -5
  717. package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +1 -1
  718. package/dist/extensions/pi-subagents/test/unit/temp-paths.test.ts +1 -1
  719. package/dist/extensions/pi-subagents/test/unit/thinking-ceiling.test.ts +1 -1
  720. package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +1 -1
  721. package/dist/extensions/pi-subagents/test/unit/tool-budget.test.ts +1 -1
  722. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +8 -6
  723. package/dist/extensions/pi-subagents/test/unit/tool-timeout.test.ts +3 -3
  724. package/dist/extensions/pi-subagents/test/unit/total-cost.test.ts +1 -1
  725. package/dist/extensions/pi-subagents/test/unit/ts-loader.test.ts +1 -1
  726. package/dist/extensions/pi-subagents/test/unit/types-fork-preamble.test.ts +1 -1
  727. package/dist/extensions/pi-subagents/test/unit/wait-completions.test.ts +1 -1
  728. package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +7 -5
  729. package/dist/extensions/pi-subagents/test/unit/watch-strategy.test.ts +1 -1
  730. package/dist/extensions/pi-subagents/test/unit/watchdog-change-signature.test.ts +1 -1
  731. package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +1 -1
  732. package/dist/extensions/pi-subagents/test/unit/watchdog-emission-guard.test.ts +1 -1
  733. package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
  734. package/dist/extensions/pi-subagents/test/unit/watchdog-model-selection.test.ts +1 -1
  735. package/dist/extensions/pi-subagents/test/unit/watchdog-permission-arbiter.test.ts +1 -1
  736. package/dist/extensions/pi-subagents/test/unit/watchdog-render.test.ts +1 -1
  737. package/dist/extensions/pi-subagents/test/unit/watchdog-review.test.ts +1 -1
  738. package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +1 -1
  739. package/dist/extensions/pi-subagents/test/unit/watchdog-scope.test.ts +1 -1
  740. package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +1 -1
  741. package/dist/extensions/pi-subagents/test/unit/watchdog-tool-actions.test.ts +1 -1
  742. package/dist/extensions/pi-subagents/test/unit/watchdog-turn-delta.test.ts +1 -1
  743. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +8 -6
  744. package/dist/extensions/pi-subagents/test/unit/windows-hide-spawn.test.ts +13 -1
  745. package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +1 -1
  746. package/dist/extensions/pi-subagents/test/unit/workflow-detach-reconcile.test.ts +1 -1
  747. package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +1 -1
  748. package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +12 -1
  749. package/dist/extensions/pi-subagents/test/unit/workflow-preflight.test.ts +1 -1
  750. package/dist/extensions/pi-subagents/test/unit/workflow-receipt.test.ts +31 -1
  751. package/dist/extensions/pi-subagents/test/unit/workflow-resources.test.ts +98 -0
  752. package/dist/extensions/pi-subagents/test/unit/workflow-resume-hint.test.ts +1 -1
  753. package/dist/extensions/pi-subagents/test/unit/worktree-cleanup-plan.test.ts +1 -1
  754. package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +1 -1
  755. package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +1 -1
  756. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/index.ts +1 -1
  757. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/rules/no-service-constructor-imports.ts +1 -1
  758. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/index.ts +1 -1
  759. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-chained-type-assertions.ts +1 -1
  760. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-conditional-empty-object-spread.ts +1 -1
  761. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-known-value-widening.ts +1 -1
  762. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-module-mocking.ts +1 -1
  763. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-object-parameters.ts +1 -1
  764. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-apply.ts +1 -1
  765. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-get.ts +1 -1
  766. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-runtime-typeof.ts +1 -1
  767. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-shape-in-symbol-names.ts +1 -1
  768. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-parameters.ts +1 -1
  769. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-returns.ts +1 -1
  770. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-type-aliases.ts +1 -1
  771. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts +1 -1
  772. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-widen-then-assert.ts +1 -1
  773. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/require-safety-comment-for-type-assertion.ts +1 -1
  774. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/dictionary-types.ts +1 -1
  775. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/lexical-type-parameters.ts +1 -1
  776. package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/reflect-method.ts +1 -1
  777. package/dist/extensions/pi-subagents/tsconfig.json +1 -1
  778. package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
  779. package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
  780. package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
  781. package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
  782. package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
  783. package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
  784. package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
  785. package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
  786. package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
  787. package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
  788. package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
  789. package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
  790. package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
  791. package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
  792. package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
  793. package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
  794. package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
  795. package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
  796. package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
  797. package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
  798. package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
  799. package/dist/extensions/ponytail/package.json +8 -8
  800. package/dist/extensions/question/constants.ts +30 -30
  801. package/dist/extensions/question/helpers.ts +58 -58
  802. package/dist/extensions/question/navigation.ts +14 -14
  803. package/dist/extensions/question/package.json +19 -19
  804. package/dist/extensions/question/selection-mode.ts +46 -46
  805. package/dist/extensions/question/shortcuts.ts +44 -44
  806. package/dist/extensions/question/types.ts +132 -132
  807. package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
  808. package/dist/extensions/test-resolve-hook.mjs +6 -6
  809. package/dist/extensions/web-agent-onboarding.ts +222 -222
  810. package/dist/package-manager-cli.js +71 -71
  811. package/dist/rpc-entry.js +0 -0
  812. package/dist/skills/improve-codebase/REFERENCE.md +78 -78
  813. package/docs/compaction.md +396 -396
  814. package/docs/containerization.md +111 -111
  815. package/docs/development.md +71 -71
  816. package/docs/docs.json +164 -164
  817. package/docs/environment-variables.md +86 -86
  818. package/docs/images/selesai-wordmark.png +0 -0
  819. package/docs/images/tokenin-preview.png +0 -0
  820. package/docs/index.md +83 -83
  821. package/docs/json.md +82 -82
  822. package/docs/models.md +502 -502
  823. package/docs/packages.md +227 -227
  824. package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
  825. package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
  826. package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
  827. package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
  828. package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
  829. package/docs/prompt-templates.md +95 -95
  830. package/docs/providers.md +293 -293
  831. package/docs/security.md +59 -59
  832. package/docs/session-format.md +414 -414
  833. package/docs/sessions.md +145 -145
  834. package/docs/shared-host-extensions.md +109 -109
  835. package/docs/shell-aliases.md +13 -13
  836. package/docs/skills.md +231 -231
  837. package/docs/terminal-setup.md +142 -142
  838. package/docs/termux.md +127 -127
  839. package/docs/themes.md +295 -295
  840. package/docs/tmux.md +63 -63
  841. package/docs/tui.md +927 -927
  842. package/docs/windows.md +17 -17
  843. package/examples/README.md +25 -25
  844. package/examples/extensions/README.md +211 -211
  845. package/examples/extensions/auto-commit-on-exit.ts +49 -49
  846. package/examples/extensions/bash-spawn-hook.ts +30 -30
  847. package/examples/extensions/bookmark.ts +50 -50
  848. package/examples/extensions/border-status-editor.ts +150 -150
  849. package/examples/extensions/built-in-tool-renderer.ts +249 -249
  850. package/examples/extensions/claude-rules.ts +86 -86
  851. package/examples/extensions/commands.ts +72 -72
  852. package/examples/extensions/confirm-destructive.ts +59 -59
  853. package/examples/extensions/custom-compaction.ts +130 -130
  854. package/examples/extensions/custom-footer.ts +64 -64
  855. package/examples/extensions/custom-header.ts +73 -73
  856. package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
  857. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
  858. package/examples/extensions/custom-provider-anthropic/package.json +19 -19
  859. package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
  860. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
  861. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
  862. package/examples/extensions/dirty-repo-guard.ts +56 -56
  863. package/examples/extensions/doom-overlay/README.md +46 -46
  864. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
  865. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  866. package/examples/extensions/doom-overlay/doom/build.sh +152 -152
  867. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
  868. package/examples/extensions/doom-overlay/doom-component.ts +132 -132
  869. package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
  870. package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
  871. package/examples/extensions/doom-overlay/index.ts +74 -74
  872. package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
  873. package/examples/extensions/dynamic-resources/SKILL.md +8 -8
  874. package/examples/extensions/dynamic-resources/dynamic.json +79 -79
  875. package/examples/extensions/dynamic-resources/dynamic.md +5 -5
  876. package/examples/extensions/dynamic-resources/index.ts +15 -15
  877. package/examples/extensions/dynamic-tools.ts +74 -74
  878. package/examples/extensions/event-bus.ts +43 -43
  879. package/examples/extensions/file-trigger.ts +41 -41
  880. package/examples/extensions/git-checkpoint.ts +53 -53
  881. package/examples/extensions/git-merge-and-resolve.ts +115 -115
  882. package/examples/extensions/github-issue-autocomplete.ts +185 -185
  883. package/examples/extensions/gondolin/index.ts +531 -531
  884. package/examples/extensions/gondolin/package-lock.json +185 -185
  885. package/examples/extensions/gondolin/package.json +19 -19
  886. package/examples/extensions/handoff.ts +199 -199
  887. package/examples/extensions/hello.ts +26 -26
  888. package/examples/extensions/hidden-thinking-label.ts +53 -53
  889. package/examples/extensions/inline-bash.ts +94 -94
  890. package/examples/extensions/input-transform-streaming.ts +39 -39
  891. package/examples/extensions/input-transform.ts +43 -43
  892. package/examples/extensions/interactive-shell.ts +196 -196
  893. package/examples/extensions/mac-system-theme.ts +47 -47
  894. package/examples/extensions/message-renderer.ts +59 -59
  895. package/examples/extensions/minimal-mode.ts +426 -426
  896. package/examples/extensions/modal-editor.ts +85 -85
  897. package/examples/extensions/model-status.ts +31 -31
  898. package/examples/extensions/notify.ts +55 -55
  899. package/examples/extensions/overlay-qa-tests.ts +1450 -1450
  900. package/examples/extensions/overlay-test.ts +153 -153
  901. package/examples/extensions/permission-gate.ts +34 -34
  902. package/examples/extensions/pirate.ts +47 -47
  903. package/examples/extensions/plan-mode/README.md +66 -66
  904. package/examples/extensions/plan-mode/index.ts +390 -390
  905. package/examples/extensions/plan-mode/utils.ts +168 -168
  906. package/examples/extensions/preset.ts +436 -436
  907. package/examples/extensions/project-trust.ts +64 -64
  908. package/examples/extensions/prompt-customizer.ts +97 -97
  909. package/examples/extensions/protected-paths.ts +30 -30
  910. package/examples/extensions/provider-payload.ts +18 -18
  911. package/examples/extensions/qna.ts +122 -122
  912. package/examples/extensions/question.ts +285 -285
  913. package/examples/extensions/questionnaire.ts +448 -448
  914. package/examples/extensions/rainbow-editor.ts +88 -88
  915. package/examples/extensions/reload-runtime.ts +37 -37
  916. package/examples/extensions/rpc-demo.ts +118 -118
  917. package/examples/extensions/sandbox/index.ts +321 -321
  918. package/examples/extensions/sandbox/package-lock.json +92 -92
  919. package/examples/extensions/sandbox/package.json +19 -19
  920. package/examples/extensions/send-user-message.ts +97 -97
  921. package/examples/extensions/session-name.ts +27 -27
  922. package/examples/extensions/shutdown-command.ts +63 -63
  923. package/examples/extensions/snake.ts +343 -343
  924. package/examples/extensions/space-invaders.ts +560 -560
  925. package/examples/extensions/ssh.ts +220 -220
  926. package/examples/extensions/status-line.ts +32 -32
  927. package/examples/extensions/structured-output.ts +65 -65
  928. package/examples/extensions/subagent/README.md +175 -175
  929. package/examples/extensions/subagent/agents/planner.md +37 -37
  930. package/examples/extensions/subagent/agents/reviewer.md +35 -35
  931. package/examples/extensions/subagent/agents/scout.md +50 -50
  932. package/examples/extensions/subagent/agents/worker.md +24 -24
  933. package/examples/extensions/subagent/agents.ts +126 -126
  934. package/examples/extensions/subagent/index.ts +1015 -1015
  935. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
  936. package/examples/extensions/subagent/prompts/implement.md +10 -10
  937. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
  938. package/examples/extensions/summarize.ts +209 -209
  939. package/examples/extensions/system-prompt-header.ts +17 -17
  940. package/examples/extensions/tic-tac-toe.ts +1008 -1008
  941. package/examples/extensions/timed-confirm.ts +70 -70
  942. package/examples/extensions/titlebar-spinner.ts +58 -58
  943. package/examples/extensions/todo.ts +297 -297
  944. package/examples/extensions/tool-override.ts +144 -144
  945. package/examples/extensions/tools.ts +146 -146
  946. package/examples/extensions/trigger-compact.ts +50 -50
  947. package/examples/extensions/truncated-tool.ts +195 -195
  948. package/examples/extensions/widget-placement.ts +9 -9
  949. package/examples/extensions/with-deps/index.ts +32 -32
  950. package/examples/extensions/with-deps/package-lock.json +31 -31
  951. package/examples/extensions/with-deps/package.json +22 -22
  952. package/examples/extensions/working-indicator.ts +123 -123
  953. package/examples/extensions/working-message-test.ts +25 -25
  954. package/examples/rpc-extension-ui.ts +632 -632
  955. package/examples/sdk/01-minimal.ts +26 -26
  956. package/examples/sdk/02-custom-model.ts +53 -53
  957. package/examples/sdk/03-custom-prompt.ts +75 -75
  958. package/examples/sdk/04-skills.ts +55 -55
  959. package/examples/sdk/05-tools.ts +48 -48
  960. package/examples/sdk/06-extensions.ts +99 -99
  961. package/examples/sdk/07-context-files.ts +47 -47
  962. package/examples/sdk/08-prompt-templates.ts +51 -51
  963. package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
  964. package/examples/sdk/10-settings.ts +53 -53
  965. package/examples/sdk/11-sessions.ts +52 -52
  966. package/examples/sdk/12-full-control.ts +79 -79
  967. package/examples/sdk/13-session-runtime.ts +67 -67
  968. package/examples/sdk/README.md +144 -144
  969. package/package.json +1 -1
  970. package/dist/extensions/pi-subagents/banner.png +0 -0
@@ -1,396 +1,396 @@
1
- # Compaction & Branch Summarization
2
-
3
- LLMs have limited context windows. When conversations grow too long, pi uses compaction to summarize older content while preserving recent work. This page covers both auto-compaction and branch summarization.
4
-
5
- **Source files** ([pi-mono](https://github.com/earendil-works/pi-mono)):
6
- - [`packages/coding-agent/src/core/compaction/compaction.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) - Auto-compaction logic
7
- - [`packages/coding-agent/src/core/compaction/branch-summarization.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts) - Branch summarization
8
- - [`packages/coding-agent/src/core/compaction/utils.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/utils.ts) - Shared utilities (file tracking, serialization)
9
- - [`packages/coding-agent/src/core/session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts) - Entry types (`CompactionEntry`, `BranchSummaryEntry`)
10
- - [`packages/coding-agent/src/core/extensions/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/extensions/types.ts) - Extension event types
11
-
12
- For TypeScript definitions in your project, inspect `node_modules/@earendil-works/pi-coding-agent/dist/`.
13
-
14
- ## Overview
15
-
16
- Pi has two summarization mechanisms:
17
-
18
- | Mechanism | Trigger | Purpose |
19
- |-----------|---------|---------|
20
- | Compaction | Context exceeds threshold, or `/compact` | Summarize old messages to free up context |
21
- | Branch summarization | `/tree` navigation | Preserve context when switching branches |
22
-
23
- Both use the same structured summary format and track file operations cumulatively. Compaction and branch-summary requests use fresh routing session IDs and, where supported by the provider, disable prompt-cache writes because these one-off prompts are unlikely to be reused.
24
-
25
- ## Compaction
26
-
27
- ### When It Triggers
28
-
29
- Auto-compaction triggers when:
30
-
31
- ```
32
- contextTokens > contextWindow - reserveTokens
33
- ```
34
-
35
- By default, `reserveTokens` is 16384 tokens (configurable in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`). This leaves room for the LLM's response.
36
-
37
- You can also trigger manually with `/compact [instructions]`, where optional instructions focus the summary.
38
-
39
- ### How It Works
40
-
41
- 1. **Find cut point**: Walk backwards from newest message, accumulating token estimates until `keepRecentTokens` (default 20k, configurable in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`) is reached
42
- 2. **Extract messages**: Collect messages from the previous kept boundary (or session start) up to the cut point
43
- 3. **Generate summary**: Call LLM to summarize with structured format, passing the previous summary as iterative context when present
44
- 4. **Append entry**: Save `CompactionEntry` with summary and `firstKeptEntryId`
45
- 5. **Reload**: Session reloads, using summary + messages from `firstKeptEntryId` onwards
46
-
47
- ```
48
- Before compaction:
49
-
50
- entry: 0 1 2 3 4 5 6 7 8 9
51
- ┌─────┬─────┬─────┬─────┬──────┬─────┬─────┬──────┬──────┬─────┐
52
- │ hdr │ usr │ ass │ tool │ usr │ ass │ tool │ tool │ ass │ tool│
53
- └─────┴─────┴─────┴──────┴─────┴─────┴──────┴──────┴─────┴─────┘
54
- └────────┬───────┘ └──────────────┬──────────────┘
55
- messagesToSummarize kept messages
56
- ↑
57
- firstKeptEntryId (entry 4)
58
-
59
- After compaction (new entry appended):
60
-
61
- entry: 0 1 2 3 4 5 6 7 8 9 10
62
- ┌─────┬─────┬─────┬─────┬──────┬─────┬─────┬──────┬──────┬─────┬─────┐
63
- │ hdr │ usr │ ass │ tool │ usr │ ass │ tool │ tool │ ass │ tool│ cmp │
64
- └─────┴─────┴─────┴──────┴─────┴─────┴──────┴──────┴─────┴─────┴─────┘
65
- └──────────┬──────┘ └──────────────────────┬───────────────────┘
66
- not sent to LLM sent to LLM
67
- ↑
68
- starts from firstKeptEntryId
69
-
70
- What the LLM sees:
71
-
72
- ┌────────┬─────────┬─────┬─────┬──────┬──────┬─────┬──────┐
73
- │ system │ summary │ usr │ ass │ tool │ tool │ ass │ tool │
74
- └────────┴─────────┴─────┴─────┴──────┴──────┴─────┴──────┘
75
- ↑ ↑ └─────────────────┬────────────────┘
76
- prompt from cmp messages from firstKeptEntryId
77
- ```
78
-
79
- On repeated compactions, the summarized span starts at the previous compaction's kept boundary (`firstKeptEntryId`), not at the compaction entry itself, falling back to the entry after the previous compaction if that kept entry cannot be found in the path. This preserves messages that survived the earlier compaction by including them in the next summarization pass as well. Pi also recalculates `tokensBefore` from the rebuilt session context before writing the new `CompactionEntry`, so the token count reflects the actual pre-compaction context being replaced.
80
-
81
- ### Split Turns
82
-
83
- A "turn" starts with a user message and includes all assistant responses and tool calls until the next user message. Normally, compaction cuts at turn boundaries.
84
-
85
- When a single turn exceeds `keepRecentTokens`, the cut point lands mid-turn at an assistant message. This is a "split turn":
86
-
87
- ```
88
- Split turn (one huge turn exceeds budget):
89
-
90
- entry: 0 1 2 3 4 5 6 7 8
91
- ┌─────┬─────┬─────┬──────┬─────┬──────┬──────┬─────┬──────┐
92
- │ hdr │ usr │ ass │ tool │ ass │ tool │ tool │ ass │ tool │
93
- └─────┴─────┴─────┴──────┴─────┴──────┴──────┴─────┴──────┘
94
- ↑ ↑
95
- turnStartIndex = 1 firstKeptEntryId = 7
96
- │ │
97
- └──── turnPrefixMessages (1-6) ───────┘
98
- └── kept (7-8)
99
-
100
- isSplitTurn = true
101
- messagesToSummarize = [] (no complete turns before)
102
- turnPrefixMessages = [usr, ass, tool, ass, tool, tool]
103
- ```
104
-
105
- For split turns, pi generates two summaries and merges them:
106
- 1. **History summary**: Previous context (if any)
107
- 2. **Turn prefix summary**: The early part of the split turn
108
-
109
- ### Cut Point Rules
110
-
111
- Valid cut points are:
112
- - User messages
113
- - Assistant messages
114
- - BashExecution messages
115
- - Custom messages (custom_message, branch_summary)
116
-
117
- Never cut at tool results (they must stay with their tool call).
118
-
119
- ### CompactionEntry Structure
120
-
121
- Defined in [`session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts):
122
-
123
- ```typescript
124
- interface CompactionEntry<T = unknown> {
125
- type: "compaction";
126
- id: string;
127
- parentId: string;
128
- timestamp: number;
129
- summary: string;
130
- firstKeptEntryId: string;
131
- tokensBefore: number;
132
- fromHook?: boolean; // true if provided by extension (legacy field name)
133
- details?: T; // implementation-specific data
134
- }
135
-
136
- // Default compaction uses this for details (from compaction.ts):
137
- interface CompactionDetails {
138
- readFiles: string[];
139
- modifiedFiles: string[];
140
- }
141
- ```
142
-
143
- Extensions can store any JSON-serializable data in `details`. The default compaction tracks file operations, but custom extension implementations can use their own structure.
144
-
145
- See [`prepareCompaction()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) and [`compact()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) for the implementation.
146
-
147
- ## Branch Summarization
148
-
149
- ### When It Triggers
150
-
151
- When you use `/tree` to navigate to a different branch, pi offers to summarize the work you're leaving. This injects context from the left branch into the new branch.
152
-
153
- ### How It Works
154
-
155
- 1. **Find common ancestor**: Deepest node shared by old and new positions
156
- 2. **Collect entries**: Walk from old leaf back to common ancestor
157
- 3. **Prepare with budget**: Include messages up to token budget (newest first)
158
- 4. **Generate summary**: Call LLM with structured format
159
- 5. **Append entry**: Save `BranchSummaryEntry` at navigation point
160
-
161
- ```
162
- Tree before navigation:
163
-
164
- ┌─ B ─ C ─ D (old leaf, being abandoned)
165
- A ───┤
166
- └─ E ─ F (target)
167
-
168
- Common ancestor: A
169
- Entries to summarize: B, C, D
170
-
171
- After navigation with summary:
172
-
173
- ┌─ B ─ C ─ D ─ [summary of B,C,D]
174
- A ───┤
175
- └─ E ─ F (new leaf)
176
- ```
177
-
178
- ### Cumulative File Tracking
179
-
180
- Both compaction and branch summarization track files cumulatively. When generating a summary, pi extracts file operations from:
181
- - Tool calls in the messages being summarized
182
- - Previous compaction or branch summary `details` (if any)
183
-
184
- This means file tracking accumulates across multiple compactions or nested branch summaries, preserving the full history of read and modified files.
185
-
186
- ### BranchSummaryEntry Structure
187
-
188
- Defined in [`session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts):
189
-
190
- ```typescript
191
- interface BranchSummaryEntry<T = unknown> {
192
- type: "branch_summary";
193
- id: string;
194
- parentId: string;
195
- timestamp: number;
196
- summary: string;
197
- fromId: string; // Entry we navigated from
198
- fromHook?: boolean; // true if provided by extension (legacy field name)
199
- details?: T; // implementation-specific data
200
- }
201
-
202
- // Default branch summarization uses this for details (from branch-summarization.ts):
203
- interface BranchSummaryDetails {
204
- readFiles: string[];
205
- modifiedFiles: string[];
206
- }
207
- ```
208
-
209
- Same as compaction, extensions can store custom data in `details`.
210
-
211
- See [`collectEntriesForBranchSummary()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts), [`prepareBranchEntries()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts), and [`generateBranchSummary()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts) for the implementation.
212
-
213
- ## Summary Format
214
-
215
- Both compaction and branch summarization use the same structured format:
216
-
217
- ```markdown
218
- ## Goal
219
- [What the user is trying to accomplish]
220
-
221
- ## Constraints & Preferences
222
- - [Requirements mentioned by user]
223
-
224
- ## Progress
225
- ### Done
226
- - [x] [Completed tasks]
227
-
228
- ### In Progress
229
- - [ ] [Current work]
230
-
231
- ### Blocked
232
- - [Issues, if any]
233
-
234
- ## Key Decisions
235
- - **[Decision]**: [Rationale]
236
-
237
- ## Next Steps
238
- 1. [What should happen next]
239
-
240
- ## Critical Context
241
- - [Data needed to continue]
242
-
243
- <read-files>
244
- path/to/file1.ts
245
- path/to/file2.ts
246
- </read-files>
247
-
248
- <modified-files>
249
- path/to/changed.ts
250
- </modified-files>
251
- ```
252
-
253
- ### Message Serialization
254
-
255
- Before summarization, messages are serialized to text via [`serializeConversation()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/utils.ts):
256
-
257
- ```
258
- [User]: What they said
259
- [Assistant thinking]: Internal reasoning
260
- [Assistant]: Response text
261
- [Assistant tool calls]: read(path="foo.ts"); edit(path="bar.ts", ...)
262
- [Tool result]: Output from tool
263
- ```
264
-
265
- This prevents the model from treating it as a conversation to continue.
266
-
267
- Tool results are truncated to 2000 characters during serialization. Content beyond that limit is replaced with a marker indicating how many characters were truncated. This keeps summarization requests within reasonable token budgets, since tool results (especially from `read` and `bash`) are typically the largest contributors to context size.
268
-
269
- ## Custom Summarization via Extensions
270
-
271
- Extensions can intercept and customize both compaction and branch summarization. See [`extensions/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/extensions/types.ts) for event type definitions.
272
-
273
- ### session_before_compact
274
-
275
- Fired before auto-compaction or `/compact`. Can cancel or provide custom summary. See `SessionBeforeCompactEvent` and `CompactionPreparation` in the types file.
276
-
277
- ```typescript
278
- pi.on("session_before_compact", async (event, ctx) => {
279
- const { preparation, branchEntries, customInstructions, reason, willRetry, signal } = event;
280
-
281
- // preparation.messagesToSummarize - messages to summarize
282
- // preparation.turnPrefixMessages - split turn prefix (if isSplitTurn)
283
- // preparation.previousSummary - previous compaction summary
284
- // preparation.fileOps - extracted file operations
285
- // preparation.tokensBefore - context tokens before compaction
286
- // preparation.firstKeptEntryId - where kept messages start
287
- // preparation.settings - compaction settings
288
-
289
- // branchEntries - all entries on current branch (for custom state)
290
- // reason - "manual" (/compact), "threshold", or "overflow"
291
- // willRetry - whether the aborted turn is retried after compaction (overflow recovery)
292
- // signal - AbortSignal (pass to LLM calls)
293
-
294
- // Cancel:
295
- return { cancel: true };
296
-
297
- // Custom summary:
298
- return {
299
- compaction: {
300
- summary: "Your summary...",
301
- firstKeptEntryId: preparation.firstKeptEntryId,
302
- tokensBefore: preparation.tokensBefore,
303
- details: { /* custom data */ },
304
- }
305
- };
306
- });
307
- ```
308
-
309
- #### Converting Messages to Text
310
-
311
- To generate a summary with your own model, convert messages to text using `serializeConversation`:
312
-
313
- ```typescript
314
- import { convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
315
-
316
- pi.on("session_before_compact", async (event, ctx) => {
317
- const { preparation } = event;
318
-
319
- // Convert AgentMessage[] to Message[], then serialize to text
320
- const conversationText = serializeConversation(
321
- convertToLlm(preparation.messagesToSummarize)
322
- );
323
- // Returns:
324
- // [User]: message text
325
- // [Assistant thinking]: thinking content
326
- // [Assistant]: response text
327
- // [Assistant tool calls]: read(path="..."); bash(command="...")
328
- // [Tool result]: output text
329
-
330
- // Now send to your model for summarization
331
- const summary = await myModel.summarize(conversationText);
332
-
333
- return {
334
- compaction: {
335
- summary,
336
- firstKeptEntryId: preparation.firstKeptEntryId,
337
- tokensBefore: preparation.tokensBefore,
338
- }
339
- };
340
- });
341
- ```
342
-
343
- See [custom-compaction.ts](../examples/extensions/custom-compaction.ts) for a complete example using a different model.
344
-
345
- ### session_before_tree
346
-
347
- Fired before `/tree` navigation. Always fires regardless of whether user chose to summarize. Can cancel navigation or provide custom summary.
348
-
349
- ```typescript
350
- pi.on("session_before_tree", async (event, ctx) => {
351
- const { preparation, signal } = event;
352
-
353
- // preparation.targetId - where we're navigating to
354
- // preparation.oldLeafId - current position (being abandoned)
355
- // preparation.commonAncestorId - shared ancestor
356
- // preparation.entriesToSummarize - entries that would be summarized
357
- // preparation.userWantsSummary - whether user chose to summarize
358
-
359
- // Cancel navigation entirely:
360
- return { cancel: true };
361
-
362
- // Provide custom summary (only used if userWantsSummary is true):
363
- if (preparation.userWantsSummary) {
364
- return {
365
- summary: {
366
- summary: "Your summary...",
367
- details: { /* custom data */ },
368
- }
369
- };
370
- }
371
- });
372
- ```
373
-
374
- See `SessionBeforeTreeEvent` and `TreePreparation` in the types file.
375
-
376
- ## Settings
377
-
378
- Configure compaction in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`:
379
-
380
- ```json
381
- {
382
- "compaction": {
383
- "enabled": true,
384
- "reserveTokens": 16384,
385
- "keepRecentTokens": 20000
386
- }
387
- }
388
- ```
389
-
390
- | Setting | Default | Description |
391
- |---------|---------|-------------|
392
- | `enabled` | `true` | Enable auto-compaction |
393
- | `reserveTokens` | `16384` | Tokens to reserve for LLM response |
394
- | `keepRecentTokens` | `20000` | Recent tokens to keep (not summarized) |
395
-
396
- Disable auto-compaction with `"enabled": false`. You can still compact manually with `/compact`.
1
+ # Compaction & Branch Summarization
2
+
3
+ LLMs have limited context windows. When conversations grow too long, pi uses compaction to summarize older content while preserving recent work. This page covers both auto-compaction and branch summarization.
4
+
5
+ **Source files** ([pi-mono](https://github.com/earendil-works/pi-mono)):
6
+ - [`packages/coding-agent/src/core/compaction/compaction.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) - Auto-compaction logic
7
+ - [`packages/coding-agent/src/core/compaction/branch-summarization.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts) - Branch summarization
8
+ - [`packages/coding-agent/src/core/compaction/utils.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/utils.ts) - Shared utilities (file tracking, serialization)
9
+ - [`packages/coding-agent/src/core/session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts) - Entry types (`CompactionEntry`, `BranchSummaryEntry`)
10
+ - [`packages/coding-agent/src/core/extensions/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/extensions/types.ts) - Extension event types
11
+
12
+ For TypeScript definitions in your project, inspect `node_modules/@earendil-works/pi-coding-agent/dist/`.
13
+
14
+ ## Overview
15
+
16
+ Pi has two summarization mechanisms:
17
+
18
+ | Mechanism | Trigger | Purpose |
19
+ |-----------|---------|---------|
20
+ | Compaction | Context exceeds threshold, or `/compact` | Summarize old messages to free up context |
21
+ | Branch summarization | `/tree` navigation | Preserve context when switching branches |
22
+
23
+ Both use the same structured summary format and track file operations cumulatively. Compaction and branch-summary requests use fresh routing session IDs and, where supported by the provider, disable prompt-cache writes because these one-off prompts are unlikely to be reused.
24
+
25
+ ## Compaction
26
+
27
+ ### When It Triggers
28
+
29
+ Auto-compaction triggers when:
30
+
31
+ ```
32
+ contextTokens > contextWindow - reserveTokens
33
+ ```
34
+
35
+ By default, `reserveTokens` is 16384 tokens (configurable in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`). This leaves room for the LLM's response.
36
+
37
+ You can also trigger manually with `/compact [instructions]`, where optional instructions focus the summary.
38
+
39
+ ### How It Works
40
+
41
+ 1. **Find cut point**: Walk backwards from newest message, accumulating token estimates until `keepRecentTokens` (default 20k, configurable in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`) is reached
42
+ 2. **Extract messages**: Collect messages from the previous kept boundary (or session start) up to the cut point
43
+ 3. **Generate summary**: Call LLM to summarize with structured format, passing the previous summary as iterative context when present
44
+ 4. **Append entry**: Save `CompactionEntry` with summary and `firstKeptEntryId`
45
+ 5. **Reload**: Session reloads, using summary + messages from `firstKeptEntryId` onwards
46
+
47
+ ```
48
+ Before compaction:
49
+
50
+ entry: 0 1 2 3 4 5 6 7 8 9
51
+ ┌─────┬─────┬─────┬─────┬──────┬─────┬─────┬──────┬──────┬─────┐
52
+ │ hdr │ usr │ ass │ tool │ usr │ ass │ tool │ tool │ ass │ tool│
53
+ └─────┴─────┴─────┴──────┴─────┴─────┴──────┴──────┴─────┴─────┘
54
+ └────────┬───────┘ └──────────────┬──────────────┘
55
+ messagesToSummarize kept messages
56
+ ↑
57
+ firstKeptEntryId (entry 4)
58
+
59
+ After compaction (new entry appended):
60
+
61
+ entry: 0 1 2 3 4 5 6 7 8 9 10
62
+ ┌─────┬─────┬─────┬─────┬──────┬─────┬─────┬──────┬──────┬─────┬─────┐
63
+ │ hdr │ usr │ ass │ tool │ usr │ ass │ tool │ tool │ ass │ tool│ cmp │
64
+ └─────┴─────┴─────┴──────┴─────┴─────┴──────┴──────┴─────┴─────┴─────┘
65
+ └──────────┬──────┘ └──────────────────────┬───────────────────┘
66
+ not sent to LLM sent to LLM
67
+ ↑
68
+ starts from firstKeptEntryId
69
+
70
+ What the LLM sees:
71
+
72
+ ┌────────┬─────────┬─────┬─────┬──────┬──────┬─────┬──────┐
73
+ │ system │ summary │ usr │ ass │ tool │ tool │ ass │ tool │
74
+ └────────┴─────────┴─────┴─────┴──────┴──────┴─────┴──────┘
75
+ ↑ ↑ └─────────────────┬────────────────┘
76
+ prompt from cmp messages from firstKeptEntryId
77
+ ```
78
+
79
+ On repeated compactions, the summarized span starts at the previous compaction's kept boundary (`firstKeptEntryId`), not at the compaction entry itself, falling back to the entry after the previous compaction if that kept entry cannot be found in the path. This preserves messages that survived the earlier compaction by including them in the next summarization pass as well. Pi also recalculates `tokensBefore` from the rebuilt session context before writing the new `CompactionEntry`, so the token count reflects the actual pre-compaction context being replaced.
80
+
81
+ ### Split Turns
82
+
83
+ A "turn" starts with a user message and includes all assistant responses and tool calls until the next user message. Normally, compaction cuts at turn boundaries.
84
+
85
+ When a single turn exceeds `keepRecentTokens`, the cut point lands mid-turn at an assistant message. This is a "split turn":
86
+
87
+ ```
88
+ Split turn (one huge turn exceeds budget):
89
+
90
+ entry: 0 1 2 3 4 5 6 7 8
91
+ ┌─────┬─────┬─────┬──────┬─────┬──────┬──────┬─────┬──────┐
92
+ │ hdr │ usr │ ass │ tool │ ass │ tool │ tool │ ass │ tool │
93
+ └─────┴─────┴─────┴──────┴─────┴──────┴──────┴─────┴──────┘
94
+ ↑ ↑
95
+ turnStartIndex = 1 firstKeptEntryId = 7
96
+ │ │
97
+ └──── turnPrefixMessages (1-6) ───────┘
98
+ └── kept (7-8)
99
+
100
+ isSplitTurn = true
101
+ messagesToSummarize = [] (no complete turns before)
102
+ turnPrefixMessages = [usr, ass, tool, ass, tool, tool]
103
+ ```
104
+
105
+ For split turns, pi generates two summaries and merges them:
106
+ 1. **History summary**: Previous context (if any)
107
+ 2. **Turn prefix summary**: The early part of the split turn
108
+
109
+ ### Cut Point Rules
110
+
111
+ Valid cut points are:
112
+ - User messages
113
+ - Assistant messages
114
+ - BashExecution messages
115
+ - Custom messages (custom_message, branch_summary)
116
+
117
+ Never cut at tool results (they must stay with their tool call).
118
+
119
+ ### CompactionEntry Structure
120
+
121
+ Defined in [`session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts):
122
+
123
+ ```typescript
124
+ interface CompactionEntry<T = unknown> {
125
+ type: "compaction";
126
+ id: string;
127
+ parentId: string;
128
+ timestamp: number;
129
+ summary: string;
130
+ firstKeptEntryId: string;
131
+ tokensBefore: number;
132
+ fromHook?: boolean; // true if provided by extension (legacy field name)
133
+ details?: T; // implementation-specific data
134
+ }
135
+
136
+ // Default compaction uses this for details (from compaction.ts):
137
+ interface CompactionDetails {
138
+ readFiles: string[];
139
+ modifiedFiles: string[];
140
+ }
141
+ ```
142
+
143
+ Extensions can store any JSON-serializable data in `details`. The default compaction tracks file operations, but custom extension implementations can use their own structure.
144
+
145
+ See [`prepareCompaction()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) and [`compact()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/compaction.ts) for the implementation.
146
+
147
+ ## Branch Summarization
148
+
149
+ ### When It Triggers
150
+
151
+ When you use `/tree` to navigate to a different branch, pi offers to summarize the work you're leaving. This injects context from the left branch into the new branch.
152
+
153
+ ### How It Works
154
+
155
+ 1. **Find common ancestor**: Deepest node shared by old and new positions
156
+ 2. **Collect entries**: Walk from old leaf back to common ancestor
157
+ 3. **Prepare with budget**: Include messages up to token budget (newest first)
158
+ 4. **Generate summary**: Call LLM with structured format
159
+ 5. **Append entry**: Save `BranchSummaryEntry` at navigation point
160
+
161
+ ```
162
+ Tree before navigation:
163
+
164
+ ┌─ B ─ C ─ D (old leaf, being abandoned)
165
+ A ───┤
166
+ └─ E ─ F (target)
167
+
168
+ Common ancestor: A
169
+ Entries to summarize: B, C, D
170
+
171
+ After navigation with summary:
172
+
173
+ ┌─ B ─ C ─ D ─ [summary of B,C,D]
174
+ A ───┤
175
+ └─ E ─ F (new leaf)
176
+ ```
177
+
178
+ ### Cumulative File Tracking
179
+
180
+ Both compaction and branch summarization track files cumulatively. When generating a summary, pi extracts file operations from:
181
+ - Tool calls in the messages being summarized
182
+ - Previous compaction or branch summary `details` (if any)
183
+
184
+ This means file tracking accumulates across multiple compactions or nested branch summaries, preserving the full history of read and modified files.
185
+
186
+ ### BranchSummaryEntry Structure
187
+
188
+ Defined in [`session-manager.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/session-manager.ts):
189
+
190
+ ```typescript
191
+ interface BranchSummaryEntry<T = unknown> {
192
+ type: "branch_summary";
193
+ id: string;
194
+ parentId: string;
195
+ timestamp: number;
196
+ summary: string;
197
+ fromId: string; // Entry we navigated from
198
+ fromHook?: boolean; // true if provided by extension (legacy field name)
199
+ details?: T; // implementation-specific data
200
+ }
201
+
202
+ // Default branch summarization uses this for details (from branch-summarization.ts):
203
+ interface BranchSummaryDetails {
204
+ readFiles: string[];
205
+ modifiedFiles: string[];
206
+ }
207
+ ```
208
+
209
+ Same as compaction, extensions can store custom data in `details`.
210
+
211
+ See [`collectEntriesForBranchSummary()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts), [`prepareBranchEntries()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts), and [`generateBranchSummary()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts) for the implementation.
212
+
213
+ ## Summary Format
214
+
215
+ Both compaction and branch summarization use the same structured format:
216
+
217
+ ```markdown
218
+ ## Goal
219
+ [What the user is trying to accomplish]
220
+
221
+ ## Constraints & Preferences
222
+ - [Requirements mentioned by user]
223
+
224
+ ## Progress
225
+ ### Done
226
+ - [x] [Completed tasks]
227
+
228
+ ### In Progress
229
+ - [ ] [Current work]
230
+
231
+ ### Blocked
232
+ - [Issues, if any]
233
+
234
+ ## Key Decisions
235
+ - **[Decision]**: [Rationale]
236
+
237
+ ## Next Steps
238
+ 1. [What should happen next]
239
+
240
+ ## Critical Context
241
+ - [Data needed to continue]
242
+
243
+ <read-files>
244
+ path/to/file1.ts
245
+ path/to/file2.ts
246
+ </read-files>
247
+
248
+ <modified-files>
249
+ path/to/changed.ts
250
+ </modified-files>
251
+ ```
252
+
253
+ ### Message Serialization
254
+
255
+ Before summarization, messages are serialized to text via [`serializeConversation()`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/compaction/utils.ts):
256
+
257
+ ```
258
+ [User]: What they said
259
+ [Assistant thinking]: Internal reasoning
260
+ [Assistant]: Response text
261
+ [Assistant tool calls]: read(path="foo.ts"); edit(path="bar.ts", ...)
262
+ [Tool result]: Output from tool
263
+ ```
264
+
265
+ This prevents the model from treating it as a conversation to continue.
266
+
267
+ Tool results are truncated to 2000 characters during serialization. Content beyond that limit is replaced with a marker indicating how many characters were truncated. This keeps summarization requests within reasonable token budgets, since tool results (especially from `read` and `bash`) are typically the largest contributors to context size.
268
+
269
+ ## Custom Summarization via Extensions
270
+
271
+ Extensions can intercept and customize both compaction and branch summarization. See [`extensions/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/coding-agent/src/core/extensions/types.ts) for event type definitions.
272
+
273
+ ### session_before_compact
274
+
275
+ Fired before auto-compaction or `/compact`. Can cancel or provide custom summary. See `SessionBeforeCompactEvent` and `CompactionPreparation` in the types file.
276
+
277
+ ```typescript
278
+ pi.on("session_before_compact", async (event, ctx) => {
279
+ const { preparation, branchEntries, customInstructions, reason, willRetry, signal } = event;
280
+
281
+ // preparation.messagesToSummarize - messages to summarize
282
+ // preparation.turnPrefixMessages - split turn prefix (if isSplitTurn)
283
+ // preparation.previousSummary - previous compaction summary
284
+ // preparation.fileOps - extracted file operations
285
+ // preparation.tokensBefore - context tokens before compaction
286
+ // preparation.firstKeptEntryId - where kept messages start
287
+ // preparation.settings - compaction settings
288
+
289
+ // branchEntries - all entries on current branch (for custom state)
290
+ // reason - "manual" (/compact), "threshold", or "overflow"
291
+ // willRetry - whether the aborted turn is retried after compaction (overflow recovery)
292
+ // signal - AbortSignal (pass to LLM calls)
293
+
294
+ // Cancel:
295
+ return { cancel: true };
296
+
297
+ // Custom summary:
298
+ return {
299
+ compaction: {
300
+ summary: "Your summary...",
301
+ firstKeptEntryId: preparation.firstKeptEntryId,
302
+ tokensBefore: preparation.tokensBefore,
303
+ details: { /* custom data */ },
304
+ }
305
+ };
306
+ });
307
+ ```
308
+
309
+ #### Converting Messages to Text
310
+
311
+ To generate a summary with your own model, convert messages to text using `serializeConversation`:
312
+
313
+ ```typescript
314
+ import { convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
315
+
316
+ pi.on("session_before_compact", async (event, ctx) => {
317
+ const { preparation } = event;
318
+
319
+ // Convert AgentMessage[] to Message[], then serialize to text
320
+ const conversationText = serializeConversation(
321
+ convertToLlm(preparation.messagesToSummarize)
322
+ );
323
+ // Returns:
324
+ // [User]: message text
325
+ // [Assistant thinking]: thinking content
326
+ // [Assistant]: response text
327
+ // [Assistant tool calls]: read(path="..."); bash(command="...")
328
+ // [Tool result]: output text
329
+
330
+ // Now send to your model for summarization
331
+ const summary = await myModel.summarize(conversationText);
332
+
333
+ return {
334
+ compaction: {
335
+ summary,
336
+ firstKeptEntryId: preparation.firstKeptEntryId,
337
+ tokensBefore: preparation.tokensBefore,
338
+ }
339
+ };
340
+ });
341
+ ```
342
+
343
+ See [custom-compaction.ts](../examples/extensions/custom-compaction.ts) for a complete example using a different model.
344
+
345
+ ### session_before_tree
346
+
347
+ Fired before `/tree` navigation. Always fires regardless of whether user chose to summarize. Can cancel navigation or provide custom summary.
348
+
349
+ ```typescript
350
+ pi.on("session_before_tree", async (event, ctx) => {
351
+ const { preparation, signal } = event;
352
+
353
+ // preparation.targetId - where we're navigating to
354
+ // preparation.oldLeafId - current position (being abandoned)
355
+ // preparation.commonAncestorId - shared ancestor
356
+ // preparation.entriesToSummarize - entries that would be summarized
357
+ // preparation.userWantsSummary - whether user chose to summarize
358
+
359
+ // Cancel navigation entirely:
360
+ return { cancel: true };
361
+
362
+ // Provide custom summary (only used if userWantsSummary is true):
363
+ if (preparation.userWantsSummary) {
364
+ return {
365
+ summary: {
366
+ summary: "Your summary...",
367
+ details: { /* custom data */ },
368
+ }
369
+ };
370
+ }
371
+ });
372
+ ```
373
+
374
+ See `SessionBeforeTreeEvent` and `TreePreparation` in the types file.
375
+
376
+ ## Settings
377
+
378
+ Configure compaction in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`:
379
+
380
+ ```json
381
+ {
382
+ "compaction": {
383
+ "enabled": true,
384
+ "reserveTokens": 16384,
385
+ "keepRecentTokens": 20000
386
+ }
387
+ }
388
+ ```
389
+
390
+ | Setting | Default | Description |
391
+ |---------|---------|-------------|
392
+ | `enabled` | `true` | Enable auto-compaction |
393
+ | `reserveTokens` | `16384` | Tokens to reserve for LLM response |
394
+ | `keepRecentTokens` | `20000` | Recent tokens to keep (not summarized) |
395
+
396
+ Disable auto-compaction with `"enabled": false`. You can still compact manually with `/compact`.