pi-agent-browser-native 0.9.4 → 0.9.6

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 (388) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +60 -812
  3. package/dist/extensions/agent-browser/index.js +2381 -1706
  4. package/dist/packaged/lib/browser-session-conversion.js +2810 -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 +694 -0
  8. package/dist/packaged/lib/results/snapshot.js +2671 -0
  9. package/dist/packaged/lib/runtime.js +3027 -0
  10. package/docs/ARCHITECTURE.md +14 -3
  11. package/docs/CODE_QUALITY.md +39 -3
  12. package/docs/COMMAND_REFERENCE.md +22 -22
  13. package/docs/ELECTRON.md +24 -2
  14. package/docs/PERFORMANCE.md +243 -0
  15. package/docs/REFERENCE.md +869 -0
  16. package/docs/RELEASE.md +9 -9
  17. package/docs/REQUIREMENTS.md +1 -1
  18. package/docs/SESSION_STORAGE.md +11 -3
  19. package/docs/SUPPORT_MATRIX.md +16 -11
  20. package/docs/TOOL_CONTRACT.md +17 -13
  21. package/docs/performance/2026-10-12.json +7257 -0
  22. package/docs/platform-smoke.md +3 -3
  23. package/package.json +15 -3
  24. package/scripts/build.mjs +16 -5
  25. package/scripts/config.mjs +24 -20
  26. package/scripts/convert-browser-session.mjs +1 -1
  27. package/scripts/doctor.mjs +2 -2
  28. package/scripts/platform-smoke/lease-evidence.mjs +2 -4
  29. package/scripts/platform-smoke/linux-image/Dockerfile +8 -2
  30. package/scripts/platform-smoke/targets.mjs +1 -5
  31. package/dist/extensions/agent-browser/lib/argv-descriptor.js +0 -123
  32. package/dist/extensions/agent-browser/lib/argv-grammar.js +0 -320
  33. package/dist/extensions/agent-browser/lib/bash-guard.js +0 -193
  34. package/dist/extensions/agent-browser/lib/batch-lifecycle.js +0 -131
  35. package/dist/extensions/agent-browser/lib/browser-execution-claim-codec.js +0 -61
  36. package/dist/extensions/agent-browser/lib/browser-execution-claim-storage.js +0 -232
  37. package/dist/extensions/agent-browser/lib/browser-execution-claims.js +0 -202
  38. package/dist/extensions/agent-browser/lib/browser-execution-identity.js +0 -77
  39. package/dist/extensions/agent-browser/lib/browser-journal-branch.js +0 -98
  40. package/dist/extensions/agent-browser/lib/browser-journal-contracts.js +0 -1
  41. package/dist/extensions/agent-browser/lib/browser-journal-projection.js +0 -221
  42. package/dist/extensions/agent-browser/lib/browser-journal-reader.js +0 -89
  43. package/dist/extensions/agent-browser/lib/browser-journal-replay.js +0 -246
  44. package/dist/extensions/agent-browser/lib/browser-journal.js +0 -148
  45. package/dist/extensions/agent-browser/lib/browser-legacy-pages.js +0 -220
  46. package/dist/extensions/agent-browser/lib/browser-legacy-projection.js +0 -282
  47. package/dist/extensions/agent-browser/lib/browser-legacy-types.js +0 -1
  48. package/dist/extensions/agent-browser/lib/browser-session-conversion-stream.js +0 -217
  49. package/dist/extensions/agent-browser/lib/browser-session-conversion.js +0 -126
  50. package/dist/extensions/agent-browser/lib/browser-transcript-contracts.js +0 -35
  51. package/dist/extensions/agent-browser/lib/browser-transcript-validation.js +0 -166
  52. package/dist/extensions/agent-browser/lib/browser-transcript.js +0 -189
  53. package/dist/extensions/agent-browser/lib/browser-value-parsing.js +0 -15
  54. package/dist/extensions/agent-browser/lib/command-capabilities.js +0 -340
  55. package/dist/extensions/agent-browser/lib/command-policy.js +0 -155
  56. package/dist/extensions/agent-browser/lib/command-taxonomy.js +0 -105
  57. package/dist/extensions/agent-browser/lib/config-policy.js +0 -450
  58. package/dist/extensions/agent-browser/lib/config-providers.js +0 -71
  59. package/dist/extensions/agent-browser/lib/config-validation.js +0 -218
  60. package/dist/extensions/agent-browser/lib/config.js +0 -69
  61. package/dist/extensions/agent-browser/lib/electron/cdp.js +0 -58
  62. package/dist/extensions/agent-browser/lib/electron/cleanup.js +0 -308
  63. package/dist/extensions/agent-browser/lib/electron/discovery-darwin.js +0 -109
  64. package/dist/extensions/agent-browser/lib/electron/discovery-desktop.js +0 -136
  65. package/dist/extensions/agent-browser/lib/electron/discovery-evidence.js +0 -89
  66. package/dist/extensions/agent-browser/lib/electron/discovery-linux.js +0 -93
  67. package/dist/extensions/agent-browser/lib/electron/discovery-packages.js +0 -162
  68. package/dist/extensions/agent-browser/lib/electron/discovery-types.js +0 -2
  69. package/dist/extensions/agent-browser/lib/electron/discovery.js +0 -217
  70. package/dist/extensions/agent-browser/lib/electron/launch-monitor.js +0 -102
  71. package/dist/extensions/agent-browser/lib/electron/launch-process.js +0 -209
  72. package/dist/extensions/agent-browser/lib/electron/launch-types.js +0 -2
  73. package/dist/extensions/agent-browser/lib/electron/launch.js +0 -329
  74. package/dist/extensions/agent-browser/lib/executable-path.js +0 -29
  75. package/dist/extensions/agent-browser/lib/execution-cwd.js +0 -67
  76. package/dist/extensions/agent-browser/lib/fs-utils.js +0 -18
  77. package/dist/extensions/agent-browser/lib/input-modes/electron.js +0 -201
  78. package/dist/extensions/agent-browser/lib/input-modes/job.js +0 -195
  79. package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +0 -104
  80. package/dist/extensions/agent-browser/lib/input-modes/lookup-plan.js +0 -132
  81. package/dist/extensions/agent-browser/lib/input-modes/lookup-redaction.js +0 -57
  82. package/dist/extensions/agent-browser/lib/input-modes/lookup-source-evidence.js +0 -151
  83. package/dist/extensions/agent-browser/lib/input-modes/lookup-workspace.js +0 -142
  84. package/dist/extensions/agent-browser/lib/input-modes/lookups.js +0 -83
  85. package/dist/extensions/agent-browser/lib/input-modes/params.js +0 -195
  86. package/dist/extensions/agent-browser/lib/input-modes/qa-analysis.js +0 -268
  87. package/dist/extensions/agent-browser/lib/input-modes/qa-presentation.js +0 -117
  88. package/dist/extensions/agent-browser/lib/input-modes/script-child.js +0 -396
  89. package/dist/extensions/agent-browser/lib/input-modes/script-protocol.js +0 -86
  90. package/dist/extensions/agent-browser/lib/input-modes/script-types.js +0 -1
  91. package/dist/extensions/agent-browser/lib/input-modes/script-validation.js +0 -60
  92. package/dist/extensions/agent-browser/lib/input-modes/script.js +0 -108
  93. package/dist/extensions/agent-browser/lib/input-modes/semantic-action.js +0 -243
  94. package/dist/extensions/agent-browser/lib/input-modes/shared.js +0 -48
  95. package/dist/extensions/agent-browser/lib/input-modes/types.js +0 -65
  96. package/dist/extensions/agent-browser/lib/json-schema.js +0 -65
  97. package/dist/extensions/agent-browser/lib/launch-scoped-flags.js +0 -212
  98. package/dist/extensions/agent-browser/lib/managed-session-policy-lock.js +0 -165
  99. package/dist/extensions/agent-browser/lib/managed-session-posix-storage.js +0 -58
  100. package/dist/extensions/agent-browser/lib/managed-session-project-identity.js +0 -244
  101. package/dist/extensions/agent-browser/lib/managed-session-restore-context.js +0 -84
  102. package/dist/extensions/agent-browser/lib/managed-session-restore-policy.js +0 -119
  103. package/dist/extensions/agent-browser/lib/managed-session-restore-state.js +0 -83
  104. package/dist/extensions/agent-browser/lib/managed-session-restore.js +0 -212
  105. package/dist/extensions/agent-browser/lib/managed-session-snapshot-records.js +0 -277
  106. package/dist/extensions/agent-browser/lib/managed-session-snapshots.js +0 -181
  107. package/dist/extensions/agent-browser/lib/managed-session-storage.js +0 -126
  108. package/dist/extensions/agent-browser/lib/native-confirmation.js +0 -140
  109. package/dist/extensions/agent-browser/lib/native-output.js +0 -81
  110. package/dist/extensions/agent-browser/lib/orchestration/batch-stdin.js +0 -182
  111. package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-merge.js +0 -30
  112. package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-paths.js +0 -188
  113. package/dist/extensions/agent-browser/lib/orchestration/browser-run/browser-observation-result.js +0 -82
  114. package/dist/extensions/agent-browser/lib/orchestration/browser-run/click-dispatch.js +0 -406
  115. package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostic-values.js +0 -31
  116. package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.js +0 -240
  117. package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-observation.js +0 -202
  118. package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-text-diagnostics.js +0 -109
  119. package/dist/extensions/agent-browser/lib/orchestration/browser-run/fill-diagnostics.js +0 -119
  120. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-action-recovery.js +0 -147
  121. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-actions.js +0 -144
  122. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-content.js +0 -123
  123. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-contracts.js +0 -1
  124. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-details.js +0 -156
  125. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-electron.js +0 -179
  126. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-evidence.js +0 -39
  127. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-missing-binary.js +0 -89
  128. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-recovery.js +0 -97
  129. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-redaction.js +0 -106
  130. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-timeout.js +0 -110
  131. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result.js +0 -53
  132. package/dist/extensions/agent-browser/lib/orchestration/browser-run/index.js +0 -224
  133. package/dist/extensions/agent-browser/lib/orchestration/browser-run/interaction-diagnostics.js +0 -290
  134. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-close.js +0 -167
  135. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-inspection.js +0 -108
  136. package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-policy.js +0 -174
  137. package/dist/extensions/agent-browser/lib/orchestration/browser-run/native-helper-observation.js +0 -65
  138. package/dist/extensions/agent-browser/lib/orchestration/browser-run/observation-types.js +0 -1
  139. package/dist/extensions/agent-browser/lib/orchestration/browser-run/overlay-diagnostics.js +0 -120
  140. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/network-page-filter.js +0 -192
  141. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/scroll-shims.js +0 -225
  142. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter-data.js +0 -150
  143. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +0 -165
  144. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-rendered-text.js +0 -147
  145. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/wait-timeouts.js +0 -145
  146. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-artifacts.js +0 -159
  147. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-command.js +0 -131
  148. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-contracts.js +0 -1
  149. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-daemon.js +0 -93
  150. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-failure.js +0 -42
  151. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-guards.js +0 -242
  152. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-input.js +0 -75
  153. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-observations.js +0 -92
  154. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-selection.js +0 -254
  155. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-state.js +0 -121
  156. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-refs.js +0 -130
  157. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-resources.js +0 -114
  158. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-semantic.js +0 -121
  159. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-session-plan.js +0 -222
  160. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-timeouts.js +0 -68
  161. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare.js +0 -202
  162. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-analysis.js +0 -191
  163. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-confirmation.js +0 -152
  164. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-diagnostics.js +0 -182
  165. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-electron.js +0 -150
  166. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-contracts.js +0 -1
  167. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase-contracts.js +0 -1
  168. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase.js +0 -115
  169. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle.js +0 -256
  170. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed-contracts.js +0 -1
  171. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed.js +0 -256
  172. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase-contracts.js +0 -1
  173. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase.js +0 -93
  174. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native.js +0 -113
  175. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation-contracts.js +0 -1
  176. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation.js +0 -316
  177. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-ownership.js +0 -28
  178. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase-contracts.js +0 -1
  179. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase.js +0 -142
  180. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation-contracts.js +0 -1
  181. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation.js +0 -333
  182. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase-contracts.js +0 -1
  183. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase.js +0 -71
  184. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication.js +0 -201
  185. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-receipts.js +0 -183
  186. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-refs.js +0 -200
  187. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-tabs.js +0 -142
  188. package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output.js +0 -25
  189. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prompt-guards.js +0 -50
  190. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-receipt-reconciliation.js +0 -198
  191. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-contracts.js +0 -1
  192. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-presentation.js +0 -154
  193. package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery.js +0 -80
  194. package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-capture.js +0 -14
  195. package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-observation.js +0 -206
  196. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-commands.js +0 -130
  197. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-electron.js +0 -210
  198. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-observations.js +0 -61
  199. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-outcomes.js +0 -187
  200. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-refs.js +0 -171
  201. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-tabs.js +0 -228
  202. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state.js +0 -117
  203. package/dist/extensions/agent-browser/lib/orchestration/browser-run/text-visibility-diagnostics.js +0 -182
  204. package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-diagnostics.js +0 -256
  205. package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-progress.js +0 -108
  206. package/dist/extensions/agent-browser/lib/orchestration/browser-run/types.js +0 -1
  207. package/dist/extensions/agent-browser/lib/orchestration/code-artifact-observation.js +0 -39
  208. package/dist/extensions/agent-browser/lib/orchestration/code-image-observation.js +0 -119
  209. package/dist/extensions/agent-browser/lib/orchestration/electron-host/branch.js +0 -92
  210. package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup-result.js +0 -58
  211. package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup.js +0 -78
  212. package/dist/extensions/agent-browser/lib/orchestration/electron-host/contracts.js +0 -1
  213. package/dist/extensions/agent-browser/lib/orchestration/electron-host/discovery.js +0 -106
  214. package/dist/extensions/agent-browser/lib/orchestration/electron-host/index.js +0 -60
  215. package/dist/extensions/agent-browser/lib/orchestration/electron-host/policy.js +0 -86
  216. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-collection.js +0 -69
  217. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +0 -167
  218. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +0 -164
  219. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe.js +0 -161
  220. package/dist/extensions/agent-browser/lib/orchestration/electron-host/status.js +0 -165
  221. package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +0 -98
  222. package/dist/extensions/agent-browser/lib/orchestration/extension-artifact-preflight.js +0 -211
  223. package/dist/extensions/agent-browser/lib/orchestration/extension-artifacts.js +0 -23
  224. package/dist/extensions/agent-browser/lib/orchestration/extension-attachment-replay.js +0 -99
  225. package/dist/extensions/agent-browser/lib/orchestration/extension-branch-restore.js +0 -275
  226. package/dist/extensions/agent-browser/lib/orchestration/extension-code.js +0 -280
  227. package/dist/extensions/agent-browser/lib/orchestration/extension-command-admission.js +0 -303
  228. package/dist/extensions/agent-browser/lib/orchestration/extension-command-output.js +0 -36
  229. package/dist/extensions/agent-browser/lib/orchestration/extension-command-result.js +0 -335
  230. package/dist/extensions/agent-browser/lib/orchestration/extension-command-run.js +0 -227
  231. package/dist/extensions/agent-browser/lib/orchestration/extension-command-state.js +0 -1
  232. package/dist/extensions/agent-browser/lib/orchestration/extension-electron-ownership.js +0 -204
  233. package/dist/extensions/agent-browser/lib/orchestration/extension-execution-locks.js +0 -139
  234. package/dist/extensions/agent-browser/lib/orchestration/extension-execution-queue.js +0 -24
  235. package/dist/extensions/agent-browser/lib/orchestration/extension-host-coordination.js +0 -98
  236. package/dist/extensions/agent-browser/lib/orchestration/extension-host-run.js +0 -295
  237. package/dist/extensions/agent-browser/lib/orchestration/extension-intent-replay.js +0 -41
  238. package/dist/extensions/agent-browser/lib/orchestration/extension-invocation.js +0 -7
  239. package/dist/extensions/agent-browser/lib/orchestration/extension-lifecycle.js +0 -102
  240. package/dist/extensions/agent-browser/lib/orchestration/extension-managed-ownership.js +0 -133
  241. package/dist/extensions/agent-browser/lib/orchestration/extension-observation.js +0 -120
  242. package/dist/extensions/agent-browser/lib/orchestration/extension-prompt.js +0 -180
  243. package/dist/extensions/agent-browser/lib/orchestration/extension-recording.js +0 -290
  244. package/dist/extensions/agent-browser/lib/orchestration/extension-resource-contracts.js +0 -1
  245. package/dist/extensions/agent-browser/lib/orchestration/extension-resource-replay.js +0 -269
  246. package/dist/extensions/agent-browser/lib/orchestration/extension-result-state.js +0 -113
  247. package/dist/extensions/agent-browser/lib/orchestration/extension-runtime.js +0 -146
  248. package/dist/extensions/agent-browser/lib/orchestration/extension-script-leases.js +0 -58
  249. package/dist/extensions/agent-browser/lib/orchestration/extension-tool-boundary.js +0 -62
  250. package/dist/extensions/agent-browser/lib/orchestration/extension-version-check.js +0 -54
  251. package/dist/extensions/agent-browser/lib/orchestration/input-plan-types.js +0 -1
  252. package/dist/extensions/agent-browser/lib/orchestration/input-plan.js +0 -313
  253. package/dist/extensions/agent-browser/lib/orchestration/input-redaction.js +0 -62
  254. package/dist/extensions/agent-browser/lib/orchestration/native-config.js +0 -144
  255. package/dist/extensions/agent-browser/lib/orchestration/native-root-launch.js +0 -77
  256. package/dist/extensions/agent-browser/lib/orchestration/native-session-defaults.js +0 -231
  257. package/dist/extensions/agent-browser/lib/orchestration/operation-paths.js +0 -142
  258. package/dist/extensions/agent-browser/lib/orchestration/output-file.js +0 -276
  259. package/dist/extensions/agent-browser/lib/orchestration/script-mode.js +0 -220
  260. package/dist/extensions/agent-browser/lib/owned-managed-session-context.js +0 -55
  261. package/dist/extensions/agent-browser/lib/page-target-batch.js +0 -118
  262. package/dist/extensions/agent-browser/lib/page-target-guards.js +0 -50
  263. package/dist/extensions/agent-browser/lib/page-target-navigation.js +0 -104
  264. package/dist/extensions/agent-browser/lib/page-target-validation.js +0 -90
  265. package/dist/extensions/agent-browser/lib/parsing.js +0 -30
  266. package/dist/extensions/agent-browser/lib/pi-tool-rendering.js +0 -343
  267. package/dist/extensions/agent-browser/lib/playbook.js +0 -146
  268. package/dist/extensions/agent-browser/lib/process-child.js +0 -284
  269. package/dist/extensions/agent-browser/lib/process-environment.js +0 -48
  270. package/dist/extensions/agent-browser/lib/process-errors.js +0 -23
  271. package/dist/extensions/agent-browser/lib/process-identity.js +0 -127
  272. package/dist/extensions/agent-browser/lib/process-socket-storage.js +0 -256
  273. package/dist/extensions/agent-browser/lib/process-stdout.js +0 -74
  274. package/dist/extensions/agent-browser/lib/process.js +0 -216
  275. package/dist/extensions/agent-browser/lib/prompt-artifacts.js +0 -287
  276. package/dist/extensions/agent-browser/lib/prompt-policy.js +0 -54
  277. package/dist/extensions/agent-browser/lib/read-command.js +0 -41
  278. package/dist/extensions/agent-browser/lib/read-confirmation.js +0 -162
  279. package/dist/extensions/agent-browser/lib/recording-reservations.js +0 -208
  280. package/dist/extensions/agent-browser/lib/redaction-fields.js +0 -75
  281. package/dist/extensions/agent-browser/lib/redaction-json.js +0 -149
  282. package/dist/extensions/agent-browser/lib/redaction-url.js +0 -88
  283. package/dist/extensions/agent-browser/lib/results/action-contracts.js +0 -1
  284. package/dist/extensions/agent-browser/lib/results/action-recommendations.js +0 -38
  285. package/dist/extensions/agent-browser/lib/results/artifact-contracts.js +0 -1
  286. package/dist/extensions/agent-browser/lib/results/artifact-manifest-validation.js +0 -133
  287. package/dist/extensions/agent-browser/lib/results/artifact-manifest.js +0 -173
  288. package/dist/extensions/agent-browser/lib/results/artifact-recommendations.js +0 -73
  289. package/dist/extensions/agent-browser/lib/results/categories.js +0 -152
  290. package/dist/extensions/agent-browser/lib/results/confirmation.js +0 -75
  291. package/dist/extensions/agent-browser/lib/results/contracts.js +0 -1
  292. package/dist/extensions/agent-browser/lib/results/editable-ref-evidence.js +0 -99
  293. package/dist/extensions/agent-browser/lib/results/electron-recommendations.js +0 -83
  294. package/dist/extensions/agent-browser/lib/results/envelope-decoding.js +0 -48
  295. package/dist/extensions/agent-browser/lib/results/envelope.js +0 -198
  296. package/dist/extensions/agent-browser/lib/results/evidence-contracts.js +0 -1
  297. package/dist/extensions/agent-browser/lib/results/failure-recommendations.js +0 -180
  298. package/dist/extensions/agent-browser/lib/results/network-routes.js +0 -133
  299. package/dist/extensions/agent-browser/lib/results/network.js +0 -89
  300. package/dist/extensions/agent-browser/lib/results/next-actions.js +0 -111
  301. package/dist/extensions/agent-browser/lib/results/presentation/artifact-files.js +0 -320
  302. package/dist/extensions/agent-browser/lib/results/presentation/artifact-format.js +0 -138
  303. package/dist/extensions/agent-browser/lib/results/presentation/artifact-images.js +0 -113
  304. package/dist/extensions/agent-browser/lib/results/presentation/artifact-verification.js +0 -145
  305. package/dist/extensions/agent-browser/lib/results/presentation/artifacts.js +0 -165
  306. package/dist/extensions/agent-browser/lib/results/presentation/batch-contracts.js +0 -1
  307. package/dist/extensions/agent-browser/lib/results/presentation/batch-recording.js +0 -118
  308. package/dist/extensions/agent-browser/lib/results/presentation/batch-redaction.js +0 -68
  309. package/dist/extensions/agent-browser/lib/results/presentation/batch-rendering.js +0 -135
  310. package/dist/extensions/agent-browser/lib/results/presentation/batch-step.js +0 -227
  311. package/dist/extensions/agent-browser/lib/results/presentation/batch-summary.js +0 -91
  312. package/dist/extensions/agent-browser/lib/results/presentation/batch.js +0 -123
  313. package/dist/extensions/agent-browser/lib/results/presentation/browser-profile-recovery.js +0 -54
  314. package/dist/extensions/agent-browser/lib/results/presentation/command-presenters.js +0 -216
  315. package/dist/extensions/agent-browser/lib/results/presentation/common.js +0 -81
  316. package/dist/extensions/agent-browser/lib/results/presentation/content.js +0 -119
  317. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-a11y.js +0 -67
  318. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-health.js +0 -79
  319. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-identity.js +0 -199
  320. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-logs.js +0 -75
  321. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network-actions.js +0 -216
  322. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network.js +0 -124
  323. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-redaction.js +0 -64
  324. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-storage.js +0 -209
  325. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-stream.js +0 -69
  326. package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-summary.js +0 -222
  327. package/dist/extensions/agent-browser/lib/results/presentation/diagnostics.js +0 -124
  328. package/dist/extensions/agent-browser/lib/results/presentation/early-result.js +0 -70
  329. package/dist/extensions/agent-browser/lib/results/presentation/errors.js +0 -285
  330. package/dist/extensions/agent-browser/lib/results/presentation/input-contracts.js +0 -1
  331. package/dist/extensions/agent-browser/lib/results/presentation/large-output.js +0 -117
  332. package/dist/extensions/agent-browser/lib/results/presentation/navigation.js +0 -231
  333. package/dist/extensions/agent-browser/lib/results/presentation/notices.js +0 -75
  334. package/dist/extensions/agent-browser/lib/results/presentation/observation-contracts.js +0 -1
  335. package/dist/extensions/agent-browser/lib/results/presentation/observation-rendering.js +0 -127
  336. package/dist/extensions/agent-browser/lib/results/presentation/outcomes.js +0 -120
  337. package/dist/extensions/agent-browser/lib/results/presentation/output-completion.js +0 -77
  338. package/dist/extensions/agent-browser/lib/results/presentation/output-spill.js +0 -51
  339. package/dist/extensions/agent-browser/lib/results/presentation/registry.js +0 -145
  340. package/dist/extensions/agent-browser/lib/results/presentation/semantic-action.js +0 -104
  341. package/dist/extensions/agent-browser/lib/results/presentation/skills.js +0 -178
  342. package/dist/extensions/agent-browser/lib/results/presentation/source.js +0 -109
  343. package/dist/extensions/agent-browser/lib/results/presentation.js +0 -19
  344. package/dist/extensions/agent-browser/lib/results/recommendation-contracts.js +0 -1
  345. package/dist/extensions/agent-browser/lib/results/recording.js +0 -88
  346. package/dist/extensions/agent-browser/lib/results/recovery-actions.js +0 -118
  347. package/dist/extensions/agent-browser/lib/results/recovery-next-actions.js +0 -60
  348. package/dist/extensions/agent-browser/lib/results/selector-recovery-target.js +0 -83
  349. package/dist/extensions/agent-browser/lib/results/selector-recovery.js +0 -261
  350. package/dist/extensions/agent-browser/lib/results/snapshot-compact.js +0 -266
  351. package/dist/extensions/agent-browser/lib/results/snapshot-content.js +0 -32
  352. package/dist/extensions/agent-browser/lib/results/snapshot-high-value-controls.js +0 -240
  353. package/dist/extensions/agent-browser/lib/results/snapshot-refs.js +0 -103
  354. package/dist/extensions/agent-browser/lib/results/snapshot-segments.js +0 -383
  355. package/dist/extensions/agent-browser/lib/results/snapshot-spill.js +0 -53
  356. package/dist/extensions/agent-browser/lib/results/snapshot.js +0 -44
  357. package/dist/extensions/agent-browser/lib/results/text.js +0 -44
  358. package/dist/extensions/agent-browser/lib/runtime-args-validation.js +0 -133
  359. package/dist/extensions/agent-browser/lib/runtime-compatibility.js +0 -81
  360. package/dist/extensions/agent-browser/lib/runtime-contracts.js +0 -1
  361. package/dist/extensions/agent-browser/lib/runtime-redaction.js +0 -118
  362. package/dist/extensions/agent-browser/lib/runtime-replay-events.js +0 -144
  363. package/dist/extensions/agent-browser/lib/runtime-session-identity.js +0 -76
  364. package/dist/extensions/agent-browser/lib/runtime-session-plan.js +0 -114
  365. package/dist/extensions/agent-browser/lib/runtime-session-replay.js +0 -123
  366. package/dist/extensions/agent-browser/lib/runtime-tab-correction.js +0 -65
  367. package/dist/extensions/agent-browser/lib/runtime-timeouts.js +0 -28
  368. package/dist/extensions/agent-browser/lib/runtime.js +0 -163
  369. package/dist/extensions/agent-browser/lib/session-identity.js +0 -51
  370. package/dist/extensions/agent-browser/lib/session-page-observation.js +0 -357
  371. package/dist/extensions/agent-browser/lib/session-page-state.js +0 -353
  372. package/dist/extensions/agent-browser/lib/session-page-types.js +0 -1
  373. package/dist/extensions/agent-browser/lib/string-enum-schema.js +0 -8
  374. package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +0 -78
  375. package/dist/extensions/agent-browser/lib/temp-mutation-queue.js +0 -7
  376. package/dist/extensions/agent-browser/lib/temp-root-ownership.js +0 -234
  377. package/dist/extensions/agent-browser/lib/temp-root.js +0 -207
  378. package/dist/extensions/agent-browser/lib/temp.js +0 -91
  379. package/dist/extensions/agent-browser/lib/tool-surface.js +0 -239
  380. package/dist/extensions/agent-browser/lib/upstream-version.js +0 -15
  381. package/dist/extensions/agent-browser/lib/web-search-providers.js +0 -229
  382. package/dist/extensions/agent-browser/lib/web-search-request.js +0 -108
  383. package/dist/extensions/agent-browser/lib/web-search-results.js +0 -281
  384. package/dist/extensions/agent-browser/lib/web-search-schema.js +0 -82
  385. package/dist/extensions/agent-browser/lib/web-search.js +0 -149
  386. package/dist/extensions/agent-browser/lib/webmcp-observation.js +0 -35
  387. package/dist/extensions/agent-browser/lib/windows-stock-launcher.js +0 -96
  388. package/dist/scripts/agent-browser-target.mjs +0 -23
