@selesai/code 0.5.20 → 0.5.22

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 (302) hide show
  1. package/README.md +1 -1
  2. package/dist/core/agent-session-skill-block.test.d.ts +2 -0
  3. package/dist/core/agent-session-skill-block.test.d.ts.map +1 -0
  4. package/dist/core/agent-session-skill-block.test.js +20 -0
  5. package/dist/core/agent-session-skill-block.test.js.map +1 -0
  6. package/dist/core/agent-session.d.ts +7 -4
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +22 -12
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/skills.d.ts.map +1 -1
  11. package/dist/core/skills.js +1 -1
  12. package/dist/core/skills.js.map +1 -1
  13. package/dist/extensions/handoff-new.test.ts +8 -9
  14. package/dist/extensions/handoff-new.ts +6 -8
  15. package/dist/extensions/inline-skills.test.ts +96 -0
  16. package/dist/extensions/inline-skills.ts +92 -0
  17. package/dist/extensions/package.json +1 -0
  18. package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +39 -0
  19. package/dist/extensions/pi-powerline-footer/tps.ts +172 -113
  20. package/dist/extensions/pi-subagents/CHANGELOG.md +1367 -0
  21. package/dist/extensions/pi-subagents/README.md +602 -220
  22. package/dist/extensions/pi-subagents/banner.png +0 -0
  23. package/dist/extensions/pi-subagents/index.ts +1 -0
  24. package/dist/extensions/pi-subagents/install.mjs +3 -3
  25. package/dist/extensions/pi-subagents/package-lock.json +3405 -0
  26. package/dist/extensions/pi-subagents/package.json +26 -14
  27. package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
  28. package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +9 -9
  29. package/dist/extensions/pi-subagents/prompts/parallel-context-build.md +3 -3
  30. package/dist/extensions/pi-subagents/prompts/parallel-handoff-plan.md +7 -7
  31. package/dist/extensions/pi-subagents/prompts/parallel-research.md +6 -6
  32. package/dist/extensions/pi-subagents/prompts/parallel-review.md +8 -8
  33. package/dist/extensions/pi-subagents/prompts/review-loop.md +13 -11
  34. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +267 -176
  35. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +89 -16
  36. package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +19 -0
  37. package/dist/extensions/pi-subagents/src/agents/agents.ts +218 -120
  38. package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +67 -13
  39. package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +2 -2
  40. package/dist/extensions/pi-subagents/src/agents/skills.ts +25 -12
  41. package/dist/extensions/pi-subagents/src/api/background-work.ts +197 -0
  42. package/dist/extensions/pi-subagents/src/api/capability-ceiling.ts +17 -0
  43. package/dist/extensions/pi-subagents/src/api/delegation.ts +285 -0
  44. package/dist/extensions/pi-subagents/src/api/preflight.ts +399 -0
  45. package/dist/extensions/pi-subagents/src/extension/chain-validation.ts +165 -0
  46. package/dist/extensions/pi-subagents/src/extension/config.ts +7 -1
  47. package/dist/extensions/pi-subagents/src/extension/doctor.ts +15 -0
  48. package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +3 -1
  49. package/dist/extensions/pi-subagents/src/extension/index.ts +113 -157
  50. package/dist/extensions/pi-subagents/src/extension/rpc.ts +41 -4
  51. package/dist/extensions/pi-subagents/src/extension/schemas.ts +45 -15
  52. package/dist/extensions/pi-subagents/src/extension/steering-notices.ts +35 -0
  53. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +28 -15
  54. package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +4 -3
  55. package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +225 -29
  56. package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +11 -0
  57. package/dist/extensions/pi-subagents/src/profiles/profiles.ts +8 -10
  58. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +452 -62
  59. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +60 -9
  60. package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +198 -52
  61. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +119 -21
  62. package/dist/extensions/pi-subagents/src/runs/background/auto-drain.ts +67 -0
  63. package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +2 -0
  64. package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +16 -8
  65. package/dist/extensions/pi-subagents/src/runs/background/completion-batcher.ts +6 -4
  66. package/dist/extensions/pi-subagents/src/runs/background/completion-dedupe.ts +2 -11
  67. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +260 -13
  68. package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +32 -6
  69. package/dist/extensions/pi-subagents/src/runs/background/notify.ts +171 -90
  70. package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +280 -0
  71. package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +149 -88
  72. package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +14 -2
  73. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +33 -17
  74. package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +9 -1
  75. package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +38 -10
  76. package/dist/extensions/pi-subagents/src/runs/background/steering.ts +237 -0
  77. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +1297 -307
  78. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +610 -0
  79. package/dist/extensions/pi-subagents/src/runs/background/top-level-async.ts +2 -1
  80. package/dist/extensions/pi-subagents/src/runs/background/wait-config.ts +36 -0
  81. package/dist/extensions/pi-subagents/src/runs/background/wait-tool.ts +26 -0
  82. package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +230 -0
  83. package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +22 -6
  84. package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +228 -140
  85. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +452 -138
  86. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +90 -0
  87. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +1001 -416
  88. package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +443 -132
  89. package/dist/extensions/pi-subagents/src/runs/shared/agent-contract.ts +38 -0
  90. package/dist/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts +178 -0
  91. package/dist/extensions/pi-subagents/src/runs/shared/child-protocol.ts +121 -0
  92. package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +41 -93
  93. package/dist/extensions/pi-subagents/src/runs/shared/context-mode.ts +44 -0
  94. package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +11 -9
  95. package/dist/extensions/pi-subagents/src/runs/shared/long-running-guard.ts +4 -0
  96. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +12 -6
  97. package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +36 -0
  98. package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +44 -7
  99. package/dist/extensions/pi-subagents/src/runs/shared/nested-render.ts +4 -1
  100. package/dist/extensions/pi-subagents/src/runs/shared/parallel-handoff.ts +154 -0
  101. package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +18 -0
  102. package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +174 -54
  103. package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +38 -31
  104. package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +90 -5
  105. package/dist/extensions/pi-subagents/src/runs/shared/session-lease.ts +299 -0
  106. package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +61 -6
  107. package/dist/extensions/pi-subagents/src/runs/shared/spawn-budget.ts +128 -0
  108. package/dist/extensions/pi-subagents/src/runs/shared/structured-output.ts +112 -7
  109. package/dist/extensions/pi-subagents/src/runs/shared/subagent-control.ts +14 -6
  110. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +149 -36
  111. package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +181 -0
  112. package/dist/extensions/pi-subagents/src/runs/shared/tool-availability.ts +83 -0
  113. package/dist/extensions/pi-subagents/src/runs/shared/tool-budget.ts +11 -5
  114. package/dist/extensions/pi-subagents/src/runs/shared/turn-budget.ts +50 -4
  115. package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +63 -14
  116. package/dist/extensions/pi-subagents/src/shared/accessible-dir.ts +25 -0
  117. package/dist/extensions/pi-subagents/src/shared/artifacts.ts +37 -7
  118. package/dist/extensions/pi-subagents/src/shared/atomic-json.ts +18 -43
  119. package/dist/extensions/pi-subagents/src/shared/child-transcript.ts +52 -0
  120. package/dist/extensions/pi-subagents/src/shared/env.ts +16 -0
  121. package/dist/extensions/pi-subagents/src/shared/file-system-retry.ts +47 -0
  122. package/dist/extensions/pi-subagents/src/shared/fork-context.ts +28 -3
  123. package/dist/extensions/pi-subagents/src/shared/launch-contract.ts +123 -0
  124. package/dist/extensions/pi-subagents/src/shared/model-info.ts +8 -5
  125. package/dist/extensions/pi-subagents/src/shared/settings.ts +9 -1
  126. package/dist/extensions/pi-subagents/src/shared/status-format.ts +7 -1
  127. package/dist/extensions/pi-subagents/src/shared/types.ts +522 -51
  128. package/dist/extensions/pi-subagents/src/shared/utils.ts +59 -53
  129. package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +604 -0
  130. package/dist/extensions/pi-subagents/src/slash/delegation-json.ts +108 -0
  131. package/dist/extensions/pi-subagents/src/slash/delegation-request.ts +249 -0
  132. package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +353 -345
  133. package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +2 -2
  134. package/dist/extensions/pi-subagents/src/slash/selector.ts +147 -0
  135. package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +265 -23
  136. package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +2 -2
  137. package/dist/extensions/pi-subagents/src/slash/subagents-admin.ts +428 -0
  138. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +362 -0
  139. package/dist/extensions/pi-subagents/src/tui/fleet-transcript.ts +472 -0
  140. package/dist/extensions/pi-subagents/src/tui/fleet.ts +664 -0
  141. package/dist/extensions/pi-subagents/src/tui/render.ts +115 -31
  142. package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +220 -0
  143. package/dist/extensions/pi-subagents/src/watchdog/child-status.ts +205 -0
  144. package/dist/extensions/pi-subagents/src/watchdog/emission-guard.ts +123 -0
  145. package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +532 -0
  146. package/dist/extensions/pi-subagents/src/watchdog/model-selection.ts +167 -0
  147. package/dist/extensions/pi-subagents/src/watchdog/register-child.ts +117 -0
  148. package/dist/extensions/pi-subagents/src/watchdog/register-main.ts +433 -0
  149. package/dist/extensions/pi-subagents/src/watchdog/render.ts +54 -0
  150. package/dist/extensions/pi-subagents/src/watchdog/review.ts +298 -0
  151. package/dist/extensions/pi-subagents/src/watchdog/runtime.ts +714 -0
  152. package/dist/extensions/pi-subagents/src/watchdog/settings.ts +528 -0
  153. package/dist/extensions/pi-subagents/src/watchdog/tool-actions.ts +155 -0
  154. package/dist/extensions/pi-subagents/src/watchdog/turn-delta.ts +161 -0
  155. package/dist/extensions/pi-subagents/src/watchdog/types.ts +188 -0
  156. package/dist/extensions/pi-subagents/src/watchdog/warning-format.ts +73 -0
  157. package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +130 -2
  158. package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +439 -0
  159. package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +1632 -61
  160. package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +54 -1
  161. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +112 -0
  162. package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +98 -1
  163. package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +179 -9
  164. package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +16 -9
  165. package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +6 -5
  166. package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +589 -9
  167. package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +528 -21
  168. package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +227 -3
  169. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +235 -7
  170. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +27 -0
  171. package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +172 -2
  172. package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +1502 -18
  173. package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +993 -4
  174. package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +27 -0
  175. package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +7 -1
  176. package/dist/extensions/pi-subagents/test/support/helpers.ts +32 -0
  177. package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +59 -2
  178. package/dist/extensions/pi-subagents/test/support/mock-pi.ts +32 -6
  179. package/dist/extensions/pi-subagents/test/support/real-session-child-cli.mjs +25 -24
  180. package/dist/extensions/pi-subagents/test/support/real-session-runner.ts +59 -35
  181. package/dist/extensions/pi-subagents/test/support/session-lease-child.mjs +42 -0
  182. package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +703 -69
  183. package/dist/extensions/pi-subagents/test/unit/accessible-dir.test.ts +82 -0
  184. package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +15 -15
  185. package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +66 -66
  186. package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +478 -19
  187. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +228 -7
  188. package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +1 -1
  189. package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +198 -78
  190. package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +15 -1
  191. package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +102 -7
  192. package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +439 -6
  193. package/dist/extensions/pi-subagents/test/unit/atomic-json.test.ts +41 -1
  194. package/dist/extensions/pi-subagents/test/unit/auto-drain.test.ts +79 -0
  195. package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +285 -0
  196. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-pi-args.test.ts +84 -0
  197. package/dist/extensions/pi-subagents/test/unit/capability-ceiling.test.ts +68 -0
  198. package/dist/extensions/pi-subagents/test/unit/chain-validation.test.ts +326 -0
  199. package/dist/extensions/pi-subagents/test/unit/child-protocol.test.ts +82 -0
  200. package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +46 -4
  201. package/dist/extensions/pi-subagents/test/unit/completion-batcher.test.ts +3 -1
  202. package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +9 -17
  203. package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +175 -3
  204. package/dist/extensions/pi-subagents/test/unit/config-dir-runtime.test.ts +10 -5
  205. package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +126 -6
  206. package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +219 -0
  207. package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +913 -0
  208. package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +13 -2
  209. package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +3 -3
  210. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +351 -0
  211. package/dist/extensions/pi-subagents/test/unit/fleet-transcript.test.ts +280 -0
  212. package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +575 -0
  213. package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +65 -0
  214. package/dist/extensions/pi-subagents/test/unit/fork-context.test.ts +94 -1
  215. package/dist/extensions/pi-subagents/test/unit/get-final-output.test.ts +23 -0
  216. package/dist/extensions/pi-subagents/test/unit/host-peer-runtime-imports.test.ts +157 -0
  217. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +367 -5
  218. package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +11 -0
  219. package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +36 -0
  220. package/dist/extensions/pi-subagents/test/unit/model-info.test.ts +25 -3
  221. package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +1 -1
  222. package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +341 -10
  223. package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +16 -0
  224. package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +52 -0
  225. package/dist/extensions/pi-subagents/test/unit/notify.test.ts +168 -7
  226. package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +85 -7
  227. package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +175 -0
  228. package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +1 -1
  229. package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +243 -16
  230. package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +79 -36
  231. package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +174 -56
  232. package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +322 -0
  233. package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +204 -0
  234. package/dist/extensions/pi-subagents/test/unit/recursion-guard.test.ts +20 -12
  235. package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +117 -4
  236. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +40 -7
  237. package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +48 -1
  238. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +21 -3
  239. package/dist/extensions/pi-subagents/test/unit/selector.test.ts +57 -0
  240. package/dist/extensions/pi-subagents/test/unit/session-lease.test.ts +326 -0
  241. package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +101 -2
  242. package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +111 -1
  243. package/dist/extensions/pi-subagents/test/unit/spawn-budget.test.ts +124 -0
  244. package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +6 -4
  245. package/dist/extensions/pi-subagents/test/unit/status-format.test.ts +7 -0
  246. package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +397 -0
  247. package/dist/extensions/pi-subagents/test/unit/steering-notices.test.ts +58 -0
  248. package/dist/extensions/pi-subagents/test/unit/steering.test.ts +173 -0
  249. package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +25 -4
  250. package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +390 -25
  251. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +837 -0
  252. package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +86 -0
  253. package/dist/extensions/pi-subagents/test/unit/tool-budget.test.ts +15 -0
  254. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +47 -1
  255. package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +56 -10
  256. package/dist/extensions/pi-subagents/test/unit/watchdog-change-signature.test.ts +387 -0
  257. package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +110 -0
  258. package/dist/extensions/pi-subagents/test/unit/watchdog-emission-guard.test.ts +62 -0
  259. package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +144 -0
  260. package/dist/extensions/pi-subagents/test/unit/watchdog-model-selection.test.ts +121 -0
  261. package/dist/extensions/pi-subagents/test/unit/watchdog-render.test.ts +76 -0
  262. package/dist/extensions/pi-subagents/test/unit/watchdog-review.test.ts +327 -0
  263. package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +863 -0
  264. package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +290 -0
  265. package/dist/extensions/pi-subagents/test/unit/watchdog-tool-actions.test.ts +91 -0
  266. package/dist/extensions/pi-subagents/test/unit/watchdog-turn-delta.test.ts +130 -0
  267. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +32 -4
  268. package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +5 -1
  269. package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +30 -0
  270. package/dist/extensions/question/batch.ts +103 -0
  271. package/dist/extensions/question/constants.ts +1 -1
  272. package/dist/extensions/question/dialog-adapter.ts +23 -1
  273. package/dist/extensions/question/helpers.ts +34 -78
  274. package/dist/extensions/question/index.ts +412 -419
  275. package/dist/extensions/question/package.json +2 -1
  276. package/dist/extensions/question/question-list.ts +21 -14
  277. package/dist/extensions/question/row-layout.ts +2 -2
  278. package/dist/extensions/question/schemas.ts +38 -39
  279. package/dist/extensions/question/selection-mode.ts +5 -7
  280. package/dist/extensions/question/tests/batch.test.ts +75 -0
  281. package/dist/extensions/question/tests/helpers.test.ts +31 -156
  282. package/dist/extensions/question/tests/question-list.test.ts +17 -3
  283. package/dist/extensions/question/tests/row-layout.test.ts +4 -4
  284. package/dist/extensions/question/tests/schemas.test.ts +30 -0
  285. package/dist/extensions/question/tests/ui-protocol.test.ts +23 -3
  286. package/dist/extensions/question/tests/wizard.test.ts +99 -0
  287. package/dist/extensions/question/tui-adapter.ts +2 -3
  288. package/dist/extensions/question/types.ts +75 -39
  289. package/dist/extensions/question/ui-protocol.ts +3 -3
  290. package/dist/extensions/workflow/adapter.ts +4 -76
  291. package/dist/index.d.ts +1 -1
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +1 -1
  294. package/dist/index.js.map +1 -1
  295. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  296. package/dist/modes/interactive/interactive-mode.js +10 -10
  297. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  298. package/dist/skills/batch-grill-me/SKILL.md +3 -1
  299. package/dist/skills/workflow-creation/SKILL.md +2 -2
  300. package/docs/skills.md +8 -0
  301. package/docs/workflows.md +4 -4
  302. package/package.json +1 -1
