@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
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  exports_mcp
3
- } from "./job-zc8fs7ja.js";
3
+ } from "./job-3fhw42bc.js";
4
4
  import {
5
5
  exports_session
6
- } from "./job-3qa6q24r.js";
6
+ } from "./job-yyjmndg0.js";
7
7
  import {
8
8
  exports_persistent_pty
9
- } from "./job-cjtr52kr.js";
10
- import {
11
- exports_agent
12
- } from "./job-cpa075bh.js";
9
+ } from "./job-q87p9xpa.js";
13
10
  import {
14
11
  exports_location_service_map
15
12
  } from "./job-zdkg1k91.js";
13
+ import {
14
+ exports_agent
15
+ } from "./job-9e6s2wbs.js";
16
16
  import {
17
17
  exports_job
18
- } from "./job-d7tex8vw.js";
18
+ } from "./job-2hnk029s.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,18 +1,18 @@
1
- import {
2
- exports_app
3
- } from "./job-50jxp3hw.js";
4
- import {
5
- exports_kv
6
- } from "./job-8yw108g0.js";
7
1
  import {
8
2
  exports_model
9
3
  } from "./job-r13w8t0w.js";
10
4
  import {
11
- exports_bus
12
- } from "./job-18pyn74f.js";
5
+ exports_app
6
+ } from "./job-50jxp3hw.js";
13
7
  import {
14
8
  exports_provider
15
9
  } from "./job-krsqcmnj.js";
10
+ import {
11
+ exports_kv
12
+ } from "./job-42wbxjzr.js";
13
+ import {
14
+ exports_bus
15
+ } from "./job-wcdz88tf.js";
16
16
  import {
17
17
  __export
18
18
  } from "./job-rvfvac9x.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  foldSettings
3
- } from "./job-fzbykpt4.js";
3
+ } from "./job-jr5hd5p5.js";
4
4
  import {
5
5
  exports_config
6
- } from "./job-zg4nw3xx.js";
6
+ } from "./job-pkn40a12.js";
7
7
  import {
8
8
  exports_model
9
9
  } from "./job-r13w8t0w.js";
