@sleepy-ai/cli 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (799) hide show
  1. package/{src/skill/compose/LICENSE-superpowers → LICENSE} +3 -6
  2. package/README.md +139 -6
  3. package/package.json +35 -199
  4. package/postinstall.mjs +102 -0
  5. package/.sleepycode-test-fixtures-50158/sleepycode-test-eqsxv84ythu/.watcher-b67v64k2mnv +0 -1
  6. package/Dockerfile +0 -18
  7. package/drizzle.config.ts +0 -10
  8. package/git +0 -0
  9. package/migration/20260127222353_familiar_lady_ursula/migration.sql +0 -90
  10. package/migration/20260127222353_familiar_lady_ursula/snapshot.json +0 -796
  11. package/migration/20260211171708_add_project_commands/migration.sql +0 -1
  12. package/migration/20260211171708_add_project_commands/snapshot.json +0 -806
  13. package/migration/20260213144116_wakeful_the_professor/migration.sql +0 -11
  14. package/migration/20260213144116_wakeful_the_professor/snapshot.json +0 -897
  15. package/migration/20260225215848_workspace/migration.sql +0 -7
  16. package/migration/20260225215848_workspace/snapshot.json +0 -959
  17. package/migration/20260227213759_add_session_workspace_id/migration.sql +0 -2
  18. package/migration/20260227213759_add_session_workspace_id/snapshot.json +0 -983
  19. package/migration/20260228203230_blue_harpoon/migration.sql +0 -17
  20. package/migration/20260228203230_blue_harpoon/snapshot.json +0 -1102
  21. package/migration/20260303231226_add_workspace_fields/migration.sql +0 -5
  22. package/migration/20260303231226_add_workspace_fields/snapshot.json +0 -1013
  23. package/migration/20260309230000_move_org_to_state/migration.sql +0 -3
  24. package/migration/20260309230000_move_org_to_state/snapshot.json +0 -1156
  25. package/migration/20260312043431_session_message_cursor/migration.sql +0 -4
  26. package/migration/20260312043431_session_message_cursor/snapshot.json +0 -1168
  27. package/migration/20260323234822_events/migration.sql +0 -13
  28. package/migration/20260323234822_events/snapshot.json +0 -1271
  29. package/migration/20260410174513_workspace-name/migration.sql +0 -16
  30. package/migration/20260410174513_workspace-name/snapshot.json +0 -1271
  31. package/migration/20260413175956_chief_energizer/migration.sql +0 -13
  32. package/migration/20260413175956_chief_energizer/snapshot.json +0 -1399
  33. package/migration/20260422160000_context_inheritance/migration.sql +0 -3
  34. package/migration/20260422170000_task_registry/migration.sql +0 -18
  35. package/migration/20260423145421_remove_session_entry/migration.sql +0 -4
  36. package/migration/20260515000000_actor_rename/migration.sql +0 -7
  37. package/migration/20260515010000_memory_fts/migration.sql +0 -33
  38. package/migration/20260515020000_user_task/migration.sql +0 -29
  39. package/migration/20260519000000_last_checkpoint_message_id/migration.sql +0 -1
  40. package/migration/20260521000000_message_agent_id/migration.sql +0 -2
  41. package/migration/20260521000100_actor_registry_v6/migration.sql +0 -25
  42. package/migration/20260521010000_memory_fts_v6/migration.sql +0 -33
  43. package/migration/20260521020000_memory_fts_triggers/migration.sql +0 -17
  44. package/migration/20260526000000_agent_id_main/migration.sql +0 -14
  45. package/migration/20260527000000_actor_lifecycle/migration.sql +0 -8
  46. package/migration/20260527000100_inbox/migration.sql +0 -12
  47. package/migration/20260529000000_task_todo_redesign/migration.sql +0 -16
  48. package/migration/20260603000000_task_in_progress_owner/migration.sql +0 -1
  49. package/migration/20260603000000_workflow_run/migration.sql +0 -17
  50. package/migration/20260604000000_workflow_script_sha/migration.sql +0 -1
  51. package/migration/20260608000000_claude_import/migration.sql +0 -7
  52. package/migration/20260608010000_claude_import_message_ids/migration.sql +0 -1
  53. package/migration/20260609000000_history_fts/migration.sql +0 -29
  54. package/migration/20260609230000_workflow_agent_timeout/migration.sql +0 -1
  55. package/migration/20260612000000_external_import/migration.sql +0 -16
  56. package/parsers-config.ts +0 -290
  57. package/src/account/account.sql.ts +0 -39
  58. package/src/account/account.ts +0 -456
  59. package/src/account/repo.ts +0 -166
  60. package/src/account/schema.ts +0 -99
  61. package/src/account/url.ts +0 -8
  62. package/src/acp/README.md +0 -174
  63. package/src/acp/agent.ts +0 -1787
  64. package/src/acp/session.ts +0 -116
  65. package/src/acp/types.ts +0 -24
  66. package/src/actor/actor.sql.ts +0 -38
  67. package/src/actor/events.ts +0 -67
  68. package/src/actor/index.ts +0 -2
  69. package/src/actor/registry.ts +0 -412
  70. package/src/actor/return-header.ts +0 -24
  71. package/src/actor/schema.ts +0 -47
  72. package/src/actor/spawn-ref.ts +0 -16
  73. package/src/actor/spawn.ts +0 -756
  74. package/src/actor/turn.ts +0 -49
  75. package/src/actor/waiter.ts +0 -166
  76. package/src/agent/agent.ts +0 -574
  77. package/src/agent/config.ts +0 -5
  78. package/src/agent/generate.txt +0 -75
  79. package/src/agent/prompt/checkpoint-writer.txt +0 -167
  80. package/src/agent/prompt/compaction.txt +0 -9
  81. package/src/agent/prompt/distill.txt +0 -199
  82. package/src/agent/prompt/dream.txt +0 -155
  83. package/src/agent/prompt/explore.txt +0 -18
  84. package/src/agent/prompt/summary.txt +0 -11
  85. package/src/agent/prompt/title.txt +0 -44
  86. package/src/audio.d.ts +0 -9
  87. package/src/auth/index.ts +0 -97
  88. package/src/bus/bus-event.ts +0 -33
  89. package/src/bus/global.ts +0 -12
  90. package/src/bus/index.ts +0 -193
  91. package/src/cli/bootstrap.ts +0 -33
  92. package/src/cli/cmd/account.ts +0 -258
  93. package/src/cli/cmd/acp.ts +0 -70
  94. package/src/cli/cmd/agent.ts +0 -248
  95. package/src/cli/cmd/cmd.ts +0 -7
  96. package/src/cli/cmd/db.ts +0 -120
  97. package/src/cli/cmd/debug/agent.ts +0 -192
  98. package/src/cli/cmd/debug/config.ts +0 -17
  99. package/src/cli/cmd/debug/file.ts +0 -100
  100. package/src/cli/cmd/debug/index.ts +0 -48
  101. package/src/cli/cmd/debug/lsp.ts +0 -61
  102. package/src/cli/cmd/debug/ripgrep.ts +0 -105
  103. package/src/cli/cmd/debug/scrap.ts +0 -16
  104. package/src/cli/cmd/debug/skill.ts +0 -23
  105. package/src/cli/cmd/debug/snapshot.ts +0 -53
  106. package/src/cli/cmd/doctor.ts +0 -116
  107. package/src/cli/cmd/export.ts +0 -306
  108. package/src/cli/cmd/generate.ts +0 -50
  109. package/src/cli/cmd/github.ts +0 -1647
  110. package/src/cli/cmd/import.ts +0 -208
  111. package/src/cli/cmd/init.ts +0 -97
  112. package/src/cli/cmd/login.ts +0 -402
  113. package/src/cli/cmd/mcp.ts +0 -812
  114. package/src/cli/cmd/models.ts +0 -88
  115. package/src/cli/cmd/plug.ts +0 -233
  116. package/src/cli/cmd/pr.ts +0 -138
  117. package/src/cli/cmd/providers.ts +0 -713
  118. package/src/cli/cmd/run-completion.ts +0 -77
  119. package/src/cli/cmd/run.ts +0 -694
  120. package/src/cli/cmd/serve.ts +0 -30
  121. package/src/cli/cmd/session.ts +0 -181
  122. package/src/cli/cmd/stats.ts +0 -413
  123. package/src/cli/cmd/tui/app.tsx +0 -1181
  124. package/src/cli/cmd/tui/asset/TEN_VAD_LICENSE +0 -12
  125. package/src/cli/cmd/tui/asset/charge.wav +0 -0
  126. package/src/cli/cmd/tui/asset/pulse-a.wav +0 -0
  127. package/src/cli/cmd/tui/asset/pulse-b.wav +0 -0
  128. package/src/cli/cmd/tui/asset/pulse-c.wav +0 -0
  129. package/src/cli/cmd/tui/asset/ten_vad.wasm +0 -0
  130. package/src/cli/cmd/tui/asset/ten_vad_loader.js +0 -30
  131. package/src/cli/cmd/tui/attach.ts +0 -84
  132. package/src/cli/cmd/tui/component/background-image.tsx +0 -150
  133. package/src/cli/cmd/tui/component/banner-session-expired.tsx +0 -48
  134. package/src/cli/cmd/tui/component/bg-pulse.tsx +0 -130
  135. package/src/cli/cmd/tui/component/border.tsx +0 -21
  136. package/src/cli/cmd/tui/component/dialog-agent.tsx +0 -31
  137. package/src/cli/cmd/tui/component/dialog-agreement.tsx +0 -111
  138. package/src/cli/cmd/tui/component/dialog-command.tsx +0 -219
  139. package/src/cli/cmd/tui/component/dialog-console-org.tsx +0 -103
  140. package/src/cli/cmd/tui/component/dialog-go-upsell.tsx +0 -157
  141. package/src/cli/cmd/tui/component/dialog-image-list.tsx +0 -111
  142. package/src/cli/cmd/tui/component/dialog-logo-design.tsx +0 -37
  143. package/src/cli/cmd/tui/component/dialog-mcp.tsx +0 -86
  144. package/src/cli/cmd/tui/component/dialog-model.tsx +0 -299
  145. package/src/cli/cmd/tui/component/dialog-provider.tsx +0 -449
  146. package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +0 -101
  147. package/src/cli/cmd/tui/component/dialog-session-list.tsx +0 -269
  148. package/src/cli/cmd/tui/component/dialog-session-rename.tsx +0 -31
  149. package/src/cli/cmd/tui/component/dialog-skill.tsx +0 -42
  150. package/src/cli/cmd/tui/component/dialog-sleepy-login.tsx +0 -288
  151. package/src/cli/cmd/tui/component/dialog-stash.tsx +0 -87
  152. package/src/cli/cmd/tui/component/dialog-status.tsx +0 -170
  153. package/src/cli/cmd/tui/component/dialog-tag.tsx +0 -44
  154. package/src/cli/cmd/tui/component/dialog-theme-list.tsx +0 -50
  155. package/src/cli/cmd/tui/component/dialog-token-plan.tsx +0 -77
  156. package/src/cli/cmd/tui/component/dialog-variant.tsx +0 -39
  157. package/src/cli/cmd/tui/component/dialog-workflows.tsx +0 -51
  158. package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +0 -289
  159. package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +0 -81
  160. package/src/cli/cmd/tui/component/dialog-worktree.tsx +0 -90
  161. package/src/cli/cmd/tui/component/error-component.tsx +0 -92
  162. package/src/cli/cmd/tui/component/logo.tsx +0 -961
  163. package/src/cli/cmd/tui/component/plugin-route-missing.tsx +0 -14
  164. package/src/cli/cmd/tui/component/prompt/autocomplete-detect.ts +0 -34
  165. package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +0 -668
  166. package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
  167. package/src/cli/cmd/tui/component/prompt/frecency.tsx +0 -90
  168. package/src/cli/cmd/tui/component/prompt/history.tsx +0 -108
  169. package/src/cli/cmd/tui/component/prompt/index.tsx +0 -1869
  170. package/src/cli/cmd/tui/component/prompt/offset.ts +0 -45
  171. package/src/cli/cmd/tui/component/prompt/part.ts +0 -36
  172. package/src/cli/cmd/tui/component/prompt/stash.tsx +0 -101
  173. package/src/cli/cmd/tui/component/spinner.tsx +0 -24
  174. package/src/cli/cmd/tui/component/starry-background.tsx +0 -305
  175. package/src/cli/cmd/tui/component/startup-loading.tsx +0 -67
  176. package/src/cli/cmd/tui/component/task-item.tsx +0 -63
  177. package/src/cli/cmd/tui/component/textarea-keybindings.ts +0 -73
  178. package/src/cli/cmd/tui/component/todo-item.tsx +0 -32
  179. package/src/cli/cmd/tui/component/workflow-tree.tsx +0 -177
  180. package/src/cli/cmd/tui/config/cwd.ts +0 -5
  181. package/src/cli/cmd/tui/config/tui-migrate.ts +0 -151
  182. package/src/cli/cmd/tui/config/tui-schema.ts +0 -38
  183. package/src/cli/cmd/tui/config/tui.ts +0 -219
  184. package/src/cli/cmd/tui/context/args.tsx +0 -16
  185. package/src/cli/cmd/tui/context/directory.ts +0 -15
  186. package/src/cli/cmd/tui/context/event.ts +0 -45
  187. package/src/cli/cmd/tui/context/exit.tsx +0 -65
  188. package/src/cli/cmd/tui/context/helper.tsx +0 -25
  189. package/src/cli/cmd/tui/context/keybind.tsx +0 -105
  190. package/src/cli/cmd/tui/context/kv.tsx +0 -86
  191. package/src/cli/cmd/tui/context/language.tsx +0 -91
  192. package/src/cli/cmd/tui/context/local.tsx +0 -469
  193. package/src/cli/cmd/tui/context/plugin-keybinds.ts +0 -41
  194. package/src/cli/cmd/tui/context/project.tsx +0 -109
  195. package/src/cli/cmd/tui/context/prompt.tsx +0 -18
  196. package/src/cli/cmd/tui/context/route.tsx +0 -68
  197. package/src/cli/cmd/tui/context/sdk.tsx +0 -150
  198. package/src/cli/cmd/tui/context/sync.tsx +0 -884
  199. package/src/cli/cmd/tui/context/theme/aura.json +0 -69
  200. package/src/cli/cmd/tui/context/theme/ayu.json +0 -80
  201. package/src/cli/cmd/tui/context/theme/carbonfox.json +0 -248
  202. package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +0 -230
  203. package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +0 -230
  204. package/src/cli/cmd/tui/context/theme/catppuccin.json +0 -112
  205. package/src/cli/cmd/tui/context/theme/cobalt2.json +0 -225
  206. package/src/cli/cmd/tui/context/theme/cursor.json +0 -249
  207. package/src/cli/cmd/tui/context/theme/dracula.json +0 -219
  208. package/src/cli/cmd/tui/context/theme/everforest.json +0 -241
  209. package/src/cli/cmd/tui/context/theme/flexoki.json +0 -237
  210. package/src/cli/cmd/tui/context/theme/github.json +0 -233
  211. package/src/cli/cmd/tui/context/theme/gruvbox.json +0 -242
  212. package/src/cli/cmd/tui/context/theme/kanagawa.json +0 -77
  213. package/src/cli/cmd/tui/context/theme/lucent-orng.json +0 -234
  214. package/src/cli/cmd/tui/context/theme/material.json +0 -235
  215. package/src/cli/cmd/tui/context/theme/matrix.json +0 -77
  216. package/src/cli/cmd/tui/context/theme/mercury.json +0 -252
  217. package/src/cli/cmd/tui/context/theme/monokai.json +0 -221
  218. package/src/cli/cmd/tui/context/theme/nightowl.json +0 -221
  219. package/src/cli/cmd/tui/context/theme/nord.json +0 -223
  220. package/src/cli/cmd/tui/context/theme/one-dark.json +0 -84
  221. package/src/cli/cmd/tui/context/theme/orng.json +0 -249
  222. package/src/cli/cmd/tui/context/theme/osaka-jade.json +0 -93
  223. package/src/cli/cmd/tui/context/theme/palenight.json +0 -222
  224. package/src/cli/cmd/tui/context/theme/rosepine.json +0 -234
  225. package/src/cli/cmd/tui/context/theme/sleepycode.json +0 -245
  226. package/src/cli/cmd/tui/context/theme/solarized.json +0 -223
  227. package/src/cli/cmd/tui/context/theme/synthwave84.json +0 -226
  228. package/src/cli/cmd/tui/context/theme/tokyonight.json +0 -243
  229. package/src/cli/cmd/tui/context/theme/vercel.json +0 -245
  230. package/src/cli/cmd/tui/context/theme/vesper.json +0 -218
  231. package/src/cli/cmd/tui/context/theme/zenburn.json +0 -223
  232. package/src/cli/cmd/tui/context/theme.tsx +0 -1298
  233. package/src/cli/cmd/tui/context/thinking.ts +0 -48
  234. package/src/cli/cmd/tui/context/tui-config.tsx +0 -9
  235. package/src/cli/cmd/tui/event.ts +0 -62
  236. package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +0 -93
  237. package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +0 -193
  238. package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +0 -54
  239. package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +0 -267
  240. package/src/cli/cmd/tui/feature-plugins/sidebar/cwd.tsx +0 -45
  241. package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +0 -62
  242. package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +0 -93
  243. package/src/cli/cmd/tui/feature-plugins/sidebar/goal.tsx +0 -84
  244. package/src/cli/cmd/tui/feature-plugins/sidebar/instructions.tsx +0 -54
  245. package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +0 -66
  246. package/src/cli/cmd/tui/feature-plugins/sidebar/mascot.tsx +0 -69
  247. package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +0 -98
  248. package/src/cli/cmd/tui/feature-plugins/sidebar/task.tsx +0 -95
  249. package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +0 -51
  250. package/src/cli/cmd/tui/feature-plugins/sidebar/tps.ts +0 -31
  251. package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +0 -274
  252. package/src/cli/cmd/tui/i18n/en.ts +0 -465
  253. package/src/cli/cmd/tui/i18n/es.ts +0 -508
  254. package/src/cli/cmd/tui/i18n/fr.ts +0 -515
  255. package/src/cli/cmd/tui/i18n/ja.ts +0 -463
  256. package/src/cli/cmd/tui/i18n/locales.ts +0 -82
  257. package/src/cli/cmd/tui/i18n/ru.ts +0 -527
  258. package/src/cli/cmd/tui/i18n/slash-command.ts +0 -11
  259. package/src/cli/cmd/tui/i18n/zh.ts +0 -454
  260. package/src/cli/cmd/tui/i18n/zht.ts +0 -430
  261. package/src/cli/cmd/tui/layer.ts +0 -6
  262. package/src/cli/cmd/tui/plugin/api.tsx +0 -402
  263. package/src/cli/cmd/tui/plugin/index.ts +0 -3
  264. package/src/cli/cmd/tui/plugin/internal.ts +0 -37
  265. package/src/cli/cmd/tui/plugin/runtime.ts +0 -1057
  266. package/src/cli/cmd/tui/plugin/slots.tsx +0 -60
  267. package/src/cli/cmd/tui/routes/home.tsx +0 -165
  268. package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +0 -76
  269. package/src/cli/cmd/tui/routes/session/dialog-message.tsx +0 -116
  270. package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +0 -47
  271. package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +0 -47
  272. package/src/cli/cmd/tui/routes/session/footer.tsx +0 -91
  273. package/src/cli/cmd/tui/routes/session/index.tsx +0 -3073
  274. package/src/cli/cmd/tui/routes/session/permission.tsx +0 -697
  275. package/src/cli/cmd/tui/routes/session/question.tsx +0 -488
  276. package/src/cli/cmd/tui/routes/session/sidebar.tsx +0 -97
  277. package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +0 -143
  278. package/src/cli/cmd/tui/thread.ts +0 -324
  279. package/src/cli/cmd/tui/ui/dialog-alert.tsx +0 -61
  280. package/src/cli/cmd/tui/ui/dialog-confirm.tsx +0 -95
  281. package/src/cli/cmd/tui/ui/dialog-export-options.tsx +0 -223
  282. package/src/cli/cmd/tui/ui/dialog-help.tsx +0 -42
  283. package/src/cli/cmd/tui/ui/dialog-prompt.tsx +0 -123
  284. package/src/cli/cmd/tui/ui/dialog-select.tsx +0 -467
  285. package/src/cli/cmd/tui/ui/dialog.tsx +0 -207
  286. package/src/cli/cmd/tui/ui/link.tsx +0 -28
  287. package/src/cli/cmd/tui/ui/spinner.ts +0 -378
  288. package/src/cli/cmd/tui/ui/toast.tsx +0 -102
  289. package/src/cli/cmd/tui/util/clipboard.ts +0 -203
  290. package/src/cli/cmd/tui/util/editor.ts +0 -36
  291. package/src/cli/cmd/tui/util/image-protocol.ts +0 -35
  292. package/src/cli/cmd/tui/util/index.ts +0 -6
  293. package/src/cli/cmd/tui/util/model.ts +0 -23
  294. package/src/cli/cmd/tui/util/pinyin.ts +0 -20
  295. package/src/cli/cmd/tui/util/provider-origin.ts +0 -7
  296. package/src/cli/cmd/tui/util/revert-diff.ts +0 -18
  297. package/src/cli/cmd/tui/util/scroll.ts +0 -23
  298. package/src/cli/cmd/tui/util/selection.ts +0 -23
  299. package/src/cli/cmd/tui/util/signal.ts +0 -41
  300. package/src/cli/cmd/tui/util/sound.ts +0 -154
  301. package/src/cli/cmd/tui/util/system-locale.ts +0 -209
  302. package/src/cli/cmd/tui/util/terminal.ts +0 -110
  303. package/src/cli/cmd/tui/util/transcript.ts +0 -112
  304. package/src/cli/cmd/tui/util/vad.ts +0 -229
  305. package/src/cli/cmd/tui/util/voice.ts +0 -450
  306. package/src/cli/cmd/tui/win32.ts +0 -130
  307. package/src/cli/cmd/tui/worker.ts +0 -104
  308. package/src/cli/cmd/uninstall.ts +0 -351
  309. package/src/cli/cmd/upgrade.ts +0 -79
  310. package/src/cli/cmd/web.ts +0 -96
  311. package/src/cli/effect/prompt.ts +0 -25
  312. package/src/cli/error.ts +0 -82
  313. package/src/cli/heap.ts +0 -59
  314. package/src/cli/i18n.ts +0 -15
  315. package/src/cli/logo.ts +0 -53
  316. package/src/cli/network.ts +0 -68
  317. package/src/cli/ui.ts +0 -133
  318. package/src/cli/upgrade.ts +0 -41
  319. package/src/command/index.ts +0 -276
  320. package/src/command/template/initialize.txt +0 -66
  321. package/src/command/template/review.txt +0 -101
  322. package/src/config/agent.ts +0 -197
  323. package/src/config/command.ts +0 -69
  324. package/src/config/compose.ts +0 -26
  325. package/src/config/config.ts +0 -1047
  326. package/src/config/console-state.ts +0 -16
  327. package/src/config/entry-name.ts +0 -16
  328. package/src/config/error.ts +0 -21
  329. package/src/config/formatter.ts +0 -17
  330. package/src/config/history.ts +0 -21
  331. package/src/config/index.ts +0 -17
  332. package/src/config/keybinds.ts +0 -127
  333. package/src/config/layout.ts +0 -10
  334. package/src/config/lsp.ts +0 -45
  335. package/src/config/managed.ts +0 -70
  336. package/src/config/markdown.ts +0 -97
  337. package/src/config/mcp.ts +0 -172
  338. package/src/config/model-id.ts +0 -14
  339. package/src/config/parse.ts +0 -44
  340. package/src/config/paths.ts +0 -85
  341. package/src/config/permission.ts +0 -76
  342. package/src/config/plugin.ts +0 -88
  343. package/src/config/provider.ts +0 -118
  344. package/src/config/server.ts +0 -20
  345. package/src/config/skills.ts +0 -16
  346. package/src/config/variable.ts +0 -90
  347. package/src/control-plane/adaptors/index.ts +0 -52
  348. package/src/control-plane/adaptors/worktree.ts +0 -47
  349. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  350. package/src/control-plane/schema.ts +0 -19
  351. package/src/control-plane/sse.ts +0 -66
  352. package/src/control-plane/types.ts +0 -34
  353. package/src/control-plane/util.ts +0 -37
  354. package/src/control-plane/workspace-context.ts +0 -26
  355. package/src/control-plane/workspace.sql.ts +0 -17
  356. package/src/control-plane/workspace.ts +0 -615
  357. package/src/effect/app-runtime.ts +0 -146
  358. package/src/effect/bootstrap-runtime.ts +0 -33
  359. package/src/effect/bridge.ts +0 -48
  360. package/src/effect/cross-spawn-spawner.ts +0 -514
  361. package/src/effect/index.ts +0 -5
  362. package/src/effect/instance-ref.ts +0 -11
  363. package/src/effect/instance-registry.ts +0 -12
  364. package/src/effect/instance-state.ts +0 -81
  365. package/src/effect/logger.ts +0 -73
  366. package/src/effect/memo-map.ts +0 -3
  367. package/src/effect/observability.ts +0 -107
  368. package/src/effect/run-service.ts +0 -52
  369. package/src/effect/runner.ts +0 -210
  370. package/src/effect/runtime.ts +0 -19
  371. package/src/env/index.ts +0 -37
  372. package/src/file/ignore.ts +0 -81
  373. package/src/file/index.ts +0 -664
  374. package/src/file/protected.ts +0 -59
  375. package/src/file/ripgrep.ts +0 -485
  376. package/src/file/watcher.ts +0 -163
  377. package/src/flag/flag.ts +0 -185
  378. package/src/format/formatter.ts +0 -403
  379. package/src/format/index.ts +0 -203
  380. package/src/git/index.ts +0 -260
  381. package/src/global/index.ts +0 -54
  382. package/src/history/backfill.ts +0 -162
  383. package/src/history/extract.ts +0 -67
  384. package/src/history/fts-query.ts +0 -15
  385. package/src/history/fts.sql.ts +0 -20
  386. package/src/history/index.ts +0 -10
  387. package/src/history/resolve.ts +0 -65
  388. package/src/history/service.ts +0 -258
  389. package/src/history/writer.ts +0 -112
  390. package/src/id/id.ts +0 -87
  391. package/src/ide/index.ts +0 -73
  392. package/src/inbox/inbox-ref.ts +0 -38
  393. package/src/inbox/inbox.sql.ts +0 -26
  394. package/src/inbox/inbox.ts +0 -223
  395. package/src/inbox/index.ts +0 -3
  396. package/src/inbox/render.ts +0 -40
  397. package/src/index.ts +0 -268
  398. package/src/installation/index.ts +0 -362
  399. package/src/installation/version.ts +0 -8
  400. package/src/lsp/client.ts +0 -249
  401. package/src/lsp/diagnostic.ts +0 -29
  402. package/src/lsp/index.ts +0 -3
  403. package/src/lsp/language.ts +0 -120
  404. package/src/lsp/launch.ts +0 -21
  405. package/src/lsp/lsp.ts +0 -519
  406. package/src/lsp/server.ts +0 -1956
  407. package/src/mcp/auth.ts +0 -144
  408. package/src/mcp/index.ts +0 -939
  409. package/src/mcp/oauth-callback.ts +0 -236
  410. package/src/mcp/oauth-provider.ts +0 -214
  411. package/src/memory/fts-query.ts +0 -37
  412. package/src/memory/fts.sql.ts +0 -19
  413. package/src/memory/index.ts +0 -1
  414. package/src/memory/paths.ts +0 -116
  415. package/src/memory/reconcile.ts +0 -144
  416. package/src/memory/service.ts +0 -144
  417. package/src/metrics/client.ts +0 -40
  418. package/src/metrics/event.ts +0 -43
  419. package/src/metrics/index.ts +0 -5
  420. package/src/metrics/installation.ts +0 -18
  421. package/src/metrics/subscriber.ts +0 -58
  422. package/src/metrics/util.ts +0 -9
  423. package/src/node.ts +0 -6
  424. package/src/npm/config.ts +0 -0
  425. package/src/npm/index.ts +0 -293
  426. package/src/npmcli-config.d.ts +0 -43
  427. package/src/patch/index.ts +0 -680
  428. package/src/permission/arity.ts +0 -163
  429. package/src/permission/evaluate.ts +0 -15
  430. package/src/permission/index.ts +0 -382
  431. package/src/permission/schema.ts +0 -17
  432. package/src/plugin/checkpoint-splitover.ts +0 -60
  433. package/src/plugin/cloudflare.ts +0 -76
  434. package/src/plugin/codex.ts +0 -611
  435. package/src/plugin/github-copilot/copilot.ts +0 -368
  436. package/src/plugin/github-copilot/models.ts +0 -153
  437. package/src/plugin/index.ts +0 -637
  438. package/src/plugin/install.ts +0 -439
  439. package/src/plugin/loader.ts +0 -216
  440. package/src/plugin/matcher.ts +0 -33
  441. package/src/plugin/meta.ts +0 -188
  442. package/src/plugin/shared.ts +0 -323
  443. package/src/plugin/sleepy.ts +0 -244
  444. package/src/plugin/subagent-progress-checker.ts +0 -147
  445. package/src/project/bootstrap.ts +0 -59
  446. package/src/project/index.ts +0 -2
  447. package/src/project/instance.ts +0 -215
  448. package/src/project/project-id.ts +0 -48
  449. package/src/project/project.sql.ts +0 -16
  450. package/src/project/project.ts +0 -522
  451. package/src/project/schema.ts +0 -15
  452. package/src/project/vcs.ts +0 -227
  453. package/src/project/workspace-trust.ts +0 -67
  454. package/src/provider/auth.ts +0 -234
  455. package/src/provider/error.ts +0 -216
  456. package/src/provider/index.ts +0 -5
  457. package/src/provider/models-snapshot.d.ts +0 -2
  458. package/src/provider/models-snapshot.js +0 -3
  459. package/src/provider/models.ts +0 -180
  460. package/src/provider/provider.ts +0 -2098
  461. package/src/provider/schema.ts +0 -36
  462. package/src/provider/sdk/copilot/README.md +0 -5
  463. package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
  464. package/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
  465. package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
  466. package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
  467. package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
  468. package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
  469. package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
  470. package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
  471. package/src/provider/sdk/copilot/copilot-provider.ts +0 -100
  472. package/src/provider/sdk/copilot/index.ts +0 -2
  473. package/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
  474. package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
  475. package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
  476. package/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
  477. package/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
  478. package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
  479. package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1770
  480. package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
  481. package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
  482. package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
  483. package/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
  484. package/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
  485. package/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
  486. package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
  487. package/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
  488. package/src/provider/session-check.ts +0 -163
  489. package/src/provider/transform.ts +0 -1376
  490. package/src/pty/index.ts +0 -364
  491. package/src/pty/pty.bun.ts +0 -26
  492. package/src/pty/pty.node.ts +0 -27
  493. package/src/pty/pty.ts +0 -25
  494. package/src/pty/schema.ts +0 -17
  495. package/src/question/index.ts +0 -252
  496. package/src/question/schema.ts +0 -17
  497. package/src/server/adapter.bun.ts +0 -40
  498. package/src/server/adapter.node.ts +0 -66
  499. package/src/server/adapter.ts +0 -21
  500. package/src/server/auth.ts +0 -16
  501. package/src/server/error.ts +0 -53
  502. package/src/server/event.ts +0 -7
  503. package/src/server/fence.ts +0 -81
  504. package/src/server/mdns.ts +0 -60
  505. package/src/server/middleware.ts +0 -94
  506. package/src/server/projectors.ts +0 -28
  507. package/src/server/proxy.ts +0 -171
  508. package/src/server/pty-ticket.ts +0 -42
  509. package/src/server/rate-limit.ts +0 -38
  510. package/src/server/routes/control/index.ts +0 -160
  511. package/src/server/routes/control/workspace.ts +0 -203
  512. package/src/server/routes/global.ts +0 -367
  513. package/src/server/routes/instance/bash-interactive.ts +0 -82
  514. package/src/server/routes/instance/config.ts +0 -89
  515. package/src/server/routes/instance/event.ts +0 -108
  516. package/src/server/routes/instance/experimental.ts +0 -408
  517. package/src/server/routes/instance/file.ts +0 -190
  518. package/src/server/routes/instance/httpapi/config.ts +0 -51
  519. package/src/server/routes/instance/httpapi/permission.ts +0 -72
  520. package/src/server/routes/instance/httpapi/project.ts +0 -62
  521. package/src/server/routes/instance/httpapi/provider.ts +0 -142
  522. package/src/server/routes/instance/httpapi/question.ts +0 -121
  523. package/src/server/routes/instance/httpapi/server.ts +0 -153
  524. package/src/server/routes/instance/index.ts +0 -301
  525. package/src/server/routes/instance/mcp.ts +0 -260
  526. package/src/server/routes/instance/middleware.ts +0 -44
  527. package/src/server/routes/instance/permission.ts +0 -73
  528. package/src/server/routes/instance/project.ts +0 -122
  529. package/src/server/routes/instance/provider.ts +0 -158
  530. package/src/server/routes/instance/pty.ts +0 -302
  531. package/src/server/routes/instance/question.ts +0 -162
  532. package/src/server/routes/instance/session.ts +0 -1328
  533. package/src/server/routes/instance/sync.ts +0 -143
  534. package/src/server/routes/instance/trace.ts +0 -59
  535. package/src/server/routes/instance/tui.ts +0 -384
  536. package/src/server/routes/instance/workflows.ts +0 -142
  537. package/src/server/routes/ui.ts +0 -37
  538. package/src/server/server.ts +0 -146
  539. package/src/server/workspace.ts +0 -122
  540. package/src/session/auto-dream.ts +0 -123
  541. package/src/session/boundary.ts +0 -77
  542. package/src/session/budgeted-read.ts +0 -118
  543. package/src/session/checkpoint-align.ts +0 -29
  544. package/src/session/checkpoint-context.ts +0 -36
  545. package/src/session/checkpoint-paths.ts +0 -86
  546. package/src/session/checkpoint-progress-reconcile.ts +0 -111
  547. package/src/session/checkpoint-retry.ts +0 -192
  548. package/src/session/checkpoint-templates.ts +0 -114
  549. package/src/session/checkpoint-validator.ts +0 -259
  550. package/src/session/checkpoint.ts +0 -1560
  551. package/src/session/classify.ts +0 -117
  552. package/src/session/claude-import.ts +0 -381
  553. package/src/session/codex-import.ts +0 -416
  554. package/src/session/compaction.ts +0 -545
  555. package/src/session/external-import.sql.ts +0 -18
  556. package/src/session/external-import.ts +0 -136
  557. package/src/session/goal.ts +0 -232
  558. package/src/session/index.ts +0 -1
  559. package/src/session/instruction.ts +0 -276
  560. package/src/session/last-message-info.ts +0 -32
  561. package/src/session/llm-request-prefix.ts +0 -82
  562. package/src/session/llm.ts +0 -737
  563. package/src/session/max-mode.ts +0 -410
  564. package/src/session/message-v2.ts +0 -1138
  565. package/src/session/message.ts +0 -191
  566. package/src/session/opencode-import.ts +0 -281
  567. package/src/session/overflow.ts +0 -53
  568. package/src/session/prefix-capture-ref.ts +0 -48
  569. package/src/session/processor.ts +0 -983
  570. package/src/session/projectors.ts +0 -137
  571. package/src/session/prompt/anthropic.txt +0 -154
  572. package/src/session/prompt/beast.txt +0 -155
  573. package/src/session/prompt/build-switch.txt +0 -5
  574. package/src/session/prompt/codex.txt +0 -79
  575. package/src/session/prompt/compose.txt +0 -119
  576. package/src/session/prompt/copilot-gpt-5.txt +0 -143
  577. package/src/session/prompt/deepseek.txt +0 -131
  578. package/src/session/prompt/default.old.txt +0 -151
  579. package/src/session/prompt/default.txt +0 -172
  580. package/src/session/prompt/gemini.txt +0 -155
  581. package/src/session/prompt/glm.txt +0 -51
  582. package/src/session/prompt/gpt.txt +0 -107
  583. package/src/session/prompt/kimi.txt +0 -95
  584. package/src/session/prompt/max-steps.txt +0 -16
  585. package/src/session/prompt/minimax.txt +0 -140
  586. package/src/session/prompt/text-loop-recovery.ts +0 -40
  587. package/src/session/prompt/text-ngram-detection.ts +0 -87
  588. package/src/session/prompt/trinity.txt +0 -97
  589. package/src/session/prompt.ts +0 -3878
  590. package/src/session/prune.ts +0 -481
  591. package/src/session/retry.ts +0 -178
  592. package/src/session/revert.ts +0 -161
  593. package/src/session/run-state.ts +0 -135
  594. package/src/session/schema.ts +0 -36
  595. package/src/session/session.sql.ts +0 -110
  596. package/src/session/session.ts +0 -908
  597. package/src/session/status.ts +0 -89
  598. package/src/session/summary.ts +0 -163
  599. package/src/session/system.ts +0 -96
  600. package/src/session/todo.ts +0 -77
  601. package/src/session/trajectory.ts +0 -98
  602. package/src/share/index.ts +0 -2
  603. package/src/share/session.ts +0 -57
  604. package/src/share/share-next.ts +0 -381
  605. package/src/share/share.sql.ts +0 -13
  606. package/src/shell/shell.ts +0 -124
  607. package/src/skill/builtin/.bundle/self-extend/SKILL.md +0 -131
  608. package/src/skill/builtin/.bundle/self-extend/reference/hook-api.md +0 -242
  609. package/src/skill/builtin/.bundle/self-extend/reference/skill-api.md +0 -114
  610. package/src/skill/builtin/.bundle/self-extend/reference/tool-api.md +0 -115
  611. package/src/skill/builtin/.bundle/self-extend/reference/tui-api.md +0 -258
  612. package/src/skill/builtin/bundle.macro.ts +0 -30
  613. package/src/skill/builtin/extract.ts +0 -41
  614. package/src/skill/compose/.bundle/ask/SKILL.md +0 -58
  615. package/src/skill/compose/.bundle/brainstorm/SKILL.md +0 -200
  616. package/src/skill/compose/.bundle/brainstorm/scripts/frame-template.html +0 -214
  617. package/src/skill/compose/.bundle/brainstorm/scripts/helper.js +0 -88
  618. package/src/skill/compose/.bundle/brainstorm/scripts/server.cjs +0 -354
  619. package/src/skill/compose/.bundle/brainstorm/scripts/start-server.sh +0 -148
  620. package/src/skill/compose/.bundle/brainstorm/scripts/stop-server.sh +0 -56
  621. package/src/skill/compose/.bundle/brainstorm/spec-document-reviewer-prompt.md +0 -50
  622. package/src/skill/compose/.bundle/brainstorm/visual-companion.md +0 -258
  623. package/src/skill/compose/.bundle/debug/CREATION-LOG.md +0 -119
  624. package/src/skill/compose/.bundle/debug/SKILL.md +0 -297
  625. package/src/skill/compose/.bundle/debug/condition-based-waiting-example.ts +0 -158
  626. package/src/skill/compose/.bundle/debug/condition-based-waiting.md +0 -106
  627. package/src/skill/compose/.bundle/debug/defense-in-depth.md +0 -122
  628. package/src/skill/compose/.bundle/debug/find-polluter.sh +0 -63
  629. package/src/skill/compose/.bundle/debug/root-cause-tracing.md +0 -144
  630. package/src/skill/compose/.bundle/debug/test-academic.md +0 -14
  631. package/src/skill/compose/.bundle/debug/test-pressure-1.md +0 -58
  632. package/src/skill/compose/.bundle/debug/test-pressure-2.md +0 -68
  633. package/src/skill/compose/.bundle/debug/test-pressure-3.md +0 -69
  634. package/src/skill/compose/.bundle/execute/SKILL.md +0 -71
  635. package/src/skill/compose/.bundle/feedback/SKILL.md +0 -214
  636. package/src/skill/compose/.bundle/merge/SKILL.md +0 -252
  637. package/src/skill/compose/.bundle/new-skill/SKILL.md +0 -211
  638. package/src/skill/compose/.bundle/parallel/SKILL.md +0 -168
  639. package/src/skill/compose/.bundle/plan/SKILL.md +0 -183
  640. package/src/skill/compose/.bundle/plan/plan-document-reviewer-prompt.md +0 -50
  641. package/src/skill/compose/.bundle/report/SKILL.md +0 -180
  642. package/src/skill/compose/.bundle/review/SKILL.md +0 -104
  643. package/src/skill/compose/.bundle/review/code-reviewer.md +0 -178
  644. package/src/skill/compose/.bundle/subagent/SKILL.md +0 -325
  645. package/src/skill/compose/.bundle/subagent/code-quality-reviewer-prompt.md +0 -26
  646. package/src/skill/compose/.bundle/subagent/implementer-prompt.md +0 -128
  647. package/src/skill/compose/.bundle/subagent/spec-reviewer-prompt.md +0 -118
  648. package/src/skill/compose/.bundle/tdd/SKILL.md +0 -360
  649. package/src/skill/compose/.bundle/tdd/testing-anti-patterns.md +0 -299
  650. package/src/skill/compose/.bundle/verify/SKILL.md +0 -140
  651. package/src/skill/compose/.bundle/worktree/SKILL.md +0 -234
  652. package/src/skill/compose/LICENSE-karpathy +0 -28
  653. package/src/skill/compose/bundle.macro.ts +0 -30
  654. package/src/skill/compose/extract.ts +0 -85
  655. package/src/skill/discovery.ts +0 -114
  656. package/src/skill/index.ts +0 -328
  657. package/src/snapshot/index.ts +0 -777
  658. package/src/sql.d.ts +0 -4
  659. package/src/storage/db.bun.ts +0 -8
  660. package/src/storage/db.node.ts +0 -8
  661. package/src/storage/db.ts +0 -172
  662. package/src/storage/index.ts +0 -26
  663. package/src/storage/json-migration.ts +0 -426
  664. package/src/storage/read-sqlite.bun.ts +0 -11
  665. package/src/storage/read-sqlite.node.ts +0 -13
  666. package/src/storage/read-sqlite.ts +0 -10
  667. package/src/storage/schema.sql.ts +0 -10
  668. package/src/storage/schema.ts +0 -7
  669. package/src/storage/storage.ts +0 -331
  670. package/src/sync/README.md +0 -179
  671. package/src/sync/event.sql.ts +0 -16
  672. package/src/sync/index.ts +0 -278
  673. package/src/sync/schema.ts +0 -14
  674. package/src/task/events.ts +0 -28
  675. package/src/task/gate-state.ts +0 -54
  676. package/src/task/gate.ts +0 -116
  677. package/src/task/index.ts +0 -1
  678. package/src/task/registry.ts +0 -394
  679. package/src/task/schema.ts +0 -43
  680. package/src/task/task.sql.ts +0 -50
  681. package/src/team/events.ts +0 -22
  682. package/src/team/index.ts +0 -113
  683. package/src/team/schema.ts +0 -31
  684. package/src/temporary.ts +0 -33
  685. package/src/tool/actor.shell.txt +0 -72
  686. package/src/tool/actor.ts +0 -804
  687. package/src/tool/actor.txt +0 -103
  688. package/src/tool/apply_patch.ts +0 -308
  689. package/src/tool/apply_patch.txt +0 -33
  690. package/src/tool/bash-interactive.ts +0 -183
  691. package/src/tool/bash.ts +0 -704
  692. package/src/tool/bash.txt +0 -123
  693. package/src/tool/change-directory.ts +0 -91
  694. package/src/tool/codesearch.ts +0 -63
  695. package/src/tool/codesearch.txt +0 -12
  696. package/src/tool/edit.ts +0 -693
  697. package/src/tool/edit.txt +0 -10
  698. package/src/tool/external-directory.ts +0 -132
  699. package/src/tool/glob.ts +0 -100
  700. package/src/tool/glob.txt +0 -6
  701. package/src/tool/grep.ts +0 -145
  702. package/src/tool/grep.txt +0 -8
  703. package/src/tool/history.ts +0 -146
  704. package/src/tool/history.txt +0 -17
  705. package/src/tool/index.ts +0 -4
  706. package/src/tool/invalid.ts +0 -20
  707. package/src/tool/invocation-style.ts +0 -17
  708. package/src/tool/lsp.ts +0 -91
  709. package/src/tool/lsp.txt +0 -19
  710. package/src/tool/mcp-exa.ts +0 -78
  711. package/src/tool/memory-path-guard.ts +0 -162
  712. package/src/tool/memory.ts +0 -81
  713. package/src/tool/memory.txt +0 -69
  714. package/src/tool/multiedit.ts +0 -54
  715. package/src/tool/multiedit.txt +0 -41
  716. package/src/tool/notebook-edit.ts +0 -225
  717. package/src/tool/notebook-edit.txt +0 -10
  718. package/src/tool/plan-enter.txt +0 -16
  719. package/src/tool/plan-exit.txt +0 -14
  720. package/src/tool/plan.ts +0 -179
  721. package/src/tool/question.ts +0 -67
  722. package/src/tool/question.txt +0 -10
  723. package/src/tool/read-state.ts +0 -44
  724. package/src/tool/read.ts +0 -327
  725. package/src/tool/read.txt +0 -14
  726. package/src/tool/recoverable.ts +0 -35
  727. package/src/tool/registry.ts +0 -429
  728. package/src/tool/schema.ts +0 -17
  729. package/src/tool/session-cwd.ts +0 -35
  730. package/src/tool/shell-tokenize.ts +0 -374
  731. package/src/tool/shell-wrap.ts +0 -235
  732. package/src/tool/skill.ts +0 -76
  733. package/src/tool/skill.txt +0 -5
  734. package/src/tool/task.shell.txt +0 -57
  735. package/src/tool/task.ts +0 -456
  736. package/src/tool/task.txt +0 -56
  737. package/src/tool/tool.ts +0 -166
  738. package/src/tool/truncate.ts +0 -201
  739. package/src/tool/truncation-dir.ts +0 -4
  740. package/src/tool/webfetch.ts +0 -208
  741. package/src/tool/webfetch.txt +0 -13
  742. package/src/tool/websearch/index.ts +0 -104
  743. package/src/tool/websearch/sleepy.ts +0 -118
  744. package/src/tool/websearch/websearch.txt +0 -14
  745. package/src/tool/workflow.ts +0 -357
  746. package/src/tool/workflow.txt +0 -25
  747. package/src/tool/write.ts +0 -88
  748. package/src/tool/write.txt +0 -10
  749. package/src/util/abort.ts +0 -35
  750. package/src/util/archive.ts +0 -15
  751. package/src/util/color.ts +0 -17
  752. package/src/util/data-url.ts +0 -9
  753. package/src/util/defer.ts +0 -10
  754. package/src/util/effect-http-client.ts +0 -11
  755. package/src/util/effect-zod.ts +0 -367
  756. package/src/util/env-info.ts +0 -62
  757. package/src/util/error.ts +0 -78
  758. package/src/util/filesystem.ts +0 -243
  759. package/src/util/fn.ts +0 -21
  760. package/src/util/format.ts +0 -20
  761. package/src/util/iife.ts +0 -3
  762. package/src/util/index.ts +0 -14
  763. package/src/util/keybind.ts +0 -101
  764. package/src/util/lazy.ts +0 -18
  765. package/src/util/local-context.ts +0 -23
  766. package/src/util/locale.ts +0 -79
  767. package/src/util/lock.ts +0 -96
  768. package/src/util/log.ts +0 -234
  769. package/src/util/media.ts +0 -26
  770. package/src/util/network.ts +0 -9
  771. package/src/util/process.ts +0 -174
  772. package/src/util/provider-priority.ts +0 -48
  773. package/src/util/queue.ts +0 -60
  774. package/src/util/record.ts +0 -3
  775. package/src/util/rpc.ts +0 -64
  776. package/src/util/schema.ts +0 -53
  777. package/src/util/scrap.ts +0 -10
  778. package/src/util/signal.ts +0 -12
  779. package/src/util/sleepy-process.ts +0 -24
  780. package/src/util/ssrf.ts +0 -116
  781. package/src/util/timeout.ts +0 -14
  782. package/src/util/token.ts +0 -5
  783. package/src/util/tool-compat.ts +0 -144
  784. package/src/util/update-schema.ts +0 -13
  785. package/src/util/which.ts +0 -14
  786. package/src/util/wildcard.ts +0 -57
  787. package/src/workflow/builtin/compose.js +0 -749
  788. package/src/workflow/builtin/deep-research.js +0 -398
  789. package/src/workflow/builtin.ts +0 -59
  790. package/src/workflow/events.ts +0 -72
  791. package/src/workflow/meta.ts +0 -335
  792. package/src/workflow/persistence.ts +0 -312
  793. package/src/workflow/resolve.ts +0 -45
  794. package/src/workflow/runtime-ref.ts +0 -18
  795. package/src/workflow/runtime.ts +0 -1447
  796. package/src/workflow/sandbox.ts +0 -286
  797. package/src/workflow/workflow.sql.ts +0 -31
  798. package/src/workflow/workspace.ts +0 -69
  799. package/src/worktree/index.ts +0 -629
