@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,483 @@
1
+ import {
2
+ exports_projector
3
+ } from "./job-2xxqbh3j.js";
4
+ import {
5
+ exports_session
6
+ } from "./job-cs1gk7aw.js";
7
+ import {
8
+ exports_execution
9
+ } from "./job-zjdkpeq1.js";
10
+ import {
11
+ exports_inbox
12
+ } from "./job-fjvbp1rw.js";
13
+ import {
14
+ exports_generate
15
+ } from "./job-xgv25zxy.js";
16
+ import {
17
+ exports_instruction_entry
18
+ } from "./job-0j6yxnr1.js";
19
+ import {
20
+ exports_supervisor_service
21
+ } from "./job-s33fw6zm.js";
22
+ import {
23
+ exports_model_transport
24
+ } from "./job-tjrfm0xh.js";
25
+ import {
26
+ exports_environment
27
+ } from "./job-6ky7rqk7.js";
28
+ import {
29
+ Slug
30
+ } from "./job-df3v2q6j.js";
31
+ import {
32
+ exports_skill
33
+ } from "./job-v50dw4p6.js";
34
+ import {
35
+ exports_command
36
+ } from "./job-jp8kwwgf.js";
37
+ import {
38
+ exports_app
39
+ } from "./job-50jxp3hw.js";
40
+ import {
41
+ exports_location_service_map
42
+ } from "./job-zdkg1k91.js";
43
+ import {
44
+ exports_store
45
+ } from "./job-h9bbwcgd.js";
46
+ import {
47
+ exports_history
48
+ } from "./job-n5tqbq9v.js";
49
+ import {
50
+ exports_instruction_state
51
+ } from "./job-hxcd35r2.js";
52
+ import {
53
+ fromRow
54
+ } from "./job-264e1nfp.js";
55
+ import {
56
+ AttachmentError,
57
+ BusyError,
58
+ CompactionConflictError,
59
+ ForkEmptyError,
60
+ InboxConflictError,
61
+ MessageDecodeError,
62
+ MessageIncompleteError,
63
+ MessageNotAssistantError,
64
+ MessageNotFoundError,
65
+ MessageToolIncompleteError,
66
+ NotFoundError,
67
+ PromptConflictError,
68
+ SkillNotFoundError,
69
+ SyntheticConflictError
70
+ } from "./job-cgqn2mrm.js";
71
+ import {
72
+ SessionMessageTable,
73
+ SessionTable
74
+ } from "./job-q606pcse.js";
75
+ import {
76
+ SessionEvent
77
+ } from "./job-a83yvq99.js";
78
+ import {
79
+ exports_job
80
+ } from "./job-2hnk029s.js";
81
+ import {
82
+ SessionMessage
83
+ } from "./job-8rpfd2h6.js";
84
+ import {
85
+ ID,
86
+ Info,
87
+ SessionSchema
88
+ } from "./job-bjwj8hwv.js";
89
+ import {
90
+ exports_location
91
+ } from "./job-dv2qtrbh.js";
92
+ import {
93
+ exports_project
94
+ } from "./job-587cy5wm.js";
95
+ import {
96
+ exports_bus
97
+ } from "./job-wcdz88tf.js";
98
+ import {
99
+ exports_database
100
+ } from "./job-rp954h3j.js";
101
+ import {
102
+ AbsolutePath,
103
+ PositiveInt,
104
+ RelativePath
105
+ } from "./job-j07kk359.js";
106
+ import {
107
+ __export
108
+ } from "./job-rvfvac9x.js";
109
+
110
+ // src/session.ts
111
+ var exports_session2 = {};
112
+ __export(exports_session2, {
113
+ node: () => node,
114
+ SyntheticConflictError: () => SyntheticConflictError,
115
+ SkillNotFoundError: () => SkillNotFoundError,
116
+ SessionSchema: () => SessionSchema,
117
+ Session: () => exports_session2,
118
+ Service: () => Service,
119
+ PromptConflictError: () => PromptConflictError,
120
+ NotFoundError: () => NotFoundError,
121
+ MessageToolIncompleteError: () => MessageToolIncompleteError,
122
+ MessageNotFoundError: () => MessageNotFoundError,
123
+ MessageNotAssistantError: () => MessageNotAssistantError,
124
+ MessageIncompleteError: () => MessageIncompleteError,
125
+ MessageDecodeError: () => MessageDecodeError,
126
+ ListInput: () => ListInput,
127
+ ListAnchor: () => ListAnchor,
128
+ Info: () => Info,
129
+ InboxConflictError: () => InboxConflictError,
130
+ ID: () => ID,
131
+ DestinationUnavailableError: () => DestinationUnavailableError,
132
+ DestinationNotFoundError: () => DestinationNotFoundError,
133
+ DestinationNotDirectoryError: () => DestinationNotDirectoryError,
134
+ CompactionConflictError: () => CompactionConflictError,
135
+ BusyError: () => BusyError,
136
+ AttachmentError: () => AttachmentError
137
+ });
138
+ import { Cause, Effect, Layer, Schema, Context, RcMap, Stream, Scope } from "effect";
139
+ import { ListAnchor } from "@opencode-ai/schema/session";
140
+ import { and, asc, desc, eq, gt, isNull, like, lt, or } from "drizzle-orm";
141
+ import { Workspace } from "@opencode-ai/schema/workspace";
142
+ import { Model } from "@opencode-ai/schema/model";
143
+ import path from "path";
144
+ import { makeGlobalNode } from "@opencode-ai/util/effect/app-node";
145
+ import { FSUtil } from "@opencode-ai/util/fs-util";
146
+ import { Event } from "@opencode-ai/schema/event";
147
+ import { Global } from "@opencode-ai/util/global";
148
+ var ListInputBase = {
149
+ workspaceID: Workspace.ID.pipe(Schema.optional),
150
+ search: Schema.String.pipe(Schema.optional),
151
+ limit: PositiveInt.pipe(Schema.optional),
152
+ order: Schema.Literals(["asc", "desc"]).pipe(Schema.optional),
153
+ parentID: Schema.NullOr(SessionSchema.ID).pipe(Schema.optional),
154
+ anchor: ListAnchor.pipe(Schema.optional)
155
+ };
156
+ var ListDirectoryInput = Schema.Struct({
157
+ ...ListInputBase,
158
+ directory: AbsolutePath
159
+ });
160
+ var ListProjectInput = Schema.Struct({
161
+ ...ListInputBase,
162
+ project: exports_project.ID,
163
+ subpath: RelativePath.pipe(Schema.optional)
164
+ });
165
+ var ListAllInput = Schema.Struct(ListInputBase);
166
+ var ListInput = Schema.Union([ListDirectoryInput, ListProjectInput, ListAllInput]);
167
+ class DestinationNotFoundError extends Schema.TaggedError()("Session.DestinationNotFoundError", { directory: AbsolutePath }) {
168
+ }
169
+
170
+ class DestinationNotDirectoryError extends Schema.TaggedError()("Session.DestinationNotDirectoryError", { directory: AbsolutePath }) {
171
+ }
172
+
173
+ class DestinationUnavailableError extends Schema.TaggedError()("Session.DestinationUnavailableError", { directory: AbsolutePath }) {
174
+ }
175
+
176
+ class Service extends Context.Service()("@opencode/Session") {
177
+ }
178
+ var layer = Layer.effect(Service, Effect.gen(function* () {
179
+ const app = yield* exports_app.Metadata;
180
+ const database = yield* exports_database.Service;
181
+ const db = database.db;
182
+ const bus = yield* exports_bus.Service;
183
+ const projects = yield* exports_project.Service;
184
+ const global = yield* Global.Service;
185
+ const execution = yield* exports_execution.Service;
186
+ const store = yield* exports_store.Service;
187
+ const locations = yield* exports_location_service_map.Service;
188
+ const fs = yield* FSUtil.Service;
189
+ const jobs = yield* exports_job.Service;
190
+ const environments = yield* exports_environment.Service;
191
+ const scope = yield* Scope.Scope;
192
+ const sessions = yield* exports_session.make((ref) => locations.get(ref));
193
+ const admission = yield* exports_inbox.Service;
194
+ const closeTransport = Effect.fn("Session.closeTransport")(function* (session) {
195
+ const location = exports_location.Ref.make({
196
+ directory: session.location.directory,
197
+ workspaceID: session.location.workspaceID
198
+ });
199
+ if (!(yield* RcMap.has(locations.rcMap, location)))
200
+ return;
201
+ yield* exports_model_transport.Service.use((transport) => transport.close(session.id)).pipe(Effect.provide(locations.get(location)));
202
+ });
203
+ const isDurableSessionEvent = Schema.is(SessionEvent.Durable);
204
+ const result = Service.of({
205
+ create: Effect.fn("Session.create")(function* (input) {
206
+ const sessionID = input.id ?? SessionSchema.ID.create();
207
+ const recorded = yield* store.get(sessionID);
208
+ if (recorded)
209
+ return recorded;
210
+ const parent = input.parentID ? yield* store.get(input.parentID) : undefined;
211
+ if (input.parentID && parent === undefined)
212
+ return yield* new NotFoundError({ sessionID: input.parentID });
213
+ const location = parent?.location ?? input.location;
214
+ if (location === undefined)
215
+ return yield* Effect.die(new Error("Session.create requires either location or an existing parentID"));
216
+ const project = yield* projects.resolve(location.directory);
217
+ const projected = yield* bus.publish(SessionEvent.Created, {
218
+ sessionID,
219
+ slug: Slug.create(),
220
+ version: app.version,
221
+ projectID: project.id,
222
+ parentID: input.parentID,
223
+ location,
224
+ subpath: RelativePath.make(path.relative(project.directory, location.directory).replaceAll("\\", "/")),
225
+ title: input.title,
226
+ agent: input.agent,
227
+ metadata: input.metadata ?? parent?.metadata,
228
+ model: input.model ? {
229
+ id: Model.ID.make(input.model.id),
230
+ providerID: input.model.providerID,
231
+ variant: input.model.variant
232
+ } : undefined
233
+ }, { location }).pipe(Effect.as({ type: "created" }), Effect.catchDefect((defect) => {
234
+ if (!(defect instanceof exports_projector.SessionAlreadyProjected)) {
235
+ return Effect.die(defect);
236
+ }
237
+ return store.get(sessionID).pipe(Effect.flatMap((session) => session ? Effect.succeed({ type: "existing", session }) : Effect.die(defect)));
238
+ }));
239
+ if (projected.type === "existing")
240
+ return projected.session;
241
+ return yield* result.get(sessionID).pipe(Effect.orDie);
242
+ }),
243
+ fork: Effect.fn("Session.fork")(function* (input) {
244
+ const parent = yield* result.get(input.sessionID);
245
+ const boundary = yield* db.select({ id: SessionMessageTable.id }).from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), input.boundary.type === "before" ? eq(SessionMessageTable.id, input.boundary.messageID) : undefined)).orderBy(desc(SessionMessageTable.seq)).limit(1).get().pipe(Effect.orDie);
246
+ if (!boundary && input.boundary.type === "before")
247
+ return yield* new MessageNotFoundError({
248
+ sessionID: input.sessionID,
249
+ messageID: input.boundary.messageID
250
+ });
251
+ if (!boundary)
252
+ return yield* new ForkEmptyError({ sessionID: input.sessionID });
253
+ const sessionID = SessionSchema.ID.create();
254
+ const inherited = yield* db.transaction(() => Effect.all({
255
+ instructions: exports_instruction_state.current(db, parent.id),
256
+ instructionEntries: exports_instruction_entry.snapshot(db, parent.id)
257
+ })).pipe(Effect.orDie);
258
+ yield* bus.publish(SessionEvent.Forked, {
259
+ sessionID,
260
+ parentID: parent.id,
261
+ boundary: { ...input.boundary, messageID: boundary.id },
262
+ ...inherited
263
+ });
264
+ return yield* result.get(sessionID).pipe(Effect.orDie);
265
+ }),
266
+ get: (sessionID) => sessions.forSession(sessionID).get(),
267
+ environment: Effect.fn("Session.environment")(function* (input) {
268
+ yield* result.get(input.sessionID);
269
+ if (input.variables !== undefined)
270
+ yield* environments.set(input.sessionID, input.variables);
271
+ return yield* environments.get(input.sessionID);
272
+ }),
273
+ view: (input) => sessions.forSession(input.sessionID).view(input),
274
+ remove: Effect.fn("Session.remove")(function* (sessionID) {
275
+ const session = yield* result.get(sessionID);
276
+ yield* execution.interrupt(sessionID);
277
+ yield* execution.awaitIdle(sessionID);
278
+ yield* closeTransport(session);
279
+ const children = yield* result.list({ parentID: sessionID });
280
+ yield* Effect.forEach(children.data, (child) => result.remove(child.id), { concurrency: 1, discard: true });
281
+ yield* environments.clear(sessionID);
282
+ yield* bus.publish(SessionEvent.Deleted, { sessionID });
283
+ yield* bus.remove(sessionID);
284
+ }),
285
+ list: Effect.fn("Session.list")(function* (input = {}) {
286
+ const direction = input.anchor?.direction ?? "next";
287
+ const requestedOrder = input.order ?? "desc";
288
+ const order = direction === "previous" ? requestedOrder === "asc" ? "desc" : "asc" : requestedOrder;
289
+ const sortColumn = SessionTable.time_updated;
290
+ const conditions = [];
291
+ if ("directory" in input)
292
+ conditions.push(eq(SessionTable.directory, input.directory));
293
+ if (input.workspaceID)
294
+ conditions.push(eq(SessionTable.workspace_id, input.workspaceID));
295
+ if ("project" in input)
296
+ conditions.push(eq(SessionTable.project_id, input.project));
297
+ if ("project" in input && input.subpath !== undefined)
298
+ conditions.push(eq(SessionTable.path, input.subpath));
299
+ if (input.search)
300
+ conditions.push(like(SessionTable.title, `%${input.search}%`));
301
+ if (input.parentID !== undefined)
302
+ conditions.push(input.parentID === null ? isNull(SessionTable.parent_id) : eq(SessionTable.parent_id, input.parentID));
303
+ if (input.anchor) {
304
+ conditions.push(order === "asc" ? or(gt(sortColumn, input.anchor.time), and(eq(sortColumn, input.anchor.time), gt(SessionTable.id, input.anchor.id))) : or(lt(sortColumn, input.anchor.time), and(eq(sortColumn, input.anchor.time), lt(SessionTable.id, input.anchor.id))));
305
+ }
306
+ const query = db.select().from(SessionTable).where(conditions.length > 0 ? and(...conditions) : undefined).orderBy(order === "asc" ? asc(sortColumn) : desc(sortColumn), order === "asc" ? asc(SessionTable.id) : desc(SessionTable.id));
307
+ const rows = yield* (input.limit === undefined ? query.all() : query.limit(input.limit).all()).pipe(Effect.orDie);
308
+ return { data: (direction === "previous" ? rows.toReversed() : rows).map((row) => fromRow(row)) };
309
+ }),
310
+ messages: Effect.fn("Session.messages")(function* (input) {
311
+ yield* result.get(input.sessionID);
312
+ const direction = input.cursor?.direction ?? "next";
313
+ const requestedOrder = input.order ?? "desc";
314
+ const order = direction === "previous" ? requestedOrder === "asc" ? "desc" : "asc" : requestedOrder;
315
+ const anchor = input.cursor ? yield* db.select({ seq: SessionMessageTable.seq }).from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), eq(SessionMessageTable.id, input.cursor.id))).get().pipe(Effect.orDie) : undefined;
316
+ if (input.cursor && !anchor)
317
+ return [];
318
+ const boundary = anchor ? order === "asc" ? gt(SessionMessageTable.seq, anchor.seq) : lt(SessionMessageTable.seq, anchor.seq) : undefined;
319
+ const where = boundary ? and(eq(SessionMessageTable.session_id, input.sessionID), boundary) : eq(SessionMessageTable.session_id, input.sessionID);
320
+ const query = db.select().from(SessionMessageTable).where(where).orderBy(order === "asc" ? asc(SessionMessageTable.seq) : desc(SessionMessageTable.seq));
321
+ const rows = yield* (input.limit === undefined ? query.all() : query.limit(input.limit).all()).pipe(Effect.orDie);
322
+ return yield* Effect.forEach(direction === "previous" ? rows.toReversed() : rows, exports_history.decodeMessageRow);
323
+ }),
324
+ message: (input) => sessions.forSession(input.sessionID).message(input.messageID),
325
+ updateMessage: (input) => sessions.forSession(input.sessionID).updateMessage(input),
326
+ context: Effect.fn("Session.context")(function* (sessionID) {
327
+ yield* result.get(sessionID);
328
+ return yield* store.context(sessionID);
329
+ }),
330
+ inbox: (sessionID) => sessions.forSession(sessionID).inbox(),
331
+ cancelInbox: (input) => sessions.forSession(input.sessionID).cancelInbox(input.inboxID),
332
+ steerInbox: (input) => sessions.forSession(input.sessionID).steerInbox(input.inboxID),
333
+ queueInbox: (input) => sessions.forSession(input.sessionID).queueInbox(input.inboxID),
334
+ log: (input) => Stream.unwrap(result.get(input.sessionID).pipe(Effect.as(bus.log({ aggregateID: input.sessionID, after: input.after, follow: input.follow })))).pipe(Stream.filter((item) => exports_bus.isSynced(item) || isDurableSessionEvent(item))),
335
+ prompt: (input) => sessions.forSession(input.sessionID).prompt(input),
336
+ generate: Effect.fn("Session.generate")(function* (input) {
337
+ const session = yield* result.get(input.sessionID);
338
+ const generate = yield* exports_generate.Service.pipe(Effect.provide(locations.get(session.location)));
339
+ return yield* generate.generate(input);
340
+ }),
341
+ command: Effect.fn("Session.command")(function* (input) {
342
+ const session = yield* result.get(input.sessionID);
343
+ const commands = yield* Effect.gen(function* () {
344
+ const plugins = yield* exports_supervisor_service.Service;
345
+ yield* plugins.flush;
346
+ return yield* exports_command.Service;
347
+ }).pipe(Effect.provide(locations.get(session.location)));
348
+ const delivery = input.delivery ?? "steer";
349
+ yield* commands.execute({
350
+ name: input.command,
351
+ invocation: {
352
+ sessionID: input.sessionID,
353
+ prompt: {
354
+ text: input.text,
355
+ files: input.files,
356
+ agents: input.agents,
357
+ skills: input.skills
358
+ },
359
+ delivery
360
+ }
361
+ });
362
+ }),
363
+ shell: (input) => sessions.forSession(input.sessionID).shell(input),
364
+ skill: Effect.fn("Session.skill")(function* (input) {
365
+ const session = yield* result.get(input.sessionID);
366
+ const skills = yield* exports_skill.Service.pipe(Effect.provide(locations.get(session.location)));
367
+ const skill = yield* skills.get(input.skill);
368
+ if (!skill)
369
+ return yield* new SkillNotFoundError({ skill: input.skill });
370
+ yield* bus.publish(SessionEvent.Skill.Activated, {
371
+ sessionID: input.sessionID,
372
+ id: skill.id,
373
+ name: skill.name,
374
+ text: skill.content
375
+ }, { id: input.id ? Event.ID.make(input.id.replace(/^msg_/, "evt_")) : undefined });
376
+ if (input.resume !== false)
377
+ yield* execution.resume(input.sessionID).pipe(Effect.ignore, Effect.forkIn(scope, { startImmediately: true }), Effect.asVoid);
378
+ }),
379
+ switchAgent: (input) => sessions.forSession(input.sessionID).switchAgent(input),
380
+ switchModel: (input) => sessions.forSession(input.sessionID).switchModel(input),
381
+ rename: (input) => sessions.forSession(input.sessionID).rename(input),
382
+ move: Effect.fn("Session.move")(function* (input) {
383
+ const current = yield* result.get(input.sessionID);
384
+ const value = input.directory.trim();
385
+ const expanded = value === "~" ? global.home : value.startsWith("~/") ? path.join(global.home, value.slice(2)) : value;
386
+ const directory = AbsolutePath.make(path.resolve(current.location.directory, expanded));
387
+ const info = yield* fs.stat(directory).pipe(Effect.orElseSucceed(() => {
388
+ return;
389
+ }));
390
+ if (!info)
391
+ return yield* new DestinationNotFoundError({ directory });
392
+ if (info.type !== "Directory")
393
+ return yield* new DestinationNotDirectoryError({ directory });
394
+ const project = yield* projects.resolve(directory);
395
+ const payload = {
396
+ location: exports_location.Ref.make({ directory, workspaceID: input.workspaceID }),
397
+ projectID: project.id,
398
+ subpath: RelativePath.make(path.relative(project.directory, directory).replaceAll("\\", "/"))
399
+ };
400
+ yield* exports_location.Service.pipe(Effect.provide(locations.get(payload.location)), Effect.scoped, Effect.catchCause((cause) => {
401
+ if (Cause.hasInterruptsOnly(cause))
402
+ return Effect.failCause(cause);
403
+ return Effect.logWarning("session move destination unavailable", { directory, cause }).pipe(Effect.andThen(Effect.fail(new DestinationUnavailableError({ directory }))));
404
+ }));
405
+ const item = exports_inbox.Item.make({
406
+ type: "move",
407
+ payload,
408
+ delivery: input.delivery ?? "steer"
409
+ });
410
+ yield* exports_inbox.serialized(input.sessionID, Effect.gen(function* () {
411
+ const latest = yield* result.get(input.sessionID);
412
+ const source = yield* fs.stat(latest.location.directory).pipe(Effect.orElseSucceed(() => {
413
+ return;
414
+ }));
415
+ if (!source || source.type !== "Directory") {
416
+ const cancellations = (yield* exports_inbox.moveIDs(db, input.sessionID)).map((item2) => [SessionEvent.InboxCancelled, { sessionID: input.sessionID, inboxID: item2.id }]);
417
+ const moved = [SessionEvent.Moved, { sessionID: input.sessionID, ...payload }];
418
+ const first = cancellations[0];
419
+ if (!first)
420
+ return yield* bus.publish(...moved).pipe(Effect.asVoid);
421
+ return yield* bus.publishAll([first, ...cancellations.slice(1), moved]);
422
+ }
423
+ yield* admission.admit({
424
+ id: SessionMessage.ID.create(),
425
+ sessionID: input.sessionID,
426
+ item
427
+ }).pipe(Effect.orDie);
428
+ }));
429
+ yield* execution.wake(input.sessionID);
430
+ }),
431
+ compact: (input) => sessions.forSession(input.sessionID).compact(input),
432
+ wait: (sessionID) => sessions.forSession(sessionID).wait(),
433
+ active: execution.active,
434
+ background: Effect.fn("Session.background")(function* (sessionID) {
435
+ yield* result.get(sessionID);
436
+ const backgrounded = yield* jobs.backgroundAll({ sessionID });
437
+ if (backgrounded.length === 0)
438
+ return;
439
+ yield* result.synthetic({
440
+ sessionID,
441
+ text: [
442
+ "User requested that active blocking work be moved to the background.",
443
+ "",
444
+ "Backgrounded work:",
445
+ ...backgrounded.map((job) => `- ${job.type}: ${job.title && job.title.length > 0 ? job.title : job.id}`),
446
+ "",
447
+ "The backgrounded work is still unfinished. Move on to other work if you can. If there is nothing else useful to do, finish your response. Do not wait, sleep, poll, or report the backgrounded work as complete until a later completion notification is added to the conversation."
448
+ ].join(`
449
+ `)
450
+ }).pipe(Effect.catchTag("Session.SyntheticConflictError", Effect.die));
451
+ }),
452
+ resume: (sessionID) => sessions.forSession(sessionID).resume(),
453
+ synthetic: (input) => sessions.forSession(input.sessionID).synthetic(input),
454
+ interrupt: (sessionID, options) => sessions.forSession(sessionID).interrupt(options),
455
+ revert: {
456
+ stage: (input) => sessions.forSession(input.sessionID).revert.stage(input),
457
+ clear: (sessionID) => sessions.forSession(sessionID).revert.clear(),
458
+ commit: (sessionID) => sessions.forSession(sessionID).revert.commit()
459
+ }
460
+ });
461
+ return result;
462
+ }));
463
+ var node = makeGlobalNode({
464
+ service: Service,
465
+ layer,
466
+ deps: [
467
+ exports_job.node,
468
+ exports_environment.node,
469
+ exports_database.node,
470
+ exports_bus.node,
471
+ exports_project.node,
472
+ exports_execution.node,
473
+ exports_store.node,
474
+ exports_inbox.node,
475
+ exports_location_service_map.node,
476
+ exports_projector.node,
477
+ FSUtil.node,
478
+ Global.node,
479
+ exports_app.node
480
+ ]
481
+ });
482
+
483
+ export { ListAnchor, ListInput, DestinationNotFoundError, DestinationNotDirectoryError, DestinationUnavailableError, Service, node, exports_session2 as exports_session };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  exports_supervisor
3
- } from "./job-mw6h1mdq.js";
3
+ } from "./job-910ht18m.js";
4
4
  import {
5
5
  exports_location_watcher_policy
6
6
  } from "./job-6wkzvma0.js";
