@sleepy-ai/cli 0.1.6 → 0.1.8

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 (799) 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/Dockerfile +0 -18
  7. package/drizzle.config.ts +0 -10
  8. package/git +0 -0
  9. package/migration/20260127222353_familiar_lady_ursula/migration.sql +0 -90
  10. package/migration/20260127222353_familiar_lady_ursula/snapshot.json +0 -796
  11. package/migration/20260211171708_add_project_commands/migration.sql +0 -1
  12. package/migration/20260211171708_add_project_commands/snapshot.json +0 -806
  13. package/migration/20260213144116_wakeful_the_professor/migration.sql +0 -11
  14. package/migration/20260213144116_wakeful_the_professor/snapshot.json +0 -897
  15. package/migration/20260225215848_workspace/migration.sql +0 -7
  16. package/migration/20260225215848_workspace/snapshot.json +0 -959
  17. package/migration/20260227213759_add_session_workspace_id/migration.sql +0 -2
  18. package/migration/20260227213759_add_session_workspace_id/snapshot.json +0 -983
  19. package/migration/20260228203230_blue_harpoon/migration.sql +0 -17
  20. package/migration/20260228203230_blue_harpoon/snapshot.json +0 -1102
  21. package/migration/20260303231226_add_workspace_fields/migration.sql +0 -5
  22. package/migration/20260303231226_add_workspace_fields/snapshot.json +0 -1013
  23. package/migration/20260309230000_move_org_to_state/migration.sql +0 -3
  24. package/migration/20260309230000_move_org_to_state/snapshot.json +0 -1156
  25. package/migration/20260312043431_session_message_cursor/migration.sql +0 -4
  26. package/migration/20260312043431_session_message_cursor/snapshot.json +0 -1168
  27. package/migration/20260323234822_events/migration.sql +0 -13
  28. package/migration/20260323234822_events/snapshot.json +0 -1271
  29. package/migration/20260410174513_workspace-name/migration.sql +0 -16
  30. package/migration/20260410174513_workspace-name/snapshot.json +0 -1271
  31. package/migration/20260413175956_chief_energizer/migration.sql +0 -13
  32. package/migration/20260413175956_chief_energizer/snapshot.json +0 -1399
  33. package/migration/20260422160000_context_inheritance/migration.sql +0 -3
  34. package/migration/20260422170000_task_registry/migration.sql +0 -18
  35. package/migration/20260423145421_remove_session_entry/migration.sql +0 -4
  36. package/migration/20260515000000_actor_rename/migration.sql +0 -7
  37. package/migration/20260515010000_memory_fts/migration.sql +0 -33
  38. package/migration/20260515020000_user_task/migration.sql +0 -29
  39. package/migration/20260519000000_last_checkpoint_message_id/migration.sql +0 -1
  40. package/migration/20260521000000_message_agent_id/migration.sql +0 -2
  41. package/migration/20260521000100_actor_registry_v6/migration.sql +0 -25
  42. package/migration/20260521010000_memory_fts_v6/migration.sql +0 -33
  43. package/migration/20260521020000_memory_fts_triggers/migration.sql +0 -17
  44. package/migration/20260526000000_agent_id_main/migration.sql +0 -14
  45. package/migration/20260527000000_actor_lifecycle/migration.sql +0 -8
  46. package/migration/20260527000100_inbox/migration.sql +0 -12
  47. package/migration/20260529000000_task_todo_redesign/migration.sql +0 -16
  48. package/migration/20260603000000_task_in_progress_owner/migration.sql +0 -1
  49. package/migration/20260603000000_workflow_run/migration.sql +0 -17
  50. package/migration/20260604000000_workflow_script_sha/migration.sql +0 -1
  51. package/migration/20260608000000_claude_import/migration.sql +0 -7
  52. package/migration/20260608010000_claude_import_message_ids/migration.sql +0 -1
  53. package/migration/20260609000000_history_fts/migration.sql +0 -29
  54. package/migration/20260609230000_workflow_agent_timeout/migration.sql +0 -1
  55. package/migration/20260612000000_external_import/migration.sql +0 -16
  56. package/parsers-config.ts +0 -290
  57. package/src/account/account.sql.ts +0 -39
  58. package/src/account/account.ts +0 -456
  59. package/src/account/repo.ts +0 -166
  60. package/src/account/schema.ts +0 -99
  61. package/src/account/url.ts +0 -8
  62. package/src/acp/README.md +0 -174
  63. package/src/acp/agent.ts +0 -1787
  64. package/src/acp/session.ts +0 -116
  65. package/src/acp/types.ts +0 -24
  66. package/src/actor/actor.sql.ts +0 -38
  67. package/src/actor/events.ts +0 -67
  68. package/src/actor/index.ts +0 -2
  69. package/src/actor/registry.ts +0 -412
  70. package/src/actor/return-header.ts +0 -24
  71. package/src/actor/schema.ts +0 -47
  72. package/src/actor/spawn-ref.ts +0 -16
  73. package/src/actor/spawn.ts +0 -756
  74. package/src/actor/turn.ts +0 -49
  75. package/src/actor/waiter.ts +0 -166
  76. package/src/agent/agent.ts +0 -574
  77. package/src/agent/config.ts +0 -5
  78. package/src/agent/generate.txt +0 -75
  79. package/src/agent/prompt/checkpoint-writer.txt +0 -167
  80. package/src/agent/prompt/compaction.txt +0 -9
  81. package/src/agent/prompt/distill.txt +0 -199
  82. package/src/agent/prompt/dream.txt +0 -155
  83. package/src/agent/prompt/explore.txt +0 -18
  84. package/src/agent/prompt/summary.txt +0 -11
  85. package/src/agent/prompt/title.txt +0 -44
  86. package/src/audio.d.ts +0 -9
  87. package/src/auth/index.ts +0 -97
  88. package/src/bus/bus-event.ts +0 -33
  89. package/src/bus/global.ts +0 -12
  90. package/src/bus/index.ts +0 -193
  91. package/src/cli/bootstrap.ts +0 -33
  92. package/src/cli/cmd/account.ts +0 -258
  93. package/src/cli/cmd/acp.ts +0 -70
  94. package/src/cli/cmd/agent.ts +0 -248
  95. package/src/cli/cmd/cmd.ts +0 -7
  96. package/src/cli/cmd/db.ts +0 -120
  97. package/src/cli/cmd/debug/agent.ts +0 -192
  98. package/src/cli/cmd/debug/config.ts +0 -17
  99. package/src/cli/cmd/debug/file.ts +0 -100
  100. package/src/cli/cmd/debug/index.ts +0 -48
  101. package/src/cli/cmd/debug/lsp.ts +0 -61
  102. package/src/cli/cmd/debug/ripgrep.ts +0 -105
  103. package/src/cli/cmd/debug/scrap.ts +0 -16
  104. package/src/cli/cmd/debug/skill.ts +0 -23
  105. package/src/cli/cmd/debug/snapshot.ts +0 -53
  106. package/src/cli/cmd/doctor.ts +0 -116
  107. package/src/cli/cmd/export.ts +0 -306
  108. package/src/cli/cmd/generate.ts +0 -50
  109. package/src/cli/cmd/github.ts +0 -1647
  110. package/src/cli/cmd/import.ts +0 -208
  111. package/src/cli/cmd/init.ts +0 -97
  112. package/src/cli/cmd/login.ts +0 -402
  113. package/src/cli/cmd/mcp.ts +0 -812
  114. package/src/cli/cmd/models.ts +0 -88
  115. package/src/cli/cmd/plug.ts +0 -233
  116. package/src/cli/cmd/pr.ts +0 -138
  117. package/src/cli/cmd/providers.ts +0 -713
  118. package/src/cli/cmd/run-completion.ts +0 -77
  119. package/src/cli/cmd/run.ts +0 -694
  120. package/src/cli/cmd/serve.ts +0 -30
  121. package/src/cli/cmd/session.ts +0 -181
  122. package/src/cli/cmd/stats.ts +0 -413
  123. package/src/cli/cmd/tui/app.tsx +0 -1181
  124. package/src/cli/cmd/tui/asset/TEN_VAD_LICENSE +0 -12
  125. package/src/cli/cmd/tui/asset/charge.wav +0 -0
  126. package/src/cli/cmd/tui/asset/pulse-a.wav +0 -0
  127. package/src/cli/cmd/tui/asset/pulse-b.wav +0 -0
  128. package/src/cli/cmd/tui/asset/pulse-c.wav +0 -0
  129. package/src/cli/cmd/tui/asset/ten_vad.wasm +0 -0
  130. package/src/cli/cmd/tui/asset/ten_vad_loader.js +0 -30
  131. package/src/cli/cmd/tui/attach.ts +0 -84
  132. package/src/cli/cmd/tui/component/background-image.tsx +0 -150
  133. package/src/cli/cmd/tui/component/banner-session-expired.tsx +0 -48
  134. package/src/cli/cmd/tui/component/bg-pulse.tsx +0 -130
  135. package/src/cli/cmd/tui/component/border.tsx +0 -21
  136. package/src/cli/cmd/tui/component/dialog-agent.tsx +0 -31
  137. package/src/cli/cmd/tui/component/dialog-agreement.tsx +0 -111
  138. package/src/cli/cmd/tui/component/dialog-command.tsx +0 -219
  139. package/src/cli/cmd/tui/component/dialog-console-org.tsx +0 -103
  140. package/src/cli/cmd/tui/component/dialog-go-upsell.tsx +0 -157
  141. package/src/cli/cmd/tui/component/dialog-image-list.tsx +0 -111
  142. package/src/cli/cmd/tui/component/dialog-logo-design.tsx +0 -37
  143. package/src/cli/cmd/tui/component/dialog-mcp.tsx +0 -86
  144. package/src/cli/cmd/tui/component/dialog-model.tsx +0 -299
  145. package/src/cli/cmd/tui/component/dialog-provider.tsx +0 -449
  146. package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +0 -101
  147. package/src/cli/cmd/tui/component/dialog-session-list.tsx +0 -269
  148. package/src/cli/cmd/tui/component/dialog-session-rename.tsx +0 -31
  149. package/src/cli/cmd/tui/component/dialog-skill.tsx +0 -42
  150. package/src/cli/cmd/tui/component/dialog-sleepy-login.tsx +0 -288
  151. package/src/cli/cmd/tui/component/dialog-stash.tsx +0 -87
  152. package/src/cli/cmd/tui/component/dialog-status.tsx +0 -170
  153. package/src/cli/cmd/tui/component/dialog-tag.tsx +0 -44
  154. package/src/cli/cmd/tui/component/dialog-theme-list.tsx +0 -50
  155. package/src/cli/cmd/tui/component/dialog-token-plan.tsx +0 -77
  156. package/src/cli/cmd/tui/component/dialog-variant.tsx +0 -39
  157. package/src/cli/cmd/tui/component/dialog-workflows.tsx +0 -51
  158. package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +0 -289
  159. package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +0 -81
  160. package/src/cli/cmd/tui/component/dialog-worktree.tsx +0 -90
  161. package/src/cli/cmd/tui/component/error-component.tsx +0 -92
  162. package/src/cli/cmd/tui/component/logo.tsx +0 -961
  163. package/src/cli/cmd/tui/component/plugin-route-missing.tsx +0 -14
  164. package/src/cli/cmd/tui/component/prompt/autocomplete-detect.ts +0 -34
  165. package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +0 -668
  166. package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
  167. package/src/cli/cmd/tui/component/prompt/frecency.tsx +0 -90
  168. package/src/cli/cmd/tui/component/prompt/history.tsx +0 -108
  169. package/src/cli/cmd/tui/component/prompt/index.tsx +0 -1869
  170. package/src/cli/cmd/tui/component/prompt/offset.ts +0 -45
  171. package/src/cli/cmd/tui/component/prompt/part.ts +0 -36
  172. package/src/cli/cmd/tui/component/prompt/stash.tsx +0 -101
  173. package/src/cli/cmd/tui/component/spinner.tsx +0 -24
  174. package/src/cli/cmd/tui/component/starry-background.tsx +0 -305
  175. package/src/cli/cmd/tui/component/startup-loading.tsx +0 -67
  176. package/src/cli/cmd/tui/component/task-item.tsx +0 -63
  177. package/src/cli/cmd/tui/component/textarea-keybindings.ts +0 -73
  178. package/src/cli/cmd/tui/component/todo-item.tsx +0 -32
  179. package/src/cli/cmd/tui/component/workflow-tree.tsx +0 -177
  180. package/src/cli/cmd/tui/config/cwd.ts +0 -5
  181. package/src/cli/cmd/tui/config/tui-migrate.ts +0 -151
  182. package/src/cli/cmd/tui/config/tui-schema.ts +0 -38
  183. package/src/cli/cmd/tui/config/tui.ts +0 -219
  184. package/src/cli/cmd/tui/context/args.tsx +0 -16
  185. package/src/cli/cmd/tui/context/directory.ts +0 -15
  186. package/src/cli/cmd/tui/context/event.ts +0 -45
  187. package/src/cli/cmd/tui/context/exit.tsx +0 -65
  188. package/src/cli/cmd/tui/context/helper.tsx +0 -25
  189. package/src/cli/cmd/tui/context/keybind.tsx +0 -105
  190. package/src/cli/cmd/tui/context/kv.tsx +0 -86
  191. package/src/cli/cmd/tui/context/language.tsx +0 -91
  192. package/src/cli/cmd/tui/context/local.tsx +0 -469
  193. package/src/cli/cmd/tui/context/plugin-keybinds.ts +0 -41
  194. package/src/cli/cmd/tui/context/project.tsx +0 -109
  195. package/src/cli/cmd/tui/context/prompt.tsx +0 -18
  196. package/src/cli/cmd/tui/context/route.tsx +0 -68
  197. package/src/cli/cmd/tui/context/sdk.tsx +0 -150
  198. package/src/cli/cmd/tui/context/sync.tsx +0 -884
  199. package/src/cli/cmd/tui/context/theme/aura.json +0 -69
  200. package/src/cli/cmd/tui/context/theme/ayu.json +0 -80
  201. package/src/cli/cmd/tui/context/theme/carbonfox.json +0 -248
  202. package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +0 -230
  203. package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +0 -230
  204. package/src/cli/cmd/tui/context/theme/catppuccin.json +0 -112
  205. package/src/cli/cmd/tui/context/theme/cobalt2.json +0 -225
  206. package/src/cli/cmd/tui/context/theme/cursor.json +0 -249
  207. package/src/cli/cmd/tui/context/theme/dracula.json +0 -219
  208. package/src/cli/cmd/tui/context/theme/everforest.json +0 -241
  209. package/src/cli/cmd/tui/context/theme/flexoki.json +0 -237
  210. package/src/cli/cmd/tui/context/theme/github.json +0 -233
  211. package/src/cli/cmd/tui/context/theme/gruvbox.json +0 -242
  212. package/src/cli/cmd/tui/context/theme/kanagawa.json +0 -77
  213. package/src/cli/cmd/tui/context/theme/lucent-orng.json +0 -234
  214. package/src/cli/cmd/tui/context/theme/material.json +0 -235
  215. package/src/cli/cmd/tui/context/theme/matrix.json +0 -77
  216. package/src/cli/cmd/tui/context/theme/mercury.json +0 -252
  217. package/src/cli/cmd/tui/context/theme/monokai.json +0 -221
  218. package/src/cli/cmd/tui/context/theme/nightowl.json +0 -221
  219. package/src/cli/cmd/tui/context/theme/nord.json +0 -223
  220. package/src/cli/cmd/tui/context/theme/one-dark.json +0 -84
  221. package/src/cli/cmd/tui/context/theme/orng.json +0 -249
  222. package/src/cli/cmd/tui/context/theme/osaka-jade.json +0 -93
  223. package/src/cli/cmd/tui/context/theme/palenight.json +0 -222
  224. package/src/cli/cmd/tui/context/theme/rosepine.json +0 -234
  225. package/src/cli/cmd/tui/context/theme/sleepycode.json +0 -245
  226. package/src/cli/cmd/tui/context/theme/solarized.json +0 -223
  227. package/src/cli/cmd/tui/context/theme/synthwave84.json +0 -226
  228. package/src/cli/cmd/tui/context/theme/tokyonight.json +0 -243
  229. package/src/cli/cmd/tui/context/theme/vercel.json +0 -245
  230. package/src/cli/cmd/tui/context/theme/vesper.json +0 -218
  231. package/src/cli/cmd/tui/context/theme/zenburn.json +0 -223
  232. package/src/cli/cmd/tui/context/theme.tsx +0 -1298
  233. package/src/cli/cmd/tui/context/thinking.ts +0 -48
  234. package/src/cli/cmd/tui/context/tui-config.tsx +0 -9
  235. package/src/cli/cmd/tui/event.ts +0 -62
  236. package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +0 -93
  237. package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +0 -193
  238. package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +0 -54
  239. package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +0 -267
  240. package/src/cli/cmd/tui/feature-plugins/sidebar/cwd.tsx +0 -45
  241. package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +0 -62
  242. package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +0 -93
  243. package/src/cli/cmd/tui/feature-plugins/sidebar/goal.tsx +0 -84
  244. package/src/cli/cmd/tui/feature-plugins/sidebar/instructions.tsx +0 -54
  245. package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +0 -66
  246. package/src/cli/cmd/tui/feature-plugins/sidebar/mascot.tsx +0 -69
  247. package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +0 -98
  248. package/src/cli/cmd/tui/feature-plugins/sidebar/task.tsx +0 -95
  249. package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +0 -51
  250. package/src/cli/cmd/tui/feature-plugins/sidebar/tps.ts +0 -31
  251. package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +0 -274
  252. package/src/cli/cmd/tui/i18n/en.ts +0 -465
  253. package/src/cli/cmd/tui/i18n/es.ts +0 -508
  254. package/src/cli/cmd/tui/i18n/fr.ts +0 -515
  255. package/src/cli/cmd/tui/i18n/ja.ts +0 -463
  256. package/src/cli/cmd/tui/i18n/locales.ts +0 -82
  257. package/src/cli/cmd/tui/i18n/ru.ts +0 -527
  258. package/src/cli/cmd/tui/i18n/slash-command.ts +0 -11
  259. package/src/cli/cmd/tui/i18n/zh.ts +0 -454
  260. package/src/cli/cmd/tui/i18n/zht.ts +0 -430
  261. package/src/cli/cmd/tui/layer.ts +0 -6
  262. package/src/cli/cmd/tui/plugin/api.tsx +0 -402
  263. package/src/cli/cmd/tui/plugin/index.ts +0 -3
  264. package/src/cli/cmd/tui/plugin/internal.ts +0 -37
  265. package/src/cli/cmd/tui/plugin/runtime.ts +0 -1057
  266. package/src/cli/cmd/tui/plugin/slots.tsx +0 -60
  267. package/src/cli/cmd/tui/routes/home.tsx +0 -165
  268. package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +0 -76
  269. package/src/cli/cmd/tui/routes/session/dialog-message.tsx +0 -116
  270. package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +0 -47
  271. package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +0 -47
  272. package/src/cli/cmd/tui/routes/session/footer.tsx +0 -91
  273. package/src/cli/cmd/tui/routes/session/index.tsx +0 -3073
  274. package/src/cli/cmd/tui/routes/session/permission.tsx +0 -697
  275. package/src/cli/cmd/tui/routes/session/question.tsx +0 -488
  276. package/src/cli/cmd/tui/routes/session/sidebar.tsx +0 -97
  277. package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +0 -143
  278. package/src/cli/cmd/tui/thread.ts +0 -324
  279. package/src/cli/cmd/tui/ui/dialog-alert.tsx +0 -61
  280. package/src/cli/cmd/tui/ui/dialog-confirm.tsx +0 -95
  281. package/src/cli/cmd/tui/ui/dialog-export-options.tsx +0 -223
  282. package/src/cli/cmd/tui/ui/dialog-help.tsx +0 -42
  283. package/src/cli/cmd/tui/ui/dialog-prompt.tsx +0 -123
  284. package/src/cli/cmd/tui/ui/dialog-select.tsx +0 -467
  285. package/src/cli/cmd/tui/ui/dialog.tsx +0 -207
  286. package/src/cli/cmd/tui/ui/link.tsx +0 -28
  287. package/src/cli/cmd/tui/ui/spinner.ts +0 -378
  288. package/src/cli/cmd/tui/ui/toast.tsx +0 -102
  289. package/src/cli/cmd/tui/util/clipboard.ts +0 -203
  290. package/src/cli/cmd/tui/util/editor.ts +0 -36
  291. package/src/cli/cmd/tui/util/image-protocol.ts +0 -35
  292. package/src/cli/cmd/tui/util/index.ts +0 -6
  293. package/src/cli/cmd/tui/util/model.ts +0 -23
  294. package/src/cli/cmd/tui/util/pinyin.ts +0 -20
  295. package/src/cli/cmd/tui/util/provider-origin.ts +0 -7
  296. package/src/cli/cmd/tui/util/revert-diff.ts +0 -18
  297. package/src/cli/cmd/tui/util/scroll.ts +0 -23
  298. package/src/cli/cmd/tui/util/selection.ts +0 -23
  299. package/src/cli/cmd/tui/util/signal.ts +0 -41
  300. package/src/cli/cmd/tui/util/sound.ts +0 -154
  301. package/src/cli/cmd/tui/util/system-locale.ts +0 -209
  302. package/src/cli/cmd/tui/util/terminal.ts +0 -110
  303. package/src/cli/cmd/tui/util/transcript.ts +0 -112
  304. package/src/cli/cmd/tui/util/vad.ts +0 -229
  305. package/src/cli/cmd/tui/util/voice.ts +0 -450
  306. package/src/cli/cmd/tui/win32.ts +0 -130
  307. package/src/cli/cmd/tui/worker.ts +0 -104
  308. package/src/cli/cmd/uninstall.ts +0 -351
  309. package/src/cli/cmd/upgrade.ts +0 -79
  310. package/src/cli/cmd/web.ts +0 -96
  311. package/src/cli/effect/prompt.ts +0 -25
  312. package/src/cli/error.ts +0 -82
  313. package/src/cli/heap.ts +0 -59
  314. package/src/cli/i18n.ts +0 -15
  315. package/src/cli/logo.ts +0 -53
  316. package/src/cli/network.ts +0 -68
  317. package/src/cli/ui.ts +0 -133
  318. package/src/cli/upgrade.ts +0 -41
  319. package/src/command/index.ts +0 -276
  320. package/src/command/template/initialize.txt +0 -66
  321. package/src/command/template/review.txt +0 -101
  322. package/src/config/agent.ts +0 -197
  323. package/src/config/command.ts +0 -69
  324. package/src/config/compose.ts +0 -26
  325. package/src/config/config.ts +0 -1047
  326. package/src/config/console-state.ts +0 -16
  327. package/src/config/entry-name.ts +0 -16
  328. package/src/config/error.ts +0 -21
  329. package/src/config/formatter.ts +0 -17
  330. package/src/config/history.ts +0 -21
  331. package/src/config/index.ts +0 -17
  332. package/src/config/keybinds.ts +0 -127
  333. package/src/config/layout.ts +0 -10
  334. package/src/config/lsp.ts +0 -45
  335. package/src/config/managed.ts +0 -70
  336. package/src/config/markdown.ts +0 -97
  337. package/src/config/mcp.ts +0 -172
  338. package/src/config/model-id.ts +0 -14
  339. package/src/config/parse.ts +0 -44
  340. package/src/config/paths.ts +0 -85
  341. package/src/config/permission.ts +0 -76
  342. package/src/config/plugin.ts +0 -88
  343. package/src/config/provider.ts +0 -118
  344. package/src/config/server.ts +0 -20
  345. package/src/config/skills.ts +0 -16
  346. package/src/config/variable.ts +0 -90
  347. package/src/control-plane/adaptors/index.ts +0 -52
  348. package/src/control-plane/adaptors/worktree.ts +0 -47
  349. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  350. package/src/control-plane/schema.ts +0 -19
  351. package/src/control-plane/sse.ts +0 -66
  352. package/src/control-plane/types.ts +0 -34
  353. package/src/control-plane/util.ts +0 -37
  354. package/src/control-plane/workspace-context.ts +0 -26
  355. package/src/control-plane/workspace.sql.ts +0 -17
  356. package/src/control-plane/workspace.ts +0 -615
  357. package/src/effect/app-runtime.ts +0 -146
  358. package/src/effect/bootstrap-runtime.ts +0 -33
  359. package/src/effect/bridge.ts +0 -48
  360. package/src/effect/cross-spawn-spawner.ts +0 -514
  361. package/src/effect/index.ts +0 -5
  362. package/src/effect/instance-ref.ts +0 -11
  363. package/src/effect/instance-registry.ts +0 -12
  364. package/src/effect/instance-state.ts +0 -81
  365. package/src/effect/logger.ts +0 -73
  366. package/src/effect/memo-map.ts +0 -3
  367. package/src/effect/observability.ts +0 -107
  368. package/src/effect/run-service.ts +0 -52
  369. package/src/effect/runner.ts +0 -210
  370. package/src/effect/runtime.ts +0 -19
  371. package/src/env/index.ts +0 -37
  372. package/src/file/ignore.ts +0 -81
  373. package/src/file/index.ts +0 -664
  374. package/src/file/protected.ts +0 -59
  375. package/src/file/ripgrep.ts +0 -485
  376. package/src/file/watcher.ts +0 -163
  377. package/src/flag/flag.ts +0 -185
  378. package/src/format/formatter.ts +0 -403
  379. package/src/format/index.ts +0 -203
  380. package/src/git/index.ts +0 -260
  381. package/src/global/index.ts +0 -54
  382. package/src/history/backfill.ts +0 -162
  383. package/src/history/extract.ts +0 -67
  384. package/src/history/fts-query.ts +0 -15
  385. package/src/history/fts.sql.ts +0 -20
  386. package/src/history/index.ts +0 -10
  387. package/src/history/resolve.ts +0 -65
  388. package/src/history/service.ts +0 -258
  389. package/src/history/writer.ts +0 -112
  390. package/src/id/id.ts +0 -87
  391. package/src/ide/index.ts +0 -73
  392. package/src/inbox/inbox-ref.ts +0 -38
  393. package/src/inbox/inbox.sql.ts +0 -26
  394. package/src/inbox/inbox.ts +0 -223
  395. package/src/inbox/index.ts +0 -3
  396. package/src/inbox/render.ts +0 -40
  397. package/src/index.ts +0 -268
  398. package/src/installation/index.ts +0 -362
  399. package/src/installation/version.ts +0 -8
  400. package/src/lsp/client.ts +0 -249
  401. package/src/lsp/diagnostic.ts +0 -29
  402. package/src/lsp/index.ts +0 -3
  403. package/src/lsp/language.ts +0 -120
  404. package/src/lsp/launch.ts +0 -21
  405. package/src/lsp/lsp.ts +0 -519
  406. package/src/lsp/server.ts +0 -1956
  407. package/src/mcp/auth.ts +0 -144
  408. package/src/mcp/index.ts +0 -939
  409. package/src/mcp/oauth-callback.ts +0 -236
  410. package/src/mcp/oauth-provider.ts +0 -214
  411. package/src/memory/fts-query.ts +0 -37
  412. package/src/memory/fts.sql.ts +0 -19
  413. package/src/memory/index.ts +0 -1
  414. package/src/memory/paths.ts +0 -116
  415. package/src/memory/reconcile.ts +0 -144
  416. package/src/memory/service.ts +0 -144
  417. package/src/metrics/client.ts +0 -40
  418. package/src/metrics/event.ts +0 -43
  419. package/src/metrics/index.ts +0 -5
  420. package/src/metrics/installation.ts +0 -18
  421. package/src/metrics/subscriber.ts +0 -58
  422. package/src/metrics/util.ts +0 -9
  423. package/src/node.ts +0 -6
  424. package/src/npm/config.ts +0 -0
  425. package/src/npm/index.ts +0 -293
  426. package/src/npmcli-config.d.ts +0 -43
  427. package/src/patch/index.ts +0 -680
  428. package/src/permission/arity.ts +0 -163
  429. package/src/permission/evaluate.ts +0 -15
  430. package/src/permission/index.ts +0 -382
  431. package/src/permission/schema.ts +0 -17
  432. package/src/plugin/checkpoint-splitover.ts +0 -60
  433. package/src/plugin/cloudflare.ts +0 -76
  434. package/src/plugin/codex.ts +0 -611
  435. package/src/plugin/github-copilot/copilot.ts +0 -368
  436. package/src/plugin/github-copilot/models.ts +0 -153
  437. package/src/plugin/index.ts +0 -637
  438. package/src/plugin/install.ts +0 -439
  439. package/src/plugin/loader.ts +0 -216
  440. package/src/plugin/matcher.ts +0 -33
  441. package/src/plugin/meta.ts +0 -188
  442. package/src/plugin/shared.ts +0 -323
  443. package/src/plugin/sleepy.ts +0 -244
  444. package/src/plugin/subagent-progress-checker.ts +0 -147
  445. package/src/project/bootstrap.ts +0 -59
  446. package/src/project/index.ts +0 -2
  447. package/src/project/instance.ts +0 -215
  448. package/src/project/project-id.ts +0 -48
  449. package/src/project/project.sql.ts +0 -16
  450. package/src/project/project.ts +0 -522
  451. package/src/project/schema.ts +0 -15
  452. package/src/project/vcs.ts +0 -227
  453. package/src/project/workspace-trust.ts +0 -67
  454. package/src/provider/auth.ts +0 -234
  455. package/src/provider/error.ts +0 -216
  456. package/src/provider/index.ts +0 -5
  457. package/src/provider/models-snapshot.d.ts +0 -2
  458. package/src/provider/models-snapshot.js +0 -3
  459. package/src/provider/models.ts +0 -180
  460. package/src/provider/provider.ts +0 -2098
  461. package/src/provider/schema.ts +0 -36
  462. package/src/provider/sdk/copilot/README.md +0 -5
  463. package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
  464. package/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
  465. package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
  466. package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
  467. package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
  468. package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
  469. package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
  470. package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
  471. package/src/provider/sdk/copilot/copilot-provider.ts +0 -100
  472. package/src/provider/sdk/copilot/index.ts +0 -2
  473. package/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
  474. package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
  475. package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
  476. package/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
  477. package/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
  478. package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
  479. package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1770
  480. package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
  481. package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
  482. package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
  483. package/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
  484. package/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
  485. package/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
  486. package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
  487. package/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
  488. package/src/provider/session-check.ts +0 -163
  489. package/src/provider/transform.ts +0 -1376
  490. package/src/pty/index.ts +0 -364
  491. package/src/pty/pty.bun.ts +0 -26
  492. package/src/pty/pty.node.ts +0 -27
  493. package/src/pty/pty.ts +0 -25
  494. package/src/pty/schema.ts +0 -17
  495. package/src/question/index.ts +0 -252
  496. package/src/question/schema.ts +0 -17
  497. package/src/server/adapter.bun.ts +0 -40
  498. package/src/server/adapter.node.ts +0 -66
  499. package/src/server/adapter.ts +0 -21
  500. package/src/server/auth.ts +0 -16
  501. package/src/server/error.ts +0 -53
  502. package/src/server/event.ts +0 -7
  503. package/src/server/fence.ts +0 -81
  504. package/src/server/mdns.ts +0 -60
  505. package/src/server/middleware.ts +0 -94
  506. package/src/server/projectors.ts +0 -28
  507. package/src/server/proxy.ts +0 -171
  508. package/src/server/pty-ticket.ts +0 -42
  509. package/src/server/rate-limit.ts +0 -38
  510. package/src/server/routes/control/index.ts +0 -160
  511. package/src/server/routes/control/workspace.ts +0 -203
  512. package/src/server/routes/global.ts +0 -367
  513. package/src/server/routes/instance/bash-interactive.ts +0 -82
  514. package/src/server/routes/instance/config.ts +0 -89
  515. package/src/server/routes/instance/event.ts +0 -108
  516. package/src/server/routes/instance/experimental.ts +0 -408
  517. package/src/server/routes/instance/file.ts +0 -190
  518. package/src/server/routes/instance/httpapi/config.ts +0 -51
  519. package/src/server/routes/instance/httpapi/permission.ts +0 -72
  520. package/src/server/routes/instance/httpapi/project.ts +0 -62
  521. package/src/server/routes/instance/httpapi/provider.ts +0 -142
  522. package/src/server/routes/instance/httpapi/question.ts +0 -121
  523. package/src/server/routes/instance/httpapi/server.ts +0 -153
  524. package/src/server/routes/instance/index.ts +0 -301
  525. package/src/server/routes/instance/mcp.ts +0 -260
  526. package/src/server/routes/instance/middleware.ts +0 -44
  527. package/src/server/routes/instance/permission.ts +0 -73
  528. package/src/server/routes/instance/project.ts +0 -122
  529. package/src/server/routes/instance/provider.ts +0 -158
  530. package/src/server/routes/instance/pty.ts +0 -302
  531. package/src/server/routes/instance/question.ts +0 -162
  532. package/src/server/routes/instance/session.ts +0 -1328
  533. package/src/server/routes/instance/sync.ts +0 -143
  534. package/src/server/routes/instance/trace.ts +0 -59
  535. package/src/server/routes/instance/tui.ts +0 -384
  536. package/src/server/routes/instance/workflows.ts +0 -142
  537. package/src/server/routes/ui.ts +0 -37
  538. package/src/server/server.ts +0 -146
  539. package/src/server/workspace.ts +0 -122
  540. package/src/session/auto-dream.ts +0 -123
  541. package/src/session/boundary.ts +0 -77
  542. package/src/session/budgeted-read.ts +0 -118
  543. package/src/session/checkpoint-align.ts +0 -29
  544. package/src/session/checkpoint-context.ts +0 -36
  545. package/src/session/checkpoint-paths.ts +0 -86
  546. package/src/session/checkpoint-progress-reconcile.ts +0 -111
  547. package/src/session/checkpoint-retry.ts +0 -192
  548. package/src/session/checkpoint-templates.ts +0 -114
  549. package/src/session/checkpoint-validator.ts +0 -259
  550. package/src/session/checkpoint.ts +0 -1560
  551. package/src/session/classify.ts +0 -117
  552. package/src/session/claude-import.ts +0 -381
  553. package/src/session/codex-import.ts +0 -416
  554. package/src/session/compaction.ts +0 -545
  555. package/src/session/external-import.sql.ts +0 -18
  556. package/src/session/external-import.ts +0 -136
  557. package/src/session/goal.ts +0 -232
  558. package/src/session/index.ts +0 -1
  559. package/src/session/instruction.ts +0 -276
  560. package/src/session/last-message-info.ts +0 -32
  561. package/src/session/llm-request-prefix.ts +0 -82
  562. package/src/session/llm.ts +0 -737
  563. package/src/session/max-mode.ts +0 -410
  564. package/src/session/message-v2.ts +0 -1138
  565. package/src/session/message.ts +0 -191
  566. package/src/session/opencode-import.ts +0 -281
  567. package/src/session/overflow.ts +0 -53
  568. package/src/session/prefix-capture-ref.ts +0 -48
  569. package/src/session/processor.ts +0 -983
  570. package/src/session/projectors.ts +0 -137
  571. package/src/session/prompt/anthropic.txt +0 -154
  572. package/src/session/prompt/beast.txt +0 -155
  573. package/src/session/prompt/build-switch.txt +0 -5
  574. package/src/session/prompt/codex.txt +0 -79
  575. package/src/session/prompt/compose.txt +0 -119
  576. package/src/session/prompt/copilot-gpt-5.txt +0 -143
  577. package/src/session/prompt/deepseek.txt +0 -131
  578. package/src/session/prompt/default.old.txt +0 -151
  579. package/src/session/prompt/default.txt +0 -172
  580. package/src/session/prompt/gemini.txt +0 -155
  581. package/src/session/prompt/glm.txt +0 -51
  582. package/src/session/prompt/gpt.txt +0 -107
  583. package/src/session/prompt/kimi.txt +0 -95
  584. package/src/session/prompt/max-steps.txt +0 -16
  585. package/src/session/prompt/minimax.txt +0 -140
  586. package/src/session/prompt/text-loop-recovery.ts +0 -40
  587. package/src/session/prompt/text-ngram-detection.ts +0 -87
  588. package/src/session/prompt/trinity.txt +0 -97
  589. package/src/session/prompt.ts +0 -3878
  590. package/src/session/prune.ts +0 -481
  591. package/src/session/retry.ts +0 -178
  592. package/src/session/revert.ts +0 -161
  593. package/src/session/run-state.ts +0 -135
  594. package/src/session/schema.ts +0 -36
  595. package/src/session/session.sql.ts +0 -110
  596. package/src/session/session.ts +0 -908
  597. package/src/session/status.ts +0 -89
  598. package/src/session/summary.ts +0 -163
  599. package/src/session/system.ts +0 -96
  600. package/src/session/todo.ts +0 -77
  601. package/src/session/trajectory.ts +0 -98
  602. package/src/share/index.ts +0 -2
  603. package/src/share/session.ts +0 -57
  604. package/src/share/share-next.ts +0 -381
  605. package/src/share/share.sql.ts +0 -13
  606. package/src/shell/shell.ts +0 -124
  607. package/src/skill/builtin/.bundle/self-extend/SKILL.md +0 -131
  608. package/src/skill/builtin/.bundle/self-extend/reference/hook-api.md +0 -242
  609. package/src/skill/builtin/.bundle/self-extend/reference/skill-api.md +0 -114
  610. package/src/skill/builtin/.bundle/self-extend/reference/tool-api.md +0 -115
  611. package/src/skill/builtin/.bundle/self-extend/reference/tui-api.md +0 -258
  612. package/src/skill/builtin/bundle.macro.ts +0 -30
  613. package/src/skill/builtin/extract.ts +0 -41
  614. package/src/skill/compose/.bundle/ask/SKILL.md +0 -58
  615. package/src/skill/compose/.bundle/brainstorm/SKILL.md +0 -200
  616. package/src/skill/compose/.bundle/brainstorm/scripts/frame-template.html +0 -214
  617. package/src/skill/compose/.bundle/brainstorm/scripts/helper.js +0 -88
  618. package/src/skill/compose/.bundle/brainstorm/scripts/server.cjs +0 -354
  619. package/src/skill/compose/.bundle/brainstorm/scripts/start-server.sh +0 -148
  620. package/src/skill/compose/.bundle/brainstorm/scripts/stop-server.sh +0 -56
  621. package/src/skill/compose/.bundle/brainstorm/spec-document-reviewer-prompt.md +0 -50
  622. package/src/skill/compose/.bundle/brainstorm/visual-companion.md +0 -258
  623. package/src/skill/compose/.bundle/debug/CREATION-LOG.md +0 -119
  624. package/src/skill/compose/.bundle/debug/SKILL.md +0 -297
  625. package/src/skill/compose/.bundle/debug/condition-based-waiting-example.ts +0 -158
  626. package/src/skill/compose/.bundle/debug/condition-based-waiting.md +0 -106
  627. package/src/skill/compose/.bundle/debug/defense-in-depth.md +0 -122
  628. package/src/skill/compose/.bundle/debug/find-polluter.sh +0 -63
  629. package/src/skill/compose/.bundle/debug/root-cause-tracing.md +0 -144
  630. package/src/skill/compose/.bundle/debug/test-academic.md +0 -14
  631. package/src/skill/compose/.bundle/debug/test-pressure-1.md +0 -58
  632. package/src/skill/compose/.bundle/debug/test-pressure-2.md +0 -68
  633. package/src/skill/compose/.bundle/debug/test-pressure-3.md +0 -69
  634. package/src/skill/compose/.bundle/execute/SKILL.md +0 -71
  635. package/src/skill/compose/.bundle/feedback/SKILL.md +0 -214
  636. package/src/skill/compose/.bundle/merge/SKILL.md +0 -252
  637. package/src/skill/compose/.bundle/new-skill/SKILL.md +0 -211
  638. package/src/skill/compose/.bundle/parallel/SKILL.md +0 -168
  639. package/src/skill/compose/.bundle/plan/SKILL.md +0 -183
  640. package/src/skill/compose/.bundle/plan/plan-document-reviewer-prompt.md +0 -50
  641. package/src/skill/compose/.bundle/report/SKILL.md +0 -180
  642. package/src/skill/compose/.bundle/review/SKILL.md +0 -104
  643. package/src/skill/compose/.bundle/review/code-reviewer.md +0 -178
  644. package/src/skill/compose/.bundle/subagent/SKILL.md +0 -325
  645. package/src/skill/compose/.bundle/subagent/code-quality-reviewer-prompt.md +0 -26
  646. package/src/skill/compose/.bundle/subagent/implementer-prompt.md +0 -128
  647. package/src/skill/compose/.bundle/subagent/spec-reviewer-prompt.md +0 -118
  648. package/src/skill/compose/.bundle/tdd/SKILL.md +0 -360
  649. package/src/skill/compose/.bundle/tdd/testing-anti-patterns.md +0 -299
  650. package/src/skill/compose/.bundle/verify/SKILL.md +0 -140
  651. package/src/skill/compose/.bundle/worktree/SKILL.md +0 -234
  652. package/src/skill/compose/LICENSE-karpathy +0 -28
  653. package/src/skill/compose/bundle.macro.ts +0 -30
  654. package/src/skill/compose/extract.ts +0 -85
  655. package/src/skill/discovery.ts +0 -114
  656. package/src/skill/index.ts +0 -328
  657. package/src/snapshot/index.ts +0 -777
  658. package/src/sql.d.ts +0 -4
  659. package/src/storage/db.bun.ts +0 -8
  660. package/src/storage/db.node.ts +0 -8
  661. package/src/storage/db.ts +0 -172
  662. package/src/storage/index.ts +0 -26
  663. package/src/storage/json-migration.ts +0 -426
  664. package/src/storage/read-sqlite.bun.ts +0 -11
  665. package/src/storage/read-sqlite.node.ts +0 -13
  666. package/src/storage/read-sqlite.ts +0 -10
  667. package/src/storage/schema.sql.ts +0 -10
  668. package/src/storage/schema.ts +0 -7
  669. package/src/storage/storage.ts +0 -331
  670. package/src/sync/README.md +0 -179
  671. package/src/sync/event.sql.ts +0 -16
  672. package/src/sync/index.ts +0 -278
  673. package/src/sync/schema.ts +0 -14
  674. package/src/task/events.ts +0 -28
  675. package/src/task/gate-state.ts +0 -54
  676. package/src/task/gate.ts +0 -116
  677. package/src/task/index.ts +0 -1
  678. package/src/task/registry.ts +0 -394
  679. package/src/task/schema.ts +0 -43
  680. package/src/task/task.sql.ts +0 -50
  681. package/src/team/events.ts +0 -22
  682. package/src/team/index.ts +0 -113
  683. package/src/team/schema.ts +0 -31
  684. package/src/temporary.ts +0 -33
  685. package/src/tool/actor.shell.txt +0 -72
  686. package/src/tool/actor.ts +0 -804
  687. package/src/tool/actor.txt +0 -103
  688. package/src/tool/apply_patch.ts +0 -308
  689. package/src/tool/apply_patch.txt +0 -33
  690. package/src/tool/bash-interactive.ts +0 -183
  691. package/src/tool/bash.ts +0 -704
  692. package/src/tool/bash.txt +0 -123
  693. package/src/tool/change-directory.ts +0 -91
  694. package/src/tool/codesearch.ts +0 -63
  695. package/src/tool/codesearch.txt +0 -12
  696. package/src/tool/edit.ts +0 -693
  697. package/src/tool/edit.txt +0 -10
  698. package/src/tool/external-directory.ts +0 -132
  699. package/src/tool/glob.ts +0 -100
  700. package/src/tool/glob.txt +0 -6
  701. package/src/tool/grep.ts +0 -145
  702. package/src/tool/grep.txt +0 -8
  703. package/src/tool/history.ts +0 -146
  704. package/src/tool/history.txt +0 -17
  705. package/src/tool/index.ts +0 -4
  706. package/src/tool/invalid.ts +0 -20
  707. package/src/tool/invocation-style.ts +0 -17
  708. package/src/tool/lsp.ts +0 -91
  709. package/src/tool/lsp.txt +0 -19
  710. package/src/tool/mcp-exa.ts +0 -78
  711. package/src/tool/memory-path-guard.ts +0 -162
  712. package/src/tool/memory.ts +0 -81
  713. package/src/tool/memory.txt +0 -69
  714. package/src/tool/multiedit.ts +0 -54
  715. package/src/tool/multiedit.txt +0 -41
  716. package/src/tool/notebook-edit.ts +0 -225
  717. package/src/tool/notebook-edit.txt +0 -10
  718. package/src/tool/plan-enter.txt +0 -16
  719. package/src/tool/plan-exit.txt +0 -14
  720. package/src/tool/plan.ts +0 -179
  721. package/src/tool/question.ts +0 -67
  722. package/src/tool/question.txt +0 -10
  723. package/src/tool/read-state.ts +0 -44
  724. package/src/tool/read.ts +0 -327
  725. package/src/tool/read.txt +0 -14
  726. package/src/tool/recoverable.ts +0 -35
  727. package/src/tool/registry.ts +0 -429
  728. package/src/tool/schema.ts +0 -17
  729. package/src/tool/session-cwd.ts +0 -35
  730. package/src/tool/shell-tokenize.ts +0 -374
  731. package/src/tool/shell-wrap.ts +0 -235
  732. package/src/tool/skill.ts +0 -76
  733. package/src/tool/skill.txt +0 -5
  734. package/src/tool/task.shell.txt +0 -57
  735. package/src/tool/task.ts +0 -456
  736. package/src/tool/task.txt +0 -56
  737. package/src/tool/tool.ts +0 -166
  738. package/src/tool/truncate.ts +0 -201
  739. package/src/tool/truncation-dir.ts +0 -4
  740. package/src/tool/webfetch.ts +0 -208
  741. package/src/tool/webfetch.txt +0 -13
  742. package/src/tool/websearch/index.ts +0 -104
  743. package/src/tool/websearch/sleepy.ts +0 -118
  744. package/src/tool/websearch/websearch.txt +0 -14
  745. package/src/tool/workflow.ts +0 -357
  746. package/src/tool/workflow.txt +0 -25
  747. package/src/tool/write.ts +0 -88
  748. package/src/tool/write.txt +0 -10
  749. package/src/util/abort.ts +0 -35
  750. package/src/util/archive.ts +0 -15
  751. package/src/util/color.ts +0 -17
  752. package/src/util/data-url.ts +0 -9
  753. package/src/util/defer.ts +0 -10
  754. package/src/util/effect-http-client.ts +0 -11
  755. package/src/util/effect-zod.ts +0 -367
  756. package/src/util/env-info.ts +0 -62
  757. package/src/util/error.ts +0 -78
  758. package/src/util/filesystem.ts +0 -243
  759. package/src/util/fn.ts +0 -21
  760. package/src/util/format.ts +0 -20
  761. package/src/util/iife.ts +0 -3
  762. package/src/util/index.ts +0 -14
  763. package/src/util/keybind.ts +0 -101
  764. package/src/util/lazy.ts +0 -18
  765. package/src/util/local-context.ts +0 -23
  766. package/src/util/locale.ts +0 -79
  767. package/src/util/lock.ts +0 -96
  768. package/src/util/log.ts +0 -234
  769. package/src/util/media.ts +0 -26
  770. package/src/util/network.ts +0 -9
  771. package/src/util/process.ts +0 -174
  772. package/src/util/provider-priority.ts +0 -48
  773. package/src/util/queue.ts +0 -60
  774. package/src/util/record.ts +0 -3
  775. package/src/util/rpc.ts +0 -64
  776. package/src/util/schema.ts +0 -53
  777. package/src/util/scrap.ts +0 -10
  778. package/src/util/signal.ts +0 -12
  779. package/src/util/sleepy-process.ts +0 -24
  780. package/src/util/ssrf.ts +0 -116
  781. package/src/util/timeout.ts +0 -14
  782. package/src/util/token.ts +0 -5
  783. package/src/util/tool-compat.ts +0 -144
  784. package/src/util/update-schema.ts +0 -13
  785. package/src/util/which.ts +0 -14
  786. package/src/util/wildcard.ts +0 -57
  787. package/src/workflow/builtin/compose.js +0 -749
  788. package/src/workflow/builtin/deep-research.js +0 -398
  789. package/src/workflow/builtin.ts +0 -59
  790. package/src/workflow/events.ts +0 -72
  791. package/src/workflow/meta.ts +0 -335
  792. package/src/workflow/persistence.ts +0 -312
  793. package/src/workflow/resolve.ts +0 -45
  794. package/src/workflow/runtime-ref.ts +0 -18
  795. package/src/workflow/runtime.ts +0 -1447
  796. package/src/workflow/sandbox.ts +0 -286
  797. package/src/workflow/workflow.sql.ts +0 -31
  798. package/src/workflow/workspace.ts +0 -69
  799. 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
- }