@sleepy-ai/cli 0.1.16 → 0.1.17

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 (805) hide show
  1. package/{src/skill/compose/LICENSE-superpowers → LICENSE} +3 -6
  2. package/README.md +139 -6
  3. package/package.json +35 -199
  4. package/postinstall.mjs +102 -0
  5. package/.sleepycode-test-fixtures-50158/sleepycode-test-eqsxv84ythu/.watcher-b67v64k2mnv +0 -1
  6. package/.sleepycode-test-fixtures-66172/sleepycode-test-x1ymo4kksaa/sleepycode.json +0 -1
  7. package/Dockerfile +0 -18
  8. package/drizzle.config.ts +0 -10
  9. package/git +0 -0
  10. package/migration/20260127222353_familiar_lady_ursula/migration.sql +0 -90
  11. package/migration/20260127222353_familiar_lady_ursula/snapshot.json +0 -796
  12. package/migration/20260211171708_add_project_commands/migration.sql +0 -1
  13. package/migration/20260211171708_add_project_commands/snapshot.json +0 -806
  14. package/migration/20260213144116_wakeful_the_professor/migration.sql +0 -11
  15. package/migration/20260213144116_wakeful_the_professor/snapshot.json +0 -897
  16. package/migration/20260225215848_workspace/migration.sql +0 -7
  17. package/migration/20260225215848_workspace/snapshot.json +0 -959
  18. package/migration/20260227213759_add_session_workspace_id/migration.sql +0 -2
  19. package/migration/20260227213759_add_session_workspace_id/snapshot.json +0 -983
  20. package/migration/20260228203230_blue_harpoon/migration.sql +0 -17
  21. package/migration/20260228203230_blue_harpoon/snapshot.json +0 -1102
  22. package/migration/20260303231226_add_workspace_fields/migration.sql +0 -5
  23. package/migration/20260303231226_add_workspace_fields/snapshot.json +0 -1013
  24. package/migration/20260309230000_move_org_to_state/migration.sql +0 -3
  25. package/migration/20260309230000_move_org_to_state/snapshot.json +0 -1156
  26. package/migration/20260312043431_session_message_cursor/migration.sql +0 -4
  27. package/migration/20260312043431_session_message_cursor/snapshot.json +0 -1168
  28. package/migration/20260323234822_events/migration.sql +0 -13
  29. package/migration/20260323234822_events/snapshot.json +0 -1271
  30. package/migration/20260410174513_workspace-name/migration.sql +0 -16
  31. package/migration/20260410174513_workspace-name/snapshot.json +0 -1271
  32. package/migration/20260413175956_chief_energizer/migration.sql +0 -13
  33. package/migration/20260413175956_chief_energizer/snapshot.json +0 -1399
  34. package/migration/20260422160000_context_inheritance/migration.sql +0 -3
  35. package/migration/20260422170000_task_registry/migration.sql +0 -18
  36. package/migration/20260423145421_remove_session_entry/migration.sql +0 -4
  37. package/migration/20260515000000_actor_rename/migration.sql +0 -7
  38. package/migration/20260515010000_memory_fts/migration.sql +0 -33
  39. package/migration/20260515020000_user_task/migration.sql +0 -29
  40. package/migration/20260519000000_last_checkpoint_message_id/migration.sql +0 -1
  41. package/migration/20260521000000_message_agent_id/migration.sql +0 -2
  42. package/migration/20260521000100_actor_registry_v6/migration.sql +0 -25
  43. package/migration/20260521010000_memory_fts_v6/migration.sql +0 -33
  44. package/migration/20260521020000_memory_fts_triggers/migration.sql +0 -17
  45. package/migration/20260526000000_agent_id_main/migration.sql +0 -14
  46. package/migration/20260527000000_actor_lifecycle/migration.sql +0 -8
  47. package/migration/20260527000100_inbox/migration.sql +0 -12
  48. package/migration/20260529000000_task_todo_redesign/migration.sql +0 -16
  49. package/migration/20260603000000_task_in_progress_owner/migration.sql +0 -1
  50. package/migration/20260603000000_workflow_run/migration.sql +0 -17
  51. package/migration/20260604000000_workflow_script_sha/migration.sql +0 -1
  52. package/migration/20260608000000_claude_import/migration.sql +0 -7
  53. package/migration/20260608010000_claude_import_message_ids/migration.sql +0 -1
  54. package/migration/20260609000000_history_fts/migration.sql +0 -29
  55. package/migration/20260609230000_workflow_agent_timeout/migration.sql +0 -1
  56. package/migration/20260612000000_external_import/migration.sql +0 -16
  57. package/parsers-config.ts +0 -290
  58. package/src/account/account.sql.ts +0 -39
  59. package/src/account/account.ts +0 -456
  60. package/src/account/repo.ts +0 -166
  61. package/src/account/schema.ts +0 -99
  62. package/src/account/url.ts +0 -8
  63. package/src/acp/README.md +0 -174
  64. package/src/acp/agent.ts +0 -1787
  65. package/src/acp/session.ts +0 -116
  66. package/src/acp/types.ts +0 -24
  67. package/src/actor/actor.sql.ts +0 -38
  68. package/src/actor/events.ts +0 -67
  69. package/src/actor/index.ts +0 -2
  70. package/src/actor/registry.ts +0 -412
  71. package/src/actor/return-header.ts +0 -24
  72. package/src/actor/schema.ts +0 -47
  73. package/src/actor/spawn-ref.ts +0 -16
  74. package/src/actor/spawn.ts +0 -756
  75. package/src/actor/turn.ts +0 -49
  76. package/src/actor/waiter.ts +0 -166
  77. package/src/agent/agent.ts +0 -645
  78. package/src/agent/config.ts +0 -5
  79. package/src/agent/generate.txt +0 -75
  80. package/src/agent/prompt/apex.txt +0 -363
  81. package/src/agent/prompt/checkpoint-writer.txt +0 -167
  82. package/src/agent/prompt/compaction.txt +0 -9
  83. package/src/agent/prompt/distill.txt +0 -199
  84. package/src/agent/prompt/dream.txt +0 -155
  85. package/src/agent/prompt/explore.txt +0 -18
  86. package/src/agent/prompt/forge.txt +0 -491
  87. package/src/agent/prompt/phantom.txt +0 -491
  88. package/src/agent/prompt/pivot.txt +0 -460
  89. package/src/agent/prompt/stack.txt +0 -472
  90. package/src/agent/prompt/summary.txt +0 -11
  91. package/src/agent/prompt/title.txt +0 -44
  92. package/src/audio.d.ts +0 -9
  93. package/src/auth/index.ts +0 -97
  94. package/src/bus/bus-event.ts +0 -33
  95. package/src/bus/global.ts +0 -12
  96. package/src/bus/index.ts +0 -193
  97. package/src/cli/bootstrap.ts +0 -33
  98. package/src/cli/cmd/account.ts +0 -258
  99. package/src/cli/cmd/acp.ts +0 -70
  100. package/src/cli/cmd/agent.ts +0 -248
  101. package/src/cli/cmd/cmd.ts +0 -7
  102. package/src/cli/cmd/db.ts +0 -120
  103. package/src/cli/cmd/debug/agent.ts +0 -192
  104. package/src/cli/cmd/debug/config.ts +0 -17
  105. package/src/cli/cmd/debug/file.ts +0 -100
  106. package/src/cli/cmd/debug/index.ts +0 -48
  107. package/src/cli/cmd/debug/lsp.ts +0 -61
  108. package/src/cli/cmd/debug/ripgrep.ts +0 -105
  109. package/src/cli/cmd/debug/scrap.ts +0 -16
  110. package/src/cli/cmd/debug/skill.ts +0 -23
  111. package/src/cli/cmd/debug/snapshot.ts +0 -53
  112. package/src/cli/cmd/doctor.ts +0 -116
  113. package/src/cli/cmd/export.ts +0 -306
  114. package/src/cli/cmd/generate.ts +0 -50
  115. package/src/cli/cmd/github.ts +0 -1647
  116. package/src/cli/cmd/import.ts +0 -208
  117. package/src/cli/cmd/init.ts +0 -97
  118. package/src/cli/cmd/login.ts +0 -402
  119. package/src/cli/cmd/mcp.ts +0 -812
  120. package/src/cli/cmd/models.ts +0 -88
  121. package/src/cli/cmd/plug.ts +0 -233
  122. package/src/cli/cmd/pr.ts +0 -138
  123. package/src/cli/cmd/providers.ts +0 -713
  124. package/src/cli/cmd/run-completion.ts +0 -77
  125. package/src/cli/cmd/run.ts +0 -694
  126. package/src/cli/cmd/serve.ts +0 -30
  127. package/src/cli/cmd/session.ts +0 -181
  128. package/src/cli/cmd/stats.ts +0 -413
  129. package/src/cli/cmd/tui/app.tsx +0 -1161
  130. package/src/cli/cmd/tui/asset/TEN_VAD_LICENSE +0 -12
  131. package/src/cli/cmd/tui/asset/charge.wav +0 -0
  132. package/src/cli/cmd/tui/asset/pulse-a.wav +0 -0
  133. package/src/cli/cmd/tui/asset/pulse-b.wav +0 -0
  134. package/src/cli/cmd/tui/asset/pulse-c.wav +0 -0
  135. package/src/cli/cmd/tui/asset/ten_vad.wasm +0 -0
  136. package/src/cli/cmd/tui/asset/ten_vad_loader.js +0 -30
  137. package/src/cli/cmd/tui/attach.ts +0 -84
  138. package/src/cli/cmd/tui/component/background-image.tsx +0 -150
  139. package/src/cli/cmd/tui/component/banner-session-expired.tsx +0 -48
  140. package/src/cli/cmd/tui/component/bg-pulse.tsx +0 -130
  141. package/src/cli/cmd/tui/component/border.tsx +0 -21
  142. package/src/cli/cmd/tui/component/dialog-agent.tsx +0 -31
  143. package/src/cli/cmd/tui/component/dialog-agreement.tsx +0 -111
  144. package/src/cli/cmd/tui/component/dialog-command.tsx +0 -219
  145. package/src/cli/cmd/tui/component/dialog-console-org.tsx +0 -103
  146. package/src/cli/cmd/tui/component/dialog-go-upsell.tsx +0 -150
  147. package/src/cli/cmd/tui/component/dialog-image-list.tsx +0 -111
  148. package/src/cli/cmd/tui/component/dialog-logo-design.tsx +0 -37
  149. package/src/cli/cmd/tui/component/dialog-mcp.tsx +0 -86
  150. package/src/cli/cmd/tui/component/dialog-model.tsx +0 -299
  151. package/src/cli/cmd/tui/component/dialog-provider.tsx +0 -449
  152. package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +0 -101
  153. package/src/cli/cmd/tui/component/dialog-session-list.tsx +0 -269
  154. package/src/cli/cmd/tui/component/dialog-session-rename.tsx +0 -31
  155. package/src/cli/cmd/tui/component/dialog-skill.tsx +0 -42
  156. package/src/cli/cmd/tui/component/dialog-sleepy-login.tsx +0 -167
  157. package/src/cli/cmd/tui/component/dialog-stash.tsx +0 -87
  158. package/src/cli/cmd/tui/component/dialog-status.tsx +0 -170
  159. package/src/cli/cmd/tui/component/dialog-tag.tsx +0 -44
  160. package/src/cli/cmd/tui/component/dialog-theme-list.tsx +0 -50
  161. package/src/cli/cmd/tui/component/dialog-token-plan.tsx +0 -77
  162. package/src/cli/cmd/tui/component/dialog-variant.tsx +0 -39
  163. package/src/cli/cmd/tui/component/dialog-workflows.tsx +0 -51
  164. package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +0 -289
  165. package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +0 -81
  166. package/src/cli/cmd/tui/component/dialog-worktree.tsx +0 -90
  167. package/src/cli/cmd/tui/component/error-component.tsx +0 -92
  168. package/src/cli/cmd/tui/component/logo.tsx +0 -961
  169. package/src/cli/cmd/tui/component/plugin-route-missing.tsx +0 -14
  170. package/src/cli/cmd/tui/component/prompt/autocomplete-detect.ts +0 -34
  171. package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +0 -668
  172. package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
  173. package/src/cli/cmd/tui/component/prompt/frecency.tsx +0 -90
  174. package/src/cli/cmd/tui/component/prompt/history.tsx +0 -108
  175. package/src/cli/cmd/tui/component/prompt/index.tsx +0 -1869
  176. package/src/cli/cmd/tui/component/prompt/offset.ts +0 -45
  177. package/src/cli/cmd/tui/component/prompt/part.ts +0 -36
  178. package/src/cli/cmd/tui/component/prompt/stash.tsx +0 -101
  179. package/src/cli/cmd/tui/component/spinner.tsx +0 -24
  180. package/src/cli/cmd/tui/component/starry-background.tsx +0 -305
  181. package/src/cli/cmd/tui/component/startup-loading.tsx +0 -67
  182. package/src/cli/cmd/tui/component/task-item.tsx +0 -63
  183. package/src/cli/cmd/tui/component/textarea-keybindings.ts +0 -73
  184. package/src/cli/cmd/tui/component/todo-item.tsx +0 -32
  185. package/src/cli/cmd/tui/component/workflow-tree.tsx +0 -177
  186. package/src/cli/cmd/tui/config/cwd.ts +0 -5
  187. package/src/cli/cmd/tui/config/tui-migrate.ts +0 -151
  188. package/src/cli/cmd/tui/config/tui-schema.ts +0 -38
  189. package/src/cli/cmd/tui/config/tui.ts +0 -219
  190. package/src/cli/cmd/tui/context/args.tsx +0 -16
  191. package/src/cli/cmd/tui/context/directory.ts +0 -15
  192. package/src/cli/cmd/tui/context/event.ts +0 -45
  193. package/src/cli/cmd/tui/context/exit.tsx +0 -65
  194. package/src/cli/cmd/tui/context/helper.tsx +0 -25
  195. package/src/cli/cmd/tui/context/keybind.tsx +0 -105
  196. package/src/cli/cmd/tui/context/kv.tsx +0 -86
  197. package/src/cli/cmd/tui/context/language.tsx +0 -91
  198. package/src/cli/cmd/tui/context/local.tsx +0 -458
  199. package/src/cli/cmd/tui/context/plugin-keybinds.ts +0 -41
  200. package/src/cli/cmd/tui/context/project.tsx +0 -109
  201. package/src/cli/cmd/tui/context/prompt.tsx +0 -18
  202. package/src/cli/cmd/tui/context/route.tsx +0 -68
  203. package/src/cli/cmd/tui/context/sdk.tsx +0 -150
  204. package/src/cli/cmd/tui/context/sync.tsx +0 -884
  205. package/src/cli/cmd/tui/context/theme/aura.json +0 -69
  206. package/src/cli/cmd/tui/context/theme/ayu.json +0 -80
  207. package/src/cli/cmd/tui/context/theme/carbonfox.json +0 -248
  208. package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +0 -230
  209. package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +0 -230
  210. package/src/cli/cmd/tui/context/theme/catppuccin.json +0 -112
  211. package/src/cli/cmd/tui/context/theme/cobalt2.json +0 -225
  212. package/src/cli/cmd/tui/context/theme/cursor.json +0 -249
  213. package/src/cli/cmd/tui/context/theme/dracula.json +0 -219
  214. package/src/cli/cmd/tui/context/theme/everforest.json +0 -241
  215. package/src/cli/cmd/tui/context/theme/flexoki.json +0 -237
  216. package/src/cli/cmd/tui/context/theme/github.json +0 -233
  217. package/src/cli/cmd/tui/context/theme/gruvbox.json +0 -242
  218. package/src/cli/cmd/tui/context/theme/kanagawa.json +0 -77
  219. package/src/cli/cmd/tui/context/theme/lucent-orng.json +0 -234
  220. package/src/cli/cmd/tui/context/theme/material.json +0 -235
  221. package/src/cli/cmd/tui/context/theme/matrix.json +0 -77
  222. package/src/cli/cmd/tui/context/theme/mercury.json +0 -252
  223. package/src/cli/cmd/tui/context/theme/monokai.json +0 -221
  224. package/src/cli/cmd/tui/context/theme/nightowl.json +0 -221
  225. package/src/cli/cmd/tui/context/theme/nord.json +0 -223
  226. package/src/cli/cmd/tui/context/theme/one-dark.json +0 -84
  227. package/src/cli/cmd/tui/context/theme/orng.json +0 -249
  228. package/src/cli/cmd/tui/context/theme/osaka-jade.json +0 -93
  229. package/src/cli/cmd/tui/context/theme/palenight.json +0 -222
  230. package/src/cli/cmd/tui/context/theme/rosepine.json +0 -234
  231. package/src/cli/cmd/tui/context/theme/sleepycode.json +0 -245
  232. package/src/cli/cmd/tui/context/theme/solarized.json +0 -223
  233. package/src/cli/cmd/tui/context/theme/synthwave84.json +0 -226
  234. package/src/cli/cmd/tui/context/theme/tokyonight.json +0 -243
  235. package/src/cli/cmd/tui/context/theme/vercel.json +0 -245
  236. package/src/cli/cmd/tui/context/theme/vesper.json +0 -218
  237. package/src/cli/cmd/tui/context/theme/zenburn.json +0 -223
  238. package/src/cli/cmd/tui/context/theme.tsx +0 -1298
  239. package/src/cli/cmd/tui/context/thinking.ts +0 -48
  240. package/src/cli/cmd/tui/context/tui-config.tsx +0 -9
  241. package/src/cli/cmd/tui/event.ts +0 -62
  242. package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +0 -93
  243. package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +0 -193
  244. package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +0 -54
  245. package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +0 -287
  246. package/src/cli/cmd/tui/feature-plugins/sidebar/cwd.tsx +0 -45
  247. package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +0 -62
  248. package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +0 -93
  249. package/src/cli/cmd/tui/feature-plugins/sidebar/goal.tsx +0 -84
  250. package/src/cli/cmd/tui/feature-plugins/sidebar/instructions.tsx +0 -54
  251. package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +0 -66
  252. package/src/cli/cmd/tui/feature-plugins/sidebar/mascot.tsx +0 -69
  253. package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +0 -98
  254. package/src/cli/cmd/tui/feature-plugins/sidebar/task.tsx +0 -95
  255. package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +0 -51
  256. package/src/cli/cmd/tui/feature-plugins/sidebar/tps.ts +0 -31
  257. package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +0 -274
  258. package/src/cli/cmd/tui/i18n/en.ts +0 -454
  259. package/src/cli/cmd/tui/i18n/es.ts +0 -508
  260. package/src/cli/cmd/tui/i18n/fr.ts +0 -515
  261. package/src/cli/cmd/tui/i18n/ja.ts +0 -463
  262. package/src/cli/cmd/tui/i18n/locales.ts +0 -82
  263. package/src/cli/cmd/tui/i18n/ru.ts +0 -527
  264. package/src/cli/cmd/tui/i18n/slash-command.ts +0 -11
  265. package/src/cli/cmd/tui/i18n/zh.ts +0 -454
  266. package/src/cli/cmd/tui/i18n/zht.ts +0 -430
  267. package/src/cli/cmd/tui/layer.ts +0 -6
  268. package/src/cli/cmd/tui/plugin/api.tsx +0 -402
  269. package/src/cli/cmd/tui/plugin/index.ts +0 -3
  270. package/src/cli/cmd/tui/plugin/internal.ts +0 -37
  271. package/src/cli/cmd/tui/plugin/runtime.ts +0 -1057
  272. package/src/cli/cmd/tui/plugin/slots.tsx +0 -60
  273. package/src/cli/cmd/tui/routes/home.tsx +0 -223
  274. package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +0 -76
  275. package/src/cli/cmd/tui/routes/session/dialog-message.tsx +0 -116
  276. package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +0 -47
  277. package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +0 -47
  278. package/src/cli/cmd/tui/routes/session/footer.tsx +0 -91
  279. package/src/cli/cmd/tui/routes/session/index.tsx +0 -3068
  280. package/src/cli/cmd/tui/routes/session/permission.tsx +0 -697
  281. package/src/cli/cmd/tui/routes/session/question.tsx +0 -488
  282. package/src/cli/cmd/tui/routes/session/sidebar.tsx +0 -97
  283. package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +0 -143
  284. package/src/cli/cmd/tui/thread.ts +0 -324
  285. package/src/cli/cmd/tui/ui/dialog-alert.tsx +0 -61
  286. package/src/cli/cmd/tui/ui/dialog-confirm.tsx +0 -95
  287. package/src/cli/cmd/tui/ui/dialog-export-options.tsx +0 -223
  288. package/src/cli/cmd/tui/ui/dialog-help.tsx +0 -42
  289. package/src/cli/cmd/tui/ui/dialog-prompt.tsx +0 -123
  290. package/src/cli/cmd/tui/ui/dialog-select.tsx +0 -467
  291. package/src/cli/cmd/tui/ui/dialog.tsx +0 -207
  292. package/src/cli/cmd/tui/ui/link.tsx +0 -28
  293. package/src/cli/cmd/tui/ui/spinner.ts +0 -378
  294. package/src/cli/cmd/tui/ui/toast.tsx +0 -102
  295. package/src/cli/cmd/tui/util/clipboard.ts +0 -197
  296. package/src/cli/cmd/tui/util/editor.ts +0 -41
  297. package/src/cli/cmd/tui/util/image-protocol.ts +0 -35
  298. package/src/cli/cmd/tui/util/index.ts +0 -6
  299. package/src/cli/cmd/tui/util/model.ts +0 -23
  300. package/src/cli/cmd/tui/util/pinyin.ts +0 -20
  301. package/src/cli/cmd/tui/util/provider-origin.ts +0 -7
  302. package/src/cli/cmd/tui/util/revert-diff.ts +0 -18
  303. package/src/cli/cmd/tui/util/scroll.ts +0 -23
  304. package/src/cli/cmd/tui/util/selection.ts +0 -23
  305. package/src/cli/cmd/tui/util/signal.ts +0 -41
  306. package/src/cli/cmd/tui/util/sound.ts +0 -154
  307. package/src/cli/cmd/tui/util/system-locale.ts +0 -209
  308. package/src/cli/cmd/tui/util/terminal.ts +0 -114
  309. package/src/cli/cmd/tui/util/transcript.ts +0 -112
  310. package/src/cli/cmd/tui/util/vad.ts +0 -229
  311. package/src/cli/cmd/tui/util/voice.ts +0 -450
  312. package/src/cli/cmd/tui/win32.ts +0 -130
  313. package/src/cli/cmd/tui/worker.ts +0 -104
  314. package/src/cli/cmd/uninstall.ts +0 -351
  315. package/src/cli/cmd/upgrade.ts +0 -79
  316. package/src/cli/cmd/web.ts +0 -96
  317. package/src/cli/effect/prompt.ts +0 -25
  318. package/src/cli/error.ts +0 -82
  319. package/src/cli/heap.ts +0 -59
  320. package/src/cli/i18n.ts +0 -15
  321. package/src/cli/logo.ts +0 -53
  322. package/src/cli/network.ts +0 -68
  323. package/src/cli/ui.ts +0 -133
  324. package/src/cli/upgrade.ts +0 -41
  325. package/src/command/index.ts +0 -276
  326. package/src/command/template/initialize.txt +0 -66
  327. package/src/command/template/review.txt +0 -101
  328. package/src/config/agent.ts +0 -197
  329. package/src/config/command.ts +0 -69
  330. package/src/config/compose.ts +0 -26
  331. package/src/config/config.ts +0 -1047
  332. package/src/config/console-state.ts +0 -16
  333. package/src/config/entry-name.ts +0 -16
  334. package/src/config/error.ts +0 -21
  335. package/src/config/formatter.ts +0 -17
  336. package/src/config/history.ts +0 -21
  337. package/src/config/index.ts +0 -17
  338. package/src/config/keybinds.ts +0 -127
  339. package/src/config/layout.ts +0 -10
  340. package/src/config/lsp.ts +0 -45
  341. package/src/config/managed.ts +0 -70
  342. package/src/config/markdown.ts +0 -97
  343. package/src/config/mcp.ts +0 -172
  344. package/src/config/model-id.ts +0 -14
  345. package/src/config/parse.ts +0 -44
  346. package/src/config/paths.ts +0 -85
  347. package/src/config/permission.ts +0 -76
  348. package/src/config/plugin.ts +0 -88
  349. package/src/config/provider.ts +0 -118
  350. package/src/config/server.ts +0 -20
  351. package/src/config/skills.ts +0 -16
  352. package/src/config/variable.ts +0 -90
  353. package/src/control-plane/adaptors/index.ts +0 -52
  354. package/src/control-plane/adaptors/worktree.ts +0 -47
  355. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  356. package/src/control-plane/schema.ts +0 -19
  357. package/src/control-plane/sse.ts +0 -66
  358. package/src/control-plane/types.ts +0 -34
  359. package/src/control-plane/util.ts +0 -37
  360. package/src/control-plane/workspace-context.ts +0 -26
  361. package/src/control-plane/workspace.sql.ts +0 -17
  362. package/src/control-plane/workspace.ts +0 -615
  363. package/src/effect/app-runtime.ts +0 -146
  364. package/src/effect/bootstrap-runtime.ts +0 -33
  365. package/src/effect/bridge.ts +0 -48
  366. package/src/effect/cross-spawn-spawner.ts +0 -514
  367. package/src/effect/index.ts +0 -5
  368. package/src/effect/instance-ref.ts +0 -11
  369. package/src/effect/instance-registry.ts +0 -12
  370. package/src/effect/instance-state.ts +0 -81
  371. package/src/effect/logger.ts +0 -73
  372. package/src/effect/memo-map.ts +0 -3
  373. package/src/effect/observability.ts +0 -107
  374. package/src/effect/run-service.ts +0 -52
  375. package/src/effect/runner.ts +0 -210
  376. package/src/effect/runtime.ts +0 -19
  377. package/src/env/index.ts +0 -37
  378. package/src/file/ignore.ts +0 -81
  379. package/src/file/index.ts +0 -664
  380. package/src/file/protected.ts +0 -59
  381. package/src/file/ripgrep.ts +0 -485
  382. package/src/file/watcher.ts +0 -163
  383. package/src/flag/flag.ts +0 -185
  384. package/src/format/formatter.ts +0 -403
  385. package/src/format/index.ts +0 -203
  386. package/src/git/index.ts +0 -260
  387. package/src/global/index.ts +0 -54
  388. package/src/history/backfill.ts +0 -162
  389. package/src/history/extract.ts +0 -67
  390. package/src/history/fts-query.ts +0 -15
  391. package/src/history/fts.sql.ts +0 -20
  392. package/src/history/index.ts +0 -10
  393. package/src/history/resolve.ts +0 -65
  394. package/src/history/service.ts +0 -258
  395. package/src/history/writer.ts +0 -112
  396. package/src/id/id.ts +0 -87
  397. package/src/ide/index.ts +0 -73
  398. package/src/inbox/inbox-ref.ts +0 -38
  399. package/src/inbox/inbox.sql.ts +0 -26
  400. package/src/inbox/inbox.ts +0 -223
  401. package/src/inbox/index.ts +0 -3
  402. package/src/inbox/render.ts +0 -40
  403. package/src/index.ts +0 -268
  404. package/src/installation/index.ts +0 -362
  405. package/src/installation/version.ts +0 -8
  406. package/src/lsp/client.ts +0 -249
  407. package/src/lsp/diagnostic.ts +0 -29
  408. package/src/lsp/index.ts +0 -3
  409. package/src/lsp/language.ts +0 -120
  410. package/src/lsp/launch.ts +0 -21
  411. package/src/lsp/lsp.ts +0 -519
  412. package/src/lsp/server.ts +0 -1956
  413. package/src/mcp/auth.ts +0 -144
  414. package/src/mcp/index.ts +0 -939
  415. package/src/mcp/oauth-callback.ts +0 -236
  416. package/src/mcp/oauth-provider.ts +0 -214
  417. package/src/memory/fts-query.ts +0 -37
  418. package/src/memory/fts.sql.ts +0 -19
  419. package/src/memory/index.ts +0 -1
  420. package/src/memory/paths.ts +0 -116
  421. package/src/memory/reconcile.ts +0 -144
  422. package/src/memory/service.ts +0 -144
  423. package/src/metrics/client.ts +0 -40
  424. package/src/metrics/event.ts +0 -43
  425. package/src/metrics/index.ts +0 -5
  426. package/src/metrics/installation.ts +0 -18
  427. package/src/metrics/subscriber.ts +0 -58
  428. package/src/metrics/util.ts +0 -9
  429. package/src/node.ts +0 -6
  430. package/src/npm/config.ts +0 -0
  431. package/src/npm/index.ts +0 -293
  432. package/src/npmcli-config.d.ts +0 -43
  433. package/src/patch/index.ts +0 -680
  434. package/src/permission/arity.ts +0 -163
  435. package/src/permission/evaluate.ts +0 -15
  436. package/src/permission/index.ts +0 -382
  437. package/src/permission/schema.ts +0 -17
  438. package/src/plugin/checkpoint-splitover.ts +0 -60
  439. package/src/plugin/cloudflare.ts +0 -76
  440. package/src/plugin/codex.ts +0 -611
  441. package/src/plugin/github-copilot/copilot.ts +0 -368
  442. package/src/plugin/github-copilot/models.ts +0 -153
  443. package/src/plugin/index.ts +0 -637
  444. package/src/plugin/install.ts +0 -439
  445. package/src/plugin/loader.ts +0 -216
  446. package/src/plugin/matcher.ts +0 -33
  447. package/src/plugin/meta.ts +0 -188
  448. package/src/plugin/shared.ts +0 -323
  449. package/src/plugin/sleepy.ts +0 -232
  450. package/src/plugin/subagent-progress-checker.ts +0 -147
  451. package/src/project/bootstrap.ts +0 -59
  452. package/src/project/index.ts +0 -2
  453. package/src/project/instance.ts +0 -215
  454. package/src/project/project-id.ts +0 -48
  455. package/src/project/project.sql.ts +0 -16
  456. package/src/project/project.ts +0 -522
  457. package/src/project/schema.ts +0 -15
  458. package/src/project/vcs.ts +0 -227
  459. package/src/project/workspace-trust.ts +0 -67
  460. package/src/provider/auth.ts +0 -234
  461. package/src/provider/error.ts +0 -216
  462. package/src/provider/index.ts +0 -5
  463. package/src/provider/models-snapshot.d.ts +0 -2
  464. package/src/provider/models-snapshot.js +0 -3
  465. package/src/provider/models.ts +0 -180
  466. package/src/provider/provider.ts +0 -2030
  467. package/src/provider/schema.ts +0 -36
  468. package/src/provider/sdk/copilot/README.md +0 -5
  469. package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
  470. package/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
  471. package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
  472. package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
  473. package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
  474. package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
  475. package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
  476. package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
  477. package/src/provider/sdk/copilot/copilot-provider.ts +0 -100
  478. package/src/provider/sdk/copilot/index.ts +0 -2
  479. package/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
  480. package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
  481. package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
  482. package/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
  483. package/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
  484. package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
  485. package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1770
  486. package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
  487. package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
  488. package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
  489. package/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
  490. package/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
  491. package/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
  492. package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
  493. package/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
  494. package/src/provider/session-check.ts +0 -178
  495. package/src/provider/transform.ts +0 -1393
  496. package/src/pty/index.ts +0 -364
  497. package/src/pty/pty.bun.ts +0 -26
  498. package/src/pty/pty.node.ts +0 -27
  499. package/src/pty/pty.ts +0 -25
  500. package/src/pty/schema.ts +0 -17
  501. package/src/question/index.ts +0 -252
  502. package/src/question/schema.ts +0 -17
  503. package/src/server/adapter.bun.ts +0 -40
  504. package/src/server/adapter.node.ts +0 -66
  505. package/src/server/adapter.ts +0 -21
  506. package/src/server/auth.ts +0 -16
  507. package/src/server/error.ts +0 -53
  508. package/src/server/event.ts +0 -7
  509. package/src/server/fence.ts +0 -81
  510. package/src/server/mdns.ts +0 -60
  511. package/src/server/middleware.ts +0 -94
  512. package/src/server/projectors.ts +0 -28
  513. package/src/server/proxy.ts +0 -171
  514. package/src/server/pty-ticket.ts +0 -42
  515. package/src/server/rate-limit.ts +0 -38
  516. package/src/server/routes/control/index.ts +0 -160
  517. package/src/server/routes/control/workspace.ts +0 -203
  518. package/src/server/routes/global.ts +0 -367
  519. package/src/server/routes/instance/bash-interactive.ts +0 -82
  520. package/src/server/routes/instance/config.ts +0 -89
  521. package/src/server/routes/instance/event.ts +0 -108
  522. package/src/server/routes/instance/experimental.ts +0 -408
  523. package/src/server/routes/instance/file.ts +0 -190
  524. package/src/server/routes/instance/httpapi/config.ts +0 -51
  525. package/src/server/routes/instance/httpapi/permission.ts +0 -72
  526. package/src/server/routes/instance/httpapi/project.ts +0 -62
  527. package/src/server/routes/instance/httpapi/provider.ts +0 -142
  528. package/src/server/routes/instance/httpapi/question.ts +0 -121
  529. package/src/server/routes/instance/httpapi/server.ts +0 -153
  530. package/src/server/routes/instance/index.ts +0 -301
  531. package/src/server/routes/instance/mcp.ts +0 -260
  532. package/src/server/routes/instance/middleware.ts +0 -44
  533. package/src/server/routes/instance/permission.ts +0 -73
  534. package/src/server/routes/instance/project.ts +0 -122
  535. package/src/server/routes/instance/provider.ts +0 -158
  536. package/src/server/routes/instance/pty.ts +0 -302
  537. package/src/server/routes/instance/question.ts +0 -162
  538. package/src/server/routes/instance/session.ts +0 -1328
  539. package/src/server/routes/instance/sync.ts +0 -143
  540. package/src/server/routes/instance/trace.ts +0 -59
  541. package/src/server/routes/instance/tui.ts +0 -384
  542. package/src/server/routes/instance/workflows.ts +0 -142
  543. package/src/server/routes/ui.ts +0 -37
  544. package/src/server/server.ts +0 -146
  545. package/src/server/workspace.ts +0 -122
  546. package/src/session/auto-dream.ts +0 -123
  547. package/src/session/boundary.ts +0 -77
  548. package/src/session/budgeted-read.ts +0 -118
  549. package/src/session/checkpoint-align.ts +0 -29
  550. package/src/session/checkpoint-context.ts +0 -36
  551. package/src/session/checkpoint-paths.ts +0 -86
  552. package/src/session/checkpoint-progress-reconcile.ts +0 -111
  553. package/src/session/checkpoint-retry.ts +0 -192
  554. package/src/session/checkpoint-templates.ts +0 -114
  555. package/src/session/checkpoint-validator.ts +0 -259
  556. package/src/session/checkpoint.ts +0 -1560
  557. package/src/session/classify.ts +0 -120
  558. package/src/session/claude-import.ts +0 -381
  559. package/src/session/codex-import.ts +0 -416
  560. package/src/session/compaction.ts +0 -545
  561. package/src/session/external-import.sql.ts +0 -18
  562. package/src/session/external-import.ts +0 -136
  563. package/src/session/goal.ts +0 -232
  564. package/src/session/index.ts +0 -1
  565. package/src/session/instruction.ts +0 -276
  566. package/src/session/last-message-info.ts +0 -32
  567. package/src/session/llm-request-prefix.ts +0 -82
  568. package/src/session/llm.ts +0 -739
  569. package/src/session/max-mode.ts +0 -410
  570. package/src/session/message-v2.ts +0 -1146
  571. package/src/session/message.ts +0 -191
  572. package/src/session/opencode-import.ts +0 -281
  573. package/src/session/overflow.ts +0 -53
  574. package/src/session/prefix-capture-ref.ts +0 -48
  575. package/src/session/processor.ts +0 -983
  576. package/src/session/projectors.ts +0 -137
  577. package/src/session/prompt/anthropic.txt +0 -154
  578. package/src/session/prompt/beast.txt +0 -155
  579. package/src/session/prompt/build-switch.txt +0 -5
  580. package/src/session/prompt/codex.txt +0 -79
  581. package/src/session/prompt/compose.txt +0 -119
  582. package/src/session/prompt/copilot-gpt-5.txt +0 -143
  583. package/src/session/prompt/deepseek.txt +0 -131
  584. package/src/session/prompt/default.old.txt +0 -151
  585. package/src/session/prompt/default.txt +0 -172
  586. package/src/session/prompt/gemini.txt +0 -155
  587. package/src/session/prompt/glm.txt +0 -51
  588. package/src/session/prompt/gpt.txt +0 -107
  589. package/src/session/prompt/kimi.txt +0 -95
  590. package/src/session/prompt/max-steps.txt +0 -16
  591. package/src/session/prompt/minimax.txt +0 -140
  592. package/src/session/prompt/text-loop-recovery.ts +0 -40
  593. package/src/session/prompt/text-ngram-detection.ts +0 -87
  594. package/src/session/prompt/trinity.txt +0 -97
  595. package/src/session/prompt.ts +0 -3879
  596. package/src/session/prune.ts +0 -481
  597. package/src/session/retry.ts +0 -178
  598. package/src/session/revert.ts +0 -161
  599. package/src/session/run-state.ts +0 -135
  600. package/src/session/schema.ts +0 -36
  601. package/src/session/session.sql.ts +0 -110
  602. package/src/session/session.ts +0 -908
  603. package/src/session/status.ts +0 -89
  604. package/src/session/summary.ts +0 -163
  605. package/src/session/system.ts +0 -96
  606. package/src/session/todo.ts +0 -77
  607. package/src/session/trajectory.ts +0 -98
  608. package/src/share/index.ts +0 -2
  609. package/src/share/session.ts +0 -57
  610. package/src/share/share-next.ts +0 -381
  611. package/src/share/share.sql.ts +0 -13
  612. package/src/shell/shell.ts +0 -124
  613. package/src/skill/builtin/.bundle/self-extend/SKILL.md +0 -131
  614. package/src/skill/builtin/.bundle/self-extend/reference/hook-api.md +0 -242
  615. package/src/skill/builtin/.bundle/self-extend/reference/skill-api.md +0 -114
  616. package/src/skill/builtin/.bundle/self-extend/reference/tool-api.md +0 -115
  617. package/src/skill/builtin/.bundle/self-extend/reference/tui-api.md +0 -258
  618. package/src/skill/builtin/bundle.macro.ts +0 -30
  619. package/src/skill/builtin/extract.ts +0 -41
  620. package/src/skill/compose/.bundle/ask/SKILL.md +0 -58
  621. package/src/skill/compose/.bundle/brainstorm/SKILL.md +0 -200
  622. package/src/skill/compose/.bundle/brainstorm/scripts/frame-template.html +0 -214
  623. package/src/skill/compose/.bundle/brainstorm/scripts/helper.js +0 -88
  624. package/src/skill/compose/.bundle/brainstorm/scripts/server.cjs +0 -354
  625. package/src/skill/compose/.bundle/brainstorm/scripts/start-server.sh +0 -148
  626. package/src/skill/compose/.bundle/brainstorm/scripts/stop-server.sh +0 -56
  627. package/src/skill/compose/.bundle/brainstorm/spec-document-reviewer-prompt.md +0 -50
  628. package/src/skill/compose/.bundle/brainstorm/visual-companion.md +0 -258
  629. package/src/skill/compose/.bundle/debug/CREATION-LOG.md +0 -119
  630. package/src/skill/compose/.bundle/debug/SKILL.md +0 -297
  631. package/src/skill/compose/.bundle/debug/condition-based-waiting-example.ts +0 -158
  632. package/src/skill/compose/.bundle/debug/condition-based-waiting.md +0 -106
  633. package/src/skill/compose/.bundle/debug/defense-in-depth.md +0 -122
  634. package/src/skill/compose/.bundle/debug/find-polluter.sh +0 -63
  635. package/src/skill/compose/.bundle/debug/root-cause-tracing.md +0 -144
  636. package/src/skill/compose/.bundle/debug/test-academic.md +0 -14
  637. package/src/skill/compose/.bundle/debug/test-pressure-1.md +0 -58
  638. package/src/skill/compose/.bundle/debug/test-pressure-2.md +0 -68
  639. package/src/skill/compose/.bundle/debug/test-pressure-3.md +0 -69
  640. package/src/skill/compose/.bundle/execute/SKILL.md +0 -71
  641. package/src/skill/compose/.bundle/feedback/SKILL.md +0 -214
  642. package/src/skill/compose/.bundle/merge/SKILL.md +0 -252
  643. package/src/skill/compose/.bundle/new-skill/SKILL.md +0 -211
  644. package/src/skill/compose/.bundle/parallel/SKILL.md +0 -168
  645. package/src/skill/compose/.bundle/plan/SKILL.md +0 -183
  646. package/src/skill/compose/.bundle/plan/plan-document-reviewer-prompt.md +0 -50
  647. package/src/skill/compose/.bundle/report/SKILL.md +0 -180
  648. package/src/skill/compose/.bundle/review/SKILL.md +0 -104
  649. package/src/skill/compose/.bundle/review/code-reviewer.md +0 -178
  650. package/src/skill/compose/.bundle/subagent/SKILL.md +0 -325
  651. package/src/skill/compose/.bundle/subagent/code-quality-reviewer-prompt.md +0 -26
  652. package/src/skill/compose/.bundle/subagent/implementer-prompt.md +0 -128
  653. package/src/skill/compose/.bundle/subagent/spec-reviewer-prompt.md +0 -118
  654. package/src/skill/compose/.bundle/tdd/SKILL.md +0 -360
  655. package/src/skill/compose/.bundle/tdd/testing-anti-patterns.md +0 -299
  656. package/src/skill/compose/.bundle/verify/SKILL.md +0 -140
  657. package/src/skill/compose/.bundle/worktree/SKILL.md +0 -234
  658. package/src/skill/compose/LICENSE-karpathy +0 -28
  659. package/src/skill/compose/bundle.macro.ts +0 -30
  660. package/src/skill/compose/extract.ts +0 -85
  661. package/src/skill/discovery.ts +0 -118
  662. package/src/skill/index.ts +0 -328
  663. package/src/snapshot/index.ts +0 -777
  664. package/src/sql.d.ts +0 -4
  665. package/src/storage/db.bun.ts +0 -8
  666. package/src/storage/db.node.ts +0 -8
  667. package/src/storage/db.ts +0 -172
  668. package/src/storage/index.ts +0 -26
  669. package/src/storage/json-migration.ts +0 -426
  670. package/src/storage/read-sqlite.bun.ts +0 -11
  671. package/src/storage/read-sqlite.node.ts +0 -13
  672. package/src/storage/read-sqlite.ts +0 -10
  673. package/src/storage/schema.sql.ts +0 -10
  674. package/src/storage/schema.ts +0 -7
  675. package/src/storage/storage.ts +0 -331
  676. package/src/sync/README.md +0 -179
  677. package/src/sync/event.sql.ts +0 -16
  678. package/src/sync/index.ts +0 -278
  679. package/src/sync/schema.ts +0 -14
  680. package/src/task/events.ts +0 -28
  681. package/src/task/gate-state.ts +0 -54
  682. package/src/task/gate.ts +0 -116
  683. package/src/task/index.ts +0 -1
  684. package/src/task/registry.ts +0 -394
  685. package/src/task/schema.ts +0 -43
  686. package/src/task/task.sql.ts +0 -50
  687. package/src/team/events.ts +0 -22
  688. package/src/team/index.ts +0 -113
  689. package/src/team/schema.ts +0 -31
  690. package/src/temporary.ts +0 -33
  691. package/src/tool/actor.shell.txt +0 -72
  692. package/src/tool/actor.ts +0 -804
  693. package/src/tool/actor.txt +0 -103
  694. package/src/tool/apply_patch.ts +0 -308
  695. package/src/tool/apply_patch.txt +0 -33
  696. package/src/tool/bash-interactive.ts +0 -183
  697. package/src/tool/bash.ts +0 -704
  698. package/src/tool/bash.txt +0 -123
  699. package/src/tool/change-directory.ts +0 -91
  700. package/src/tool/codesearch.ts +0 -63
  701. package/src/tool/codesearch.txt +0 -12
  702. package/src/tool/edit.ts +0 -693
  703. package/src/tool/edit.txt +0 -10
  704. package/src/tool/external-directory.ts +0 -132
  705. package/src/tool/glob.ts +0 -100
  706. package/src/tool/glob.txt +0 -6
  707. package/src/tool/grep.ts +0 -145
  708. package/src/tool/grep.txt +0 -8
  709. package/src/tool/history.ts +0 -146
  710. package/src/tool/history.txt +0 -17
  711. package/src/tool/index.ts +0 -4
  712. package/src/tool/invalid.ts +0 -20
  713. package/src/tool/invocation-style.ts +0 -17
  714. package/src/tool/lsp.ts +0 -91
  715. package/src/tool/lsp.txt +0 -19
  716. package/src/tool/mcp-exa.ts +0 -78
  717. package/src/tool/memory-path-guard.ts +0 -162
  718. package/src/tool/memory.ts +0 -81
  719. package/src/tool/memory.txt +0 -69
  720. package/src/tool/multiedit.ts +0 -54
  721. package/src/tool/multiedit.txt +0 -41
  722. package/src/tool/notebook-edit.ts +0 -225
  723. package/src/tool/notebook-edit.txt +0 -10
  724. package/src/tool/plan-enter.txt +0 -16
  725. package/src/tool/plan-exit.txt +0 -14
  726. package/src/tool/plan.ts +0 -194
  727. package/src/tool/question.ts +0 -67
  728. package/src/tool/question.txt +0 -10
  729. package/src/tool/read-state.ts +0 -44
  730. package/src/tool/read.ts +0 -327
  731. package/src/tool/read.txt +0 -14
  732. package/src/tool/recoverable.ts +0 -35
  733. package/src/tool/registry.ts +0 -429
  734. package/src/tool/schema.ts +0 -17
  735. package/src/tool/session-cwd.ts +0 -35
  736. package/src/tool/shell-tokenize.ts +0 -374
  737. package/src/tool/shell-wrap.ts +0 -235
  738. package/src/tool/skill.ts +0 -76
  739. package/src/tool/skill.txt +0 -5
  740. package/src/tool/task.shell.txt +0 -57
  741. package/src/tool/task.ts +0 -456
  742. package/src/tool/task.txt +0 -56
  743. package/src/tool/tool.ts +0 -166
  744. package/src/tool/truncate.ts +0 -201
  745. package/src/tool/truncation-dir.ts +0 -4
  746. package/src/tool/webfetch.ts +0 -208
  747. package/src/tool/webfetch.txt +0 -13
  748. package/src/tool/websearch/index.ts +0 -104
  749. package/src/tool/websearch/sleepy.ts +0 -118
  750. package/src/tool/websearch/websearch.txt +0 -14
  751. package/src/tool/workflow.ts +0 -357
  752. package/src/tool/workflow.txt +0 -25
  753. package/src/tool/write.ts +0 -88
  754. package/src/tool/write.txt +0 -10
  755. package/src/util/abort.ts +0 -35
  756. package/src/util/archive.ts +0 -15
  757. package/src/util/color.ts +0 -17
  758. package/src/util/data-url.ts +0 -9
  759. package/src/util/defer.ts +0 -10
  760. package/src/util/effect-http-client.ts +0 -11
  761. package/src/util/effect-zod.ts +0 -367
  762. package/src/util/env-info.ts +0 -62
  763. package/src/util/error.ts +0 -78
  764. package/src/util/filesystem.ts +0 -243
  765. package/src/util/fn.ts +0 -21
  766. package/src/util/format.ts +0 -20
  767. package/src/util/iife.ts +0 -3
  768. package/src/util/index.ts +0 -14
  769. package/src/util/keybind.ts +0 -101
  770. package/src/util/lazy.ts +0 -18
  771. package/src/util/local-context.ts +0 -23
  772. package/src/util/locale.ts +0 -79
  773. package/src/util/lock.ts +0 -96
  774. package/src/util/log.ts +0 -234
  775. package/src/util/media.ts +0 -26
  776. package/src/util/network.ts +0 -9
  777. package/src/util/process.ts +0 -174
  778. package/src/util/provider-priority.ts +0 -48
  779. package/src/util/queue.ts +0 -60
  780. package/src/util/record.ts +0 -3
  781. package/src/util/rpc.ts +0 -64
  782. package/src/util/schema.ts +0 -53
  783. package/src/util/scrap.ts +0 -10
  784. package/src/util/signal.ts +0 -12
  785. package/src/util/sleepy-process.ts +0 -24
  786. package/src/util/ssrf.ts +0 -116
  787. package/src/util/timeout.ts +0 -14
  788. package/src/util/token.ts +0 -5
  789. package/src/util/tool-compat.ts +0 -144
  790. package/src/util/update-schema.ts +0 -13
  791. package/src/util/which.ts +0 -14
  792. package/src/util/wildcard.ts +0 -57
  793. package/src/workflow/builtin/compose.js +0 -749
  794. package/src/workflow/builtin/deep-research.js +0 -397
  795. package/src/workflow/builtin.ts +0 -59
  796. package/src/workflow/events.ts +0 -72
  797. package/src/workflow/meta.ts +0 -335
  798. package/src/workflow/persistence.ts +0 -312
  799. package/src/workflow/resolve.ts +0 -45
  800. package/src/workflow/runtime-ref.ts +0 -18
  801. package/src/workflow/runtime.ts +0 -1447
  802. package/src/workflow/sandbox.ts +0 -286
  803. package/src/workflow/workflow.sql.ts +0 -31
  804. package/src/workflow/workspace.ts +0 -69
  805. package/src/worktree/index.ts +0 -629