@@ -9,13 +9,13 @@ import {
9
9
  } from "./job-ns0sdez7.js";
10
10
  import {
11
11
  exports_location
12
- } from "./job-s6f237ya.js";
12
+ } from "./job-dv2qtrbh.js";
13
13
  import {
14
14
  exports_git
15
- } from "./job-dyj7wa6j.js";
15
+ } from "./job-6jx6ecw1.js";
16
16
  import {
17
17
  exports_bus
18
- } from "./job-18pyn74f.js";
18
+ } from "./job-wcdz88tf.js";
19
19
  import {
20
20
  __export
21
21
  } from "./job-rvfvac9x.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./job-g5tvq2z7.js";
7
7
  import {
8
8
  exports_sdk
9
- } from "./job-ynndvamt.js";
9
+ } from "./job-g9rvq1b5.js";
10
10
  import {
11
11
  AbsolutePath
12
12
  } from "./job-j07kk359.js";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  exports_model
3
- } from "./job-fr340fdw.js";
3
+ } from "./job-dh8ckpgp.js";
4
4
  import {
5
5
  exports_integration
6
- } from "./job-48pk08ny.js";
6
+ } from "./job-dmvhg2kz.js";
7
7
  import {
8
8
  exports_permission
9
- } from "./job-hz615c35.js";
9
+ } from "./job-bv2z3evd.js";
10
10
  import {
11
11
  AgentNotFoundError,
12
12
  StepFailedError,
13
13
  UserInterruptedError
14
- } from "./job-fb7nfzf2.js";
14
+ } from "./job-cgqn2mrm.js";
15
15
 