@@ -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";
@@ -11,9 +11,15 @@ import {
11
11
  import {
12
12
  SessionSchema
13
13
  } from "./job-bjwj8hwv.js";
14
+ import {
15
+ exports_bus
16
+ } from "./job-wcdz88tf.js";
14
17
  import {
15
18
  exports_keyed_mutex
16
19
  } from "./job-0kvmztkf.js";
20
+ import {
21
+ exports_database
22
+ } from "./job-rp954h3j.js";
17
23
  import {
18
24
  __export
19
25
  } from "./job-rvfvac9x.js";
@@ -21,28 +27,26 @@ import {
21
27
  // src/session/inbox.ts
22
28
  var exports_inbox = {};
23
29
  __export(exports_inbox, {
24
- steer: () => steer,
25
30
  serialized: () => serialized,
26
- reconcile: () => reconcile,
27
- queue: () => queue,
28
31
  promote: () => promote,
29
32
  projectDeliveryChanged: () => projectDeliveryChanged,
30
33
  projectDelivered: () => projectDelivered,
31
34
  projectCancelled: () => projectCancelled,
32
35
  projectAdmitted: () => projectAdmitted,
36
+ node: () => node,
33
37
  nextPromotable: () => nextPromotable,
34
38
  moveIDs: () => moveIDs,
39
+ make: () => make,
35
40
  list: () => list,
41
+ layer: () => layer,
36
42
  has: () => has,
37
43
  find: () => find,
38
- cancel: () => cancel,
39
- admitCompaction: () => admitCompaction,
40
- admit: () => admit,
41
44
  UserPayload: () => UserPayload,
42
45
  User: () => User,
43
46
  SyntheticPayload: () => SyntheticPayload,
44
47
  Synthetic: () => Synthetic,
45
48
  SessionInbox: () => exports_inbox,
49
+ Service: () => Service,
46
50
  MovePayload: () => MovePayload,
47
51
  Move: () => Move,
48
52
  LifecycleConflict: () => LifecycleConflict,
@@ -53,7 +57,8 @@ __export(exports_inbox, {
53
57
  Compaction: () => Compaction
54
58
  });
55
59
  import { and, asc, eq, or } from "drizzle-orm";
56
- import { DateTime, Effect, Schema } from "effect";
60
+ import { Context, DateTime, Effect, Layer, Schema } from "effect";
61
+ import { makeGlobalNode } from "@opencode-ai/util/effect/app-node";
57
62
  import {
58
63
  Compaction,
59
64
  CompactionPayload,
@@ -83,6 +88,9 @@ class LifecycleConflict extends Schema.TaggedError()("SessionInbox.LifecycleConf
83
88
  id: SessionMessage.ID
84
89
  }) {
85
90
  }
91
+ function matches(stored, request) {
92
+ return stored.sessionID === request.sessionID && stored.type === request.type;
93
+ }
86
94
  var fromRow = (row) => {
87
95
  const base = {
88
96
  id: SessionMessage.ID.make(row.id),
@@ -123,7 +131,7 @@ var promotedFromMessage = Effect.fn("SessionInbox.promotedFromMessage")(function
123
131
  if (row === undefined)
124
132
  return;
125
133
  if (row.session_id !== sessionID || row.type !== "user" && row.type !== "synthetic")
126
- return yield* Effect.die(new LifecycleConflict({ id }));
134
+ return yield* new LifecycleConflict({ id });
127
135
  const message = decodeMessage({ ...row.data, id: row.id, type: row.type });
128
136
  const base = { id, sessionID, timeCreated: message.time.created, delivery };
129
137
  if (message.type === "user")
@@ -138,55 +146,87 @@ var promotedFromMessage = Effect.fn("SessionInbox.promotedFromMessage")(function
138
146
  type: "synthetic",
139
147
  payload: decodeSynthetic(message)
140
148
  });
141
- return yield* Effect.die(new LifecycleConflict({ id }));
149
+ return yield* new LifecycleConflict({ id });
142
150
  });
143
- var reconcile = Effect.fn("SessionInbox.reconcile")(function* (db, request) {
144
- const existing = yield* find(db, request.id);
145
- if (existing !== undefined) {
146
- if (existing.type === "compaction")
147
- return yield* Effect.die(new LifecycleConflict({ id: request.id }));
148
- return existing;
149
- }
150
- return yield* promotedFromMessage(db, request.sessionID, request.id, request.delivery);
151
- });
152
- var admit = Effect.fn("SessionInbox.admit")(function* (db, bus, request) {
153
- const existing = yield* reconcile(db, { ...request, delivery: request.item.delivery });
154
- if (existing !== undefined)
151
+
152
+ class Service extends Context.Service()("@opencode/SessionInbox") {
153
+ }
154
+ var make = Effect.fn("SessionInbox.make")(function* () {
155
+ const database = yield* exports_database.Service;
156
+ const db = database.db;
157
+ const bus = yield* exports_bus.Service;
158
+ const reconcile = Effect.fn("SessionInbox.reconcile")(function* (request) {
159
+ const existing = (yield* find(db, request.id)) ?? (yield* promotedFromMessage(db, request.sessionID, request.id, request.delivery));
160
+ if (existing === undefined)
161
+ return;
162
+ if (existing.type === "compaction" || !matches(existing, request))
163
+ return yield* new LifecycleConflict({ id: request.id });
155
164
  return existing;
156
- return yield* bus.publish(SessionEvent.InboxEnqueued, {
157
- inboxID: request.id,
158
- sessionID: request.sessionID,
159
- item: request.item
160
- }).pipe(Effect.map((event) => Info.make({
161
- id: request.id,
162
- sessionID: request.sessionID,
163
- timeCreated: DateTime.makeUnsafe(event.created),
164
- ...request.item
165
- })), Effect.catchDefect((defect) => find(db, request.id).pipe(Effect.flatMap((stored) => stored?.type === request.item.type ? Effect.succeed(stored) : Effect.die(defect)))));
166
- });
167
- var admitCompaction = Effect.fn("SessionInbox.admitCompaction")(function* (db, bus, input) {
168
- return yield* serialized(input.sessionID, Effect.gen(function* () {
169
- const exact = yield* find(db, input.id);
170
- if (exact) {
171
- if (exact.type === "compaction" && exact.sessionID === input.sessionID)
172
- return exact;
173
- return yield* Effect.die(new LifecycleConflict({ id: input.id }));
174
- }
175
- if (yield* promotedFromMessage(db, input.sessionID, input.id, input.delivery))
176
- return yield* Effect.die(new LifecycleConflict({ id: input.id }));
177
- const pending = (yield* list(db, input.sessionID)).find((item) => item.type === "compaction");
178
- if (pending)
179
- return pending;
180
- const admitted = yield* admit(db, bus, {
181
- id: input.id,
182
- sessionID: input.sessionID,
183
- item: Item.make({ type: "compaction", payload: {}, delivery: input.delivery })
184
- });
185
- if (admitted.type === "compaction")
186
- return admitted;
187
- return yield* Effect.die(new LifecycleConflict({ id: input.id }));
188
- }));
165
+ });
166
+ const admit = Effect.fn("SessionInbox.admit")(function* (request) {
167
+ const existing = yield* reconcile({ ...request, type: request.item.type, delivery: request.item.delivery });
168
+ if (existing !== undefined)
169
+ return existing;
170
+ const admitted = yield* bus.publish(SessionEvent.InboxEnqueued, {
171
+ inboxID: request.id,
172
+ sessionID: request.sessionID,
173
+ item: request.item
174
+ }).pipe(Effect.map((event) => Info.make({
175
+ id: request.id,
176
+ sessionID: request.sessionID,
177
+ timeCreated: DateTime.makeUnsafe(event.created),
178
+ ...request.item
179
+ })), Effect.catchDefect((defect) => defect instanceof LifecycleConflict ? find(db, request.id).pipe(Effect.flatMap((stored) => stored === undefined ? Effect.fail(defect) : Effect.succeed(stored))) : Effect.die(defect)));
180
+ if (!matches(admitted, { ...request, type: request.item.type }))
181
+ return yield* new LifecycleConflict({ id: request.id });
182
+ return admitted;
183
+ });
184
+ const admitCompaction = Effect.fn("SessionInbox.admitCompaction")(function* (input) {
185
+ return yield* serialized(input.sessionID, Effect.gen(function* () {
186
+ const exact = yield* find(db, input.id);
187
+ if (exact) {
188
+ if (exact.type === "compaction" && exact.sessionID === input.sessionID)
189
+ return exact;
190
+ return yield* new LifecycleConflict({ id: input.id });
191
+ }
192
+ if (yield* promotedFromMessage(db, input.sessionID, input.id, input.delivery))
193
+ return yield* new LifecycleConflict({ id: input.id });
194
+ const pending = (yield* list(db, input.sessionID)).find((item) => item.type === "compaction");
195
+ if (pending)
196
+ return pending;
197
+ return yield* admit({
198
+ id: input.id,
199
+ sessionID: input.sessionID,
200
+ item: { type: "compaction", payload: {}, delivery: Delivery.make(input.delivery) }
201
+ });
202
+ }));
203
+ });
204
+ const cancel = Effect.fn("SessionInbox.cancel")((input) => publishMutation(input, bus.publish(SessionEvent.InboxCancelled, {
205
+ sessionID: input.sessionID,
206
+ inboxID: input.id
207
+ })));
208
+ const steer = Effect.fn("SessionInbox.steer")((input) => publishMutation(input, bus.publish(SessionEvent.InboxDeliveryChanged, {
209
+ sessionID: input.sessionID,
210
+ inboxID: input.id,
211
+ delivery: "steer"
212
+ })));
213
+ const queue = Effect.fn("SessionInbox.queue")((input) => publishMutation(input, bus.publish(SessionEvent.InboxDeliveryChanged, {
214
+ sessionID: input.sessionID,
215
+ inboxID: input.id,
216
+ delivery: "queue"
217
+ })));
218
+ return {
219
+ list: (sessionID) => list(db, sessionID),
220
+ reconcile,
221
+ admit,
222
+ admitCompaction,
223
+ cancel,
224
+ steer,
225
+ queue
226
+ };
189
227
  });
228
+ var layer = Layer.effect(Service, make());
229
+ var node = makeGlobalNode({ service: Service, layer, deps: [exports_database.node, exports_bus.node] });
190
230
  var projectAdmitted = Effect.fn("SessionInbox.projectAdmitted")(function* (db, request) {
191
231
  const message = yield* db.select({ id: SessionMessageTable.id }).from(SessionMessageTable).where(eq(SessionMessageTable.id, request.id)).get().pipe(Effect.orDie);
192
232
  if (message !== undefined)
@@ -245,21 +285,7 @@ var has = Effect.fn("SessionInbox.has")(function* (db, sessionID, scope) {
245
285
  const row = yield* db.select({ id: SessionInboxTable.id }).from(SessionInboxTable).where(and(eq(SessionInboxTable.session_id, sessionID), scope === "input" ? or(eq(SessionInboxTable.delivery, "steer"), eq(SessionInboxTable.delivery, "queue")) : eq(SessionInboxTable.delivery, scope))).limit(1).get().pipe(Effect.orDie);
246
286
  return row !== undefined;
247
287
  });
248
- var publishMutation = (input, effect) => serialized(input.sessionID, effect).pipe(Effect.asVoid);
249
- var cancel = Effect.fn("SessionInbox.cancel")((bus, input) => publishMutation(input, bus.publish(SessionEvent.InboxCancelled, {
250
- sessionID: input.sessionID,
251
- inboxID: input.id
252
- })));
253
- var steer = Effect.fn("SessionInbox.steer")((bus, input) => publishMutation(input, bus.publish(SessionEvent.InboxDeliveryChanged, {
254
- sessionID: input.sessionID,
255
- inboxID: input.id,
256
- delivery: "steer"
257
- })));
258
- var queue = Effect.fn("SessionInbox.queue")((bus, input) => publishMutation(input, bus.publish(SessionEvent.InboxDeliveryChanged, {
259
- sessionID: input.sessionID,
260
- inboxID: input.id,
261
- delivery: "queue"
262
- })));
288
+ var publishMutation = (input, effect) => serialized(input.sessionID, effect).pipe(Effect.asVoid, Effect.catchDefect((defect) => defect instanceof LifecycleConflict ? Effect.fail(defect) : Effect.die(defect)));
263
289
  var publish = Effect.fn("SessionInbox.publish")(function* (db, bus, sessionID, rows) {
264
290
  yield* Effect.forEach(rows, (row) => {
265
291
  const entry = fromRow(row);
@@ -268,7 +294,7 @@ var publish = Effect.fn("SessionInbox.publish")(function* (db, bus, sessionID, r
268
294
  return bus.publish(SessionEvent.InboxDelivered, {
269
295
  sessionID,
270
296
  inboxID: entry.id
271
- }).pipe(Effect.catchDefect((defect) => defect instanceof LifecycleConflict ? promotedFromMessage(db, sessionID, entry.id, entry.delivery).pipe(Effect.flatMap((stored) => stored !== undefined ? Effect.void : Effect.die(defect))) : Effect.die(defect)));
297
+ }).pipe(Effect.catchDefect((defect) => defect instanceof LifecycleConflict ? promotedFromMessage(db, sessionID, entry.id, entry.delivery).pipe(Effect.flatMap((stored) => stored !== undefined ? Effect.void : Effect.die(defect)), Effect.orDie) : Effect.die(defect)));
272
298
  }, { discard: true });
273
299
  return rows.length;
274
300
  });
@@ -290,4 +316,4 @@ var promote = Effect.fn("SessionInbox.promote")(function* (db, bus, sessionID, s
290
316
  });
291
317
  var pendingSteers = (db, sessionID) => db.select().from(SessionInboxTable).where(and(eq(SessionInboxTable.session_id, sessionID), eq(SessionInboxTable.delivery, "steer"))).orderBy(asc(SessionInboxTable.enqueued_seq)).all().pipe(Effect.orDie);
292
318
 
293
- export { Compaction, CompactionPayload, Delivery, Info, Item, Move, MovePayload, Synthetic, SyntheticPayload, User, UserPayload, serialized, LifecycleConflict, find, reconcile, admit, admitCompaction, projectAdmitted, projectDelivered, projectCancelled, projectDeliveryChanged, list, moveIDs, nextPromotable, has, cancel, steer, queue, promote, exports_inbox };
319
+ export { Compaction, CompactionPayload, Delivery, Info, Item, Move, MovePayload, Synthetic, SyntheticPayload, User, UserPayload, serialized, LifecycleConflict, find, Service, make, layer, node, projectAdmitted, projectDelivered, projectCancelled, projectDeliveryChanged, list, moveIDs, nextPromotable, has, promote, exports_inbox };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  exports_bus
3
- } from "./job-18pyn74f.js";
3
+ } from "./job-wcdz88tf.js";
4
4
  import {
5
5
  __export
6
6
  } from "./job-rvfvac9x.js";
@@ -1,12 +1,12 @@
1
- import {
2
- exports_entry_observer
3
- } from "./job-kp1t5rcy.js";
4
1
  import {
5
2
  exports_location_watcher_policy
6
3
  } from "./job-6wkzvma0.js";
4
+ import {
5
+ exports_entry_observer
6
+ } from "./job-kp1t5rcy.js";
7
7
  import {
8
8
  exports_config
9
- } from "./job-zg4nw3xx.js";
9
+ } from "./job-pkn40a12.js";
10
10
  import {
11
11
  __export
12
12
  } from "./job-rvfvac9x.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  exports_mcp
3
- } from "./job-zc8fs7ja.js";
3
+ } from "./job-3fhw42bc.js";
4
4
  import {
5
5
  exports_location
6
- } from "./job-s6f237ya.js";
6
+ } from "./job-dv2qtrbh.js";
7
7
  import {
8
8
  exports_bus
9
- } from "./job-18pyn74f.js";
9
+ } from "./job-wcdz88tf.js";
10
10
  import {
11
11
  __export
12
12
  } from "./job-rvfvac9x.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  exports_history
3
- } from "./job-g8xqvtzt.js";
3
+ } from "./job-n5tqbq9v.js";
4
4
  import {
5
5
  fromRow
6
6
  } from "./job-264e1nfp.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./job-q606pcse.js";