@@ -1,749 +0,0 @@
1
- export const meta = {
2
- name: "compose",
3
- description:
4
- "Autonomous compose pipeline — brainstorms context, designs (spec/plan), implements via parallel per-task worktrees with TDD, verifies, reviews, reports, and merges. Bounded retry, never-ask mode.",
5
- whenToUse:
6
- "Use to drive a feature, bugfix, refactor, or review-feedback task through the full compose flow without user prompting. Pass args.task = the user's request. Optionally args.type to set the task type (feature/bugfix/refactor/feedback; otherwise inferred), args.feature_name for the report filename, args.skip_brainstorm / args.skip_report to drop those phases, args.maxConcurrent to bound per-batch parallelism. Independent tasks auto-run in parallel, each in its own worktree, then merge back; pass args.isolate_worktrees=false to force all-sequential or =true to force isolation.",
7
- phases: [
8
- { title: "Brainstorm", detail: "Context recon (never-ask): conventions, recent changes, relevant files" },
9
- { title: "Design", detail: "Apply compose:plan, compose:debug, or compose:feedback; emit task list with deps" },
10
- { title: "Implement", detail: "Topo-sorted batches; independent tasks parallelize in per-task worktrees, then integrate" },
11
- { title: "Verify", detail: "Run project verify commands; structured pass/fail" },
12
- { title: "Review", detail: "compose:review for critical/important/minor issues" },
13
- { title: "Report", detail: "compose:report per-iteration + final consolidated report" },
14
- { title: "Merge", detail: "compose:merge to commit (and optionally push/PR)" },
15
- ],
16
- }
17
-
18
- const MAX_TDD_ATTEMPTS = 3
19
- const MAX_REVIEW_FIX_ATTEMPTS = 2
20
- const DEFAULT_MAX_CONCURRENT = 8
21
-
22
- const BRAINSTORM_SHAPE = {
23
- type: "object",
24
- required: ["context"],
25
- properties: {
26
- context: {
27
- type: "object",
28
- required: ["projectType", "conventions", "recentChanges", "relevantFiles"],
29
- properties: {
30
- projectType: { type: "string" },
31
- conventions: { type: "array", items: { type: "string" } },
32
- recentChanges: { type: "array", items: { type: "string" } },
33
- relevantFiles: { type: "array", items: { type: "string" } },
34
- },
35
- },
36
- assumptions: { type: "array", items: { type: "string" } },
37
- selfQA: { type: "array", items: { type: "object", properties: { question: { type: "string" }, answer: { type: "string" } } } },
38
- approaches: { type: "array", items: { type: "object", properties: { name: { type: "string" }, tradeoffs: { type: "string" } } } },
39
- chosenApproach: { type: "string" },
40
- chosenRationale: { type: "string" },
41
- openQuestions: { type: "array", items: { type: "string" } },
42
- amends: { type: "string" },
43
- existingDocs: { type: "array", items: { type: "string" } },
44
- notes: { type: "string" },
45
- },
46
- }
47
-
48
- const DESIGN_SHAPE = {
49
- type: "object",
50
- required: ["tasks"],
51
- properties: {
52
- tasks: {
53
- type: "array",
54
- minItems: 1,
55
- items: {
56
- type: "object",
57
- required: ["id", "description", "acceptance"],
58
- properties: {
59
- id: { type: "string" },
60
- description: { type: "string" },
61
- acceptance: { type: "string" },
62
- files: { type: "array", items: { type: "string" } },
63
- dependsOn: { type: "array", items: { type: "string" } },
64
- },
65
- },
66
- },
67
- notes: { type: "string" },
68
- },
69
- }
70
-
71
- const INTEGRATE_SHAPE = {
72
- type: "object",
73
- required: ["merged", "conflicts", "skipped_pristine"],
74
- properties: {
75
- merged: {
76
- type: "array",
77
- items: { type: "object", properties: { taskId: { type: "string" }, branch: { type: "string" }, sha: { type: "string" } } },
78
- },
79
- conflicts: {
80
- type: "array",
81
- items: { type: "object", properties: { taskId: { type: "string" }, branch: { type: "string" }, error: { type: "string" } } },
82
- },
83
- skipped_pristine: { type: "array", items: { type: "string" } },
84
- },
85
- }
86
-
87
- const VERIFY_SHAPE = {
88
- type: "object",
89
- required: ["typecheck", "tests", "build", "allPassed"],
90
- properties: {
91
- typecheck: { enum: ["ok", "fail", "skipped"] },
92
- tests: {
93
- type: "object",
94
- required: ["passed", "failed"],
95
- properties: {
96
- passed: { type: "number" },
97
- failed: { type: "number" },
98
- output: { type: "string" },
99
- },
100
- },
101
- build: { enum: ["ok", "fail", "skipped"] },
102
- allPassed: { type: "boolean" },
103
- failures: { type: "string" },
104
- },
105
- }
106
-
107
- const REVIEW_SHAPE = {
108
- type: "object",
109
- required: ["critical", "important", "minor", "readyToMerge"],
110
- properties: {
111
- critical: { type: "array", items: { type: "string" } },
112
- important: { type: "array", items: { type: "string" } },
113
- minor: { type: "array", items: { type: "string" } },
114
- readyToMerge: { type: "boolean" },
115
- },
116
- }
117
-
118
- const MERGE_SHAPE = {
119
- type: "object",
120
- required: ["committed", "action"],
121
- properties: {
122
- committed: { type: "boolean" },
123
- sha: { type: "string" },
124
- prUrl: { type: "string" },
125
- action: { enum: ["commit", "commit+push", "commit+pr", "none"] },
126
- },
127
- }
128
-
129
- // Accept args as either an object {task,type?,...} OR a JSON string OR a bare task
130
- // string, because the AI-SDK tool boundary often serializes nested args as strings.
131
- let _argsObj
132
- if (typeof args === "object" && args !== null) {
133
- _argsObj = args
134
- } else if (typeof args === "string") {
135
- try { _argsObj = JSON.parse(args) } catch (_) { _argsObj = { task: args } }
136
- if (typeof _argsObj !== "object" || _argsObj === null) _argsObj = { task: args }
137
- } else {
138
- _argsObj = {}
139
- }
140
- const TASK = typeof _argsObj.task === "string" ? _argsObj.task : ""
141
- if (!TASK) {
142
- return { error: "no-task", message: "Pass args.task = '<request>'." }
143
- }
144
-
145
- const VALID_TYPES = ["feature", "bugfix", "refactor", "feedback"]
146
- const argType = typeof _argsObj.type === "string" ? _argsObj.type : ""
147
- const SKIP_BRAINSTORM = _argsObj.skip_brainstorm === true
148
- const SKIP_REPORT = _argsObj.skip_report === true
149
- // Per-batch worktree isolation. Independent tasks that would run concurrently MUST
150
- // be isolated (parallel writes to one workspace conflict) — the runtime creates a
151
- // worktree per task, the agent works in it, and an integrate agent merges it back.
152
- // Decision is per batch: auto-isolate a batch iff it runs >1 task; a single-task
153
- // batch stays sequential in the main workspace. args.isolate_worktrees forces it:
154
- // true = always isolate, false = never. (Runtime worktree path verified by
155
- // test/workflow/runtime-worktree.test.ts; not opt-in-off anymore.)
156
- const ISOLATE_OVERRIDE =
157
- _argsObj.isolate_worktrees === true ? true : _argsObj.isolate_worktrees === false ? false : undefined
158
- const isolateBatch = (batchIds) =>
159
- ISOLATE_OVERRIDE === true ? true : ISOLATE_OVERRIDE === false ? false : batchIds.length > 1
160
- const MAX_CONCURRENT =
161
- typeof _argsObj.maxConcurrent === "number" && _argsObj.maxConcurrent > 0 ? _argsObj.maxConcurrent : DEFAULT_MAX_CONCURRENT
162
-
163
- // Docs dir injected by the host (workflow.ts) from ConfigCompose.resolveDocsDir,
164
- // mirroring the <compose_docs_dir> block prompt.ts gives the interactive compose
165
- // agent. Default keeps the workflow self-sufficient if the host didn't inject.
166
- const DOCS_DIR = typeof _argsObj._composeDocsDir === "string" && _argsObj._composeDocsDir ? _argsObj._composeDocsDir : "docs/compose"
167
- const SPECS_DIR = DOCS_DIR + "/specs"
168
- const PLANS_DIR = DOCS_DIR + "/plans"
169
- const REPORTS_DIR = DOCS_DIR + "/reports"
170
- const docsBlock =
171
- "<compose_docs_dir>\n" +
172
- "Save compose skill outputs: specs in `" + SPECS_DIR + "`, plans in `" + PLANS_DIR + "`, reports in `" + REPORTS_DIR + "`.\n" +
173
- "</compose_docs_dir>"
174
-
175
- // Slug for the per-run report filename. feature_name overrides; else slugify task.
176
- // Strip trailing dashes AFTER the length cap too, so a 60-char cut that lands on a
177
- // separator doesn't leave an ugly trailing "-" in the filename.
178
- const FEATURE_NAME =
179
- ((typeof _argsObj.feature_name === "string" && _argsObj.feature_name ? _argsObj.feature_name : TASK)
180
- .toLowerCase()
181
- .replace(/[^a-z0-9]+/g, "-")
182
- .replace(/^-+|-+$/g, "")
183
- .slice(0, 60)
184
- .replace(/-+$/, "")) || "compose-run"
185
- const REPORT_PATH = REPORTS_DIR + "/" + FEATURE_NAME + ".md"
186
-
187
- // ---------------------------------------------------------------------------
188
- // Phase 0 — Brainstorm (autonomous-mode contract: context recon only, never-ask)
189
- // ---------------------------------------------------------------------------
190
- phase("Brainstorm")
191
- const SYNTHETIC_CONTEXT = { projectType: "unknown", conventions: [], recentChanges: [], relevantFiles: [] }
192
- // Surface any prior compose artifacts so brainstorm can detect an AMENDMENT (a
193
- // change to an existing feature) vs new work — enabling incremental re-runs that
194
- // reuse the existing spec/plan instead of regenerating everything. The workflow
195
- // only lists the files; the agent reads + judges.
196
- const _globArr = async (pat) => { const r = await glob(pat); return Array.isArray(r) ? r : [] }
197
- const existingDocs = [
198
- ...(await _globArr(SPECS_DIR + "/*.md")),
199
- ...(await _globArr(PLANS_DIR + "/*.md")),
200
- ...(await _globArr(REPORTS_DIR + "/*.md")),
201
- ]
202
- const existingDocsBlock = existingDocs.length
203
- ? "\n## Existing compose artifacts (this project has prior compose work)\n" +
204
- existingDocs.map((p) => "- " + p).join("\n") + "\n" +
205
- "If the task below is a CHANGE/ADDITION to a feature documented above, READ the relevant spec/plan (use the `read` tool) " +
206
- "and treat this as an AMENDMENT: set `amends` to that feature's name and list the docs you used in `existingDocs`. " +
207
- "If the task is unrelated/new, leave `amends` empty.\n"
208
- : ""
209
- let brainstorm
210
- if (SKIP_BRAINSTORM) {
211
- brainstorm = { context: SYNTHETIC_CONTEXT, assumptions: [] }
212
- } else {
213
- brainstorm = await agent(
214
- "Apply the `compose:brainstorm` skill in AUTONOMOUS mode — no user is available to answer. Use the `skill` tool to load it first.\n\n" +
215
- "## Autonomous brainstorming — self-conduct the dialogue (do NOT stop at context recon)\n" +
216
- "'No user' means you ask and answer the questions YOURSELF; it does NOT mean skip the thinking. Run the real brainstorm:\n" +
217
- "1. Explore project context (files, docs, recent commits, layout) and note assumptions.\n" +
218
- "2. Pose the clarifying questions you WOULD ask a user, and answer each from the context/your best judgment (record as selfQA).\n" +
219
- "3. Propose 2-3 distinct approaches with trade-offs (record as approaches).\n" +
220
- "4. Pick ONE and justify it (chosenApproach + chosenRationale). Note any unresolved openQuestions.\n" +
221
- "Do NOT present a design to a user, do NOT wait for approval, do NOT write a spec here — that is Design's job. " +
222
- "This reasoning is the KEY input Design consumes, so capture it fully in the structured output.\n\n" +
223
- "## Task\n" + TASK + "\n\n" +
224
- existingDocsBlock +
225
- "## Context to gather\n" +
226
- "- Read AGENTS.md / CLAUDE.md / README.md if present\n" +
227
- "- Skim recent commits (`git log --oneline -20`)\n" +
228
- "- Map top-level directory layout; identify files relevant to the task\n\n" +
229
- "Return structured output only.",
230
- { label: "brainstorm", phase: "Brainstorm", schema: BRAINSTORM_SHAPE }
231
- )
232
- if (!brainstorm || !brainstorm.context) brainstorm = { context: SYNTHETIC_CONTEXT, assumptions: [] }
233
- }
234
- const _arr = (v) => (Array.isArray(v) ? v : [])
235
- const contextDigest =
236
- "Project: " + brainstorm.context.projectType + "\n" +
237
- "Conventions:\n" + _arr(brainstorm.context.conventions).map((c) => "- " + c).join("\n") + "\n" +
238
- "Recent changes:\n" + _arr(brainstorm.context.recentChanges).map((c) => "- " + c).join("\n") + "\n" +
239
- "Relevant files:\n" + _arr(brainstorm.context.relevantFiles).map((f) => "- " + f).join("\n") +
240
- (_arr(brainstorm.assumptions).length ? "\nAssumptions:\n" + _arr(brainstorm.assumptions).map((a) => "- " + a).join("\n") : "") +
241
- (_arr(brainstorm.selfQA).length ? "\nSelf-Q&A (brainstorm reasoning):\n" + _arr(brainstorm.selfQA).map((q) => "- Q: " + (q && q.question) + "\n A: " + (q && q.answer)).join("\n") : "") +
242
- (_arr(brainstorm.approaches).length ? "\nApproaches considered:\n" + _arr(brainstorm.approaches).map((a) => "- " + (a && a.name) + " — " + (a && a.tradeoffs)).join("\n") : "") +
243
- ((brainstorm.chosenApproach && typeof brainstorm.chosenApproach === "string") ? "\nChosen approach: " + brainstorm.chosenApproach + (brainstorm.chosenRationale ? " (because: " + brainstorm.chosenRationale + ")" : "") : "") +
244
- (_arr(brainstorm.openQuestions).length ? "\nOpen questions:\n" + _arr(brainstorm.openQuestions).map((q) => "- " + q).join("\n") : "") +
245
- ((brainstorm.amends && typeof brainstorm.amends === "string") ? "\nAmends existing feature: " + brainstorm.amends : "")
246
-
247
- // ---------------------------------------------------------------------------
248
- // Type resolution (no separate Classify phase)
249
- // ---------------------------------------------------------------------------
250
- // First-principles: picking the design skill is a low-risk, reversible routing
251
- // decision the later Design/Implement phases can self-correct — it does NOT
252
- // warrant its own LLM phase (the original compose flow has no classifier; it goes
253
- // brainstorm → compose:plan). So: honor an explicit args.type; otherwise default
254
- // to "feature" (→ compose:plan) and let a cheap keyword heuristic divert obvious
255
- // bugfix / PR-feedback tasks. The design agent re-judges with full context anyway.
256
- let type
257
- if (VALID_TYPES.indexOf(argType) >= 0) {
258
- type = argType
259
- } else {
260
- const t = TASK.toLowerCase()
261
- if (/\b(pr|review)\b.*\b(feedback|comment|address)\b|address .*\bfeedback\b/.test(t)) type = "feedback"
262
- else if (/\b(bug|broken|regression|crash|fails?|incorrect|wrong|error)\b/.test(t)) type = "bugfix"
263
- else type = "feature"
264
- log("Task type: " + type)
265
- }
266
-
267
- const SKILL_BY_TYPE = {
268
- feature: "compose:plan",
269
- refactor: "compose:plan",
270
- bugfix: "compose:debug",
271
- feedback: "compose:feedback",
272
- }
273
-
274
- // ---------------------------------------------------------------------------
275
- // Phase 2 — Design (spec/plan, context-grounded, dependency-aware)
276
- // ---------------------------------------------------------------------------
277
- phase("Design")
278
- const designSkill = SKILL_BY_TYPE[type] || "compose:plan"
279
- const SPEC_PATH = SPECS_DIR + "/" + FEATURE_NAME + ".md"
280
- const PLAN_PATH = PLANS_DIR + "/" + FEATURE_NAME + ".md"
281
- // Amendment: brainstorm flagged this as a change to an existing feature. Design
282
- // edits the existing spec/plan in place and re-runs only the affected tasks,
283
- // instead of regenerating everything.
284
- const AMENDS = brainstorm && typeof brainstorm.amends === "string" ? brainstorm.amends.trim() : ""
285
-
286
- // Step 1 — the AGENT writes (or amends) the spec + plan files. The workflow does
287
- // NOT write them; it only gates on existence and re-dispatches if skipped. No
288
- // `schema` here so the agent is free to use its write/skill tools.
289
- const runDesignWrite = (sharpen) => agent(
290
- "Apply the `" + designSkill + "` skill to the task below. Use the `skill` tool to load the skill FIRST, then follow it.\n\n" +
291
- docsBlock + "\n\n" +
292
- "## Task\n" + TASK + "\n\n" +
293
- "## Project context (from brainstorm)\n" + contextDigest + "\n\n" +
294
- (AMENDS
295
- ? "## This is an AMENDMENT to an existing feature: " + AMENDS + "\n" +
296
- "Use `glob`/`read` to find that feature's existing spec under `" + SPECS_DIR + "` and plan under `" + PLANS_DIR + "`. " +
297
- "EDIT them IN PLACE (write back to the SAME file paths) to reflect ONLY the change in the task above — do NOT rewrite from scratch. " +
298
- "In the plan, the task list must then contain ONLY the tasks that need to be (re-)implemented for this change, PLUS any tasks that " +
299
- "depend on them. Tasks unaffected by the change MUST be omitted from the actionable list — they are reused as-is.\n\n" +
300
- "## Scope the work to the actual change (CRITICAL)\n" +
301
- "First assess the MAGNITUDE of this change: small (one spot / a few lines), medium (a few related tasks), " +
302
- "or large (a foundational refactor touching many modules). Make the plan's actionable task list MATCH that magnitude:\n" +
303
- "- Small change → ONE task (or zero, if the code already satisfies it). Do NOT split one small change into multiple tasks.\n" +
304
- "- Medium → only the genuinely distinct tasks the change requires, plus their dependents.\n" +
305
- "- Large refactor → re-decompose into as many independent tasks as the work truly needs.\n" +
306
- "NEVER emit two near-identical or duplicate tasks for the same change. One distinct unit of work = exactly one task. " +
307
- "The number of tasks must reflect the real scope — it is not fixed.\n\n" +
308
- "Write the updated files with the `write` tool. Do not just describe them.\n"
309
- : "## Your deliverable (REQUIRED — this is the whole job)\n" +
310
- "Use the `write` tool to create BOTH of these files on disk:\n" +
311
- "1. Spec: `" + SPEC_PATH + "`\n" +
312
- "2. Plan: `" + PLAN_PATH + "` — a bite-sized task list per the skill, each task with id, description, acceptance, optional files, and `dependsOn` (empty for independent tasks; a prerequisite task id otherwise; no cycles).\n\n" +
313
- (sharpen ? "## You did NOT write the required files last time. Write them NOW with the write tool before finishing.\n\n" : "") +
314
- "Do the writes with the `write` tool. Do not just describe them."),
315
- { label: "design:" + type, phase: "Design" }
316
- )
317
- await runDesignWrite(false)
318
- // Gate: the agent owns the writes; the workflow only verifies they happened and
319
- // re-dispatches the agent once if not. The workflow itself never writes the files.
320
- // Robustness: the agent may write under a slightly different leaf name than our
321
- // computed slug (model-chosen filename, trailing-dash drift, etc.). So treat the
322
- // gate as "did ANY .md land in the specs and plans dirs", not an exact-path match —
323
- // this avoids a redundant, expensive re-dispatch when the files are actually there.
324
- const docsPresent = async () => {
325
- const specs = await glob(SPECS_DIR + "/*.md")
326
- const plans = await glob(PLANS_DIR + "/*.md")
327
- return specs.length > 0 && plans.length > 0
328
- }
329
- if (!(await docsPresent())) {
330
- await runDesignWrite(true)
331
- }
332
- const specWritten = (await glob(SPECS_DIR + "/*.md")).length > 0
333
- const planWritten = (await glob(PLANS_DIR + "/*.md")).length > 0
334
-
335
- // Step 2 — structured extraction: a separate agent reads the plan the previous
336
- // agent wrote and returns the machine-usable task list. Schema lives here, where
337
- // JSON-only is exactly what we want — no file work expected in this call. The
338
- // prompt FORCES a direct StructuredOutput tool call: the model otherwise tends to
339
- // answer with prose/markdown/XML, which fails schema validation and triggers a
340
- // slow retry loop (each round-trip is a full model call).
341
- const design = await agent(
342
- "Read the implementation plan markdown in `" + PLANS_DIR + "` (use the `read` tool; if multiple files, read the most recent) and extract its task list.\n\n" +
343
- (planWritten ? "" : "## No plan file found — derive the task list from the task below instead.\n## Task\n" + TASK + "\n\n") +
344
- (AMENDS ? "## Amendment\nThis run amends the existing feature \"" + AMENDS + "\". Return the SMALLEST set of tasks that covers the actual change (plus their dependents). One distinct unit of work = exactly one task — do NOT return duplicate or near-identical tasks, and do NOT split a single small change across multiple tasks. OMIT every task unaffected by this change — they are reused as-is.\n\n" : "") +
345
- "## Output contract (STRICT)\n" +
346
- "Call the `StructuredOutput` tool EXACTLY ONCE with a JSON object matching the schema. " +
347
- "Do NOT reply with prose, markdown, XML, or a code block — those do not count and will be rejected. " +
348
- "The JSON has a `tasks` array; each task: id, description, acceptance, optional files[], and dependsOn[] " +
349
- "(empty for independent tasks; a prerequisite task id otherwise; no cycles).",
350
- { label: "design-extract:" + type, phase: "Design", schema: DESIGN_SHAPE }
351
- )
352
- if (!design || !Array.isArray(design.tasks) || design.tasks.length === 0) {
353
- return { error: "design-failed", type, brainstorm, docs: { specWritten, planWritten } }
354
- }
355
- // Normalize task ids: the extract agent sometimes returns tasks with a missing or
356
- // blank `id` (schema validation can let an empty string through), which then shows
357
- // up as "implement:undefined" in labels and breaks dependsOn wiring. Backfill any
358
- // missing/duplicate id with a synthetic Tn so labels, topo-sort, and deps are stable.
359
- {
360
- const seen = Object.create(null)
361
- let n = 0
362
- for (const t of design.tasks) {
363
- n++
364
- const raw = typeof t.id === "string" ? t.id.trim() : ""
365
- t.id = raw && !seen[raw] ? raw : "T" + n
366
- seen[t.id] = true
367
- }
368
- }
369
- log("Designed " + design.tasks.length + " task(s) using " + designSkill + " (spec=" + specWritten + " plan=" + planWritten + ")")
370
-
371
- // Topo-sort (Kahn) over design.tasks by dependsOn → ordered batches.
372
- const topoSort = (tasks) => {
373
- const byId = Object.create(null)
374
- for (const t of tasks) byId[t.id] = t
375
- const indeg = Object.create(null)
376
- const deps = Object.create(null)
377
- for (const t of tasks) {
378
- deps[t.id] = (t.dependsOn || []).filter((d) => byId[d])
379
- indeg[t.id] = deps[t.id].length
380
- }
381
- const batches = []
382
- let remaining = tasks.map((t) => t.id)
383
- while (remaining.length) {
384
- const ready = remaining.filter((id) => indeg[id] === 0)
385
- if (!ready.length) return { error: "design-cycle", cycleNodes: remaining }
386
- batches.push(ready)
387
- const readySet = Object.create(null)
388
- for (const id of ready) readySet[id] = true
389
- remaining = remaining.filter((id) => !readySet[id])
390
- for (const id of remaining) {
391
- indeg[id] = deps[id].filter((d) => !readySet[d] && remaining.indexOf(d) >= 0).length
392
- }
393
- }
394
- return { batches }
395
- }
396
- const topo = topoSort(design.tasks)
397
- if (topo.error) {
398
- return { error: "design-cycle", cycleNodes: topo.cycleNodes, type, brainstorm, design }
399
- }
400
- const batches = topo.batches
401
- const taskById = Object.create(null)
402
- for (const t of design.tasks) taskById[t.id] = t
403
-
404
- // Intent carried from brainstorm/design into each implementer so it builds toward
405
- // the CHOSEN approach, not its own re-derivation. Plan path lets it read the spec.
406
- const intentBlock =
407
- ((brainstorm.chosenApproach && typeof brainstorm.chosenApproach === "string")
408
- ? "## Intent (from design — build toward THIS approach)\n" + brainstorm.chosenApproach +
409
- (brainstorm.chosenRationale ? "\nRationale: " + brainstorm.chosenRationale : "") + "\n" +
410
- "Spec/plan for the whole feature: `" + SPEC_PATH + "` / `" + PLAN_PATH + "` (read if you need fuller context).\n\n"
411
- : "")
412
-
413
- // ---------------------------------------------------------------------------
414
- // Helpers: implement (per-task, worktree), integrate, verify, debug, report
415
- // ---------------------------------------------------------------------------
416
- const runImplementTask = (task, failuresOrEmpty, isolate) => agent(
417
- "Apply the `compose:tdd` skill. Use the `skill` tool to load it before working.\n\n" +
418
- "## Overall task\n" + TASK + "\n\n" +
419
- intentBlock +
420
- "## Your work item (" + task.id + ")\n" + task.description + "\nAcceptance: " + task.acceptance +
421
- (task.files && task.files.length ? "\nFiles: " + task.files.join(", ") : "") + "\n\n" +
422
- (failuresOrEmpty ? "## Verify failures from previous attempt — focus on these\n" + failuresOrEmpty + "\n\n" : "") +
423
- "Write the failing test first (use the `write` tool), then the minimal code to pass, then refactor. " +
424
- "Actually create the source and test files on disk with the `write` tool — do not just describe them. " +
425
- (isolate ? "Commit your work inside this worktree." : "Commit your work in the workspace."),
426
- isolate
427
- ? { label: "implement:" + task.id, phase: "Implement", isolation: "worktree" }
428
- : { label: "implement:" + task.id, phase: "Implement" }
429
- )
430
-
431
- const runIntegrate = (kept) => agent(
432
- "Integrate the per-task worktrees below into the main workspace.\n\n" +
433
- "## Worktrees to merge\n" + JSON.stringify(kept) + "\n\n" +
434
- "For each `_worktree`, fetch its branch into the main workspace and merge (or fast-forward) it onto current HEAD. " +
435
- "Resolve trivial conflicts (whitespace, import order, formatting) automatically. Surface real conflicts unmodified. " +
436
- "Then `git worktree remove` each integrated worktree.\n\n" +
437
- "Return structured output only.",
438
- { label: "integrate", phase: "Implement", schema: INTEGRATE_SHAPE }
439
- )
440
-
441
- const runVerify = () => agent(
442
- "Apply the `compose:verify` skill. Use the `skill` tool to load it FIRST, then follow its discipline " +
443
- "(the Iron Law: no completion claim without fresh verification evidence — run the real commands, read the full output, " +
444
- "never trust 'should pass' or an agent's self-report).\n\n" +
445
- "## Run the project's verification commands and report the outcome\n" +
446
- "1. First run `pwd` and `ls` to confirm your working directory and that the project's source/test files are actually present here. The implemented code lives in THIS workspace — verify from the workspace root (or the package subdir AGENTS.md specifies), never from a stale or temp cwd.\n" +
447
- "2. Inspect AGENTS.md / CLAUDE.md / package.json for the project's verify commands (typecheck, test, build).\n" +
448
- "3. Run them via the Bash tool from the correct directory. If a command reports 'file not found' or 0 tests, you are in the wrong directory — `cd` to where the files are and re-run before reporting.\n" +
449
- "4. Capture passed/failed test counts from the ACTUAL command output. Summarize failures concisely if any.\n\n" +
450
- "Return structured output only — and it must reflect the real command output, not an assumption.",
451
- { label: "verify", phase: "Verify", schema: VERIFY_SHAPE }
452
- )
453
-
454
- const runDebug = (failures) => agent(
455
- "Apply the `compose:debug` skill. Use the `skill` tool to load it before working.\n\n" +
456
- "## Verify failures / integrate conflicts\n" + failures + "\n\n" +
457
- "Identify the root cause and fix it. Do not paper over symptoms.",
458
- { label: "debug", phase: "Implement" }
459
- )
460
-
461
- const runIterationReport = async (iteration, verifyResult) => {
462
- if (SKIP_REPORT) return null
463
- // The agent writes the markdown report file. No schema — a schema would bias the
464
- // agent into emitting JSON instead of doing the write. The workflow only verifies
465
- // the file exists afterward.
466
- await agent(
467
- "Apply the `compose:report` skill in per-iteration mode. Use the `skill` tool to load it first.\n\n" +
468
- docsBlock + "\n\n" +
469
- "## Report file you MUST write (overwrite-in-place, accumulate Journey Log)\n" + REPORT_PATH + "\n\n" +
470
- "## Iteration\n" + iteration + "\n\n" +
471
- "## Overall task\n" + TASK + "\n\n" +
472
- "## Verify result\n" + JSON.stringify(verifyResult) + "\n\n" +
473
- "Read the existing report if present (use `read`), update sections, append a Journey Log entry for this iteration, " +
474
- "and write the file with the `write` tool. Keep it brief. Writing the file is the deliverable — do not just describe it.",
475
- { label: "iteration-report:" + iteration, phase: "Report" }
476
- )
477
- return { iteration, written: await exists(REPORT_PATH) }
478
- }
479
-
480
- // Dispatch a batch of tasks in parallel, each isolated in its own worktree, then
481
- // integrate the kept worktrees. Returns { perTaskResults, integrate }.
482
- const runBatch = async (batchIds, failuresOrEmpty) => {
483
- const tasks = batchIds.map((id) => taskById[id])
484
- const perTaskResults = []
485
- const kept = []
486
- // Per-batch isolation: a batch with >1 independent task auto-isolates (worktree
487
- // per task) so they can run CONCURRENTLY without clobbering the shared workspace;
488
- // a single-task batch stays sequential in the main workspace. args.isolate_worktrees
489
- // forces either way. parallel() is gated on ISOLATE for exactly this reason.
490
- const ISOLATE = isolateBatch(batchIds)
491
- const limit = ISOLATE ? Math.min(MAX_CONCURRENT, tasks.length) : 1
492
- for (let i = 0; i < tasks.length; i += limit) {
493
- const chunk = tasks.slice(i, i + limit)
494
- const results = await parallel(chunk.map((t) => () => runImplementTask(t, failuresOrEmpty, ISOLATE)))
495
- for (let j = 0; j < chunk.length; j++) {
496
- const t = chunk[j]
497
- const r = results[j]
498
- if (ISOLATE) {
499
- const wt = r && typeof r === "object" ? r._worktree : null
500
- if (wt && wt.changed) {
501
- kept.push({ taskId: t.id, _worktree: wt })
502
- perTaskResults.push({ taskId: t.id, status: "ok", branch: wt.branch })
503
- } else if (r === null) {
504
- perTaskResults.push({ taskId: t.id, status: "failed" })
505
- } else {
506
- perTaskResults.push({ taskId: t.id, status: "pristine" })
507
- }
508
- } else {
509
- // Non-isolated: the agent wrote directly into the main workspace. A non-null
510
- // result means it ran; failure surfaces as null. No worktree to integrate.
511
- perTaskResults.push({ taskId: t.id, status: r === null ? "failed" : "ok" })
512
- }
513
- }
514
- }
515
- // Integrate only when isolated worktrees were kept. In non-isolated mode the work
516
- // already lives in the main workspace, so there is nothing to merge.
517
- const integrate = kept.length
518
- ? await runIntegrate(kept)
519
- : { merged: [], conflicts: [], skipped_pristine: perTaskResults.filter((r) => r.status !== "ok").map((r) => r.taskId) }
520
- return { perTaskResults, integrate: integrate || { merged: [], conflicts: [], skipped_pristine: [] } }
521
- }
522
-
523
- // ---------------------------------------------------------------------------
524
- // Phase 3 — Implement (TDD outer loop, ≤3 attempts)
525
- // ---------------------------------------------------------------------------
526
- phase("Implement")
527
- const verifyHistory = []
528
- const implementHistory = []
529
- let verify = null
530
- let tddAttempts = 0
531
- for (let attempt = 0; attempt < MAX_TDD_ATTEMPTS; attempt++) {
532
- tddAttempts = attempt + 1
533
- const failures = attempt === 0 ? "" : (verify && verify.failures ? verify.failures : "")
534
- let attemptConflicts = []
535
- const perTaskResults = []
536
- const integrateHistory = []
537
- for (const batchIds of batches) {
538
- const batchOut = await runBatch(batchIds, failures)
539
- for (const r of batchOut.perTaskResults) perTaskResults.push(r)
540
- integrateHistory.push(batchOut.integrate)
541
- if (batchOut.integrate.conflicts && batchOut.integrate.conflicts.length) {
542
- attemptConflicts = attemptConflicts.concat(batchOut.integrate.conflicts)
543
- }
544
- }
545
-
546
- phase("Verify")
547
- verify = await runVerify()
548
- if (verify) verifyHistory.push(verify)
549
- const conflictText = attemptConflicts.length ? "\nIntegrate conflicts: " + JSON.stringify(attemptConflicts) : ""
550
- const passed = verify && verify.allPassed && attemptConflicts.length === 0
551
-
552
- implementHistory.push({
553
- attempt: tddAttempts,
554
- perTaskResults,
555
- integrate: { batches: integrateHistory },
556
- verify: verify || null,
557
- })
558
-
559
- if (passed) {
560
- log("Verify passed on attempt " + tddAttempts)
561
- phase("Report")
562
- await runIterationReport(tddAttempts, verify)
563
- break
564
- }
565
- if (attempt + 1 === MAX_TDD_ATTEMPTS) {
566
- return { error: "verify-exhausted", type, brainstorm, design, batches, verifyHistory, implementHistory, attempts: MAX_TDD_ATTEMPTS }
567
- }
568
- phase("Implement")
569
- await runDebug((verify ? (verify.failures || "verify returned no detail") : "verify agent failed (null)") + conflictText)
570
- }
571
-
572
- // ---------------------------------------------------------------------------
573
- // Phase 4 — Review + Phase 5 — Fix loop (≤2 attempts)
574
- // ---------------------------------------------------------------------------
575
- const IMPLEMENTED_DIGEST = design.tasks.map((t) => "- " + t.id + ": " + t.description + " (acceptance: " + t.acceptance + ")").join("\n")
576
- const runReview = () => agent(
577
- "Apply the `compose:review` skill. Use the `skill` tool to load it FIRST, then follow it.\n\n" +
578
- "Review the implemented change in TWO STAGES, spec-compliance BEFORE code-quality (this mirrors compose:subagent's two-stage gate):\n" +
579
- "### Stage 1 — Spec compliance (evidence-gated)\n" +
580
- "Run `git diff` (e.g. `git diff HEAD~<n>..HEAD`, or against the run's base) to see EXACTLY what changed, and read the changed files. " +
581
- "For each acceptance criterion below, confirm with evidence from the diff/tests that it is met. Anything unmet or unverifiable is a CRITICAL finding. " +
582
- "Do this from the diff + spec ALONE first — do not assume the implementer's claims are correct.\n" +
583
- "### Stage 2 — Code quality\n" +
584
- "Only once spec compliance holds, review the diff for quality: correctness bugs, missing error handling at real boundaries, tests that don't test, dead code, simplification.\n\n" +
585
- "## Overall task\n" + TASK + "\n\n" +
586
- intentBlock +
587
- "## What was implemented (acceptance criteria to verify)\n" + IMPLEMENTED_DIGEST + "\n\n" +
588
- "## What to produce\n" +
589
- "Triage findings into critical (must fix before merge — includes ANY unmet spec/acceptance), important (should fix), and minor (nits). " +
590
- "Set readyToMerge=true ONLY if critical is empty AND every acceptance criterion is met with evidence.\n\n" +
591
- "Return structured output only.",
592
- { label: "review", phase: "Review", schema: REVIEW_SHAPE }
593
- )
594
-
595
- const runFixTask = (finding, i, isolate) => agent(
596
- "Address the CRITICAL review finding below. Apply the `compose:tdd` skill to fix it with tests where possible. " +
597
- "Use the `skill` tool to load it first.\n\n" +
598
- "## Critical finding (" + (i + 1) + ")\n" + finding + "\n\n" +
599
- "Fix it with the `write`/`edit` tools and commit " + (isolate ? "inside this worktree." : "in the workspace."),
600
- isolate ? { label: "fix:" + i, phase: "Fix", isolation: "worktree" } : { label: "fix:" + i, phase: "Fix" }
601
- )
602
-
603
- phase("Review")
604
- let review = await runReview()
605
- if (!review) review = { critical: [], important: [], minor: [], readyToMerge: true }
606
- let reviewFixAttempts = 0
607
- const fixHistory = []
608
-
609
- if (review.critical && review.critical.length > 0) {
610
- phase("Fix")
611
- for (let attempt = 0; attempt < MAX_REVIEW_FIX_ATTEMPTS; attempt++) {
612
- reviewFixAttempts = attempt + 1
613
- // Same per-batch rule as implement: isolate (worktree per fix) when >1 critical
614
- // fix would run concurrently, or when forced; otherwise sequential in main workspace.
615
- const ISOLATE = isolateBatch(review.critical.map((_, i) => "fix-" + i))
616
- const limit = ISOLATE ? Math.min(MAX_CONCURRENT, review.critical.length) : 1
617
- const perTaskResults = []
618
- const kept = []
619
- const criticals = review.critical
620
- for (let i = 0; i < criticals.length; i += limit) {
621
- const chunk = criticals.slice(i, i + limit)
622
- const results = await parallel(chunk.map((finding, k) => () => runFixTask(finding, i + k, ISOLATE)))
623
- for (let j = 0; j < chunk.length; j++) {
624
- const r = results[j]
625
- if (ISOLATE) {
626
- const wt = r && typeof r === "object" ? r._worktree : null
627
- if (wt && wt.changed) {
628
- kept.push({ taskId: "fix-" + (i + j), _worktree: wt })
629
- perTaskResults.push({ taskId: "fix-" + (i + j), status: "ok", branch: wt.branch })
630
- } else {
631
- perTaskResults.push({ taskId: "fix-" + (i + j), status: r === null ? "failed" : "pristine" })
632
- }
633
- } else {
634
- perTaskResults.push({ taskId: "fix-" + (i + j), status: r === null ? "failed" : "ok" })
635
- }
636
- }
637
- }
638
- const integrate = kept.length ? (await runIntegrate(kept)) || { merged: [], conflicts: [], skipped_pristine: [] } : { merged: [], conflicts: [], skipped_pristine: [] }
639
-
640
- phase("Verify")
641
- const reverify = await runVerify()
642
- if (reverify) verifyHistory.push(reverify)
643
-
644
- phase("Review")
645
- review = await runReview()
646
- if (!review) review = { critical: [], important: [], minor: [], readyToMerge: false }
647
-
648
- fixHistory.push({ attempt: reviewFixAttempts, perTaskResults, integrate, verify: reverify || null, review })
649
-
650
- phase("Report")
651
- await runIterationReport(MAX_TDD_ATTEMPTS + reviewFixAttempts, reverify)
652
-
653
- if (!review.critical || review.critical.length === 0) {
654
- log("Critical issues cleared on fix attempt " + reviewFixAttempts)
655
- break
656
- }
657
- }
658
- if (review.critical && review.critical.length > 0) {
659
- return {
660
- readyToMerge: false,
661
- type, brainstorm, design, batches, verifyHistory, implementHistory, fixHistory, review,
662
- attempts: { tdd: tddAttempts, reviewFix: reviewFixAttempts },
663
- }
664
- }
665
- }
666
-
667
- // ---------------------------------------------------------------------------
668
- // Phase 6 — Final Report (consolidate, committed before merge)
669
- // ---------------------------------------------------------------------------
670
- let finalReport = null
671
- if (!SKIP_REPORT) {
672
- phase("Report")
673
- // The agent writes the consolidated final report file; the workflow only gates
674
- // on existence. No schema — writing the markdown is the deliverable.
675
- await agent(
676
- "Apply the `compose:report` skill in FINAL consolidation mode. Use the `skill` tool to load it first.\n\n" +
677
- docsBlock + "\n\n" +
678
- "## Report file you MUST write (read the in-progress per-iteration file, overwrite with canonical final state)\n" + REPORT_PATH + "\n\n" +
679
- "## Overall task\n" + TASK + "\n\n" +
680
- "## Run history\n" +
681
- "verifyHistory: " + JSON.stringify(verifyHistory) + "\n" +
682
- "implementHistory: " + JSON.stringify(implementHistory) + "\n" +
683
- "reviewFixAttempts: " + reviewFixAttempts + "\n" +
684
- "review: " + JSON.stringify(review) + "\n\n" +
685
- "Produce the final-state report (What Was Built / Architecture / Design Decisions / Usage / Verification / Journey Log / Source Materials). " +
686
- "Distill the Journey Log to at most 5 entries. Write the file with the `write` tool, then commit it. " +
687
- "Writing the file is the deliverable — do not just describe it.",
688
- { label: "final-report", phase: "Report" }
689
- )
690
- // Re-dispatch once if the agent skipped the write.
691
- if (!(await exists(REPORT_PATH))) {
692
- await agent(
693
- "The final report file `" + REPORT_PATH + "` does not exist yet. Apply `compose:report` and WRITE it now with the `write` tool " +
694
- "(What Was Built / Architecture / Design Decisions / Usage / Verification / Journey Log / Source Materials) for the task: " + TASK,
695
- { label: "final-report-retry", phase: "Report" }
696
- )
697
- }
698
- finalReport = { path: REPORT_PATH, written: await exists(REPORT_PATH) }
699
- }
700
-
701
- // ---------------------------------------------------------------------------
702
- // Phase 7 — Merge
703
- // ---------------------------------------------------------------------------
704
- phase("Merge")
705
- const merge = await agent(
706
- "Apply the `compose:merge` skill. Use the `skill` tool to load it before working.\n\n" +
707
- "## Task\n" + TASK + "\n\n" +
708
- "## What was built (use this for the commit/PR message)\n" + IMPLEMENTED_DIGEST + "\n\n" +
709
- ((review && (_arr(review.important).length || _arr(review.minor).length))
710
- ? "## Review outcome (critical cleared; note any deferred items)\n" +
711
- (_arr(review.important).length ? "Important (should follow up):\n" + _arr(review.important).map((x) => "- " + x).join("\n") + "\n" : "") +
712
- (_arr(review.minor).length ? "Minor (nits):\n" + _arr(review.minor).map((x) => "- " + x).join("\n") + "\n" : "") + "\n"
713
- : "") +
714
- "Commit the changes. If the branch tracks a remote and a PR is appropriate, push and open one.\n" +
715
- "Pick the smallest action that satisfies the goal:\n" +
716
- "- `commit`: just record locally\n" +
717
- "- `commit+push`: also push to the existing remote branch\n" +
718
- "- `commit+pr`: push and open a PR\n\n" +
719
- "Return structured output only.",
720
- { label: "merge", phase: "Merge", schema: MERGE_SHAPE }
721
- )
722
- if (!merge || !merge.committed) {
723
- return {
724
- error: "merge-failed",
725
- type, brainstorm, design, batches, verifyHistory, implementHistory, review, finalReport,
726
- merge: merge || { committed: false, action: "none" },
727
- attempts: { tdd: tddAttempts, reviewFix: reviewFixAttempts },
728
- }
729
- }
730
-
731
- return {
732
- brainstorm,
733
- type,
734
- design,
735
- batches,
736
- implementHistory,
737
- verifyHistory,
738
- review,
739
- fixHistory: fixHistory.length ? fixHistory : undefined,
740
- reviewFixes: reviewFixAttempts,
741
- finalReport,
742
- merge,
743
- stats: {
744
- agents: verifyHistory.length + tddAttempts + reviewFixAttempts + 4, // brainstorm + design-write + design-extract + review + merge (approx)
745
- phases: 7,
746
- parallelBatches: batches.length,
747
- durationMs: 0, // QuickJS guest has no Date; host can compute from journal if needed
748
- },
749
- }