@sleepy-ai/cli 0.1.14 → 0.1.16

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 (806) hide show
  1. package/.sleepycode-test-fixtures-50158/sleepycode-test-eqsxv84ythu/.watcher-b67v64k2mnv +1 -0
  2. package/.sleepycode-test-fixtures-66172/sleepycode-test-x1ymo4kksaa/sleepycode.json +1 -0
  3. package/Dockerfile +18 -0
  4. package/README.md +6 -139
  5. package/drizzle.config.ts +10 -0
  6. package/git +0 -0
  7. package/migration/20260127222353_familiar_lady_ursula/migration.sql +90 -0
  8. package/migration/20260127222353_familiar_lady_ursula/snapshot.json +796 -0
  9. package/migration/20260211171708_add_project_commands/migration.sql +1 -0
  10. package/migration/20260211171708_add_project_commands/snapshot.json +806 -0
  11. package/migration/20260213144116_wakeful_the_professor/migration.sql +11 -0
  12. package/migration/20260213144116_wakeful_the_professor/snapshot.json +897 -0
  13. package/migration/20260225215848_workspace/migration.sql +7 -0
  14. package/migration/20260225215848_workspace/snapshot.json +959 -0
  15. package/migration/20260227213759_add_session_workspace_id/migration.sql +2 -0
  16. package/migration/20260227213759_add_session_workspace_id/snapshot.json +983 -0
  17. package/migration/20260228203230_blue_harpoon/migration.sql +17 -0
  18. package/migration/20260228203230_blue_harpoon/snapshot.json +1102 -0
  19. package/migration/20260303231226_add_workspace_fields/migration.sql +5 -0
  20. package/migration/20260303231226_add_workspace_fields/snapshot.json +1013 -0
  21. package/migration/20260309230000_move_org_to_state/migration.sql +3 -0
  22. package/migration/20260309230000_move_org_to_state/snapshot.json +1156 -0
  23. package/migration/20260312043431_session_message_cursor/migration.sql +4 -0
  24. package/migration/20260312043431_session_message_cursor/snapshot.json +1168 -0
  25. package/migration/20260323234822_events/migration.sql +13 -0
  26. package/migration/20260323234822_events/snapshot.json +1271 -0
  27. package/migration/20260410174513_workspace-name/migration.sql +16 -0
  28. package/migration/20260410174513_workspace-name/snapshot.json +1271 -0
  29. package/migration/20260413175956_chief_energizer/migration.sql +13 -0
  30. package/migration/20260413175956_chief_energizer/snapshot.json +1399 -0
  31. package/migration/20260422160000_context_inheritance/migration.sql +3 -0
  32. package/migration/20260422170000_task_registry/migration.sql +18 -0
  33. package/migration/20260423145421_remove_session_entry/migration.sql +4 -0
  34. package/migration/20260515000000_actor_rename/migration.sql +7 -0
  35. package/migration/20260515010000_memory_fts/migration.sql +33 -0
  36. package/migration/20260515020000_user_task/migration.sql +29 -0
  37. package/migration/20260519000000_last_checkpoint_message_id/migration.sql +1 -0
  38. package/migration/20260521000000_message_agent_id/migration.sql +2 -0
  39. package/migration/20260521000100_actor_registry_v6/migration.sql +25 -0
  40. package/migration/20260521010000_memory_fts_v6/migration.sql +33 -0
  41. package/migration/20260521020000_memory_fts_triggers/migration.sql +17 -0
  42. package/migration/20260526000000_agent_id_main/migration.sql +14 -0
  43. package/migration/20260527000000_actor_lifecycle/migration.sql +8 -0
  44. package/migration/20260527000100_inbox/migration.sql +12 -0
  45. package/migration/20260529000000_task_todo_redesign/migration.sql +16 -0
  46. package/migration/20260603000000_task_in_progress_owner/migration.sql +1 -0
  47. package/migration/20260603000000_workflow_run/migration.sql +17 -0
  48. package/migration/20260604000000_workflow_script_sha/migration.sql +1 -0
  49. package/migration/20260608000000_claude_import/migration.sql +7 -0
  50. package/migration/20260608010000_claude_import_message_ids/migration.sql +1 -0
  51. package/migration/20260609000000_history_fts/migration.sql +29 -0
  52. package/migration/20260609230000_workflow_agent_timeout/migration.sql +1 -0
  53. package/migration/20260612000000_external_import/migration.sql +16 -0
  54. package/package.json +199 -19
  55. package/parsers-config.ts +290 -0
  56. package/src/account/account.sql.ts +39 -0
  57. package/src/account/account.ts +456 -0
  58. package/src/account/repo.ts +166 -0
  59. package/src/account/schema.ts +99 -0
  60. package/src/account/url.ts +8 -0
  61. package/src/acp/README.md +174 -0
  62. package/src/acp/agent.ts +1787 -0
  63. package/src/acp/session.ts +116 -0
  64. package/src/acp/types.ts +24 -0
  65. package/src/actor/actor.sql.ts +38 -0
  66. package/src/actor/events.ts +67 -0
  67. package/src/actor/index.ts +2 -0
  68. package/src/actor/registry.ts +412 -0
  69. package/src/actor/return-header.ts +24 -0
  70. package/src/actor/schema.ts +47 -0
  71. package/src/actor/spawn-ref.ts +16 -0
  72. package/src/actor/spawn.ts +756 -0
  73. package/src/actor/turn.ts +49 -0
  74. package/src/actor/waiter.ts +166 -0
  75. package/src/agent/agent.ts +645 -0
  76. package/src/agent/config.ts +5 -0
  77. package/src/agent/generate.txt +75 -0
  78. package/src/agent/prompt/apex.txt +363 -0
  79. package/src/agent/prompt/checkpoint-writer.txt +167 -0
  80. package/src/agent/prompt/compaction.txt +9 -0
  81. package/src/agent/prompt/distill.txt +199 -0
  82. package/src/agent/prompt/dream.txt +155 -0
  83. package/src/agent/prompt/explore.txt +18 -0
  84. package/src/agent/prompt/forge.txt +491 -0
  85. package/src/agent/prompt/phantom.txt +491 -0
  86. package/src/agent/prompt/pivot.txt +460 -0
  87. package/src/agent/prompt/stack.txt +472 -0
  88. package/src/agent/prompt/summary.txt +11 -0
  89. package/src/agent/prompt/title.txt +44 -0
  90. package/src/audio.d.ts +9 -0
  91. package/src/auth/index.ts +97 -0
  92. package/src/bus/bus-event.ts +33 -0
  93. package/src/bus/global.ts +12 -0
  94. package/src/bus/index.ts +193 -0
  95. package/src/cli/bootstrap.ts +33 -0
  96. package/src/cli/cmd/account.ts +258 -0
  97. package/src/cli/cmd/acp.ts +70 -0
  98. package/src/cli/cmd/agent.ts +248 -0
  99. package/src/cli/cmd/cmd.ts +7 -0
  100. package/src/cli/cmd/db.ts +120 -0
  101. package/src/cli/cmd/debug/agent.ts +192 -0
  102. package/src/cli/cmd/debug/config.ts +17 -0
  103. package/src/cli/cmd/debug/file.ts +100 -0
  104. package/src/cli/cmd/debug/index.ts +48 -0
  105. package/src/cli/cmd/debug/lsp.ts +61 -0
  106. package/src/cli/cmd/debug/ripgrep.ts +105 -0
  107. package/src/cli/cmd/debug/scrap.ts +16 -0
  108. package/src/cli/cmd/debug/skill.ts +23 -0
  109. package/src/cli/cmd/debug/snapshot.ts +53 -0
  110. package/src/cli/cmd/doctor.ts +116 -0
  111. package/src/cli/cmd/export.ts +306 -0
  112. package/src/cli/cmd/generate.ts +50 -0
  113. package/src/cli/cmd/github.ts +1647 -0
  114. package/src/cli/cmd/import.ts +208 -0
  115. package/src/cli/cmd/init.ts +97 -0
  116. package/src/cli/cmd/login.ts +402 -0
  117. package/src/cli/cmd/mcp.ts +812 -0
  118. package/src/cli/cmd/models.ts +88 -0
  119. package/src/cli/cmd/plug.ts +233 -0
  120. package/src/cli/cmd/pr.ts +138 -0
  121. package/src/cli/cmd/providers.ts +713 -0
  122. package/src/cli/cmd/run-completion.ts +77 -0
  123. package/src/cli/cmd/run.ts +694 -0
  124. package/src/cli/cmd/serve.ts +30 -0
  125. package/src/cli/cmd/session.ts +181 -0
  126. package/src/cli/cmd/stats.ts +413 -0
  127. package/src/cli/cmd/tui/app.tsx +1161 -0
  128. package/src/cli/cmd/tui/asset/TEN_VAD_LICENSE +12 -0
  129. package/src/cli/cmd/tui/asset/charge.wav +0 -0
  130. package/src/cli/cmd/tui/asset/pulse-a.wav +0 -0
  131. package/src/cli/cmd/tui/asset/pulse-b.wav +0 -0
  132. package/src/cli/cmd/tui/asset/pulse-c.wav +0 -0
  133. package/src/cli/cmd/tui/asset/ten_vad.wasm +0 -0
  134. package/src/cli/cmd/tui/asset/ten_vad_loader.js +30 -0
  135. package/src/cli/cmd/tui/attach.ts +84 -0
  136. package/src/cli/cmd/tui/component/background-image.tsx +150 -0
  137. package/src/cli/cmd/tui/component/banner-session-expired.tsx +48 -0
  138. package/src/cli/cmd/tui/component/bg-pulse.tsx +130 -0
  139. package/src/cli/cmd/tui/component/border.tsx +21 -0
  140. package/src/cli/cmd/tui/component/dialog-agent.tsx +31 -0
  141. package/src/cli/cmd/tui/component/dialog-agreement.tsx +111 -0
  142. package/src/cli/cmd/tui/component/dialog-command.tsx +219 -0
  143. package/src/cli/cmd/tui/component/dialog-console-org.tsx +103 -0
  144. package/src/cli/cmd/tui/component/dialog-go-upsell.tsx +150 -0
  145. package/src/cli/cmd/tui/component/dialog-image-list.tsx +111 -0
  146. package/src/cli/cmd/tui/component/dialog-logo-design.tsx +37 -0
  147. package/src/cli/cmd/tui/component/dialog-mcp.tsx +86 -0
  148. package/src/cli/cmd/tui/component/dialog-model.tsx +299 -0
  149. package/src/cli/cmd/tui/component/dialog-provider.tsx +449 -0
  150. package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +101 -0
  151. package/src/cli/cmd/tui/component/dialog-session-list.tsx +269 -0
  152. package/src/cli/cmd/tui/component/dialog-session-rename.tsx +31 -0
  153. package/src/cli/cmd/tui/component/dialog-skill.tsx +42 -0
  154. package/src/cli/cmd/tui/component/dialog-sleepy-login.tsx +167 -0
  155. package/src/cli/cmd/tui/component/dialog-stash.tsx +87 -0
  156. package/src/cli/cmd/tui/component/dialog-status.tsx +170 -0
  157. package/src/cli/cmd/tui/component/dialog-tag.tsx +44 -0
  158. package/src/cli/cmd/tui/component/dialog-theme-list.tsx +50 -0
  159. package/src/cli/cmd/tui/component/dialog-token-plan.tsx +77 -0
  160. package/src/cli/cmd/tui/component/dialog-variant.tsx +39 -0
  161. package/src/cli/cmd/tui/component/dialog-workflows.tsx +51 -0
  162. package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +289 -0
  163. package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +81 -0
  164. package/src/cli/cmd/tui/component/dialog-worktree.tsx +90 -0
  165. package/src/cli/cmd/tui/component/error-component.tsx +92 -0
  166. package/src/cli/cmd/tui/component/logo.tsx +961 -0
  167. package/src/cli/cmd/tui/component/plugin-route-missing.tsx +14 -0
  168. package/src/cli/cmd/tui/component/prompt/autocomplete-detect.ts +34 -0
  169. package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +668 -0
  170. package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
  171. package/src/cli/cmd/tui/component/prompt/frecency.tsx +90 -0
  172. package/src/cli/cmd/tui/component/prompt/history.tsx +108 -0
  173. package/src/cli/cmd/tui/component/prompt/index.tsx +1869 -0
  174. package/src/cli/cmd/tui/component/prompt/offset.ts +45 -0
  175. package/src/cli/cmd/tui/component/prompt/part.ts +36 -0
  176. package/src/cli/cmd/tui/component/prompt/stash.tsx +101 -0
  177. package/src/cli/cmd/tui/component/spinner.tsx +24 -0
  178. package/src/cli/cmd/tui/component/starry-background.tsx +305 -0
  179. package/src/cli/cmd/tui/component/startup-loading.tsx +67 -0
  180. package/src/cli/cmd/tui/component/task-item.tsx +63 -0
  181. package/src/cli/cmd/tui/component/textarea-keybindings.ts +73 -0
  182. package/src/cli/cmd/tui/component/todo-item.tsx +32 -0
  183. package/src/cli/cmd/tui/component/workflow-tree.tsx +177 -0
  184. package/src/cli/cmd/tui/config/cwd.ts +5 -0
  185. package/src/cli/cmd/tui/config/tui-migrate.ts +151 -0
  186. package/src/cli/cmd/tui/config/tui-schema.ts +38 -0
  187. package/src/cli/cmd/tui/config/tui.ts +219 -0
  188. package/src/cli/cmd/tui/context/args.tsx +16 -0
  189. package/src/cli/cmd/tui/context/directory.ts +15 -0
  190. package/src/cli/cmd/tui/context/event.ts +45 -0
  191. package/src/cli/cmd/tui/context/exit.tsx +65 -0
  192. package/src/cli/cmd/tui/context/helper.tsx +25 -0
  193. package/src/cli/cmd/tui/context/keybind.tsx +105 -0
  194. package/src/cli/cmd/tui/context/kv.tsx +86 -0
  195. package/src/cli/cmd/tui/context/language.tsx +91 -0
  196. package/src/cli/cmd/tui/context/local.tsx +458 -0
  197. package/src/cli/cmd/tui/context/plugin-keybinds.ts +41 -0
  198. package/src/cli/cmd/tui/context/project.tsx +109 -0
  199. package/src/cli/cmd/tui/context/prompt.tsx +18 -0
  200. package/src/cli/cmd/tui/context/route.tsx +68 -0
  201. package/src/cli/cmd/tui/context/sdk.tsx +150 -0
  202. package/src/cli/cmd/tui/context/sync.tsx +884 -0
  203. package/src/cli/cmd/tui/context/theme/aura.json +69 -0
  204. package/src/cli/cmd/tui/context/theme/ayu.json +80 -0
  205. package/src/cli/cmd/tui/context/theme/carbonfox.json +248 -0
  206. package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +230 -0
  207. package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +230 -0
  208. package/src/cli/cmd/tui/context/theme/catppuccin.json +112 -0
  209. package/src/cli/cmd/tui/context/theme/cobalt2.json +225 -0
  210. package/src/cli/cmd/tui/context/theme/cursor.json +249 -0
  211. package/src/cli/cmd/tui/context/theme/dracula.json +219 -0
  212. package/src/cli/cmd/tui/context/theme/everforest.json +241 -0
  213. package/src/cli/cmd/tui/context/theme/flexoki.json +237 -0
  214. package/src/cli/cmd/tui/context/theme/github.json +233 -0
  215. package/src/cli/cmd/tui/context/theme/gruvbox.json +242 -0
  216. package/src/cli/cmd/tui/context/theme/kanagawa.json +77 -0
  217. package/src/cli/cmd/tui/context/theme/lucent-orng.json +234 -0
  218. package/src/cli/cmd/tui/context/theme/material.json +235 -0
  219. package/src/cli/cmd/tui/context/theme/matrix.json +77 -0
  220. package/src/cli/cmd/tui/context/theme/mercury.json +252 -0
  221. package/src/cli/cmd/tui/context/theme/monokai.json +221 -0
  222. package/src/cli/cmd/tui/context/theme/nightowl.json +221 -0
  223. package/src/cli/cmd/tui/context/theme/nord.json +223 -0
  224. package/src/cli/cmd/tui/context/theme/one-dark.json +84 -0
  225. package/src/cli/cmd/tui/context/theme/orng.json +249 -0
  226. package/src/cli/cmd/tui/context/theme/osaka-jade.json +93 -0
  227. package/src/cli/cmd/tui/context/theme/palenight.json +222 -0
  228. package/src/cli/cmd/tui/context/theme/rosepine.json +234 -0
  229. package/src/cli/cmd/tui/context/theme/sleepycode.json +245 -0
  230. package/src/cli/cmd/tui/context/theme/solarized.json +223 -0
  231. package/src/cli/cmd/tui/context/theme/synthwave84.json +226 -0
  232. package/src/cli/cmd/tui/context/theme/tokyonight.json +243 -0
  233. package/src/cli/cmd/tui/context/theme/vercel.json +245 -0
  234. package/src/cli/cmd/tui/context/theme/vesper.json +218 -0
  235. package/src/cli/cmd/tui/context/theme/zenburn.json +223 -0
  236. package/src/cli/cmd/tui/context/theme.tsx +1298 -0
  237. package/src/cli/cmd/tui/context/thinking.ts +48 -0
  238. package/src/cli/cmd/tui/context/tui-config.tsx +9 -0
  239. package/src/cli/cmd/tui/event.ts +62 -0
  240. package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +93 -0
  241. package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +193 -0
  242. package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +54 -0
  243. package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +287 -0
  244. package/src/cli/cmd/tui/feature-plugins/sidebar/cwd.tsx +45 -0
  245. package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +62 -0
  246. package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +93 -0
  247. package/src/cli/cmd/tui/feature-plugins/sidebar/goal.tsx +84 -0
  248. package/src/cli/cmd/tui/feature-plugins/sidebar/instructions.tsx +54 -0
  249. package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +66 -0
  250. package/src/cli/cmd/tui/feature-plugins/sidebar/mascot.tsx +69 -0
  251. package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +98 -0
  252. package/src/cli/cmd/tui/feature-plugins/sidebar/task.tsx +95 -0
  253. package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +51 -0
  254. package/src/cli/cmd/tui/feature-plugins/sidebar/tps.ts +31 -0
  255. package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +274 -0
  256. package/src/cli/cmd/tui/i18n/en.ts +454 -0
  257. package/src/cli/cmd/tui/i18n/es.ts +508 -0
  258. package/src/cli/cmd/tui/i18n/fr.ts +515 -0
  259. package/src/cli/cmd/tui/i18n/ja.ts +463 -0
  260. package/src/cli/cmd/tui/i18n/locales.ts +82 -0
  261. package/src/cli/cmd/tui/i18n/ru.ts +527 -0
  262. package/src/cli/cmd/tui/i18n/slash-command.ts +11 -0
  263. package/src/cli/cmd/tui/i18n/zh.ts +454 -0
  264. package/src/cli/cmd/tui/i18n/zht.ts +430 -0
  265. package/src/cli/cmd/tui/layer.ts +6 -0
  266. package/src/cli/cmd/tui/plugin/api.tsx +402 -0
  267. package/src/cli/cmd/tui/plugin/index.ts +3 -0
  268. package/src/cli/cmd/tui/plugin/internal.ts +37 -0
  269. package/src/cli/cmd/tui/plugin/runtime.ts +1057 -0
  270. package/src/cli/cmd/tui/plugin/slots.tsx +60 -0
  271. package/src/cli/cmd/tui/routes/home.tsx +223 -0
  272. package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +76 -0
  273. package/src/cli/cmd/tui/routes/session/dialog-message.tsx +116 -0
  274. package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +47 -0
  275. package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +47 -0
  276. package/src/cli/cmd/tui/routes/session/footer.tsx +91 -0
  277. package/src/cli/cmd/tui/routes/session/index.tsx +3068 -0
  278. package/src/cli/cmd/tui/routes/session/permission.tsx +697 -0
  279. package/src/cli/cmd/tui/routes/session/question.tsx +488 -0
  280. package/src/cli/cmd/tui/routes/session/sidebar.tsx +97 -0
  281. package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +143 -0
  282. package/src/cli/cmd/tui/thread.ts +324 -0
  283. package/src/cli/cmd/tui/ui/dialog-alert.tsx +61 -0
  284. package/src/cli/cmd/tui/ui/dialog-confirm.tsx +95 -0
  285. package/src/cli/cmd/tui/ui/dialog-export-options.tsx +223 -0
  286. package/src/cli/cmd/tui/ui/dialog-help.tsx +42 -0
  287. package/src/cli/cmd/tui/ui/dialog-prompt.tsx +123 -0
  288. package/src/cli/cmd/tui/ui/dialog-select.tsx +467 -0
  289. package/src/cli/cmd/tui/ui/dialog.tsx +207 -0
  290. package/src/cli/cmd/tui/ui/link.tsx +28 -0
  291. package/src/cli/cmd/tui/ui/spinner.ts +378 -0
  292. package/src/cli/cmd/tui/ui/toast.tsx +102 -0
  293. package/src/cli/cmd/tui/util/clipboard.ts +197 -0
  294. package/src/cli/cmd/tui/util/editor.ts +41 -0
  295. package/src/cli/cmd/tui/util/image-protocol.ts +35 -0
  296. package/src/cli/cmd/tui/util/index.ts +6 -0
  297. package/src/cli/cmd/tui/util/model.ts +23 -0
  298. package/src/cli/cmd/tui/util/pinyin.ts +20 -0
  299. package/src/cli/cmd/tui/util/provider-origin.ts +7 -0
  300. package/src/cli/cmd/tui/util/revert-diff.ts +18 -0
  301. package/src/cli/cmd/tui/util/scroll.ts +23 -0
  302. package/src/cli/cmd/tui/util/selection.ts +23 -0
  303. package/src/cli/cmd/tui/util/signal.ts +41 -0
  304. package/src/cli/cmd/tui/util/sound.ts +154 -0
  305. package/src/cli/cmd/tui/util/system-locale.ts +209 -0
  306. package/src/cli/cmd/tui/util/terminal.ts +114 -0
  307. package/src/cli/cmd/tui/util/transcript.ts +112 -0
  308. package/src/cli/cmd/tui/util/vad.ts +229 -0
  309. package/src/cli/cmd/tui/util/voice.ts +450 -0
  310. package/src/cli/cmd/tui/win32.ts +130 -0
  311. package/src/cli/cmd/tui/worker.ts +104 -0
  312. package/src/cli/cmd/uninstall.ts +351 -0
  313. package/src/cli/cmd/upgrade.ts +79 -0
  314. package/src/cli/cmd/web.ts +96 -0
  315. package/src/cli/effect/prompt.ts +25 -0
  316. package/src/cli/error.ts +82 -0
  317. package/src/cli/heap.ts +59 -0
  318. package/src/cli/i18n.ts +15 -0
  319. package/src/cli/logo.ts +53 -0
  320. package/src/cli/network.ts +68 -0
  321. package/src/cli/ui.ts +133 -0
  322. package/src/cli/upgrade.ts +41 -0
  323. package/src/command/index.ts +276 -0
  324. package/src/command/template/initialize.txt +66 -0
  325. package/src/command/template/review.txt +101 -0
  326. package/src/config/agent.ts +197 -0
  327. package/src/config/command.ts +69 -0
  328. package/src/config/compose.ts +26 -0
  329. package/src/config/config.ts +1047 -0
  330. package/src/config/console-state.ts +16 -0
  331. package/src/config/entry-name.ts +16 -0
  332. package/src/config/error.ts +21 -0
  333. package/src/config/formatter.ts +17 -0
  334. package/src/config/history.ts +21 -0
  335. package/src/config/index.ts +17 -0
  336. package/src/config/keybinds.ts +127 -0
  337. package/src/config/layout.ts +10 -0
  338. package/src/config/lsp.ts +45 -0
  339. package/src/config/managed.ts +70 -0
  340. package/src/config/markdown.ts +97 -0
  341. package/src/config/mcp.ts +172 -0
  342. package/src/config/model-id.ts +14 -0
  343. package/src/config/parse.ts +44 -0
  344. package/src/config/paths.ts +85 -0
  345. package/src/config/permission.ts +76 -0
  346. package/src/config/plugin.ts +88 -0
  347. package/src/config/provider.ts +118 -0
  348. package/src/config/server.ts +20 -0
  349. package/src/config/skills.ts +16 -0
  350. package/src/config/variable.ts +90 -0
  351. package/src/control-plane/adaptors/index.ts +52 -0
  352. package/src/control-plane/adaptors/worktree.ts +47 -0
  353. package/src/control-plane/dev/debug-workspace-plugin.ts +73 -0
  354. package/src/control-plane/schema.ts +19 -0
  355. package/src/control-plane/sse.ts +66 -0
  356. package/src/control-plane/types.ts +34 -0
  357. package/src/control-plane/util.ts +37 -0
  358. package/src/control-plane/workspace-context.ts +26 -0
  359. package/src/control-plane/workspace.sql.ts +17 -0
  360. package/src/control-plane/workspace.ts +615 -0
  361. package/src/effect/app-runtime.ts +146 -0
  362. package/src/effect/bootstrap-runtime.ts +33 -0
  363. package/src/effect/bridge.ts +48 -0
  364. package/src/effect/cross-spawn-spawner.ts +514 -0
  365. package/src/effect/index.ts +5 -0
  366. package/src/effect/instance-ref.ts +11 -0
  367. package/src/effect/instance-registry.ts +12 -0
  368. package/src/effect/instance-state.ts +81 -0
  369. package/src/effect/logger.ts +73 -0
  370. package/src/effect/memo-map.ts +3 -0
  371. package/src/effect/observability.ts +107 -0
  372. package/src/effect/run-service.ts +52 -0
  373. package/src/effect/runner.ts +210 -0
  374. package/src/effect/runtime.ts +19 -0
  375. package/src/env/index.ts +37 -0
  376. package/src/file/ignore.ts +81 -0
  377. package/src/file/index.ts +664 -0
  378. package/src/file/protected.ts +59 -0
  379. package/src/file/ripgrep.ts +485 -0
  380. package/src/file/watcher.ts +163 -0
  381. package/src/flag/flag.ts +185 -0
  382. package/src/format/formatter.ts +403 -0
  383. package/src/format/index.ts +203 -0
  384. package/src/git/index.ts +260 -0
  385. package/src/global/index.ts +54 -0
  386. package/src/history/backfill.ts +162 -0
  387. package/src/history/extract.ts +67 -0
  388. package/src/history/fts-query.ts +15 -0
  389. package/src/history/fts.sql.ts +20 -0
  390. package/src/history/index.ts +10 -0
  391. package/src/history/resolve.ts +65 -0
  392. package/src/history/service.ts +258 -0
  393. package/src/history/writer.ts +112 -0
  394. package/src/id/id.ts +87 -0
  395. package/src/ide/index.ts +73 -0
  396. package/src/inbox/inbox-ref.ts +38 -0
  397. package/src/inbox/inbox.sql.ts +26 -0
  398. package/src/inbox/inbox.ts +223 -0
  399. package/src/inbox/index.ts +3 -0
  400. package/src/inbox/render.ts +40 -0
  401. package/src/index.ts +268 -0
  402. package/src/installation/index.ts +362 -0
  403. package/src/installation/version.ts +8 -0
  404. package/src/lsp/client.ts +249 -0
  405. package/src/lsp/diagnostic.ts +29 -0
  406. package/src/lsp/index.ts +3 -0
  407. package/src/lsp/language.ts +120 -0
  408. package/src/lsp/launch.ts +21 -0
  409. package/src/lsp/lsp.ts +519 -0
  410. package/src/lsp/server.ts +1956 -0
  411. package/src/mcp/auth.ts +144 -0
  412. package/src/mcp/index.ts +939 -0
  413. package/src/mcp/oauth-callback.ts +236 -0
  414. package/src/mcp/oauth-provider.ts +214 -0
  415. package/src/memory/fts-query.ts +37 -0
  416. package/src/memory/fts.sql.ts +19 -0
  417. package/src/memory/index.ts +1 -0
  418. package/src/memory/paths.ts +116 -0
  419. package/src/memory/reconcile.ts +144 -0
  420. package/src/memory/service.ts +144 -0
  421. package/src/metrics/client.ts +40 -0
  422. package/src/metrics/event.ts +43 -0
  423. package/src/metrics/index.ts +5 -0
  424. package/src/metrics/installation.ts +18 -0
  425. package/src/metrics/subscriber.ts +58 -0
  426. package/src/metrics/util.ts +9 -0
  427. package/src/node.ts +6 -0
  428. package/src/npm/config.ts +0 -0
  429. package/src/npm/index.ts +293 -0
  430. package/src/npmcli-config.d.ts +43 -0
  431. package/src/patch/index.ts +680 -0
  432. package/src/permission/arity.ts +163 -0
  433. package/src/permission/evaluate.ts +15 -0
  434. package/src/permission/index.ts +382 -0
  435. package/src/permission/schema.ts +17 -0
  436. package/src/plugin/checkpoint-splitover.ts +60 -0
  437. package/src/plugin/cloudflare.ts +76 -0
  438. package/src/plugin/codex.ts +611 -0
  439. package/src/plugin/github-copilot/copilot.ts +368 -0
  440. package/src/plugin/github-copilot/models.ts +153 -0
  441. package/src/plugin/index.ts +637 -0
  442. package/src/plugin/install.ts +439 -0
  443. package/src/plugin/loader.ts +216 -0
  444. package/src/plugin/matcher.ts +33 -0
  445. package/src/plugin/meta.ts +188 -0
  446. package/src/plugin/shared.ts +323 -0
  447. package/src/plugin/sleepy.ts +232 -0
  448. package/src/plugin/subagent-progress-checker.ts +147 -0
  449. package/src/project/bootstrap.ts +59 -0
  450. package/src/project/index.ts +2 -0
  451. package/src/project/instance.ts +215 -0
  452. package/src/project/project-id.ts +48 -0
  453. package/src/project/project.sql.ts +16 -0
  454. package/src/project/project.ts +522 -0
  455. package/src/project/schema.ts +15 -0
  456. package/src/project/vcs.ts +227 -0
  457. package/src/project/workspace-trust.ts +67 -0
  458. package/src/provider/auth.ts +234 -0
  459. package/src/provider/error.ts +216 -0
  460. package/src/provider/index.ts +5 -0
  461. package/src/provider/models-snapshot.d.ts +2 -0
  462. package/src/provider/models-snapshot.js +3 -0
  463. package/src/provider/models.ts +180 -0
  464. package/src/provider/provider.ts +2030 -0
  465. package/src/provider/schema.ts +36 -0
  466. package/src/provider/sdk/copilot/README.md +5 -0
  467. package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +170 -0
  468. package/src/provider/sdk/copilot/chat/get-response-metadata.ts +15 -0
  469. package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
  470. package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +64 -0
  471. package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +815 -0
  472. package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +28 -0
  473. package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +44 -0
  474. package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +83 -0
  475. package/src/provider/sdk/copilot/copilot-provider.ts +100 -0
  476. package/src/provider/sdk/copilot/index.ts +2 -0
  477. package/src/provider/sdk/copilot/openai-compatible-error.ts +27 -0
  478. package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +335 -0
  479. package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +22 -0
  480. package/src/provider/sdk/copilot/responses/openai-config.ts +18 -0
  481. package/src/provider/sdk/copilot/responses/openai-error.ts +22 -0
  482. package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +214 -0
  483. package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +1770 -0
  484. package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +173 -0
  485. package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +1 -0
  486. package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +87 -0
  487. package/src/provider/sdk/copilot/responses/tool/file-search.ts +127 -0
  488. package/src/provider/sdk/copilot/responses/tool/image-generation.ts +114 -0
  489. package/src/provider/sdk/copilot/responses/tool/local-shell.ts +64 -0
  490. package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +103 -0
  491. package/src/provider/sdk/copilot/responses/tool/web-search.ts +102 -0
  492. package/src/provider/session-check.ts +178 -0
  493. package/src/provider/transform.ts +1393 -0
  494. package/src/pty/index.ts +364 -0
  495. package/src/pty/pty.bun.ts +26 -0
  496. package/src/pty/pty.node.ts +27 -0
  497. package/src/pty/pty.ts +25 -0
  498. package/src/pty/schema.ts +17 -0
  499. package/src/question/index.ts +252 -0
  500. package/src/question/schema.ts +17 -0
  501. package/src/server/adapter.bun.ts +40 -0
  502. package/src/server/adapter.node.ts +66 -0
  503. package/src/server/adapter.ts +21 -0
  504. package/src/server/auth.ts +16 -0
  505. package/src/server/error.ts +53 -0
  506. package/src/server/event.ts +7 -0
  507. package/src/server/fence.ts +81 -0
  508. package/src/server/mdns.ts +60 -0
  509. package/src/server/middleware.ts +94 -0
  510. package/src/server/projectors.ts +28 -0
  511. package/src/server/proxy.ts +171 -0
  512. package/src/server/pty-ticket.ts +42 -0
  513. package/src/server/rate-limit.ts +38 -0
  514. package/src/server/routes/control/index.ts +160 -0
  515. package/src/server/routes/control/workspace.ts +203 -0
  516. package/src/server/routes/global.ts +367 -0
  517. package/src/server/routes/instance/bash-interactive.ts +82 -0
  518. package/src/server/routes/instance/config.ts +89 -0
  519. package/src/server/routes/instance/event.ts +108 -0
  520. package/src/server/routes/instance/experimental.ts +408 -0
  521. package/src/server/routes/instance/file.ts +190 -0
  522. package/src/server/routes/instance/httpapi/config.ts +51 -0
  523. package/src/server/routes/instance/httpapi/permission.ts +72 -0
  524. package/src/server/routes/instance/httpapi/project.ts +62 -0
  525. package/src/server/routes/instance/httpapi/provider.ts +142 -0
  526. package/src/server/routes/instance/httpapi/question.ts +121 -0
  527. package/src/server/routes/instance/httpapi/server.ts +153 -0
  528. package/src/server/routes/instance/index.ts +301 -0
  529. package/src/server/routes/instance/mcp.ts +260 -0
  530. package/src/server/routes/instance/middleware.ts +44 -0
  531. package/src/server/routes/instance/permission.ts +73 -0
  532. package/src/server/routes/instance/project.ts +122 -0
  533. package/src/server/routes/instance/provider.ts +158 -0
  534. package/src/server/routes/instance/pty.ts +302 -0
  535. package/src/server/routes/instance/question.ts +162 -0
  536. package/src/server/routes/instance/session.ts +1328 -0
  537. package/src/server/routes/instance/sync.ts +143 -0
  538. package/src/server/routes/instance/trace.ts +59 -0
  539. package/src/server/routes/instance/tui.ts +384 -0
  540. package/src/server/routes/instance/workflows.ts +142 -0
  541. package/src/server/routes/ui.ts +37 -0
  542. package/src/server/server.ts +146 -0
  543. package/src/server/workspace.ts +122 -0
  544. package/src/session/auto-dream.ts +123 -0
  545. package/src/session/boundary.ts +77 -0
  546. package/src/session/budgeted-read.ts +118 -0
  547. package/src/session/checkpoint-align.ts +29 -0
  548. package/src/session/checkpoint-context.ts +36 -0
  549. package/src/session/checkpoint-paths.ts +86 -0
  550. package/src/session/checkpoint-progress-reconcile.ts +111 -0
  551. package/src/session/checkpoint-retry.ts +192 -0
  552. package/src/session/checkpoint-templates.ts +114 -0
  553. package/src/session/checkpoint-validator.ts +259 -0
  554. package/src/session/checkpoint.ts +1560 -0
  555. package/src/session/classify.ts +120 -0
  556. package/src/session/claude-import.ts +381 -0
  557. package/src/session/codex-import.ts +416 -0
  558. package/src/session/compaction.ts +545 -0
  559. package/src/session/external-import.sql.ts +18 -0
  560. package/src/session/external-import.ts +136 -0
  561. package/src/session/goal.ts +232 -0
  562. package/src/session/index.ts +1 -0
  563. package/src/session/instruction.ts +276 -0
  564. package/src/session/last-message-info.ts +32 -0
  565. package/src/session/llm-request-prefix.ts +82 -0
  566. package/src/session/llm.ts +739 -0
  567. package/src/session/max-mode.ts +410 -0
  568. package/src/session/message-v2.ts +1146 -0
  569. package/src/session/message.ts +191 -0
  570. package/src/session/opencode-import.ts +281 -0
  571. package/src/session/overflow.ts +53 -0
  572. package/src/session/prefix-capture-ref.ts +48 -0
  573. package/src/session/processor.ts +983 -0
  574. package/src/session/projectors.ts +137 -0
  575. package/src/session/prompt/anthropic.txt +154 -0
  576. package/src/session/prompt/beast.txt +155 -0
  577. package/src/session/prompt/build-switch.txt +5 -0
  578. package/src/session/prompt/codex.txt +79 -0
  579. package/src/session/prompt/compose.txt +119 -0
  580. package/src/session/prompt/copilot-gpt-5.txt +143 -0
  581. package/src/session/prompt/deepseek.txt +131 -0
  582. package/src/session/prompt/default.old.txt +151 -0
  583. package/src/session/prompt/default.txt +172 -0
  584. package/src/session/prompt/gemini.txt +155 -0
  585. package/src/session/prompt/glm.txt +51 -0
  586. package/src/session/prompt/gpt.txt +107 -0
  587. package/src/session/prompt/kimi.txt +95 -0
  588. package/src/session/prompt/max-steps.txt +16 -0
  589. package/src/session/prompt/minimax.txt +140 -0
  590. package/src/session/prompt/text-loop-recovery.ts +40 -0
  591. package/src/session/prompt/text-ngram-detection.ts +87 -0
  592. package/src/session/prompt/trinity.txt +97 -0
  593. package/src/session/prompt.ts +3879 -0
  594. package/src/session/prune.ts +481 -0
  595. package/src/session/retry.ts +178 -0
  596. package/src/session/revert.ts +161 -0
  597. package/src/session/run-state.ts +135 -0
  598. package/src/session/schema.ts +36 -0
  599. package/src/session/session.sql.ts +110 -0
  600. package/src/session/session.ts +908 -0
  601. package/src/session/status.ts +89 -0
  602. package/src/session/summary.ts +163 -0
  603. package/src/session/system.ts +96 -0
  604. package/src/session/todo.ts +77 -0
  605. package/src/session/trajectory.ts +98 -0
  606. package/src/share/index.ts +2 -0
  607. package/src/share/session.ts +57 -0
  608. package/src/share/share-next.ts +381 -0
  609. package/src/share/share.sql.ts +13 -0
  610. package/src/shell/shell.ts +124 -0
  611. package/src/skill/builtin/.bundle/self-extend/SKILL.md +131 -0
  612. package/src/skill/builtin/.bundle/self-extend/reference/hook-api.md +242 -0
  613. package/src/skill/builtin/.bundle/self-extend/reference/skill-api.md +114 -0
  614. package/src/skill/builtin/.bundle/self-extend/reference/tool-api.md +115 -0
  615. package/src/skill/builtin/.bundle/self-extend/reference/tui-api.md +258 -0
  616. package/src/skill/builtin/bundle.macro.ts +30 -0
  617. package/src/skill/builtin/extract.ts +41 -0
  618. package/src/skill/compose/.bundle/ask/SKILL.md +58 -0
  619. package/src/skill/compose/.bundle/brainstorm/SKILL.md +200 -0
  620. package/src/skill/compose/.bundle/brainstorm/scripts/frame-template.html +214 -0
  621. package/src/skill/compose/.bundle/brainstorm/scripts/helper.js +88 -0
  622. package/src/skill/compose/.bundle/brainstorm/scripts/server.cjs +354 -0
  623. package/src/skill/compose/.bundle/brainstorm/scripts/start-server.sh +148 -0
  624. package/src/skill/compose/.bundle/brainstorm/scripts/stop-server.sh +56 -0
  625. package/src/skill/compose/.bundle/brainstorm/spec-document-reviewer-prompt.md +50 -0
  626. package/src/skill/compose/.bundle/brainstorm/visual-companion.md +258 -0
  627. package/src/skill/compose/.bundle/debug/CREATION-LOG.md +119 -0
  628. package/src/skill/compose/.bundle/debug/SKILL.md +297 -0
  629. package/src/skill/compose/.bundle/debug/condition-based-waiting-example.ts +158 -0
  630. package/src/skill/compose/.bundle/debug/condition-based-waiting.md +106 -0
  631. package/src/skill/compose/.bundle/debug/defense-in-depth.md +122 -0
  632. package/src/skill/compose/.bundle/debug/find-polluter.sh +63 -0
  633. package/src/skill/compose/.bundle/debug/root-cause-tracing.md +144 -0
  634. package/src/skill/compose/.bundle/debug/test-academic.md +14 -0
  635. package/src/skill/compose/.bundle/debug/test-pressure-1.md +58 -0
  636. package/src/skill/compose/.bundle/debug/test-pressure-2.md +68 -0
  637. package/src/skill/compose/.bundle/debug/test-pressure-3.md +69 -0
  638. package/src/skill/compose/.bundle/execute/SKILL.md +71 -0
  639. package/src/skill/compose/.bundle/feedback/SKILL.md +214 -0
  640. package/src/skill/compose/.bundle/merge/SKILL.md +252 -0
  641. package/src/skill/compose/.bundle/new-skill/SKILL.md +211 -0
  642. package/src/skill/compose/.bundle/parallel/SKILL.md +168 -0
  643. package/src/skill/compose/.bundle/plan/SKILL.md +183 -0
  644. package/src/skill/compose/.bundle/plan/plan-document-reviewer-prompt.md +50 -0
  645. package/src/skill/compose/.bundle/report/SKILL.md +180 -0
  646. package/src/skill/compose/.bundle/review/SKILL.md +104 -0
  647. package/src/skill/compose/.bundle/review/code-reviewer.md +178 -0
  648. package/src/skill/compose/.bundle/subagent/SKILL.md +325 -0
  649. package/src/skill/compose/.bundle/subagent/code-quality-reviewer-prompt.md +26 -0
  650. package/src/skill/compose/.bundle/subagent/implementer-prompt.md +128 -0
  651. package/src/skill/compose/.bundle/subagent/spec-reviewer-prompt.md +118 -0
  652. package/src/skill/compose/.bundle/tdd/SKILL.md +360 -0
  653. package/src/skill/compose/.bundle/tdd/testing-anti-patterns.md +299 -0
  654. package/src/skill/compose/.bundle/verify/SKILL.md +140 -0
  655. package/src/skill/compose/.bundle/worktree/SKILL.md +234 -0
  656. package/src/skill/compose/LICENSE-karpathy +28 -0
  657. package/{LICENSE → src/skill/compose/LICENSE-superpowers} +6 -3
  658. package/src/skill/compose/bundle.macro.ts +30 -0
  659. package/src/skill/compose/extract.ts +85 -0
  660. package/src/skill/discovery.ts +118 -0
  661. package/src/skill/index.ts +328 -0
  662. package/src/snapshot/index.ts +777 -0
  663. package/src/sql.d.ts +4 -0
  664. package/src/storage/db.bun.ts +8 -0
  665. package/src/storage/db.node.ts +8 -0
  666. package/src/storage/db.ts +172 -0
  667. package/src/storage/index.ts +26 -0
  668. package/src/storage/json-migration.ts +426 -0
  669. package/src/storage/read-sqlite.bun.ts +11 -0
  670. package/src/storage/read-sqlite.node.ts +13 -0
  671. package/src/storage/read-sqlite.ts +10 -0
  672. package/src/storage/schema.sql.ts +10 -0
  673. package/src/storage/schema.ts +7 -0
  674. package/src/storage/storage.ts +331 -0
  675. package/src/sync/README.md +179 -0
  676. package/src/sync/event.sql.ts +16 -0
  677. package/src/sync/index.ts +278 -0
  678. package/src/sync/schema.ts +14 -0
  679. package/src/task/events.ts +28 -0
  680. package/src/task/gate-state.ts +54 -0
  681. package/src/task/gate.ts +116 -0
  682. package/src/task/index.ts +1 -0
  683. package/src/task/registry.ts +394 -0
  684. package/src/task/schema.ts +43 -0
  685. package/src/task/task.sql.ts +50 -0
  686. package/src/team/events.ts +22 -0
  687. package/src/team/index.ts +113 -0
  688. package/src/team/schema.ts +31 -0
  689. package/src/temporary.ts +33 -0
  690. package/src/tool/actor.shell.txt +72 -0
  691. package/src/tool/actor.ts +804 -0
  692. package/src/tool/actor.txt +103 -0
  693. package/src/tool/apply_patch.ts +308 -0
  694. package/src/tool/apply_patch.txt +33 -0
  695. package/src/tool/bash-interactive.ts +183 -0
  696. package/src/tool/bash.ts +704 -0
  697. package/src/tool/bash.txt +123 -0
  698. package/src/tool/change-directory.ts +91 -0
  699. package/src/tool/codesearch.ts +63 -0
  700. package/src/tool/codesearch.txt +12 -0
  701. package/src/tool/edit.ts +693 -0
  702. package/src/tool/edit.txt +10 -0
  703. package/src/tool/external-directory.ts +132 -0
  704. package/src/tool/glob.ts +100 -0
  705. package/src/tool/glob.txt +6 -0
  706. package/src/tool/grep.ts +145 -0
  707. package/src/tool/grep.txt +8 -0
  708. package/src/tool/history.ts +146 -0
  709. package/src/tool/history.txt +17 -0
  710. package/src/tool/index.ts +4 -0
  711. package/src/tool/invalid.ts +20 -0
  712. package/src/tool/invocation-style.ts +17 -0
  713. package/src/tool/lsp.ts +91 -0
  714. package/src/tool/lsp.txt +19 -0
  715. package/src/tool/mcp-exa.ts +78 -0
  716. package/src/tool/memory-path-guard.ts +162 -0
  717. package/src/tool/memory.ts +81 -0
  718. package/src/tool/memory.txt +69 -0
  719. package/src/tool/multiedit.ts +54 -0
  720. package/src/tool/multiedit.txt +41 -0
  721. package/src/tool/notebook-edit.ts +225 -0
  722. package/src/tool/notebook-edit.txt +10 -0
  723. package/src/tool/plan-enter.txt +16 -0
  724. package/src/tool/plan-exit.txt +14 -0
  725. package/src/tool/plan.ts +194 -0
  726. package/src/tool/question.ts +67 -0
  727. package/src/tool/question.txt +10 -0
  728. package/src/tool/read-state.ts +44 -0
  729. package/src/tool/read.ts +327 -0
  730. package/src/tool/read.txt +14 -0
  731. package/src/tool/recoverable.ts +35 -0
  732. package/src/tool/registry.ts +429 -0
  733. package/src/tool/schema.ts +17 -0
  734. package/src/tool/session-cwd.ts +35 -0
  735. package/src/tool/shell-tokenize.ts +374 -0
  736. package/src/tool/shell-wrap.ts +235 -0
  737. package/src/tool/skill.ts +76 -0
  738. package/src/tool/skill.txt +5 -0
  739. package/src/tool/task.shell.txt +57 -0
  740. package/src/tool/task.ts +456 -0
  741. package/src/tool/task.txt +56 -0
  742. package/src/tool/tool.ts +166 -0
  743. package/src/tool/truncate.ts +201 -0
  744. package/src/tool/truncation-dir.ts +4 -0
  745. package/src/tool/webfetch.ts +208 -0
  746. package/src/tool/webfetch.txt +13 -0
  747. package/src/tool/websearch/index.ts +104 -0
  748. package/src/tool/websearch/sleepy.ts +118 -0
  749. package/src/tool/websearch/websearch.txt +14 -0
  750. package/src/tool/workflow.ts +357 -0
  751. package/src/tool/workflow.txt +25 -0
  752. package/src/tool/write.ts +88 -0
  753. package/src/tool/write.txt +10 -0
  754. package/src/util/abort.ts +35 -0
  755. package/src/util/archive.ts +15 -0
  756. package/src/util/color.ts +17 -0
  757. package/src/util/data-url.ts +9 -0
  758. package/src/util/defer.ts +10 -0
  759. package/src/util/effect-http-client.ts +11 -0
  760. package/src/util/effect-zod.ts +367 -0
  761. package/src/util/env-info.ts +62 -0
  762. package/src/util/error.ts +78 -0
  763. package/src/util/filesystem.ts +243 -0
  764. package/src/util/fn.ts +21 -0
  765. package/src/util/format.ts +20 -0
  766. package/src/util/iife.ts +3 -0
  767. package/src/util/index.ts +14 -0
  768. package/src/util/keybind.ts +101 -0
  769. package/src/util/lazy.ts +18 -0
  770. package/src/util/local-context.ts +23 -0
  771. package/src/util/locale.ts +79 -0
  772. package/src/util/lock.ts +96 -0
  773. package/src/util/log.ts +234 -0
  774. package/src/util/media.ts +26 -0
  775. package/src/util/network.ts +9 -0
  776. package/src/util/process.ts +174 -0
  777. package/src/util/provider-priority.ts +48 -0
  778. package/src/util/queue.ts +60 -0
  779. package/src/util/record.ts +3 -0
  780. package/src/util/rpc.ts +64 -0
  781. package/src/util/schema.ts +53 -0
  782. package/src/util/scrap.ts +10 -0
  783. package/src/util/signal.ts +12 -0
  784. package/src/util/sleepy-process.ts +24 -0
  785. package/src/util/ssrf.ts +116 -0
  786. package/src/util/timeout.ts +14 -0
  787. package/src/util/token.ts +5 -0
  788. package/src/util/tool-compat.ts +144 -0
  789. package/src/util/update-schema.ts +13 -0
  790. package/src/util/which.ts +14 -0
  791. package/src/util/wildcard.ts +57 -0
  792. package/src/workflow/builtin/compose.js +749 -0
  793. package/src/workflow/builtin/deep-research.js +397 -0
  794. package/src/workflow/builtin.ts +59 -0
  795. package/src/workflow/events.ts +72 -0
  796. package/src/workflow/meta.ts +335 -0
  797. package/src/workflow/persistence.ts +312 -0
  798. package/src/workflow/resolve.ts +45 -0
  799. package/src/workflow/runtime-ref.ts +18 -0
  800. package/src/workflow/runtime.ts +1447 -0
  801. package/src/workflow/sandbox.ts +286 -0
  802. package/src/workflow/workflow.sql.ts +31 -0
  803. package/src/workflow/workspace.ts +69 -0
  804. package/src/worktree/index.ts +629 -0
  805. package/postinstall.mjs +0 -102
  806. package/sleepy-ai-cli-0.1.14.tgz +0 -0