16
16
  // src/session/to-session-error.ts
17
17
  import { AIError, ToolFailure } from "@opencode-ai/ai";
@@ -2,23 +2,23 @@ import {
2
2
  fileDiff
3
3
  } from "./job-c77ad0vh.js";
4
4
  import {
5
- exports_file_mutation
6
- } from "./job-jhtwpwqf.js";
5
+ exports_formatter
6
+ } from "./job-khy57ct7.js";
7
7
  import {
8
8
  exports_location_mutation
9
- } from "./job-9zvvrfjj.js";
10
- import {
11
- exports_environment1 as exports_environment
12
- } from "./job-6v09q7yq.js";
9
+ } from "./job-b2jn2z3c.js";
13
10
  import {
14
11
  exports_permission
15
- } from "./job-hz615c35.js";
12
+ } from "./job-bv2z3evd.js";
16
13
  import {
17
- exports_formatter
18
- } from "./job-a4hq1eed.js";
14
+ exports_file_mutation
15
+ } from "./job-7s30ncaq.js";
16
+ import {
17
+ exports_environment1 as exports_environment
18
+ } from "./job-46crkez1.js";
19
19
  import {
20
20
  exports_location
21
- } from "./job-s6f237ya.js";
21
+ } from "./job-dv2qtrbh.js";
22
22
  import {
23
23
  __export
24
24
  } from "./job-rvfvac9x.js";