11
11
  import {
12
12
  exports_database
13
- } from "./job-hs06t8ty.js";
13
+ } from "./job-rp954h3j.js";
14
14
  import {
15
15
  __export
16
16
  } from "./job-rvfvac9x.js";
@@ -0,0 +1,120 @@
1
+ import {
2
+ exports_supervisor_service
3
+ } from "./job-s33fw6zm.js";
4
+ import {
5
+ exports_snapshot
6
+ } from "./job-nh8pkdtv.js";
7
+ import {
8
+ MessageNotFoundError
9
+ } from "./job-cgqn2mrm.js";
10
+ import {
11
+ SessionMessageTable
12
+ } from "./job-q606pcse.js";
13
+ import {
14
+ SessionEvent
15
+ } from "./job-a83yvq99.js";
16
+ import {
17
+ SessionMessage
18
+ } from "./job-8rpfd2h6.js";
19
+ import {
20
+ exports_bus
21
+ } from "./job-wcdz88tf.js";
22
+ import {
23
+ exports_database
24
+ } from "./job-rp954h3j.js";
25
+ import {
26
+ RelativePath
27
+ } from "./job-j07kk359.js";
28
+ import {
29
+ __export
30
+ } from "./job-rvfvac9x.js";
31
+
32
+ // src/session/revert.ts
33
+ var exports_revert = {};
34
+ __export(exports_revert, {
35
+ make: () => make,
36
+ layer: () => layer,
37
+ commit: () => commit,
38
+ SessionRevert: () => exports_revert,
39
+ Service: () => Service,
40
+ MessageNotFoundError: () => MessageNotFoundError
41
+ });
42
+ import { and, asc, eq, gt } from "drizzle-orm";
43
+ import { Context, Effect, Layer, Schema } from "effect";
44
+ class Service extends Context.Service()("@opencode/SessionRevert") {
45
+ }
46
+ var make = Effect.fn("SessionRevert.make")(function* () {
47
+ const database = yield* exports_database.Service;
48
+ const bus = yield* exports_bus.Service;
49
+ const plugins = yield* exports_supervisor_service.Service;
50
+ const snapshot = yield* exports_snapshot.Service;
51
+ const stage = Effect.fn("SessionRevert.stage")(function* (input) {
52
+ yield* plugins.flush;
53
+ const original = input.session.revert?.snapshot ? exports_snapshot.ID.make(input.session.revert.snapshot) : yield* snapshot.capture();
54
+ const next = yield* plan(database.db, { sessionID: input.session.id, messageID: input.messageID });
55
+ const restore = new Map;
56
+ if (original) {
57
+ for (const file of input.session.revert?.files ?? [])
58
+ restore.set(RelativePath.make(file.file), original);
59
+ }
60
+ if (input.files !== false)
61
+ for (const [file, tree] of next)
62
+ restore.set(file, tree);
63
+ if (restore.size)
64
+ yield* snapshot.restore({ files: restore });
65
+ const paths = input.files === false ? [] : Array.from(next.keys());
66
+ const files = original ? yield* snapshot.diff({ from: original, to: (yield* snapshot.capture()) ?? original, paths }) : [];
67
+ const revert = {
68
+ messageID: input.messageID,
69
+ snapshot: original,
70
+ files
71
+ };
72
+ yield* bus.publish(SessionEvent.RevertEvent.Staged, {
73
+ sessionID: input.session.id,
74
+ revert
75
+ });
76
+ return revert;
77
+ });
78
+ const clear = Effect.fn("SessionRevert.clear")(function* (session) {
79
+ yield* plugins.flush;
80
+ if (!session.revert)
81
+ return;
82
+ const original = session.revert.snapshot ? exports_snapshot.ID.make(session.revert.snapshot) : undefined;
83
+ if (original)
84
+ yield* snapshot.restore({
85
+ files: new Map((session.revert.files ?? []).map((file) => [RelativePath.make(file.file), original]))
86
+ });
87
+ yield* bus.publish(SessionEvent.RevertEvent.Cleared, {
88
+ sessionID: session.id
89
+ });
90
+ });
91
+ return { stage, clear };
92
+ });
93
+ var layer = Layer.effect(Service, make());
94
+ var commit = Effect.fn("SessionRevert.commit")(function* (bus, session) {
95
+ if (!session.revert)
96
+ return;
97
+ yield* bus.publish(SessionEvent.RevertEvent.Committed, {
98
+ sessionID: session.id,
99
+ to: session.revert.messageID
100
+ });
101
+ });
102
+ var plan = Effect.fn("SessionRevert.plan")(function* (db, input) {
103
+ const boundary = yield* db.select({ seq: SessionMessageTable.seq }).from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), eq(SessionMessageTable.id, input.messageID))).get().pipe(Effect.orDie);
104
+ if (!boundary)
105
+ return yield* new MessageNotFoundError(input);
106
+ const rows = yield* db.select().from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), eq(SessionMessageTable.type, "assistant"), gt(SessionMessageTable.seq, boundary.seq))).orderBy(asc(SessionMessageTable.seq)).all().pipe(Effect.orDie);
107
+ const decode = Schema.decodeUnknownEffect(SessionMessage.Info);
108
+ const files = new Map;
109
+ for (const row of rows) {
110
+ const message = yield* decode({ ...row.data, id: row.id, type: row.type }).pipe(Effect.orDie);
111
+ if (message.type !== "assistant" || !message.snapshot?.start)
112
+ continue;
113
+ for (const file of message.snapshot.files ?? [])
114
+ if (!files.has(file))
115
+ files.set(file, exports_snapshot.ID.make(message.snapshot.start));
116
+ }
117
+ return files;
118
+ });
119
+
120
+ export { Service, make, layer, commit, exports_revert };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  exports_bus
3
- } from "./job-18pyn74f.js";
3
+ } from "./job-wcdz88tf.js";
4
4
  import {
5
5
  exports_state
6
6
  } from "./job-x89rah0x.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  exports_entry_observer
