@opencode-ai/core 0.0.0-dev-18672 → 0.0.0-dev-18677

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 (342) hide show
  1. package/dist/agent.js +55 -55
  2. package/dist/bus.js +54 -54
  3. package/dist/catalog.js +60 -60
  4. package/dist/chunks/{job-80da86tg.js → job-0ard5z33.js} +8 -8
  5. package/dist/chunks/{job-b00nnaq9.js → job-0j6yxnr1.js} +1 -1
  6. package/dist/chunks/{job-pdjydef9.js → job-0mhpcp7m.js} +8 -8
  7. package/dist/chunks/{job-fvvezzmj.js → job-0rw5mgza.js} +4 -4
  8. package/dist/chunks/{job-qfrdf4pp.js → job-0vhffh46.js} +2 -2
  9. package/dist/chunks/{job-65pq2awn.js → job-11rrpezh.js} +2 -2
  10. package/dist/chunks/{job-by5ahdmn.js → job-1emzt0wt.js} +2 -2
  11. package/dist/chunks/{job-kh6h1dnp.js → job-25d8xd9w.js} +4 -4
  12. package/dist/chunks/{job-d7tex8vw.js → job-2hnk029s.js} +4 -4
  13. package/dist/chunks/{job-xj36f829.js → job-2jft3yd5.js} +4 -4
  14. package/dist/chunks/{job-j2ycm9z4.js → job-2ptj9njb.js} +2 -2
  15. package/dist/chunks/{job-rf761s4s.js → job-2spyzfer.js} +1 -1
  16. package/dist/chunks/{job-wtw7jjye.js → job-2xxqbh3j.js} +11 -11
  17. package/dist/chunks/{job-8cwenzvp.js → job-30ngbap7.js} +1 -1
  18. package/dist/chunks/{job-n4dgw0xt.js → job-3asq9qd5.js} +5 -5
  19. package/dist/chunks/{job-k6144ffg.js → job-3fbdyapk.js} +4 -4
  20. package/dist/chunks/{job-zc8fs7ja.js → job-3fhw42bc.js} +9 -9
  21. package/dist/chunks/{job-7khw64yh.js → job-41qzzbpz.js} +2 -1
  22. package/dist/chunks/{job-8yw108g0.js → job-42wbxjzr.js} +1 -1
  23. package/dist/chunks/{job-6v09q7yq.js → job-46crkez1.js} +5 -5
  24. package/dist/chunks/{job-cgk0rd59.js → job-47gdfeya.js} +33 -33
  25. package/dist/chunks/{job-8jc2enar.js → job-48vsw0jw.js} +2 -2
  26. package/dist/chunks/{job-mpfgsdrh.js → job-4df507vk.js} +88 -80
  27. package/dist/chunks/{job-80zbkrcd.js → job-4seh17cq.js} +3 -3
  28. package/dist/chunks/{job-s01e1342.js → job-54fer0d0.js} +1 -1
  29. package/dist/chunks/job-57pbmnfc.js +33 -0
  30. package/dist/chunks/{job-xmwyxb9k.js → job-587cy5wm.js} +10 -10
  31. package/dist/chunks/{job-a47s3ea3.js → job-61m6ks43.js} +1 -1
  32. package/dist/chunks/job-6266zj4e.js +34 -0
  33. package/dist/chunks/{job-gync8gtj.js → job-6421j3fd.js} +4 -4
  34. package/dist/chunks/job-68jwqkqq.js +203 -0
  35. package/dist/chunks/{job-q4j6qz7v.js → job-762jys75.js} +2 -2
  36. package/dist/chunks/{job-enc3xapd.js → job-7b8p713x.js} +7 -7
  37. package/dist/chunks/{job-vmymyf43.js → job-7jp3zpyh.js} +23 -23
  38. package/dist/chunks/{job-jhtwpwqf.js → job-7s30ncaq.js} +1 -1
  39. package/dist/chunks/{job-9h09ngzj.js → job-813exka1.js} +3 -3
  40. package/dist/chunks/{job-d76sryr8.js → job-8hhxd7er.js} +11 -11
  41. package/dist/chunks/{job-e23pjz9a.js → job-8n8yxdw2.js} +4 -4
  42. package/dist/chunks/{job-mw6h1mdq.js → job-910ht18m.js} +5 -5
  43. package/dist/chunks/{job-gvsam8jx.js → job-9bg23qva.js} +9 -9
  44. package/dist/chunks/{job-cpa075bh.js → job-9e6s2wbs.js} +1 -1
  45. package/dist/chunks/{job-gqbtj7pd.js → job-9jtvr9f7.js} +2 -2
  46. package/dist/chunks/{job-t0tzp8as.js → job-9tna6sny.js} +8 -8
  47. package/dist/chunks/{job-neghybv4.js → job-9vbhxvnk.js} +1 -1
  48. package/dist/chunks/{job-3yszyekv.js → job-af6k8xdc.js} +11 -11
  49. package/dist/chunks/{job-8jx3zaaw.js → job-ajmf56n3.js} +13 -13
  50. package/dist/chunks/{job-e351sacj.js → job-ajzk3rs2.js} +3 -3
  51. package/dist/chunks/{job-grpar5rf.js → job-aksqn8ry.js} +1 -1
  52. package/dist/chunks/{job-ykh0dsvx.js → job-arxtz9h4.js} +1 -1
  53. package/dist/chunks/{job-yg6wn6pq.js → job-ave2dd3r.js} +53 -51
  54. package/dist/chunks/{job-9zvvrfjj.js → job-b2jn2z3c.js} +3 -3
  55. package/dist/chunks/{job-zfevs57b.js → job-b4jawdm2.js} +2 -2
  56. package/dist/chunks/{job-0a5cxvrd.js → job-bfbx87ej.js} +4 -4
  57. package/dist/chunks/{job-06d3f5y4.js → job-bn0n0hq9.js} +4 -4
  58. package/dist/chunks/{job-hz615c35.js → job-bv2z3evd.js} +11 -11
  59. package/dist/chunks/{job-pqsahr8v.js → job-bvavh6pe.js} +6 -6
  60. package/dist/chunks/{job-cqajeq32.js → job-caf5y5zg.js} +2 -2
  61. package/dist/chunks/{job-w7e1pt49.js → job-cdm889rz.js} +1 -1
  62. package/dist/chunks/job-cgqn2mrm.js +147 -0
  63. package/dist/chunks/{job-933372yf.js → job-cqr0z25w.js} +2 -2
  64. package/dist/chunks/job-cs1gk7aw.js +330 -0
  65. package/dist/chunks/{job-adszyp8d.js → job-dc495s0z.js} +4 -4
  66. package/dist/chunks/{job-j281xcgt.js → job-de5esam2.js} +1 -1
  67. package/dist/chunks/{job-fr340fdw.js → job-dh8ckpgp.js} +1 -1
  68. package/dist/chunks/{job-48pk08ny.js → job-dmvhg2kz.js} +5 -5
  69. package/dist/chunks/{job-y0vjfmkp.js → job-dn8yfcj9.js} +4 -4
  70. package/dist/chunks/{job-s6f237ya.js → job-dv2qtrbh.js} +1 -1
  71. package/dist/chunks/{job-mys0gzrb.js → job-e08y7spt.js} +2 -2
  72. package/dist/chunks/{job-etsqapn2.js → job-e43zqy1x.js} +13 -13
  73. package/dist/chunks/{job-t01vm81t.js → job-e4v0c7ed.js} +4 -4
  74. package/dist/chunks/{job-pfnc64fq.js → job-emzj2mnz.js} +1 -1
  75. package/dist/chunks/{job-kk6795c5.js → job-evztkcdr.js} +2 -2
  76. package/dist/chunks/{job-rar33brv.js → job-ey3px3v3.js} +4 -4
  77. package/dist/chunks/{job-aa4kwxwn.js → job-f59p8r33.js} +57 -57
  78. package/dist/chunks/{job-aa3y5eb6.js → job-fagh19yc.js} +8 -8
  79. package/dist/chunks/{job-d3070erz.js → job-fbd4gqt5.js} +8 -8
  80. package/dist/chunks/{job-5kmvzsep.js → job-fe8hw932.js} +2 -2
  81. package/dist/chunks/{job-xhg28nqg.js → job-fg9cms5n.js} +10 -10
  82. package/dist/chunks/{job-ecft2zb7.js → job-fjvbp1rw.js} +97 -71
  83. package/dist/chunks/{job-ynndvamt.js → job-g9rvq1b5.js} +1 -1
  84. package/dist/chunks/{job-j1x63ws2.js → job-g9vy0vzc.js} +4 -4
  85. package/dist/chunks/{job-h7c24q5e.js → job-h5cf492r.js} +3 -3
  86. package/dist/chunks/{job-qhne0bfz.js → job-h9bbwcgd.js} +2 -2
  87. package/dist/chunks/job-hym53p1s.js +120 -0
  88. package/dist/chunks/{job-akaxmhy2.js → job-jp8kwwgf.js} +1 -1
  89. package/dist/chunks/{job-8mn5mgyr.js → job-jq8sgn79.js} +4 -4
  90. package/dist/chunks/{job-fzbykpt4.js → job-jr5hd5p5.js} +2 -2
  91. package/dist/chunks/{job-hfz7a01m.js → job-k4t29e2h.js} +2 -2
  92. package/dist/chunks/{job-06qvjrg9.js → job-ka9jgdn3.js} +2 -2
  93. package/dist/chunks/{job-17v4eyzv.js → job-kaffyxmp.js} +19 -16
  94. package/dist/chunks/{job-dycyy74c.js → job-kh42a55x.js} +5 -5
  95. package/dist/chunks/{job-a4hq1eed.js → job-khy57ct7.js} +1 -1
  96. package/dist/chunks/{job-yd7nnpt2.js → job-knqwwztd.js} +2 -2
  97. package/dist/chunks/{job-0cswjekc.js → job-kpkmmjx3.js} +6 -6
  98. package/dist/chunks/{job-xb6rqpkw.js → job-m1fdqckz.js} +2 -2
  99. package/dist/chunks/{job-bys7bj13.js → job-m90gkrdr.js} +2 -2
  100. package/dist/chunks/{job-eqzr475n.js → job-me02a623.js} +1 -1
  101. package/dist/chunks/{job-j747drck.js → job-me5d9f22.js} +10 -10
  102. package/dist/chunks/{job-epm45yqe.js → job-mwzjwhar.js} +3 -3
  103. package/dist/chunks/{job-g8xqvtzt.js → job-n5tqbq9v.js} +7 -7
  104. package/dist/chunks/{job-f4m8j480.js → job-ndmfymhz.js} +1 -1
  105. package/dist/chunks/{job-1s4wnb4w.js → job-new463fc.js} +3 -3
  106. package/dist/chunks/{job-vpxts0t1.js → job-nh8pkdtv.js} +2 -2
  107. package/dist/chunks/{job-tc7x5j06.js → job-nvaw7ncd.js} +33 -33
  108. package/dist/chunks/{job-vs8jy4ry.js → job-p62bwtxn.js} +2 -2
  109. package/dist/chunks/{job-vejbzny4.js → job-pb8mvhpw.js} +1 -1
  110. package/dist/chunks/{job-zg4nw3xx.js → job-pkn40a12.js} +12 -12
  111. package/dist/chunks/{job-gchsqkce.js → job-pskv33a2.js} +8 -8
  112. package/dist/chunks/{job-cjtr52kr.js → job-q87p9xpa.js} +1 -1
  113. package/dist/chunks/{job-d5wq6f3r.js → job-qba7b96d.js} +6 -6
  114. package/dist/chunks/{job-xbzvfkpx.js → job-qjge9hjg.js} +3 -3
  115. package/dist/chunks/{job-jzvgq7me.js → job-qyg9b9kw.js} +5 -5
  116. package/dist/chunks/{job-bm5twtfa.js → job-r7gxb078.js} +1 -1
  117. package/dist/chunks/{job-hs06t8ty.js → job-rp954h3j.js} +4 -4
  118. package/dist/chunks/{job-k8xp7mcd.js → job-rvnd6a2n.js} +3 -3
  119. package/dist/chunks/{job-3303kydv.js → job-sx7e8x54.js} +43 -43
  120. package/dist/chunks/{job-s0gy3v9a.js → job-t0esftz3.js} +151 -151
  121. package/dist/chunks/{job-e6q6vz22.js → job-tjvgp8sx.js} +1 -1
  122. package/dist/chunks/{job-7yxdgcdg.js → job-tywfhfz1.js} +4 -4
  123. package/dist/chunks/{job-cwj9rdmj.js → job-v4rnjb1g.js} +1 -1
  124. package/dist/chunks/{job-pm83fkmc.js → job-v50dw4p6.js} +2 -2
  125. package/dist/chunks/{job-5nzn6awb.js → job-v9j3k8n3.js} +2 -2
  126. package/dist/chunks/{job-18pyn74f.js → job-wcdz88tf.js} +1 -1
  127. package/dist/chunks/{job-k828h0dz.js → job-x4rdp18t.js} +1 -1
  128. package/dist/chunks/{job-zm13y53a.js → job-x9rd2vnh.js} +1 -1
  129. package/dist/chunks/{job-nzav41nk.js → job-xygthxr3.js} +2 -2
  130. package/dist/chunks/{job-5dxkqmk4.js → job-y3sfr5g3.js} +5 -5
  131. package/dist/chunks/{job-hfqszyr8.js → job-ye4yygw2.js} +3 -3
  132. package/dist/chunks/job-yyjmndg0.js +483 -0
  133. package/dist/chunks/{job-1n129eaz.js → job-yypfb467.js} +4 -4
  134. package/dist/chunks/{job-byr8vxta.js → job-z136m2k9.js} +1 -1
  135. package/dist/chunks/{job-fvv9e4db.js → job-z3fjxbtv.js} +4 -4
  136. package/dist/chunks/{job-y8zz706c.js → job-z61mvmr2.js} +10 -10
  137. package/dist/chunks/{job-t8avpjr7.js → job-zjdkpeq1.js} +15 -13
  138. package/dist/chunks/{job-jw46cgkj.js → job-zq3dpz3n.js} +1 -1
  139. package/dist/chunks/{job-xz4ftad6.js → job-zr6va574.js} +2 -2
  140. package/dist/chunks/{job-ph8sywta.js → job-zrccwvnf.js} +3 -3
  141. package/dist/chunks/{job-65vce25m.js → job-zwajk1qj.js} +2 -2
  142. package/dist/chunks/{job-wt8zhbvy.js → job-zzhrh7mp.js} +2 -2
  143. package/dist/chunks/{job-33z7atwz.js → job-zzp6hyw7.js} +2 -2
  144. package/dist/command.js +55 -55
  145. package/dist/config/normalize.js +11 -11
  146. package/dist/config/plugin/agent.js +99 -99
  147. package/dist/config/plugin/command.js +84 -84
  148. package/dist/config/plugin/compaction.js +109 -109
  149. package/dist/config/plugin/entry-observer.js +82 -82
  150. package/dist/config/plugin/formatter.js +86 -86
  151. package/dist/config/plugin/image.js +98 -98
  152. package/dist/config/plugin/instruction.js +65 -65
  153. package/dist/config/plugin/location-watcher.js +84 -84
  154. package/dist/config/plugin/mcp.js +94 -94
  155. package/dist/config/plugin/policy.js +84 -84
  156. package/dist/config/plugin/provider.js +83 -83
  157. package/dist/config/plugin/reference.js +86 -86
  158. package/dist/config/plugin/shell.js +84 -84
  159. package/dist/config/plugin/skill-file.js +74 -74
  160. package/dist/config/plugin/skill.js +101 -101
  161. package/dist/config/plugin/snapshot.js +84 -84
  162. package/dist/config/plugin/source.js +83 -83
  163. package/dist/config/plugin/tool-output.js +86 -86
  164. package/dist/config/plugin/websearch.js +83 -83
  165. package/dist/config.js +82 -82
  166. package/dist/credential.js +56 -56
  167. package/dist/database/database.js +53 -53
  168. package/dist/database/drizzle/effect-sqlite/driver.js +8 -8
  169. package/dist/database/drizzle/effect-sqlite/index.js +8 -8
  170. package/dist/database/drizzle/effect-sqlite/session.js +7 -7
  171. package/dist/database/drizzle/index.js +9 -9
  172. package/dist/database/drizzle/sqlite-core/effect/db.js +5 -5
  173. package/dist/database/drizzle/sqlite-core/effect/index.js +16 -16
  174. package/dist/database/drizzle/sqlite-core/effect/session.js +6 -6
  175. package/dist/database/drizzle.js +9 -9
  176. package/dist/database/migration.gen.js +36 -36
  177. package/dist/database/migration.js +38 -38
  178. package/dist/database/v1-migration.bun.js +58 -58
  179. package/dist/effect/app-node-builder.js +283 -279
  180. package/dist/environment/environment.js +66 -66
  181. package/dist/environment/index.js +68 -68
  182. package/dist/event-logger.js +54 -54
  183. package/dist/file-mutation.js +67 -67
  184. package/dist/filesystem/location-watcher.js +257 -255
  185. package/dist/filesystem/search.js +69 -69
  186. package/dist/filesystem.js +70 -70
  187. package/dist/form.js +55 -55
  188. package/dist/formatter.js +63 -63
  189. package/dist/generate.js +64 -64
  190. package/dist/git.js +2 -2
  191. package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +3 -3
  192. package/dist/github-copilot/copilot-provider.js +9 -9
  193. package/dist/github-copilot/responses/openai-responses-language-model.js +6 -6
  194. package/dist/github-copilot/responses/openai-responses-prepare-tools.js +4 -4
  195. package/dist/image/photon.js +71 -71
  196. package/dist/image.js +71 -71
  197. package/dist/instance.js +280 -276
  198. package/dist/instruction-discovery.js +56 -56
  199. package/dist/instructions/builtins.js +64 -64
  200. package/dist/integration.js +58 -58
  201. package/dist/job.js +57 -57
  202. package/dist/kv.js +54 -54
  203. package/dist/location-activity.js +65 -65
  204. package/dist/location-mutation.js +63 -63
  205. package/dist/location-service-map.js +62 -62
  206. package/dist/location-services.js +283 -279
  207. package/dist/location.js +62 -62
  208. package/dist/mcp/client.js +67 -67
  209. package/dist/mcp/index.js +72 -72
  210. package/dist/mcp/instructions.js +96 -96
  211. package/dist/mcp/stdio.js +67 -67
  212. package/dist/model-resolver.js +63 -63
  213. package/dist/models-dev.js +59 -59
  214. package/dist/permission/saved.js +55 -55
  215. package/dist/permission.js +72 -72
  216. package/dist/persistent-pty/index.js +55 -55
  217. package/dist/persistent-pty.js +55 -55
  218. package/dist/plugin/agent.js +73 -73
  219. package/dist/plugin/command.js +73 -73
  220. package/dist/plugin/host.js +161 -159
  221. package/dist/plugin/internal.js +251 -249
  222. package/dist/plugin/models-dev.js +60 -60
  223. package/dist/plugin/plan.js +73 -73
  224. package/dist/plugin/provider/azure.js +89 -89
  225. package/dist/plugin/provider/cloudflare-ai-gateway.js +88 -88
  226. package/dist/plugin/provider/cloudflare-workers-ai.js +88 -88
  227. package/dist/plugin/provider/configured.js +86 -86
  228. package/dist/plugin/provider/github-copilot.js +63 -63
  229. package/dist/plugin/provider/llmgateway.js +60 -60
  230. package/dist/plugin/provider/lmstudio.js +87 -87
  231. package/dist/plugin/provider/ollama.js +87 -87
  232. package/dist/plugin/provider/openai.js +60 -60
  233. package/dist/plugin/provider/opencode.js +70 -70
  234. package/dist/plugin/provider/vllm.js +87 -87
  235. package/dist/plugin/provider/xai.js +60 -60
  236. package/dist/plugin/provider.js +117 -117
  237. package/dist/plugin/runtime.js +149 -147
  238. package/dist/plugin/sdk.js +55 -55
  239. package/dist/plugin/skill.js +101 -101
  240. package/dist/plugin/supervisor.js +257 -255
  241. package/dist/plugin/vcs/git.js +64 -64
  242. package/dist/plugin/vcs/hg.js +64 -64
  243. package/dist/plugin/warming.js +83 -83
  244. package/dist/plugin/websearch/index.js +3 -3
  245. package/dist/plugin.js +162 -160
  246. package/dist/project/markers.js +57 -57
  247. package/dist/project.js +61 -61
  248. package/dist/pty.js +64 -64
  249. package/dist/reference/instructions.js +60 -60
  250. package/dist/reference.js +58 -58
  251. package/dist/repository-cache.js +3 -3
  252. package/dist/ripgrep.js +68 -68
  253. package/dist/session/compaction.js +85 -85
  254. package/dist/session/context.js +266 -264
  255. package/dist/session/error.js +23 -1
  256. package/dist/session/execution/restart.js +149 -147
  257. package/dist/session/execution.js +92 -92
  258. package/dist/session/generate-node.js +267 -265
  259. package/dist/session/history.js +58 -58
  260. package/dist/session/inbox.js +66 -70
  261. package/dist/session/instruction-entry.js +56 -56
  262. package/dist/session/instruction-state.js +2 -2
  263. package/dist/session/instructions.js +68 -68
  264. package/dist/session/model-request.js +105 -105
  265. package/dist/session/projector.js +61 -61
  266. package/dist/session/prompt-node.js +320 -0
  267. package/dist/session/prompt.js +130 -0
  268. package/dist/session/revert-node.js +320 -0
  269. package/dist/session/revert.js +74 -69
  270. package/dist/session/run-coordinator.js +1 -1
  271. package/dist/session/runner/index.js +65 -65
  272. package/dist/session/runner/llm.js +271 -269
  273. package/dist/session/runner/model.js +65 -65
  274. package/dist/session/runner/retry.js +54 -54
  275. package/dist/session/runner/step.js +112 -112
  276. package/dist/session/session.js +181 -0
  277. package/dist/session/stats.js +55 -55
  278. package/dist/session/store.js +59 -59
  279. package/dist/session/title.js +267 -265
  280. package/dist/session/to-session-error.js +84 -84
  281. package/dist/session/transfer.js +155 -153
  282. package/dist/session.js +161 -159
  283. package/dist/shell/parse.js +3 -3
  284. package/dist/shell.js +97 -97
  285. package/dist/skill/instructions.js +74 -74
  286. package/dist/skill.js +73 -73
  287. package/dist/snapshot.js +63 -63
  288. package/dist/tool/mcp.js +95 -95
  289. package/dist/tool/plugin/edit.js +84 -84
  290. package/dist/tool/plugin/glob.js +88 -88
  291. package/dist/tool/plugin/grep.js +88 -88
  292. package/dist/tool/plugin/patch.js +84 -84
  293. package/dist/tool/plugin/question.js +74 -74
  294. package/dist/tool/plugin/read.js +91 -91
  295. package/dist/tool/plugin/shell.js +152 -150
  296. package/dist/tool/plugin/skill.js +74 -74
  297. package/dist/tool/plugin/subagent.js +150 -148
  298. package/dist/tool/plugin/webfetch.js +73 -73
  299. package/dist/tool/plugin/websearch.js +77 -77
  300. package/dist/tool/plugin/write.js +84 -84
  301. package/dist/tool/read-filesystem.js +72 -72
  302. package/dist/tool-output.js +2 -2
  303. package/dist/tool.js +88 -88
  304. package/dist/types/instance.d.ts +2 -2
  305. package/dist/types/location-service-map.d.ts +2 -2
  306. package/dist/types/plugin/host.d.ts +4 -18
  307. package/dist/types/project.d.ts +1 -0
  308. package/dist/types/session/error.d.ts +115 -0
  309. package/dist/types/session/execution.d.ts +2 -0
  310. package/dist/types/session/inbox.d.ts +557 -176
  311. package/dist/types/session/prompt-node.d.ts +3 -0
  312. package/dist/types/session/prompt.d.ts +126 -0
  313. package/dist/types/session/revert-node.d.ts +3 -0
  314. package/dist/types/session/revert.d.ts +24 -29
  315. package/dist/types/session/run-coordinator.d.ts +2 -0
  316. package/dist/types/session/session.d.ts +232 -0
  317. package/dist/types/session.d.ts +14 -141
  318. package/dist/v1/config/config.js +9 -9
  319. package/dist/v1/config/migrate.js +10 -10
  320. package/dist/vcs.js +63 -63
  321. package/dist/websearch.js +57 -57
  322. package/dist/wellknown/plugin.js +58 -58
  323. package/dist/wellknown.js +57 -57
  324. package/dist/workspace.js +55 -55
  325. package/dist/worktree/git.js +3 -3
  326. package/dist/worktree.js +64 -64
  327. package/package.json +7 -7
  328. package/dist/chunks/job-3qa6q24r.js +0 -909
  329. package/dist/chunks/job-9qh9vr6x.js +0 -115
  330. package/dist/chunks/job-fb7nfzf2.js +0 -71
  331. package/dist/chunks/{job-nsb760q1.js → job-5y7h4bj8.js} +5 -5
  332. package/dist/chunks/{job-5rw2bdcb.js → job-682y27cc.js} +12 -12
  333. package/dist/chunks/{job-dyj7wa6j.js → job-6jx6ecw1.js} +3 -3
  334. package/dist/chunks/{job-bpvv8ms5.js → job-724jej9m.js} +9 -9
  335. package/dist/chunks/{job-7ccgh94t.js → job-f7q7a28y.js} +3 -3
  336. package/dist/chunks/{job-0687t5rp.js → job-hxcd35r2.js} +3 -3
  337. package/dist/chunks/{job-zn8r3q6e.js → job-hzjn00dj.js} +3 -3
  338. package/dist/chunks/{job-hygwwggg.js → job-pq2wqp7r.js} +19 -19
  339. package/dist/chunks/{job-3xrkrsj8.js → job-pzy8panz.js} +6 -6
  340. package/dist/chunks/{job-ddkxdmhk.js → job-qj3yfbbj.js} +7 -7
  341. package/dist/chunks/{job-1mfqr65w.js → job-qzvkc7f1.js} +84 -84
  342. /package/dist/chunks/{job-1xqp5xfg.js → job-s5a3kj32.js} +0 -0