@@ -1,36 +1,36 @@
1
- import {
2
- exports_run_coordinator
3
- } from "./job-7khw64yh.js";
4
1
  import {
5
2
  exports_runner
6
3
  } from "./job-2m0hgr65.js";
7
4
  import {
8
5
  exports_inbox
9
- } from "./job-ecft2zb7.js";
6
+ } from "./job-fjvbp1rw.js";
7
+ import {
8
+ exports_run_coordinator
9
+ } from "./job-41qzzbpz.js";
10
10
  import {
11
11
  toSessionError
12
- } from "./job-fvv9e4db.js";
12
+ } from "./job-z3fjxbtv.js";
13
+ import {
14
+ exports_location_service_map
15
+ } from "./job-zdkg1k91.js";
13
16
  import {
14
17
  exports_store
15
- } from "./job-qhne0bfz.js";
18
+ } from "./job-h9bbwcgd.js";
16
19
  import {
17
20
  UserInterruptedError
18
- } from "./job-fb7nfzf2.js";
21
+ } from "./job-cgqn2mrm.js";
19
22
  import {
20
23
  SessionEvent
21
24
  } from "./job-a83yvq99.js";
22
- import {
23
- exports_location_service_map
24
- } from "./job-zdkg1k91.js";
25
25
  import {
26
26
  exports_job
27
- } from "./job-d7tex8vw.js";
27
+ } from "./job-2hnk029s.js";
28
28
  import {
29
29
  exports_bus
30
- } from "./job-18pyn74f.js";
30
+ } from "./job-wcdz88tf.js";
31
31
  import {
32
32
  exports_database
33
- } from "./job-hs06t8ty.js";
33
+ } from "./job-rp954h3j.js";
34
34
  import {
35
35
  __export
36
36
  } from "./job-rvfvac9x.js";