@@ -6,7 +6,9 @@ disable-model-invocation: true
6
6
 
7
7
  Interview the user relentlessly until you reach a shared understanding. Map this as a **design tree**: every decision branches into the decisions that hang off it.
8
8
 
9
- Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled — the questions you can ask *now* without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
9
+ Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled — the questions you can ask *now* without guessing at answers you haven't heard yet.
10
+
11
+ For every non-empty frontier, call the `question` tool **exactly once** with its `questions` array; never print frontier questions as plain chat text. Give every item a stable `id`, short `label`, concise `question`, and `context` containing the recommended answer and why. Provide options when known and set `allowFreeform: true` when the user may need another answer. The batch UI lets the user revisit pages before pressing Enter on its final review page to submit all answers. Wait for that tool result, map returned `answers` by `id`, then recompute the next frontier.
10
12
 
11
13
  Each round the user answers reshapes the tree — settled decisions push the frontier outward and unblock questions that depended on them. Recompute the frontier and ask the next round. A question whose answer depends on another question still open in this round belongs to a *later* round, not this one.
12
14
 
@@ -33,7 +33,7 @@ Done when every proposed behavior has one owner: state machine, shared adapter,
33
33
  For a new mode, add `src/extensions/workflow/modes/<name>.ts`, modeled on `quick.ts`, with only `WorkflowConfig` and `WorkflowModeRegistration`:
34
34
 
35
35
  - ordered phases, phase artifacts, prompts, validators, close artifacts/validators;
36
- - unique mode/status/entry identities and slash-command name; shared start/resume/end tools select the mode;
36
+ - unique mode/status/entry identities and slash-command name; users start/resume through that command, while the shared end tool selects the mode;
37
37
  - prompts that name exact artifact paths and use `write_workflow_artifact` only for workflow artifacts.
38
38
 
39
39
  Register the mode once in `MODES` in `extension.ts`; document its lifecycle and commands in `docs/workflows.md`.
@@ -45,7 +45,7 @@ Done when the mode file has no filesystem, persistence, event-registration, or c
45
45
  The shared adapter owns UUID artifact directories, atomic saves, resume, loop review state, and reload safety. Do not reimplement them per mode.
46
46
 
47
47
  - Persisted state changes after start, artifact/loop transition, resume reconciliation, and explicit end.
48
- - Never auto-resume on `session_start`; an explicit selector attaches a run.
48
+ - Never auto-resume on `session_start`; only a user-invoked mode command with an explicit selector attaches a run.
49
49
  - Artifact completion advances durable state then stops the parent turn; the user deliberately continues the attached mode.
50
50
  - Terminal-ready stays active. Only `end_workflow({ mode })` marks the record completed and terminates.
