bonecode 1.0.0 → 1.1.0

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 (575) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -50
  3. package/bone/output/agent/.dockerignore +7 -7
  4. package/bone/output/agent/.env.example +36 -36
  5. package/bone/output/agent/.github/workflows/ci.yaml +58 -58
  6. package/bone/output/agent/AgentDomain.bone.map +349 -349
  7. package/bone/output/agent/AgentDomain.postman_collection.json +957 -957
  8. package/bone/output/agent/Dockerfile +22 -22
  9. package/bone/output/agent/README.md +47 -47
  10. package/bone/output/agent/admin/index.html +739 -739
  11. package/bone/output/agent/docker-compose.yaml +22 -22
  12. package/bone/output/agent/k8s/deployment.yaml +75 -75
  13. package/bone/output/agent/migrations/agent.sql +36 -36
  14. package/bone/output/agent/migrations/agent_instance.sql +36 -36
  15. package/bone/output/agent/migrations/audit_log.sql +18 -18
  16. package/bone/output/agent/migrations/build_step.sql +34 -34
  17. package/bone/output/agent/migrations/event_outbox.sql +31 -31
  18. package/bone/output/agent/migrations/plan.sql +30 -30
  19. package/bone/output/agent/migrations/task.sql +30 -30
  20. package/bone/output/agent/migrations/tool_call.sql +33 -33
  21. package/bone/output/agent/openapi.yaml +1116 -1116
  22. package/bone/output/agent/package.json +35 -35
  23. package/bone/output/agent/schema.graphql +233 -233
  24. package/bone/output/agent/sdk/client.ts +231 -231
  25. package/bone/output/agent/src/algorithms.ts +2 -2
  26. package/bone/output/agent/src/audit.ts +44 -44
  27. package/bone/output/agent/src/auth.ts +57 -57
  28. package/bone/output/agent/src/cron.ts +12 -12
  29. package/bone/output/agent/src/db.ts +31 -31
  30. package/bone/output/agent/src/debug.ts +66 -66
  31. package/bone/output/agent/src/events.ts +243 -243
  32. package/bone/output/agent/src/extensions.ts +54 -54
  33. package/bone/output/agent/src/failure_rules.ts +322 -322
  34. package/bone/output/agent/src/flows.ts +168 -168
  35. package/bone/output/agent/src/health.ts +43 -43
  36. package/bone/output/agent/src/index.ts +99 -99
  37. package/bone/output/agent/src/logger.ts +69 -66
  38. package/bone/output/agent/src/metrics.ts +75 -75
  39. package/bone/output/agent/src/migrate.ts +351 -351
  40. package/bone/output/agent/src/migration_diff.ts +108 -108
  41. package/bone/output/agent/src/notify.ts +125 -125
  42. package/bone/output/agent/src/routes/plan.ts +91 -91
  43. package/bone/output/agent/src/routes/task.ts +105 -105
  44. package/bone/output/agent/src/routes/tool_call.ts +166 -166
  45. package/bone/output/agent/src/schemas.ts +384 -384
  46. package/bone/output/agent/src/state_machines/agent_instance.ts +24 -24
  47. package/bone/output/agent/src/state_machines/build_step.ts +22 -22
  48. package/bone/output/agent/src/state_machines/plan.ts +22 -22
  49. package/bone/output/agent/src/state_machines/task.ts +22 -22
  50. package/bone/output/agent/src/state_machines/tool_call.ts +22 -22
  51. package/bone/output/agent/src/tests.ts +361 -361
  52. package/bone/output/agent/src/websocket.ts +200 -200
  53. package/bone/output/agent/tsconfig.json +24 -24
  54. package/bone/output/rag/.dockerignore +7 -7
  55. package/bone/output/rag/.env.example +36 -36
  56. package/bone/output/rag/.github/workflows/ci.yaml +58 -58
  57. package/bone/output/rag/Dockerfile +22 -22
  58. package/bone/output/rag/RAGDomain.bone.map +286 -286
  59. package/bone/output/rag/RAGDomain.postman_collection.json +922 -922
  60. package/bone/output/rag/README.md +47 -47
  61. package/bone/output/rag/admin/index.html +817 -817
  62. package/bone/output/rag/docker-compose.yaml +22 -22
  63. package/bone/output/rag/k8s/deployment.yaml +75 -75
  64. package/bone/output/rag/migrations/audit_log.sql +18 -18
  65. package/bone/output/rag/migrations/code_chunk.sql +34 -34
  66. package/bone/output/rag/migrations/code_file.sql +33 -33
  67. package/bone/output/rag/migrations/event_outbox.sql +31 -31
  68. package/bone/output/rag/migrations/indexing_job.sql +33 -33
  69. package/bone/output/rag/migrations/knowledge_base.sql +35 -35
  70. package/bone/output/rag/migrations/memory_entry.sql +34 -34
  71. package/bone/output/rag/openapi.yaml +1097 -1097
  72. package/bone/output/rag/package.json +35 -35
  73. package/bone/output/rag/schema.graphql +245 -245
  74. package/bone/output/rag/sdk/client.ts +234 -234
  75. package/bone/output/rag/src/algorithms.ts +2 -2
  76. package/bone/output/rag/src/audit.ts +37 -37
  77. package/bone/output/rag/src/auth.ts +57 -57
  78. package/bone/output/rag/src/cron.ts +12 -12
  79. package/bone/output/rag/src/db.ts +31 -31
  80. package/bone/output/rag/src/debug.ts +66 -66
  81. package/bone/output/rag/src/events.ts +243 -243
  82. package/bone/output/rag/src/extensions.ts +350 -350
  83. package/bone/output/rag/src/failure_rules.ts +314 -314
  84. package/bone/output/rag/src/flows.ts +239 -239
  85. package/bone/output/rag/src/health.ts +43 -43
  86. package/bone/output/rag/src/index.ts +94 -94
  87. package/bone/output/rag/src/logger.ts +69 -66
  88. package/bone/output/rag/src/metrics.ts +75 -75
  89. package/bone/output/rag/src/migrate.ts +363 -363
  90. package/bone/output/rag/src/migration_diff.ts +108 -108
  91. package/bone/output/rag/src/notify.ts +99 -99
  92. package/bone/output/rag/src/routes/code_chunk.ts +75 -75
  93. package/bone/output/rag/src/routes/code_file.ts +101 -101
  94. package/bone/output/rag/src/routes/indexing_job.ts +87 -87
  95. package/bone/output/rag/src/routes/knowledge_base.ts +230 -230
  96. package/bone/output/rag/src/routes/memory_entry.ts +87 -87
  97. package/bone/output/rag/src/schemas.ts +394 -394
  98. package/bone/output/rag/src/state_machines/code_file.ts +23 -23
  99. package/bone/output/rag/src/state_machines/indexing_job.ts +22 -22
  100. package/bone/output/rag/src/state_machines/knowledge_base.ts +23 -23
  101. package/bone/output/rag/src/state_machines/memory_entry.ts +20 -20
  102. package/bone/output/rag/src/tests.ts +339 -339
  103. package/bone/output/rag/tsconfig.json +24 -24
  104. package/bone/output/session/.dockerignore +7 -7
  105. package/bone/output/session/.env.example +36 -36
  106. package/bone/output/session/.github/workflows/ci.yaml +58 -58
  107. package/bone/output/session/Dockerfile +22 -22
  108. package/bone/output/session/README.md +47 -47
  109. package/bone/output/session/SessionDomain.bone.map +349 -349
  110. package/bone/output/session/SessionDomain.postman_collection.json +957 -957
  111. package/bone/output/session/admin/index.html +666 -666
  112. package/bone/output/session/docker-compose.yaml +22 -22
  113. package/bone/output/session/k8s/deployment.yaml +75 -75
  114. package/bone/output/session/migrations/audit_log.sql +18 -18
  115. package/bone/output/session/migrations/event_outbox.sql +31 -31
  116. package/bone/output/session/migrations/message.sql +31 -31
  117. package/bone/output/session/migrations/part.sql +28 -28
  118. package/bone/output/session/migrations/permission.sql +28 -28
  119. package/bone/output/session/migrations/project.sql +28 -28
  120. package/bone/output/session/migrations/session.sql +38 -38
  121. package/bone/output/session/openapi.yaml +1101 -1101
  122. package/bone/output/session/package.json +35 -35
  123. package/bone/output/session/schema.graphql +222 -222
  124. package/bone/output/session/sdk/client.ts +225 -225
  125. package/bone/output/session/src/algorithms.ts +2 -2
  126. package/bone/output/session/src/audit.ts +44 -44
  127. package/bone/output/session/src/auth.ts +57 -57
  128. package/bone/output/session/src/cron.ts +12 -12
  129. package/bone/output/session/src/db.ts +31 -31
  130. package/bone/output/session/src/debug.ts +66 -66
  131. package/bone/output/session/src/events.ts +270 -270
  132. package/bone/output/session/src/extensions.ts +215 -215
  133. package/bone/output/session/src/failure_rules.ts +283 -283
  134. package/bone/output/session/src/flows.ts +168 -168
  135. package/bone/output/session/src/health.ts +43 -43
  136. package/bone/output/session/src/index.ts +99 -99
  137. package/bone/output/session/src/logger.ts +67 -66
  138. package/bone/output/session/src/metrics.ts +75 -75
  139. package/bone/output/session/src/migrate.ts +331 -331
  140. package/bone/output/session/src/migration_diff.ts +108 -108
  141. package/bone/output/session/src/notify.ts +112 -112
  142. package/bone/output/session/src/routes/message.ts +93 -93
  143. package/bone/output/session/src/routes/part.ts +79 -79
  144. package/bone/output/session/src/routes/permission.ts +79 -79
  145. package/bone/output/session/src/routes/project.ts +79 -79
  146. package/bone/output/session/src/routes/session.ts +294 -294
  147. package/bone/output/session/src/schemas.ts +357 -357
  148. package/bone/output/session/src/state_machines/session.ts +23 -23
  149. package/bone/output/session/src/tests.ts +325 -325
  150. package/bone/output/session/src/websocket.ts +223 -200
  151. package/bone/output/session/tsconfig.json +24 -24
  152. package/bone/output/workspace/.dockerignore +7 -7
  153. package/bone/output/workspace/.env.example +36 -36
  154. package/bone/output/workspace/.github/workflows/ci.yaml +58 -58
  155. package/bone/output/workspace/Dockerfile +22 -22
  156. package/bone/output/workspace/README.md +45 -45
  157. package/bone/output/workspace/WorkspaceDomain.bone.map +188 -188
  158. package/bone/output/workspace/WorkspaceDomain.postman_collection.json +620 -620
  159. package/bone/output/workspace/admin/index.html +484 -484
  160. package/bone/output/workspace/docker-compose.yaml +22 -22
  161. package/bone/output/workspace/k8s/deployment.yaml +75 -75
  162. package/bone/output/workspace/migrations/audit_log.sql +18 -18
  163. package/bone/output/workspace/migrations/codebase.sql +34 -34
  164. package/bone/output/workspace/migrations/event_outbox.sql +31 -31
  165. package/bone/output/workspace/migrations/snapshot.sql +32 -32
  166. package/bone/output/workspace/migrations/workspace.sql +33 -33
  167. package/bone/output/workspace/openapi.yaml +721 -721
  168. package/bone/output/workspace/package.json +35 -35
  169. package/bone/output/workspace/schema.graphql +153 -153
  170. package/bone/output/workspace/sdk/client.ts +155 -155
  171. package/bone/output/workspace/src/algorithms.ts +2 -2
  172. package/bone/output/workspace/src/audit.ts +37 -37
  173. package/bone/output/workspace/src/auth.ts +57 -57
  174. package/bone/output/workspace/src/cron.ts +12 -12
  175. package/bone/output/workspace/src/db.ts +31 -31
  176. package/bone/output/workspace/src/debug.ts +66 -66
  177. package/bone/output/workspace/src/events.ts +243 -243
  178. package/bone/output/workspace/src/extensions.ts +44 -44
  179. package/bone/output/workspace/src/failure_rules.ts +152 -152
  180. package/bone/output/workspace/src/health.ts +43 -43
  181. package/bone/output/workspace/src/index.ts +88 -88
  182. package/bone/output/workspace/src/logger.ts +69 -66
  183. package/bone/output/workspace/src/metrics.ts +75 -75
  184. package/bone/output/workspace/src/migrate.ts +219 -219
  185. package/bone/output/workspace/src/migration_diff.ts +108 -108
  186. package/bone/output/workspace/src/notify.ts +73 -73
  187. package/bone/output/workspace/src/routes/codebase.ts +87 -87
  188. package/bone/output/workspace/src/routes/snapshot.ts +127 -127
  189. package/bone/output/workspace/src/routes/workspace.ts +190 -190
  190. package/bone/output/workspace/src/schemas.ts +231 -231
  191. package/bone/output/workspace/src/state_machines/codebase.ts +21 -21
  192. package/bone/output/workspace/src/state_machines/snapshot.ts +20 -20
  193. package/bone/output/workspace/src/state_machines/workspace.ts +21 -21
  194. package/bone/output/workspace/src/tests.ts +248 -248
  195. package/bone/output/workspace/tsconfig.json +24 -24
  196. package/compat/opencode_adapter.ts +94 -17
  197. package/package.json +15 -2
  198. package/src/cli.ts +66 -107
  199. package/src/db_adapter.ts +354 -0
  200. package/src/engine/account/account.sql.ts +39 -39
  201. package/src/engine/account/account.ts +456 -456
  202. package/src/engine/account/repo.ts +166 -166
  203. package/src/engine/account/schema.ts +99 -99
  204. package/src/engine/account/url.ts +8 -8
  205. package/src/engine/acp/README.md +174 -174
  206. package/src/engine/acp/agent.ts +1968 -1968
  207. package/src/engine/acp/runtime.ts +22 -22
  208. package/src/engine/acp/session.ts +122 -122
  209. package/src/engine/acp/types.ts +24 -24
  210. package/src/engine/agent/agent.ts +463 -463
  211. package/src/engine/agent/generate.txt +75 -75
  212. package/src/engine/agent/prompt/compaction.txt +9 -9
  213. package/src/engine/agent/prompt/explore.txt +18 -18
  214. package/src/engine/agent/prompt/scout.txt +36 -36
  215. package/src/engine/agent/prompt/summary.txt +11 -11
  216. package/src/engine/agent/prompt/title.txt +44 -44
  217. package/src/engine/agent/subagent-permissions.ts +34 -34
  218. package/src/engine/auth/index.ts +96 -96
  219. package/src/engine/background/background/job.ts +200 -200
  220. package/src/engine/background/job.ts +200 -200
  221. package/src/engine/bus/bus-event.ts +45 -45
  222. package/src/engine/bus/global.ts +22 -22
  223. package/src/engine/bus/index.ts +203 -203
  224. package/src/engine/command/command/index.ts +181 -181
  225. package/src/engine/command/command/template/initialize.txt +66 -66
  226. package/src/engine/command/command/template/review.txt +101 -101
  227. package/src/engine/command/index.ts +181 -181
  228. package/src/engine/command/template/initialize.txt +66 -66
  229. package/src/engine/command/template/review.txt +101 -101
  230. package/src/engine/config/agent.ts +172 -172
  231. package/src/engine/config/attachment.ts +25 -25
  232. package/src/engine/config/command.ts +62 -62
  233. package/src/engine/config/config.ts +833 -833
  234. package/src/engine/config/console-state.ts +14 -14
  235. package/src/engine/config/entry-name.ts +16 -16
  236. package/src/engine/config/error.ts +23 -23
  237. package/src/engine/config/formatter.ts +13 -13
  238. package/src/engine/config/layout.ts +6 -6
  239. package/src/engine/config/lsp.ts +43 -43
  240. package/src/engine/config/managed.ts +71 -71
  241. package/src/engine/config/markdown.ts +96 -96
  242. package/src/engine/config/mcp.ts +56 -56
  243. package/src/engine/config/model-id.ts +5 -5
  244. package/src/engine/config/parse.ts +79 -79
  245. package/src/engine/config/paths.ts +45 -45
  246. package/src/engine/config/permission.ts +58 -58
  247. package/src/engine/config/plugin.ts +84 -84
  248. package/src/engine/config/provider.ts +111 -111
  249. package/src/engine/config/reference.ts +23 -23
  250. package/src/engine/config/server.ts +19 -19
  251. package/src/engine/config/skills.ts +14 -14
  252. package/src/engine/config/variable.ts +90 -90
  253. package/src/engine/control-plane/adapters/index.ts +41 -41
  254. package/src/engine/control-plane/adapters/worktree.ts +96 -96
  255. package/src/engine/control-plane/dev/README.md +19 -19
  256. package/src/engine/control-plane/dev/debug-workspace-plugin.ts +73 -73
  257. package/src/engine/control-plane/schema.ts +14 -14
  258. package/src/engine/control-plane/types.ts +59 -59
  259. package/src/engine/control-plane/util.ts +39 -39
  260. package/src/engine/control-plane/workspace-adapter-runtime.ts +51 -51
  261. package/src/engine/control-plane/workspace-context.ts +26 -26
  262. package/src/engine/control-plane/workspace.sql.ts +20 -20
  263. package/src/engine/control-plane/workspace.ts +1072 -1072
  264. package/src/engine/data-migration.ts +161 -161
  265. package/src/engine/effect/app-runtime.ts +143 -143
  266. package/src/engine/effect/bootstrap-runtime.ts +29 -29
  267. package/src/engine/effect/bridge.ts +84 -84
  268. package/src/engine/effect/config-service.ts +67 -67
  269. package/src/engine/effect/instance-ref.ts +11 -11
  270. package/src/engine/effect/instance-registry.ts +12 -12
  271. package/src/engine/effect/instance-state.ts +72 -72
  272. package/src/engine/effect/promise.ts +17 -17
  273. package/src/engine/effect/run-service.ts +47 -47
  274. package/src/engine/effect/runner.ts +217 -217
  275. package/src/engine/effect/runtime-flags.ts +74 -74
  276. package/src/engine/effect/service-use.ts +38 -38
  277. package/src/engine/env/index.ts +37 -37
  278. package/src/engine/event-v2-bridge.ts +89 -89
  279. package/src/engine/file/file/ignore.ts +81 -81
  280. package/src/engine/file/file/index.ts +651 -651
  281. package/src/engine/file/file/protected.ts +59 -59
  282. package/src/engine/file/file/ripgrep.ts +481 -481
  283. package/src/engine/file/file/watcher.ts +167 -167
  284. package/src/engine/file/ignore.ts +81 -81
  285. package/src/engine/file/index.ts +651 -651
  286. package/src/engine/file/protected.ts +59 -59
  287. package/src/engine/file/ripgrep.ts +481 -481
  288. package/src/engine/file/watcher.ts +167 -167
  289. package/src/engine/format/format/formatter.ts +404 -404
  290. package/src/engine/format/format/index.ts +209 -209
  291. package/src/engine/format/formatter.ts +404 -404
  292. package/src/engine/format/index.ts +209 -209
  293. package/src/engine/git/git/index.ts +347 -347
  294. package/src/engine/git/index.ts +347 -347
  295. package/src/engine/id/id.ts +80 -80
  296. package/src/engine/ide/index.ts +70 -70
  297. package/src/engine/image/image/image.ts +176 -176
  298. package/src/engine/image/image.ts +176 -176
  299. package/src/engine/index.ts +251 -251
  300. package/src/engine/installation/index.ts +327 -327
  301. package/src/engine/lsp/client.ts +707 -707
  302. package/src/engine/lsp/diagnostic.ts +29 -29
  303. package/src/engine/lsp/language.ts +121 -121
  304. package/src/engine/lsp/launch.ts +21 -21
  305. package/src/engine/lsp/lsp/client.ts +707 -707
  306. package/src/engine/lsp/lsp/diagnostic.ts +29 -29
  307. package/src/engine/lsp/lsp/language.ts +121 -121
  308. package/src/engine/lsp/lsp/launch.ts +21 -21
  309. package/src/engine/lsp/lsp/lsp.ts +507 -507
  310. package/src/engine/lsp/lsp/server.ts +2064 -2064
  311. package/src/engine/lsp/lsp.ts +507 -507
  312. package/src/engine/lsp/server.ts +2064 -2064
  313. package/src/engine/mcp/auth.ts +146 -146
  314. package/src/engine/mcp/index.ts +958 -958
  315. package/src/engine/mcp/mcp/auth.ts +146 -146
  316. package/src/engine/mcp/mcp/index.ts +958 -958
  317. package/src/engine/mcp/mcp/oauth-callback.ts +232 -232
  318. package/src/engine/mcp/mcp/oauth-provider.ts +214 -214
  319. package/src/engine/mcp/oauth-callback.ts +232 -232
  320. package/src/engine/mcp/oauth-provider.ts +214 -214
  321. package/src/engine/node.ts +6 -6
  322. package/src/engine/patch/index.ts +689 -689
  323. package/src/engine/patch/patch/index.ts +689 -689
  324. package/src/engine/permission/arity.ts +163 -163
  325. package/src/engine/permission/evaluate.ts +15 -15
  326. package/src/engine/permission/index.ts +306 -306
  327. package/src/engine/permission/permission/arity.ts +163 -163
  328. package/src/engine/permission/permission/evaluate.ts +15 -15
  329. package/src/engine/permission/permission/index.ts +306 -306
  330. package/src/engine/permission/permission/schema.ts +13 -13
  331. package/src/engine/permission/schema.ts +13 -13
  332. package/src/engine/plugin/azure.ts +26 -26
  333. package/src/engine/plugin/cloudflare.ts +76 -76
  334. package/src/engine/plugin/codex.ts +622 -622
  335. package/src/engine/plugin/digitalocean.ts +411 -411
  336. package/src/engine/plugin/github-copilot/copilot.ts +394 -394
  337. package/src/engine/plugin/github-copilot/models.ts +196 -196
  338. package/src/engine/plugin/index.ts +295 -295
  339. package/src/engine/plugin/install.ts +439 -439
  340. package/src/engine/plugin/loader.ts +216 -216
  341. package/src/engine/plugin/meta.ts +188 -188
  342. package/src/engine/plugin/shared.ts +323 -323
  343. package/src/engine/project/bootstrap-service.ts +9 -9
  344. package/src/engine/project/bootstrap.ts +75 -75
  345. package/src/engine/project/instance-context.ts +24 -24
  346. package/src/engine/project/instance-layer.ts +11 -11
  347. package/src/engine/project/instance-runtime.ts +16 -16
  348. package/src/engine/project/instance-store.ts +193 -193
  349. package/src/engine/project/project.sql.ts +17 -17
  350. package/src/engine/project/project.ts +537 -537
  351. package/src/engine/project/schema.ts +13 -13
  352. package/src/engine/project/vcs.ts +405 -405
  353. package/src/engine/provider/auth.ts +225 -225
  354. package/src/engine/provider/error.ts +204 -204
  355. package/src/engine/provider/model-status.ts +8 -8
  356. package/src/engine/provider/provider.ts +1843 -1843
  357. package/src/engine/provider/schema.ts +30 -30
  358. package/src/engine/provider/transform.ts +1376 -1376
  359. package/src/engine/pty/index.ts +365 -365
  360. package/src/engine/pty/input.ts +24 -24
  361. package/src/engine/pty/pty/index.ts +365 -365
  362. package/src/engine/pty/pty/input.ts +24 -24
  363. package/src/engine/pty/pty/pty.bun.ts +26 -26
  364. package/src/engine/pty/pty/pty.node.ts +27 -27
  365. package/src/engine/pty/pty/pty.ts +25 -25
  366. package/src/engine/pty/pty/schema.ts +14 -14
  367. package/src/engine/pty/pty/ticket.ts +68 -68
  368. package/src/engine/pty/pty.bun.ts +26 -26
  369. package/src/engine/pty/pty.node.ts +27 -27
  370. package/src/engine/pty/pty.ts +25 -25
  371. package/src/engine/pty/schema.ts +14 -14
  372. package/src/engine/pty/ticket.ts +68 -68
  373. package/src/engine/question/index.ts +213 -213
  374. package/src/engine/question/question/index.ts +213 -213
  375. package/src/engine/question/question/schema.ts +10 -10
  376. package/src/engine/question/schema.ts +10 -10
  377. package/src/engine/reference/reference/reference.ts +241 -241
  378. package/src/engine/reference/reference/repository-cache.ts +147 -147
  379. package/src/engine/reference/reference.ts +241 -241
  380. package/src/engine/reference/repository-cache.ts +147 -147
  381. package/src/engine/session/compaction.ts +651 -651
  382. package/src/engine/session/instruction.ts +238 -238
  383. package/src/engine/session/llm.ts +459 -459
  384. package/src/engine/session/message-error.ts +14 -14
  385. package/src/engine/session/message-v2.ts +1202 -1202
  386. package/src/engine/session/message.ts +146 -146
  387. package/src/engine/session/overflow.ts +32 -32
  388. package/src/engine/session/processor.ts +823 -823
  389. package/src/engine/session/prompt/anthropic.txt +105 -105
  390. package/src/engine/session/prompt/beast.txt +147 -147
  391. package/src/engine/session/prompt/build-switch.txt +5 -5
  392. package/src/engine/session/prompt/codex.txt +79 -79
  393. package/src/engine/session/prompt/copilot-gpt-5.txt +143 -143
  394. package/src/engine/session/prompt/default.txt +105 -105
  395. package/src/engine/session/prompt/gemini.txt +155 -155
  396. package/src/engine/session/prompt/gpt.txt +107 -107
  397. package/src/engine/session/prompt/kimi.txt +95 -95
  398. package/src/engine/session/prompt/max-steps.txt +15 -15
  399. package/src/engine/session/prompt/plan-reminder-anthropic.txt +67 -67
  400. package/src/engine/session/prompt/plan.txt +26 -26
  401. package/src/engine/session/prompt/trinity.txt +97 -97
  402. package/src/engine/session/prompt.ts +66 -9
  403. package/src/engine/session/retry.ts +200 -200
  404. package/src/engine/session/revert.ts +162 -162
  405. package/src/engine/session/run-state.ts +153 -153
  406. package/src/engine/session/schema.ts +26 -26
  407. package/src/engine/session/session.sql.ts +137 -137
  408. package/src/engine/session/session.ts +1011 -1011
  409. package/src/engine/session/status.ts +94 -94
  410. package/src/engine/session/summary.ts +164 -164
  411. package/src/engine/session/system.ts +84 -84
  412. package/src/engine/session/todo.ts +81 -81
  413. package/src/engine/share/session.ts +61 -61
  414. package/src/engine/share/share-next.ts +376 -376
  415. package/src/engine/share/share.sql.ts +13 -13
  416. package/src/engine/shell/shell/shell.ts +215 -215
  417. package/src/engine/shell/shell.ts +215 -215
  418. package/src/engine/skill/discovery.ts +116 -116
  419. package/src/engine/skill/index.ts +336 -336
  420. package/src/engine/skill/prompt/customize-opencode.md +377 -377
  421. package/src/engine/skill/skill/discovery.ts +116 -116
  422. package/src/engine/skill/skill/index.ts +336 -336
  423. package/src/engine/skill/skill/prompt/customize-opencode.md +377 -377
  424. package/src/engine/snapshot/index.ts +762 -762
  425. package/src/engine/snapshot/snapshot/index.ts +762 -762
  426. package/src/engine/sync/README.md +179 -179
  427. package/src/engine/sync/event.sql.ts +17 -17
  428. package/src/engine/sync/index.ts +410 -410
  429. package/src/engine/sync/schema.ts +11 -11
  430. package/src/engine/temporary.ts +33 -33
  431. package/src/engine/tool/apply_patch.ts +313 -313
  432. package/src/engine/tool/apply_patch.txt +33 -33
  433. package/src/engine/tool/edit.ts +711 -711
  434. package/src/engine/tool/edit.txt +10 -10
  435. package/src/engine/tool/external-directory.ts +49 -49
  436. package/src/engine/tool/glob.ts +103 -103
  437. package/src/engine/tool/glob.txt +6 -6
  438. package/src/engine/tool/grep.ts +156 -156
  439. package/src/engine/tool/grep.txt +8 -8
  440. package/src/engine/tool/invalid.ts +21 -21
  441. package/src/engine/tool/json-schema.ts +164 -164
  442. package/src/engine/tool/lsp.ts +113 -113
  443. package/src/engine/tool/lsp.txt +24 -24
  444. package/src/engine/tool/mcp-websearch.ts +96 -96
  445. package/src/engine/tool/plan-enter.txt +14 -14
  446. package/src/engine/tool/plan-exit.txt +13 -13
  447. package/src/engine/tool/plan.ts +78 -78
  448. package/src/engine/tool/question.ts +44 -44
  449. package/src/engine/tool/question.txt +10 -10
  450. package/src/engine/tool/read.ts +337 -337
  451. package/src/engine/tool/read.txt +14 -14
  452. package/src/engine/tool/registry.ts +472 -472
  453. package/src/engine/tool/repo_clone.ts +80 -80
  454. package/src/engine/tool/repo_clone.txt +5 -5
  455. package/src/engine/tool/repo_overview.ts +279 -279
  456. package/src/engine/tool/repo_overview.txt +4 -4
  457. package/src/engine/tool/schema.ts +14 -14
  458. package/src/engine/tool/shell/id.ts +19 -19
  459. package/src/engine/tool/shell/prompt.ts +295 -295
  460. package/src/engine/tool/shell/shell.txt +77 -77
  461. package/src/engine/tool/shell.ts +647 -647
  462. package/src/engine/tool/skill.ts +75 -75
  463. package/src/engine/tool/skill.txt +5 -5
  464. package/src/engine/tool/task.ts +337 -337
  465. package/src/engine/tool/task.txt +58 -58
  466. package/src/engine/tool/task_status.ts +179 -179
  467. package/src/engine/tool/task_status.txt +13 -13
  468. package/src/engine/tool/todo.ts +57 -57
  469. package/src/engine/tool/todowrite.txt +167 -167
  470. package/src/engine/tool/tool/apply_patch.ts +313 -313
  471. package/src/engine/tool/tool/apply_patch.txt +33 -33
  472. package/src/engine/tool/tool/edit.ts +711 -711
  473. package/src/engine/tool/tool/edit.txt +10 -10
  474. package/src/engine/tool/tool/external-directory.ts +49 -49
  475. package/src/engine/tool/tool/glob.ts +103 -103
  476. package/src/engine/tool/tool/glob.txt +6 -6
  477. package/src/engine/tool/tool/grep.ts +156 -156
  478. package/src/engine/tool/tool/grep.txt +8 -8
  479. package/src/engine/tool/tool/invalid.ts +21 -21
  480. package/src/engine/tool/tool/json-schema.ts +164 -164
  481. package/src/engine/tool/tool/lsp.ts +113 -113
  482. package/src/engine/tool/tool/lsp.txt +24 -24
  483. package/src/engine/tool/tool/mcp-websearch.ts +96 -96
  484. package/src/engine/tool/tool/plan-enter.txt +14 -14
  485. package/src/engine/tool/tool/plan-exit.txt +13 -13
  486. package/src/engine/tool/tool/plan.ts +78 -78
  487. package/src/engine/tool/tool/question.ts +44 -44
  488. package/src/engine/tool/tool/question.txt +10 -10
  489. package/src/engine/tool/tool/read.ts +337 -337
  490. package/src/engine/tool/tool/read.txt +14 -14
  491. package/src/engine/tool/tool/registry.ts +472 -472
  492. package/src/engine/tool/tool/repo_clone.ts +80 -80
  493. package/src/engine/tool/tool/repo_clone.txt +5 -5
  494. package/src/engine/tool/tool/repo_overview.ts +279 -279
  495. package/src/engine/tool/tool/repo_overview.txt +4 -4
  496. package/src/engine/tool/tool/schema.ts +14 -14
  497. package/src/engine/tool/tool/shell/id.ts +19 -19
  498. package/src/engine/tool/tool/shell/prompt.ts +295 -295
  499. package/src/engine/tool/tool/shell/shell.txt +77 -77
  500. package/src/engine/tool/tool/shell.ts +647 -647
  501. package/src/engine/tool/tool/skill.ts +75 -75
  502. package/src/engine/tool/tool/skill.txt +5 -5
  503. package/src/engine/tool/tool/task.ts +337 -337
  504. package/src/engine/tool/tool/task.txt +58 -58
  505. package/src/engine/tool/tool/task_status.ts +179 -179
  506. package/src/engine/tool/tool/task_status.txt +13 -13
  507. package/src/engine/tool/tool/todo.ts +57 -57
  508. package/src/engine/tool/tool/todowrite.txt +167 -167
  509. package/src/engine/tool/tool/tool.ts +164 -164
  510. package/src/engine/tool/tool/truncate.ts +160 -160
  511. package/src/engine/tool/tool/truncation-dir.ts +4 -4
  512. package/src/engine/tool/tool/webfetch.ts +192 -192
  513. package/src/engine/tool/tool/webfetch.txt +13 -13
  514. package/src/engine/tool/tool/websearch.ts +143 -143
  515. package/src/engine/tool/tool/websearch.txt +14 -14
  516. package/src/engine/tool/tool/write.ts +104 -104
  517. package/src/engine/tool/tool/write.txt +8 -8
  518. package/src/engine/tool/tool.ts +164 -164
  519. package/src/engine/tool/truncate.ts +160 -160
  520. package/src/engine/tool/truncation-dir.ts +4 -4
  521. package/src/engine/tool/webfetch.ts +192 -192
  522. package/src/engine/tool/webfetch.txt +13 -13
  523. package/src/engine/tool/websearch.ts +143 -143
  524. package/src/engine/tool/websearch.txt +14 -14
  525. package/src/engine/tool/write.ts +104 -104
  526. package/src/engine/tool/write.txt +8 -8
  527. package/src/engine/util/archive.ts +17 -17
  528. package/src/engine/util/bom.ts +31 -31
  529. package/src/engine/util/data-url.ts +9 -9
  530. package/src/engine/util/defer.ts +10 -10
  531. package/src/engine/util/effect-http-client.ts +11 -11
  532. package/src/engine/util/error.ts +88 -88
  533. package/src/engine/util/filesystem.ts +252 -252
  534. package/src/engine/util/format.ts +20 -20
  535. package/src/engine/util/iife.ts +3 -3
  536. package/src/engine/util/lazy.ts +20 -20
  537. package/src/engine/util/local-context.ts +25 -25
  538. package/src/engine/util/locale.ts +86 -86
  539. package/src/engine/util/media.ts +26 -26
  540. package/src/engine/util/process.ts +176 -176
  541. package/src/engine/util/queue.ts +32 -32
  542. package/src/engine/util/record.ts +3 -3
  543. package/src/engine/util/repository.ts +158 -158
  544. package/src/engine/util/rpc.ts +66 -66
  545. package/src/engine/util/signal.ts +12 -12
  546. package/src/engine/util/timeout.ts +13 -13
  547. package/src/engine/util/token.ts +7 -7
  548. package/src/engine/util/util/archive.ts +17 -17
  549. package/src/engine/util/util/bom.ts +31 -31
  550. package/src/engine/util/util/data-url.ts +9 -9
  551. package/src/engine/util/util/defer.ts +10 -10
  552. package/src/engine/util/util/effect-http-client.ts +11 -11
  553. package/src/engine/util/util/error.ts +88 -88
  554. package/src/engine/util/util/filesystem.ts +252 -252
  555. package/src/engine/util/util/format.ts +20 -20
  556. package/src/engine/util/util/iife.ts +3 -3
  557. package/src/engine/util/util/lazy.ts +20 -20
  558. package/src/engine/util/util/local-context.ts +25 -25
  559. package/src/engine/util/util/locale.ts +86 -86
  560. package/src/engine/util/util/media.ts +26 -26
  561. package/src/engine/util/util/process.ts +176 -176
  562. package/src/engine/util/util/queue.ts +32 -32
  563. package/src/engine/util/util/record.ts +3 -3
  564. package/src/engine/util/util/repository.ts +158 -158
  565. package/src/engine/util/util/rpc.ts +66 -66
  566. package/src/engine/util/util/signal.ts +12 -12
  567. package/src/engine/util/util/timeout.ts +13 -13
  568. package/src/engine/util/util/token.ts +7 -7
  569. package/src/engine/util/util/which.ts +14 -14
  570. package/src/engine/util/util/wildcard.ts +59 -59
  571. package/src/engine/util/which.ts +14 -14
  572. package/src/engine/util/wildcard.ts +59 -59
  573. package/src/engine/worktree/index.ts +621 -621
  574. package/src/server.ts +121 -158
  575. package/src/tui.ts +485 -502
