pi-agent-browser-native 0.9.5 → 0.9.7

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 (398) hide show
  1. package/CHANGELOG.md +114 -1
  2. package/README.md +17 -6
  3. package/dist/extensions/agent-browser/index.js +2482 -925
  4. package/dist/packaged/lib/browser-session-conversion.js +2946 -0
  5. package/dist/packaged/lib/config-policy.js +599 -0
  6. package/dist/packaged/lib/parsing.js +34 -0
  7. package/dist/packaged/lib/playbook.js +728 -0
  8. package/dist/packaged/lib/results/snapshot.js +2800 -0
  9. package/dist/packaged/lib/runtime.js +3075 -0
  10. package/docs/ARCHITECTURE.md +29 -10
  11. package/docs/CODE_QUALITY.md +32 -5
  12. package/docs/COMMAND_REFERENCE.md +156 -40
  13. package/docs/ELECTRON.md +1 -1
  14. package/docs/PERFORMANCE.md +252 -0
  15. package/docs/REFERENCE.md +15 -15
  16. package/docs/RELEASE.md +41 -18
  17. package/docs/REQUIREMENTS.md +6 -0
  18. package/docs/SESSION_STORAGE.md +13 -5
  19. package/docs/SUPPORT_MATRIX.md +31 -25
  20. package/docs/TOOL_CONTRACT.md +41 -18
  21. package/docs/performance/2026-10-12.json +7257 -0
  22. package/docs/platform-smoke.md +18 -14
  23. package/package.json +18 -4
  24. package/platform-smoke.config.mjs +3 -2
  25. package/scripts/agent-browser-capability-baseline.mjs +16 -2
  26. package/scripts/agent-browser-target.mjs +1 -1
  27. package/scripts/build.mjs +16 -5
  28. package/scripts/capability-options.mjs +20 -0
  29. package/scripts/capability-samples.mjs +23 -10
  30. package/scripts/config.mjs +1 -1
  31. package/scripts/convert-browser-session.mjs +1 -1
  32. package/scripts/platform-smoke/commands.mjs +30 -4
  33. package/scripts/platform-smoke/doctor-support.mjs +11 -2
  34. package/scripts/platform-smoke/doctor-windows.mjs +1 -1
  35. package/scripts/platform-smoke/doctor.mjs +26 -11
  36. package/scripts/platform-smoke/linux-image/Dockerfile +6 -3
  37. package/scripts/platform-smoke/platform-build-windows.ps1 +23 -3
  38. package/scripts/platform-smoke/suite-checks.mjs +11 -1
  39. package/scripts/platform-smoke/targets.mjs +4 -3
  40. package/scripts/platform-smoke.mjs +68 -25
  41. package/dist/extensions/agent-browser/lib/argv-descriptor.js +0 -123
  42. package/dist/extensions/agent-browser/lib/argv-grammar.js +0 -320
  43. package/dist/extensions/agent-browser/lib/bash-guard.js +0 -193
  44. package/dist/extensions/agent-browser/lib/batch-lifecycle.js +0 -131
  45. package/dist/extensions/agent-browser/lib/browser-execution-claim-codec.js +0 -61
  46. package/dist/extensions/agent-browser/lib/browser-execution-claim-storage.js +0 -232
  47. package/dist/extensions/agent-browser/lib/browser-execution-claims.js +0 -202
  48. package/dist/extensions/agent-browser/lib/browser-execution-identity.js +0 -77
  49. package/dist/extensions/agent-browser/lib/browser-journal-branch.js +0 -98
  50. package/dist/extensions/agent-browser/lib/browser-journal-contracts.js +0 -1
  51. package/dist/extensions/agent-browser/lib/browser-journal-projection.js +0 -221
  52. package/dist/extensions/agent-browser/lib/browser-journal-reader.js +0 -89
  53. package/dist/extensions/agent-browser/lib/browser-journal-replay.js +0 -246
  54. package/dist/extensions/agent-browser/lib/browser-journal.js +0 -148
  55. package/dist/extensions/agent-browser/lib/browser-legacy-pages.js +0 -220
  56. package/dist/extensions/agent-browser/lib/browser-legacy-projection.js +0 -282
  57. package/dist/extensions/agent-browser/lib/browser-legacy-types.js +0 -1
  58. package/dist/extensions/agent-browser/lib/browser-session-conversion-stream.js +0 -217
  59. package/dist/extensions/agent-browser/lib/browser-session-conversion.js +0 -126
  60. package/dist/extensions/agent-browser/lib/browser-transcript-contracts.js +0 -35
  61. package/dist/extensions/agent-browser/lib/browser-transcript-validation.js +0 -166
  62. package/dist/extensions/agent-browser/lib/browser-transcript.js +0 -189
  63. package/dist/extensions/agent-browser/lib/browser-value-parsing.js +0 -15
  64. package/dist/extensions/agent-browser/lib/command-capabilities.js +0 -340
  65. package/dist/extensions/agent-browser/lib/command-policy.js +0 -155
  66. package/dist/extensions/agent-browser/lib/command-taxonomy.js +0 -105
  67. package/dist/extensions/agent-browser/lib/config-policy.js +0 -450
  68. package/dist/extensions/agent-browser/lib/config-providers.js +0 -71
  69. package/dist/extensions/agent-browser/lib/config-validation.js +0 -231
  70. package/dist/extensions/agent-browser/lib/config.js +0 -69
  71. package/dist/extensions/agent-browser/lib/electron/cdp.js +0 -62
  72. package/dist/extensions/agent-browser/lib/electron/cleanup.js +0 -274
  73. package/dist/extensions/agent-browser/lib/electron/discovery-darwin.js +0 -109
  74. package/dist/extensions/agent-browser/lib/electron/discovery-desktop.js +0 -136
  75. package/dist/extensions/agent-browser/lib/electron/discovery-evidence.js +0 -90
  76. package/dist/extensions/agent-browser/lib/electron/discovery-linux.js +0 -93
  77. package/dist/extensions/agent-browser/lib/electron/discovery-packages.js +0 -162
  78. package/dist/extensions/agent-browser/lib/electron/discovery-types.js +0 -2
  79. package/dist/extensions/agent-browser/lib/electron/discovery.js +0 -217
  80. package/dist/extensions/agent-browser/lib/electron/launch-monitor.js +0 -102
  81. package/dist/extensions/agent-browser/lib/electron/launch-process.js +0 -209
  82. package/dist/extensions/agent-browser/lib/electron/launch-types.js +0 -2
  83. package/dist/extensions/agent-browser/lib/electron/launch.js +0 -340
  84. package/dist/extensions/agent-browser/lib/executable-path.js +0 -29
  85. package/dist/extensions/agent-browser/lib/execution-cwd.js +0 -67
  86. package/dist/extensions/agent-browser/lib/fs-utils.js +0 -10
  87. package/dist/extensions/agent-browser/lib/input-modes/electron.js +0 -201
  88. package/dist/extensions/agent-browser/lib/input-modes/job.js +0 -198
  89. package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +0 -116
  90. package/dist/extensions/agent-browser/lib/input-modes/lookup-plan.js +0 -132
  91. package/dist/extensions/agent-browser/lib/input-modes/lookup-redaction.js +0 -57
  92. package/dist/extensions/agent-browser/lib/input-modes/lookup-source-evidence.js +0 -151
  93. package/dist/extensions/agent-browser/lib/input-modes/lookup-workspace.js +0 -142
  94. package/dist/extensions/agent-browser/lib/input-modes/lookups.js +0 -84
  95. package/dist/extensions/agent-browser/lib/input-modes/params.js +0 -195
  96. package/dist/extensions/agent-browser/lib/input-modes/qa-analysis.js +0 -268
  97. package/dist/extensions/agent-browser/lib/input-modes/qa-presentation.js +0 -117
  98. package/dist/extensions/agent-browser/lib/input-modes/script-child.js +0 -396
  99. package/dist/extensions/agent-browser/lib/input-modes/script-protocol.js +0 -86
  100. package/dist/extensions/agent-browser/lib/input-modes/script-types.js +0 -1
  101. package/dist/extensions/agent-browser/lib/input-modes/script-validation.js +0 -60
  102. package/dist/extensions/agent-browser/lib/input-modes/script.js +0 -108
  103. package/dist/extensions/agent-browser/lib/input-modes/semantic-action.js +0 -243
  104. package/dist/extensions/agent-browser/lib/input-modes/shared.js +0 -48
  105. package/dist/extensions/agent-browser/lib/input-modes/types.js +0 -65
  106. package/dist/extensions/agent-browser/lib/json-schema.js +0 -65
  107. package/dist/extensions/agent-browser/lib/launch-scoped-flags.js +0 -212
  108. package/dist/extensions/agent-browser/lib/managed-session-policy-lock.js +0 -165
  109. package/dist/extensions/agent-browser/lib/managed-session-posix-storage.js +0 -58
  110. package/dist/extensions/agent-browser/lib/managed-session-project-identity.js +0 -244
  111. package/dist/extensions/agent-browser/lib/managed-session-restore-context.js +0 -84
  112. package/dist/extensions/agent-browser/lib/managed-session-restore-policy.js +0 -119
  113. package/dist/extensions/agent-browser/lib/managed-session-restore-state.js +0 -83
  114. package/dist/extensions/agent-browser/lib/managed-session-restore.js +0 -212
  115. package/dist/extensions/agent-browser/lib/managed-session-snapshot-records.js +0 -277
  116. package/dist/extensions/agent-browser/lib/managed-session-snapshots.js +0 -181
  117. package/dist/extensions/agent-browser/lib/managed-session-storage.js +0 -126
  118. package/dist/extensions/agent-browser/lib/native-confirmation.js +0 -140
  119. package/dist/extensions/agent-browser/lib/native-output.js +0 -81
  120. package/dist/extensions/agent-browser/lib/orchestration/batch-stdin.js +0 -182
  121. package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-merge.js +0 -30
  122. package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-paths.js +0 -188
  123. package/dist/extensions/agent-browser/lib/orchestration/browser-run/browser-observation-result.js +0 -82
  124. package/dist/extensions/agent-browser/lib/orchestration/browser-run/click-dispatch.js +0 -406
  125. package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostic-values.js +0 -31
  126. package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.js +0 -240
  127. package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-observation.js +0 -203
  128. package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-text-diagnostics.js +0 -109
  129. package/dist/extensions/agent-browser/lib/orchestration/browser-run/fill-diagnostics.js +0 -119
  130. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-action-recovery.js +0 -147
  131. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-actions.js +0 -144
  132. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-content.js +0 -123
  133. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-contracts.js +0 -1
  134. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-details.js +0 -156
  135. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-electron.js +0 -187
  136. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-evidence.js +0 -39
  137. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-missing-binary.js +0 -89
  138. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-recovery.js +0 -97
  139. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-redaction.js +0 -106
  140. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-timeout.js +0 -110
  141. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result.js +0 -53
  142. package/dist/extensions/agent-browser/lib/orchestration/browser-run/index.js +0 -224
  143. package/dist/extensions/agent-browser/lib/orchestration/browser-run/interaction-diagnostics.js +0 -290
  144. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-close.js +0 -167
  145. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-inspection.js +0 -108
  146. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-policy.js +0 -174
  147. package/dist/extensions/agent-browser/lib/orchestration/browser-run/native-helper-observation.js +0 -65
  148. package/dist/extensions/agent-browser/lib/orchestration/browser-run/observation-types.js +0 -1
  149. package/dist/extensions/agent-browser/lib/orchestration/browser-run/overlay-diagnostics.js +0 -120
  150. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/network-page-filter.js +0 -192
  151. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/scroll-shims.js +0 -225
  152. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter-data.js +0 -150
  153. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +0 -174
  154. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-rendered-text.js +0 -147
  155. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/wait-timeouts.js +0 -145
  156. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-artifacts.js +0 -159
  157. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-command.js +0 -131
  158. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-contracts.js +0 -1
  159. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-daemon.js +0 -93
  160. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-failure.js +0 -42
  161. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-guards.js +0 -242
  162. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-input.js +0 -75
  163. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-observations.js +0 -92
  164. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-selection.js +0 -254
  165. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-state.js +0 -121
  166. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-refs.js +0 -130
  167. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-resources.js +0 -114
  168. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-semantic.js +0 -121
  169. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-session-plan.js +0 -222
  170. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-timeouts.js +0 -68
  171. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare.js +0 -202
  172. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-analysis.js +0 -191
  173. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-confirmation.js +0 -152
  174. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-diagnostics.js +0 -182
  175. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-electron.js +0 -150
  176. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-contracts.js +0 -1
  177. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase-contracts.js +0 -1
  178. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase.js +0 -115
  179. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle.js +0 -256
  180. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed-contracts.js +0 -1
  181. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed.js +0 -256
  182. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase-contracts.js +0 -1
  183. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase.js +0 -93
  184. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native.js +0 -113
  185. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation-contracts.js +0 -1
  186. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation.js +0 -316
  187. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-ownership.js +0 -28
  188. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase-contracts.js +0 -1
  189. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase.js +0 -142
  190. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation-contracts.js +0 -1
  191. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation.js +0 -333
  192. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase-contracts.js +0 -1
  193. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase.js +0 -71
  194. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication.js +0 -201
  195. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-receipts.js +0 -183
  196. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-refs.js +0 -200
  197. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-tabs.js +0 -142
  198. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output.js +0 -25
  199. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prompt-guards.js +0 -50
  200. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-receipt-reconciliation.js +0 -198
  201. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-contracts.js +0 -1
  202. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-presentation.js +0 -154
  203. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery.js +0 -80
  204. package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-capture.js +0 -14
  205. package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-observation.js +0 -206
  206. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-commands.js +0 -130
  207. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-electron.js +0 -212
  208. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-observations.js +0 -61
  209. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-outcomes.js +0 -187
  210. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-refs.js +0 -169
  211. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-tabs.js +0 -228
  212. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state.js +0 -117
  213. package/dist/extensions/agent-browser/lib/orchestration/browser-run/text-visibility-diagnostics.js +0 -182
  214. package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-diagnostics.js +0 -256
  215. package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-progress.js +0 -108
  216. package/dist/extensions/agent-browser/lib/orchestration/browser-run/types.js +0 -1
  217. package/dist/extensions/agent-browser/lib/orchestration/code-artifact-observation.js +0 -39
  218. package/dist/extensions/agent-browser/lib/orchestration/code-image-observation.js +0 -119
  219. package/dist/extensions/agent-browser/lib/orchestration/electron-host/branch.js +0 -93
  220. package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup-result.js +0 -58
  221. package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup.js +0 -78
  222. package/dist/extensions/agent-browser/lib/orchestration/electron-host/contracts.js +0 -1
  223. package/dist/extensions/agent-browser/lib/orchestration/electron-host/discovery.js +0 -106
  224. package/dist/extensions/agent-browser/lib/orchestration/electron-host/index.js +0 -60
  225. package/dist/extensions/agent-browser/lib/orchestration/electron-host/policy.js +0 -86
  226. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-collection.js +0 -68
  227. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +0 -169
  228. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +0 -182
  229. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe.js +0 -161
  230. package/dist/extensions/agent-browser/lib/orchestration/electron-host/status.js +0 -167
  231. package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +0 -98
  232. package/dist/extensions/agent-browser/lib/orchestration/extension-artifact-preflight.js +0 -211
  233. package/dist/extensions/agent-browser/lib/orchestration/extension-artifacts.js +0 -23
  234. package/dist/extensions/agent-browser/lib/orchestration/extension-attachment-replay.js +0 -99
  235. package/dist/extensions/agent-browser/lib/orchestration/extension-branch-restore.js +0 -275
  236. package/dist/extensions/agent-browser/lib/orchestration/extension-code.js +0 -280
  237. package/dist/extensions/agent-browser/lib/orchestration/extension-command-admission.js +0 -303
  238. package/dist/extensions/agent-browser/lib/orchestration/extension-command-output.js +0 -36
  239. package/dist/extensions/agent-browser/lib/orchestration/extension-command-result.js +0 -335
  240. package/dist/extensions/agent-browser/lib/orchestration/extension-command-run.js +0 -227
  241. package/dist/extensions/agent-browser/lib/orchestration/extension-command-state.js +0 -1
  242. package/dist/extensions/agent-browser/lib/orchestration/extension-electron-ownership.js +0 -204
  243. package/dist/extensions/agent-browser/lib/orchestration/extension-execution-locks.js +0 -139
  244. package/dist/extensions/agent-browser/lib/orchestration/extension-execution-queue.js +0 -24
  245. package/dist/extensions/agent-browser/lib/orchestration/extension-host-coordination.js +0 -98
  246. package/dist/extensions/agent-browser/lib/orchestration/extension-host-run.js +0 -295
  247. package/dist/extensions/agent-browser/lib/orchestration/extension-intent-replay.js +0 -41
  248. package/dist/extensions/agent-browser/lib/orchestration/extension-invocation.js +0 -7
  249. package/dist/extensions/agent-browser/lib/orchestration/extension-lifecycle.js +0 -102
  250. package/dist/extensions/agent-browser/lib/orchestration/extension-managed-ownership.js +0 -133
  251. package/dist/extensions/agent-browser/lib/orchestration/extension-observation.js +0 -120
  252. package/dist/extensions/agent-browser/lib/orchestration/extension-prompt.js +0 -180
  253. package/dist/extensions/agent-browser/lib/orchestration/extension-recording.js +0 -290
  254. package/dist/extensions/agent-browser/lib/orchestration/extension-resource-contracts.js +0 -1
  255. package/dist/extensions/agent-browser/lib/orchestration/extension-resource-replay.js +0 -269
  256. package/dist/extensions/agent-browser/lib/orchestration/extension-result-state.js +0 -113
  257. package/dist/extensions/agent-browser/lib/orchestration/extension-runtime.js +0 -146
  258. package/dist/extensions/agent-browser/lib/orchestration/extension-script-leases.js +0 -58
  259. package/dist/extensions/agent-browser/lib/orchestration/extension-tool-boundary.js +0 -62
  260. package/dist/extensions/agent-browser/lib/orchestration/extension-version-check.js +0 -54
  261. package/dist/extensions/agent-browser/lib/orchestration/input-plan-types.js +0 -1
  262. package/dist/extensions/agent-browser/lib/orchestration/input-plan.js +0 -313
  263. package/dist/extensions/agent-browser/lib/orchestration/input-redaction.js +0 -62
  264. package/dist/extensions/agent-browser/lib/orchestration/native-config.js +0 -144
  265. package/dist/extensions/agent-browser/lib/orchestration/native-root-launch.js +0 -77
  266. package/dist/extensions/agent-browser/lib/orchestration/native-session-defaults.js +0 -231
  267. package/dist/extensions/agent-browser/lib/orchestration/operation-paths.js +0 -142
  268. package/dist/extensions/agent-browser/lib/orchestration/output-file.js +0 -276
  269. package/dist/extensions/agent-browser/lib/orchestration/script-mode.js +0 -220
  270. package/dist/extensions/agent-browser/lib/owned-managed-session-context.js +0 -55
  271. package/dist/extensions/agent-browser/lib/page-target-batch.js +0 -118
  272. package/dist/extensions/agent-browser/lib/page-target-guards.js +0 -50
  273. package/dist/extensions/agent-browser/lib/page-target-navigation.js +0 -104
  274. package/dist/extensions/agent-browser/lib/page-target-validation.js +0 -90
  275. package/dist/extensions/agent-browser/lib/parsing.js +0 -30
  276. package/dist/extensions/agent-browser/lib/pi-tool-rendering.js +0 -343
  277. package/dist/extensions/agent-browser/lib/playbook.js +0 -146
  278. package/dist/extensions/agent-browser/lib/process-child.js +0 -284
  279. package/dist/extensions/agent-browser/lib/process-environment.js +0 -48
  280. package/dist/extensions/agent-browser/lib/process-errors.js +0 -23
  281. package/dist/extensions/agent-browser/lib/process-identity.js +0 -127
  282. package/dist/extensions/agent-browser/lib/process-socket-storage.js +0 -256
  283. package/dist/extensions/agent-browser/lib/process-stdout.js +0 -74
  284. package/dist/extensions/agent-browser/lib/process.js +0 -216
  285. package/dist/extensions/agent-browser/lib/prompt-artifacts.js +0 -287
  286. package/dist/extensions/agent-browser/lib/prompt-policy.js +0 -54
  287. package/dist/extensions/agent-browser/lib/read-command.js +0 -41
  288. package/dist/extensions/agent-browser/lib/read-confirmation.js +0 -162
  289. package/dist/extensions/agent-browser/lib/recording-reservations.js +0 -208
  290. package/dist/extensions/agent-browser/lib/redaction-fields.js +0 -75
  291. package/dist/extensions/agent-browser/lib/redaction-json.js +0 -149
  292. package/dist/extensions/agent-browser/lib/redaction-url.js +0 -88
  293. package/dist/extensions/agent-browser/lib/results/action-contracts.js +0 -1
  294. package/dist/extensions/agent-browser/lib/results/action-recommendations.js +0 -38
  295. package/dist/extensions/agent-browser/lib/results/artifact-contracts.js +0 -1
  296. package/dist/extensions/agent-browser/lib/results/artifact-manifest-validation.js +0 -133
  297. package/dist/extensions/agent-browser/lib/results/artifact-manifest.js +0 -173
  298. package/dist/extensions/agent-browser/lib/results/artifact-recommendations.js +0 -73
  299. package/dist/extensions/agent-browser/lib/results/categories.js +0 -152
  300. package/dist/extensions/agent-browser/lib/results/confirmation.js +0 -75
  301. package/dist/extensions/agent-browser/lib/results/contracts.js +0 -1
  302. package/dist/extensions/agent-browser/lib/results/editable-ref-evidence.js +0 -99
  303. package/dist/extensions/agent-browser/lib/results/electron-recommendations.js +0 -83
  304. package/dist/extensions/agent-browser/lib/results/envelope-decoding.js +0 -48
  305. package/dist/extensions/agent-browser/lib/results/envelope.js +0 -198
  306. package/dist/extensions/agent-browser/lib/results/evidence-contracts.js +0 -1
  307. package/dist/extensions/agent-browser/lib/results/failure-recommendations.js +0 -180
  308. package/dist/extensions/agent-browser/lib/results/network-routes.js +0 -133
  309. package/dist/extensions/agent-browser/lib/results/network.js +0 -89
  310. package/dist/extensions/agent-browser/lib/results/next-actions.js +0 -111
  311. package/dist/extensions/agent-browser/lib/results/presentation/artifact-files.js +0 -320
  312. package/dist/extensions/agent-browser/lib/results/presentation/artifact-format.js +0 -138
  313. package/dist/extensions/agent-browser/lib/results/presentation/artifact-images.js +0 -113
  314. package/dist/extensions/agent-browser/lib/results/presentation/artifact-verification.js +0 -145
  315. package/dist/extensions/agent-browser/lib/results/presentation/artifacts.js +0 -165
  316. package/dist/extensions/agent-browser/lib/results/presentation/batch-contracts.js +0 -1
  317. package/dist/extensions/agent-browser/lib/results/presentation/batch-recording.js +0 -118
  318. package/dist/extensions/agent-browser/lib/results/presentation/batch-redaction.js +0 -68
  319. package/dist/extensions/agent-browser/lib/results/presentation/batch-rendering.js +0 -135
  320. package/dist/extensions/agent-browser/lib/results/presentation/batch-step.js +0 -227
  321. package/dist/extensions/agent-browser/lib/results/presentation/batch-summary.js +0 -91
  322. package/dist/extensions/agent-browser/lib/results/presentation/batch.js +0 -123
  323. package/dist/extensions/agent-browser/lib/results/presentation/browser-profile-recovery.js +0 -54
  324. package/dist/extensions/agent-browser/lib/results/presentation/command-presenters.js +0 -216
  325. package/dist/extensions/agent-browser/lib/results/presentation/common.js +0 -81
  326. package/dist/extensions/agent-browser/lib/results/presentation/content.js +0 -119
  327. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-a11y.js +0 -67
  328. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-health.js +0 -79
  329. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-identity.js +0 -199
  330. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-logs.js +0 -75
  331. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network-actions.js +0 -216
  332. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network.js +0 -124
  333. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-redaction.js +0 -64
  334. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-storage.js +0 -209
  335. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-stream.js +0 -69
  336. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-summary.js +0 -222
  337. package/dist/extensions/agent-browser/lib/results/presentation/diagnostics.js +0 -124
  338. package/dist/extensions/agent-browser/lib/results/presentation/early-result.js +0 -70
  339. package/dist/extensions/agent-browser/lib/results/presentation/errors.js +0 -285
  340. package/dist/extensions/agent-browser/lib/results/presentation/input-contracts.js +0 -1
  341. package/dist/extensions/agent-browser/lib/results/presentation/large-output.js +0 -117
  342. package/dist/extensions/agent-browser/lib/results/presentation/navigation.js +0 -231
  343. package/dist/extensions/agent-browser/lib/results/presentation/notices.js +0 -75
  344. package/dist/extensions/agent-browser/lib/results/presentation/observation-contracts.js +0 -1
  345. package/dist/extensions/agent-browser/lib/results/presentation/observation-rendering.js +0 -127
  346. package/dist/extensions/agent-browser/lib/results/presentation/outcomes.js +0 -120
  347. package/dist/extensions/agent-browser/lib/results/presentation/output-completion.js +0 -77
  348. package/dist/extensions/agent-browser/lib/results/presentation/output-spill.js +0 -51
  349. package/dist/extensions/agent-browser/lib/results/presentation/registry.js +0 -145
  350. package/dist/extensions/agent-browser/lib/results/presentation/semantic-action.js +0 -104
  351. package/dist/extensions/agent-browser/lib/results/presentation/skills.js +0 -183
  352. package/dist/extensions/agent-browser/lib/results/presentation/source.js +0 -109
  353. package/dist/extensions/agent-browser/lib/results/presentation.js +0 -19
  354. package/dist/extensions/agent-browser/lib/results/recommendation-contracts.js +0 -1
  355. package/dist/extensions/agent-browser/lib/results/recording.js +0 -88
  356. package/dist/extensions/agent-browser/lib/results/recovery-actions.js +0 -118
  357. package/dist/extensions/agent-browser/lib/results/recovery-next-actions.js +0 -60
  358. package/dist/extensions/agent-browser/lib/results/selector-recovery-target.js +0 -83
  359. package/dist/extensions/agent-browser/lib/results/selector-recovery.js +0 -261
  360. package/dist/extensions/agent-browser/lib/results/snapshot-compact.js +0 -266
  361. package/dist/extensions/agent-browser/lib/results/snapshot-content.js +0 -32
  362. package/dist/extensions/agent-browser/lib/results/snapshot-high-value-controls.js +0 -240
  363. package/dist/extensions/agent-browser/lib/results/snapshot-refs.js +0 -103
  364. package/dist/extensions/agent-browser/lib/results/snapshot-segments.js +0 -383
  365. package/dist/extensions/agent-browser/lib/results/snapshot-spill.js +0 -53
  366. package/dist/extensions/agent-browser/lib/results/snapshot.js +0 -44
  367. package/dist/extensions/agent-browser/lib/results/text.js +0 -44
  368. package/dist/extensions/agent-browser/lib/runtime-args-validation.js +0 -133
  369. package/dist/extensions/agent-browser/lib/runtime-compatibility.js +0 -81
  370. package/dist/extensions/agent-browser/lib/runtime-contracts.js +0 -1
  371. package/dist/extensions/agent-browser/lib/runtime-redaction.js +0 -118
  372. package/dist/extensions/agent-browser/lib/runtime-replay-events.js +0 -144
  373. package/dist/extensions/agent-browser/lib/runtime-session-identity.js +0 -76
  374. package/dist/extensions/agent-browser/lib/runtime-session-plan.js +0 -114
  375. package/dist/extensions/agent-browser/lib/runtime-session-replay.js +0 -123
  376. package/dist/extensions/agent-browser/lib/runtime-tab-correction.js +0 -65
  377. package/dist/extensions/agent-browser/lib/runtime-timeouts.js +0 -28
  378. package/dist/extensions/agent-browser/lib/runtime.js +0 -163
  379. package/dist/extensions/agent-browser/lib/session-identity.js +0 -51
  380. package/dist/extensions/agent-browser/lib/session-page-observation.js +0 -357
  381. package/dist/extensions/agent-browser/lib/session-page-state.js +0 -353
  382. package/dist/extensions/agent-browser/lib/session-page-types.js +0 -1
  383. package/dist/extensions/agent-browser/lib/string-enum-schema.js +0 -8
  384. package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +0 -81
  385. package/dist/extensions/agent-browser/lib/temp-mutation-queue.js +0 -7
  386. package/dist/extensions/agent-browser/lib/temp-root-ownership.js +0 -234
  387. package/dist/extensions/agent-browser/lib/temp-root.js +0 -211
  388. package/dist/extensions/agent-browser/lib/temp.js +0 -91
  389. package/dist/extensions/agent-browser/lib/tool-surface.js +0 -239
  390. package/dist/extensions/agent-browser/lib/upstream-version.js +0 -15
  391. package/dist/extensions/agent-browser/lib/web-search-providers.js +0 -193
  392. package/dist/extensions/agent-browser/lib/web-search-request.js +0 -102
  393. package/dist/extensions/agent-browser/lib/web-search-results.js +0 -281
  394. package/dist/extensions/agent-browser/lib/web-search-schema.js +0 -82
  395. package/dist/extensions/agent-browser/lib/web-search.js +0 -167
  396. package/dist/extensions/agent-browser/lib/webmcp-observation.js +0 -35
  397. package/dist/extensions/agent-browser/lib/windows-stock-launcher.js +0 -96
  398. package/dist/scripts/agent-browser-target.mjs +0 -23