@@ -105,6 +105,7 @@ var layer = Layer.effect(Service, Effect.gen(function* () {
105
105
  });
106
106
  return Service.of({
107
107
  active: coordinator.active,
108
+ isActive: coordinator.isActive,
108
109
  interrupt: (sessionID, options) => Effect.gen(function* () {
109
110
  const interrupted = yield* coordinator.interrupt(sessionID, "user");
110
111
  if (!options?.continue)
@@ -128,6 +129,7 @@ var node = makeGlobalNode({
128
129
  });
129
130
  var noopLayer = Layer.succeed(Service, Service.of({
130
131
  active: Effect.succeed(new Set),
132
+ isActive: () => Effect.succeed(false),
131
133
  resume: () => Effect.void,
132
134
  wake: () => Effect.void,
133
135
  interrupt: () => Effect.succeed(false),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  exports_skill
3
- } from "./job-pm83fkmc.js";
3
+ } from "./job-v50dw4p6.js";
4
4
  import {
5
5
  exports_instructions
6
6
  } from "./job-ec8vrfw5.js";
@@ -6,10 +6,10 @@ import {
6
6
  } from "./job-bbhffenw.js";
7
7
  import {
8
8
  exports_config
9
- } from "./job-zg4nw3xx.js";
9
+ } from "./job-pkn40a12.js";
10
10
  import {
11
11
  exports_location
12
- } from "./job-s6f237ya.js";
12
+ } from "./job-dv2qtrbh.js";
13
13
  import {
14
14
  __export
15
15
  } from "./job-rvfvac9x.js";
@@ -1,9 +1,9 @@
1
+ import {
2
+ configuredSettings
3
+ } from "./job-jr5hd5p5.js";
1
4
  import {
2
5
  iife
3
6
  } from "./job-ehj9csmv.js";
4
- import {
5
- configuredSettings
6
- } from "./job-fzbykpt4.js";
7
7
  import {
8
8
  exports_app
9
9
  } from "./job-50jxp3hw.js";