@@ -1,161 +1,161 @@
1
- import { Context, Effect, Layer } from "effect"
2
- import { Database } from "./storage/db"
3
- import { DataMigrationTable } from "./data-migration.sql"
4
- import * as Log from "@opencode-ai/core/util/log"
5
- import { and, asc, eq, gt, inArray, sql } from "drizzle-orm"
6
- import { MessageTable, SessionTable } from "./session/session.sql"
7
- import type { SessionID } from "./session/schema"
8
-
9
- export type Migration<R = never> = {
10
- name: string
11
- run: Effect.Effect<void, unknown, R>
12
- }
13
-
14
- const log = Log.create({ service: "data-migration" })
15
-
16
- export interface Interface {}
17
-
18
- export class Service extends Context.Service<Service, Interface>()("@opencode/DataMigration") {}
19
-
20
- export const layer = Layer.effect(
21
- Service,
22
- Effect.gen(function* () {
23
- const migrations: Migration[] = [
24
- {
25
- name: "session_usage_from_messages",
26
- run: Effect.gen(function* () {
27
- type Usage = {
28
- cost: number
29
- tokens: { input: number; output: number; reasoning: number; cache: { read: number; write: number } }
30
- }
31
-
32
- for (let cursor: SessionID | undefined, page = 1; ; page++) {
33
- const next = yield* Effect.gen(function* () {
34
- const sessions = yield* Effect.sync(() =>
35
- Database.use((db) =>
36
- db
37
- .select({ id: SessionTable.id })
38
- .from(SessionTable)
39
- .where(cursor ? gt(SessionTable.id, cursor) : undefined)
40
- .orderBy(asc(SessionTable.id))
41
- .limit(100)
42
- .all(),
43
- ),
44
- )
45
- if (sessions.length === 0) return
46
-
47
- yield* Effect.sync(() =>
48
- Database.transaction((db) => {
49
- const usageBySession = new Map<SessionID, Usage>(
50
- sessions.map((session) => [
51
- session.id,
52
- { cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } },
53
- ]),
54
- )
55
-
56
- for (const row of db
57
- .select({
58
- session_id: MessageTable.session_id,
59
- cost: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.cost'), 0)), 0)`,
60
- tokens_input: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.input'), 0)), 0)`,
61
- tokens_output: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.output'), 0)), 0)`,
62
- tokens_reasoning: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.reasoning'), 0)), 0)`,
63
- tokens_cache_read: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.cache.read'), 0)), 0)`,
64
- tokens_cache_write: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.cache.write'), 0)), 0)`,
65
- })
66
- .from(MessageTable)
67
- .where(
68
- and(
69
- inArray(
70
- MessageTable.session_id,
71
- sessions.map((session) => session.id),
72
- ),
73
- sql`json_extract(${MessageTable.data}, '$.role') = 'assistant'`,
74
- ),
75
- )
76
- .groupBy(MessageTable.session_id)
77
- .all()) {
78
- const current = usageBySession.get(row.session_id)
79
- if (!current) continue
80
- current.cost = row.cost
81
- current.tokens.input = row.tokens_input
82
- current.tokens.output = row.tokens_output
83
- current.tokens.reasoning = row.tokens_reasoning
84
- current.tokens.cache.read = row.tokens_cache_read
85
- current.tokens.cache.write = row.tokens_cache_write
86
- }
87
-
88
- for (const [sessionID, value] of usageBySession) {
89
- db.update(SessionTable)
90
- .set({
91
- cost: value.cost,
92
- tokens_input: value.tokens.input,
93
- tokens_output: value.tokens.output,
94
- tokens_reasoning: value.tokens.reasoning,
95
- tokens_cache_read: value.tokens.cache.read,
96
- tokens_cache_write: value.tokens.cache.write,
97
- time_updated: sql`${SessionTable.time_updated}`,
98
- })
99
- .where(eq(SessionTable.id, sessionID))
100
- .run()
101
- }
102
- }),
103
- )
104
-
105
- return sessions.at(-1)?.id
106
- }).pipe(
107
- Effect.withSpan("DataMigration.sessionUsage.page", {
108
- attributes: {
109
- "data_migration.name": "session_usage_from_messages",
110
- "data_migration.page": page,
111
- "data_migration.cursor": cursor ?? "",
112
- },
113
- }),
114
- )
115
- if (!next) return
116
- cursor = next
117
- yield* Effect.sleep("10 millis")
118
- }
119
- }),
120
- },
121
- ]
122
-
123
- yield* Effect.gen(function* () {
124
- if (migrations.length === 0) return
125
-
126
- // Migrations run in a background fiber, so they must be resumable until
127
- // their completion row is written.
128
- for (const migration of migrations) {
129
- const completed = Database.use((db) =>
130
- db
131
- .select({ name: DataMigrationTable.name })
132
- .from(DataMigrationTable)
133
- .where(eq(DataMigrationTable.name, migration.name))
134
- .get(),
135
- )
136
- if (completed) continue
137
-
138
- log.info("running data migration", { name: migration.name })
139
- yield* migration.run.pipe(Effect.withSpan("DataMigration", { attributes: { name: migration.name } }))
140
- Database.use((db) =>
141
- db
142
- .insert(DataMigrationTable)
143
- .values({ name: migration.name, time_completed: Date.now() })
144
- .onConflictDoNothing()
145
- .run(),
146
- )
147
- }
148
- }).pipe(
149
- Effect.tapCause((cause) =>
150
- Effect.logError("failed to run data migrations").pipe(Effect.annotateLogs("cause", cause)),
151
- ),
152
- Effect.ignore,
153
- Effect.forkScoped,
154
- )
155
- return Service.of({})
156
- }),
157
- )
158
-
159
- export const defaultLayer = layer
160
-
161
- export * as DataMigration from "./data-migration"
1
+ import { Context, Effect, Layer } from "effect"
2
+ import { Database } from "./storage/db"
3
+ import { DataMigrationTable } from "./data-migration.sql"
4
+ import * as Log from "@opencode-ai/core/util/log"
5
+ import { and, asc, eq, gt, inArray, sql } from "drizzle-orm"
6
+ import { MessageTable, SessionTable } from "./session/session.sql"
7
+ import type { SessionID } from "./session/schema"
8
+
9
+ export type Migration<R = never> = {
10
+ name: string
11
+ run: Effect.Effect<void, unknown, R>
12
+ }
13
+
14
+ const log = Log.create({ service: "data-migration" })
15
+
16
+ export interface Interface {}
17
+
18
+ export class Service extends Context.Service<Service, Interface>()("@opencode/DataMigration") {}
19
+
20
+ export const layer = Layer.effect(
21
+ Service,
22
+ Effect.gen(function* () {
23
+ const migrations: Migration[] = [
24
+ {
25
+ name: "session_usage_from_messages",
26
+ run: Effect.gen(function* () {
27
+ type Usage = {
28
+ cost: number
29
+ tokens: { input: number; output: number; reasoning: number; cache: { read: number; write: number } }
30
+ }
31
+
32
+ for (let cursor: SessionID | undefined, page = 1; ; page++) {
33
+ const next = yield* Effect.gen(function* () {
34
+ const sessions = yield* Effect.sync(() =>
35
+ Database.use((db) =>
36
+ db
37
+ .select({ id: SessionTable.id })
38
+ .from(SessionTable)
39
+ .where(cursor ? gt(SessionTable.id, cursor) : undefined)
40
+ .orderBy(asc(SessionTable.id))
41
+ .limit(100)
42
+ .all(),
43
+ ),
44
+ )
45
+ if (sessions.length === 0) return
46
+
47
+ yield* Effect.sync(() =>
48
+ Database.transaction((db) => {
49
+ const usageBySession = new Map<SessionID, Usage>(
50
+ sessions.map((session) => [
51
+ session.id,
52
+ { cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } },
53
+ ]),
54
+ )
55
+
56
+ for (const row of db
57
+ .select({
58
+ session_id: MessageTable.session_id,
59
+ cost: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.cost'), 0)), 0)`,
60
+ tokens_input: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.input'), 0)), 0)`,
61
+ tokens_output: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.output'), 0)), 0)`,
62
+ tokens_reasoning: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.reasoning'), 0)), 0)`,
63
+ tokens_cache_read: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.cache.read'), 0)), 0)`,
64
+ tokens_cache_write: sql<number>`coalesce(sum(coalesce(json_extract(${MessageTable.data}, '$.tokens.cache.write'), 0)), 0)`,
65
+ })
66
+ .from(MessageTable)
67
+ .where(
68
+ and(
69
+ inArray(
70
+ MessageTable.session_id,
71
+ sessions.map((session) => session.id),
72
+ ),
73
+ sql`json_extract(${MessageTable.data}, '$.role') = 'assistant'`,
74
+ ),
75
+ )
76
+ .groupBy(MessageTable.session_id)
77
+ .all()) {
78
+ const current = usageBySession.get(row.session_id)
79
+ if (!current) continue
80
+ current.cost = row.cost
81
+ current.tokens.input = row.tokens_input
82
+ current.tokens.output = row.tokens_output
83
+ current.tokens.reasoning = row.tokens_reasoning
84
+ current.tokens.cache.read = row.tokens_cache_read
85
+ current.tokens.cache.write = row.tokens_cache_write
86
+ }
87
+
88
+ for (const [sessionID, value] of usageBySession) {
89
+ db.update(SessionTable)
90
+ .set({
91
+ cost: value.cost,
92
+ tokens_input: value.tokens.input,
93
+ tokens_output: value.tokens.output,
94
+ tokens_reasoning: value.tokens.reasoning,
95
+ tokens_cache_read: value.tokens.cache.read,
96
+ tokens_cache_write: value.tokens.cache.write,
97
+ time_updated: sql`${SessionTable.time_updated}`,
98
+ })
99
+ .where(eq(SessionTable.id, sessionID))
100
+ .run()
101
+ }
102
+ }),
103
+ )
104
+
105
+ return sessions.at(-1)?.id
106
+ }).pipe(
107
+ Effect.withSpan("DataMigration.sessionUsage.page", {
108
+ attributes: {
109
+ "data_migration.name": "session_usage_from_messages",
110
+ "data_migration.page": page,
111
+ "data_migration.cursor": cursor ?? "",
112
+ },
113
+ }),
114
+ )
115
+ if (!next) return
116
+ cursor = next
117
+ yield* Effect.sleep("10 millis")
118
+ }
119
+ }),
120
+ },
121
+ ]
122
+
123
+ yield* Effect.gen(function* () {
124
+ if (migrations.length === 0) return
125
+
126
+ // Migrations run in a background fiber, so they must be resumable until
127
+ // their completion row is written.
128
+ for (const migration of migrations) {
129
+ const completed = Database.use((db) =>
130
+ db
131
+ .select({ name: DataMigrationTable.name })
132
+ .from(DataMigrationTable)
133
+ .where(eq(DataMigrationTable.name, migration.name))
134
+ .get(),
135
+ )
136
+ if (completed) continue
137
+
138
+ log.info("running data migration", { name: migration.name })
139
+ yield* migration.run.pipe(Effect.withSpan("DataMigration", { attributes: { name: migration.name } }))
140
+ Database.use((db) =>
141
+ db
142
+ .insert(DataMigrationTable)
143
+ .values({ name: migration.name, time_completed: Date.now() })
144
+ .onConflictDoNothing()
145
+ .run(),
146
+ )
147
+ }
148
+ }).pipe(
149
+ Effect.tapCause((cause) =>
150
+ Effect.logError("failed to run data migrations").pipe(Effect.annotateLogs("cause", cause)),
151
+ ),
152
+ Effect.ignore,
153
+ Effect.forkScoped,
154
+ )
155
+ return Service.of({})
156
+ }),
157
+ )
158
+
159
+ export const defaultLayer = layer
160
+
161
+ export * as DataMigration from "./data-migration"
@@ -1,143 +1,143 @@
1
- import { Layer, ManagedRuntime } from "effect"
2
- import { attach } from "./run-service"
3
- import * as Observability from "@opencode-ai/core/effect/observability"
4
-
5
- import { AppFileSystem } from "@opencode-ai/core/filesystem"
6
- import { Bus } from "@/bus"
7
- import { Auth } from "@/auth"
8
- import { Account } from "@/account/account"
9
- import { Config } from "@/config/config"
10
- import { Git } from "@/git"
11
- import { Ripgrep } from "@/file/ripgrep"
12
- import { File } from "@/file"
13
- import { FileWatcher } from "@/file/watcher"
14
- import { Storage } from "@/storage/storage"
15
- import { Snapshot } from "@/snapshot"
16
- import { Plugin } from "@/plugin"
17
- import { ModelsDev } from "@opencode-ai/core/models"
18
- import { Provider } from "@/provider/provider"
19
- import { ProviderAuth } from "@/provider/auth"
20
- import { Agent } from "@/agent/agent"
21
- import { Skill } from "@/skill"
22
- import { Discovery } from "@/skill/discovery"
23
- import { Question } from "@/question"
24
- import { Permission } from "@/permission"
25
- import { Todo } from "@/session/todo"
26
- import { Session } from "@/session/session"
27
- import { SessionStatus } from "@/session/status"
28
- import { SessionRunState } from "@/session/run-state"
29
- import { SessionProcessor } from "@/session/processor"
30
- import { SessionCompaction } from "@/session/compaction"
31
- import { SessionRevert } from "@/session/revert"
32
- import { SessionSummary } from "@/session/summary"
33
- import { SessionPrompt } from "@/session/prompt"
34
- import { Instruction } from "@/session/instruction"
35
- import { LLM } from "@/session/llm"
36
- import { LSP } from "@/lsp/lsp"
37
- import { MCP } from "@/mcp"
38
- import { McpAuth } from "@/mcp/auth"
39
- import { Command } from "@/command"
40
- import { Truncate } from "@/tool/truncate"
41
- import { ToolRegistry } from "@/tool/registry"
42
- import { Format } from "@/format"
43
- import { InstanceLayer } from "@/project/instance-layer"
44
- import { Project } from "@/project/project"
45
- import { Vcs } from "@/project/vcs"
46
- import { Reference } from "@/reference/reference"
47
- import { Workspace } from "@/control-plane/workspace"
48
- import { Worktree } from "@/worktree"
49
- import { Pty } from "@/pty"
50
- import { PtyTicket } from "@/pty/ticket"
51
- import { Installation } from "@/installation"
52
- import { ShareNext } from "@/share/share-next"
53
- import { SessionShare } from "@/share/session"
54
- import { SyncEvent } from "@/sync"
55
- import { Npm } from "@opencode-ai/core/npm"
56
- import { memoMap } from "@opencode-ai/core/effect/memo-map"
57
- import { DataMigration } from "@/data-migration"
58
- import { BackgroundJob } from "@/background/job"
59
- import { EventV2Bridge } from "@/event-v2-bridge"
60
- import { RuntimeFlags } from "@/effect/runtime-flags"
61
-
62
- export const AppLayer = Layer.mergeAll(
63
- Npm.defaultLayer,
64
- AppFileSystem.defaultLayer,
65
- Bus.defaultLayer,
66
- Auth.defaultLayer,
67
- Account.defaultLayer,
68
- Config.defaultLayer,
69
- Git.defaultLayer,
70
- Ripgrep.defaultLayer,
71
- File.defaultLayer,
72
- FileWatcher.defaultLayer,
73
- Storage.defaultLayer,
74
- Snapshot.defaultLayer,
75
- Plugin.defaultLayer,
76
- ModelsDev.defaultLayer,
77
- Provider.defaultLayer,
78
- ProviderAuth.defaultLayer,
79
- Agent.defaultLayer,
80
- Skill.defaultLayer,
81
- Discovery.defaultLayer,
82
- Question.defaultLayer,
83
- Permission.defaultLayer,
84
- Todo.defaultLayer,
85
- Session.defaultLayer,
86
- SessionStatus.defaultLayer,
87
- BackgroundJob.defaultLayer,
88
- RuntimeFlags.defaultLayer,
89
- SessionRunState.defaultLayer,
90
- SessionProcessor.defaultLayer,
91
- SessionCompaction.defaultLayer,
92
- SessionRevert.defaultLayer,
93
- SessionSummary.defaultLayer,
94
- SessionPrompt.defaultLayer,
95
- Instruction.defaultLayer,
96
- LLM.defaultLayer,
97
- LSP.defaultLayer,
98
- MCP.defaultLayer,
99
- McpAuth.defaultLayer,
100
- Command.defaultLayer,
101
- Truncate.defaultLayer,
102
- ToolRegistry.defaultLayer,
103
- Format.defaultLayer,
104
- Project.defaultLayer,
105
- Vcs.defaultLayer,
106
- Reference.defaultLayer,
107
- Workspace.defaultLayer,
108
- Worktree.appLayer,
109
- Pty.defaultLayer,
110
- PtyTicket.defaultLayer,
111
- Installation.defaultLayer,
112
- ShareNext.defaultLayer,
113
- SessionShare.defaultLayer,
114
- SyncEvent.defaultLayer,
115
- EventV2Bridge.defaultLayer,
116
- DataMigration.defaultLayer,
117
- ).pipe(Layer.provideMerge(InstanceLayer.layer), Layer.provideMerge(Observability.layer))
118
-
119
- const rt = ManagedRuntime.make(AppLayer, { memoMap })
120
- type Runtime = Pick<typeof rt, "runSync" | "runPromise" | "runPromiseExit" | "runFork" | "runCallback" | "dispose">
121
-
122
- /** Services provided by AppRuntime — i.e. what an Effect run via AppRuntime.runPromise can yield. */
123
- export type AppServices = ManagedRuntime.ManagedRuntime.Services<typeof rt>
124
- const wrap = (effect: Parameters<typeof rt.runSync>[0]) => attach(effect as never) as never
125
-
126
- export const AppRuntime: Runtime = {
127
- runSync(effect) {
128
- return rt.runSync(wrap(effect))
129
- },
130
- runPromise(effect, options) {
131
- return rt.runPromise(wrap(effect), options)
132
- },
133
- runPromiseExit(effect, options) {
134
- return rt.runPromiseExit(wrap(effect), options)
135
- },
136
- runFork(effect) {
137
- return rt.runFork(wrap(effect))
138
- },
139
- runCallback(effect) {
140
- return rt.runCallback(wrap(effect))
141
- },
142
- dispose: () => rt.dispose(),
143
- }
1
+ import { Layer, ManagedRuntime } from "effect"
2
+ import { attach } from "./run-service"
3
+ import * as Observability from "@opencode-ai/core/effect/observability"
4
+
5
+ import { AppFileSystem } from "@opencode-ai/core/filesystem"
6
+ import { Bus } from "@/bus"
7
+ import { Auth } from "@/auth"
8
+ import { Account } from "@/account/account"
9
+ import { Config } from "@/config/config"
10
+ import { Git } from "@/git"
11
+ import { Ripgrep } from "@/file/ripgrep"
12
+ import { File } from "@/file"
13
+ import { FileWatcher } from "@/file/watcher"
14
+ import { Storage } from "@/storage/storage"
15
+ import { Snapshot } from "@/snapshot"
16
+ import { Plugin } from "@/plugin"
17
+ import { ModelsDev } from "@opencode-ai/core/models"
18
+ import { Provider } from "@/provider/provider"
19
+ import { ProviderAuth } from "@/provider/auth"
20
+ import { Agent } from "@/agent/agent"
21
+ import { Skill } from "@/skill"
22
+ import { Discovery } from "@/skill/discovery"
23
+ import { Question } from "@/question"
24
+ import { Permission } from "@/permission"
25
+ import { Todo } from "@/session/todo"
26
+ import { Session } from "@/session/session"
27
+ import { SessionStatus } from "@/session/status"
28
+ import { SessionRunState } from "@/session/run-state"
29
+ import { SessionProcessor } from "@/session/processor"
30
+ import { SessionCompaction } from "@/session/compaction"
31
+ import { SessionRevert } from "@/session/revert"
32
+ import { SessionSummary } from "@/session/summary"
33
+ import { SessionPrompt } from "@/session/prompt"
34
+ import { Instruction } from "@/session/instruction"
35
+ import { LLM } from "@/session/llm"
36
+ import { LSP } from "@/lsp/lsp"
37
+ import { MCP } from "@/mcp"
38
+ import { McpAuth } from "@/mcp/auth"
39
+ import { Command } from "@/command"
40
+ import { Truncate } from "@/tool/truncate"
41
+ import { ToolRegistry } from "@/tool/registry"
42
+ import { Format } from "@/format"
43
+ import { InstanceLayer } from "@/project/instance-layer"
44
+ import { Project } from "@/project/project"
45
+ import { Vcs } from "@/project/vcs"
46
+ import { Reference } from "@/reference/reference"
47
+ import { Workspace } from "@/control-plane/workspace"
48
+ import { Worktree } from "@/worktree"
49
+ import { Pty } from "@/pty"
50
+ import { PtyTicket } from "@/pty/ticket"
51
+ import { Installation } from "@/installation"
52
+ import { ShareNext } from "@/share/share-next"
53
+ import { SessionShare } from "@/share/session"
54
+ import { SyncEvent } from "@/sync"
55
+ import { Npm } from "@opencode-ai/core/npm"
56
+ import { memoMap } from "@opencode-ai/core/effect/memo-map"
57
+ import { DataMigration } from "@/data-migration"
58
+ import { BackgroundJob } from "@/background/job"
59
+ import { EventV2Bridge } from "@/event-v2-bridge"
60
+ import { RuntimeFlags } from "@/effect/runtime-flags"
61
+
62
+ export const AppLayer = Layer.mergeAll(
63
+ Npm.defaultLayer,
64
+ AppFileSystem.defaultLayer,
65
+ Bus.defaultLayer,
66
+ Auth.defaultLayer,
67
+ Account.defaultLayer,
68
+ Config.defaultLayer,
69
+ Git.defaultLayer,
70
+ Ripgrep.defaultLayer,
71
+ File.defaultLayer,
72
+ FileWatcher.defaultLayer,
73
+ Storage.defaultLayer,
74
+ Snapshot.defaultLayer,
75
+ Plugin.defaultLayer,
76
+ ModelsDev.defaultLayer,
77
+ Provider.defaultLayer,
78
+ ProviderAuth.defaultLayer,
79
+ Agent.defaultLayer,
80
+ Skill.defaultLayer,
81
+ Discovery.defaultLayer,
82
+ Question.defaultLayer,
83
+ Permission.defaultLayer,
84
+ Todo.defaultLayer,
85
+ Session.defaultLayer,
86
+ SessionStatus.defaultLayer,
87
+ BackgroundJob.defaultLayer,
88
+ RuntimeFlags.defaultLayer,
89
+ SessionRunState.defaultLayer,
90
+ SessionProcessor.defaultLayer,
91
+ SessionCompaction.defaultLayer,
92
+ SessionRevert.defaultLayer,
93
+ SessionSummary.defaultLayer,
94
+ SessionPrompt.defaultLayer,
95
+ Instruction.defaultLayer,
96
+ LLM.defaultLayer,
97
+ LSP.defaultLayer,
98
+ MCP.defaultLayer,
99
+ McpAuth.defaultLayer,
100
+ Command.defaultLayer,
101
+ Truncate.defaultLayer,
102
+ ToolRegistry.defaultLayer,
103
+ Format.defaultLayer,
104
+ Project.defaultLayer,
105
+ Vcs.defaultLayer,
106
+ Reference.defaultLayer,
107
+ Workspace.defaultLayer,
108
+ Worktree.appLayer,
109
+ Pty.defaultLayer,
110
+ PtyTicket.defaultLayer,
111
+ Installation.defaultLayer,
112
+ ShareNext.defaultLayer,
113
+ SessionShare.defaultLayer,
114
+ SyncEvent.defaultLayer,
115
+ EventV2Bridge.defaultLayer,
116
+ DataMigration.defaultLayer,
117
+ ).pipe(Layer.provideMerge(InstanceLayer.layer), Layer.provideMerge(Observability.layer))
118
+
119
+ const rt = ManagedRuntime.make(AppLayer, { memoMap })
120
+ type Runtime = Pick<typeof rt, "runSync" | "runPromise" | "runPromiseExit" | "runFork" | "runCallback" | "dispose">
121
+
122
+ /** Services provided by AppRuntime — i.e. what an Effect run via AppRuntime.runPromise can yield. */
123
+ export type AppServices = ManagedRuntime.ManagedRuntime.Services<typeof rt>
124
+ const wrap = (effect: Parameters<typeof rt.runSync>[0]) => attach(effect as never) as never
125
+
126
+ export const AppRuntime: Runtime = {
127
+ runSync(effect) {
128
+ return rt.runSync(wrap(effect))
129
+ },
130
+ runPromise(effect, options) {
131
+ return rt.runPromise(wrap(effect), options)
132
+ },
133
+ runPromiseExit(effect, options) {
134
+ return rt.runPromiseExit(wrap(effect), options)
135
+ },
136
+ runFork(effect) {
137
+ return rt.runFork(wrap(effect))
138
+ },
139
+ runCallback(effect) {
140
+ return rt.runCallback(wrap(effect))
141
+ },
142
+ dispose: () => rt.dispose(),
143
+ }