@sleepy-ai/cli 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,104 +0,0 @@
1
- import z from "zod"
2
- import { Effect } from "effect"
3
- import { HttpClient } from "effect/unstable/http"
4
- import * as Tool from "../tool"
5
- import * as McpExa from "../mcp-exa"
6
- import * as SleepyWebsearch from "./sleepy"
7
- import { Auth } from "@/auth"
8
- import { Provider } from "@/provider"
9
- import DESCRIPTION from "./websearch.txt"
10
-
11
- const WEBFETCH_FALLBACK =
12
- "Web search unavailable. Use `webfetch` with a relevant URL instead, or enable the Web Search plugin at https://www.sleepyai.org/dashboard/admin/providers."
13
- const MAX_TIMEOUT = 120 * 1000 // 2 minutes
14
-
15
- const Parameters = z.object({
16
- query: z.string().describe("Websearch query"),
17
- numResults: z.number().optional().describe("Number of search results to return (default: 8)"),
18
- timeout: z.number().describe("Optional timeout in seconds (max 120)").optional(),
19
- livecrawl: z
20
- .enum(["fallback", "preferred"])
21
- .optional()
22
- .describe(
23
- "Live crawl mode - 'fallback': use live crawling as backup if cached content unavailable, 'preferred': prioritize live crawling (default: 'fallback')",
24
- ),
25
- type: z
26
- .enum(["auto", "fast", "deep"])
27
- .optional()
28
- .describe("Search type - 'auto': balanced search (default), 'fast': quick results, 'deep': comprehensive search"),
29
- contextMaxCharacters: z
30
- .number()
31
- .optional()
32
- .describe("Maximum characters for context string optimized for LLMs (default: 10000)"),
33
- })
34
-
35
- export const WebSearchTool = Tool.define(
36
- "websearch",
37
- Effect.gen(function* () {
38
- const http = yield* HttpClient.HttpClient
39
- const auth = yield* Auth.Service
40
-
41
- return {
42
- get description() {
43
- return DESCRIPTION.replace("{{year}}", new Date().getFullYear().toString())
44
- },
45
- parameters: Parameters,
46
- execute: (params: z.infer<typeof Parameters>, ctx: Tool.Context) =>
47
- Effect.gen(function* () {
48
- yield* ctx.ask({
49
- permission: "websearch",
50
- patterns: [params.query],
51
- always: ["*"],
52
- metadata: {
53
- query: params.query,
54
- numResults: params.numResults,
55
- livecrawl: params.livecrawl,
56
- type: params.type,
57
- contextMaxCharacters: params.contextMaxCharacters,
58
- timeout: params.timeout,
59
- },
60
- })
61
-
62
- const model = (ctx.extra as { model?: Provider.Model })?.model
63
- const timeout = params.timeout === undefined ? undefined : Math.min(params.timeout * 1000, MAX_TIMEOUT)
64
-
65
- const result =
66
- model?.providerID === "sleepy"
67
- ? yield* Effect.catchCause(
68
- Effect.gen(function* () {
69
- const info = yield* auth.get("sleepy")
70
- if (!info || info.type !== "api") return undefined
71
- return yield* SleepyWebsearch.call(
72
- http,
73
- model.api.url,
74
- info.key,
75
- params.query,
76
- "sleepy-v2.5",
77
- timeout ?? "30 seconds",
78
- )
79
- }),
80
- () => Effect.succeed(undefined),
81
- )
82
- : yield* McpExa.call(
83
- http,
84
- "web_search_exa",
85
- McpExa.SearchArgs,
86
- {
87
- query: params.query,
88
- type: params.type || "auto",
89
- numResults: params.numResults || 8,
90
- livecrawl: params.livecrawl || "fallback",
91
- contextMaxCharacters: params.contextMaxCharacters,
92
- },
93
- timeout ?? "25 seconds",
94
- )
95
-
96
- return {
97
- output: result ?? WEBFETCH_FALLBACK,
98
- title: `Web search: ${params.query}`,
99
- metadata: {},
100
- }
101
- }).pipe(Effect.orDie),
102
- }
103
- }),
104
- )
@@ -1,118 +0,0 @@
1
- import { Duration, Effect, Schema, Stream } from "effect"
2
- import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http"
3
-
4
- const DEFAULT_BASE_URL = "https://www.sleepyai.org/api/v1"
5
-
6
- export const QUOTA_EXCEEDED =
7
- "Web search quota exhausted (free tier limit reached). Top up or manage your plan at https://www.sleepyai.org/dashboard/admin/providers, or use `webfetch` with a relevant URL instead."
8
-
9
- const Annotation = Schema.Struct({
10
- type: Schema.optional(Schema.NullOr(Schema.String)),
11
- url: Schema.optional(Schema.NullOr(Schema.String)),
12
- title: Schema.optional(Schema.NullOr(Schema.String)),
13
- summary: Schema.optional(Schema.NullOr(Schema.String)),
14
- site_name: Schema.optional(Schema.NullOr(Schema.String)),
15
- publish_time: Schema.optional(Schema.NullOr(Schema.String)),
16
- })
17
- type Annotation = Schema.Schema.Type<typeof Annotation>
18
-
19
- const Annotations = Schema.Array(Annotation)
20
-
21
- const Frame = Schema.Struct({
22
- choices: Schema.optional(
23
- Schema.Array(
24
- Schema.Struct({
25
- delta: Schema.optional(
26
- Schema.NullOr(
27
- Schema.Struct({
28
- annotations: Schema.optional(Schema.NullOr(Annotations)),
29
- }),
30
- ),
31
- ),
32
- message: Schema.optional(
33
- Schema.NullOr(
34
- Schema.Struct({
35
- annotations: Schema.optional(Schema.NullOr(Annotations)),
36
- }),
37
- ),
38
- ),
39
- }),
40
- ),
41
- ),
42
- })
43
-
44
- const decodeFrame = Schema.decodeUnknownEffect(Schema.fromJsonString(Frame))
45
-
46
- function buildUrl(baseUrl: string) {
47
- const base = (baseUrl || DEFAULT_BASE_URL).replace(/\/+$/, "")
48
- if (base.endsWith("/chat/completions")) return base
49
- return (base.endsWith("/v1") ? base : `${base}/v1`) + "/chat/completions"
50
- }
51
-
52
- function formatSources(annotations: ReadonlyArray<Annotation>) {
53
- const lines = annotations.flatMap((a) => {
54
- if (!a.url) return []
55
- const head = [a.title, a.site_name, a.publish_time].filter(Boolean).join(" · ")
56
- return [`- ${head || a.url}`, ` ${a.url}`, ...(a.summary ? [` ${a.summary}`] : [])]
57
- })
58
- return lines.length > 0 ? ["Sources:", ...lines].join("\n") : undefined
59
- }
60
-
61
- function extractAnnotations(line: string): Effect.Effect<ReadonlyArray<Annotation> | undefined> {
62
- if (!line.startsWith("data:")) return Effect.succeed(undefined)
63
- const payload = line.slice(5).trim()
64
- if (!payload || payload === "[DONE]") return Effect.succeed(undefined)
65
- return decodeFrame(payload).pipe(
66
- Effect.map((frame) => {
67
- const choice = frame.choices?.[0]
68
- const list = choice?.delta?.annotations ?? choice?.message?.annotations
69
- return list && list.length > 0 ? list : undefined
70
- }),
71
- Effect.orElseSucceed(() => undefined),
72
- )
73
- }
74
-
75
- export const call = (
76
- http: HttpClient.HttpClient,
77
- baseUrl: string,
78
- apiKey: string,
79
- query: string,
80
- modelId: string,
81
- timeout: Duration.Input,
82
- ) =>
83
- Effect.gen(function* () {
84
- const request = HttpClientRequest.post(buildUrl(baseUrl)).pipe(
85
- HttpClientRequest.setHeader("api-key", apiKey),
86
- HttpClientRequest.accept("text/event-stream"),
87
- HttpClientRequest.bodyJsonUnsafe({
88
- model: modelId,
89
- messages: [{ role: "user", content: query }],
90
- tools: [{ type: "web_search", max_keyword: 3, force_search: true, limit: 5 }],
91
- max_completion_tokens: 256,
92
- temperature: 1.0,
93
- top_p: 0.95,
94
- stream: true,
95
- thinking: { type: "disabled" },
96
- }),
97
- )
98
-
99
- const annotations = yield* HttpClientResponse.stream(HttpClient.filterStatusOk(http).execute(request)).pipe(
100
- Stream.decodeText(),
101
- Stream.splitLines,
102
- Stream.mapEffect(extractAnnotations),
103
- Stream.filter((value): value is ReadonlyArray<Annotation> => value !== undefined),
104
- Stream.runHead,
105
- Effect.catchIf(
106
- (err) => err.reason._tag === "StatusCodeError" && err.reason.response.status === 409,
107
- () => Effect.succeed(QUOTA_EXCEEDED),
108
- ),
109
- Effect.timeoutOrElse({
110
- duration: timeout,
111
- orElse: () => Effect.die(new Error("sleepy web_search request timed out")),
112
- }),
113
- )
114
-
115
- if (typeof annotations === "string") return annotations
116
- if (annotations._tag === "None") return undefined
117
- return formatSources(annotations.value)
118
- })
@@ -1,14 +0,0 @@
1
- - Search the web - performs real-time web searches and can scrape content from specific URLs
2
- - Provides up-to-date information for current events and recent data
3
- - Supports configurable result counts and returns the content from the most relevant websites
4
- - Use this tool for accessing information beyond knowledge cutoff
5
- - Searches are performed automatically within a single API call
6
-
7
- Usage notes:
8
- - Supports live crawling modes: 'fallback' (backup if cached unavailable) or 'preferred' (prioritize live crawling)
9
- - Search types: 'auto' (balanced), 'fast' (quick results), 'deep' (comprehensive search)
10
- - Configurable context length for optimal LLM integration
11
- - Domain filtering and advanced search options available
12
-
13
- The current year is {{year}}. You MUST use this year when searching for recent information or current events
14
- - Example: If the current year is 2026 and the user asks for "latest AI news", search for "AI news 2026", NOT "AI news 2025"
@@ -1,357 +0,0 @@
1
- import * as Tool from "./tool"
2
- import DESCRIPTION from "./workflow.txt"
3
- import z from "zod"
4
- import { Effect, Fiber } from "effect"
5
- import { Config } from "../config"
6
- import { ConfigCompose } from "../config"
7
- import { InstanceState } from "@/effect"
8
- import { workflowRef } from "@/workflow/runtime-ref"
9
- import { BuiltinWorkflow } from "@/workflow/builtin"
10
- import type { SessionID } from "../session/schema"
11
-
12
- const id = "workflow"
13
-
14
- // Mirror compose.js arg normalization: a bare task string OR a JSON string both
15
- // collapse to an object. Used so host-side docs-dir injection can merge into args
16
- // regardless of how the caller serialized them.
17
- function parseComposeArgString(raw: string): Record<string, unknown> {
18
- try {
19
- const parsed = JSON.parse(raw)
20
- if (typeof parsed === "object" && parsed !== null) return parsed as Record<string, unknown>
21
- } catch {}
22
- return { task: raw }
23
- }
24
-
25
- const runSchema = z.strictObject({
26
- operation: z.literal("run"),
27
- name: z
28
- .string()
29
- .min(1)
30
- .optional()
31
- .describe(
32
- '(optional) Name of a built-in workflow to run (e.g. "deep-research"). Provide EITHER name OR script, not both.',
33
- ),
34
- script: z
35
- .string()
36
- .min(1)
37
- .optional()
38
- .describe(
39
- "(optional) Inline JS workflow script; must begin with `export const meta = {...}`. Provide EITHER name OR script, not both.",
40
- ),
41
- args: z.any().optional().describe("(optional) JSON value exposed to the script as `args`."),
42
- workspace: z
43
- .string()
44
- .optional()
45
- .describe(
46
- "(optional) Absolute dir the script's file primitives (readFile/writeFile/glob/exists) are jailed to. Defaults to the project worktree.",
47
- ),
48
- async: z
49
- .boolean()
50
- .optional()
51
- .describe(
52
- "(optional) When true, return a run_id immediately and let the workflow run in the background; the result arrives later as an inbox notification. Default false: block until terminal and return the transcript inline (skill-like semantics, recommended for short workflows).",
53
- ),
54
- })
55
- const statusSchema = z.strictObject({ operation: z.literal("status"), run_id: z.string().min(1) })
56
- const waitSchema = z.strictObject({
57
- operation: z.literal("wait"),
58
- run_id: z.string().min(1),
59
- timeout_ms: z.number().int().positive().optional(),
60
- })
61
- const cancelSchema = z.strictObject({ operation: z.literal("cancel"), run_id: z.string().min(1) })
62
- const resumeSchema = z.strictObject({ operation: z.literal("resume"), run_id: z.string().min(1) })
63
-
64
- export const parameters = z.discriminatedUnion("operation", [
65
- runSchema,
66
- statusSchema,
67
- waitSchema,
68
- cancelSchema,
69
- resumeSchema,
70
- ])
71
-
72
- type TranscriptEntry = { kind: "phase" | "log"; text: string }
73
- // `counters` and `currentPhase` are streamed in each flush so the inline
74
- // conversation panel shows live progress without polling: the bus run row only
75
- // carries counters via loadWorkflows (which only the /workflows dialog polls), so
76
- // without this the in-conversation panel would sit at 0✓ 0✗ 0⟳ for the whole run.
77
- type Metadata = {
78
- runID?: string
79
- status?: string
80
- transcript?: TranscriptEntry[]
81
- counters?: { running: number; succeeded: number; failed: number }
82
- currentPhase?: string
83
- }
84
-
85
- // Bound the transcript that gets surfaced to the model (tool output) AND persisted
86
- // to part-state metadata AND streamed in each flush. A chatty workflow
87
- // (deep-research emits a phase + log per source) can otherwise feed tens of KB into
88
- // the model's context, grow the session file without bound, and — because each
89
- // flush pushes a full snapshot through ctx.metadata — make streaming O(N²) in event
90
- // count. Capping the snapshot to head + tail keeps every flush O(1) (so total
91
- // streamed bytes are O(run duration), not O(N²)) and the persisted/displayed view
92
- // bounded, while still showing the start and the most-recent activity.
93
- const TRANSCRIPT_HEAD = 40
94
- const TRANSCRIPT_TAIL = 160
95
- function capTranscript(t: readonly TranscriptEntry[]): TranscriptEntry[] {
96
- if (t.length <= TRANSCRIPT_HEAD + TRANSCRIPT_TAIL + 1) return t.slice()
97
- const omitted = t.length - TRANSCRIPT_HEAD - TRANSCRIPT_TAIL
98
- return [
99
- ...t.slice(0, TRANSCRIPT_HEAD),
100
- { kind: "log", text: `…(${omitted} lines omitted)` },
101
- ...t.slice(t.length - TRANSCRIPT_TAIL),
102
- ]
103
- }
104
-
105
- export const WorkflowTool = Tool.define<typeof parameters, Metadata, Config.Service>(
106
- id,
107
- Effect.gen(function* () {
108
- const config = yield* Config.Service
109
-
110
- // Resolve the WorkflowRuntime through the late-bound workflowRef rather than as
111
- // a Layer dependency: pulling WorkflowRuntime.Service in here would push that
112
- // requirement onto ToolRegistry.layer, forcing every layer that builds the
113
- // registry to provide it. The ref is populated by WorkflowRuntime.layer's
114
- // initialiser (see workflow/runtime-ref.ts) — mirrors the actor tool's spawnRef.
115
- const requireRuntime = () => {
116
- const runtime = workflowRef.current
117
- if (!runtime) {
118
- return Effect.fail(
119
- new Error(
120
- "Workflow runtime unavailable — WorkflowRuntime.defaultLayer must be running for the workflow tool",
121
- ),
122
- )
123
- }
124
- return Effect.succeed(runtime)
125
- }
126
-
127
- // Thread the operator-configured compose docs dir into the `compose` built-in's
128
- // args, mirroring the `<compose_docs_dir>` block prompt.ts injects for the
129
- // interactive compose agent. The compose guest reads `args._composeDocsDir` and
130
- // tells its plan/report subagents where to write specs/plans/reports. We
131
- // normalize args the same way compose.js does (object | JSON-string | bare task
132
- // string) so the injection survives the AI-SDK string-serialization boundary.
133
- const enrichComposeArgs = (raw: unknown) =>
134
- Effect.gen(function* () {
135
- const ctx = yield* InstanceState.context
136
- const docs = ConfigCompose.resolveDocsDir(ctx.worktree, (yield* config.get()).compose)
137
- const base =
138
- typeof raw === "object" && raw !== null
139
- ? (raw as Record<string, unknown>)
140
- : typeof raw === "string"
141
- ? parseComposeArgString(raw)
142
- : {}
143
- return { ...base, _composeDocsDir: docs }
144
- })
145
-
146
- const run = Effect.fn("WorkflowTool.execute")(function* (
147
- input: z.infer<typeof parameters>,
148
- ctx: Tool.Context<Metadata>,
149
- ) {
150
- const runtime = yield* requireRuntime()
151
-
152
- if (input.operation === "run") {
153
- const cfg = yield* config.get()
154
- // The schema keeps both `name` and `script` optional; enforce the xor
155
- // here. Both-provided is a caller mistake (the schema docstring says
156
- // "EITHER name OR script, not both") — fail loudly rather than silently
157
- // picking one. Effect.orDie surfaces it to the model.
158
- if (input.name && input.script) {
159
- return yield* Effect.fail(
160
- new Error("workflow run: provide either `name` (a built-in) or `script` (inline), not both."),
161
- )
162
- }
163
- const script = input.name ? BuiltinWorkflow.get(input.name)?.script : input.script
164
- if (!script) {
165
- const known = BuiltinWorkflow.list()
166
- .map((w) => w.name)
167
- .join(", ")
168
- return yield* Effect.fail(
169
- new Error(
170
- input.name
171
- ? `Unknown built-in workflow "${input.name}". Known: ${known || "(none)"}.`
172
- : "workflow run requires either `name` (a built-in) or `script` (inline).",
173
- ),
174
- )
175
- }
176
- const started = yield* runtime.start({
177
- script,
178
- sessionID: ctx.sessionID as SessionID,
179
- parentActorID: ctx.agent ?? "main",
180
- args: input.name === "compose" ? yield* enrichComposeArgs(input.args) : input.args,
181
- workspace: input.workspace,
182
- maxConcurrentAgents: cfg.workflow?.maxConcurrentAgents,
183
- scriptDeadlineMs: cfg.workflow?.scriptDeadlineMs,
184
- // Only the async (background) path relies on the inbox notification; the
185
- // sync path below returns the result inline, so suppress the duplicate.
186
- notifyOnTerminal: input.async === true,
187
- })
188
- const runID = started.runID
189
- const label = input.name ?? "inline"
190
-
191
- // Async opt-out: legacy fire-and-forget semantic. Returns the run_id
192
- // immediately and lets the workflow keep running in the background; the
193
- // terminal result arrives later as an inbox notification on the parent's
194
- // next turn. Use this for very long workflows (deep-research, etc.) where
195
- // blocking the agent's turn for the full duration is undesirable.
196
- if (input.async === true) {
197
- return {
198
- title: "workflow started",
199
- output: `Workflow started in background. run_id: ${runID}\nThe result will be delivered as a notification when complete.`,
200
- metadata: { runID, status: "running" } satisfies Metadata,
201
- }
202
- }
203
-
204
- // Default sync path: block until terminal so the model + user see phase
205
- // and log() events as the tool's own message stream (skill-like) instead
206
- // of a bare run_id followed by silence until the next turn drains the
207
- // inbox. We read the transcript from the runtime's authoritative per-run
208
- // buffer (populated synchronously by the guest hooks) rather than
209
- // subscribing to the bus: that avoids the subscribe-after-start head race,
210
- // cross-event reordering, the post-wait tail race, and any subscription
211
- // leak on interrupt. The buffer flushes to part-state metadata as it grows
212
- // — the TUI re-renders each delta via the existing message.part.delta path.
213
- yield* ctx.metadata({
214
- metadata: { runID, status: "running", transcript: [] } satisfies Metadata,
215
- })
216
-
217
- // A 250ms flush loop reads the runtime's transcript + live counters and
218
- // pushes a CAPPED snapshot through ctx.metadata (reusing the per-part-state
219
- // delta channel, so TUI consumers need no new subscription). The cap keeps
220
- // each delta bounded regardless of event count. forkScoped binds the fiber to
221
- // the execute scope below, so it is interrupted on completion OR interrupt.
222
- // Counters are flushed alongside the transcript so the inline panel shows live
223
- // ✓/✗/⟳ progress (they can change without a new transcript line — an agent can
224
- // settle without a log() — so we flush on EITHER changing).
225
- let lastLen = 0
226
- let lastCounters = ""
227
- const flushFiber = yield* Effect.forkScoped(
228
- Effect.gen(function* () {
229
- while (true) {
230
- yield* Effect.sleep("250 millis")
231
- const t = yield* runtime.transcript({ runID })
232
- const s = yield* runtime.status({ runID })
233
- const counters = { running: s.running, succeeded: s.succeeded, failed: s.failed }
234
- const countersKey = `${counters.running}/${counters.succeeded}/${counters.failed}`
235
- if (t.length === lastLen && countersKey === lastCounters) continue
236
- lastLen = t.length
237
- lastCounters = countersKey
238
- yield* ctx.metadata({
239
- metadata: {
240
- runID,
241
- status: "running",
242
- transcript: capTranscript(t),
243
- counters,
244
- ...(s.currentPhase !== undefined ? { currentPhase: s.currentPhase } : {}),
245
- } satisfies Metadata,
246
- })
247
- }
248
- }),
249
- )
250
-
251
- const outcome = yield* runtime.wait({ runID })
252
- yield* Fiber.interrupt(flushFiber)
253
-
254
- // Final counters/phase for the terminal metadata so the inline panel keeps
255
- // showing the true ✓/✗/⟳ after the run ends (not the last mid-flush value).
256
- const finalStatus = yield* runtime.status({ runID })
257
- const finalCounters = {
258
- running: finalStatus.running,
259
- succeeded: finalStatus.succeeded,
260
- failed: finalStatus.failed,
261
- }
262
- const finalPhase = finalStatus.currentPhase
263
-
264
- // The guest hooks append synchronously and complete before the script
265
- // returns (which resolves wait()), so this snapshot is the full, ordered
266
- // transcript. Cap it for both the model-facing output and persisted metadata.
267
- const finalTranscript = capTranscript(yield* runtime.transcript({ runID }))
268
- const lines = finalTranscript.map((e) => (e.kind === "phase" ? `▸ ${e.text}` : ` ${e.text}`))
269
- if (outcome.status === "completed") {
270
- const result = JSON.stringify(outcome.result ?? null)
271
- const truncated = result.length > 4000 ? result.slice(0, 4000) + " …(truncated)" : result
272
- return {
273
- title: `workflow ${label} completed`,
274
- output:
275
- (lines.length ? lines.join("\n") + "\n\n" : "") +
276
- `Result: ${truncated}\nrun_id: ${runID}`,
277
- metadata: {
278
- runID,
279
- status: "completed",
280
- transcript: finalTranscript,
281
- counters: finalCounters,
282
- ...(finalPhase !== undefined ? { currentPhase: finalPhase } : {}),
283
- } satisfies Metadata,
284
- }
285
- }
286
- if (outcome.status === "failed") {
287
- return {
288
- title: `workflow ${label} failed`,
289
- output:
290
- (lines.length ? lines.join("\n") + "\n\n" : "") +
291
- `Error: ${outcome.error}\nrun_id: ${runID}`,
292
- metadata: {
293
- runID,
294
- status: "failed",
295
- transcript: finalTranscript,
296
- counters: finalCounters,
297
- ...(finalPhase !== undefined ? { currentPhase: finalPhase } : {}),
298
- } satisfies Metadata,
299
- }
300
- }
301
- return {
302
- title: `workflow ${label} cancelled`,
303
- output:
304
- (lines.length ? lines.join("\n") + "\n\n" : "") + `Cancelled.\nrun_id: ${runID}`,
305
- metadata: {
306
- runID,
307
- status: "cancelled",
308
- transcript: finalTranscript,
309
- counters: finalCounters,
310
- ...(finalPhase !== undefined ? { currentPhase: finalPhase } : {}),
311
- } satisfies Metadata,
312
- }
313
- }
314
- if (input.operation === "status") {
315
- const snapshot = yield* runtime.status({ runID: input.run_id })
316
- return {
317
- title: `workflow ${snapshot.status}`,
318
- output: JSON.stringify(snapshot),
319
- metadata: { runID: input.run_id, status: snapshot.status } satisfies Metadata,
320
- }
321
- }
322
- if (input.operation === "wait") {
323
- const outcome = yield* runtime.wait({ runID: input.run_id, timeoutMs: input.timeout_ms })
324
- return {
325
- title: `workflow ${outcome.status}`,
326
- output: JSON.stringify(outcome),
327
- metadata: { runID: input.run_id, status: outcome.status } satisfies Metadata,
328
- }
329
- }
330
- if (input.operation === "cancel") {
331
- yield* runtime.cancel({ runID: input.run_id })
332
- return {
333
- title: "workflow cancelled",
334
- output: `Cancelled ${input.run_id}`,
335
- metadata: { runID: input.run_id, status: "cancelled" } satisfies Metadata,
336
- }
337
- }
338
- if (input.operation === "resume") {
339
- const resumed = yield* runtime.resume({ runID: input.run_id })
340
- return {
341
- title: resumed.resumed ? "workflow resumed" : "workflow not resumable",
342
- output: JSON.stringify(resumed),
343
- metadata: { runID: input.run_id } satisfies Metadata,
344
- }
345
- }
346
- input satisfies never
347
- throw new Error(`unhandled workflow operation: ${(input as { operation: string }).operation}`)
348
- })
349
-
350
- return {
351
- description: DESCRIPTION,
352
- parameters,
353
- execute: (input: z.infer<typeof parameters>, ctx: Tool.Context<Metadata>) =>
354
- run(input, ctx).pipe(Effect.scoped, Effect.orDie),
355
- } satisfies Tool.DefWithoutID<typeof parameters, Metadata>
356
- }),
357
- )
@@ -1,25 +0,0 @@
1
- Execute a workflow script that orchestrates multiple subagents deterministically. The script is plain JavaScript that runs in a sandbox and fans out subagents via agent(), parallel(), and pipeline(). The "run" operation BLOCKS until the workflow reaches a terminal status (completed/failed/cancelled) and returns the full transcript (phase transitions + log() messages) followed by the script's return value. Phase and log lines stream into the conversation as the workflow runs.
2
-
3
- operation "run": start a workflow and block until it terminates. Provide either `name` (a built-in workflow, see the catalog below) or `script` (inline JS; must begin with `export const meta = { name, description }`). Returns the transcript + result. Optionally provide `workspace` (a dir the script's file primitives are jailed to; defaults to the worktree). Note: long workflows (e.g. deep-research) hold the agent's turn for the full duration — that is intentional, mirroring skill semantics.
4
- operation "status": check a run's status by run_id.
5
- operation "wait": block until a run completes (or times out), returning its result.
6
- operation "cancel": cancel a running workflow by run_id (best-effort; in-flight subagents stop at their next safe point, not instantly).
7
- operation "resume": re-launch a persisted workflow by run_id under the same run_id (re-runs its script; a convergent script does less work the second time).
8
-
9
- Inside the script you can call:
10
- - agent(prompt, opts?) -> Promise: spawn one subagent; resolves to its result (a validated object if opts.schema given, else its final text) or null on failure. Never throws.
11
- - parallel(thunks) -> Promise<any[]>: run thunks concurrently; a thunk that throws resolves to null.
12
- - pipeline(items, ...stages) -> Promise<any[]>: run each item through all stages; no barrier between stages.
13
- - workflow(nameOrScript, args?, opts?) -> Promise: run a CHILD workflow as its own sub-run and await its result. nameOrScript is either an inline script (starts with `export const meta`) or a saved workflow name resolved from .sleepycode/workflows/ or .claude/workflows/. args is passed to the child as its `args`. opts: { workspace?, maxConcurrentAgents? }. A failed child resolves to null (never throws); an unknown name or a cycle/over-depth throws (fails the run). Children share the process-wide concurrency ceiling and inherit the parent workspace by default.
14
- - readFile(path) -> Promise<string|null>: read a file in the workspace (null if absent).
15
- - writeFile(path, content) -> Promise: write a file in the workspace (parent dirs auto-created).
16
- - glob(pattern) -> Promise<string[]>: list workspace paths matching the glob, sorted, files and dirs. Use this to enumerate work units — do NOT spawn an agent to list files.
17
- - exists(path) -> Promise<boolean>: whether a workspace path exists.
18
- - phase(title), log(message): progress reporting.
19
- - args: the JSON value passed when starting the workflow.
20
-
21
- Concurrency is capped by the host (default min(16, 2x cores)); excess agent() calls queue automatically.
22
-
23
- Communicate between workflows by dataflow: return a value from a child and pass it as args to the next (or write a shared file via writeFile and read it in a later phase). Workflows do not message each other directly. File primitives are jailed to the workspace root (the project worktree by default, or the `workspace` you pass to the run op) by a LEXICAL name check — it blocks `..` and absolute escapes, but does not resolve symlinks, so treat it as scoping, not a hard security boundary.
24
-
25
- workflow() cycle detection is asymmetric: a SAVED name is checked by name (so A calling A is a cycle regardless of args), while an INLINE script is checked by content+args (so an inline body that calls itself with DIFFERENT args is not flagged as a cycle and is bounded only by maxDepth). A cycle, over-maxDepth, or unknown name THROWS at the workflow() call site, which fails the run if uncaught — but a try/catch around workflow() in the guest will silence those throws, so don't wrap workflow() in try/catch unless you intend to ignore configuration bugs.