@@ -0,0 +1,410 @@
1
+ import { Cause, Effect } from "effect"
2
+ import * as Stream from "effect/Stream"
3
+ import type { ModelMessage, Tool as AITool } from "ai"
4
+ import { LLM } from "./llm"
5
+ import { SessionProcessor } from "./processor"
6
+ import * as Session from "./session"
7
+ import type { Provider } from "@/provider"
8
+ import type { Agent } from "@/agent/agent"
9
+ import type { MessageV2 } from "./message-v2"
10
+ import {
11
+ createTextNgramMonitor,
12
+ isTextNgramRepeat,
13
+ textNgramRepeat,
14
+ } from "./prompt/text-ngram-detection"
15
+ import type { Permission } from "@/permission"
16
+ import { Log } from "@/util"
17
+
18
+ const log = Log.create({ service: "session.max-mode" })
19
+
20
+ export const DEFAULT_CANDIDATES = 5
21
+
22
+ /** Name of the built-in max-mode primary agent. */
23
+ export const MAX_MODE_AGENT = "max"
24
+
25
+ /** One candidate's collected output from a propose-only stream. */
26
+ export type Candidate = {
27
+ index: number
28
+ reasoning: string
29
+ reasoningMetadata?: Record<string, any>
30
+ text: string
31
+ textMetadata?: Record<string, any>
32
+ toolCalls: SessionProcessor.ProposedToolCall[]
33
+ finishReason: string
34
+ usage?: any
35
+ providerMetadata?: Record<string, any>
36
+ }
37
+
38
+ /**
39
+ * Shared inputs for a max-mode step. These mirror exactly what the runLoop has
40
+ * in scope at the main `handle.process` call site, so the orchestrator can be
41
+ * dropped in with no extra plumbing.
42
+ */
43
+ export type MaxStepInput = {
44
+ handle: SessionProcessor.Handle
45
+ llm: LLM.Interface
46
+ user: MessageV2.User
47
+ agent: Agent.Info
48
+ model: Provider.Model
49
+ sessionID: string
50
+ parentSessionID?: string
51
+ permission?: Permission.Ruleset
52
+ /** Custom system additions (same array passed to handle.process). */
53
+ system: string[]
54
+ /** Prebuilt system array (verbatim) — same as handle.process. */
55
+ prebuiltSystem?: string[]
56
+ /** Model messages for this step. */
57
+ messages: ModelMessage[]
58
+ /** Execute-bearing tools from resolveTools — used to run the winner. */
59
+ tools: Record<string, AITool>
60
+ agentID?: string
61
+ /**
62
+ * Tool-choice from the per-step args. Accepted (so the same processArgs object
63
+ * can be spread in) but unused: candidates always run propose-only and the
64
+ * json_schema path never takes the max-mode branch.
65
+ */
66
+ toolChoice?: "auto" | "required" | "none"
67
+ /** Number of parallel candidates (default 5). */
68
+ candidates?: number
69
+ /**
70
+ * Optional hook to surface progress to the UI during the (otherwise
71
+ * invisible) candidate + judge phases. Called with a short English label,
72
+ * or undefined to clear back to a plain busy state.
73
+ */
74
+ setStatus?: (message: string | undefined) => Effect.Effect<void>
75
+ }
76
+
77
+ /**
78
+ * Strip the `execute` closure from each tool, yielding "schema-only" tools.
79
+ * The AI SDK stops the step and emits a `tool-call` event (without executing)
80
+ * when an invoked tool has no `execute` — exactly the propose-only behaviour
81
+ * candidates need.
82
+ */
83
+ export function toSchemaOnlyTools(tools: Record<string, AITool>): Record<string, AITool> {
84
+ const out: Record<string, AITool> = {}
85
+ for (const [key, t] of Object.entries(tools)) {
86
+ const { execute: _execute, ...rest } = t as any
87
+ out[key] = rest as AITool
88
+ }
89
+ return out
90
+ }
91
+
92
+ /**
93
+ * Run a single propose-only candidate stream, collecting reasoning + text +
94
+ * proposed tool calls without executing anything. Returns null on failure so a
95
+ * single bad draw doesn't sink the whole step.
96
+ *
97
+ * Transient network failures (ECONNRESET / EPIPE / SSE timeout / 5xx) are
98
+ * retried with the same persistent schedule the normal stream path uses. This
99
+ * is safe — and deliberately broader than the normal path — because a
100
+ * candidate emits NOTHING externally until it completes: each attempt rebuilds
101
+ * a fresh accumulator, so re-streaming after a mid-stream reset cannot
102
+ * duplicate user-visible output the way the live processor stream would. A
103
+ * mid-stream ECONNRESET that the normal path can't retry (it only wraps
104
+ * connection setup) is fully recoverable here.
105
+ */
106
+ // Exported for integration tests (drives the real candidate path with a mock
107
+ // llm.stream). Not part of the public surface — call sites use runMaxStep.
108
+ export const runCandidate = (
109
+ input: MaxStepInput,
110
+ index: number,
111
+ ): Effect.Effect<Candidate | null | "text-repeat"> =>
112
+ Effect.gen(function* () {
113
+ const monitor = createTextNgramMonitor()
114
+ // Fresh accumulator per attempt: the retry below re-runs this whole block,
115
+ // so partial reasoning/text/toolCalls from a failed attempt must not carry
116
+ // over into the retry.
117
+ const candidate: Candidate = {
118
+ index,
119
+ reasoning: "",
120
+ text: "",
121
+ toolCalls: [],
122
+ finishReason: "stop",
123
+ }
124
+
125
+ const schemaOnly = toSchemaOnlyTools(input.tools)
126
+ const stream = input.llm.stream({
127
+ user: input.user,
128
+ sessionID: input.sessionID,
129
+ parentSessionID: input.parentSessionID,
130
+ model: input.model,
131
+ agent: input.agent,
132
+ permission: input.permission,
133
+ system: input.system,
134
+ prebuiltSystem: input.prebuiltSystem,
135
+ messages: input.messages,
136
+ tools: schemaOnly,
137
+ agentID: input.agentID,
138
+ })
139
+
140
+ yield* Stream.runForEach(stream, (event: LLM.Event) => {
141
+ switch (event.type) {
142
+ case "reasoning-delta":
143
+ candidate.reasoning += event.text
144
+ if (monitor.append(event.text)) return Effect.fail(textNgramRepeat())
145
+ if (event.providerMetadata) candidate.reasoningMetadata = event.providerMetadata
146
+ break
147
+ case "text-delta":
148
+ candidate.text += event.text
149
+ if (monitor.append(event.text)) return Effect.fail(textNgramRepeat())
150
+ if (event.providerMetadata) candidate.textMetadata = event.providerMetadata
151
+ break
152
+ case "tool-call":
153
+ candidate.toolCalls.push({
154
+ toolCallId: event.toolCallId,
155
+ toolName: event.toolName,
156
+ input: (event.input as Record<string, any>) ?? {},
157
+ providerMetadata: event.providerMetadata,
158
+ })
159
+ break
160
+ case "finish-step":
161
+ candidate.finishReason = event.finishReason ?? candidate.finishReason
162
+ candidate.usage = event.usage
163
+ candidate.providerMetadata = event.providerMetadata
164
+ break
165
+ // The AI SDK surfaces a transient stream failure (ECONNRESET etc.) as
166
+ // an `error` PART that ends the stream normally — it does NOT throw, and
167
+ // the normal processor path only converts this via its own catchCause.
168
+ // Emit it into the Effect error channel (NOT a thrown defect, which the
169
+ // retry's `while` predicate would skip) so Effect.retry below can fire;
170
+ // otherwise the error is silently swallowed and the candidate ends
171
+ // half-streamed.
172
+ case "error":
173
+ return Effect.fail(event.error)
174
+ default:
175
+ break
176
+ }
177
+ return Effect.void
178
+ })
179
+
180
+ return candidate
181
+ }).pipe(
182
+ // Mirror the proven build/plan path (processor.ts): convert any DEFECT into
183
+ // a typed failure before retrying. The SSE-timeout / aborted-fetch errors
184
+ // raised deep in the provider stream surface as defects (Cause.die), which
185
+ // Effect.retry's `while` and Effect.catch both skip — so without this they
186
+ // escape the fiber as an unhandled rejection and kill the whole session.
187
+ // Interrupts (genuine user cancel) are left to propagate.
188
+ Effect.catchCauseIf(
189
+ (cause) => !Cause.hasInterruptsOnly(cause),
190
+ (cause) => Effect.fail(Cause.squash(cause)),
191
+ ),
192
+ Effect.retry({
193
+ while: LLM.isTransientCapacityError,
194
+ schedule: LLM.persistentRetrySchedule,
195
+ }),
196
+ Effect.catchIf(isTextNgramRepeat, () => Effect.succeed("text-repeat" as const)),
197
+ Effect.catch((e) =>
198
+ Effect.sync(() => {
199
+ log.warn("candidate failed", { index, error: e instanceof Error ? e.message : String(e) })
200
+ return null
201
+ }),
202
+ ),
203
+ )
204
+
205
+ /** Render a candidate compactly for the judge. `label` is its judge-facing index. */
206
+ function renderCandidate(c: Candidate, label: number): string {
207
+ const tools =
208
+ c.toolCalls.length === 0
209
+ ? "(no tool calls — final answer / text only)"
210
+ : c.toolCalls
211
+ .map((t) => ` - ${t.toolName}(${JSON.stringify(t.input)})`)
212
+ .join("\n")
213
+ const reasoning = c.reasoning.trim() ? c.reasoning.trim() : "(no reasoning emitted)"
214
+ const text = c.text.trim() ? c.text.trim() : "(no text emitted)"
215
+ return [
216
+ `### Candidate ${label}`,
217
+ `Reasoning:\n${reasoning}`,
218
+ `Message:\n${text}`,
219
+ `Proposed tool calls:\n${tools}`,
220
+ ].join("\n")
221
+ }
222
+
223
+ const JUDGE_SYSTEM = [
224
+ "You are a judge selecting the single best next step for a coding agent.",
225
+ "You will see several independent candidate drafts for the SAME step. Each candidate contains its reasoning, its message text, and the tool calls it proposes to make next.",
226
+ "Pick the ONE candidate that has the most correct, grounded, and useful next step. Prefer candidates whose reasoning is sound and whose proposed tool calls are appropriate and safe.",
227
+ "Respond with ONLY the integer index of the winning candidate (e.g. `2`). No other text.",
228
+ ].join("\n")
229
+
230
+ /**
231
+ * Parse the judge's free-text reply into a valid candidate index. Returns 0
232
+ * (first survivor) when the reply has no integer or is out of range — so a
233
+ * flaky judge never blocks the step.
234
+ */
235
+ export function parseJudgeIndex(out: string, count: number): number {
236
+ const match = out.match(/\d+/)
237
+ if (!match) return 0
238
+ const picked = parseInt(match[0], 10)
239
+ if (Number.isNaN(picked) || picked < 0 || picked >= count) return 0
240
+ return picked
241
+ }
242
+
243
+ /**
244
+ * Ask the model to pick the best candidate. Returns the winner's index in the
245
+ * `candidates` array (NOT the candidate.index field) plus the judge call's own
246
+ * token usage. Falls back to index 0 on any parse/out-of-range issue.
247
+ */
248
+ /** Exported for integration tests; call sites go through runMaxStep. */
249
+ export const judge = (input: MaxStepInput, candidates: Candidate[]): Effect.Effect<{ pick: number; usage?: any }> =>
250
+ Effect.gen(function* () {
251
+ if (candidates.length === 1) return { pick: 0, usage: undefined }
252
+
253
+ const rendered = candidates.map((c, i) => renderCandidate(c, i)).join("\n\n")
254
+ const judgePrompt = [
255
+ `There are ${candidates.length} candidates, indexed 0..${candidates.length - 1}.`,
256
+ "",
257
+ rendered,
258
+ "",
259
+ `Reply with ONLY the integer index (0..${candidates.length - 1}) of the best candidate.`,
260
+ ].join("\n")
261
+
262
+ const messages: ModelMessage[] = [{ role: "user", content: judgePrompt }]
263
+
264
+ let out = ""
265
+ let usage: any | undefined
266
+ const stream = input.llm.stream({
267
+ user: input.user,
268
+ sessionID: input.sessionID,
269
+ parentSessionID: input.parentSessionID,
270
+ model: input.model,
271
+ agent: input.agent,
272
+ permission: input.permission,
273
+ system: [JUDGE_SYSTEM],
274
+ messages,
275
+ tools: {},
276
+ toolChoice: "none",
277
+ agentID: input.agentID,
278
+ })
279
+
280
+ yield* Stream.runForEach(stream, (event: LLM.Event) => {
281
+ if (event.type === "text-delta") out += event.text
282
+ else if (event.type === "finish-step") usage = event.usage
283
+ // Same as runCandidate: a transient failure arrives as an `error` part,
284
+ // not a thrown error. Surface it into the error channel so Effect.retry
285
+ // below can fire instead of silently picking candidate 0.
286
+ else if (event.type === "error") return Effect.fail(event.error)
287
+ return Effect.void
288
+ })
289
+
290
+ return { pick: parseJudgeIndex(out, candidates.length), usage }
291
+ }).pipe(
292
+ // Convert defects (SSE timeout / aborted fetch surfacing as Cause.die) into
293
+ // typed failures before retrying — same as runCandidate and the proven
294
+ // processor path. Otherwise the defect escapes and kills the session
295
+ // instead of degrading to pick 0.
296
+ Effect.catchCauseIf(
297
+ (cause) => !Cause.hasInterruptsOnly(cause),
298
+ (cause) => Effect.fail(Cause.squash(cause)),
299
+ ),
300
+ // Same transient-retry rationale as runCandidate: the judge accumulates
301
+ // `out`/`usage` locally and emits nothing externally until it returns, so
302
+ // re-streaming after a mid-stream reset is safe. Without this, a single
303
+ // ECONNRESET during judging silently collapses the whole step to pick 0.
304
+ Effect.retry({
305
+ while: LLM.isTransientCapacityError,
306
+ schedule: LLM.persistentRetrySchedule,
307
+ }),
308
+ Effect.catch((e) => {
309
+ log.warn("judge failed, defaulting to candidate 0", {
310
+ error: e instanceof Error ? e.message : String(e),
311
+ })
312
+ return Effect.succeed({ pick: 0, usage: undefined })
313
+ }),
314
+ )
315
+
316
+ /**
317
+ * Run one max-mode step: N parallel propose-only candidates → judge picks the
318
+ * winner → replay (execute) the winner through the processor. Returns the same
319
+ * Result contract as `handle.process`.
320
+ *
321
+ * Degradation: if every candidate fails (0 survivors), falls back to a normal
322
+ * single `handle.process` call so the step still makes progress.
323
+ */
324
+ export const runMaxStep = (input: MaxStepInput): Effect.Effect<SessionProcessor.Result> =>
325
+ Effect.gen(function* () {
326
+ const n = Math.max(1, input.candidates ?? DEFAULT_CANDIDATES)
327
+ const setStatus = (message: string | undefined) =>
328
+ input.setStatus ? input.setStatus(message) : Effect.void
329
+
330
+ // Total wall-clock of the whole ensemble phase (N parallel candidates +
331
+ // judge), measured from just before the candidates start until just before
332
+ // replay. Shown as the winner's thinking duration.
333
+ const ensembleStartedAt = Date.now()
334
+
335
+ yield* setStatus(`thinking — ${n} candidates`)
336
+ const results = yield* Effect.all(
337
+ Array.from({ length: n }, (_, i) => runCandidate(input, i)),
338
+ { concurrency: n },
339
+ )
340
+ if (results.some((result) => result === "text-repeat")) return "text-repeat"
341
+ const survivors = results.filter((c): c is Candidate => c !== null && c !== "text-repeat")
342
+
343
+ if (survivors.length === 0) {
344
+ log.warn("all candidates failed, falling back to single process")
345
+ yield* setStatus(undefined)
346
+ return yield* input.handle.process({
347
+ user: input.user,
348
+ agent: input.agent,
349
+ permission: input.permission,
350
+ sessionID: input.sessionID,
351
+ parentSessionID: input.parentSessionID,
352
+ system: input.system,
353
+ prebuiltSystem: input.prebuiltSystem,
354
+ messages: input.messages,
355
+ tools: input.tools,
356
+ model: input.model,
357
+ agentID: input.agentID,
358
+ })
359
+ }
360
+
361
+ yield* setStatus(`judging ${survivors.length} candidates`)
362
+ const { pick, usage: judgeUsage } = yield* judge(input, survivors)
363
+ const winner = survivors[pick]
364
+ log.info("max step", { candidates: n, survivors: survivors.length, winner: pick, toolCalls: winner.toolCalls.length })
365
+
366
+ // The winner's own usage is what actually enters history, so it (and only
367
+ // it) must drive the message's `tokens` — that field feeds the context
368
+ // overflow / prune / compaction estimators. Feeding the aggregate there
369
+ // would make max mode believe context is ~Nx fuller than it is and trigger
370
+ // premature compaction.
371
+ //
372
+ // The losing candidates + the judge are real spend but consume NO context.
373
+ // We surface them as `overhead`: extra cost + extra in/out token counts the
374
+ // processor adds to `cost` and the ModelCall metric only — never to
375
+ // `tokens`. So billing/metrics reflect the true ~Nx spend while context
376
+ // estimation stays honest.
377
+ const overheadUsages = [...survivors.filter((_, i) => i !== pick).map((c) => c.usage), judgeUsage]
378
+ const overhead = overheadUsages.reduce(
379
+ (acc, u) => {
380
+ if (!u) return acc
381
+ const g = Session.getUsage({ model: input.model, usage: u })
382
+ acc.cost += g.cost
383
+ acc.tokensIn += g.tokens.input + g.tokens.cache.read + g.tokens.cache.write
384
+ acc.tokensOut += g.tokens.output + g.tokens.reasoning
385
+ return acc
386
+ },
387
+ { cost: 0, tokensIn: 0, tokensOut: 0 },
388
+ )
389
+
390
+ // Clear the max-mode label before replay so the winner streams under the
391
+ // normal busy state.
392
+ yield* setStatus(undefined)
393
+ return yield* input.handle.replay({
394
+ reasoning: winner.reasoning,
395
+ reasoningMetadata: winner.reasoningMetadata,
396
+ text: winner.text,
397
+ textMetadata: winner.textMetadata,
398
+ toolCalls: winner.toolCalls,
399
+ finishReason: winner.finishReason,
400
+ usage: winner.usage,
401
+ providerMetadata: winner.providerMetadata,
402
+ tools: input.tools as any,
403
+ messages: input.messages,
404
+ selection: { winner: pick, total: survivors.length },
405
+ thinkingMs: Date.now() - ensembleStartedAt,
406
+ overhead,
407
+ })
408
+ })
409
+
410
+ export * as MaxMode from "./max-mode"