3
3
  } from "./job-kp1t5rcy.js";
4
- import {
5
- exports_image
6
- } from "./job-1xqp5xfg.js";
7
4
  import {
8
5
  exports_config
9
- } from "./job-zg4nw3xx.js";
6
+ } from "./job-pkn40a12.js";
7
+ import {
8
+ exports_image
9
+ } from "./job-s5a3kj32.js";
10
10
  import {
11
11
  __export
12
12
  } from "./job-rvfvac9x.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  exports_catalog
3
- } from "./job-rar33brv.js";
3
+ } from "./job-ey3px3v3.js";
4
4
  import {
5
5
  exports_config
6
- } from "./job-zg4nw3xx.js";
6
+ } from "./job-pkn40a12.js";
7
7
  import {
8
8
  exports_provider
9
9
  } from "./job-krsqcmnj.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  foldSettings
3
- } from "./job-fzbykpt4.js";
3
+ } from "./job-jr5hd5p5.js";
4
4
  import {
5
5
  exports_config
6
- } from "./job-zg4nw3xx.js";
6
+ } from "./job-pkn40a12.js";
7
7
  import {
8
8
  exports_model
9
9
  } from "./job-r13w8t0w.js";
@@ -3,10 +3,10 @@ import {
3
3
  } from "./job-kg1345f7.js";