51
51
  - One `ExtensionAPI` hosts all modes: shared writer once, stale reload handlers inert, one attached run total.
package/docs/skills.md CHANGED
@@ -81,6 +81,14 @@ Skills register as `/skill:name` commands:
81
81
 
82
82
  Arguments after the command are appended to the skill content as `User: <args>`.
83
83
 
84
+ ### Inline Skill Picker
85
+
86
+ In interactive chat, type `#` anywhere in a prompt to open completion for available skills. Select a skill to insert `#skill-name`; on send, Selesai expands it at that position.
87
+
88
+ ```text
89
+ Draft implementation plan, then #codebase-design the module.
90
+ ```
91
+
84
92
  Toggle skill commands via `/settings` in interactive mode or in `settings.json`:
85
93
 
86
94
  ```json
package/docs/workflows.md CHANGED
@@ -20,7 +20,7 @@ src/extensions/workflow/
20
20
  - **`state-machine.ts`** is the deep module. It owns the phase graph, artifact gating, skip rules, the terminal close gate, and the reentrancy guard. It imports nothing external — no `node:fs`, no pi API, no `pi-tui`, no `typebox`. Every method returns a `WorkflowEffect` (a discriminated union in domain vocabulary) that the adapter pattern-matches on.
21
21
  - **`adapter.ts`** is the thin glue. It owns Pi/fs wiring, durable state, explicit resume, loop review persistence, and the git-based `reuse` skip predicate. Parent-written artifacts advance durable phase state and queue hidden engine continuations; every built-in mode flows automatically.
22
22
  - **`workflow.json`** in each artifact directory is the canonical, versioned run record. It is atomically replaced after state changes; session custom entries are only pointers for UI/history and never reconstruct an active run.
23
- - **`extension.ts`** imports each mode's registration object and calls `createWorkflowExtension(config, options)(pi)` for each. One extension load registers one shared writer plus `start_workflow`, `resume_workflow`, and `end_workflow`; each lifecycle call selects a mode.
23
+ - **`extension.ts`** imports each mode's registration object and calls `createWorkflowExtension(config, options)(pi)` for each. One extension load registers the model-facing artifact writer and `end_workflow` tool. Starting and resuming are user-only actions exposed by each mode's slash command.
24
24
  - **A mode file** is pure data: the phase list, per-phase artifact filenames, prompt generators, terminal close artifacts, and command/status/entry identities. Prompts receive `{ artifactDir, userPrompt }`. Each mode exports a `WorkflowModeRegistration` object (e.g. `prototypeMode`, `quickMode`); it does not call `createWorkflowExtension` itself.
25
25
 
26
26
  ## To add a future mode
@@ -106,7 +106,7 @@ import { rigorousMode } from "./modes/rigorous.ts";
106
106
  const MODES = [prototypeMode, quickMode, rigorousMode] as const;
107
107
  ```
