@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,739 +0,0 @@
1
- import path from "path"
2
- import { Provider } from "@/provider"
3
- import { Log } from "@/util"
4
- import { Context, Duration, Effect, Layer, Record, Schedule, Ref } from "effect"
5
- import * as Stream from "effect/Stream"
6
- import { streamText, wrapLanguageModel, type ModelMessage, type Tool, tool, jsonSchema } from "ai"
7
- import { mergeDeep, pipe } from "remeda"
8
- import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
9
- import { ProviderTransform } from "@/provider"
10
- import { Config } from "@/config"
11
- import { Instance } from "@/project/instance"
12
- import { Agent } from "@/agent/agent"
13
- import type { MessageV2 } from "./message-v2"
14
- import { Plugin } from "@/plugin"
15
- import { SystemPrompt } from "./system"
16
- import { Permission } from "@/permission"
17
- import { PermissionID } from "@/permission/schema"
18
- import { Bus } from "@/bus"
19
- import { Wildcard, ToolCompat } from "@/util"
20
- import { asSchema } from "@ai-sdk/provider-utils"
21
- import { SessionID } from "@/session/schema"
22
- import * as Session from "@/session/session"
23
- import { migrateProjectMemory } from "./checkpoint-paths"
24
- import { ProjectID } from "@/project/schema"
25
- import { Auth } from "@/auth"
26
- import { Installation } from "@/installation"
27
- import { InstallationVersion } from "@/installation/version"
28
- import { EffectBridge } from "@/effect"
29
- import { Global } from "@/global"
30
- import * as Option from "effect/Option"
31
- import * as OtelTracer from "@effect/opentelemetry/Tracer"
32
- import { ActorRegistry } from "@/actor/registry"
33
- import { Memory } from "@/memory"
34
- import { isRetryableTransientError } from "./retry"
35
-
36
- const log = Log.create({ service: "llm" })
37
- export const OUTPUT_TOKEN_MAX = ProviderTransform.OUTPUT_TOKEN_MAX
38
- type Result = Awaited<ReturnType<typeof streamText>>
39
-
40
- /**
41
- * Match transient errors that the PERSISTENT_RETRY layer should retry.
42
- *
43
- * - HTTP 429 / 5xx / 529 — capacity / overload responses
44
- * - ECONNRESET / EPIPE / ETIMEDOUT — network errors typically caused by
45
- * stale keep-alive sockets or upstream proxy timeouts
46
- * - "SSE read timed out" — `provider.ts:wrapSSE` chunk-timeout fired
47
- * (configured per-provider via `chunkTimeout` in sleepycode.json). This
48
- * is HTTP-byte-level: keep-alive comments still count as activity, so
49
- * the error only fires when the underlying TCP stream is genuinely dead.
50
- *
51
- * Auth errors (401/403), client errors (400, 404, 422), and user-
52
- * initiated aborts are NOT retryable.
53
- *
54
- * @deprecated Use `isRetryableTransientError` from `./retry` directly.
55
- * Kept as a 1-line wrapper to preserve the existing export name.
56
- */
57
- export function isTransientCapacityError(error: unknown): boolean {
58
- return isRetryableTransientError(error)
59
- }
60
-
61
- /**
62
- * Persistent-retry schedule with exponential backoff.
63
- *
64
- * Exponential backoff 500ms × 2 (i.e. 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256s),
65
- * each individual delay capped at 5 minutes, total attempts capped at 10.
66
- *
67
- * Worst-case total = 11 attempts × chunkTimeout + cumulative backoff
68
- * ≈ 11 × 8min + 9min ≈ 97 min (with DEFAULT_CHUNK_TIMEOUT = 8min).
69
- *
70
- * Intentionally NOT capped via Schedule.upTo() — retry persistence under
71
- * brief upstream outages is the design goal. Bounding per-attempt latency
72
- * via chunkTimeout is the primary lever for hang-time control.
73
- */
74
- export const persistentRetrySchedule = Schedule.exponential("500 millis", 2).pipe(
75
- Schedule.modifyDelay((_, delay) =>
76
- Effect.succeed(Duration.isLessThanOrEqualTo(delay, Duration.minutes(5)) ? delay : Duration.minutes(5)),
77
- ),
78
- Schedule.both(Schedule.recurs(10)),
79
- )
80
-
81
- /**
82
- * Memory-system instructions appended to the main agent's system prompt.
83
- *
84
- * Teaches the agent its v8.1 ownership of the memory system:
85
- * - MEMORY.md (project-scoped): writer is sole curator + agent edits for
86
- * project-level user-stated rules
87
- * - checkpoint.md (session-scoped): writer EXCLUSIVE; agent never edits
88
- * - tasks/<id>/progress.md: writer-derived splitover from session-level
89
- * progress.md; not LLM-written. Subagents handed a task may read but
90
- * should not write.
91
- *
92
- * Also documents the Active recall protocol that prevents re-Reading
93
- * files already present in the rebuild dump, and the Subagent return
94
- * format contract.
95
- *
96
- * `memoryRoot` is the same absolute root returned by Memory.root(), so these
97
- * paths match the files used by checkpoint restore and memory/task detection.
98
- */
99
- function buildMemoryInstructions(sessionID: SessionID, projectID: ProjectID, memoryRoot: string): string {
100
- const memoryFile = path.join(memoryRoot, "projects", projectID, "MEMORY.md")
101
- const checkpointFile = path.join(memoryRoot, "sessions", sessionID, "checkpoint.md")
102
- const sessionMemoryDir = path.join(memoryRoot, "sessions", sessionID)
103
- const globalMemoryFile = path.join(memoryRoot, "global", "MEMORY.md")
104
- return `# Memory system
105
-
106
- You have a persistent file-based memory system. Four file types:
107
-
108
- - Project memory at \`${memoryFile}\` — persistent across all sessions in this project. Contains: project context, rules, architecture decisions, durable cross-task knowledge.
109
- - Session checkpoint at \`${checkpointFile}\` — current session's structured state, written ONLY by the checkpoint-writer subagent. 11 sections covering active intent, next action, directives, task tree, current work, files, learnings, errors, live resources, design decisions, and open notes. Task content lives inside §4 Task tree and §5 Current work.
110
- - Per-task progress at \`${path.join(sessionMemoryDir, "tasks", "<id>", "progress.md")}\` — writer-derived splitover from session-level progress.md (not LLM-written). When you spawn a subagent on a task, the subagent may be handed this path for reading; you do not maintain it.
111
- - Global memory at \`${globalMemoryFile}\` — user-level preferences and cross-project feedback that persist across all projects. Auto-injected into rebuild context under the "## Global memory" header when present.
112
-
113
- The checkpoint writer is the sole curator of the structured files. You don't maintain them mid-task — the writer extracts everything from the conversation at checkpoint events.
114
-
115
- ## When to Edit MEMORY.md directly
116
-
117
- You may Edit MEMORY.md when:
118
- - User states a project-level rule that should hold across sessions → ## Rules
119
- - User states a project-level architectural decision → ## Architecture decisions
120
- - A clearly durable cross-session fact emerges that you want available immediately, before the next checkpoint → ## Discovered durable knowledge
121
-
122
- These are exceptions, not the norm. The writer covers most extraction at checkpoint time.
123
-
124
- ## Notes scratchpad
125
-
126
- You have a single legal scratchpad at \`${path.join(sessionMemoryDir, "notes.md")}\`. Append entries to it when you want to record:
127
-
128
- - A quote (from the user, an article, a known engineer) that has lasting value but isn't a task-specific decision
129
- - An unresolved question — something you noticed but won't answer this turn
130
- - A cross-project observation — "we did this in project X, similar pattern here"
131
- - A note for future-self — context that would matter weeks later but doesn't fit any current task
132
-
133
- Format each entry as:
134
- ## [turn N · YYYY-MM-DDTHH:MM:SSZ]
135
- Free-form body. The writer reorganizes structured content at checkpoint time.
136
-
137
- This is your ONLY legal scratchpad — don't create \`learning.md\`, \`scratch.md\`, or any other ad-hoc memory file.
138
-
139
- ## Subagent return format
140
-
141
- When you (as a subagent) finish your task, your final assistant message will be delivered to the spawning agent. If the spawn machinery added a "Return format (required)" section to your prompt, follow it exactly:
142
-
143
- **Status**: success | partial | failed | blocked
144
- **Summary**: <one-line description>
145
-
146
- <deliverable body>
147
-
148
- **Files touched**: <comma-separated paths or "(none)">
149
- **Findings worth promoting**: <bullet list, or "(none)">
150
-
151
- If your spawn prompt didn't include this format (e.g., explore/title/summary agents have their own contracts), follow whatever your prompt specifies.
152
-
153
- ## What NOT to do
154
-
155
- - Don't Edit checkpoint.md — that's the writer's domain.
156
- - Don't create memory files other than notes.md (no learning.md, no scratch.md). Use notes.md for any free-form entry.
157
- - Don't ask the user about something memory may already record — search first via Grep / Read.
158
-
159
- ## Active recall protocol
160
-
161
- After a checkpoint rebuild, the following dumps may be already in your context (look for the "Summary of previous conversation from checkpoint files:" header followed by these dumps):
162
-
163
- - checkpoint.md (full or budget-truncated)
164
- - MEMORY.md (full or budget-truncated)
165
- - notes.md (full or budget-truncated)
166
- - global/MEMORY.md (full or budget-truncated)
167
-
168
- If these dumps are visible in your context:
169
-
170
- - Do NOT Read them again as whole files. The bytes are already in front of you.
171
- - For specific past details (a particular turn's content, a specific tool output, an old command), use Grep with a keyword pattern to target the exact item — do not pull a whole file.
172
- - For files NOT in the rebuild dump (per-task splitover progress.md files for tasks you don't actively need, spillover files, older session checkpoints in other sessions), Read on demand.
173
-
174
- If a dump shows "⚠️ Truncated at ~N tokens. Read(<path>, offset=L) for the rest." — that file was budget-cut. Use Read with the offset only when you need the missing tail.
175
-
176
- Memory entries name functions, files, flags, paths — those are CLAIMS about a point in time when they were written. Verify before acting on a specific name.
177
-
178
- Don't ask the user about something memory may already record.
179
- `
180
- }
181
-
182
- export type StreamInput = {
183
- user: MessageV2.User
184
- sessionID: string
185
- parentSessionID?: string
186
- model: Provider.Model
187
- agent: Agent.Info
188
- permission?: Permission.Ruleset
189
- system: string[]
190
- prebuiltSystem?: string[] // when set, skip buildSystemArray and use this verbatim
191
- messages: ModelMessage[]
192
- small?: boolean
193
- tools: Record<string, Tool>
194
- retries?: number
195
- toolChoice?: "auto" | "required" | "none"
196
- agentID?: string
197
- }
198
-
199
- export type StreamRequest = StreamInput & {
200
- abort: AbortSignal
201
- }
202
-
203
- export type Event = Result["fullStream"] extends AsyncIterable<infer T> ? T : never
204
-
205
- export interface Interface {
206
- readonly stream: (input: StreamInput) => Stream.Stream<Event, unknown>
207
- readonly buildSystemArray: (input: {
208
- agent: Agent.Info
209
- model: Provider.Model
210
- system: string[]
211
- user: MessageV2.User
212
- sessionID: string
213
- agentID?: string
214
- }) => Effect.Effect<string[]>
215
- }
216
-
217
- export class Service extends Context.Service<Service, Interface>()("@opencode/LLM") {}
218
-
219
- const live: Layer.Layer<
220
- Service,
221
- never,
222
- Auth.Service | Config.Service | Provider.Service | Plugin.Service | Permission.Service | ActorRegistry.Service | Memory.Service
223
- > = Layer.effect(
224
- Service,
225
- Effect.gen(function* () {
226
- const auth = yield* Auth.Service
227
- const config = yield* Config.Service
228
- const provider = yield* Provider.Service
229
- const plugin = yield* Plugin.Service
230
- const perm = yield* Permission.Service
231
- const actorReg = yield* ActorRegistry.Service
232
- const memory = yield* Memory.Service
233
-
234
- const buildSystemArray = Effect.fn("LLM.buildSystemArray")(function* (input: {
235
- agent: Agent.Info
236
- model: Provider.Model
237
- system: string[]
238
- user: MessageV2.User
239
- sessionID: string
240
- agentID?: string
241
- }) {
242
- const system: string[] = []
243
- system.push(
244
- [
245
- // use provider prompt, and append agent prompt if present for non-hidden primary agents
246
- ...(input.agent.prompt && (input.agent.hidden || input.agent.mode === "subagent")
247
- ? [input.agent.prompt]
248
- : [...SystemPrompt.provider(input.model), ...(input.agent.prompt ? [input.agent.prompt] : [])]),
249
- // any custom prompt passed into this call
250
- ...input.system,
251
- // any custom prompt from last user message
252
- ...(input.user.system ? [input.user.system] : []),
253
- ]
254
- .filter((x) => x)
255
- .join("\n"),
256
- )
257
-
258
- // v5: memory-instructions section. Teaches the main agent how/where/when
259
- // to maintain `MEMORY.md` and `checkpoint.md` directly via Edit. Project
260
- // ID is resolved from the ALS-bound Instance with a safe fallback to
261
- // `ProjectID.global` (mirrors the pattern in session/checkpoint.ts so the
262
- // path the prompt advertises matches the path the writer actually writes).
263
- // Skip for system-spawned actors (e.g. checkpoint-writer): they shouldn't
264
- // see the user-facing memory instructions.
265
- const isSystemActor = input.agentID
266
- ? yield* actorReg.isSystemSpawned(SessionID.make(input.sessionID), input.agentID)
267
- : false
268
- if (!isSystemActor) {
269
- const projectID =
270
- (yield* Effect.try({
271
- try: () => Instance.current?.project?.id as ProjectID | undefined,
272
- catch: () => undefined,
273
- }).pipe(Effect.orElseSucceed(() => undefined))) ?? ProjectID.global
274
- // Bootstrap the memory.md → MEMORY.md migration at session start so a
275
- // legacy lowercase file is renamed before the agent's first direct
276
- // Edit/Write (which would otherwise miss it on a case-sensitive FS, or
277
- // create an uppercase sibling and orphan the legacy content). The two
278
- // checkpoint-flow call sites cover the writer/rebuild paths; this covers
279
- // the "agent edits MEMORY.md before any checkpoint" path. Idempotent.
280
- yield* Effect.promise(() => migrateProjectMemory(projectID)).pipe(Effect.ignore)
281
- system.push(buildMemoryInstructions(SessionID.make(input.sessionID), projectID, yield* memory.root()))
282
- }
283
-
284
- const header = system[0]
285
- yield* plugin.trigger(
286
- "experimental.chat.system.transform",
287
- { sessionID: input.sessionID, model: input.model },
288
- { system },
289
- )
290
- // rejoin to maintain 2-part structure for caching if header unchanged
291
- if (system.length > 2 && system[0] === header) {
292
- const rest = system.slice(1)
293
- system.length = 0
294
- system.push(header, rest.join("\n"))
295
- }
296
-
297
- return system
298
- })
299
-
300
- const run = Effect.fn("LLM.run")(function* (input: StreamRequest) {
301
- const l = log
302
- .clone()
303
- .tag("providerID", input.model.providerID)
304
- .tag("modelID", input.model.id)
305
- .tag("session.id", input.sessionID)
306
- .tag("small", (input.small ?? false).toString())
307
- .tag("agent", input.agent.name)
308
- .tag("mode", input.agent.mode)
309
- l.info("stream", {
310
- modelID: input.model.id,
311
- providerID: input.model.providerID,
312
- })
313
-
314
- const [language, cfg, item, info] = yield* Effect.all(
315
- [
316
- provider.getLanguage(input.model),
317
- config.get(),
318
- provider.getProvider(input.model.providerID),
319
- auth.get(input.model.providerID),
320
- ],
321
- { concurrency: "unbounded" },
322
- )
323
-
324
- // TODO: move this to a proper hook
325
- const isOpenaiOauth = item.id === "openai" && info?.type === "oauth"
326
-
327
- const system =
328
- input.prebuiltSystem ??
329
- (yield* buildSystemArray({
330
- agent: input.agent,
331
- model: input.model,
332
- system: input.system,
333
- user: input.user,
334
- sessionID: input.sessionID,
335
- agentID: input.agentID,
336
- }))
337
-
338
- const variant =
339
- !input.small && input.model.variants && input.user.model.variant
340
- ? input.model.variants[input.user.model.variant]
341
- : {}
342
- const base = input.small
343
- ? ProviderTransform.smallOptions(input.model)
344
- : ProviderTransform.options({
345
- model: input.model,
346
- sessionID: input.sessionID,
347
- providerOptions: item.options,
348
- })
349
- const options: Record<string, any> = pipe(
350
- base,
351
- mergeDeep(input.model.options),
352
- mergeDeep(input.agent.options),
353
- mergeDeep(variant),
354
- )
355
- if (isOpenaiOauth) {
356
- options.instructions = system.join("\n")
357
- }
358
-
359
- const isWorkflow = language instanceof GitLabWorkflowLanguageModel
360
- const messages = isOpenaiOauth
361
- ? input.messages
362
- : isWorkflow
363
- ? input.messages
364
- : [
365
- ...system.map(
366
- (x): ModelMessage => ({
367
- role: "system",
368
- content: x,
369
- }),
370
- ),
371
- ...input.messages,
372
- ]
373
-
374
- const params = yield* plugin.trigger(
375
- "chat.params",
376
- {
377
- sessionID: input.sessionID,
378
- agent: input.agent.name,
379
- model: input.model,
380
- provider: item,
381
- message: input.user,
382
- },
383
- {
384
- temperature: input.model.capabilities.temperature
385
- ? (input.agent.temperature ?? ProviderTransform.temperature(input.model))
386
- : undefined,
387
- topP: input.agent.topP ?? ProviderTransform.topP(input.model),
388
- topK: ProviderTransform.topK(input.model),
389
- maxOutputTokens: ProviderTransform.maxOutputTokens(input.model),
390
- options,
391
- },
392
- )
393
-
394
- const { headers } = yield* plugin.trigger(
395
- "chat.headers",
396
- {
397
- sessionID: input.sessionID,
398
- agent: input.agent.name,
399
- model: input.model,
400
- provider: item,
401
- message: input.user,
402
- },
403
- {
404
- headers: {},
405
- },
406
- )
407
-
408
- const tools = resolveTools(input)
409
-
410
- // LiteLLM and some Anthropic proxies require the tools parameter to be present
411
- // when message history contains tool calls, even if no tools are being used.
412
- // Add a dummy tool that is never called to satisfy this validation.
413
- // This is enabled for:
414
- // 1. Providers with "litellm" in their ID or API ID (auto-detected)
415
- // 2. Providers with explicit "litellmProxy: true" option (opt-in for custom gateways)
416
- const isLiteLLMProxy =
417
- item.options?.["litellmProxy"] === true ||
418
- input.model.providerID.toLowerCase().includes("litellm") ||
419
- input.model.api.id.toLowerCase().includes("litellm")
420
-
421
- // LiteLLM/Bedrock rejects requests where the message history contains tool
422
- // calls but no tools param is present. When there are no active tools (e.g.
423
- // during compaction), inject a stub tool to satisfy the validation requirement.
424
- // The stub description explicitly tells the model not to call it.
425
- if (
426
- (isLiteLLMProxy || input.model.providerID.includes("github-copilot")) &&
427
- Object.keys(tools).length === 0 &&
428
- hasToolCalls(input.messages)
429
- ) {
430
- tools["_noop"] = tool({
431
- description: "Do not call this tool. It exists only for API compatibility and must never be invoked.",
432
- inputSchema: jsonSchema({
433
- type: "object",
434
- properties: {
435
- reason: { type: "string", description: "Unused" },
436
- },
437
- }),
438
- execute: async () => ({ output: "", title: "", metadata: {} }),
439
- })
440
- }
441
-
442
- // Wire up toolExecutor for DWS workflow models so that tool calls
443
- // from the workflow service are executed via opencode's tool system
444
- // and results sent back over the WebSocket.
445
- if (language instanceof GitLabWorkflowLanguageModel) {
446
- const workflowModel = language as GitLabWorkflowLanguageModel & {
447
- sessionID?: string
448
- sessionPreapprovedTools?: string[]
449
- approvalHandler?: (approvalTools: { name: string; args: string }[]) => Promise<{ approved: boolean }>
450
- }
451
- workflowModel.sessionID = input.sessionID
452
- workflowModel.systemPrompt = system.join("\n")
453
- workflowModel.toolExecutor = async (toolName, argsJson, _requestID) => {
454
- const registered = Object.keys(tools)
455
- const resolvedName = ToolCompat.resolveName(toolName, registered) ?? toolName
456
- const t = tools[resolvedName]
457
- if (!t || !t.execute) {
458
- return { result: "", error: `Unknown tool: ${toolName}` }
459
- }
460
- try {
461
- const schema = await Promise.resolve(asSchema(t.inputSchema).jsonSchema)
462
- const args = ToolCompat.normalizeInput(ToolCompat.parseToolInput(argsJson), schema)
463
- const result = await t.execute!(args, {
464
- toolCallId: _requestID,
465
- messages: input.messages,
466
- abortSignal: input.abort,
467
- })
468
- const output = typeof result === "string" ? result : (result?.output ?? JSON.stringify(result))
469
- return {
470
- result: output,
471
- metadata: typeof result === "object" ? result?.metadata : undefined,
472
- title: typeof result === "object" ? result?.title : undefined,
473
- }
474
- } catch (e: any) {
475
- return { result: "", error: e.message ?? String(e) }
476
- }
477
- }
478
-
479
- const ruleset = Agent.runtimePermission(input.agent, input.permission)
480
- workflowModel.sessionPreapprovedTools = Object.keys(tools).filter((name) => {
481
- const match = ruleset.findLast((rule) => Wildcard.match(name, rule.permission))
482
- return !match || match.action !== "ask"
483
- })
484
-
485
- const bridge = yield* EffectBridge.make()
486
- const approvedToolsForSession = new Set<string>()
487
- workflowModel.approvalHandler = Instance.bind(async (approvalTools) => {
488
- const uniqueNames = [...new Set(approvalTools.map((t: { name: string }) => t.name))] as string[]
489
- // Auto-approve tools that were already approved in this session
490
- // (prevents infinite approval loops for server-side MCP tools)
491
- if (uniqueNames.every((name) => approvedToolsForSession.has(name))) {
492
- return { approved: true }
493
- }
494
-
495
- const id = PermissionID.ascending()
496
- let unsub: (() => void) | undefined
497
- try {
498
- unsub = Bus.subscribe(Permission.Event.Replied, (evt) => {
499
- if (evt.properties.requestID === id) void evt.properties.reply
500
- })
501
- const toolPatterns = approvalTools.map((t: { name: string; args: string }) => {
502
- try {
503
- const parsed = JSON.parse(t.args) as Record<string, unknown>
504
- const title = (parsed?.title ?? parsed?.name ?? "") as string
505
- return title ? `${t.name}: ${title}` : t.name
506
- } catch {
507
- return t.name
508
- }
509
- })
510
- const uniquePatterns = [...new Set(toolPatterns)] as string[]
511
- await bridge.promise(
512
- perm.ask({
513
- id,
514
- sessionID: SessionID.make(input.sessionID),
515
- permission: "workflow_tool_approval",
516
- patterns: uniquePatterns,
517
- metadata: { tools: approvalTools },
518
- always: uniquePatterns,
519
- ruleset: [],
520
- }),
521
- )
522
- for (const name of uniqueNames) approvedToolsForSession.add(name)
523
- workflowModel.sessionPreapprovedTools = [...(workflowModel.sessionPreapprovedTools ?? []), ...uniqueNames]
524
- return { approved: true }
525
- } catch {
526
- return { approved: false }
527
- } finally {
528
- unsub?.()
529
- }
530
- })
531
- }
532
-
533
- const tracer = cfg.experimental?.openTelemetry
534
- ? Option.getOrUndefined(yield* Effect.serviceOption(OtelTracer.OtelTracer))
535
- : undefined
536
- const telemetryTracer = tracer
537
- ? new Proxy(tracer, {
538
- get(target, prop, receiver) {
539
- if (prop !== "startSpan") return Reflect.get(target, prop, receiver)
540
- return (...args: Parameters<typeof target.startSpan>) => {
541
- const span = target.startSpan(...args)
542
- span.setAttribute("session.id", input.sessionID)
543
- return span
544
- }
545
- },
546
- })
547
- : undefined
548
-
549
- const streamStartTs = Date.now()
550
- l.debug("streamText starting", {
551
- messageID: input.user.id,
552
- msgCount: messages.length,
553
- toolCount: Object.keys(tools).length,
554
- })
555
-
556
- return streamText({
557
- onError(error) {
558
- l.debug("streamText error", {
559
- messageID: input.user.id,
560
- error: error instanceof Error ? error.message : String(error),
561
- elapsedMs: Date.now() - streamStartTs,
562
- })
563
- l.error("stream error", {
564
- error,
565
- })
566
- },
567
- async experimental_repairToolCall(failed) {
568
- const registered = Object.keys(tools).filter((x) => x !== "invalid")
569
- const repaired = await ToolCompat.repairToolCall({
570
- toolName: failed.toolCall.toolName,
571
- input: failed.toolCall.input,
572
- toolNames: registered,
573
- getSchema: (toolName) => failed.inputSchema({ toolName }),
574
- })
575
- if (repaired) {
576
- l.info("repairing tool call", {
577
- tool: failed.toolCall.toolName,
578
- repaired: repaired.toolName,
579
- })
580
- return {
581
- ...failed.toolCall,
582
- toolName: repaired.toolName,
583
- input: repaired.input,
584
- }
585
- }
586
- return {
587
- ...failed.toolCall,
588
- input: JSON.stringify({
589
- tool: failed.toolCall.toolName,
590
- error: failed.error.message,
591
- }),
592
- toolName: "invalid",
593
- }
594
- },
595
- temperature: params.temperature,
596
- topP: params.topP,
597
- topK: params.topK,
598
- providerOptions: ProviderTransform.providerOptions(input.model, params.options),
599
- activeTools: Object.keys(tools).filter((x) => x !== "invalid"),
600
- tools: ProviderTransform.tools(tools, input.model),
601
- toolChoice: input.toolChoice,
602
- maxOutputTokens: params.maxOutputTokens,
603
- abortSignal: input.abort,
604
- headers: {
605
- "x-session-affinity": input.sessionID,
606
- ...(input.parentSessionID ? { "x-parent-session-id": input.parentSessionID } : {}),
607
- ...input.model.headers,
608
- ...headers,
609
- "User-Agent": `sleepycode/${InstallationVersion}`,
610
- },
611
- // AI SDK's internal retry loop is SILENT — it emits no events and does
612
- // not update session status, so the TUI shows only a dead spinner while
613
- // it runs. Its backoff is also UNCAPPED (delay *= 2 each attempt, capped
614
- // only by a retry-after header), so the prior default of 10 meant up to
615
- // ~34 min (2+4+…+1024s) of invisible retrying before the error surfaced.
616
- // We keep this layer short (absorb a couple of quick blips) and let the
617
- // VISIBLE processor-level SessionRetry.policy own long-haul resilience —
618
- // it publishes `type: "retry"` so the `[retrying attempt #N]` banner
619
- // shows, and its per-attempt delay is capped at 30s.
620
- maxRetries: input.retries ?? 2,
621
- messages,
622
- model: wrapLanguageModel({
623
- model: language,
624
- middleware: [
625
- {
626
- specificationVersion: "v3" as const,
627
- async transformParams(args) {
628
- if (args.type === "stream") {
629
- // @ts-expect-error
630
- args.params.prompt = ProviderTransform.message(args.params.prompt, input.model, options)
631
- }
632
- return args.params
633
- },
634
- },
635
- ],
636
- }),
637
- experimental_telemetry: {
638
- isEnabled: cfg.experimental?.openTelemetry,
639
- functionId: "session.llm",
640
- tracer: telemetryTracer,
641
- metadata: {
642
- userId: cfg.username ?? "unknown",
643
- sessionId: input.sessionID,
644
- },
645
- },
646
- })
647
- })
648
-
649
- const stream: Interface["stream"] = (input) =>
650
- Stream.scoped(
651
- Stream.unwrap(
652
- Effect.gen(function* () {
653
- const ctrl = yield* Effect.acquireRelease(
654
- Effect.sync(() => new AbortController()),
655
- (ctrl) => Effect.sync(() => ctrl.abort()),
656
- )
657
- const attemptRef = yield* Ref.make(0)
658
-
659
- const publishRetryEvent = (error: unknown, nextAttempt: number) =>
660
- Effect.gen(function* () {
661
- log.debug("retry attempt", {
662
- sessionID: input.sessionID,
663
- messageID: input.user.id,
664
- attempt: nextAttempt,
665
- reason: error instanceof Error ? error.message : String(error),
666
- })
667
- if (nextAttempt > 10) return
668
- const delayMs = Math.min(500 * 2 ** (nextAttempt - 1), 300_000)
669
- yield* Effect.promise(() =>
670
- Bus.publish(Session.Event.RetryAttempt, {
671
- sessionID: SessionID.make(input.sessionID),
672
- messageID: input.user.id,
673
- attempt: nextAttempt,
674
- maxAttempts: 10,
675
- reason: error instanceof Error ? error.message : String(error),
676
- nextDelayMs: delayMs,
677
- })
678
- )
679
- })
680
-
681
- const streamWithTelemetry = run({ ...input, abort: ctrl.signal }).pipe(
682
- Effect.tapError((error) => {
683
- if (!isTransientCapacityError(error)) return Effect.void
684
- return Ref.updateAndGet(attemptRef, (n) => n + 1).pipe(
685
- Effect.flatMap((nextAttempt) => publishRetryEvent(error, nextAttempt))
686
- )
687
- })
688
- )
689
-
690
- const result = yield* streamWithTelemetry.pipe(
691
- Effect.retry({
692
- while: isTransientCapacityError,
693
- schedule: persistentRetrySchedule,
694
- }),
695
- )
696
-
697
- return Stream.fromAsyncIterable(result.fullStream, (e) => (e instanceof Error ? e : new Error(String(e))))
698
- }),
699
- ),
700
- )
701
-
702
- return Service.of({ stream, buildSystemArray })
703
- }),
704
- )
705
-
706
- export const layer = live.pipe(Layer.provide(Permission.defaultLayer))
707
-
708
- export const defaultLayer = Layer.suspend(() =>
709
- layer.pipe(
710
- Layer.provide(Auth.defaultLayer),
711
- Layer.provide(Config.defaultLayer),
712
- Layer.provide(Provider.defaultLayer),
713
- Layer.provide(Plugin.defaultLayer),
714
- Layer.provide(ActorRegistry.defaultLayer),
715
- Layer.provide(Memory.defaultLayer),
716
- ),
717
- )
718
-
719
- function resolveTools(input: Pick<StreamInput, "tools" | "agent" | "permission" | "user">) {
720
- const disabled = Permission.disabled(
721
- Object.keys(input.tools),
722
- Agent.runtimePermission(input.agent, input.permission),
723
- )
724
- return Record.filter(input.tools, (_, k) => input.user.tools?.[k] !== false && !disabled.has(k))
725
- }
726
-
727
- // Check if messages contain any tool-call content
728
- // Used to determine if a dummy tool should be added for LiteLLM proxy compatibility
729
- export function hasToolCalls(messages: ModelMessage[]): boolean {
730
- for (const msg of messages) {
731
- if (!Array.isArray(msg.content)) continue
732
- for (const part of msg.content) {
733
- if (part.type === "tool-call" || part.type === "tool-result") return true
734
- }
735
- }
736
- return false
737
- }
738
-
739
- export * as LLM from "./llm"