4
4
  import {
5
5
  exports_ripgrep
6
- } from "./job-w7e1pt49.js";
6
+ } from "./job-cdm889rz.js";
7
7
  import {
8
8
  exports_location
9
- } from "./job-s6f237ya.js";
9
+ } from "./job-dv2qtrbh.js";
10
10
  import {
11
11
  RelativePath
12
12
  } from "./job-j07kk359.js";
@@ -2,32 +2,32 @@ import {
2
2
  exports_environment as exports_environment2
3
3
  } from "./job-6ky7rqk7.js";
4
4
  import {
5
- exports_environment1 as exports_environment
6
- } from "./job-6v09q7yq.js";
7
- import {
8
- exports_tool_output
9
- } from "./job-7ccgh94t.js";
5
+ exports_select
6
+ } from "./job-bbhffenw.js";
10
7
  import {
11
- exports_file_retention
12
- } from "./job-hp6rpdnc.js";
8
+ exports_config
9
+ } from "./job-pkn40a12.js";
13
10
  import {
14
11
  exports_hooks
15
12
  } from "./job-v2wshkax.js";
16
- import {
17
- exports_select
18
- } from "./job-bbhffenw.js";
19
13
  import {
20
14
  SessionSchema
21
15
  } from "./job-bjwj8hwv.js";