@@ -1,98 +0,0 @@
1
- import { getActiveElectronRecords } from "./browser-run/session-state.js";
2
- import { buildValidationFailureResult } from "./input-plan.js";
3
- import { applyAgentBrowserOutputPath } from "./output-file.js";
4
- import { resolveBrowserExecutionIdentity, withBrowserExecutionLocks, } from "../managed-session-policy-lock.js";
5
- import { getArtifactPreflightValidationError } from "./extension-artifact-preflight.js";
6
- import { browserExecutionFailure } from "./extension-result-state.js";
7
- import { shouldSerializeElectronHostInput } from "./extension-electron-ownership.js";
8
- import { warnRecordingPersistence } from "./extension-recording.js";
9
- import { runElectronHostInput } from "./extension-host-run.js";
10
- class ElectronHostCoordinator {
11
- runtime;
12
- call;
13
- constructor(runtime, call) {
14
- this.runtime = runtime;
15
- this.call = call;
16
- }
17
- async cleanup(signal) {
18
- this.runtime.recordings.flush();
19
- const path = this.call.outputPath;
20
- const error = path !== undefined && path !== ""
21
- ? getArtifactPreflightValidationError({
22
- activeRecordingReservations: [...this.runtime.recordings.active.values()],
23
- args: [],
24
- cwd: this.call.operationCwd,
25
- outputPath: path,
26
- })
27
- : undefined;
28
- if (error !== undefined && error !== "") {
29
- return warnRecordingPersistence(this.runtime.recordings.dirty, buildValidationFailureResult({
30
- ...this.call.resolvedInput,
31
- attemptedKind: this.call.resolvedInput.kind,
32
- kind: "invalid",
33
- status: "invalid",
34
- validationError: error,
35
- }));
36
- }
37
- const result = await runElectronHostInput(this.runtime, this.call, signal);
38
- return result
39
- ? applyAgentBrowserOutputPath({
40
- cwd: this.call.operationCwd,
41
- outputPath: path,
42
- result: warnRecordingPersistence(this.runtime.recordings.dirty, result),
43
- })
44
- : result;
45
- }
46
- execute(signal = this.call.signal) {
47
- return this.call.compiledElectron?.action === "cleanup"
48
- ? this.runtime.artifacts.queue.run(() => this.cleanup(signal))
49
- : runElectronHostInput(this.runtime, this.call, signal);
50
- }
51
- selectedSessions() {
52
- const compiled = this.call.compiledElectron;
53
- const records = this.runtime.electron.forHostInput({
54
- compiledElectron: compiled,
55
- ownerSessionId: this.call.ctx.sessionManager.getSessionId(),
56
- });
57
- const launchId = compiled && "launchId" in compiled ? compiled.launchId : undefined;
58
- const selected = launchId !== undefined && launchId !== ""
59
- ? [records.get(launchId)].filter((record) => record !== undefined)
60
- : getActiveElectronRecords(records);
61
- const sessions = selected.flatMap((record) => record.sessionName !== undefined && record.sessionName !== ""
62
- ? [{ sessionName: record.sessionName, namespace: record.namespace }]
63
- : []);
64
- if (compiled?.action === "probe" &&
65
- (launchId === undefined || launchId === "") &&
66
- this.runtime.managed.active) {
67
- sessions.push({
68
- sessionName: this.runtime.managed.name,
69
- namespace: this.runtime.managed.namespace,
70
- });
71
- }
72
- return sessions;
73
- }
74
- async run() {
75
- if (!shouldSerializeElectronHostInput(this.call.compiledElectron)) {
76
- return this.execute();
77
- }
78
- const sessions = this.selectedSessions();
79
- if (sessions.length === 0) {
80
- return this.execute();
81
- }
82
- try {
83
- const identities = await Promise.all(sessions.map((session) => resolveBrowserExecutionIdentity({ ...session, ownedManagedSession: true })));
84
- return await withBrowserExecutionLocks({
85
- identities,
86
- signal: this.call.signal,
87
- deadline: Date.now() + this.call.executionTimeoutMs,
88
- waitOnly: true,
89
- }, (signal) => this.execute(signal));
90
- }
91
- catch (error) {
92
- return browserExecutionFailure(error, this.call.signal);
93
- }
94
- }
95
- }
96
- export function runCoordinatedElectronHostInput(runtime, call) {
97
- return new ElectronHostCoordinator(runtime, call).run();
98
- }
@@ -1,295 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { appendBrowserTransition, applyArtifactChanges, artifactChanges, browserStateEffects, } from "../browser-transcript.js";
3
- import { appendBrowserRecord } from "../browser-journal.js";
4
- import { createFreshSessionName } from "../runtime.js";
5
- import { getAgentBrowserSessionIdentityKey } from "../argv-grammar.js";
6
- import { isRecord } from "../parsing.js";
7
- import { inspectManagedSessionDaemon } from "./browser-run/managed-session-daemon-policy.js";
8
- import { getActiveElectronRecords, getSessionContextKey } from "./browser-run/session-state.js";
9
- import { handleElectronHostInput } from "./electron-host/index.js";
10
- import { formatSessionArtifactRetentionSummary } from "../results/artifact-manifest.js";
11
- import { browserExecutionFailure, invocationArtifactManifest, browserPageChanges, } from "./extension-result-state.js";
12
- import { getCleanupResultsClosedManagedSessionIdentities, isElectronLaunchRecord, syncElectronCleanupManagedSessions, } from "./extension-electron-ownership.js";
13
- class ElectronHostTransaction {
14
- runtime;
15
- call;
16
- executionSignal;
17
- electronHostLaunchRecords;
18
- hostAffecting;
19
- workingPageState;
20
- priorPages;
21
- priorManifest;
22
- operationId;
23
- launchId;
24
- selected;
25
- keys;
26
- begin;
27
- electronHostResult;
28
- constructor(runtime, call, executionSignal = call.signal) {
29
- this.runtime = runtime;
30
- this.call = call;
31
- this.executionSignal = executionSignal;
32
- this.electronHostLaunchRecords = this.runtime.electron.forHostInput({
33
- compiledElectron: this.call.compiledElectron,
34
- ownerSessionId: this.call.ctx.sessionManager.getSessionId(),
35
- });
36
- this.hostAffecting =
37
- this.call.compiledElectron !== undefined &&
38
- ["cleanup", "probe"].includes(this.call.compiledElectron.action);
39
- this.workingPageState = this.runtime.sessions.pages.fork();
40
- this.priorPages = this.workingPageState.views();
41
- this.priorManifest = this.runtime.artifacts.manifest;
42
- this.operationId = randomUUID();
43
- this.launchId =
44
- this.call.compiledElectron && "launchId" in this.call.compiledElectron
45
- ? this.call.compiledElectron.launchId
46
- : undefined;
47
- this.selected =
48
- this.launchId !== undefined && this.launchId !== ""
49
- ? [this.electronHostLaunchRecords.get(this.launchId)].filter((record) => record !== undefined)
50
- : getActiveElectronRecords(this.electronHostLaunchRecords);
51
- this.keys = this.selectedKeys();
52
- this.begin = this.beginRecord();
53
- }
54
- selectedKeys() {
55
- const keys = new Set(this.selected.flatMap((record) => record.sessionName !== undefined && record.sessionName !== ""
56
- ? [getAgentBrowserSessionIdentityKey(record.sessionName, record.namespace)]
57
- : []));
58
- if (this.call.compiledElectron?.action === "probe" &&
59
- !(this.launchId !== undefined && this.launchId !== "") &&
60
- this.runtime.managed.active) {
61
- keys.add(getAgentBrowserSessionIdentityKey(this.runtime.managed.name, this.runtime.managed.namespace));
62
- }
63
- return keys;
64
- }
65
- beginRecord() {
66
- return {
67
- event: {
68
- version: 1,
69
- phase: "begin",
70
- operationId: this.operationId,
71
- toolCallId: this.call.toolCallId,
72
- commandIndex: this.call.commandIndex ?? 0,
73
- isError: true,
74
- state: {},
75
- pages: [...this.keys].map((key) => ({
76
- key,
77
- refs: { kind: "unknown" },
78
- unknown: true,
79
- })),
80
- },
81
- };
82
- }
83
- async admit() {
84
- if (this.hostAffecting) {
85
- try {
86
- if (!(await appendBrowserRecord(this.call.ctx.sessionManager, () => appendBrowserTransition(this.runtime.pi, this.begin), this.begin, this.call.branch)) ||
87
- !this.call.branch.isCurrent()) {
88
- throw new Error("The selected Pi branch changed before host-operation admission.");
89
- }
90
- }
91
- catch (error) {
92
- return browserExecutionFailure(new Error("Could not persist Electron/browser-state begin; the host operation was not run.", { cause: error }), this.executionSignal);
93
- }
94
- this.runtime.sessions.pages.applyBrowserRecord(this.begin);
95
- }
96
- return undefined;
97
- }
98
- async dispatch() {
99
- this.electronHostResult = await handleElectronHostInput({
100
- attachedSessionKeys: this.runtime.sessions.attached,
101
- compiledElectron: this.call.compiledElectron,
102
- cwd: this.call.ctx.cwd,
103
- electronChildProcesses: this.runtime.electron.childProcesses,
104
- electronLaunchRecords: this.electronHostLaunchRecords,
105
- implicitSessionCloseTimeoutMs: this.runtime.implicitSessionCloseTimeoutMs,
106
- managedSessionActive: this.runtime.managed.active,
107
- managedSessionName: this.runtime.managed.name,
108
- managedSessionNamespace: this.runtime.managed.namespace,
109
- managedSessionRestoreState: this.runtime.managed.restore,
110
- ownedManagedSessions: this.runtime.managed.owned,
111
- redactedCompiledElectron: this.call.redactedCompiledElectron,
112
- sessionPageState: this.workingPageState,
113
- signal: this.executionSignal,
114
- });
115
- }
116
- cleanupRecords() {
117
- const details = this.electronHostResult?.details;
118
- if (!isRecord(details) || !isRecord(details.electron) || !isRecord(details.electron.cleanup)) {
119
- return [];
120
- }
121
- const rows = details.electron.cleanup.results;
122
- return Array.isArray(rows) ? rows : [];
123
- }
124
- resetManagedSession() {
125
- this.runtime.managed.active = false;
126
- this.runtime.managed.compatibilityWorkaround = undefined;
127
- this.runtime.managed.headedAutosaveDisabled = false;
128
- this.runtime.managed.headedAutosaveInterval = undefined;
129
- this.runtime.managed.namespace = undefined;
130
- this.runtime.managed.freshOrdinal += 1;
131
- this.runtime.managed.name = createFreshSessionName(this.runtime.managed.baseName, this.runtime.ephemeralSessionSeed, this.runtime.managed.freshOrdinal);
132
- }
133
- retireClosedIdentity(identity) {
134
- this.runtime.recordings.retire(identity.sessionName, identity.namespace);
135
- const key = getSessionContextKey(identity.sessionName, identity.namespace) ?? identity.sessionName;
136
- this.runtime.sessions.clear(key);
137
- this.workingPageState.clearSession(key);
138
- if (key ===
139
- (getSessionContextKey(this.runtime.managed.name, this.runtime.managed.namespace) ??
140
- this.runtime.managed.name)) {
141
- this.resetManagedSession();
142
- }
143
- }
144
- cleanedLaunchIds(records) {
145
- const ids = new Set();
146
- for (const row of records) {
147
- if (isRecord(row) && isElectronLaunchRecord(row.record)) {
148
- ids.add(row.record.launchId);
149
- }
150
- }
151
- return ids;
152
- }
153
- applyCleanup() {
154
- const result = this.electronHostResult;
155
- if (!result || this.call.compiledElectron?.action !== "cleanup") {
156
- return;
157
- }
158
- this.runtime.branch.advanceState();
159
- const records = this.cleanupRecords();
160
- const cleanedLaunchIds = this.cleanedLaunchIds(records);
161
- this.runtime.electron.replaceActive(this.electronHostLaunchRecords, cleanedLaunchIds);
162
- this.runtime.electron.mergeCleanup(records);
163
- const namespace = isRecord(result.details) && typeof result.details.namespace === "string"
164
- ? result.details.namespace
165
- : undefined;
166
- const identities = getCleanupResultsClosedManagedSessionIdentities(records, namespace);
167
- syncElectronCleanupManagedSessions(this.runtime.managed.owned, records, namespace);
168
- for (const identity of identities) {
169
- this.retireClosedIdentity(identity);
170
- }
171
- if (this.runtime.artifacts.manifest && isRecord(result.details)) {
172
- result.details.artifactRetentionSummary = formatSessionArtifactRetentionSummary(this.runtime.artifacts.manifest);
173
- }
174
- }
175
- selectedRecordForKey(key) {
176
- return this.selected.find((candidate) => candidate.sessionName !== undefined &&
177
- candidate.sessionName !== "" &&
178
- getAgentBrowserSessionIdentityKey(candidate.sessionName, candidate.namespace) === key);
179
- }
180
- snapshotChanged(key) {
181
- const snapshot = this.workingPageState.get(key).refSnapshot;
182
- return (snapshot !== undefined &&
183
- snapshot.snapshotId !== this.priorPages.get(key)?.refSnapshot?.snapshotId);
184
- }
185
- headedAutosaveInterval(key) {
186
- const owner = this.runtime.managed.owned.get(key);
187
- return (owner?.headedManagedAutosaveInterval ??
188
- (owner?.headedManagedAutosaveDisabled === true ? "0" : undefined));
189
- }
190
- async bindSnapshotGeneration(key) {
191
- if (!this.snapshotChanged(key)) {
192
- return;
193
- }
194
- const record = this.selectedRecordForKey(key);
195
- const daemon = await inspectManagedSessionDaemon({
196
- cwd: this.call.ctx.cwd,
197
- sessionName: record?.sessionName ?? this.runtime.managed.name,
198
- namespace: record?.namespace ?? this.runtime.managed.namespace,
199
- signal: this.executionSignal,
200
- includeGeneration: true,
201
- headedManagedAutosaveInterval: this.headedAutosaveInterval(key),
202
- });
203
- this.workingPageState.bindSnapshotGeneration(key, daemon.status === "active" ? daemon.generation : undefined);
204
- }
205
- buildFinish(result) {
206
- const changes = browserPageChanges(this.workingPageState, this.priorPages, [...this.keys]);
207
- return {
208
- event: {
209
- version: 1,
210
- phase: this.hostAffecting ? "finish" : "state",
211
- operationId: this.operationId,
212
- toolCallId: this.call.toolCallId,
213
- commandIndex: this.call.commandIndex ?? 0,
214
- isError: result.isError === true,
215
- state: browserStateEffects(isRecord(result.details) ? result.details : {}),
216
- pages: changes.pages,
217
- artifacts: artifactChanges(this.priorManifest, this.runtime.artifacts.manifest),
218
- },
219
- ...(changes.snapshot ? { snapshot: changes.snapshot } : {}),
220
- };
221
- }
222
- persistenceFailure(result, error) {
223
- if (this.call.branch.isCurrent()) {
224
- this.runtime.sessions.pages.applyBrowserRecord(this.begin);
225
- }
226
- return {
227
- ...browserExecutionFailure(new Error("The host operation finished, but its state could not be persisted. Inspect before retrying; changes may already have happened.", { cause: error }), this.executionSignal),
228
- details: {
229
- ...(isRecord(result.details) ? result.details : {}),
230
- browserStatePersistence: "finish-unconfirmed",
231
- resultCategory: "failure",
232
- failureCategory: "upstream-error",
233
- nextActions: undefined,
234
- },
235
- };
236
- }
237
- async persistFinish() {
238
- const result = this.electronHostResult;
239
- if (!result || !this.hostAffecting || !this.call.branch.isCurrent()) {
240
- return undefined;
241
- }
242
- for (const key of this.keys) {
243
- // Bind each ordered host snapshot to its live daemon before persisting one canonical finish.
244
- // oxlint-disable-next-line no-await-in-loop
245
- await this.bindSnapshotGeneration(key);
246
- }
247
- const finish = this.buildFinish(result);
248
- try {
249
- if (!(await appendBrowserRecord(this.call.ctx.sessionManager, () => appendBrowserTransition(this.runtime.pi, finish), finish, this.call.branch)) ||
250
- !this.call.branch.isCurrent()) {
251
- throw new Error("The selected Pi branch changed before host-state confirmation.");
252
- }
253
- }
254
- catch (error) {
255
- return this.persistenceFailure(result, error);
256
- }
257
- this.runtime.sessions.pages.applyBrowserRecord(finish);
258
- this.runtime.artifacts.manifest = applyArtifactChanges(this.runtime.artifacts.manifest, finish.event.artifacts);
259
- if (isRecord(result.details)) {
260
- result.details.browserEventVersion = 1;
261
- result.details.artifactManifest = invocationArtifactManifest(this.runtime.artifacts.manifest, this.priorManifest, result.details);
262
- }
263
- return undefined;
264
- }
265
- complete() {
266
- if (this.electronHostResult && this.executionSignal?.aborted === true) {
267
- const failure = browserExecutionFailure(this.executionSignal.reason, this.executionSignal);
268
- return {
269
- ...this.electronHostResult,
270
- ...failure,
271
- details: {
272
- ...(isRecord(this.electronHostResult.details) ? this.electronHostResult.details : {}),
273
- ...(isRecord(failure.details) ? failure.details : {}),
274
- },
275
- };
276
- }
277
- return this.electronHostResult;
278
- }
279
- async run() {
280
- const admissionFailure = await this.admit();
281
- if (admissionFailure) {
282
- return admissionFailure;
283
- }
284
- await this.dispatch();
285
- this.applyCleanup();
286
- const failure = await this.persistFinish();
287
- if (failure) {
288
- return failure;
289
- }
290
- return this.complete();
291
- }
292
- }
293
- export function runElectronHostInput(runtime, call, executionSignal = call.signal) {
294
- return new ElectronHostTransaction(runtime, call, executionSignal).run();
295
- }
@@ -1,41 +0,0 @@
1
- import { getBrowserRecord } from "../browser-transcript.js";
2
- class PendingOwnedBrowserIntents {
3
- ownerSessionId;
4
- begins = new Map();
5
- constructor(ownerSessionId) {
6
- this.ownerSessionId = ownerSessionId;
7
- }
8
- clearPage(key) {
9
- for (const [id, begin] of this.begins) {
10
- if (begin.pages?.some((page) => page.key === key) === true) {
11
- this.begins.delete(id);
12
- }
13
- }
14
- }
15
- apply(event) {
16
- if (event.phase === "begin" &&
17
- event.state.ownerSessionId === this.ownerSessionId &&
18
- event.state.wrapperManaged === true) {
19
- this.begins.set(event.operationId, event);
20
- }
21
- else if (event.phase === "finish") {
22
- this.begins.delete(event.operationId);
23
- }
24
- for (const page of event.pages ?? []) {
25
- if (page.clear) {
26
- this.clearPage(page.key);
27
- }
28
- }
29
- }
30
- }
31
- /** Interrupted owned intents retain cleanup scope, never proof of a successful launch. */
32
- export function collectPendingOwnedBrowserIntents(branch, ownerSessionId) {
33
- const pending = new PendingOwnedBrowserIntents(ownerSessionId);
34
- for (const entry of branch) {
35
- const event = getBrowserRecord(entry)?.event;
36
- if (event) {
37
- pending.apply(event);
38
- }
39
- }
40
- return [...pending.begins.values()];
41
- }
@@ -1,7 +0,0 @@
1
- export function createBrowserInvocation(input) {
2
- return {
3
- ...input,
4
- nativeToolCallId: input.nativeToolCallId ?? input.toolCallId,
5
- modelVisible: input.modelVisible ?? true,
6
- };
7
- }
@@ -1,102 +0,0 @@
1
- import { cleanupSecureTempArtifacts } from "../temp.js";
2
- import { getActiveElectronRecords } from "./browser-run/session-state.js";
3
- import { cleanupActiveElectronHostLaunches } from "./electron-host/index.js";
4
- import { loadAgentBrowserConfigSync } from "../config.js";
5
- import { closeOwnedManagedSessionsExcept } from "./extension-managed-ownership.js";
6
- import { getCleanupResultsClosedManagedSessionIdentities, getCleanupResultsPreservedUserDataDirs, getOffBranchOwnedElectronLaunchRecords, syncElectronCleanupManagedSessions, } from "./extension-electron-ownership.js";
7
- import { shouldIncludeProjectConfig } from "./extension-prompt.js";
8
- import { notifyRecordingPersistence } from "./extension-recording.js";
9
- import { recoverScriptSessionLeasesWithinQueue } from "./extension-script-leases.js";
10
- import { restoreBranchBackedState } from "./extension-branch-restore.js";
11
- class BrowserLifecycle {
12
- runtime;
13
- constructor(runtime) {
14
- this.runtime = runtime;
15
- }
16
- async restore(ctx, resetRuntimeOwnership) {
17
- const { runtime } = this;
18
- const branch = await restoreBranchBackedState(runtime, ctx, { resetRuntimeOwnership });
19
- if (resetRuntimeOwnership) {
20
- runtime.electron.childProcesses = new Map();
21
- runtime.prompt.registerWebSearch(loadAgentBrowserConfigSync({
22
- cwd: ctx.cwd,
23
- includeProjectConfig: shouldIncludeProjectConfig(ctx),
24
- }));
25
- }
26
- await recoverScriptSessionLeasesWithinQueue(runtime, ctx, branch);
27
- runtime.recordings.flush();
28
- notifyRecordingPersistence(runtime.recordings.dirty, ctx);
29
- }
30
- start(ctx) {
31
- return this.runtime.managedSessionExecutionQueue.run(() => this.runtime.artifacts.queue.run(() => this.restore(ctx, true)));
32
- }
33
- async tree(ctx) {
34
- this.runtime.branch.invalidateRestore();
35
- await this.runtime.code.settle();
36
- await this.runtime.managedSessionExecutionQueue.run(() => this.runtime.artifacts.queue.run(() => this.restore(ctx, false)));
37
- }
38
- async cleanup(ctx, quitting) {
39
- const { runtime } = this;
40
- const active = getActiveElectronRecords(runtime.electron.records);
41
- const preserved = quitting
42
- ? active
43
- .filter((record) => !runtime.electron.ownedRecords.has(record.launchId))
44
- .map((record) => record.userDataDir)
45
- : active.map((record) => record.userDataDir);
46
- const records = quitting
47
- ? runtime.electron.ownedRecords
48
- : getOffBranchOwnedElectronLaunchRecords(runtime.electron.ownedRecords, runtime.electron.records);
49
- const results = await cleanupActiveElectronHostLaunches({
50
- attachedSessionKeys: runtime.sessions.attached,
51
- cwd: ctx?.cwd ?? runtime.managed.cwd,
52
- electronChildProcesses: runtime.electron.childProcesses,
53
- electronLaunchRecords: records,
54
- managedSessionRestoreState: runtime.managed.restore,
55
- ownedManagedSessions: runtime.managed.owned,
56
- sessionPageState: runtime.sessions.pages,
57
- timeoutMs: runtime.implicitSessionCloseTimeoutMs,
58
- });
59
- const preservePaths = [
60
- ...new Set([...preserved, ...getCleanupResultsPreservedUserDataDirs(results)]),
61
- ];
62
- syncElectronCleanupManagedSessions(runtime.managed.owned, results);
63
- for (const identity of getCleanupResultsClosedManagedSessionIdentities(results)) {
64
- runtime.recordings.retire(identity.sessionName, identity.namespace);
65
- }
66
- await closeOwnedManagedSessionsExcept(runtime.managed.owned, runtime.sessions, {
67
- restore: runtime.managed.restore,
68
- timeoutMs: runtime.implicitSessionCloseTimeoutMs,
69
- }, {
70
- keepSessionName: !quitting && runtime.managed.active ? runtime.managed.name : undefined,
71
- keepNamespace: !quitting && runtime.managed.active ? runtime.managed.namespace : undefined,
72
- onClosed: (owner) => runtime.recordings.retire(owner.sessionName, owner.namespace),
73
- });
74
- runtime.recordings.flush();
75
- notifyRecordingPersistence(runtime.recordings.dirty, ctx);
76
- return preservePaths;
77
- }
78
- reset() {
79
- const { runtime } = this;
80
- runtime.managed.reset();
81
- runtime.sessions.reset();
82
- runtime.artifacts.manifest = undefined;
83
- runtime.recordings.resetIfClean();
84
- runtime.electron.reset();
85
- }
86
- async shutdown(ctx, quitting) {
87
- await this.runtime.code.settle();
88
- this.runtime.branch.invalidate();
89
- const preservePaths = await this.runtime.managedSessionExecutionQueue.run(() => this.runtime.artifacts.queue.run(() => this.cleanup(ctx, quitting)));
90
- this.reset();
91
- await cleanupSecureTempArtifacts({ preservePaths });
92
- }
93
- }
94
- function isQuitting(event) {
95
- return event?.reason === "quit";
96
- }
97
- export function registerBrowserLifecycle(runtime) {
98
- const lifecycle = new BrowserLifecycle(runtime);
99
- runtime.pi.on("session_start", (_event, ctx) => lifecycle.start(ctx));
100
- runtime.pi.on("session_tree", (_event, ctx) => lifecycle.tree(ctx));
101
- runtime.pi.on("session_shutdown", (event, ctx) => lifecycle.shutdown(ctx, isQuitting(event)));
102
- }
@@ -1,133 +0,0 @@
1
- import { isRecord } from "../parsing.js";
2
- import { closeManagedSession } from "./browser-run/managed-session-daemon-policy.js";
3
- import { getActiveElectronRecords, getSessionContextKey } from "./browser-run/session-state.js";
4
- function inheritedLaunchSettings(existing, options) {
5
- return {
6
- compatibilityWorkaround: Object.hasOwn(options, "compatibilityWorkaround")
7
- ? options.compatibilityWorkaround
8
- : existing?.compatibilityWorkaround,
9
- headedManagedAutosaveDisabled: options.headedManagedAutosaveDisabled ?? existing?.headedManagedAutosaveDisabled,
10
- headedManagedAutosaveInterval: options.headedManagedAutosaveInterval ?? existing?.headedManagedAutosaveInterval,
11
- socketDir: options.socketDir ?? existing?.socketDir,
12
- };
13
- }
14
- export function trackOwnedManagedSession(sessions, sessionName, cwd, options = {}) {
15
- if (sessionName === undefined || sessionName === "") {
16
- return;
17
- }
18
- const key = getSessionContextKey(sessionName, options.namespace) ?? sessionName;
19
- const existing = sessions.get(key);
20
- const branchOwned = existing && !existing.branchOwned ? false : options.branchOwned === true;
21
- sessions.set(key, {
22
- branchOwned,
23
- ...inheritedLaunchSettings(existing, options),
24
- cwd,
25
- namespace: options.namespace,
26
- sessionName,
27
- });
28
- }
29
- export function untrackOwnedManagedSession(sessions, sessionName, namespace) {
30
- if (sessionName === undefined || sessionName === "") {
31
- return;
32
- }
33
- sessions.delete(sessionName.includes("\u0000")
34
- ? sessionName
35
- : (getSessionContextKey(sessionName, namespace) ?? sessionName));
36
- }
37
- export function untrackOwnedManagedSessionFromBranchClose(sessions, sessionName, activeBranchRank, closeBranchRank) {
38
- if (sessionName === undefined || sessionName === "" || closeBranchRank === undefined) {
39
- return;
40
- }
41
- const owner = sessions.get(sessionName);
42
- if (owner?.branchOwned !== true) {
43
- return;
44
- }
45
- if (activeBranchRank !== undefined && closeBranchRank <= activeBranchRank) {
46
- return;
47
- }
48
- sessions.delete(sessionName);
49
- }
50
- function getOutcomeLaunchSettings(details) {
51
- return {
52
- compatibilityWorkaround: getRecognizedCompatibilityWorkaround(details.compatibilityWorkaround),
53
- headedManagedAutosaveDisabled: details.managedSessionHeadedAutosaveDisabled === true,
54
- headedManagedAutosaveInterval: typeof details.managedSessionHeadedAutosaveInterval === "string"
55
- ? details.managedSessionHeadedAutosaveInterval
56
- : undefined,
57
- namespace: typeof details.namespace === "string" ? details.namespace : undefined,
58
- socketDir: typeof details.managedSessionSocketDir === "string"
59
- ? details.managedSessionSocketDir
60
- : undefined,
61
- };
62
- }
63
- function outcomeCreatesOwner(outcome) {
64
- return (outcome.activeAfter === true &&
65
- (outcome.status === "created" ||
66
- outcome.status === "replaced" ||
67
- outcome.status === "unchanged"));
68
- }
69
- function retireOutcomeOwner(sessions, outcome, details, current) {
70
- if (outcome.succeeded !== true || outcome.status !== "closed") {
71
- return;
72
- }
73
- const attempted = typeof outcome.attemptedSessionName === "string" ? outcome.attemptedSessionName : undefined;
74
- const namespace = typeof details.namespace === "string" ? details.namespace : undefined;
75
- untrackOwnedManagedSession(sessions, attempted ?? current, namespace);
76
- }
77
- export function syncOwnedManagedSessionsFromResult(sessions, result, cwd) {
78
- const details = isRecord(result.details) ? result.details : undefined;
79
- if (!details || !isRecord(details.managedSessionOutcome)) {
80
- return;
81
- }
82
- const outcome = details.managedSessionOutcome;
83
- const current = typeof outcome.currentSessionName === "string" ? outcome.currentSessionName : undefined;
84
- if (outcomeCreatesOwner(outcome)) {
85
- trackOwnedManagedSession(sessions, current, cwd, getOutcomeLaunchSettings(details));
86
- }
87
- retireOutcomeOwner(sessions, outcome, details, current);
88
- }
89
- export async function closeOwnedManagedSessionsExcept(sessions, pages, settings, options) {
90
- const keepKey = getSessionContextKey(options.keepSessionName, options.keepNamespace);
91
- // Snapshot ownership before awaiting: callbacks may add owners during shutdown cleanup.
92
- const owners = Array.from(sessions);
93
- for (const [key, owner] of owners) {
94
- if (key === keepKey) {
95
- continue;
96
- }
97
- // Session close and its durable cleanup callback must finish before the next owner is retired.
98
- // oxlint-disable-next-line no-await-in-loop
99
- const error = await closeManagedSession({
100
- confirmActions: pages.getConfirmActions(key) ?? process.env.AGENT_BROWSER_CONFIRM_ACTIONS,
101
- cwd: owner.cwd,
102
- headedManagedAutosaveInterval: owner.headedManagedAutosaveInterval,
103
- namespace: owner.namespace,
104
- preserveAttachedBrowserSession: pages.hasAttachment(key),
105
- restoreState: settings.restore,
106
- sessionName: owner.sessionName,
107
- socketDir: owner.socketDir,
108
- timeoutMs: settings.timeoutMs,
109
- });
110
- if (error === undefined || error === "") {
111
- sessions.delete(key);
112
- options.onClosed?.(owner);
113
- }
114
- }
115
- }
116
- export function shouldSerializeBrowserCommand(sessions, electronRecords, options) {
117
- const session = options.explicitSessionName;
118
- if (session === undefined || session === "" || session === options.managedSessionName) {
119
- return true;
120
- }
121
- if (sessions.has(getSessionContextKey(session, options.namespace) ?? session)) {
122
- return true;
123
- }
124
- return getActiveElectronRecords(electronRecords).some((record) => record.sessionName === session);
125
- }
126
- export function getRecognizedCompatibilityWorkaround(value) {
127
- const workaround = isRecord(value) ? value : undefined;
128
- return (workaround?.id === "chatgpt-headless-user-agent" ||
129
- workaround?.id === "cloudflare-headless-user-agent") &&
130
- typeof workaround.reason === "string"
131
- ? { id: workaround.id, reason: workaround.reason }
132
- : undefined;
133
- }