@@ -1,737 +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 agent prompt otherwise provider prompt
246
- ...(input.agent.prompt ? [input.agent.prompt] : SystemPrompt.provider(input.model)),
247
- // any custom prompt passed into this call
248
- ...input.system,
249
- // any custom prompt from last user message
250
- ...(input.user.system ? [input.user.system] : []),
251
- ]
252
- .filter((x) => x)
253
- .join("\n"),
254
- )
255
-
256
- // v5: memory-instructions section. Teaches the main agent how/where/when
257
- // to maintain `MEMORY.md` and `checkpoint.md` directly via Edit. Project
258
- // ID is resolved from the ALS-bound Instance with a safe fallback to
259
- // `ProjectID.global` (mirrors the pattern in session/checkpoint.ts so the
260
- // path the prompt advertises matches the path the writer actually writes).
261
- // Skip for system-spawned actors (e.g. checkpoint-writer): they shouldn't
262
- // see the user-facing memory instructions.
263
- const isSystemActor = input.agentID
264
- ? yield* actorReg.isSystemSpawned(SessionID.make(input.sessionID), input.agentID)
265
- : false
266
- if (!isSystemActor) {
267
- const projectID =
268
- (yield* Effect.try({
269
- try: () => Instance.current?.project?.id as ProjectID | undefined,
270
- catch: () => undefined,
271
- }).pipe(Effect.orElseSucceed(() => undefined))) ?? ProjectID.global
272
- // Bootstrap the memory.md → MEMORY.md migration at session start so a
273
- // legacy lowercase file is renamed before the agent's first direct
274
- // Edit/Write (which would otherwise miss it on a case-sensitive FS, or
275
- // create an uppercase sibling and orphan the legacy content). The two
276
- // checkpoint-flow call sites cover the writer/rebuild paths; this covers
277
- // the "agent edits MEMORY.md before any checkpoint" path. Idempotent.
278
- yield* Effect.promise(() => migrateProjectMemory(projectID)).pipe(Effect.ignore)
279
- system.push(buildMemoryInstructions(SessionID.make(input.sessionID), projectID, yield* memory.root()))
280
- }
281
-
282
- const header = system[0]
283
- yield* plugin.trigger(
284
- "experimental.chat.system.transform",
285
- { sessionID: input.sessionID, model: input.model },
286
- { system },
287
- )
288
- // rejoin to maintain 2-part structure for caching if header unchanged
289
- if (system.length > 2 && system[0] === header) {
290
- const rest = system.slice(1)
291
- system.length = 0
292
- system.push(header, rest.join("\n"))
293
- }
294
-
295
- return system
296
- })
297
-
298
- const run = Effect.fn("LLM.run")(function* (input: StreamRequest) {
299
- const l = log
300
- .clone()
301
- .tag("providerID", input.model.providerID)
302
- .tag("modelID", input.model.id)
303
- .tag("session.id", input.sessionID)
304
- .tag("small", (input.small ?? false).toString())
305
- .tag("agent", input.agent.name)
306
- .tag("mode", input.agent.mode)
307
- l.info("stream", {
308
- modelID: input.model.id,
309
- providerID: input.model.providerID,
310
- })
311
-
312
- const [language, cfg, item, info] = yield* Effect.all(
313
- [
314
- provider.getLanguage(input.model),
315
- config.get(),
316
- provider.getProvider(input.model.providerID),
317
- auth.get(input.model.providerID),
318
- ],
319
- { concurrency: "unbounded" },
320
- )
321
-
322
- // TODO: move this to a proper hook
323
- const isOpenaiOauth = item.id === "openai" && info?.type === "oauth"
324
-
325
- const system =
326
- input.prebuiltSystem ??
327
- (yield* buildSystemArray({
328
- agent: input.agent,
329
- model: input.model,
330
- system: input.system,
331
- user: input.user,
332
- sessionID: input.sessionID,
333
- agentID: input.agentID,
334
- }))
335
-
336
- const variant =
337
- !input.small && input.model.variants && input.user.model.variant
338
- ? input.model.variants[input.user.model.variant]
339
- : {}
340
- const base = input.small
341
- ? ProviderTransform.smallOptions(input.model)
342
- : ProviderTransform.options({
343
- model: input.model,
344
- sessionID: input.sessionID,
345
- providerOptions: item.options,
346
- })
347
- const options: Record<string, any> = pipe(
348
- base,
349
- mergeDeep(input.model.options),
350
- mergeDeep(input.agent.options),
351
- mergeDeep(variant),
352
- )
353
- if (isOpenaiOauth) {
354
- options.instructions = system.join("\n")
355
- }
356
-
357
- const isWorkflow = language instanceof GitLabWorkflowLanguageModel
358
- const messages = isOpenaiOauth
359
- ? input.messages
360
- : isWorkflow
361
- ? input.messages
362
- : [
363
- ...system.map(
364
- (x): ModelMessage => ({
365
- role: "system",
366
- content: x,
367
- }),
368
- ),
369
- ...input.messages,
370
- ]
371
-
372
- const params = yield* plugin.trigger(
373
- "chat.params",
374
- {
375
- sessionID: input.sessionID,
376
- agent: input.agent.name,
377
- model: input.model,
378
- provider: item,
379
- message: input.user,
380
- },
381
- {
382
- temperature: input.model.capabilities.temperature
383
- ? (input.agent.temperature ?? ProviderTransform.temperature(input.model))
384
- : undefined,
385
- topP: input.agent.topP ?? ProviderTransform.topP(input.model),
386
- topK: ProviderTransform.topK(input.model),
387
- maxOutputTokens: ProviderTransform.maxOutputTokens(input.model),
388
- options,
389
- },
390
- )
391
-
392
- const { headers } = yield* plugin.trigger(
393
- "chat.headers",
394
- {
395
- sessionID: input.sessionID,
396
- agent: input.agent.name,
397
- model: input.model,
398
- provider: item,
399
- message: input.user,
400
- },
401
- {
402
- headers: {},
403
- },
404
- )
405
-
406
- const tools = resolveTools(input)
407
-
408
- // LiteLLM and some Anthropic proxies require the tools parameter to be present
409
- // when message history contains tool calls, even if no tools are being used.
410
- // Add a dummy tool that is never called to satisfy this validation.
411
- // This is enabled for:
412
- // 1. Providers with "litellm" in their ID or API ID (auto-detected)
413
- // 2. Providers with explicit "litellmProxy: true" option (opt-in for custom gateways)
414
- const isLiteLLMProxy =
415
- item.options?.["litellmProxy"] === true ||
416
- input.model.providerID.toLowerCase().includes("litellm") ||
417
- input.model.api.id.toLowerCase().includes("litellm")
418
-
419
- // LiteLLM/Bedrock rejects requests where the message history contains tool
420
- // calls but no tools param is present. When there are no active tools (e.g.
421
- // during compaction), inject a stub tool to satisfy the validation requirement.
422
- // The stub description explicitly tells the model not to call it.
423
- if (
424
- (isLiteLLMProxy || input.model.providerID.includes("github-copilot")) &&
425
- Object.keys(tools).length === 0 &&
426
- hasToolCalls(input.messages)
427
- ) {
428
- tools["_noop"] = tool({
429
- description: "Do not call this tool. It exists only for API compatibility and must never be invoked.",
430
- inputSchema: jsonSchema({
431
- type: "object",
432
- properties: {
433
- reason: { type: "string", description: "Unused" },
434
- },
435
- }),
436
- execute: async () => ({ output: "", title: "", metadata: {} }),
437
- })
438
- }
439
-
440
- // Wire up toolExecutor for DWS workflow models so that tool calls
441
- // from the workflow service are executed via opencode's tool system
442
- // and results sent back over the WebSocket.
443
- if (language instanceof GitLabWorkflowLanguageModel) {
444
- const workflowModel = language as GitLabWorkflowLanguageModel & {
445
- sessionID?: string
446
- sessionPreapprovedTools?: string[]
447
- approvalHandler?: (approvalTools: { name: string; args: string }[]) => Promise<{ approved: boolean }>
448
- }
449
- workflowModel.sessionID = input.sessionID
450
- workflowModel.systemPrompt = system.join("\n")
451
- workflowModel.toolExecutor = async (toolName, argsJson, _requestID) => {
452
- const registered = Object.keys(tools)
453
- const resolvedName = ToolCompat.resolveName(toolName, registered) ?? toolName
454
- const t = tools[resolvedName]
455
- if (!t || !t.execute) {
456
- return { result: "", error: `Unknown tool: ${toolName}` }
457
- }
458
- try {
459
- const schema = await Promise.resolve(asSchema(t.inputSchema).jsonSchema)
460
- const args = ToolCompat.normalizeInput(ToolCompat.parseToolInput(argsJson), schema)
461
- const result = await t.execute!(args, {
462
- toolCallId: _requestID,
463
- messages: input.messages,
464
- abortSignal: input.abort,
465
- })
466
- const output = typeof result === "string" ? result : (result?.output ?? JSON.stringify(result))
467
- return {
468
- result: output,
469
- metadata: typeof result === "object" ? result?.metadata : undefined,
470
- title: typeof result === "object" ? result?.title : undefined,
471
- }
472
- } catch (e: any) {
473
- return { result: "", error: e.message ?? String(e) }
474
- }
475
- }
476
-
477
- const ruleset = Agent.runtimePermission(input.agent, input.permission)
478
- workflowModel.sessionPreapprovedTools = Object.keys(tools).filter((name) => {
479
- const match = ruleset.findLast((rule) => Wildcard.match(name, rule.permission))
480
- return !match || match.action !== "ask"
481
- })
482
-
483
- const bridge = yield* EffectBridge.make()
484
- const approvedToolsForSession = new Set<string>()
485
- workflowModel.approvalHandler = Instance.bind(async (approvalTools) => {
486
- const uniqueNames = [...new Set(approvalTools.map((t: { name: string }) => t.name))] as string[]
487
- // Auto-approve tools that were already approved in this session
488
- // (prevents infinite approval loops for server-side MCP tools)
489
- if (uniqueNames.every((name) => approvedToolsForSession.has(name))) {
490
- return { approved: true }
491
- }
492
-
493
- const id = PermissionID.ascending()
494
- let unsub: (() => void) | undefined
495
- try {
496
- unsub = Bus.subscribe(Permission.Event.Replied, (evt) => {
497
- if (evt.properties.requestID === id) void evt.properties.reply
498
- })
499
- const toolPatterns = approvalTools.map((t: { name: string; args: string }) => {
500
- try {
501
- const parsed = JSON.parse(t.args) as Record<string, unknown>
502
- const title = (parsed?.title ?? parsed?.name ?? "") as string
503
- return title ? `${t.name}: ${title}` : t.name
504
- } catch {
505
- return t.name
506
- }
507
- })
508
- const uniquePatterns = [...new Set(toolPatterns)] as string[]
509
- await bridge.promise(
510
- perm.ask({
511
- id,
512
- sessionID: SessionID.make(input.sessionID),
513
- permission: "workflow_tool_approval",
514
- patterns: uniquePatterns,
515
- metadata: { tools: approvalTools },
516
- always: uniquePatterns,
517
- ruleset: [],
518
- }),
519
- )
520
- for (const name of uniqueNames) approvedToolsForSession.add(name)
521
- workflowModel.sessionPreapprovedTools = [...(workflowModel.sessionPreapprovedTools ?? []), ...uniqueNames]
522
- return { approved: true }
523
- } catch {
524
- return { approved: false }
525
- } finally {
526
- unsub?.()
527
- }
528
- })
529
- }
530
-
531
- const tracer = cfg.experimental?.openTelemetry
532
- ? Option.getOrUndefined(yield* Effect.serviceOption(OtelTracer.OtelTracer))
533
- : undefined
534
- const telemetryTracer = tracer
535
- ? new Proxy(tracer, {
536
- get(target, prop, receiver) {
537
- if (prop !== "startSpan") return Reflect.get(target, prop, receiver)
538
- return (...args: Parameters<typeof target.startSpan>) => {
539
- const span = target.startSpan(...args)
540
- span.setAttribute("session.id", input.sessionID)
541
- return span
542
- }
543
- },
544
- })
545
- : undefined
546
-
547
- const streamStartTs = Date.now()
548
- l.debug("streamText starting", {
549
- messageID: input.user.id,
550
- msgCount: messages.length,
551
- toolCount: Object.keys(tools).length,
552
- })
553
-
554
- return streamText({
555
- onError(error) {
556
- l.debug("streamText error", {
557
- messageID: input.user.id,
558
- error: error instanceof Error ? error.message : String(error),
559
- elapsedMs: Date.now() - streamStartTs,
560
- })
561
- l.error("stream error", {
562
- error,
563
- })
564
- },
565
- async experimental_repairToolCall(failed) {
566
- const registered = Object.keys(tools).filter((x) => x !== "invalid")
567
- const repaired = await ToolCompat.repairToolCall({
568
- toolName: failed.toolCall.toolName,
569
- input: failed.toolCall.input,
570
- toolNames: registered,
571
- getSchema: (toolName) => failed.inputSchema({ toolName }),
572
- })
573
- if (repaired) {
574
- l.info("repairing tool call", {
575
- tool: failed.toolCall.toolName,
576
- repaired: repaired.toolName,
577
- })
578
- return {
579
- ...failed.toolCall,
580
- toolName: repaired.toolName,
581
- input: repaired.input,
582
- }
583
- }
584
- return {
585
- ...failed.toolCall,
586
- input: JSON.stringify({
587
- tool: failed.toolCall.toolName,
588
- error: failed.error.message,
589
- }),
590
- toolName: "invalid",
591
- }
592
- },
593
- temperature: params.temperature,
594
- topP: params.topP,
595
- topK: params.topK,
596
- providerOptions: ProviderTransform.providerOptions(input.model, params.options),
597
- activeTools: Object.keys(tools).filter((x) => x !== "invalid"),
598
- tools: ProviderTransform.tools(tools, input.model),
599
- toolChoice: input.toolChoice,
600
- maxOutputTokens: params.maxOutputTokens,
601
- abortSignal: input.abort,
602
- headers: {
603
- "x-session-affinity": input.sessionID,
604
- ...(input.parentSessionID ? { "x-parent-session-id": input.parentSessionID } : {}),
605
- ...input.model.headers,
606
- ...headers,
607
- "User-Agent": `sleepycode/${InstallationVersion}`,
608
- },
609
- // AI SDK's internal retry loop is SILENT — it emits no events and does
610
- // not update session status, so the TUI shows only a dead spinner while
611
- // it runs. Its backoff is also UNCAPPED (delay *= 2 each attempt, capped
612
- // only by a retry-after header), so the prior default of 10 meant up to
613
- // ~34 min (2+4+…+1024s) of invisible retrying before the error surfaced.
614
- // We keep this layer short (absorb a couple of quick blips) and let the
615
- // VISIBLE processor-level SessionRetry.policy own long-haul resilience —
616
- // it publishes `type: "retry"` so the `[retrying attempt #N]` banner
617
- // shows, and its per-attempt delay is capped at 30s.
618
- maxRetries: input.retries ?? 2,
619
- messages,
620
- model: wrapLanguageModel({
621
- model: language,
622
- middleware: [
623
- {
624
- specificationVersion: "v3" as const,
625
- async transformParams(args) {
626
- if (args.type === "stream") {
627
- // @ts-expect-error
628
- args.params.prompt = ProviderTransform.message(args.params.prompt, input.model, options)
629
- }
630
- return args.params
631
- },
632
- },
633
- ],
634
- }),
635
- experimental_telemetry: {
636
- isEnabled: cfg.experimental?.openTelemetry,
637
- functionId: "session.llm",
638
- tracer: telemetryTracer,
639
- metadata: {
640
- userId: cfg.username ?? "unknown",
641
- sessionId: input.sessionID,
642
- },
643
- },
644
- })
645
- })
646
-
647
- const stream: Interface["stream"] = (input) =>
648
- Stream.scoped(
649
- Stream.unwrap(
650
- Effect.gen(function* () {
651
- const ctrl = yield* Effect.acquireRelease(
652
- Effect.sync(() => new AbortController()),
653
- (ctrl) => Effect.sync(() => ctrl.abort()),
654
- )
655
- const attemptRef = yield* Ref.make(0)
656
-
657
- const publishRetryEvent = (error: unknown, nextAttempt: number) =>
658
- Effect.gen(function* () {
659
- log.debug("retry attempt", {
660
- sessionID: input.sessionID,
661
- messageID: input.user.id,
662
- attempt: nextAttempt,
663
- reason: error instanceof Error ? error.message : String(error),
664
- })
665
- if (nextAttempt > 10) return
666
- const delayMs = Math.min(500 * 2 ** (nextAttempt - 1), 300_000)
667
- yield* Effect.promise(() =>
668
- Bus.publish(Session.Event.RetryAttempt, {
669
- sessionID: SessionID.make(input.sessionID),
670
- messageID: input.user.id,
671
- attempt: nextAttempt,
672
- maxAttempts: 10,
673
- reason: error instanceof Error ? error.message : String(error),
674
- nextDelayMs: delayMs,
675
- })
676
- )
677
- })
678
-
679
- const streamWithTelemetry = run({ ...input, abort: ctrl.signal }).pipe(
680
- Effect.tapError((error) => {
681
- if (!isTransientCapacityError(error)) return Effect.void
682
- return Ref.updateAndGet(attemptRef, (n) => n + 1).pipe(
683
- Effect.flatMap((nextAttempt) => publishRetryEvent(error, nextAttempt))
684
- )
685
- })
686
- )
687
-
688
- const result = yield* streamWithTelemetry.pipe(
689
- Effect.retry({
690
- while: isTransientCapacityError,
691
- schedule: persistentRetrySchedule,
692
- }),
693
- )
694
-
695
- return Stream.fromAsyncIterable(result.fullStream, (e) => (e instanceof Error ? e : new Error(String(e))))
696
- }),
697
- ),
698
- )
699
-
700
- return Service.of({ stream, buildSystemArray })
701
- }),
702
- )
703
-
704
- export const layer = live.pipe(Layer.provide(Permission.defaultLayer))
705
-
706
- export const defaultLayer = Layer.suspend(() =>
707
- layer.pipe(
708
- Layer.provide(Auth.defaultLayer),
709
- Layer.provide(Config.defaultLayer),
710
- Layer.provide(Provider.defaultLayer),
711
- Layer.provide(Plugin.defaultLayer),
712
- Layer.provide(ActorRegistry.defaultLayer),
713
- Layer.provide(Memory.defaultLayer),
714
- ),
715
- )
716
-
717
- function resolveTools(input: Pick<StreamInput, "tools" | "agent" | "permission" | "user">) {
718
- const disabled = Permission.disabled(
719
- Object.keys(input.tools),
720
- Agent.runtimePermission(input.agent, input.permission),
721
- )
722
- return Record.filter(input.tools, (_, k) => input.user.tools?.[k] !== false && !disabled.has(k))
723
- }
724
-
725
- // Check if messages contain any tool-call content
726
- // Used to determine if a dummy tool should be added for LiteLLM proxy compatibility
727
- export function hasToolCalls(messages: ModelMessage[]): boolean {
728
- for (const msg of messages) {
729
- if (!Array.isArray(msg.content)) continue
730
- for (const part of msg.content) {
731
- if (part.type === "tool-call" || part.type === "tool-result") return true
732
- }
733
- }
734
- return false
735
- }
736
-
737
- export * as LLM from "./llm"