farming-code 2.2.30 → 2.2.32

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 (377) hide show
  1. package/THIRD_PARTY_NOTICES.md +7 -0
  2. package/backend/acp/{client-services.js → client-services.cjs} +132 -134
  3. package/backend/acp/packaged-claude-acp.cjs +37 -0
  4. package/backend/acp/packaged-codex-acp.cjs +37 -0
  5. package/backend/acp/patch-decisions.cjs +182 -0
  6. package/backend/acp/permission-security.cjs +131 -0
  7. package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
  8. package/backend/{acp-runtime.js → acp-runtime.cjs} +1220 -1112
  9. package/backend/acp-session-state.cjs +622 -0
  10. package/backend/acp-transcript.cjs +525 -0
  11. package/backend/agent-env.cjs +257 -0
  12. package/backend/agent-extension-discovery.cjs +452 -0
  13. package/backend/agent-extension-inventory.cjs +116 -0
  14. package/backend/agent-json-stream.cjs +283 -0
  15. package/backend/agent-lifecycle-journal.cjs +185 -0
  16. package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
  17. package/backend/agent-order-transaction.cjs +85 -0
  18. package/backend/agent-order.cjs +159 -0
  19. package/backend/agent-provider-session.cjs +98 -0
  20. package/backend/agent-runtime-binding.cjs +179 -0
  21. package/backend/agent-session-history.cjs +1022 -0
  22. package/backend/agent-session-inventory.cjs +291 -0
  23. package/backend/async-cache.cjs +104 -0
  24. package/backend/atomic-json-store.cjs +67 -0
  25. package/backend/auth.cjs +261 -0
  26. package/backend/authoritative-inventory-cache.cjs +383 -0
  27. package/backend/business-health.cjs +68 -0
  28. package/backend/chat-runtime.cjs +50 -0
  29. package/backend/claude-settings.cjs +132 -0
  30. package/backend/cli-agents.cjs +435 -0
  31. package/backend/codex-context-window.cjs +196 -0
  32. package/backend/codex-models.cjs +228 -0
  33. package/backend/codex-session-archive.cjs +82 -0
  34. package/backend/codex-session-history.cjs +590 -0
  35. package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
  36. package/backend/codex-transcript-sanitizer.cjs +130 -0
  37. package/backend/codex-transcript.cjs +2107 -0
  38. package/backend/command-runner-child.cjs +105 -0
  39. package/backend/config-manager.cjs +1263 -0
  40. package/backend/control-api.cjs +439 -0
  41. package/backend/data/LICENSE.cua +21 -0
  42. package/backend/executable-discovery.cjs +204 -0
  43. package/backend/farming-agent-bootstrap.cjs +81 -0
  44. package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
  45. package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
  46. package/backend/farming-cli.cjs +414 -0
  47. package/backend/farming-net-pass.cjs +319 -0
  48. package/backend/farming-net-registry.cjs +123 -0
  49. package/backend/farming-net-server.cjs +309 -0
  50. package/backend/farming-session-store.cjs +651 -0
  51. package/backend/git-worktree-info.cjs +181 -0
  52. package/backend/haiku-token.cjs +828 -0
  53. package/backend/index-html.cjs +96 -0
  54. package/backend/input-parts.cjs +68 -0
  55. package/backend/input-routing.cjs +40 -0
  56. package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
  57. package/backend/main-agent-skills.cjs +309 -0
  58. package/backend/main-page-session.cjs +132 -0
  59. package/backend/native-pty-controller-generation.cjs +139 -0
  60. package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
  61. package/backend/native-pty-host-identity.cjs +125 -0
  62. package/backend/native-pty-host-path.cjs +68 -0
  63. package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
  64. package/backend/native-session-engine.cjs +296 -0
  65. package/backend/network.cjs +57 -0
  66. package/backend/npm-update-helper.cjs +399 -0
  67. package/backend/packaged-node-pty.cjs +120 -0
  68. package/backend/preview-session-manager.cjs +89 -0
  69. package/backend/provider-adapters.cjs +492 -0
  70. package/backend/provider-home-configuration.cjs +211 -0
  71. package/backend/provider-session-id.cjs +79 -0
  72. package/backend/provider-session-service.cjs +333 -0
  73. package/backend/qr-share-tickets.cjs +119 -0
  74. package/backend/resource-broadcast-protocol.cjs +50 -0
  75. package/backend/review-diff-router.cjs +202 -0
  76. package/backend/review-diff-service.cjs +1267 -0
  77. package/backend/review-session-router.cjs +93 -0
  78. package/backend/review-session-service.cjs +470 -0
  79. package/backend/review-session-store.cjs +161 -0
  80. package/backend/review-state-router.cjs +132 -0
  81. package/backend/review-state-store.cjs +299 -0
  82. package/backend/run-history-store.cjs +97 -0
  83. package/backend/runtime-dependency-manager.cjs +893 -0
  84. package/backend/runtime-executable-invocation.cjs +37 -0
  85. package/backend/runtime-observation.cjs +96 -0
  86. package/backend/server-process-identity.cjs +70 -0
  87. package/backend/server.cjs +3356 -0
  88. package/backend/session-engine-bridge.cjs +144 -0
  89. package/backend/session-engine-router.cjs +105 -0
  90. package/backend/session-engine.cjs +64 -0
  91. package/backend/session-stream-protocol.cjs +181 -0
  92. package/backend/shell-busy-integration.cjs +442 -0
  93. package/backend/slash-command-discovery.cjs +423 -0
  94. package/backend/storage-layout.cjs +263 -0
  95. package/backend/system-monitor.cjs +96 -0
  96. package/backend/terminal-attach-checkpoint.cjs +73 -0
  97. package/backend/terminal-exit-quiescence.cjs +57 -0
  98. package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
  99. package/backend/terminal-runtime-cleanup.cjs +99 -0
  100. package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
  101. package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
  102. package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
  103. package/backend/terminal-screen-worker.cjs +352 -0
  104. package/backend/terminal-state-serialization.cjs +147 -0
  105. package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
  106. package/backend/theme-manager.cjs +185 -0
  107. package/backend/{update-service.js → update-service.cjs} +258 -248
  108. package/backend/usage-forecast.cjs +95 -0
  109. package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
  110. package/backend/usage-history-smoke.cjs +85 -0
  111. package/backend/usage-history-worker.cjs +60 -0
  112. package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
  113. package/backend/workspace-directory.cjs +239 -0
  114. package/backend/workspace-discovery.cjs +271 -0
  115. package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
  116. package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
  117. package/backend/workspace-root-registry.cjs +192 -0
  118. package/bin/farming +1 -1
  119. package/dist/acp/codex-acp-1.1.4.mjs +18 -1
  120. package/dist/assets/App-BCkdpWB6.css +1 -0
  121. package/dist/assets/App-CRjKpaGp.js +697 -0
  122. package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
  123. package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
  124. package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
  125. package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
  126. package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
  127. package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
  128. package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
  129. package/dist/assets/code-dark-B7eM_9G9.css +1 -0
  130. package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
  131. package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
  132. package/dist/assets/file-icons-BpeqWkIB.js +1 -0
  133. package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
  134. package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
  135. package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
  136. package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
  137. package/dist/assets/{index-D-zetSol.js → index-C8MchCem.js} +3 -3
  138. package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
  139. package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
  140. package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
  141. package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
  142. package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
  143. package/dist/assets/main-CLKXa6hf.css +1 -0
  144. package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
  145. package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
  146. package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
  147. package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
  148. package/dist/assets/review-C8-oPKXk.css +1 -0
  149. package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
  150. package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
  151. package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
  152. package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
  153. package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
  154. package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
  155. package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
  156. package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
  157. package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
  158. package/dist/index.html +1 -1
  159. package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
  160. package/extensions/browser/backend/agent-capability.cjs +85 -0
  161. package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
  162. package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
  163. package/extensions/browser/backend/browser-resource-store.cjs +228 -0
  164. package/extensions/browser/backend/browser-router.cjs +203 -0
  165. package/extensions/browser/backend/executable-discovery.cjs +248 -0
  166. package/extensions/browser/backend/farming-browser-client.cjs +116 -0
  167. package/extensions/browser/backend/index.cjs +32 -0
  168. package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
  169. package/extensions/browser/bin/farming-browser +16 -7
  170. package/extensions/computer/backend/agent-capability.cjs +72 -0
  171. package/extensions/computer/backend/computer-constants.cjs +59 -0
  172. package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
  173. package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
  174. package/extensions/computer/backend/computer-resource-store.cjs +190 -0
  175. package/extensions/computer/backend/computer-router.cjs +257 -0
  176. package/extensions/computer/backend/cua-tools.json +3067 -0
  177. package/extensions/computer/backend/farming-computer-client.cjs +84 -0
  178. package/extensions/computer/backend/index.cjs +35 -0
  179. package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
  180. package/extensions/computer/bin/farming-computer +131 -0
  181. package/frontend/farming-net/app.js +255 -262
  182. package/frontend/ghostty-loader.js +24 -20
  183. package/frontend/reading-anchor.js +210 -193
  184. package/frontend/runtime-paths.js +24 -26
  185. package/frontend/session-bridge.js +90 -111
  186. package/frontend/session-modal-bridge.js +184 -302
  187. package/frontend/skin-bridge.js +20 -23
  188. package/frontend/skins/crt/app.js +7686 -7901
  189. package/frontend/skins/crt/effects.js +7 -6
  190. package/frontend/skins/crt/index.html +6 -6
  191. package/frontend/skins/crt/styles/markdown.css +4 -4
  192. package/frontend/terminal-bridge.js +174 -181
  193. package/frontend/terminal-replay.js +320 -345
  194. package/frontend/theme-loader.js +55 -71
  195. package/package.json +64 -37
  196. package/shared/backend-connection-status.js +38 -69
  197. package/shared/browser-protocol.js +235 -110
  198. package/shared/websocket-liveness.js +40 -0
  199. package/backend/acp/packaged-claude-acp.js +0 -13
  200. package/backend/acp/packaged-codex-acp.js +0 -13
  201. package/backend/acp/patch-decisions.js +0 -153
  202. package/backend/acp/permission-security.js +0 -108
  203. package/backend/acp-session-state.js +0 -634
  204. package/backend/acp-transcript.js +0 -512
  205. package/backend/agent-env.js +0 -250
  206. package/backend/agent-json-stream.js +0 -268
  207. package/backend/agent-lifecycle-journal.js +0 -133
  208. package/backend/agent-order.js +0 -166
  209. package/backend/agent-provider-session.js +0 -76
  210. package/backend/agent-runtime-binding.js +0 -174
  211. package/backend/agent-session-history.js +0 -986
  212. package/backend/async-cache.js +0 -94
  213. package/backend/atomic-json-store.js +0 -37
  214. package/backend/auth.js +0 -251
  215. package/backend/chat-runtime.js +0 -28
  216. package/backend/claude-settings.js +0 -121
  217. package/backend/cli-agents.js +0 -486
  218. package/backend/codex-context-window.js +0 -189
  219. package/backend/codex-models.js +0 -226
  220. package/backend/codex-session-archive.js +0 -65
  221. package/backend/codex-session-history.js +0 -647
  222. package/backend/codex-transcript-sanitizer.js +0 -115
  223. package/backend/codex-transcript.js +0 -2362
  224. package/backend/command-runner-child.js +0 -67
  225. package/backend/config-manager.js +0 -1117
  226. package/backend/control-api.js +0 -455
  227. package/backend/executable-discovery.js +0 -216
  228. package/backend/farming-agent-bootstrap.js +0 -49
  229. package/backend/farming-cli.js +0 -403
  230. package/backend/farming-net-pass.js +0 -285
  231. package/backend/farming-net-registry.js +0 -112
  232. package/backend/farming-net-server.js +0 -298
  233. package/backend/farming-session-store.js +0 -677
  234. package/backend/git-worktree-info.js +0 -181
  235. package/backend/haiku-token.js +0 -772
  236. package/backend/index-html.js +0 -80
  237. package/backend/input-parts.js +0 -54
  238. package/backend/input-routing.js +0 -24
  239. package/backend/json-cli-runtime.js +0 -275
  240. package/backend/main-agent-skills.js +0 -288
  241. package/backend/main-page-session.js +0 -122
  242. package/backend/native-pty-controller-generation.js +0 -106
  243. package/backend/native-pty-host-identity.js +0 -86
  244. package/backend/native-pty-host-path.js +0 -42
  245. package/backend/native-session-engine.js +0 -268
  246. package/backend/network.js +0 -23
  247. package/backend/npm-update-helper.js +0 -374
  248. package/backend/packaged-node-pty.js +0 -99
  249. package/backend/preview-session-manager.js +0 -68
  250. package/backend/provider-adapters.js +0 -399
  251. package/backend/provider-session-id.js +0 -47
  252. package/backend/provider-session-service.js +0 -345
  253. package/backend/qr-share-tickets.js +0 -100
  254. package/backend/review-diff-router.js +0 -180
  255. package/backend/review-diff-service.js +0 -1270
  256. package/backend/review-session-router.js +0 -74
  257. package/backend/review-session-service.js +0 -446
  258. package/backend/review-session-store.js +0 -151
  259. package/backend/review-state-router.js +0 -116
  260. package/backend/review-state-store.js +0 -286
  261. package/backend/run-history-store.js +0 -67
  262. package/backend/runtime-dependency-manager.js +0 -759
  263. package/backend/runtime-executable-invocation.js +0 -20
  264. package/backend/runtime-observation.js +0 -81
  265. package/backend/server-process-identity.js +0 -47
  266. package/backend/server.js +0 -3225
  267. package/backend/session-engine-bridge.js +0 -129
  268. package/backend/session-engine-router.js +0 -66
  269. package/backend/session-engine.js +0 -39
  270. package/backend/session-stream-protocol.js +0 -185
  271. package/backend/shell-busy-integration.js +0 -472
  272. package/backend/slash-command-discovery.js +0 -433
  273. package/backend/storage-layout.js +0 -205
  274. package/backend/system-monitor.js +0 -77
  275. package/backend/terminal-attach-checkpoint.js +0 -74
  276. package/backend/terminal-exit-quiescence.js +0 -39
  277. package/backend/terminal-runtime-cleanup.js +0 -80
  278. package/backend/terminal-screen-worker.js +0 -337
  279. package/backend/terminal-state-serialization.js +0 -127
  280. package/backend/theme-manager.js +0 -163
  281. package/backend/usage-forecast.js +0 -86
  282. package/backend/usage-history-scanner.ts +0 -2718
  283. package/backend/usage-history-smoke.js +0 -64
  284. package/backend/usage-history-worker.js +0 -34
  285. package/backend/workspace-directory.js +0 -232
  286. package/backend/workspace-discovery.js +0 -311
  287. package/backend/workspace-root-registry.js +0 -166
  288. package/dist/assets/App-BKNUILuL.css +0 -1
  289. package/dist/assets/App-Z1N7T0eM.js +0 -695
  290. package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
  291. package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
  292. package/dist/assets/ProjectFilesSection-K3GHuQ4U.js +0 -12
  293. package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
  294. package/dist/assets/code-dark-kLsQLvpf.css +0 -1
  295. package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
  296. package/dist/assets/main-DUTz-Rd2.css +0 -1
  297. package/dist/assets/review-BcnwQtJv.css +0 -1
  298. package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
  299. package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
  300. package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
  301. package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
  302. package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
  303. package/extensions/browser/backend/agent-capability.js +0 -55
  304. package/extensions/browser/backend/browser-mcp-server.js +0 -621
  305. package/extensions/browser/backend/browser-resource-manager.js +0 -1331
  306. package/extensions/browser/backend/browser-resource-store.js +0 -190
  307. package/extensions/browser/backend/browser-router.js +0 -141
  308. package/extensions/browser/backend/executable-discovery.js +0 -238
  309. package/extensions/browser/backend/farming-browser-client.js +0 -83
  310. package/extensions/browser/backend/index.js +0 -7
  311. package/extensions/browser/backend/managed-chromium-installer.js +0 -593
  312. package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
  313. package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
  314. package/extensions/browser/frontend/browser-resource-state.ts +0 -60
  315. package/extensions/browser/frontend/browser.css +0 -567
  316. package/extensions/browser/frontend/types.ts +0 -38
  317. package/extensions/browser/frontend/useBrowserResources.ts +0 -166
  318. package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
  319. package/shared/backend-connection-status.d.ts +0 -37
  320. package/shared/browser-protocol.d.ts +0 -5
  321. /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
  322. /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
  323. /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
  324. /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
  325. /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
  326. /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
  327. /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
  328. /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
  329. /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
  330. /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
  331. /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
  332. /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
  333. /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
  334. /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
  335. /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
  336. /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
  337. /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
  338. /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
  339. /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
  340. /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
  341. /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
  342. /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
  343. /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
  344. /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
  345. /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
  346. /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
  347. /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
  348. /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
  349. /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
  350. /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
  351. /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
  352. /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
  353. /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
  354. /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
  355. /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
  356. /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
  357. /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
  358. /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
  359. /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
  360. /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
  361. /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
  362. /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
  363. /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
  364. /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
  365. /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
  366. /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
  367. /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
  368. /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
  369. /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
  370. /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
  371. /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
  372. /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
  373. /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
  374. /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
  375. /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
  376. /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
  377. /package/dist/assets/{workspace-working-copy-C3FSR3N6.js → workspace-working-copy-Cfz07cOd.js} +0 -0