@@ -0,0 +1,3 @@
1
+ export * as SessionPromptNode from "./prompt-node.js";
2
+ import { SessionPrompt } from "./prompt.js";
3
+ export declare const node: import("@opencode-ai/util/effect/layer-node").Node<SessionPrompt.Service, never, import("@opencode-ai/util/effect/layer-node").Tag<"location">>;
@@ -0,0 +1,126 @@
1
+ export * as SessionPrompt from "./prompt.js";
2
+ import { PromptInput } from "@opencode-ai/schema/prompt-input";
3
+ import { SessionInbox } from "@opencode-ai/schema/session-inbox";
4
+ import type { Session } from "@opencode-ai/schema/session";
5
+ import type { SessionMessage } from "@opencode-ai/schema/session-message";
6
+ import { FSUtil } from "@opencode-ai/util/fs-util";
7
+ import { Context, Effect, Layer } from "effect";
8
+ import { Image } from "../image.js";
9
+ import { PluginHooks } from "../plugin/hooks.js";
10
+ import { PluginSupervisor } from "../plugin/supervisor-service.js";
11
+ import { Skill } from "../skill.js";
12
+ import { AttachmentError, SkillNotFoundError } from "./error.js";
13
+ export type Input = {
14
+ text: string;
15
+ files?: PromptInput.Prompt["files"];
16
+ agents?: PromptInput.Prompt["agents"];
17
+ skills?: PromptInput.Prompt["skills"];
18
+ metadata?: Record<string, unknown>;
19
+ delivery?: SessionInbox.Delivery;
20
+ };
21
+ export declare const make: () => Effect.Effect<{
22
+ prepare: (request: {
23
+ sessionID: Session.ID;
24
+ messageID: SessionMessage.ID;
25
+ input: Input;
26
+ }) => Effect.Effect<{
27
+ type: "user";
28
+ payload: {
29
+ readonly text: string;
30
+ readonly metadata?: {
31
+ readonly [x: string]: unknown;
32
+ } | undefined;
33
+ readonly files?: readonly {
34
+ readonly source: {
35
+ readonly type: "inline";
36
+ } | {
37
+ readonly type: "uri";
38
+ readonly uri: string;
39
+ };
40
+ readonly data: string;
41
+ readonly mime: string;
42
+ readonly name?: string | undefined;
43
+ readonly description?: string | undefined;
44
+ readonly mention?: {
45
+ readonly start: number;
46
+ readonly end: number;
47
+ readonly text: string;
48
+ } | undefined;
49
+ }[] | undefined;
50
+ readonly agents?: readonly {
51
+ readonly name: string;
52
+ readonly mention?: {
53
+ readonly start: number;
54
+ readonly end: number;
55
+ readonly text: string;
56
+ } | undefined;
57
+ }[] | undefined;
58
+ readonly skills?: readonly {
59
+ readonly name: string & import("effect/Brand").Brand<"Skill.Name">;
60
+ readonly id: string & import("effect/Brand").Brand<"Skill.ID">;
61
+ readonly text?: string | undefined;
62
+ readonly mention?: {
63
+ readonly start: number;
64
+ readonly end: number;
65
+ readonly text: string;
66
+ } | undefined;
67
+ }[] | undefined;
68
+ };
69
+ delivery: "steer" | "queue";
70
+ }, AttachmentError | SkillNotFoundError, never>;
71
+ }, never, FSUtil.Service | Image.Service | PluginSupervisor.Service | PluginHooks.Service | Skill.Service>;
72
+ export type Interface = Effect.Success<ReturnType<typeof make>>;
73
+ declare const Service_base: Context.ServiceClass<Service, "@opencode/SessionPrompt", {
74
+ prepare: (request: {
75
+ sessionID: Session.ID;
76
+ messageID: SessionMessage.ID;
77
+ input: Input;
78
+ }) => Effect.Effect<{
79
+ type: "user";
80
+ payload: {
81
+ readonly text: string;
82
+ readonly metadata?: {
83
+ readonly [x: string]: unknown;
84
+ } | undefined;
85
+ readonly files?: readonly {
86
+ readonly source: {
87
+ readonly type: "inline";
88
+ } | {
89
+ readonly type: "uri";
90
+ readonly uri: string;
91
+ };
92
+ readonly data: string;
93
+ readonly mime: string;
94
+ readonly name?: string | undefined;
95
+ readonly description?: string | undefined;
96
+ readonly mention?: {
97
+ readonly start: number;
98
+ readonly end: number;
99
+ readonly text: string;
100
+ } | undefined;
101
+ }[] | undefined;
102
+ readonly agents?: readonly {
103
+ readonly name: string;
104
+ readonly mention?: {
105
+ readonly start: number;
106
+ readonly end: number;
107
+ readonly text: string;
108
+ } | undefined;
109
+ }[] | undefined;
110
+ readonly skills?: readonly {
111
+ readonly name: string & import("effect/Brand").Brand<"Skill.Name">;
112
+ readonly id: string & import("effect/Brand").Brand<"Skill.ID">;
113
+ readonly text?: string | undefined;
114
+ readonly mention?: {
115
+ readonly start: number;
116
+ readonly end: number;
117
+ readonly text: string;
118
+ } | undefined;
119
+ }[] | undefined;
120
+ };
121
+ delivery: "steer" | "queue";
122
+ }, AttachmentError | SkillNotFoundError, never>;
123
+ }>;
124
+ export declare class Service extends Service_base {
125
+ }
126
+ export declare const layer: Layer.Layer<Service, never, FSUtil.Service | Image.Service | PluginSupervisor.Service | PluginHooks.Service | Skill.Service>;
@@ -0,0 +1,3 @@
1
+ export * as SessionRevertNode from "./revert-node.js";
2
+ import { SessionRevert } from "./revert.js";
3
+ export declare const node: import("@opencode-ai/util/effect/layer-node").Node<SessionRevert.Service, never, import("@opencode-ai/util/effect/layer-node").Tag<"location">>;
@@ -1,36 +1,31 @@
1
1
  export * as SessionRevert from "./revert.js";