22
16
  import {
23
- exports_config
24
- } from "./job-zg4nw3xx.js";
17
+ exports_environment1 as exports_environment
18
+ } from "./job-46crkez1.js";
25
19
  import {
26
20
  exports_location
27
- } from "./job-s6f237ya.js";
21
+ } from "./job-dv2qtrbh.js";
28
22
  import {
29
23
  exports_bus
30
- } from "./job-18pyn74f.js";
24
+ } from "./job-wcdz88tf.js";
25
+ import {
26
+ exports_tool_output
27
+ } from "./job-f7q7a28y.js";
28
+ import {
29
+ exports_file_retention
30
+ } from "./job-hp6rpdnc.js";
31
31
  import {
32
32
  __export,
33
33
  __require
@@ -282,8 +282,11 @@ var layer = () => Layer.effect(Service, Effect.gen(function* () {
282
282
  break;
283
283
  yield* removeCommand(oldest);
284
284
  }
285
- if (command2.timeoutFiber)
286
- yield* Fiber.interrupt(command2.timeoutFiber);
285
+ const timeoutFiber = command2.timeoutFiber;
286
+ command2.timeout = undefined;
287
+ command2.timeoutFiber = undefined;
288
+ if (timeoutFiber)
289
+ yield* Fiber.interrupt(timeoutFiber);
287
290
  });
288
291
  command2.timeout = (duration) => Effect.gen(function* () {
289
292
  if (command2.timeoutFiber)