@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,103 +0,0 @@
1
- Launch a new actor (subagent) to handle complex, multi-step tasks autonomously.
2
-
3
- JSON calls wrap the action payload inside an `operation` object; `action` is the discriminator field.
4
-
5
- Examples:
6
- {"operation":{"action":"run","subagent_type":"explore","description":"Find error recovery","prompt":"<full task>"}}
7
- {"operation":{"action":"run","subagent_type":"explore","description":"Investigate T4","prompt":"<full task>","task_id":"T4"}}
8
- {"operation":{"action":"spawn","subagent_type":"general","description":"Long-running search","prompt":"<full task>"}}
9
- {"operation":{"action":"status","actor_id":"<existing>"}}
10
- {"operation":{"action":"wait","actor_id":"<existing>"}}
11
- {"operation":{"action":"cancel","actor_id":"<existing>"}}
12
- {"operation":{"action":"send","to_actor_id":"<existing>","content":"<message>"}}
13
-
14
- ## Operations (the `operation.action` field selects one)
15
-
16
- - run: spawn a subagent and BLOCK until completion; result returned inline.
17
- required: subagent_type, description, prompt
18
- optional: actor_id, timeout_ms, command, context
19
- - spawn: spawn a subagent and return actor_id IMMEDIATELY (background).
20
- required: subagent_type, description, prompt
21
- optional: actor_id, command, context
22
- - status: poll actor state without blocking. required: actor_id.
23
- Returns: { status: "pending"|"running"|"idle"|"unknown", actor_id, turnCount, ... }
24
- - wait: block until actor completes (success/failure/cancelled) or timeout (default 10 min).
25
- required: actor_id. optional: timeout_ms.
26
- Returns: { status, actor_id, result?, error? }
27
- - cancel: stop a running actor (graceful). required: actor_id. Idempotent.
28
- - send: deliver message to another actor's inbox.
29
- required: to_actor_id, content.
30
- optional: to_session_id, type (default "text").
31
- Receiver sees wrapped in <inbox from="..." sent_at="...">...</inbox> at next iteration.
32
-
33
- ## When to use actor
34
-
35
- - **Parallelize**: spawn multiple independent searches/analyses concurrently; `wait` on each.
36
- - **Isolate heavy lifting**: delegate 10+ file reads to a subagent; you get only the synthesis.
37
- - **Specialized search**: use `explore` for read-only code discovery (finding definitions, callers).
38
- - **Custom review**: `general` subagent verifies implementation against spec without bias.
39
- - **Working on a tracked task**: when you spawn a subagent to do work for one of your active tasks (T1, T2, …) — investigation, focused review, dedicated implementation — pass `task_id` so the subagent's verbatim findings get captured to `tasks/<TID>/progress.md` and reconciled into the next checkpoint. Pass ONLY a task ID the `task` tool returned this session; never invent one. If you haven't created the task yet, create it with the `task` tool first, or omit `task_id` and run ad-hoc.
40
- - **Don't spawn for**: trivial single-file lookups, answers already in your context, or decisions on partial outputs.
41
-
42
- ## Writing the prompt
43
-
44
- You are the subagent's only briefing — it hasn't seen this conversation.
45
- - Explain what you're trying to accomplish and why.
46
- - Say what you've already learned or ruled out.
47
- - Give enough context for judgment calls, not just narrow steps.
48
- - If you need short output, say so ("report in under 200 words").
49
- - For investigation: hand over the question; prescribed steps become dead weight.
50
-
51
- ## Context inheritance
52
-
53
- - `context="full"`: subagent sees your full conversation history (for state writers, evaluators).
54
- - `context="state"`: subagent gets checkpoint summaries injected (background knowledge, no full detail).
55
- - `context="none"` (default): clean context, only the prompt.
56
-
57
- ## Actor ID vs Task ID
58
-
59
- `actor_id` identifies a subagent session (resumable across turns). Task IDs (T1, T2, ...) come from the `task` tool — only pass a `task_id` you got from a `task` tool call this session. If the `task_id` is malformed or unknown, the binding is dropped: the subagent's findings won't be captured to any task, and the tool result tells you so.
60
-
61
- ## Binding a subagent to a task
62
-
63
- When you `run` or `spawn` a subagent that's doing work for a specific task,
64
- pass the task's TID via `task_id` (e.g. `task_id: "T4"`) — but only a TID the
65
- `task` tool actually returned this session. After the subagent finishes, the
66
- system checks that `tasks/<task_id>/progress.md` exists with the required
67
- structure — if not, the subagent gets one more chance to write it before
68
- terminating. The next checkpoint writer then reads that file and integrates
69
- verbatim commands, outcome, and discoveries into the main checkpoint.
70
-
71
- If `task_id` is malformed or names no existing task, the binding is dropped —
72
- the subagent's findings won't be captured to that task, and the tool result
73
- says so. Leave `task_id` OFF for ad-hoc work that isn't bound to a task; the
74
- postStop check then becomes a no-op.
75
-
76
- ## Usage notes
77
-
78
- - **Resume the same subagent**: pass `actor_id` to `run`/`spawn` and the call resumes that subagent's session (continues with its prior messages and tool outputs). Without `actor_id`, a fresh subagent is created.
79
- - **`run` vs `spawn` result delivery**: `run` blocks and returns the result inline. `spawn` returns the actor_id immediately; when the background actor finishes, its result appears as a notification in this conversation — your turn does NOT auto-wake to process it; you'll see it the next time you respond to the user. Use `wait` to block on the actor_id explicitly.
80
- - **`wait` on persistent peers caveat**: `wait` is designed for ephemeral subagents you spawned via `run`/`spawn`. Persistent peers idle between turns and never produce a "done" outcome on success — `wait` on a peer will block until that peer fails or is cancelled. Use `send` + `status` to coordinate with peers instead.
81
- - **`send` semantics**: fire-and-forget; returns within ~5 ms regardless of receiver load. The receiver picks the message up at the head of its next runLoop iteration. On unknown `to_actor_id`, `send` returns `{inboxID: null, error: "receiver not found"}` rather than throwing — handle the error path.
82
- - Trust the subagent's outputs generally, but the subagent doesn't see your full context (unless you pass `context="full"`); brief it accordingly.
83
-
84
-
85
- ## Examples
86
-
87
- <example>
88
- user: "Find all places where parser.ts handles error recovery"
89
- assistant: I'll spawn an explore subagent to scan parser-related files.
90
- [actor({"operation":{"action":"run","subagent_type":"explore","description":"Find error recovery in parser","prompt":"Search src/parser.ts and adjacent files for error-recovery patterns. Return: each location's file:line + a one-sentence description of how it recovers. If you find catch blocks, panic-mode synchronization, or recovery sentinels, list them all."}})]
91
- </example>
92
-
93
- <example>
94
- user: "Verify the type checker is correct against spec.md §3"
95
- assistant: I'll spawn a general subagent to do an independent review.
96
- [actor({"operation":{"action":"run","subagent_type":"general","description":"Type checker spec review","prompt":"Read docs/spec.md §3 (Type System), then read src/types.ts and tests/types.test.ts. Report: (1) any §3 requirement not implemented; (2) any test that fails to cover a §3 requirement. Don't fix anything — just report findings."}})]
97
- </example>
98
-
99
- <example>
100
- user: "investigate T4's failing tests in the type checker"
101
- assistant: T4 is an active task in my tracker. I'll spawn an explore subagent bound to T4 so its findings end up in tasks/T4/progress.md and the next checkpoint can integrate them.
102
- [actor({"operation":{"action":"run","subagent_type":"explore","description":"Investigate T4 type checker failures","prompt":"Run `bun test src/types.test.ts` and report each failing case. For each failure: file:line of the assertion, the expected vs actual values, and the most likely root-cause hypothesis based on reading src/types.ts. Don't fix anything.","task_id":"T4"}})]
103
- </example>
@@ -1,308 +0,0 @@
1
- import z from "zod"
2
- import * as path from "path"
3
- import { Effect } from "effect"
4
- import * as Tool from "./tool"
5
- import { Bus } from "../bus"
6
- import { FileWatcher } from "../file/watcher"
7
- import { Instance } from "../project/instance"
8
- import { SessionCwd } from "./session-cwd"
9
- import { Patch } from "../patch"
10
- import { createTwoFilesPatch, diffLines } from "diff"
11
- import { assertWriteAllowed } from "./external-directory"
12
- import { trimDiff } from "./edit"
13
- import { LSP } from "../lsp"
14
- import { AppFileSystem } from "@sleepy-ai/shared/filesystem"
15
- import DESCRIPTION from "./apply_patch.txt"
16
- import { File } from "../file"
17
- import { Format } from "../format"
18
- import { Global } from "../global"
19
-
20
- const PatchParams = z.object({
21
- patch_text: z.string().describe("The full patch text that describes all changes to be made"),
22
- })
23
-
24
- export const ApplyPatchTool = Tool.define(
25
- "apply_patch",
26
- Effect.gen(function* () {
27
- const lsp = yield* LSP.Service
28
- const afs = yield* AppFileSystem.Service
29
- const format = yield* Format.Service
30
- const bus = yield* Bus.Service
31
-
32
- const run = Effect.fn("ApplyPatchTool.execute")(function* (params: z.infer<typeof PatchParams>, ctx: Tool.Context) {
33
- if (!params.patch_text) {
34
- return yield* Effect.fail(new Error("patch_text is required"))
35
- }
36
-
37
- // Parse the patch to get hunks
38
- let hunks: Patch.Hunk[]
39
- try {
40
- const parseResult = Patch.parsePatch(params.patch_text)
41
- hunks = parseResult.hunks
42
- } catch (error) {
43
- return yield* Effect.fail(new Error(`apply_patch verification failed: ${error}`))
44
- }
45
-
46
- if (hunks.length === 0) {
47
- const normalized = params.patch_text.replace(/\r\n/g, "\n").replace(/\r/g, "\n").trim()
48
- if (normalized === "*** Begin Patch\n*** End Patch") {
49
- return yield* Effect.fail(new Error("patch rejected: empty patch"))
50
- }
51
- return yield* Effect.fail(new Error("apply_patch verification failed: no hunks found"))
52
- }
53
-
54
- // Validate file paths and check permissions
55
- const fileChanges: Array<{
56
- filePath: string
57
- oldContent: string
58
- newContent: string
59
- type: "add" | "update" | "delete" | "move"
60
- movePath?: string
61
- diff: string
62
- additions: number
63
- deletions: number
64
- }> = []
65
-
66
- let totalDiff = ""
67
-
68
- for (const hunk of hunks) {
69
- const filePath = path.resolve(SessionCwd.get(ctx.sessionID), hunk.path)
70
- yield* assertWriteAllowed(ctx, filePath)
71
-
72
- switch (hunk.type) {
73
- case "add": {
74
- const oldContent = ""
75
- const newContent =
76
- hunk.contents.length === 0 || hunk.contents.endsWith("\n") ? hunk.contents : `${hunk.contents}\n`
77
- const diff = trimDiff(createTwoFilesPatch(filePath, filePath, oldContent, newContent))
78
-
79
- let additions = 0
80
- let deletions = 0
81
- for (const change of diffLines(oldContent, newContent)) {
82
- if (change.added) additions += change.count || 0
83
- if (change.removed) deletions += change.count || 0
84
- }
85
-
86
- fileChanges.push({
87
- filePath,
88
- oldContent,
89
- newContent,
90
- type: "add",
91
- diff,
92
- additions,
93
- deletions,
94
- })
95
-
96
- totalDiff += diff + "\n"
97
- break
98
- }
99
-
100
- case "update": {
101
- // Check if file exists for update
102
- const stats = yield* afs.stat(filePath).pipe(Effect.catch(() => Effect.succeed(undefined)))
103
- if (!stats || stats.type === "Directory") {
104
- return yield* Effect.fail(
105
- new Error(`apply_patch verification failed: Failed to read file to update: ${filePath}`),
106
- )
107
- }
108
-
109
- const oldContent = yield* afs.readFileString(filePath)
110
- let newContent = oldContent
111
-
112
- // Apply the update chunks to get new content
113
- try {
114
- const fileUpdate = Patch.deriveNewContentsFromChunks(filePath, hunk.chunks)
115
- newContent = fileUpdate.content
116
- } catch (error) {
117
- return yield* Effect.fail(new Error(`apply_patch verification failed: ${error}`))
118
- }
119
-
120
- const diff = trimDiff(createTwoFilesPatch(filePath, filePath, oldContent, newContent))
121
-
122
- let additions = 0
123
- let deletions = 0
124
- for (const change of diffLines(oldContent, newContent)) {
125
- if (change.added) additions += change.count || 0
126
- if (change.removed) deletions += change.count || 0
127
- }
128
-
129
- const movePath = hunk.move_path ? path.resolve(SessionCwd.get(ctx.sessionID), hunk.move_path) : undefined
130
- yield* assertWriteAllowed(ctx, movePath)
131
-
132
- fileChanges.push({
133
- filePath,
134
- oldContent,
135
- newContent,
136
- type: hunk.move_path ? "move" : "update",
137
- movePath,
138
- diff,
139
- additions,
140
- deletions,
141
- })
142
-
143
- totalDiff += diff + "\n"
144
- break
145
- }
146
-
147
- case "delete": {
148
- const contentToDelete = yield* afs
149
- .readFileString(filePath)
150
- .pipe(
151
- Effect.catch((error) =>
152
- Effect.fail(
153
- new Error(
154
- `apply_patch verification failed: ${error instanceof Error ? error.message : String(error)}`,
155
- ),
156
- ),
157
- ),
158
- )
159
- const deleteDiff = trimDiff(createTwoFilesPatch(filePath, filePath, contentToDelete, ""))
160
-
161
- const deletions = contentToDelete.split("\n").length
162
-
163
- fileChanges.push({
164
- filePath,
165
- oldContent: contentToDelete,
166
- newContent: "",
167
- type: "delete",
168
- diff: deleteDiff,
169
- additions: 0,
170
- deletions,
171
- })
172
-
173
- totalDiff += deleteDiff + "\n"
174
- break
175
- }
176
- }
177
- }
178
-
179
- // Build per-file metadata for UI rendering (used for both permission and result)
180
- const files = fileChanges.map((change) => ({
181
- filePath: change.filePath,
182
- relativePath: path.relative(Instance.worktree, change.movePath ?? change.filePath).replaceAll("\\", "/"),
183
- type: change.type,
184
- patch: change.diff,
185
- additions: change.additions,
186
- deletions: change.deletions,
187
- movePath: change.movePath,
188
- }))
189
- const title = files.length === 1 ? files[0]!.relativePath : `${files.length} files`
190
-
191
- // Check permissions if needed
192
- const permissionChanges = fileChanges.filter(
193
- (change) => !AppFileSystem.contains(path.join(Global.Path.data, "memory"), change.movePath ?? change.filePath),
194
- )
195
- // NOTE: permissionChanges already excludes memory-tree paths (filtered at
196
- // the `permissionChanges` definition above), so this ask never fires for
197
- // memory writes — the askEditUnlessMemory deferral used by write.ts/edit.ts
198
- // is structurally already satisfied here. Left as a direct ctx.ask.
199
- if (permissionChanges.length > 0) {
200
- const relativePaths = permissionChanges.map((c) => path.relative(Instance.worktree, c.filePath).replaceAll("\\", "/"))
201
- yield* ctx.ask({
202
- permission: "edit",
203
- patterns: relativePaths,
204
- always: ["*"],
205
- metadata: {
206
- filepath: relativePaths.join(", "),
207
- diff: permissionChanges.map((change) => change.diff).join("\n") + "\n",
208
- files: files.filter(
209
- (file) => !AppFileSystem.contains(path.join(Global.Path.data, "memory"), file.movePath ?? file.filePath),
210
- ),
211
- },
212
- })
213
- }
214
-
215
- // Apply the changes
216
- const updates: Array<{ file: string; event: "add" | "change" | "unlink" }> = []
217
-
218
- for (const change of fileChanges) {
219
- const edited = change.type === "delete" ? undefined : (change.movePath ?? change.filePath)
220
- switch (change.type) {
221
- case "add":
222
- // Create parent directories (recursive: true is safe on existing/root dirs)
223
-
224
- yield* afs.writeWithDirs(change.filePath, change.newContent)
225
- updates.push({ file: change.filePath, event: "add" })
226
- break
227
-
228
- case "update":
229
- yield* afs.writeWithDirs(change.filePath, change.newContent)
230
- updates.push({ file: change.filePath, event: "change" })
231
- break
232
-
233
- case "move":
234
- if (change.movePath) {
235
- // Create parent directories (recursive: true is safe on existing/root dirs)
236
-
237
- yield* afs.writeWithDirs(change.movePath!, change.newContent)
238
- yield* afs.remove(change.filePath)
239
- updates.push({ file: change.filePath, event: "unlink" })
240
- updates.push({ file: change.movePath, event: "add" })
241
- }
242
- break
243
-
244
- case "delete":
245
- yield* afs.remove(change.filePath)
246
- updates.push({ file: change.filePath, event: "unlink" })
247
- break
248
- }
249
-
250
- if (edited) {
251
- yield* format.file(edited)
252
- yield* bus.publish(File.Event.Edited, { file: edited })
253
- }
254
- }
255
-
256
- // Publish file change events
257
- for (const update of updates) {
258
- yield* bus.publish(FileWatcher.Event.Updated, update)
259
- }
260
-
261
- // Notify LSP of file changes and collect diagnostics
262
- for (const change of fileChanges) {
263
- if (change.type === "delete") continue
264
- const target = change.movePath ?? change.filePath
265
- yield* lsp.touchFile(target, true)
266
- }
267
- const diagnostics = yield* lsp.diagnostics()
268
-
269
- // Generate output summary
270
- const summaryLines = fileChanges.map((change) => {
271
- if (change.type === "add") {
272
- return `A ${path.relative(Instance.worktree, change.filePath).replaceAll("\\", "/")}`
273
- }
274
- if (change.type === "delete") {
275
- return `D ${path.relative(Instance.worktree, change.filePath).replaceAll("\\", "/")}`
276
- }
277
- const target = change.movePath ?? change.filePath
278
- return `M ${path.relative(Instance.worktree, target).replaceAll("\\", "/")}`
279
- })
280
- let output = `Success. Updated the following files:\n${summaryLines.join("\n")}`
281
-
282
- for (const change of fileChanges) {
283
- if (change.type === "delete") continue
284
- const target = change.movePath ?? change.filePath
285
- const block = LSP.Diagnostic.report(target, diagnostics[AppFileSystem.normalizePath(target)] ?? [])
286
- if (!block) continue
287
- const rel = path.relative(Instance.worktree, target).replaceAll("\\", "/")
288
- output += `\n\nLSP errors detected in ${rel}, please fix:\n${block}`
289
- }
290
-
291
- return {
292
- title,
293
- metadata: {
294
- diff: totalDiff,
295
- files,
296
- diagnostics,
297
- },
298
- output,
299
- }
300
- })
301
-
302
- return {
303
- description: DESCRIPTION,
304
- parameters: PatchParams,
305
- execute: (params: z.infer<typeof PatchParams>, ctx: Tool.Context) => run(params, ctx).pipe(Effect.orDie),
306
- }
307
- }),
308
- )
@@ -1,33 +0,0 @@
1
- Use the `apply_patch` tool to edit files. Your patch language is a stripped‑down, file‑oriented diff format designed to be easy to parse and safe to apply. You can think of it as a high‑level envelope:
2
-
3
- *** Begin Patch
4
- [ one or more file sections ]
5
- *** End Patch
6
-
7
- Within that envelope, you get a sequence of file operations.
8
- You MUST include a header to specify the action you are taking.
9
- Each operation starts with one of three headers:
10
-
11
- *** Add File: <path> - create a new file. Every following line is a + line (the initial contents).
12
- *** Delete File: <path> - remove an existing file. Nothing follows.
13
- *** Update File: <path> - patch an existing file in place (optionally with a rename).
14
-
15
- Example patch:
16
-
17
- ```
18
- *** Begin Patch
19
- *** Add File: hello.txt
20
- +Hello world
21
- *** Update File: src/app.py
22
- *** Move to: src/main.py
23
- @@ def greet():
24
- -print("Hi")
25
- +print("Hello, world!")
26
- *** Delete File: obsolete.txt
27
- *** End Patch
28
- ```
29
-
30
- It is important to remember:
31
-
32
- - You must include a header with your intended action (Add/Delete/Update)
33
- - You must prefix new lines with `+` even when creating a new file
@@ -1,183 +0,0 @@
1
- import { Deferred, Effect, Layer, Context } from "effect"
2
- import { Bus } from "@/bus"
3
- import { BusEvent } from "@/bus/bus-event"
4
- import { InstanceState } from "@/effect"
5
- import { Log } from "@/util"
6
- import z from "zod"
7
- import crypto from "crypto"
8
-
9
- const log = Log.create({ service: "bash-interactive" })
10
-
11
- // Bus events
12
-
13
- export const Event = {
14
- Asked: BusEvent.define(
15
- "bash.interactive.asked",
16
- z.object({
17
- id: z.string(),
18
- command: z.string(),
19
- cwd: z.string(),
20
- env: z.record(z.string(), z.string()).optional(),
21
- description: z.string(),
22
- }),
23
- ),
24
- Replied: BusEvent.define(
25
- "bash.interactive.replied",
26
- z.object({
27
- id: z.string(),
28
- output: z.string(),
29
- exitCode: z.number(),
30
- }),
31
- ),
32
- }
33
-
34
- // Types
35
-
36
- export interface InteractiveRequest {
37
- id: string
38
- command: string
39
- cwd: string
40
- env?: Record<string, string>
41
- description: string
42
- }
43
-
44
- export interface InteractiveResult {
45
- output: string
46
- exitCode: number
47
- }
48
-
49
- export class InteractiveError extends Error {
50
- constructor(message: string) {
51
- super(message)
52
- this.name = "BashInteractiveError"
53
- }
54
- }
55
-
56
- // Service
57
-
58
- interface PendingEntry {
59
- request: InteractiveRequest
60
- deferred: Deferred.Deferred<InteractiveResult, InteractiveError>
61
- }
62
-
63
- interface State {
64
- pending: Map<string, PendingEntry>
65
- }
66
-
67
- export interface Interface {
68
- readonly request: (input: {
69
- command: string
70
- cwd: string
71
- env?: Record<string, string>
72
- description: string
73
- }) => Effect.Effect<InteractiveResult, InteractiveError>
74
- readonly reply: (input: { id: string; output: string; exitCode: number }) => Effect.Effect<void>
75
- readonly list: () => Effect.Effect<ReadonlyArray<InteractiveRequest>>
76
- }
77
-
78
- export class Service extends Context.Service<Service, Interface>()("@opencode/BashInteractive") {}
79
-
80
- export const layer = Layer.effect(
81
- Service,
82
- Effect.gen(function* () {
83
- const bus = yield* Bus.Service
84
- const state = yield* InstanceState.make<State>(
85
- Effect.fn("BashInteractive.state")(function* () {
86
- const state: State = {
87
- pending: new Map(),
88
- }
89
-
90
- yield* Effect.addFinalizer(() =>
91
- Effect.gen(function* () {
92
- for (const item of state.pending.values()) {
93
- yield* Deferred.fail(item.deferred, new InteractiveError("Instance disposed"))
94
- }
95
- state.pending.clear()
96
- }),
97
- )
98
-
99
- return state
100
- }),
101
- )
102
-
103
- const request = Effect.fn("BashInteractive.request")(function* (input: {
104
- command: string
105
- cwd: string
106
- env?: Record<string, string>
107
- description: string
108
- }) {
109
- const pending = (yield* InstanceState.get(state)).pending
110
- const id = crypto.randomUUID()
111
- log.info("requesting interactive", { id, command: input.command })
112
-
113
- const deferred = yield* Deferred.make<InteractiveResult, InteractiveError>()
114
- const req: InteractiveRequest = {
115
- id,
116
- command: input.command,
117
- cwd: input.cwd,
118
- env: input.env,
119
- description: input.description,
120
- }
121
- pending.set(id, { request: req, deferred })
122
- yield* bus.publish(Event.Asked, req)
123
-
124
- return yield* Effect.ensuring(
125
- Deferred.await(deferred),
126
- Effect.sync(() => {
127
- pending.delete(id)
128
- }),
129
- )
130
- })
131
-
132
- const reply = Effect.fn("BashInteractive.reply")(function* (input: {
133
- id: string
134
- output: string
135
- exitCode: number
136
- }) {
137
- const pending = (yield* InstanceState.get(state)).pending
138
- const existing = pending.get(input.id)
139
- if (!existing) {
140
- log.warn("reply for unknown request", { id: input.id })
141
- return
142
- }
143
- pending.delete(input.id)
144
- log.info("replied", { id: input.id, exitCode: input.exitCode })
145
- yield* bus.publish(Event.Replied, {
146
- id: existing.request.id,
147
- output: input.output,
148
- exitCode: input.exitCode,
149
- })
150
- yield* Deferred.succeed(existing.deferred, {
151
- output: input.output,
152
- exitCode: input.exitCode,
153
- })
154
- })
155
-
156
- const list = Effect.fn("BashInteractive.list")(function* () {
157
- const pending = (yield* InstanceState.get(state)).pending
158
- return Array.from(pending.values(), (x) => x.request)
159
- })
160
-
161
- return Service.of({ request, reply, list })
162
- }),
163
- )
164
-
165
- export const defaultLayer = layer.pipe(Layer.provide(Bus.layer))
166
-
167
- // Standalone functions (uses the instance-scoped runtime, same pattern as Bus module)
168
- import { makeRuntime } from "@/effect/run-service"
169
-
170
- const { runPromise } = makeRuntime(Service, defaultLayer)
171
-
172
- export function request(input: {
173
- command: string
174
- cwd: string
175
- env?: Record<string, string>
176
- description: string
177
- }): Promise<InteractiveResult> {
178
- return runPromise((svc) => svc.request(input))
179
- }
180
-
181
- export function reply(input: { id: string; output: string; exitCode: number }): Promise<void> {
182
- return runPromise((svc) => svc.reply(input))
183
- }