@@ -1,275 +0,0 @@
1
- import { format } from "node:util";
2
- import { SessionPageState } from "../session-page-state.js";
3
- import { getBrowserRecord } from "../browser-transcript.js";
4
- import { readBrowserEntries } from "../browser-journal.js";
5
- import { createFreshSessionName, isRestorableManagedSessionName, restoreManagedSessionStateFromBranch, } from "../runtime.js";
6
- import { getAgentBrowserSessionIdentityKey } from "../argv-grammar.js";
7
- import { getActiveElectronRecords, getSessionContextKey } from "./browser-run/session-state.js";
8
- import { restoreElectronLaunchRecordsFromBranch, } from "./electron-host/index.js";
9
- import { restoreArtifactManifestFromBranch } from "./extension-result-state.js";
10
- import { trackOwnedManagedSession, untrackOwnedManagedSessionFromBranchClose, } from "./extension-managed-ownership.js";
11
- import { collectBranchManagedResourceEvents } from "./extension-resource-replay.js";
12
- import { collectPendingOwnedBrowserIntents } from "./extension-intent-replay.js";
13
- import { restoreAttachedSessionKeysFromBranch } from "./extension-attachment-replay.js";
14
- async function readBranchForRestore(runtime, ctx, resetRuntimeOwnership) {
15
- runtime.branch.beginRestore(ctx.sessionManager.getSessionId());
16
- runtime.prompt.restore(ctx);
17
- const previous = {
18
- active: runtime.managed.active,
19
- sessionName: runtime.managed.name,
20
- freshOrdinal: runtime.managed.freshOrdinal,
21
- attachedKeys: runtime.sessions.attached,
22
- pageState: runtime.sessions.pages,
23
- };
24
- runtime.managed.initializeBase(ctx.sessionManager.getSessionId(), ctx.cwd, runtime.ephemeralSessionSeed);
25
- try {
26
- const branch = await readBrowserEntries(ctx.sessionManager);
27
- runtime.branch.setReplayError(undefined);
28
- return { previous, branch, resetRuntimeOwnership };
29
- }
30
- catch (error) {
31
- runtime.branch.setReplayError(error instanceof Error ? error.message : format("%s", error));
32
- runtime.sessions.pages.reset();
33
- throw error;
34
- }
35
- }
36
- function headedLaunchTracking(launch) {
37
- return {
38
- headedManagedAutosaveDisabled: launch?.headedManagedAutosaveDisabled ?? false,
39
- headedManagedAutosaveInterval: launch?.headedManagedAutosaveInterval,
40
- socketDir: launch?.socketDir,
41
- };
42
- }
43
- class BrowserBranchRestoration {
44
- runtime;
45
- ctx;
46
- input;
47
- branchResourceEvents;
48
- restoredState;
49
- constructor(runtime, ctx, input) {
50
- this.runtime = runtime;
51
- this.ctx = ctx;
52
- this.input = input;
53
- this.branchResourceEvents = collectBranchManagedResourceEvents(input.branch);
54
- this.restoredState = restoreManagedSessionStateFromBranch([...input.branch], runtime.managed.baseName);
55
- }
56
- currentLaunch() {
57
- return this.branchResourceEvents.managedSessionLaunchState.get(getSessionContextKey(this.runtime.managed.name, this.runtime.managed.namespace) ??
58
- this.runtime.managed.name);
59
- }
60
- restoreManagedState() {
61
- this.runtime.managed.restore.replace([...this.restoredState.managedSessionRestoreDisabledIdentities], {
62
- preserveDaemonRestoreKeys: !this.input.resetRuntimeOwnership,
63
- });
64
- this.runtime.managed.active = this.restoredState.active;
65
- }
66
- alreadyReservedPostClose(ordinal, shouldReserve) {
67
- return (shouldReserve &&
68
- !this.input.resetRuntimeOwnership &&
69
- !this.input.previous.active &&
70
- this.input.previous.freshOrdinal > this.restoredState.freshSessionOrdinal &&
71
- this.input.previous.freshOrdinal === ordinal &&
72
- this.input.previous.sessionName ===
73
- createFreshSessionName(this.runtime.managed.baseName, this.runtime.ephemeralSessionSeed, ordinal));
74
- }
75
- reserveSession() {
76
- const restoredFreshSessionOrdinal = this.input.resetRuntimeOwnership
77
- ? this.restoredState.freshSessionOrdinal
78
- : Math.max(this.input.previous.freshOrdinal, this.restoredState.freshSessionOrdinal);
79
- const shouldReservePostCloseSession = !this.restoredState.active &&
80
- this.restoredState.closedSessionName === this.restoredState.sessionName;
81
- const alreadyReservedPostCloseSession = this.alreadyReservedPostClose(restoredFreshSessionOrdinal, shouldReservePostCloseSession);
82
- const nextFreshSessionOrdinal = shouldReservePostCloseSession && !alreadyReservedPostCloseSession
83
- ? restoredFreshSessionOrdinal + 1
84
- : restoredFreshSessionOrdinal;
85
- if (!shouldReservePostCloseSession) {
86
- this.runtime.managed.name = this.restoredState.sessionName;
87
- }
88
- else if (alreadyReservedPostCloseSession) {
89
- this.runtime.managed.name = this.input.previous.sessionName;
90
- }
91
- else {
92
- this.runtime.managed.name = createFreshSessionName(this.runtime.managed.baseName, this.runtime.ephemeralSessionSeed, nextFreshSessionOrdinal);
93
- }
94
- this.runtime.managed.freshOrdinal = nextFreshSessionOrdinal;
95
- this.runtime.managed.namespace = shouldReservePostCloseSession
96
- ? undefined
97
- : this.restoredState.namespace;
98
- }
99
- restoreLaunchState() {
100
- const currentLaunch = this.currentLaunch();
101
- this.runtime.managed.compatibilityWorkaround = this.runtime.managed.active
102
- ? currentLaunch?.compatibilityWorkaround
103
- : undefined;
104
- this.runtime.managed.headedAutosaveDisabled =
105
- this.runtime.managed.active && currentLaunch?.headedManagedAutosaveDisabled === true;
106
- this.runtime.managed.headedAutosaveInterval = this.runtime.managed.active
107
- ? currentLaunch?.headedManagedAutosaveInterval
108
- : undefined;
109
- this.runtime.managed.cwd = currentLaunch?.cwd ?? this.ctx.cwd;
110
- }
111
- restoreRecordingState() {
112
- this.runtime.sessions.pages = SessionPageState.fromBranch([...this.input.branch]);
113
- this.runtime.sessions.traces = new Map();
114
- this.runtime.artifacts.manifest = restoreArtifactManifestFromBranch(this.input.branch);
115
- this.runtime.recordings.restore(this.input.branch);
116
- }
117
- restoreAttachments() {
118
- this.runtime.sessions.attached = restoreAttachedSessionKeysFromBranch(this.input.branch);
119
- this.runtime.sessions.routes = new Map();
120
- this.runtime.electron.records = restoreElectronLaunchRecordsFromBranch([...this.input.branch]);
121
- for (const record of getActiveElectronRecords(this.runtime.electron.records)) {
122
- if (record.sessionName !== undefined && record.sessionName !== "") {
123
- this.runtime.sessions.attached.add(getSessionContextKey(record.sessionName, record.namespace) ?? record.sessionName);
124
- }
125
- }
126
- }
127
- restoreOwnershipRanks() {
128
- if (this.input.resetRuntimeOwnership) {
129
- this.runtime.managed.owned.clear();
130
- this.runtime.electron.resetOwnership();
131
- }
132
- else {
133
- for (const [sessionName, closeRank] of this.branchResourceEvents.managedSessionCloseRanks) {
134
- untrackOwnedManagedSessionFromBranchClose(this.runtime.managed.owned, sessionName, this.branchResourceEvents.managedSessionActiveRanks.get(sessionName), closeRank);
135
- }
136
- this.runtime.electron.removeInactive(this.runtime.electron.records, this.branchResourceEvents.electronLaunchActiveRanks, this.branchResourceEvents.electronLaunchCleanupRanks);
137
- }
138
- }
139
- restoreManagedOwners() {
140
- for (const [sessionKey, identity] of this.branchResourceEvents.managedSessionActiveIdentities) {
141
- this.restoreBranchManagedOwner(sessionKey, identity);
142
- }
143
- if (this.restoredState.active) {
144
- trackOwnedManagedSession(this.runtime.managed.owned, this.restoredState.sessionName, this.runtime.managed.cwd, {
145
- branchOwned: true,
146
- compatibilityWorkaround: this.runtime.managed.compatibilityWorkaround,
147
- headedManagedAutosaveDisabled: this.runtime.managed.headedAutosaveDisabled,
148
- headedManagedAutosaveInterval: this.runtime.managed.headedAutosaveInterval,
149
- namespace: this.restoredState.namespace,
150
- socketDir: this.currentLaunch()?.socketDir,
151
- });
152
- }
153
- }
154
- sessionActiveOnBranch(key) {
155
- const active = this.branchResourceEvents.managedSessionActiveRanks.get(key);
156
- const closed = this.branchResourceEvents.managedSessionCloseRanks.get(key);
157
- return active !== undefined && (closed === undefined || closed < active);
158
- }
159
- restoreBranchManagedOwner(key, identity) {
160
- if (!this.sessionActiveOnBranch(key) ||
161
- !isRestorableManagedSessionName(identity.sessionName, this.runtime.managed.baseName)) {
162
- return;
163
- }
164
- const launch = this.branchResourceEvents.managedSessionLaunchState.get(key);
165
- trackOwnedManagedSession(this.runtime.managed.owned, identity.sessionName, launch?.cwd ?? this.ctx.cwd, {
166
- branchOwned: true,
167
- compatibilityWorkaround: launch?.compatibilityWorkaround,
168
- headedManagedAutosaveDisabled: launch?.headedManagedAutosaveDisabled ?? false,
169
- headedManagedAutosaveInterval: launch?.headedManagedAutosaveInterval,
170
- namespace: identity.namespace,
171
- socketDir: launch?.socketDir,
172
- });
173
- }
174
- restoreInterruptedIntents() {
175
- for (const begin of collectPendingOwnedBrowserIntents(this.input.branch, this.runtime.branch.ownerSessionId)) {
176
- if (typeof begin.state.sessionName !== "string") {
177
- continue;
178
- }
179
- // The persisted wrapper-selected intent proves cleanup scope, not launch success.
180
- trackOwnedManagedSession(this.runtime.managed.owned, begin.state.sessionName, typeof begin.state.managedSessionCwd === "string"
181
- ? begin.state.managedSessionCwd
182
- : this.ctx.cwd, {
183
- branchOwned: true,
184
- namespace: typeof begin.state.namespace === "string" ? begin.state.namespace : undefined,
185
- socketDir: typeof begin.state.managedSessionSocketDir === "string"
186
- ? begin.state.managedSessionSocketDir
187
- : undefined,
188
- });
189
- }
190
- }
191
- restoreElectronOwners() {
192
- for (const record of getActiveElectronRecords(this.runtime.electron.records)) {
193
- this.restoreElectronOwner(record);
194
- }
195
- this.runtime.electron.mergeActive(new Map([...this.runtime.electron.records].filter(([, record]) => record.ownerSessionId === this.runtime.branch.ownerSessionId)), { markBranchOwned: true });
196
- }
197
- restoreElectronOwner(record) {
198
- const session = record.sessionName;
199
- if (session === undefined ||
200
- session === "" ||
201
- !isRestorableManagedSessionName(session, this.runtime.managed.baseName)) {
202
- return;
203
- }
204
- const key = getSessionContextKey(session) ?? session;
205
- if (!this.sessionActiveOnBranch(key)) {
206
- return;
207
- }
208
- const launch = this.branchResourceEvents.managedSessionLaunchState.get(key);
209
- trackOwnedManagedSession(this.runtime.managed.owned, session, launch?.cwd ?? this.ctx.cwd, {
210
- branchOwned: true,
211
- ...headedLaunchTracking(launch),
212
- });
213
- }
214
- restoreDaemonReceipts() {
215
- for (const entry of this.input.branch) {
216
- const event = getBrowserRecord(entry)?.event;
217
- if (event && event.phase !== "begin") {
218
- this.restoreDaemonReceipt(event.state);
219
- }
220
- }
221
- }
222
- restoreDaemonReceipt(state) {
223
- if (state.ownerSessionId !== this.runtime.branch.ownerSessionId ||
224
- typeof state.sessionName !== "string") {
225
- return;
226
- }
227
- const namespace = typeof state.namespace === "string" ? state.namespace : undefined;
228
- const key = getAgentBrowserSessionIdentityKey(state.sessionName, namespace);
229
- if (this.runtime.managed.owned.has(key) &&
230
- !this.runtime.managed.restore.hasDaemonRestoreKey(state.sessionName, namespace)) {
231
- this.runtime.managed.restore.restoreDaemonReceipt(state.sessionName, namespace, state.managedSessionDaemon);
232
- }
233
- }
234
- preserveLiveOwners() {
235
- if (!this.input.resetRuntimeOwnership) {
236
- // Off-branch live owners still need their established setting for cleanup.
237
- for (const key of this.runtime.managed.owned.keys()) {
238
- if (!this.branchResourceEvents.managedSessionActiveIdentities.has(key)) {
239
- this.runtime.sessions.pages.setConfirmActions(key, this.input.previous.pageState.get(key).confirmActions);
240
- }
241
- }
242
- for (const sessionKey of this.input.previous.attachedKeys) {
243
- if (this.runtime.managed.owned.has(sessionKey)) {
244
- this.runtime.sessions.attached.add(sessionKey);
245
- }
246
- }
247
- for (const record of this.runtime.electron.ownedRecords.values()) {
248
- const sessionKey = getSessionContextKey(record.sessionName);
249
- if (sessionKey !== undefined &&
250
- sessionKey !== "" &&
251
- this.input.previous.attachedKeys.has(sessionKey)) {
252
- this.runtime.sessions.attached.add(sessionKey);
253
- }
254
- }
255
- }
256
- }
257
- run() {
258
- this.restoreManagedState();
259
- this.reserveSession();
260
- this.restoreLaunchState();
261
- this.restoreRecordingState();
262
- this.restoreAttachments();
263
- this.restoreOwnershipRanks();
264
- this.restoreManagedOwners();
265
- this.restoreInterruptedIntents();
266
- this.restoreElectronOwners();
267
- this.restoreDaemonReceipts();
268
- this.preserveLiveOwners();
269
- return [...this.input.branch];
270
- }
271
- }
272
- export async function restoreBranchBackedState(runtime, ctx, options) {
273
- const input = await readBranchForRestore(runtime, ctx, options.resetRuntimeOwnership);
274
- return new BrowserBranchRestoration(runtime, ctx, input).run();
275
- }
@@ -1,280 +0,0 @@
1
- import { requirePublishedBrowserJournal } from "../browser-journal.js";
2
- import { buildExecutionPlan } from "../runtime.js";
3
- import { extractExplicitSessionName, getAgentBrowserSessionIdentityKey } from "../argv-grammar.js";
4
- import { isRecord } from "../parsing.js";
5
- import { getAgentBrowserProcessEnvironment, withAgentBrowserProcessEnvironment, } from "../process-environment.js";
6
- import { withNativeSessionDefaults } from "./native-session-defaults.js";
7
- import { getBrowserCwdError, resolveExecutionCwd } from "../execution-cwd.js";
8
- import { AGENT_BROWSER_SCRIPT_DEFAULT_TIMEOUT_MS, bindBrowserCodeCall, runAgentBrowserScript, } from "../input-modes/script.js";
9
- import { buildValidationFailureResult, resolveAgentBrowserInput, } from "./input-plan.js";
10
- import { applyAgentBrowserOutputPath } from "./output-file.js";
11
- import { createBrowserCodeOutput } from "./script-mode.js";
12
- import { resolveBrowserExecutionIdentity, withBrowserExecutionLock, } from "../managed-session-policy-lock.js";
13
- import { loadAgentBrowserConfigSync } from "../config.js";
14
- import { getArtifactPreflightValidationError } from "./extension-artifact-preflight.js";
15
- import { browserExecutionFailure } from "./extension-result-state.js";
16
- import { shouldSerializeBrowserCommand } from "./extension-managed-ownership.js";
17
- import { shouldIncludeProjectConfig } from "./extension-prompt.js";
18
- import { executeBrowserInvocation } from "./extension-command-admission.js";
19
- import { createBrowserInvocation } from "./extension-invocation.js";
20
- function codePreflight(pi, replayError, invocation) {
21
- if (replayError !== undefined && replayError !== "") {
22
- return {
23
- failure: browserExecutionFailure(new Error(replayError), invocation.signal, "validation-error"),
24
- };
25
- }
26
- try {
27
- requirePublishedBrowserJournal(invocation.ctx.sessionManager);
28
- return { cwd: resolveExecutionCwd(pi, invocation.ctx) };
29
- }
30
- catch (error) {
31
- return { failure: browserExecutionFailure(error, invocation.signal, "validation-error") };
32
- }
33
- }
34
- class BrowserCodeExecution {
35
- runtime;
36
- invocation;
37
- operationCwd;
38
- deadline;
39
- output = createBrowserCodeOutput();
40
- nativeEnvironment = getAgentBrowserProcessEnvironment();
41
- controller = new AbortController();
42
- abort = () => {
43
- this.controller.abort(this.invocation.signal?.reason);
44
- };
45
- commandIndex = 0;
46
- journalFailed = false;
47
- constructor(runtime, invocation, operationCwd) {
48
- this.runtime = runtime;
49
- this.invocation = invocation;
50
- this.operationCwd = operationCwd;
51
- this.deadline =
52
- Date.now() + (invocation.params.timeoutMs ?? AGENT_BROWSER_SCRIPT_DEFAULT_TIMEOUT_MS);
53
- }
54
- start() {
55
- const { runtime, invocation } = this;
56
- invocation.signal?.addEventListener("abort", this.abort, { once: true });
57
- if (invocation.signal?.aborted === true) {
58
- this.abort();
59
- }
60
- runtime.code.controllers.add(this.controller);
61
- }
62
- prepare() {
63
- const { params } = this.invocation;
64
- const args = [
65
- ...(params.namespace !== undefined ? ["--namespace", params.namespace] : []),
66
- ...(params.session !== undefined ? ["--session", params.session] : []),
67
- "get",
68
- "url",
69
- ];
70
- const input = resolveAgentBrowserInput({
71
- params: { args },
72
- getBatchPreflightValidationError: () => {
73
- // The identity-selection get-url probe has no batch rows to preflight.
74
- },
75
- });
76
- return input;
77
- }
78
- browserCwd() {
79
- const { runtime, invocation } = this;
80
- if (this.nativeEnvironment.AGENT_BROWSER_CONFIG !== undefined) {
81
- return this.operationCwd;
82
- }
83
- const session = invocation.params.session;
84
- if (session !== undefined && session !== "") {
85
- const key = getAgentBrowserSessionIdentityKey(session, invocation.params.namespace ?? this.nativeEnvironment.AGENT_BROWSER_NAMESPACE);
86
- return runtime.managed.owned.get(key)?.cwd ?? invocation.ctx.cwd;
87
- }
88
- return runtime.managed.active ? runtime.managed.cwd : invocation.ctx.cwd;
89
- }
90
- nativeRoot() {
91
- const { invocation } = this;
92
- const config = loadAgentBrowserConfigSync({
93
- cwd: invocation.ctx.cwd,
94
- includeProjectConfig: shouldIncludeProjectConfig(invocation.ctx),
95
- });
96
- const profile = config.trustedBrowserDefaultProfile;
97
- const root = process.env.PI_SUBAGENT_ROOT_SESSION_ID;
98
- const id = process.env.PI_SUBAGENT_CHILD === "1" && root !== undefined && root !== ""
99
- ? root
100
- : invocation.ctx.sessionManager.getSessionId();
101
- return {
102
- id,
103
- profile: profile?.policy === "always" && !/[\\/~]/.test(profile.name) ? profile.name : undefined,
104
- executablePath: config.trustedBrowserExecutablePath,
105
- };
106
- }
107
- async runAdmitted(root, input) {
108
- const cwd = this.browserCwd();
109
- const error = getBrowserCwdError(cwd);
110
- if (error !== undefined && error !== "") {
111
- return browserExecutionFailure(new Error(error), this.controller.signal, "validation-error");
112
- }
113
- const selectedRoot = this.runtime.managed.active || this.runtime.managed.freshOrdinal > 0 ? undefined : root;
114
- return withNativeSessionDefaults(input, { cwd, signal: this.controller.signal, root: selectedRoot }, (nativeInput) => this.runNative(nativeInput));
115
- }
116
- async runNative(input) {
117
- const { runtime } = this;
118
- const plan = buildExecutionPlan(input.toolArgs, {
119
- freshSessionName: runtime.managed.name,
120
- managedSessionActive: runtime.managed.active,
121
- managedSessionName: runtime.managed.name,
122
- managedSessionNamespace: runtime.managed.namespace,
123
- sessionMode: "auto",
124
- });
125
- const sessionName = plan.sessionName ?? "default";
126
- const namespace = plan.namespace === "" ? undefined : plan.namespace;
127
- const key = getAgentBrowserSessionIdentityKey(sessionName, namespace);
128
- const identity = {
129
- usedImplicitSession: plan.usedImplicitSession,
130
- sessionName,
131
- namespace,
132
- key,
133
- owned: plan.managedSessionName !== undefined || runtime.managed.owned.has(key),
134
- };
135
- const run = () => this.runLocked(identity);
136
- return shouldSerializeBrowserCommand(runtime.managed.owned, runtime.electron.ownedRecords, {
137
- namespace,
138
- explicitSessionName: sessionName,
139
- managedSessionName: runtime.managed.name,
140
- })
141
- ? runtime.managedSessionExecutionQueue.run(run, this.controller.signal)
142
- : runtime.callerOwnedSessionExecutionQueues.run(key, namespace, run, this.controller.signal);
143
- }
144
- async runLocked(identity) {
145
- const socketDir = this.runtime.managed.owned.get(identity.key)?.socketDir;
146
- const env = socketDir !== undefined && socketDir !== "" ? { PI_AGENT_BROWSER_SOCKET_DIR: socketDir } : {};
147
- return withAgentBrowserProcessEnvironment(env, async () => {
148
- const lease = await resolveBrowserExecutionIdentity({
149
- sessionName: identity.sessionName,
150
- namespace: identity.namespace,
151
- ownedManagedSession: identity.owned,
152
- });
153
- return withBrowserExecutionLock({ identity: lease, deadline: this.deadline, signal: this.controller.signal }, (signal) => this.runCell(signal, identity));
154
- });
155
- }
156
- async dispatch(inner, innerSignal, identity) {
157
- if (this.journalFailed) {
158
- throw new Error("Browser-state persistence failed. Inspect the current page before continuing in another tool call.");
159
- }
160
- const bound = bindBrowserCodeCall(inner, {
161
- sessionName: identity.sessionName,
162
- namespace: identity.namespace,
163
- });
164
- const args = [...bound.args];
165
- if (identity.usedImplicitSession &&
166
- !this.runtime.managed.active &&
167
- this.runtime.managed.name === identity.sessionName &&
168
- extractExplicitSessionName(inner.args) === undefined) {
169
- args.splice(args.indexOf("--session"), 2);
170
- }
171
- const { toolCallId, ctx, branch } = this.invocation;
172
- const result = await withAgentBrowserProcessEnvironment({ AGENT_BROWSER_SESSION: this.nativeEnvironment.AGENT_BROWSER_SESSION }, () => executeBrowserInvocation(this.runtime, createBrowserInvocation({
173
- toolCallId,
174
- params: {
175
- args,
176
- stdin: inner.stdin,
177
- timeoutMs: Math.min(inner.timeoutMs ?? this.deadline - Date.now(), Math.max(1, this.deadline - Date.now())),
178
- },
179
- signal: innerSignal,
180
- ctx,
181
- nativeToolCallId: toolCallId,
182
- capturedCwd: this.operationCwd,
183
- modelVisible: false,
184
- commandIndex: this.commandIndex++,
185
- selectedBranch: branch,
186
- })));
187
- if (isRecord(result.details) && result.details.browserStatePersistence !== undefined) {
188
- this.journalFailed = true;
189
- throw new Error("The browser effect may already have happened and its finish could not be persisted. Inspect before continuing; dependent commands were stopped.");
190
- }
191
- return this.output.observe(result);
192
- }
193
- async runCell(signal, identity) {
194
- const run = await runAgentBrowserScript({
195
- code: this.invocation.params.code,
196
- signal,
197
- timeoutMs: Math.max(1, this.deadline - Date.now()),
198
- emitImage: (image) => this.output.emitImage(image),
199
- dispatch: (inner, innerSignal) => this.dispatch(inner, innerSignal, identity),
200
- });
201
- const result = await this.finish(run, identity);
202
- const path = this.invocation.params.outputPath;
203
- if (path === undefined || path === "") {
204
- return result;
205
- }
206
- return this.runtime.artifacts.queue.run(() => this.writeOutput(result, path));
207
- }
208
- async finish(run, identity) {
209
- const result = await this.output.finish(run, identity.sessionName, identity.namespace);
210
- if (this.journalFailed && isRecord(result.details)) {
211
- result.isError = true;
212
- result.details.resultCategory = "failure";
213
- result.details.failureCategory = "upstream-error";
214
- result.details.error =
215
- "Browser-state persistence failed. Dependent calls were stopped; inspect before continuing because already-dispatched effects may have happened.";
216
- }
217
- if (isRecord(result.details)) {
218
- result.details.browserEventVersion = 1;
219
- }
220
- return result;
221
- }
222
- async writeOutput(result, outputPath) {
223
- const error = getArtifactPreflightValidationError({
224
- args: [],
225
- cwd: this.operationCwd,
226
- outputPath,
227
- activeRecordingReservations: [...this.runtime.recordings.active.values()],
228
- });
229
- if (error !== undefined && error !== "") {
230
- const failure = browserExecutionFailure(new Error(error), undefined, "validation-error");
231
- return {
232
- ...result,
233
- isError: true,
234
- content: [...failure.content, ...result.content],
235
- details: {
236
- ...(isRecord(result.details) ? result.details : {}),
237
- ...(isRecord(failure.details) ? failure.details : {}),
238
- },
239
- };
240
- }
241
- return applyAgentBrowserOutputPath({
242
- cwd: this.operationCwd,
243
- outputPath,
244
- preserveTextContent: true,
245
- result,
246
- });
247
- }
248
- async run() {
249
- this.start();
250
- const timer = setTimeout(() => this.controller.abort(new DOMException("Browser code deadline exceeded.", "TimeoutError")), Math.max(0, this.deadline - Date.now()));
251
- try {
252
- const input = this.prepare();
253
- if (input.status === "invalid") {
254
- return buildValidationFailureResult(input);
255
- }
256
- const root = this.nativeRoot();
257
- const session = this.invocation.params.session;
258
- const implicit = (session === undefined || session === "") &&
259
- this.nativeEnvironment.AGENT_BROWSER_CONFIG === undefined;
260
- return await (implicit
261
- ? this.runtime.managedSessionExecutionQueue.run(() => this.runAdmitted(root, input), this.controller.signal)
262
- : this.runAdmitted(root, input));
263
- }
264
- catch (error) {
265
- return browserExecutionFailure(error, this.controller.signal);
266
- }
267
- finally {
268
- clearTimeout(timer);
269
- this.runtime.code.controllers.delete(this.controller);
270
- this.invocation.signal?.removeEventListener("abort", this.abort);
271
- }
272
- }
273
- }
274
- export function executeCode(runtime, invocation) {
275
- const prepared = codePreflight(runtime.pi, runtime.branch.replayError, invocation);
276
- if ("failure" in prepared) {
277
- return Promise.resolve(prepared.failure);
278
- }
279
- return new BrowserCodeExecution(runtime, invocation, prepared.cwd).run();
280
- }