@@ -0,0 +1,622 @@
1
+ // Generated by scripts/build-backend-runtime.ts. Do not edit.
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var acp_session_state_exports = {};
21
+ __export(acp_session_state_exports, {
22
+ AcpSessionState: () => AcpSessionState,
23
+ MAX_ACP_UPDATES: () => MAX_ACP_UPDATES,
24
+ MAX_ACP_UPDATE_LOG_VALUE_CHARS: () => MAX_ACP_UPDATE_LOG_VALUE_CHARS
25
+ });
26
+ module.exports = __toCommonJS(acp_session_state_exports);
27
+ var import_codex_transcript = require("./codex-transcript.cjs");
28
+ var import_codex_transcript_sanitizer = require("./codex-transcript-sanitizer.cjs");
29
+ const MAX_ACP_UPDATES = 2e3;
30
+ const MAX_ACP_UPDATE_LOG_VALUE_CHARS = 32 * 1024;
31
+ const MAX_CODEX_SUBAGENTS = 128;
32
+ const MAX_CODEX_SUBAGENT_ID_CHARS = 160;
33
+ const MAX_CODEX_SUBAGENT_NAME_CHARS = 120;
34
+ function clone(value) {
35
+ return value === void 0 ? value : JSON.parse(JSON.stringify(value));
36
+ }
37
+ function boundedSubagentId(value) {
38
+ return String(value || "").trim().slice(0, MAX_CODEX_SUBAGENT_ID_CHARS);
39
+ }
40
+ function normalizeCodexSubagentStatus(value) {
41
+ const status = String(value || "");
42
+ return [
43
+ "pendingInit",
44
+ "running",
45
+ "completed",
46
+ "interrupted",
47
+ "errored",
48
+ "shutdown",
49
+ "notFound"
50
+ ].includes(status) ? status : "";
51
+ }
52
+ function normalizeCodexSubagentUpdate(raw, sessionId) {
53
+ const source = raw && typeof raw === "object" ? raw : null;
54
+ if (!source || source.version !== 1 || !Array.isArray(source.agents)) return null;
55
+ const rootThreadId = boundedSubagentId(source.rootThreadId);
56
+ if (!rootThreadId || rootThreadId !== sessionId) return null;
57
+ const agents = [];
58
+ const seen = /* @__PURE__ */ new Set();
59
+ for (const candidateValue of source.agents.slice(0, MAX_CODEX_SUBAGENTS)) {
60
+ const candidate = candidateValue && typeof candidateValue === "object" ? candidateValue : null;
61
+ const threadId = boundedSubagentId(candidate?.threadId);
62
+ const status = normalizeCodexSubagentStatus(candidate?.status);
63
+ if (!threadId || threadId === rootThreadId || !status || seen.has(threadId)) continue;
64
+ seen.add(threadId);
65
+ const parentThreadId = boundedSubagentId(candidate?.parentThreadId);
66
+ const name = String(candidate?.name || "").trim().slice(0, MAX_CODEX_SUBAGENT_NAME_CHARS);
67
+ agents.push({
68
+ threadId,
69
+ parentThreadId: parentThreadId && parentThreadId !== threadId ? parentThreadId : null,
70
+ ...name ? { name } : {},
71
+ status
72
+ });
73
+ }
74
+ return {
75
+ version: 1,
76
+ rootThreadId,
77
+ revision: Number.isFinite(Number(source.revision)) ? Math.max(0, Math.floor(Number(source.revision))) : 0,
78
+ kind: source.kind === "delta" ? "delta" : "snapshot",
79
+ agents
80
+ };
81
+ }
82
+ function compactUpdateForLog(update) {
83
+ let serialized = "";
84
+ try {
85
+ serialized = JSON.stringify(update);
86
+ } catch {
87
+ return { sessionUpdate: String(update?.sessionUpdate || ""), truncated: true };
88
+ }
89
+ if (serialized.length <= MAX_ACP_UPDATE_LOG_VALUE_CHARS) return clone(update);
90
+ return {
91
+ sessionUpdate: String(update?.sessionUpdate || ""),
92
+ toolCallId: String(update?.toolCallId || ""),
93
+ messageId: String(update?.messageId || ""),
94
+ truncated: true,
95
+ originalChars: serialized.length
96
+ };
97
+ }
98
+ function appendContent(blocks, content) {
99
+ if (!content || typeof content !== "object") return;
100
+ const next = clone(content);
101
+ const previous = blocks[blocks.length - 1];
102
+ if (previous?.type === "text" && next.type === "text") {
103
+ previous.text = `${previous.text || ""}${next.text || ""}`;
104
+ return;
105
+ }
106
+ blocks.push(next);
107
+ }
108
+ function contentText(content) {
109
+ return (Array.isArray(content) ? content : []).filter((block) => block?.type === "text").map((block) => String(block.text || "")).join("");
110
+ }
111
+ function isCodexSteerMessage(entry) {
112
+ return entry?.type === "message" && entry.role === "user" && entry?._meta?.codex?.steer === true;
113
+ }
114
+ function isContextCompactionText(content) {
115
+ return (0, import_codex_transcript_sanitizer.isCodexContextCompactionMessage)(contentText(content));
116
+ }
117
+ function canMergeMessageIds(existing, incoming) {
118
+ return !existing || !incoming || existing === incoming;
119
+ }
120
+ function codexMessagePhase(meta) {
121
+ return String(meta?.codex?.phase || "");
122
+ }
123
+ function canMergeMessageChunks(existing, update) {
124
+ if (!canMergeMessageIds(existing?.messageId, String(update?.messageId || ""))) return false;
125
+ return codexMessagePhase(existing?._meta) === codexMessagePhase(update?._meta);
126
+ }
127
+ function isCodexMirroredAssistantMessage(provider, existing, update, role, type) {
128
+ if (provider !== "codex" || role !== "assistant" || type !== "message") return false;
129
+ if (!existing || existing.type !== type || existing.role !== role) return false;
130
+ if (codexMessagePhase(existing._meta) !== codexMessagePhase(update?._meta)) return false;
131
+ const existingId = String(existing.messageId || "");
132
+ const incomingId = String(update?.messageId || "");
133
+ if (existingId && incomingId) return false;
134
+ const existingText = (0, import_codex_transcript_sanitizer.stripCodexInternalContextBlocks)(contentText(existing.content));
135
+ const incomingText = (0, import_codex_transcript_sanitizer.stripCodexInternalContextBlocks)(contentText([update?.content]));
136
+ return Boolean(existingText) && existingText === incomingText;
137
+ }
138
+ class AcpSessionState {
139
+ provider;
140
+ sessionId;
141
+ cwd;
142
+ maxUpdates;
143
+ entries;
144
+ updates;
145
+ toolEntries;
146
+ compactionEntries;
147
+ activePlanEntry;
148
+ plan;
149
+ usage;
150
+ availableCommands;
151
+ currentModeId;
152
+ configOptions;
153
+ title;
154
+ updatedAt;
155
+ codexSubagents;
156
+ truncated;
157
+ sequence;
158
+ revision;
159
+ resetBeforeRevision;
160
+ constructor(options = {}) {
161
+ this.provider = String(options.provider || "");
162
+ this.sessionId = String(options.sessionId || "");
163
+ this.cwd = String(options.cwd || "");
164
+ this.maxUpdates = Number.isFinite(options.maxUpdates) ? Math.max(1, Math.floor(Number(options.maxUpdates))) : MAX_ACP_UPDATES;
165
+ this.entries = [];
166
+ this.updates = [];
167
+ this.toolEntries = /* @__PURE__ */ new Map();
168
+ this.compactionEntries = /* @__PURE__ */ new Map();
169
+ this.activePlanEntry = null;
170
+ this.plan = null;
171
+ this.usage = null;
172
+ this.availableCommands = [];
173
+ this.currentModeId = "";
174
+ this.configOptions = [];
175
+ this.title = "";
176
+ this.updatedAt = "";
177
+ this.codexSubagents = null;
178
+ this.truncated = false;
179
+ this.sequence = 0;
180
+ this.revision = Number.isFinite(Number(options.revisionBase)) ? Math.max(0, Math.floor(Number(options.revisionBase))) : 0;
181
+ this.resetBeforeRevision = Number.isFinite(Number(options.resetBeforeRevision)) ? Math.max(0, Math.floor(Number(options.resetBeforeRevision))) : 0;
182
+ }
183
+ setSessionId(sessionId) {
184
+ this.sessionId = String(sessionId || this.sessionId);
185
+ }
186
+ static fromCheckpoint(checkpoint, options = {}) {
187
+ const source = checkpoint && typeof checkpoint === "object" ? checkpoint : null;
188
+ if (!source || source.version !== 1 || !Array.isArray(source.entries)) return null;
189
+ const state = new AcpSessionState({
190
+ provider: options.provider || source.provider,
191
+ sessionId: options.sessionId || source.sessionId,
192
+ cwd: options.cwd || source.cwd,
193
+ maxUpdates: options.maxUpdates,
194
+ revisionBase: source.revision,
195
+ resetBeforeRevision: source.resetBeforeRevision
196
+ });
197
+ state.entries = clone(source.entries);
198
+ state.toolEntries.clear();
199
+ state.compactionEntries.clear();
200
+ let maximumRevision = 0;
201
+ for (const entry of state.entries) {
202
+ maximumRevision = Math.max(maximumRevision, Number(entry?._revision || 0));
203
+ if (entry?.type === "tool" && entry.id) state.toolEntries.set(String(entry.id), entry);
204
+ if (entry?.type === "compaction" && entry.id) state.compactionEntries.set(String(entry.id), entry);
205
+ }
206
+ state.revision = Math.max(state.revision, maximumRevision);
207
+ state.sequence = Math.max(0, Math.floor(Number(source.sequence || 0)));
208
+ state.activePlanEntry = source.activePlanEntryId ? state.entries.find((entry) => entry?.id === source.activePlanEntryId) || null : null;
209
+ state.plan = clone(source.plan ?? state.activePlanEntry?.plan ?? null);
210
+ state.usage = clone(source.usage ?? null);
211
+ state.availableCommands = clone(source.availableCommands || []);
212
+ state.currentModeId = String(source.currentModeId || "");
213
+ state.configOptions = clone(source.configOptions || []);
214
+ state.title = String(source.title || "");
215
+ state.updatedAt = String(source.updatedAt || "");
216
+ state.codexSubagents = clone(source.codexSubagents ?? null);
217
+ state.truncated = source.truncated === true;
218
+ return state;
219
+ }
220
+ nextEntryId(prefix) {
221
+ return `${prefix}-${++this.sequence}`;
222
+ }
223
+ pushEntry(entry) {
224
+ this.touchEntry(entry);
225
+ this.entries.push(entry);
226
+ return entry;
227
+ }
228
+ touchEntry(entry) {
229
+ if (!entry) return this.revision;
230
+ entry._revision = ++this.revision;
231
+ return this.revision;
232
+ }
233
+ touchCurrentTurn() {
234
+ const entry = this.entries[this.entries.length - 1];
235
+ if (entry) this.touchEntry(entry);
236
+ else this.revision += 1;
237
+ return this.revision;
238
+ }
239
+ beginPrompt(prompt) {
240
+ const content = Array.isArray(prompt) ? clone(prompt) : [{ type: "text", text: String(prompt || "") }];
241
+ this.activePlanEntry = null;
242
+ const startedAt = Date.now();
243
+ return this.pushEntry({
244
+ id: this.nextEntryId("user"),
245
+ type: "message",
246
+ role: "user",
247
+ messageId: "",
248
+ optimistic: true,
249
+ content,
250
+ turnStartedAt: startedAt,
251
+ turnCompletedAt: null,
252
+ turnDurationMs: null
253
+ });
254
+ }
255
+ recordAcceptedSteer(prompt, options = {}) {
256
+ const messageId = String(options.messageId || "");
257
+ if (!messageId) return false;
258
+ if (this.entries.some((entry2) => entry2?.type === "message" && entry2.role === "user" && entry2.messageId === messageId)) return false;
259
+ const content = Array.isArray(prompt) ? clone(prompt) : [{ type: "text", text: String(prompt || "") }];
260
+ const entry = {
261
+ id: messageId,
262
+ type: "message",
263
+ role: "user",
264
+ messageId,
265
+ optimistic: true,
266
+ content,
267
+ createdAt: Date.now(),
268
+ _meta: {
269
+ codex: {
270
+ steer: true,
271
+ turnId: String(options.turnId || "")
272
+ }
273
+ }
274
+ };
275
+ this.touchEntry(entry);
276
+ const insertionIndex = Number.isFinite(Number(options.insertionIndex)) ? Math.max(0, Math.min(this.entries.length, Math.floor(Number(options.insertionIndex)))) : this.entries.length;
277
+ this.entries.splice(insertionIndex, 0, entry);
278
+ return true;
279
+ }
280
+ completePrompt() {
281
+ this.completeContextCompactionTool();
282
+ const userEntry = this.entries.findLast((entry) => entry?.type === "message" && entry.role === "user" && entry.turnStartedAt);
283
+ if (userEntry && !userEntry.turnCompletedAt) {
284
+ userEntry.turnCompletedAt = Date.now();
285
+ const startedAt = Number(userEntry.turnStartedAt);
286
+ const completedAt = Number(userEntry.turnCompletedAt);
287
+ userEntry.turnDurationMs = Number.isFinite(startedAt) && Number.isFinite(completedAt) ? Math.max(0, completedAt - startedAt) : null;
288
+ this.touchEntry(userEntry);
289
+ } else {
290
+ this.touchCurrentTurn();
291
+ }
292
+ }
293
+ recordError(message, kind = "unknown") {
294
+ const text = String(message || "").trim();
295
+ if (!text) return null;
296
+ return this.pushEntry({
297
+ id: this.nextEntryId("error"),
298
+ type: "error",
299
+ message: text,
300
+ kind: String(kind || "unknown"),
301
+ status: "failed"
302
+ });
303
+ }
304
+ finishHistoryReplay() {
305
+ }
306
+ apply(notification) {
307
+ if (!notification || notification.sessionId !== this.sessionId) return false;
308
+ const update = notification.update;
309
+ if (!update || typeof update !== "object") return false;
310
+ this.updates.push({
311
+ sequence: this.updates.length + 1,
312
+ at: (/* @__PURE__ */ new Date()).toISOString(),
313
+ update: compactUpdateForLog(update)
314
+ });
315
+ if (this.updates.length > this.maxUpdates) {
316
+ this.updates.splice(0, this.updates.length - this.maxUpdates);
317
+ this.truncated = true;
318
+ }
319
+ const kind = update.sessionUpdate;
320
+ if (kind === "user_message_chunk" || kind === "agent_message_chunk" || kind === "agent_thought_chunk") {
321
+ this.applyMessageChunk(update, kind);
322
+ } else if (kind === "tool_call") {
323
+ this.applyToolCall(update, false);
324
+ } else if (kind === "tool_call_update") {
325
+ this.applyToolCall(update, true);
326
+ } else if (kind === "plan") {
327
+ this.applyPlan({ type: "items", entries: clone(update.entries || []) });
328
+ } else if (kind === "plan_update") {
329
+ this.applyPlan(clone(update.plan));
330
+ } else if (kind === "plan_removed") {
331
+ this.removePlan();
332
+ } else if (kind === "context_compaction" || kind === "context_compaction_update") {
333
+ this.applyCompaction(update);
334
+ } else if (kind === "usage_update") {
335
+ this.usage = clone(update);
336
+ } else if (kind === "available_commands_update") {
337
+ this.availableCommands = clone(update.availableCommands || []);
338
+ } else if (kind === "current_mode_update") {
339
+ this.currentModeId = String(update.currentModeId || "");
340
+ } else if (kind === "config_option_update") {
341
+ this.configOptions = clone(update.configOptions || []);
342
+ } else if (kind === "session_info_update") {
343
+ let metadataChanged = false;
344
+ if (Object.prototype.hasOwnProperty.call(update, "title")) {
345
+ const title = String(update.title || "");
346
+ metadataChanged = metadataChanged || title !== this.title;
347
+ this.title = title;
348
+ }
349
+ if (Object.prototype.hasOwnProperty.call(update, "updatedAt")) {
350
+ const updatedAt = String(update.updatedAt || "");
351
+ metadataChanged = metadataChanged || updatedAt !== this.updatedAt;
352
+ this.updatedAt = updatedAt;
353
+ }
354
+ const subagentsChanged = this.applyCodexSubagentUpdate(update?._meta?.codex?.subagents);
355
+ if (metadataChanged && !subagentsChanged) this.revision += 1;
356
+ }
357
+ return true;
358
+ }
359
+ applyCodexSubagentUpdate(raw) {
360
+ const update = normalizeCodexSubagentUpdate(raw, this.sessionId);
361
+ if (!update) return false;
362
+ const agentsById = update.kind === "delta" && this.codexSubagents?.rootThreadId === update.rootThreadId ? new Map(this.codexSubagents.agents.map((agent) => [agent.threadId, agent])) : /* @__PURE__ */ new Map();
363
+ for (const agent of update.agents) agentsById.set(agent.threadId, agent);
364
+ this.codexSubagents = {
365
+ version: 1,
366
+ rootThreadId: update.rootThreadId,
367
+ revision: update.revision,
368
+ agents: [...agentsById.values()].slice(0, MAX_CODEX_SUBAGENTS)
369
+ };
370
+ this.revision += 1;
371
+ return true;
372
+ }
373
+ applyMessageChunk(update, kind) {
374
+ const role = kind === "user_message_chunk" ? "user" : "assistant";
375
+ const type = kind === "agent_thought_chunk" ? "thought" : "message";
376
+ const messageId = String(update.messageId || "");
377
+ const last = this.entries[this.entries.length - 1];
378
+ const compactionMeta = update?._meta?.context_compaction;
379
+ if (kind === "agent_message_chunk" && (isContextCompactionText([update.content]) || compactionMeta)) {
380
+ if (!this.completeContextCompactionTool(compactionMeta?.summary || "")) {
381
+ this.applyCompaction({
382
+ compactionId: compactionMeta?.id || messageId,
383
+ status: compactionMeta?.status || "completed",
384
+ summary: compactionMeta?.summary || ""
385
+ });
386
+ }
387
+ return;
388
+ }
389
+ const matchingOptimisticUser = role === "user" && messageId ? this.entries.findLast((entry) => entry?.type === "message" && entry.role === "user" && entry.optimistic && entry.messageId === messageId) : null;
390
+ const optimisticUser = matchingOptimisticUser || (role === "user" && last?.type === "message" && last.role === "user" && last.optimistic ? last : null);
391
+ if (optimisticUser && (optimisticUser.content || []).some((content) => JSON.stringify(content) === JSON.stringify(update.content))) {
392
+ if (!optimisticUser.messageId) optimisticUser.messageId = messageId;
393
+ this.touchEntry(optimisticUser);
394
+ return;
395
+ }
396
+ if (last?.type === type && last.role === role && canMergeMessageChunks(last, update)) {
397
+ const mirroredAssistantMessage = isCodexMirroredAssistantMessage(this.provider, last, update, role, type);
398
+ if (!last.messageId) last.messageId = messageId;
399
+ if (!last._meta && update._meta) last._meta = clone(update._meta);
400
+ if (mirroredAssistantMessage) {
401
+ this.touchEntry(last);
402
+ return;
403
+ }
404
+ appendContent(last.content, update.content);
405
+ this.touchEntry(last);
406
+ return;
407
+ }
408
+ if (role === "user") this.activePlanEntry = null;
409
+ this.pushEntry({
410
+ id: messageId || this.nextEntryId(type),
411
+ type,
412
+ role,
413
+ messageId,
414
+ content: [],
415
+ ...update._meta ? { _meta: clone(update._meta) } : {}
416
+ });
417
+ appendContent(this.entries[this.entries.length - 1].content, update.content);
418
+ }
419
+ applyToolCall(update, isPatch) {
420
+ const id = String(update.toolCallId || "");
421
+ if (!id) return;
422
+ let entry = this.toolEntries.get(id);
423
+ if (!entry) {
424
+ entry = this.pushEntry({
425
+ id,
426
+ type: "tool",
427
+ title: "",
428
+ kind: "other",
429
+ status: "pending",
430
+ content: []
431
+ });
432
+ this.toolEntries.set(id, entry);
433
+ }
434
+ for (const field of ["title", "kind", "status", "content", "locations", "rawInput", "rawOutput", "_meta"]) {
435
+ if (!isPatch || Object.prototype.hasOwnProperty.call(update, field)) {
436
+ if (update[field] !== void 0) entry[field] = clone(update[field]);
437
+ }
438
+ }
439
+ this.touchEntry(entry);
440
+ }
441
+ applyCompaction(update) {
442
+ const id = String(update.compactionId || update.id || this.nextEntryId("compaction"));
443
+ let entry = this.compactionEntries.get(id);
444
+ if (!entry) {
445
+ entry = this.pushEntry({ id, type: "compaction", status: "in_progress", summary: "" });
446
+ this.compactionEntries.set(id, entry);
447
+ }
448
+ if (Object.prototype.hasOwnProperty.call(update, "status")) entry.status = String(update.status || "completed");
449
+ if (Object.prototype.hasOwnProperty.call(update, "summary")) entry.summary = String(update.summary || "");
450
+ this.touchEntry(entry);
451
+ }
452
+ completeContextCompactionTool(summary = "") {
453
+ const entry = this.entries.findLast((candidate) => candidate?.type === "tool" && candidate?._meta?.contextCompaction === true);
454
+ if (!entry) return false;
455
+ if (entry.status !== "completed" || entry.title !== "Context compacted") {
456
+ entry.status = "completed";
457
+ entry.title = "Context compacted";
458
+ if (summary && !entry.rawOutput) entry.rawOutput = { summary: String(summary) };
459
+ this.touchEntry(entry);
460
+ }
461
+ return true;
462
+ }
463
+ applyPlan(plan) {
464
+ this.plan = clone(plan);
465
+ if (!this.activePlanEntry) {
466
+ this.activePlanEntry = this.pushEntry({
467
+ id: this.nextEntryId("plan"),
468
+ type: "plan",
469
+ plan: clone(plan)
470
+ });
471
+ return;
472
+ }
473
+ this.activePlanEntry.plan = clone(plan);
474
+ this.touchEntry(this.activePlanEntry);
475
+ }
476
+ removePlan() {
477
+ if (this.activePlanEntry) {
478
+ const index = this.entries.indexOf(this.activePlanEntry);
479
+ if (index >= 0) this.entries.splice(index, 1);
480
+ }
481
+ this.activePlanEntry = null;
482
+ this.plan = null;
483
+ this.touchCurrentTurn();
484
+ }
485
+ transcriptSlice(options = {}) {
486
+ const maxTurns = Number.isFinite(Number(options.maxTurns)) ? Math.max(1, Math.floor(Number(options.maxTurns))) : 80;
487
+ const requestedRevision = Number(options.sinceRevision);
488
+ const resetRequired = Number.isFinite(requestedRevision) && (requestedRevision > this.revision || this.resetBeforeRevision > 0 && requestedRevision <= this.resetBeforeRevision);
489
+ const delta = Number.isFinite(requestedRevision) && requestedRevision >= 0 && !resetRequired;
490
+ let startIndex = 0;
491
+ if (delta) {
492
+ startIndex = this.entries.findIndex((entry) => Number(entry?._revision || 0) > requestedRevision);
493
+ if (startIndex < 0) startIndex = this.entries.length;
494
+ if (startIndex < this.entries.length) {
495
+ while (startIndex > 0) {
496
+ const entry = this.entries[startIndex];
497
+ if (entry?.type === "message" && entry.role === "user" && !isCodexSteerMessage(entry)) break;
498
+ startIndex -= 1;
499
+ }
500
+ }
501
+ } else {
502
+ let remaining = maxTurns;
503
+ startIndex = this.entries.length;
504
+ while (startIndex > 0) {
505
+ startIndex -= 1;
506
+ const entry = this.entries[startIndex];
507
+ if (entry?.type === "message" && entry.role === "user" && !isCodexSteerMessage(entry)) {
508
+ remaining -= 1;
509
+ if (remaining <= 0) break;
510
+ }
511
+ }
512
+ }
513
+ return {
514
+ entries: this.sanitizedEntries(startIndex, { forTranscript: true }),
515
+ revision: this.revision,
516
+ delta,
517
+ hasMoreBefore: startIndex > 0,
518
+ codexSubagents: clone(this.codexSubagents)
519
+ };
520
+ }
521
+ sanitizedEntries(startIndex = 0, options = {}) {
522
+ const safeStart = Math.min(this.entries.length, Math.max(0, Math.floor(startIndex)));
523
+ const entries = options.forTranscript === true ? this.entries.slice(safeStart).map((entry) => {
524
+ const visible = { ...entry };
525
+ delete visible._revision;
526
+ if (entry.type !== "tool") return clone(visible);
527
+ return visible;
528
+ }) : clone(this.entries.slice(safeStart));
529
+ if (options.forTranscript !== true) {
530
+ for (const entry of entries) delete entry._revision;
531
+ }
532
+ if (this.provider !== "codex") return entries;
533
+ let internalSegment = false;
534
+ for (let index = 0; index < safeStart; index += 1) {
535
+ const entry = this.entries[index];
536
+ if (entry?.type !== "message" || entry.role !== "user") continue;
537
+ const hasAttachment = (entry.content || []).some((content) => content.type !== "text");
538
+ internalSegment = !hasAttachment && (0, import_codex_transcript_sanitizer.isCodexInjectedContextMessage)(contentText(entry.content));
539
+ }
540
+ for (const entry of entries) {
541
+ if (entry.type === "message" && entry.role === "user") {
542
+ const hasAttachment = (entry.content || []).some((content) => content.type !== "text");
543
+ const rawText = contentText(entry.content);
544
+ internalSegment = !hasAttachment && (0, import_codex_transcript_sanitizer.isCodexInjectedContextMessage)(rawText);
545
+ }
546
+ entry.internal = internalSegment;
547
+ if (!["message", "thought"].includes(entry.type)) continue;
548
+ const renderedAttachmentKinds = [];
549
+ if (entry.type === "message" && entry.role === "user" && (entry.content || []).some((content) => content?.type === "image")) {
550
+ renderedAttachmentKinds.push("image");
551
+ }
552
+ for (const content of entry.content || []) {
553
+ if (content.type !== "text") continue;
554
+ content.text = entry.type === "message" && entry.role === "user" && entry.internal !== true ? (0, import_codex_transcript.visibleUserMessageText)(content.text, { renderedAttachmentKinds }) : (0, import_codex_transcript_sanitizer.stripCodexInternalContextBlocks)(content.text);
555
+ }
556
+ }
557
+ return entries;
558
+ }
559
+ isInternalEntry(targetEntry) {
560
+ if (this.provider !== "codex" || !targetEntry) return false;
561
+ let internalSegment = false;
562
+ for (const entry of this.entries) {
563
+ if (entry.type === "message" && entry.role === "user") {
564
+ const hasAttachment = (entry.content || []).some((content) => content.type !== "text");
565
+ internalSegment = !hasAttachment && (0, import_codex_transcript_sanitizer.isCodexInjectedContextMessage)(contentText(entry.content));
566
+ }
567
+ if (entry === targetEntry) return internalSegment;
568
+ }
569
+ return false;
570
+ }
571
+ snapshot(extra = {}, options = {}) {
572
+ const entries = options.includeEntries === false ? [] : this.sanitizedEntries(0);
573
+ const snapshot = {
574
+ ...clone(extra),
575
+ version: 2,
576
+ protocol: "acp",
577
+ provider: this.provider,
578
+ sessionId: this.sessionId,
579
+ cwd: this.cwd,
580
+ title: this.title,
581
+ updatedAt: this.updatedAt || extra.updatedAt || "",
582
+ truncated: this.truncated,
583
+ revision: this.revision,
584
+ entries,
585
+ usage: clone(this.usage),
586
+ availableCommands: clone(this.availableCommands),
587
+ currentModeId: this.currentModeId,
588
+ configOptions: clone(this.configOptions),
589
+ codexSubagents: clone(this.codexSubagents)
590
+ };
591
+ if (options.includeUpdates === true) snapshot.updates = clone(this.updates);
592
+ return snapshot;
593
+ }
594
+ exportCheckpoint() {
595
+ return {
596
+ version: 1,
597
+ provider: this.provider,
598
+ sessionId: this.sessionId,
599
+ cwd: this.cwd,
600
+ sequence: this.sequence,
601
+ revision: this.revision,
602
+ resetBeforeRevision: this.resetBeforeRevision,
603
+ entries: clone(this.entries),
604
+ activePlanEntryId: this.activePlanEntry?.id || "",
605
+ plan: clone(this.plan),
606
+ usage: clone(this.usage),
607
+ availableCommands: clone(this.availableCommands),
608
+ currentModeId: this.currentModeId,
609
+ configOptions: clone(this.configOptions),
610
+ title: this.title,
611
+ updatedAt: this.updatedAt,
612
+ codexSubagents: clone(this.codexSubagents),
613
+ truncated: this.truncated
614
+ };
615
+ }
616
+ }
617
+ // Annotate the CommonJS export names for ESM import in node:
618
+ 0 && (module.exports = {
619
+ AcpSessionState,
620
+ MAX_ACP_UPDATES,
621
+ MAX_ACP_UPDATE_LOG_VALUE_CHARS
622
+ });