2
- import { Effect, Schema } from "effect";
2
+ import { Context, Effect, Layer } from "effect";
3
3
  import { Database } from "../database/database.js";
4
4
  import { Bus } from "../bus.js";
5
+ import { PluginSupervisor } from "../plugin/supervisor-service.js";
5
6
  import { Snapshot } from "../snapshot.js";
7
+ import { MessageNotFoundError } from "./error.js";
6
8
  import { SessionMessage } from "./message.js";
7
9
  import { SessionSchema } from "./schema.js";
8
- declare const MessageNotFoundError_base: Schema.Class<MessageNotFoundError, Schema.TaggedStruct<"Session.MessageNotFoundError", {
9
- readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
10
- create: () => string & import("effect/Brand").Brand<"SessionID">;
11
- descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
12
- };
13
- readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
14
- create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
15
- fromEvent: (eventID: import("@opencode-ai/schema/event").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
16
- };
17
- }>, import("effect/Cause").YieldableError>;
18
- export declare class MessageNotFoundError extends MessageNotFoundError_base {
10
+ export { MessageNotFoundError };
11
+ export interface Interface {
12
+ readonly stage: (input: {
13
+ readonly session: SessionSchema.Info;
14
+ readonly messageID: SessionMessage.ID;
15
+ readonly files?: boolean;
16
+ }) => Effect.Effect<SessionSchema.Revert, MessageNotFoundError | Snapshot.Error>;
17
+ readonly clear: (session: SessionSchema.Info) => Effect.Effect<void, Snapshot.Error>;
19
18
  }
20
- export declare const stage: (input: {
21
- readonly session: SessionSchema.Info;
22
- readonly messageID: SessionMessage.ID;
23
- readonly files?: boolean;
24
- }) => Effect.Effect<{
25
- messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
26
- snapshot: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
27
- files: readonly {
28
- readonly file: string;
29
- readonly patch: string;
30
- readonly additions: number;
31
- readonly deletions: number;
32
- readonly status: "added" | "deleted" | "modified";
33
- }[];
34
- }, Snapshot.Error | MessageNotFoundError, Database.Service | Bus.Service | Snapshot.Service>;
35
- export declare const clear: (session: SessionSchema.Info) => Effect.Effect<void, Snapshot.Error, Bus.Service | Snapshot.Service>;
36
- export declare const commit: (session: SessionSchema.Info) => Effect.Effect<void, never, Bus.Service>;
19
+ declare const Service_base: Context.ServiceClass<Service, "@opencode/SessionRevert", Interface>;
20
+ export declare class Service extends Service_base {
21
+ }
22
+ export declare const make: () => Effect.Effect<{
23
+ stage: (input: {
24
+ readonly session: SessionSchema.Info;
25
+ readonly messageID: SessionMessage.ID;
26
+ readonly files?: boolean;
27
+ }) => Effect.Effect<SessionSchema.Revert, MessageNotFoundError | Snapshot.Error>;
28
+ clear: (session: SessionSchema.Info) => Effect.Effect<void, Snapshot.Error>;
29
+ }, never, Database.Service | Bus.Service | PluginSupervisor.Service | Snapshot.Service>;
30
+ export declare const layer: Layer.Layer<Service, never, Database.Service | Bus.Service | PluginSupervisor.Service | Snapshot.Service>;
31
+ export declare const commit: (bus: Bus.Interface, session: SessionSchema.Info) => Effect.Effect<void, never, never>;
@@ -5,6 +5,8 @@ import type { Promotable } from "./inbox.js";
5
5
  export interface Coordinator<Key, E, Reason = never> {
6
6
  /** Snapshots keys with an execution owned by this coordinator. */
7
7
  readonly active: Effect.Effect<ReadonlySet<Key>>;
8
+ /** Checks ownership for one key, including cleanup and terminal settlement. */
9
+ readonly isActive: (key: Key) => Effect.Effect<boolean>;
8
10
  /** Starts an execution while idle, or joins the active execution and returns its exit. */
9
11
  readonly run: (key: Key) => Effect.Effect<void, E>;
10
12
  /** Rings the doorbell: an idle key starts an execution; an active one drains again before settling. */
@@ -0,0 +1,232 @@
1
+ export * as Session from "./session.js";
2
+ import { DateTime, Effect, Layer, Scope } from "effect";
3
+ import type { Agent } from "@opencode-ai/schema/agent";
4
+ import type { Model } from "@opencode-ai/schema/model";
5
+ import { Event } from "@opencode-ai/schema/event";
6
+ import { Bus } from "../bus.js";
7
+ import { Location } from "../location.js";
8
+ import { PluginSupervisor } from "../plugin/supervisor-service.js";
9
+ import { Shell } from "../shell.js";
10
+ import { BusyError, CompactionConflictError, InboxConflictError, MessageIncompleteError, MessageNotAssistantError, MessageNotFoundError, MessageToolIncompleteError, NotFoundError, PromptConflictError, SyntheticConflictError } from "./error.js";
11
+ import { SessionExecution } from "./execution.js";
12
+ import { SessionInbox } from "./inbox.js";
13
+ import { SessionMessage } from "./message.js";
14
+ import { SessionPrompt } from "./prompt.js";
15
+ import { SessionRevert } from "./revert.js";
16
+ import { SessionSchema } from "./schema.js";
17
+ import { SessionStore } from "./store.js";
18
+ export type Services = PluginSupervisor.Service | SessionPrompt.Service | SessionRevert.Service | Shell.Service;
19
+ type PromptRequest = SessionPrompt.Input & {
20
+ id?: SessionMessage.ID;
21
+ resume?: boolean;
22
+ };
23
+ /**
24
+ * Build once in the host Scope: `const sessions = yield* Session.make(servicesFor)`.
25
+ * Use `sessions.forSession(id)` for handles that share host services and reload current state.
26
+ */
27
+ export declare const make: (servicesFor: (ref: Location.Ref) => Layer.Layer<Services>) => Effect.Effect<{
28
+ forSession: (sessionID: SessionSchema.ID) => {
29
+ id: string & import("effect/Brand").Brand<"SessionID">;
30
+ get: () => Effect.Effect<SessionSchema.Info, NotFoundError, never>;
31
+ message: (messageID: string & import("effect/Brand").Brand<"Session.Message.ID">) => Effect.Effect<SessionMessage.Info | undefined, never, never>;
32
+ updateMessage: (input: {
33
+ readonly messageID: SessionMessage.ID;
34
+ readonly content: readonly SessionMessage.AssistantContent[];
35
+ }) => Effect.Effect<SessionMessage.Assistant, NotFoundError | MessageNotFoundError | MessageNotAssistantError | MessageIncompleteError | MessageToolIncompleteError | BusyError, never>;
36
+ view: (input: {
37
+ idle: number;
38
+ }) => Effect.Effect<void, NotFoundError, never>;
39
+ rename: (input: {
40
+ title: string;
41
+ }) => Effect.Effect<void, NotFoundError, never>;
42
+ switchAgent: (input: {
43
+ agent: Agent.ID;
44
+ }) => Effect.Effect<void, NotFoundError, never>;
45
+ switchModel: (input: {
46
+ model: Model.Ref;
47
+ }) => Effect.Effect<void, NotFoundError, never>;
48
+ inbox: () => Effect.Effect<({
49
+ readonly type: "user";
50
+ readonly payload: {
51
+ readonly text: string;
52
+ readonly metadata?: {
53
+ readonly [x: string]: unknown;
54
+ } | undefined;
55
+ readonly files?: readonly {
56
+ readonly source: {
57
+ readonly type: "inline";
58
+ } | {
59
+ readonly type: "uri";
60
+ readonly uri: string;
61
+ };
62
+ readonly data: string;
63
+ readonly mime: string;
64
+ readonly name?: string | undefined;
65
+ readonly description?: string | undefined;
66
+ readonly mention?: {
67
+ readonly start: number;
68
+ readonly end: number;
69
+ readonly text: string;
70
+ } | undefined;
71
+ }[] | undefined;
72
+ readonly agents?: readonly {
73
+ readonly name: string;
74
+ readonly mention?: {
75
+ readonly start: number;
76
+ readonly end: number;
77
+ readonly text: string;
78
+ } | undefined;
79
+ }[] | undefined;
80
+ readonly skills?: readonly {
81
+ readonly name: string & import("effect/Brand").Brand<"Skill.Name">;
82
+ readonly id: string & import("effect/Brand").Brand<"Skill.ID">;
83
+ readonly text?: string | undefined;
84
+ readonly mention?: {
85
+ readonly start: number;
86
+ readonly end: number;
87
+ readonly text: string;
88
+ } | undefined;
89
+ }[] | undefined;
90
+ };
91
+ readonly delivery: "steer" | "queue";
92
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
93
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
94
+ readonly timeCreated: DateTime.Utc;
95
+ } | {
96
+ readonly type: "synthetic";
97
+ readonly payload: {
98
+ readonly text: string;
99
+ readonly description?: string | undefined;
100
+ readonly metadata?: {
101
+ readonly [x: string]: unknown;
102
+ } | undefined;
103
+ };
104
+ readonly delivery: "steer" | "queue";
105
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
106
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
107
+ readonly timeCreated: DateTime.Utc;
108
+ } | {
109
+ readonly type: "compaction";
110
+ readonly payload: {};
111
+ readonly delivery: "steer" | "queue";
112
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
113
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
114
+ readonly timeCreated: DateTime.Utc;
115
+ } | {
116
+ readonly type: "move";
117
+ readonly payload: {
118
+ readonly location: {
119
+ readonly directory: string & import("effect/Brand").Brand<"AbsolutePath">;
120
+ readonly workspaceID?: (string & import("effect/Brand").Brand<"Workspace.ID">) | undefined;
121
+ };
122
+ readonly projectID: string & import("effect/Brand").Brand<"Project.ID">;
123
+ readonly subpath?: (string & import("effect/Brand").Brand<"RelativePath">) | undefined;
124
+ };
125
+ readonly delivery: "steer" | "queue";
126
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
127
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
128
+ readonly timeCreated: DateTime.Utc;
129
+ })[], NotFoundError, never>;
130
+ prompt: (input: PromptRequest) => Effect.Effect<{
131
+ readonly type: "user";
132
+ readonly payload: {
133
+ readonly text: string;
134
+ readonly metadata?: {
135
+ readonly [x: string]: unknown;
136
+ } | undefined;
137
+ readonly files?: readonly {
138
+ readonly source: {
139
+ readonly type: "inline";
140
+ } | {
141
+ readonly type: "uri";
142
+ readonly uri: string;
143
+ };
144
+ readonly data: string;
145
+ readonly mime: string;
146
+ readonly name?: string | undefined;
147
+ readonly description?: string | undefined;
148
+ readonly mention?: {
149
+ readonly start: number;
150
+ readonly end: number;
151
+ readonly text: string;
152
+ } | undefined;
153
+ }[] | undefined;
154
+ readonly agents?: readonly {
155
+ readonly name: string;
156
+ readonly mention?: {
157
+ readonly start: number;
158
+ readonly end: number;
159
+ readonly text: string;
160
+ } | undefined;
161
+ }[] | undefined;
162
+ readonly skills?: readonly {
163
+ readonly name: string & import("effect/Brand").Brand<"Skill.Name">;
164
+ readonly id: string & import("effect/Brand").Brand<"Skill.ID">;
165
+ readonly text?: string | undefined;
166
+ readonly mention?: {
167
+ readonly start: number;
168
+ readonly end: number;
169
+ readonly text: string;
170
+ } | undefined;
171
+ }[] | undefined;
172
+ };
173
+ readonly delivery: "steer" | "queue";
174
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
175
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
176
+ readonly timeCreated: DateTime.Utc;
177
+ }, NotFoundError | PromptConflictError | import("./error.js").AttachmentError | import("./error.js").SkillNotFoundError, never>;
178
+ synthetic: (input: {
179
+ id?: SessionMessage.ID;
180
+ text: string;
181
+ description?: string;
182
+ metadata?: Record<string, unknown>;
183
+ delivery?: SessionInbox.Delivery;
184
+ resume?: boolean;
185
+ }) => Effect.Effect<{
186
+ readonly type: "synthetic";
187
+ readonly payload: {
188
+ readonly text: string;
189
+ readonly description?: string | undefined;
190
+ readonly metadata?: {
191
+ readonly [x: string]: unknown;
192
+ } | undefined;
193
+ };
194
+ readonly delivery: "steer" | "queue";
195
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
196
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
197
+ readonly timeCreated: DateTime.Utc;
198
+ }, NotFoundError | SyntheticConflictError, never>;
199
+ shell: (input: {
200
+ id?: Event.ID;
201
+ command: string;
202
+ }) => Effect.Effect<void, NotFoundError, never>;
203
+ compact: (input: {
204
+ id?: SessionMessage.ID;
205
+ delivery?: SessionInbox.Delivery;
206
+ }) => Effect.Effect<{
207
+ readonly type: "compaction";
208
+ readonly payload: {};
209
+ readonly delivery: "steer" | "queue";
210
+ readonly id: string & import("effect/Brand").Brand<"Session.Message.ID">;
211
+ readonly sessionID: string & import("effect/Brand").Brand<"SessionID">;
212
+ readonly timeCreated: DateTime.Utc;
213
+ }, NotFoundError | CompactionConflictError, never>;
214
+ wait: () => Effect.Effect<void, NotFoundError, never>;
215
+ resume: () => Effect.Effect<void, NotFoundError | import("./runner/index.js").RunError, never>;
216
+ interrupt: (options?: {
217
+ readonly continue?: boolean;
218
+ } | undefined) => Effect.Effect<boolean, never, never>;
219
+ cancelInbox: (inboxID: string & import("effect/Brand").Brand<"Session.Message.ID">) => Effect.Effect<void, NotFoundError | InboxConflictError, never>;
220
+ steerInbox: (inboxID: string & import("effect/Brand").Brand<"Session.Message.ID">) => Effect.Effect<void, NotFoundError | InboxConflictError, never>;
221
+ queueInbox: (inboxID: string & import("effect/Brand").Brand<"Session.Message.ID">) => Effect.Effect<void, NotFoundError | InboxConflictError, never>;
222
+ revert: {
223
+ stage: (input: {
224
+ messageID: SessionMessage.ID;
225
+ files?: boolean;
226
+ }) => Effect.Effect<SessionSchema.Revert, NotFoundError | MessageNotFoundError | BusyError | import("../snapshot.js").Error, never>;
227
+ clear: () => Effect.Effect<void, NotFoundError | BusyError | import("../snapshot.js").Error, never>;
228
+ commit: () => Effect.Effect<void, NotFoundError | BusyError, never>;
229
+ };
230
+ };
231
+ }, never, Scope.Scope | Bus.Service | SessionInbox.Service | SessionStore.Service | SessionExecution.Service>;
232
+ export type Handle = ReturnType<Effect.Success<ReturnType<typeof make>>["forSession"]>;