108
108
 
109
- That's it. The loader picks it up at boot (`package.json` loads only `./extension.ts`); the shared lifecycle tools accept `mode: "rigorous"`, and the `/rigorous` command is registered automatically. There is no `next` tool — phases auto-advance as artifacts land and only `end_workflow({ mode: "rigorous" })` completes the terminal phase.
109
+ That's it. The loader picks it up at boot (`package.json` loads only `./extension.ts`), and the `/rigorous` command is registered automatically. There is no model-facing start/resume or `next` tool — users start and resume through `/rigorous`, phases auto-advance as artifacts land, and only `end_workflow({ mode: "rigorous" })` completes the terminal phase.
110
110
 
111
111
  ## Built-in modes
112
112
 
@@ -152,12 +152,12 @@ Each started workflow receives a UUID artifact directory under `.selesai/artifac
152
152
 
153
153
  Runs are **never** auto-resumed on session start. At most one run can be attached to a Pi instance, but older active runs remain resumable:
154
154
 
155
- - `start_workflow({ mode, goal })`, `resume_workflow({ mode, run: "<id-or-path>" })`, and `end_workflow({ mode })`, where `mode` is `prototype`, `quick`, or `task`
155
+ - Workflow initiation is user-only: `/workflow-prototype <goal>`, `/workflow-quick <goal>`, or `/workflow-task <goal>`
156
156
  - `/workflow-prototype resume <id-or-artifact-dir-or-workflow.json>` / `/workflow-quick resume ...` / `/workflow-task resume ...`
157
157
  - `/workflow-prototype resume`, `/workflow-quick resume`, or `/workflow-task resume` lists active runs (and offers a UI picker when available).
158
158
  - `/workflow-prototype help`, `/workflow-quick help`, or `/workflow-task help` shows the start, resume, continue, and explicit-completion lifecycle.
159
159
 
160
- Resume validates the selected file is under the artifacts base, belongs to that mode, is active, and matches its containing directory. It reconciles the current expected artifact once before emitting the current prompt, covering a crash after `write_workflow_artifact` writes the file but before the phase-state write. Valid artifact writes queue one hidden engine-controlled continuation using `steer` and terminate the current parent turn; invalid writes stay in the current phase and do not terminate. Prompts injected by start, resume, and continue commands are hidden custom messages rather than visible synthetic user messages. Transition-capable calls (`write_workflow_artifact`, loop commentator transitions, and `end_workflow`) must be the sole tool call in their assistant batch; the adapter fails closed when that cannot be proven. Corrupt records are skipped during discovery. Reloads never auto-resume; explicit `resume_workflow` remains required.
160
+ Resume validates the selected file is under the artifacts base, belongs to that mode, is active, and matches its containing directory. It reconciles the current expected artifact once before emitting the current prompt, covering a crash after `write_workflow_artifact` writes the file but before the phase-state write. Valid artifact writes queue one hidden engine-controlled continuation using `steer` and terminate the current parent turn; invalid writes stay in the current phase and do not terminate. Prompts injected by start, resume, and continue commands are hidden custom messages rather than visible synthetic user messages. Transition-capable calls (`write_workflow_artifact`, loop commentator transitions, and `end_workflow`) must be the sole tool call in their assistant batch; the adapter fails closed when that cannot be proven. Corrupt records are skipped during discovery. Reloads never auto-resume; the user must explicitly resume through a mode's slash command.
161
161
 
162
162
  A valid terminal artifact makes a workflow **terminal-ready**; it does not complete the run. Call `end_workflow({ mode })` to write `status: "completed"`, append the done entry, and terminate. This is the only completion path.
163
163
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selesai/code",
3
- "version": "0.5.20",
3
+ "version": "0.5.22",
4
4
  "description": "Maintained, extension-first Pi coding agent with built-in workflows, subagents, web research, questions, skills, and an enhanced terminal UI.",
5
5
  "type": "module",
6
6
  "repository": {