@timurproko/a1 0.2.7-dev.1249 → 0.2.7-dev.1255

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 (524) hide show
  1. package/README.md +11 -36
  2. package/bin/cli.js +2 -17
  3. package/bin/ui.js +10 -51
  4. package/dist/app/session-shell/clipboard-diagnostics.d.ts +2 -2
  5. package/dist/app/session-shell/clipboard-image.d.ts +0 -1
  6. package/dist/app/session-shell/clipboard-image.js +1 -1
  7. package/dist/app/session-shell/dialog-coordinator.d.ts +6 -5
  8. package/dist/app/session-shell/dialog-coordinator.js +3 -4
  9. package/dist/app/session-shell/dock-chrome.d.ts +11 -6
  10. package/dist/app/session-shell/dock-chrome.js +5 -8
  11. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +0 -2
  12. package/dist/app/session-shell/editor-hyperlink-budget.js +1 -1
  13. package/dist/app/session-shell/exit-notice.d.ts +3 -3
  14. package/dist/app/session-shell/exit-notice.js +10 -10
  15. package/dist/app/session-shell/extension-surface.d.ts +8 -7
  16. package/dist/app/session-shell/helper-pool.d.ts +3 -4
  17. package/dist/app/session-shell/helper-pool.js +1 -1
  18. package/dist/app/session-shell/image-preparation-client.d.ts +4 -3
  19. package/dist/app/session-shell/image-preparation.d.ts +0 -2
  20. package/dist/app/session-shell/image-preparation.js +2 -2
  21. package/dist/app/session-shell/image-source.d.ts +2 -3
  22. package/dist/app/session-shell/image-source.js +2 -2
  23. package/dist/app/session-shell/input-surface-switch.d.ts +9 -7
  24. package/dist/app/session-shell/input-surface-switch.js +1 -2
  25. package/dist/app/session-shell/login-interaction.d.ts +5 -4
  26. package/dist/app/session-shell/login-interaction.js +2 -3
  27. package/dist/app/session-shell/paste-executor.d.ts +4 -8
  28. package/dist/app/session-shell/paste-executor.js +2 -2
  29. package/dist/app/session-shell/paste-protocol.d.ts +2 -2
  30. package/dist/app/session-shell/path-chip-presentation.d.ts +0 -5
  31. package/dist/app/session-shell/path-chip-presentation.js +3 -3
  32. package/dist/app/session-shell/prompt-chips.d.ts +8 -7
  33. package/dist/app/session-shell/prompt-history-controller.d.ts +3 -3
  34. package/dist/app/session-shell/prompt-submission.d.ts +7 -6
  35. package/dist/app/session-shell/prompt-submission.js +7 -28
  36. package/dist/app/session-shell/quit-outro-effects.d.ts +3 -3
  37. package/dist/app/session-shell/quit-outro-effects.js +1 -4
  38. package/dist/app/session-shell/quit-outro.d.ts +9 -12
  39. package/dist/app/session-shell/quit-outro.js +11 -11
  40. package/dist/app/session-shell/response-copy-protocol.d.ts +3 -2
  41. package/dist/app/session-shell/response-copy-transport.d.ts +2 -14
  42. package/dist/app/session-shell/response-copy-transport.js +2 -3
  43. package/dist/app/session-shell/session-lifecycle.d.ts +3 -3
  44. package/dist/app/session-shell/session-lifecycle.js +2 -4
  45. package/dist/app/session-shell/session-shell-root.d.ts +74 -120
  46. package/dist/app/session-shell/session-shell-root.js +82 -115
  47. package/dist/app/session-shell/session-shell.d.ts +13 -16
  48. package/dist/app/session-shell/session-shell.js +149 -314
  49. package/dist/app/session-shell/session-viewport-controller.d.ts +7 -6
  50. package/dist/app/session-shell/session-viewport-controller.js +5 -8
  51. package/dist/app/session-shell/settings-bindings.d.ts +24 -2
  52. package/dist/app/session-shell/settings-bindings.js +24 -0
  53. package/dist/app/session-shell/share-operation.d.ts +3 -3
  54. package/dist/app/session-shell/share-operation.js +4 -6
  55. package/dist/app/session-shell/shell-clipboard.d.ts +59 -0
  56. package/dist/app/session-shell/shell-clipboard.js +119 -0
  57. package/dist/app/session-shell/shell-editor-factory.d.ts +8 -4
  58. package/dist/app/session-shell/shell-editor-factory.js +13 -15
  59. package/dist/app/session-shell/shell-host.d.ts +16 -17
  60. package/dist/app/session-shell/shell-host.js +20 -37
  61. package/dist/app/session-shell/shell-layout.d.ts +2 -2
  62. package/dist/app/session-shell/shell-prompt-suggestions.d.ts +26 -0
  63. package/dist/app/session-shell/shell-prompt-suggestions.js +48 -0
  64. package/dist/app/session-shell/suggestion-surface.d.ts +1 -6
  65. package/dist/app/session-shell/suggestion-surface.js +1 -1
  66. package/dist/app/session-shell/system-clipboard.d.ts +2 -14
  67. package/dist/app/session-shell/system-clipboard.js +2 -7
  68. package/dist/app/session-shell/transcript-document.d.ts +12 -10
  69. package/dist/app/session-shell/transcript-document.js +15 -41
  70. package/dist/app/session-shell/viewport-layout.d.ts +2 -2
  71. package/dist/app/session-shell/workflow-output.d.ts +5 -3
  72. package/dist/app/session-shell/workflow-output.js +13 -15
  73. package/dist/app/session-shell/workflow-router.d.ts +1 -3
  74. package/dist/app/session-shell/workflow-router.js +1 -4
  75. package/dist/cli/dispatch.d.ts +1 -11
  76. package/dist/cli/dispatch.js +5 -92
  77. package/dist/cli/package-messages.d.ts +0 -1
  78. package/dist/cli/package-messages.js +1 -1
  79. package/dist/cli/session-context.d.ts +1 -1
  80. package/dist/cli/session-context.js +5 -7
  81. package/dist/cli/uninstall.d.ts +4 -7
  82. package/dist/cli/uninstall.js +6 -35
  83. package/dist/cli/version-stats.js +4 -7
  84. package/dist/composition/owned-settings.d.ts +2 -2
  85. package/dist/composition/owned-settings.js +0 -4
  86. package/dist/composition/owned-ui.d.ts +3 -25
  87. package/dist/composition/owned-ui.js +37 -113
  88. package/dist/composition/reference-selection-options.d.ts +1 -1
  89. package/dist/composition/reference-selection-options.js +1 -1
  90. package/dist/composition/release-update-observation.d.ts +4 -4
  91. package/dist/composition/release-update-observation.js +17 -47
  92. package/dist/composition/session-backend.d.ts +0 -1
  93. package/dist/composition/session-runtime-registry.d.ts +5 -4
  94. package/dist/composition/settings-route-host.d.ts +0 -7
  95. package/dist/composition/settings-route-host.js +7 -20
  96. package/dist/composition/settings-search-input.d.ts +2 -1
  97. package/dist/composition/startup-route.d.ts +2 -3
  98. package/dist/composition/startup-route.js +2 -3
  99. package/dist/contracts/owned-ui/extension-ui.d.ts +2 -1
  100. package/dist/contracts/owned-ui/index.d.ts +2 -1
  101. package/dist/contracts/owned-ui/model.d.ts +0 -3
  102. package/dist/contracts/owned-ui/session-presenters.d.ts +3 -0
  103. package/dist/contracts/owned-ui/session-workflows.d.ts +1 -4
  104. package/dist/contracts/owned-ui/shell-components.d.ts +543 -0
  105. package/dist/contracts/presentation/component.d.ts +17 -0
  106. package/dist/contracts/presentation/component.js +8 -0
  107. package/dist/contracts/presentation/index.d.ts +6 -15
  108. package/dist/contracts/presentation/index.js +2 -0
  109. package/dist/contracts/presentation/terminal.d.ts +290 -0
  110. package/dist/contracts/presentation/theme.d.ts +46 -0
  111. package/dist/features/launch/development-launch.js +1 -2
  112. package/dist/features/launch/index.d.ts +1 -1
  113. package/dist/features/launch/intent.d.ts +1 -3
  114. package/dist/features/launch/intent.js +2 -4
  115. package/dist/features/launch/runtime-selection.d.ts +2 -2
  116. package/dist/features/launch/runtime-selection.js +2 -2
  117. package/dist/features/launch/session-context.d.ts +2 -2
  118. package/dist/features/owned-ui/project-trust-prompt.d.ts +2 -2
  119. package/dist/features/owned-ui/project-trust-prompt.js +1 -1
  120. package/dist/features/owned-ui/reference-screen-app.d.ts +0 -2
  121. package/dist/features/owned-ui/reference-screen-app.js +2 -9
  122. package/dist/features/owned-ui/release-note-state.d.ts +2 -1
  123. package/dist/features/owned-ui/settings-app.d.ts +0 -6
  124. package/dist/features/owned-ui/settings-app.js +42 -254
  125. package/dist/features/owned-ui/settings-edits.d.ts +31 -0
  126. package/dist/features/owned-ui/settings-edits.js +139 -0
  127. package/dist/features/owned-ui/settings-scroll-rail.d.ts +29 -0
  128. package/dist/features/owned-ui/settings-scroll-rail.js +79 -0
  129. package/dist/features/owned-ui/settings-search-input.d.ts +2 -1
  130. package/dist/features/prompt-history/service.d.ts +3 -2
  131. package/dist/foundation/launch-context/index.d.ts +0 -12
  132. package/dist/foundation/launch-context/index.js +0 -26
  133. package/dist/foundation/lifecycle/claim-gate.d.ts +9 -0
  134. package/dist/foundation/lifecycle/claim-gate.js +37 -0
  135. package/dist/foundation/lifecycle/index.d.ts +5 -9
  136. package/dist/foundation/lifecycle/index.js +3 -4
  137. package/dist/foundation/lifecycle/model.d.ts +2 -59
  138. package/dist/foundation/lifecycle/model.js +0 -35
  139. package/dist/foundation/lifecycle/paths.d.ts +0 -24
  140. package/dist/foundation/lifecycle/paths.js +0 -40
  141. package/dist/foundation/lifecycle/process-liveness.d.ts +8 -0
  142. package/dist/foundation/lifecycle/process-liveness.js +18 -0
  143. package/dist/foundation/lifecycle/session-claim-lock.d.ts +1 -1
  144. package/dist/foundation/lifecycle/session-claim-lock.js +2 -2
  145. package/dist/foundation/lifecycle/session-repository-context.d.ts +6 -6
  146. package/dist/foundation/lifecycle/session-repository-context.js +2 -3
  147. package/dist/foundation/release/automatic-update.d.ts +6 -17
  148. package/dist/foundation/release/automatic-update.js +23 -44
  149. package/dist/foundation/release/bootstrap.d.ts +2 -25
  150. package/dist/foundation/release/bootstrap.js +37 -348
  151. package/dist/foundation/release/dependency-certification.d.ts +1 -2
  152. package/dist/foundation/release/dependency-certification.js +1 -1
  153. package/dist/foundation/release/early-accent.d.ts +2 -2
  154. package/dist/foundation/release/early-accent.js +1 -1
  155. package/dist/foundation/release/index.d.ts +10 -17
  156. package/dist/foundation/release/index.js +7 -11
  157. package/dist/foundation/release/latest-release.d.ts +3 -19
  158. package/dist/foundation/release/latest-release.js +11 -12
  159. package/dist/foundation/release/ordinary-launch-selection.d.ts +1 -1
  160. package/dist/foundation/release/ordinary-launch-selection.js +1 -1
  161. package/dist/foundation/release/process-liveness.d.ts +2 -0
  162. package/dist/foundation/release/process-liveness.js +12 -0
  163. package/dist/foundation/release/release-gc.d.ts +13 -10
  164. package/dist/foundation/release/release-gc.js +37 -101
  165. package/dist/foundation/release/{cohort-state.d.ts → release-state.d.ts} +44 -69
  166. package/dist/foundation/release/{cohort-state.js → release-state.js} +38 -70
  167. package/dist/foundation/release/release-store.d.ts +2 -2
  168. package/dist/foundation/release/release-store.js +2 -2
  169. package/dist/foundation/release/restart-certification.js +1 -1
  170. package/dist/foundation/release/update-activation.d.ts +2 -9
  171. package/dist/foundation/release/update-activation.js +30 -45
  172. package/dist/foundation/release/update-execution-lease.d.ts +2 -3
  173. package/dist/foundation/release/update-execution-lease.js +2 -2
  174. package/dist/foundation/release/update-launch.d.ts +2 -4
  175. package/dist/foundation/release/update-launch.js +0 -7
  176. package/dist/foundation/release/update-recovery.js +1 -1
  177. package/dist/foundation/release/update-transaction.d.ts +1 -1
  178. package/dist/foundation/release/update-transaction.js +5 -2
  179. package/dist/foundation/release/update.d.ts +2 -12
  180. package/dist/foundation/release/update.js +37 -214
  181. package/dist/foundation/session-writer-lock/index.d.ts +14 -6
  182. package/dist/foundation/session-writer-lock/index.js +48 -103
  183. package/dist/foundation/startup/startup-budget.d.ts +5 -5
  184. package/dist/foundation/startup/startup-budget.js +2 -2
  185. package/dist/foundation/startup/startup-runtime.d.ts +1 -1
  186. package/dist/foundation/terminal-cleanup/exit-notice.d.ts +6 -0
  187. package/dist/foundation/terminal-cleanup/exit-notice.js +36 -0
  188. package/dist/foundation/terminal-cleanup/index.d.ts +2 -1
  189. package/dist/foundation/terminal-cleanup/index.js +2 -1
  190. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +0 -5
  191. package/dist/foundation/terminal-cleanup/terminal-reset.js +0 -5
  192. package/dist/integrations/pi/components/editor-interaction.d.ts +4 -12
  193. package/dist/integrations/pi/components/index.d.ts +15 -9
  194. package/dist/integrations/pi/components/index.js +9 -5
  195. package/dist/integrations/pi/components/lazy-selectors.d.ts +2 -10
  196. package/dist/integrations/pi/components/lazy-selectors.js +1 -1
  197. package/dist/integrations/pi/components/modal-frame.d.ts +5 -22
  198. package/dist/integrations/pi/components/modal-frame.js +3 -23
  199. package/dist/integrations/pi/components/owned-editor-ux.d.ts +4 -3
  200. package/dist/integrations/pi/components/prompt-input-port.d.ts +2 -19
  201. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -1
  202. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +3 -2
  203. package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -4
  204. package/dist/integrations/pi/components/shell-footer-status.d.ts +3 -3
  205. package/dist/integrations/pi/components/shell-footer-status.js +5 -4
  206. package/dist/integrations/pi/components/shell-hotkey-sections.js +1 -1
  207. package/dist/integrations/pi/components/shell-presenters-info.d.ts +6 -8
  208. package/dist/integrations/pi/components/shell-presenters-info.js +6 -19
  209. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +1 -1
  210. package/dist/integrations/pi/components/shell-presenters-transcript.js +1 -1
  211. package/dist/integrations/pi/components/shell-session-info-reference.d.ts +2 -1
  212. package/dist/integrations/pi/components/shell-shared-facade.d.ts +33 -229
  213. package/dist/integrations/pi/components/shell-shared-facade.js +8 -1
  214. package/dist/integrations/pi/components/skills-command.d.ts +1 -9
  215. package/dist/integrations/pi/components/skills-command.js +5 -5
  216. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +2 -5
  217. package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -16
  218. package/dist/integrations/pi/components/theme.d.ts +9 -2
  219. package/dist/integrations/pi/components/theme.js +17 -2
  220. package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +2 -1
  221. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +2 -2
  222. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +1 -2
  223. package/dist/integrations/pi/components/upstream/components/session-footer.js +6 -8
  224. package/dist/integrations/pi/engine/adapter.d.ts +3 -6
  225. package/dist/integrations/pi/engine/adapter.js +4 -28
  226. package/dist/integrations/pi/engine/changelog.d.ts +2 -2
  227. package/dist/integrations/pi/engine/changelog.js +3 -3
  228. package/dist/integrations/pi/engine/compaction-progress.d.ts +2 -3
  229. package/dist/integrations/pi/engine/compaction-progress.js +1 -1
  230. package/dist/integrations/pi/engine/conformance.d.ts +2 -1
  231. package/dist/integrations/pi/engine/default-model-setting.d.ts +0 -2
  232. package/dist/integrations/pi/engine/default-model-setting.js +1 -2
  233. package/dist/integrations/pi/engine/diagnostics-state.d.ts +0 -1
  234. package/dist/integrations/pi/engine/diagnostics-state.js +0 -14
  235. package/dist/integrations/pi/engine/event-delivery.d.ts +2 -1
  236. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -1
  237. package/dist/integrations/pi/engine/host.js +2 -2
  238. package/dist/integrations/pi/engine/message-values.d.ts +0 -1
  239. package/dist/integrations/pi/engine/message-values.js +1 -1
  240. package/dist/integrations/pi/engine/pending-delivery.d.ts +0 -4
  241. package/dist/integrations/pi/engine/pending-delivery.js +3 -3
  242. package/dist/integrations/pi/engine/ports.d.ts +7 -1
  243. package/dist/integrations/pi/engine/ports.js +4 -0
  244. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +2 -1
  245. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +3 -3
  246. package/dist/integrations/pi/engine/prompt-suggestions.js +0 -40
  247. package/dist/integrations/pi/engine/provider-authentication.d.ts +1 -1
  248. package/dist/integrations/pi/engine/public-main-entry.d.ts +1 -5
  249. package/dist/integrations/pi/engine/public-main-entry.js +1 -1
  250. package/dist/integrations/pi/engine/repository-pr-rest.d.ts +1 -9
  251. package/dist/integrations/pi/engine/repository-pr-rest.js +2 -2
  252. package/dist/integrations/pi/engine/repository-pr.d.ts +1 -3
  253. package/dist/integrations/pi/engine/repository-pr.js +1 -1
  254. package/dist/integrations/pi/engine/resource-catalog.d.ts +2 -1
  255. package/dist/integrations/pi/engine/session-integration.d.ts +1 -1
  256. package/dist/integrations/pi/engine/session-runtime.d.ts +4 -3
  257. package/dist/integrations/pi/engine/session-runtime.js +0 -2
  258. package/dist/integrations/pi/engine/settings-bridge.d.ts +0 -2
  259. package/dist/integrations/pi/engine/settings-bridge.js +1 -1
  260. package/dist/integrations/pi/engine/settings-port.d.ts +3 -2
  261. package/dist/integrations/pi/engine/transcript-projection.d.ts +2 -1
  262. package/dist/integrations/pi/engine/workflow-contexts.d.ts +1 -1
  263. package/dist/integrations/pi/engine/workflow-runner.d.ts +1 -1
  264. package/dist/integrations/pi/engine/workflow-runner.js +1 -1
  265. package/dist/integrations/pi/engine/workflow-support.d.ts +0 -6
  266. package/dist/integrations/pi/engine/workflow-support.js +4 -18
  267. package/dist/integrations/pi/engine/workflows.d.ts +5 -5
  268. package/dist/integrations/pi/session-presenters/components.d.ts +3 -0
  269. package/dist/integrations/pi/session-presenters/components.js +75 -0
  270. package/dist/integrations/pi/session-presenters/index.d.ts +1 -0
  271. package/dist/integrations/pi/session-presenters/index.js +1 -0
  272. package/dist/integrations/pi/session-presenters/presentation.d.ts +3 -0
  273. package/dist/integrations/pi/session-presenters/presentation.js +10 -0
  274. package/dist/integrations/pi/session-presenters/presenters.d.ts +2 -1
  275. package/dist/integrations/pi/session-presenters/presenters.js +3 -1
  276. package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -2
  277. package/dist/integrations/pi/tui-runtime/adapter.js +23 -32
  278. package/dist/integrations/pi/tui-runtime/contracts.d.ts +22 -166
  279. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +5 -40
  280. package/dist/integrations/pi/tui-runtime/index.d.ts +1 -0
  281. package/dist/integrations/pi/tui-runtime/index.js +1 -0
  282. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +4 -6
  283. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +2 -8
  284. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +3 -9
  285. package/dist/integrations/pi/tui-runtime/runtime-factory.d.ts +3 -0
  286. package/dist/integrations/pi/tui-runtime/runtime-factory.js +11 -0
  287. package/dist/product-identity.d.ts +4 -6
  288. package/dist/product-identity.js +6 -11
  289. package/dist/product-identity.json +1 -40
  290. package/dist/runtime-payload-inventory.json +0 -3
  291. package/dist/ui/components/index.d.ts +4 -4
  292. package/dist/ui/components/index.js +2 -2
  293. package/dist/ui/components/selection-copy.d.ts +0 -1
  294. package/dist/ui/components/selection-copy.js +0 -12
  295. package/dist/ui/components/submitted-prompt.d.ts +3 -13
  296. package/dist/ui/components/submitted-prompt.js +8 -41
  297. package/dist/ui/components/theme.d.ts +4 -19
  298. package/dist/ui/components/theme.js +6 -0
  299. package/dist/ui/components/transcript-viewport.d.ts +1 -3
  300. package/dist/ui/components/transcript-viewport.js +1 -4
  301. package/dist/ui/settings/declarations.d.ts +2 -97
  302. package/dist/ui/settings/declarations.js +2 -78
  303. package/dist/ui/settings/early-accent.js +1 -1
  304. package/dist/ui/settings/index.d.ts +3 -5
  305. package/dist/ui/settings/index.js +2 -3
  306. package/dist/ui/settings/manager.d.ts +0 -4
  307. package/dist/ui/settings/manager.js +6 -62
  308. package/dist/ui/settings/resolution.d.ts +6 -18
  309. package/dist/ui/settings/resolution.js +4 -103
  310. package/dist/ui/settings/sections.d.ts +0 -4
  311. package/dist/ui/settings/sections.js +1 -1
  312. package/docs/architecture/boundaries.md +23 -40
  313. package/docs/architecture/code-documentation.md +2 -2
  314. package/docs/architecture/internal-naming.md +11 -17
  315. package/docs/architecture/project-structure.md +13 -16
  316. package/docs/architecture/resource-and-data-policy.md +16 -31
  317. package/docs/architecture/toolchain.md +14 -19
  318. package/docs/architecture/ui-reference-provenance.md +2 -2
  319. package/docs/ci-release-runbook.md +5 -5
  320. package/docs/features/launch-profiles.md +11 -17
  321. package/docs/features/prompt-history.md +10 -11
  322. package/docs/local-worktree-cleanup.md +28 -1
  323. package/docs/manual-owned-ui-checkpoint.md +0 -1
  324. package/docs/validation.md +5 -11
  325. package/docs/worktree-link-recovery.md +6 -6
  326. package/package.json +7 -20
  327. package/bin/guardian.js +0 -42
  328. package/bin/supervisor.js +0 -7
  329. package/bin/tab-launch-context.d.ts +0 -27
  330. package/bin/tab-launch-context.js +0 -94
  331. package/dist/app/session-shell/resident-tab-coordinator.d.ts +0 -38
  332. package/dist/app/session-shell/resident-tab-coordinator.js +0 -77
  333. package/dist/cli/tabs-request.d.ts +0 -7
  334. package/dist/cli/tabs.d.ts +0 -14
  335. package/dist/cli/tabs.js +0 -151
  336. package/dist/composition/resident-tab-bridge.d.ts +0 -41
  337. package/dist/composition/resident-tab-bridge.js +0 -209
  338. package/dist/composition/utility-tab.d.ts +0 -28
  339. package/dist/composition/utility-tab.js +0 -244
  340. package/dist/features/owned-ui/plus-menu-dialog.d.ts +0 -28
  341. package/dist/features/owned-ui/plus-menu-dialog.js +0 -89
  342. package/dist/features/resident-tab/auto-name.d.ts +0 -11
  343. package/dist/features/resident-tab/auto-name.js +0 -44
  344. package/dist/features/resident-tab/index.d.ts +0 -5
  345. package/dist/features/resident-tab/index.js +0 -7
  346. package/dist/features/resident-tab/shortcut-bindings-file.d.ts +0 -8
  347. package/dist/features/resident-tab/shortcut-bindings-file.js +0 -40
  348. package/dist/features/resident-tab/shortcut-declarations.d.ts +0 -13
  349. package/dist/features/resident-tab/shortcut-declarations.js +0 -26
  350. package/dist/features/resident-tab/shortcut-projection.d.ts +0 -29
  351. package/dist/features/resident-tab/shortcut-projection.js +0 -64
  352. package/dist/features/resident-tab/status-deriver.d.ts +0 -10
  353. package/dist/features/resident-tab/status-deriver.js +0 -12
  354. package/dist/foundation/launch-guardian/exit-watcher.d.ts +0 -14
  355. package/dist/foundation/launch-guardian/exit-watcher.js +0 -103
  356. package/dist/foundation/launch-guardian/index.d.ts +0 -2
  357. package/dist/foundation/launch-guardian/index.js +0 -1
  358. package/dist/foundation/launch-guardian/main.d.ts +0 -39
  359. package/dist/foundation/launch-guardian/main.js +0 -232
  360. package/dist/foundation/lifecycle/commands.d.ts +0 -40
  361. package/dist/foundation/lifecycle/launch-instance.d.ts +0 -46
  362. package/dist/foundation/lifecycle/launch-instance.js +0 -134
  363. package/dist/foundation/lifecycle/native-claim-gate.d.ts +0 -5
  364. package/dist/foundation/lifecycle/native-claim-gate.js +0 -41
  365. package/dist/foundation/lifecycle/supervisor-startup.d.ts +0 -30
  366. package/dist/foundation/lifecycle/supervisor-startup.js +0 -106
  367. package/dist/foundation/process-containment/addon-containment.d.ts +0 -20
  368. package/dist/foundation/process-containment/addon-containment.js +0 -139
  369. package/dist/foundation/process-containment/addon-process-inspector.d.ts +0 -11
  370. package/dist/foundation/process-containment/addon-process-inspector.js +0 -36
  371. package/dist/foundation/process-containment/addon.d.ts +0 -47
  372. package/dist/foundation/process-containment/addon.js +0 -57
  373. package/dist/foundation/process-containment/artifact.d.ts +0 -1
  374. package/dist/foundation/process-containment/artifact.js +0 -35
  375. package/dist/foundation/process-containment/contracts.d.ts +0 -33
  376. package/dist/foundation/process-containment/contracts.js +0 -35
  377. package/dist/foundation/process-containment/index.d.ts +0 -9
  378. package/dist/foundation/process-containment/index.js +0 -7
  379. package/dist/foundation/process-containment/linux-process-inspector.d.ts +0 -7
  380. package/dist/foundation/process-containment/linux-process-inspector.js +0 -27
  381. package/dist/foundation/process-containment/native-process-inspector.d.ts +0 -4
  382. package/dist/foundation/process-containment/native-process-inspector.js +0 -21
  383. package/dist/foundation/protocol/client.d.ts +0 -18
  384. package/dist/foundation/protocol/client.js +0 -130
  385. package/dist/foundation/protocol/index.d.ts +0 -3
  386. package/dist/foundation/protocol/index.js +0 -2
  387. package/dist/foundation/protocol/messages.d.ts +0 -90
  388. package/dist/foundation/protocol/messages.js +0 -100
  389. package/dist/foundation/release/cohort-selection.d.ts +0 -33
  390. package/dist/foundation/release/cohort-selection.js +0 -67
  391. package/dist/foundation/release/endpoint-lock.d.ts +0 -2
  392. package/dist/foundation/release/endpoint-lock.js +0 -37
  393. package/dist/foundation/release/endpoint-recovery.d.ts +0 -10
  394. package/dist/foundation/release/endpoint-recovery.js +0 -45
  395. package/dist/foundation/release/endpoints.d.ts +0 -32
  396. package/dist/foundation/release/endpoints.js +0 -152
  397. package/dist/foundation/release/prepared-update-activation.d.ts +0 -3
  398. package/dist/foundation/release/prepared-update-activation.js +0 -27
  399. package/dist/foundation/release/process-cleanup.d.ts +0 -14
  400. package/dist/foundation/release/process-cleanup.js +0 -76
  401. package/dist/foundation/release/supervisor-identity.d.ts +0 -15
  402. package/dist/foundation/release/supervisor-identity.js +0 -63
  403. package/dist/foundation/resident-tabs/boot-identity.d.ts +0 -6
  404. package/dist/foundation/resident-tabs/boot-identity.js +0 -16
  405. package/dist/foundation/resident-tabs/bounded-host-command.d.ts +0 -20
  406. package/dist/foundation/resident-tabs/bounded-host-command.js +0 -62
  407. package/dist/foundation/resident-tabs/bridge-client.d.ts +0 -73
  408. package/dist/foundation/resident-tabs/bridge-client.js +0 -327
  409. package/dist/foundation/resident-tabs/continuity.d.ts +0 -12
  410. package/dist/foundation/resident-tabs/continuity.js +0 -63
  411. package/dist/foundation/resident-tabs/doctor.d.ts +0 -28
  412. package/dist/foundation/resident-tabs/doctor.js +0 -166
  413. package/dist/foundation/resident-tabs/draft-checkpoint.d.ts +0 -27
  414. package/dist/foundation/resident-tabs/draft-checkpoint.js +0 -145
  415. package/dist/foundation/resident-tabs/ensure-terminal-host.d.ts +0 -36
  416. package/dist/foundation/resident-tabs/ensure-terminal-host.js +0 -151
  417. package/dist/foundation/resident-tabs/fault-injection.d.ts +0 -8
  418. package/dist/foundation/resident-tabs/fault-injection.js +0 -26
  419. package/dist/foundation/resident-tabs/fixture-control.d.ts +0 -7
  420. package/dist/foundation/resident-tabs/fixture-control.js +0 -35
  421. package/dist/foundation/resident-tabs/host-entry.js +0 -17
  422. package/dist/foundation/resident-tabs/index.d.ts +0 -15
  423. package/dist/foundation/resident-tabs/index.js +0 -10
  424. package/dist/foundation/resident-tabs/maintenance.d.ts +0 -39
  425. package/dist/foundation/resident-tabs/maintenance.js +0 -75
  426. package/dist/foundation/resident-tabs/progress-observation-schema.d.ts +0 -34
  427. package/dist/foundation/resident-tabs/progress-observation-schema.js +0 -1
  428. package/dist/foundation/resident-tabs/progress-observation.d.ts +0 -4
  429. package/dist/foundation/resident-tabs/progress-observation.js +0 -150
  430. package/dist/foundation/resident-tabs/prompt-journal.d.ts +0 -63
  431. package/dist/foundation/resident-tabs/prompt-journal.js +0 -213
  432. package/dist/foundation/resident-tabs/protocol.d.ts +0 -12
  433. package/dist/foundation/resident-tabs/protocol.js +0 -195
  434. package/dist/foundation/resident-tabs/recovery.d.ts +0 -26
  435. package/dist/foundation/resident-tabs/recovery.js +0 -205
  436. package/dist/foundation/resident-tabs/release-holds.d.ts +0 -28
  437. package/dist/foundation/resident-tabs/release-holds.js +0 -78
  438. package/dist/foundation/resident-tabs/routes.d.ts +0 -5
  439. package/dist/foundation/resident-tabs/routes.js +0 -5
  440. package/dist/foundation/resident-tabs/routing.d.ts +0 -11
  441. package/dist/foundation/resident-tabs/routing.js +0 -10
  442. package/dist/foundation/resident-tabs/runtime-control.d.ts +0 -38
  443. package/dist/foundation/resident-tabs/runtime-control.js +0 -74
  444. package/dist/foundation/resident-tabs/session-sync.d.ts +0 -14
  445. package/dist/foundation/resident-tabs/session-sync.js +0 -37
  446. package/dist/foundation/resident-tabs/settings.d.ts +0 -16
  447. package/dist/foundation/resident-tabs/settings.js +0 -60
  448. package/dist/foundation/resident-tabs/terminal-host-artifact.d.ts +0 -14
  449. package/dist/foundation/resident-tabs/terminal-host-artifact.js +0 -78
  450. package/dist/foundation/resident-tabs/zip-archive.d.ts +0 -9
  451. package/dist/foundation/resident-tabs/zip-archive.js +0 -56
  452. package/dist/foundation/storage/control-store.d.ts +0 -20
  453. package/dist/foundation/storage/control-store.js +0 -331
  454. package/dist/foundation/storage/index.d.ts +0 -1
  455. package/dist/foundation/storage/index.js +0 -1
  456. package/dist/foundation/supervision/index.d.ts +0 -3
  457. package/dist/foundation/supervision/index.js +0 -3
  458. package/dist/foundation/supervision/main.d.ts +0 -1
  459. package/dist/foundation/supervision/main.js +0 -86
  460. package/dist/foundation/supervision/paths.d.ts +0 -1
  461. package/dist/foundation/supervision/paths.js +0 -1
  462. package/dist/foundation/supervision/server.d.ts +0 -46
  463. package/dist/foundation/supervision/server.js +0 -611
  464. package/dist/integrations/pi/components/components.d.ts +0 -4
  465. package/dist/integrations/pi/components/components.js +0 -48
  466. package/dist/integrations/pi/components/conformance.d.ts +0 -18
  467. package/dist/integrations/pi/components/conformance.js +0 -70
  468. package/dist/integrations/pi/components/shell-components.d.ts +0 -7
  469. package/dist/integrations/pi/components/shell-components.js +0 -7
  470. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +0 -33
  471. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +0 -114
  472. package/dist/integrations/pi/engine/offline-settings-port.d.ts +0 -23
  473. package/dist/integrations/pi/engine/offline-settings-port.js +0 -54
  474. package/dist/native/darwin-arm64/manifest.json +0 -23
  475. package/dist/native/darwin-arm64/process-guardian.node +0 -0
  476. package/dist/native/darwin-arm64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10500
  477. package/dist/native/darwin-arm64/terminal-host.manifest.json +0 -46
  478. package/dist/native/darwin-arm64/terminal-host.node +0 -0
  479. package/dist/native/darwin-x64/manifest.json +0 -23
  480. package/dist/native/darwin-x64/process-guardian.node +0 -0
  481. package/dist/native/darwin-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10737
  482. package/dist/native/darwin-x64/terminal-host.manifest.json +0 -46
  483. package/dist/native/darwin-x64/terminal-host.node +0 -0
  484. package/dist/native/linux-x64/manifest.json +0 -23
  485. package/dist/native/linux-x64/process-guardian.node +0 -0
  486. package/dist/native/linux-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -11226
  487. package/dist/native/linux-x64/terminal-host.manifest.json +0 -46
  488. package/dist/native/linux-x64/terminal-host.node +0 -0
  489. package/dist/native/win32-x64/manifest.json +0 -23
  490. package/dist/native/win32-x64/process-guardian.node +0 -0
  491. package/dist/native/win32-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10757
  492. package/dist/native/win32-x64/terminal-host.manifest.json +0 -46
  493. package/dist/native/win32-x64/terminal-host.node +0 -0
  494. package/dist/ui/settings/migrations.d.ts +0 -19
  495. package/dist/ui/settings/migrations.js +0 -209
  496. package/dist/ui/settings/progress-palette.generated.d.ts +0 -139
  497. package/dist/ui/settings/progress-palette.generated.js +0 -139
  498. package/docs/architecture/evidence/resident-tabs/linux-x64.md +0 -37
  499. package/docs/architecture/evidence/resident-tabs/macos-arm64.md +0 -36
  500. package/docs/architecture/evidence/resident-tabs/macos-x64.md +0 -35
  501. package/docs/architecture/evidence/resident-tabs/windows-x64.md +0 -36
  502. package/docs/architecture/evidence/terminal-host-spike/manual-one-pane-terminal-host.md +0 -70
  503. package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md +0 -32
  504. package/docs/architecture/evidence/terminal-host-spike/milestone-baseline.json +0 -115
  505. package/docs/architecture/evidence/terminal-host-spike/owned-ui-foundation-prerequisite.json +0 -48
  506. package/docs/architecture/evidence/terminal-host-spike/terminal-host-provenance.json +0 -125
  507. package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-1.json +0 -56
  508. package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-3.json +0 -174
  509. package/docs/architecture/evidence/terminal-host-spike/terminal-spike-acceptance-record.json +0 -18
  510. package/docs/architecture/native-fixture-isolation.md +0 -23
  511. package/docs/architecture/process-guardian-provenance.md +0 -36
  512. package/docs/architecture/resident-tabs-requirements.md +0 -18
  513. package/docs/architecture/resident-tabs.md +0 -668
  514. package/docs/architecture/terminal-host-proof-gate.md +0 -34
  515. package/docs/architecture/terminal-host-provenance.md +0 -81
  516. package/docs/architecture/terminal-host-spike-evidence.md +0 -39
  517. package/docs/launch-recovery.md +0 -23
  518. package/docs/manual-launch-instance-acceptance.md +0 -43
  519. package/docs/manual-resident-tabs-acceptance.md +0 -51
  520. /package/dist/{cli/tabs-request.js → contracts/owned-ui/shell-components.js} +0 -0
  521. /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.d.ts +0 -0
  522. /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.js +0 -0
  523. /package/dist/{foundation/lifecycle/commands.js → contracts/presentation/terminal.js} +0 -0
  524. /package/dist/{foundation/resident-tabs/host-entry.d.ts → contracts/presentation/theme.js} +0 -0
@@ -1,39 +0,0 @@
1
- import { type TerminalHostCommand } from "./ensure-terminal-host.js";
2
- export type MaintenanceAction = "list" | "stop" | "stop-all" | "host-status" | "host-stop" | "runtime-control";
3
- export type MaintenanceHostState = "none" | "running" | "stopped" | "unresponsive" | "incompatible" | "refused" | "unverifiable" | "unavailable";
4
- /** The versioned `a1 tabs` report: `a1-tabs-maintenance-v1`, as printed by the terminal host. */
5
- export interface MaintenanceReport {
6
- readonly schema: "a1-tabs-maintenance-v1";
7
- readonly command: string;
8
- readonly host: MaintenanceHostState;
9
- readonly stateDir?: string;
10
- readonly result?: Record<string, unknown>;
11
- readonly pid?: number;
12
- readonly message?: string;
13
- readonly releaseRoot?: string | null;
14
- readonly terminatedUnresponsive?: number;
15
- /** The terminal host's exit status: 0 success, 3 refused or failed, 4 another generation. */
16
- readonly exitCode: number;
17
- }
18
- export interface MaintenanceOptions {
19
- readonly action: MaintenanceAction;
20
- readonly tabId?: string;
21
- readonly profileRoot: string;
22
- readonly dataDir: string;
23
- readonly runtimeDir: string;
24
- /** The first root is the invoking release; other roots never substitute for it. */
25
- readonly releaseRoots: readonly string[];
26
- readonly environment: NodeJS.ProcessEnv;
27
- readonly platform?: NodeJS.Platform;
28
- readonly architecture?: string;
29
- readonly timeoutMs?: number;
30
- readonly verify?: (addon: string, platform: NodeJS.Platform, architecture: string) => Promise<unknown>;
31
- readonly run?: (command: TerminalHostCommand, arguments_: readonly string[], timeoutMs: number) => Promise<{
32
- readonly code: number;
33
- readonly stdout: string;
34
- }>;
35
- }
36
- /** Runs maintenance only through the invoking release; another cohort is never a retry target. */
37
- export declare function runTerminalHostMaintenance(options: MaintenanceOptions): Promise<MaintenanceReport>;
38
- /** The largest maintenance report accepted from the terminal host. */
39
- export declare const MAX_MAINTENANCE_REPORT_BYTES: number;
@@ -1,75 +0,0 @@
1
- import { constants } from "node:fs";
2
- import { access } from "node:fs/promises";
3
- import { PRODUCT_IDENTITY } from "../../product-identity.js";
4
- import { runBoundedHostCommand } from "./bounded-host-command.js";
5
- import { resolveTerminalHostEntryPath, resolveTerminalHostPath } from "./ensure-terminal-host.js";
6
- import { verifyTerminalHostArtifact } from "./terminal-host-artifact.js";
7
- /** Runs maintenance only through the invoking release; another cohort is never a retry target. */
8
- export async function runTerminalHostMaintenance(options) {
9
- const platform = options.platform ?? process.platform;
10
- const architecture = options.architecture ?? process.arch;
11
- const command = await firstVerifiedHost(options, options.releaseRoots.slice(0, 1), platform, architecture);
12
- if (command === undefined)
13
- return unavailable(options.action, "the invoking release has no verified terminal host");
14
- return await invoke(options, command);
15
- }
16
- function arguments_(options) {
17
- const command = options.action === "stop" ? ["stop", options.tabId ?? ""] : [options.action];
18
- return ["tabs", ...command, "--profile", options.profileRoot, "--data-dir", options.dataDir, "--runtime-dir", options.runtimeDir];
19
- }
20
- async function invoke(options, command) {
21
- const timeoutMs = options.timeoutMs ?? 120_000;
22
- try {
23
- const run = options.run ?? ((host, argumentsValue, limit) => runHost(host, argumentsValue, limit, options.environment));
24
- const result = await run(command, arguments_(options), timeoutMs);
25
- const line = result.stdout.trim().split(/\r?\n/u).at(-1) ?? "";
26
- const parsed = JSON.parse(line);
27
- if (parsed.schema !== "a1-tabs-maintenance-v1" || typeof parsed.host !== "string")
28
- throw new Error("malformed maintenance report");
29
- return { ...parsed, exitCode: result.code };
30
- }
31
- catch (error) {
32
- return unavailable(options.action, `terminal host maintenance failed: ${error instanceof Error ? error.message : String(error)}`);
33
- }
34
- }
35
- async function firstVerifiedHost(options, roots, platform, architecture) {
36
- const override = options.environment[PRODUCT_IDENTITY.environment.developmentInstanceId]
37
- ? options.environment[PRODUCT_IDENTITY.environment.terminalHostPath]?.trim()
38
- : undefined;
39
- if (override) {
40
- const entry = roots[0] === undefined ? undefined : resolveTerminalHostEntryPath(roots[0]);
41
- if (entry === undefined)
42
- return undefined;
43
- try {
44
- await Promise.all([access(override, constants.R_OK), access(entry, constants.R_OK)]);
45
- return { executable: process.execPath, entry };
46
- }
47
- catch {
48
- return undefined;
49
- }
50
- }
51
- for (const root of roots) {
52
- const addon = resolveTerminalHostPath(root, {}, platform, architecture);
53
- try {
54
- await (options.verify ?? verifyTerminalHostArtifact)(addon, platform, architecture);
55
- return { executable: process.execPath, entry: resolveTerminalHostEntryPath(root) };
56
- }
57
- catch {
58
- // Invariant: a missing or altered invoking artifact fails closed.
59
- }
60
- }
61
- return undefined;
62
- }
63
- function unavailable(action, message) {
64
- return { schema: "a1-tabs-maintenance-v1", command: action, host: "unavailable", message, exitCode: 3 };
65
- }
66
- /** The largest maintenance report accepted from the terminal host. */
67
- export const MAX_MAINTENANCE_REPORT_BYTES = 4 * 1024 * 1024;
68
- async function runHost(command, arguments_, timeoutMs, environment) {
69
- return await runBoundedHostCommand(command, arguments_, {
70
- environment,
71
- maxStdoutBytes: MAX_MAINTENANCE_REPORT_BYTES,
72
- timeoutMs,
73
- label: "terminal host maintenance",
74
- });
75
- }
@@ -1,34 +0,0 @@
1
- /** Payload-free fixture schema; type-only imports keep it outside the evaluated startup graph. */
2
- export type ResidentInputPhase = "receipt" | "semantic-start" | "semantic-end" | "composition-start" | "composition-end" | "write-start" | "write-end";
3
- export interface ProgressFields {
4
- readonly eventSequence?: number;
5
- readonly revision?: number;
6
- readonly geometryGeneration?: number;
7
- readonly bytes?: number;
8
- readonly count?: number;
9
- readonly eventKind?: string;
10
- readonly frameId?: number;
11
- readonly renderCause?: string;
12
- readonly fragmentCount?: number;
13
- readonly transactionKind?: "synchronized-output" | "ordinary";
14
- }
15
- export interface ProgressRecord extends ProgressFields {
16
- readonly schema: "a1-resident-progress-observation-v1";
17
- readonly runId: string;
18
- readonly role: "child";
19
- readonly stage: "engine-delivery" | "child-render-write" | "child-input-phase";
20
- readonly pid: number;
21
- readonly processInstance: string;
22
- readonly timestampUnixUs: number;
23
- readonly clockErrorUs: number;
24
- readonly sequence: number;
25
- readonly tabId: string;
26
- readonly incarnation: number;
27
- readonly lostBefore: number;
28
- }
29
- export interface ResidentProgressObserverPort {
30
- readonly tabId: string;
31
- engineDelivery(event: unknown): void;
32
- inputPhase?(phase: ResidentInputPhase, revision: number): void;
33
- childRenderWrite(bytes: number, fragments: number, transaction: "synchronized-output" | "ordinary", frameId?: number, renderCause?: string): void;
34
- }
@@ -1,4 +0,0 @@
1
- import type { ResidentProgressObserverPort } from "./progress-observation-schema.js";
2
- export type { ResidentProgressObserverPort } from "./progress-observation-schema.js";
3
- /** Opt-in payload-free child observer; ordinary launches return null. */
4
- export declare function residentProgressObserver(environment?: NodeJS.ProcessEnv): ResidentProgressObserverPort | null;
@@ -1,150 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { appendFile, mkdir } from "node:fs/promises";
3
- import { join } from "node:path";
4
- import { performance } from "node:perf_hooks";
5
- import { PRODUCT_IDENTITY } from "../../product-identity.js";
6
- const OBSERVATION_DIRECTORY_ENV = PRODUCT_IDENTITY.environment.residentProgressObservationDir;
7
- const OBSERVATION_RUN_ENV = PRODUCT_IDENTITY.environment.residentProgressRunId;
8
- const MAX_PENDING_BYTES = 256 * 1024;
9
- class ResidentProgressObserver {
10
- #directory;
11
- #runId;
12
- #tabId;
13
- #incarnation;
14
- #processInstance;
15
- #path;
16
- #sequence = 0;
17
- #engineSequence = 0;
18
- #pendingBytes = 0;
19
- #lost = 0;
20
- #writing = false;
21
- #pending = [];
22
- #scheduled = false;
23
- #directoryReady = false;
24
- #failed = false;
25
- get tabId() { return this.#tabId; }
26
- constructor(directory, runId, tabId, incarnation) {
27
- this.#directory = directory;
28
- this.#runId = runId;
29
- this.#tabId = tabId;
30
- this.#incarnation = incarnation;
31
- this.#processInstance = `${process.pid}-${randomUUID()}`;
32
- this.#path = join(directory, `child-${this.#processInstance}.jsonl`);
33
- }
34
- engineDelivery(event) {
35
- this.#engineSequence += 1;
36
- this.#observe("engine-delivery", {
37
- eventSequence: this.#engineSequence,
38
- eventKind: eventKind(event),
39
- count: 1,
40
- });
41
- }
42
- inputPhase(phase, revision) {
43
- this.#observe("child-input-phase", { eventKind: phase, revision, count: 1 });
44
- }
45
- childRenderWrite(bytes, fragments, transaction, frameId, renderCause) {
46
- this.#observe("child-render-write", {
47
- eventSequence: this.#engineSequence,
48
- bytes,
49
- count: 1,
50
- fragmentCount: fragments,
51
- transactionKind: transaction,
52
- ...(frameId === undefined ? {} : { frameId }),
53
- ...(renderCause === undefined ? {} : { renderCause }),
54
- });
55
- }
56
- #observe(stage, fields) {
57
- if (this.#failed)
58
- return;
59
- const lostBefore = this.#lost;
60
- const record = {
61
- schema: "a1-resident-progress-observation-v1",
62
- runId: this.#runId,
63
- role: "child",
64
- stage,
65
- pid: process.pid,
66
- processInstance: this.#processInstance,
67
- timestampUnixUs: Math.round((performance.timeOrigin + performance.now()) * 1_000),
68
- // Rationale: epoch-calibrated timeOrigin retains conservative cross-process clock error.
69
- clockErrorUs: 1_000,
70
- sequence: ++this.#sequence,
71
- tabId: this.#tabId,
72
- incarnation: this.#incarnation,
73
- lostBefore,
74
- ...fields,
75
- };
76
- const line = `${JSON.stringify(record)}\n`;
77
- const length = Buffer.byteLength(line);
78
- if (this.#pendingBytes + length > MAX_PENDING_BYTES) {
79
- this.#lost = lostBefore + 1;
80
- return;
81
- }
82
- this.#lost = 0;
83
- this.#pendingBytes += length;
84
- this.#pending.push(line);
85
- this.#schedule();
86
- }
87
- #schedule() {
88
- if (this.#scheduled || this.#writing || this.#failed)
89
- return;
90
- this.#scheduled = true;
91
- // Performance: check-phase batches yield to input and amortize file opens and promises.
92
- setImmediate(() => { this.#scheduled = false; void this.#flush(); });
93
- }
94
- async #flush() {
95
- if (this.#failed || this.#pending.length === 0)
96
- return;
97
- this.#writing = true;
98
- const batch = this.#pending.join("");
99
- this.#pending = [];
100
- // Rationale: cap pending only.
101
- this.#pendingBytes = 0;
102
- try {
103
- if (!this.#directoryReady) {
104
- await mkdir(this.#directory, { recursive: true });
105
- this.#directoryReady = true;
106
- }
107
- await appendFile(this.#path, batch, "utf8");
108
- }
109
- catch {
110
- this.#failed = true;
111
- this.#pending = [];
112
- }
113
- finally {
114
- this.#writing = false;
115
- if (this.#pending.length > 0)
116
- this.#schedule();
117
- }
118
- }
119
- }
120
- let observer;
121
- /** Opt-in payload-free child observer; ordinary launches return null. */
122
- export function residentProgressObserver(environment = process.env) {
123
- if (environment === process.env && observer !== undefined)
124
- return observer;
125
- const directory = environment[OBSERVATION_DIRECTORY_ENV];
126
- const runId = environment[OBSERVATION_RUN_ENV];
127
- const tabId = environment[PRODUCT_IDENTITY.environment.residentProgressTabId];
128
- const incarnation = Number(environment[PRODUCT_IDENTITY.environment.residentProgressTabIncarnation]);
129
- const value = directory && runId && runId.length <= 128 && tabId && Number.isSafeInteger(incarnation) && incarnation >= 0
130
- ? new ResidentProgressObserver(directory, runId, tabId, incarnation)
131
- : null;
132
- if (environment === process.env) {
133
- observer = value;
134
- // Security: keep evidence paths and identity private; erase them before extensions/tools inherit env.
135
- for (const name of [
136
- OBSERVATION_DIRECTORY_ENV,
137
- OBSERVATION_RUN_ENV,
138
- PRODUCT_IDENTITY.environment.residentProgressTabId,
139
- PRODUCT_IDENTITY.environment.residentProgressTabIncarnation,
140
- ])
141
- delete process.env[name];
142
- }
143
- return value;
144
- }
145
- function eventKind(event) {
146
- if (typeof event !== "object" || event === null)
147
- return "unknown";
148
- const value = event.type;
149
- return typeof value === "string" && /^[a-z][a-z0-9_-]{0,63}$/iu.test(value) ? value : "unknown";
150
- }
@@ -1,63 +0,0 @@
1
- import { ResidentTabFaultInjection } from "./fault-injection.js";
2
- export interface SubmittedPromptRecord {
3
- readonly type: "submitted";
4
- readonly id: string;
5
- readonly sessionId: string;
6
- readonly sessionFile: string | null;
7
- readonly incarnation: number;
8
- readonly fileExisted: boolean;
9
- readonly kind: "prompt" | "steer" | "follow-up";
10
- readonly text: string;
11
- readonly at: string;
12
- }
13
- export interface CorrelatedPromptRecord {
14
- readonly type: "correlated";
15
- readonly id: string;
16
- readonly entryId: string;
17
- }
18
- export interface SettledPromptRecord {
19
- readonly type: "settled";
20
- readonly id: string;
21
- readonly entryId: string;
22
- }
23
- export interface RetiredPromptRecord {
24
- readonly type: "retired";
25
- readonly id: string;
26
- }
27
- export type PromptJournalRecord = SubmittedPromptRecord | CorrelatedPromptRecord | SettledPromptRecord | RetiredPromptRecord;
28
- export interface PromptSubmission {
29
- readonly sessionId: string;
30
- readonly sessionFile: string | null;
31
- readonly incarnation: number;
32
- readonly fileExisted: boolean;
33
- readonly kind: SubmittedPromptRecord["kind"];
34
- readonly text: string;
35
- }
36
- export interface SessionJournalEntry {
37
- readonly entryId: string;
38
- readonly text: string;
39
- readonly settled: boolean;
40
- }
41
- export interface PendingPrompt {
42
- readonly submitted: SubmittedPromptRecord;
43
- readonly correlatedEntryId?: string;
44
- }
45
- export declare class PromptJournal {
46
- #private;
47
- readonly path: string;
48
- constructor(path: string, options?: {
49
- readonly faults?: ResidentTabFaultInjection;
50
- readonly maximumBytes?: number;
51
- });
52
- initialize(): Promise<void>;
53
- submit(submission: PromptSubmission): Promise<SubmittedPromptRecord>;
54
- adopt(record: SubmittedPromptRecord): Promise<boolean>;
55
- correlate(id: string, entryId: string): Promise<void>;
56
- settle(id: string, entryId: string): Promise<void>;
57
- retire(id: string): Promise<void>;
58
- read(): Promise<readonly PromptJournalRecord[]>;
59
- pending(sessionEntries?: readonly SessionJournalEntry[]): Promise<readonly PendingPrompt[]>;
60
- compactIfRetired(): Promise<boolean>;
61
- }
62
- export declare function classifyMissingSession(record: SubmittedPromptRecord, sessionExists: boolean): "available" | "first-turn" | "missing-transcript";
63
- export declare function removeJournalTemporary(path: string): Promise<void>;
@@ -1,213 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { chmod, mkdir, open, readFile, rename, stat, unlink } from "node:fs/promises";
3
- import { dirname } from "node:path";
4
- import { ResidentTabFaultInjection } from "./fault-injection.js";
5
- const MAX_JOURNAL_BYTES = 8 * 1024 * 1024;
6
- const MAX_RECORD_BYTES = 2 * 1024 * 1024;
7
- export class PromptJournal {
8
- path;
9
- #faults;
10
- #maximumBytes;
11
- #operation = Promise.resolve();
12
- #retired = new Set();
13
- constructor(path, options = {}) {
14
- this.path = path;
15
- this.#faults = options.faults ?? new ResidentTabFaultInjection();
16
- this.#maximumBytes = options.maximumBytes ?? MAX_JOURNAL_BYTES;
17
- }
18
- async initialize() {
19
- await secureDirectory(dirname(this.path));
20
- const handle = await open(this.path, "a", 0o600);
21
- await handle.close();
22
- if (process.platform !== "win32")
23
- await chmod(this.path, 0o600);
24
- for (const record of await this.read())
25
- if (record.type === "retired")
26
- this.#retired.add(record.id);
27
- }
28
- async submit(submission) {
29
- const record = {
30
- type: "submitted",
31
- id: randomUUID(),
32
- ...submission,
33
- at: new Date().toISOString(),
34
- };
35
- await this.#append(record, "journal-before-append", "journal-after-append", "journal-after-sync");
36
- return record;
37
- }
38
- async adopt(record) {
39
- if ((await this.read()).some(existing => existing.type === "submitted" && existing.id === record.id))
40
- return false;
41
- await this.#append(record, "journal-before-append", "journal-after-append", "journal-after-sync");
42
- return true;
43
- }
44
- async correlate(id, entryId) {
45
- await this.#append({ type: "correlated", id, entryId }, "journal-before-correlation", "journal-after-correlation");
46
- }
47
- async settle(id, entryId) {
48
- await this.#append({ type: "settled", id, entryId }, "journal-before-settled-record", "journal-after-settled-record");
49
- }
50
- async retire(id) {
51
- if (this.#retired.has(id))
52
- return;
53
- await this.#append({ type: "retired", id }, "journal-during-retirement");
54
- this.#retired.add(id);
55
- }
56
- async read() {
57
- let text;
58
- try {
59
- text = await readFile(this.path, "utf8");
60
- }
61
- catch (error) {
62
- if (error.code === "ENOENT")
63
- return [];
64
- throw error;
65
- }
66
- const records = [];
67
- const lines = text.split("\n");
68
- for (let index = 0; index < lines.length; index += 1) {
69
- const line = lines[index];
70
- if (!line)
71
- continue;
72
- try {
73
- const value = JSON.parse(line);
74
- records.push(decodeRecord(value));
75
- }
76
- catch (error) {
77
- if (index === lines.length - 1 && !text.endsWith("\n"))
78
- break;
79
- throw error;
80
- }
81
- }
82
- return records;
83
- }
84
- async pending(sessionEntries = []) {
85
- const states = new Map();
86
- const settled = new Set();
87
- const retired = new Set();
88
- for (const record of await this.read()) {
89
- if (record.type === "submitted")
90
- states.set(record.id, { submitted: record });
91
- else if (record.type === "correlated") {
92
- const state = states.get(record.id);
93
- if (state !== undefined)
94
- states.set(record.id, { ...state, correlatedEntryId: record.entryId });
95
- }
96
- else if (record.type === "settled")
97
- settled.add(record.id);
98
- else
99
- retired.add(record.id);
100
- }
101
- const byId = new Map(sessionEntries.map(entry => [entry.entryId, entry]));
102
- const pending = [];
103
- const claimedEntries = new Set();
104
- for (const [id, state] of states) {
105
- if (retired.has(id) || settled.has(id)) {
106
- await this.retire(id);
107
- continue;
108
- }
109
- const correlated = state.correlatedEntryId === undefined ? undefined : byId.get(state.correlatedEntryId);
110
- const textMatch = correlated ?? sessionEntries.find(entry => entry.text === state.submitted.text && !claimedEntries.has(entry.entryId));
111
- if (textMatch !== undefined)
112
- claimedEntries.add(textMatch.entryId);
113
- if (textMatch?.settled === true)
114
- await this.retire(id);
115
- else
116
- pending.push(state);
117
- }
118
- return pending;
119
- }
120
- async compactIfRetired() {
121
- if ((await this.pending()).length !== 0)
122
- return false;
123
- await this.#serialize(async () => {
124
- this.#faults.at("journal-during-compaction");
125
- const temporary = `${this.path}.tmp-${process.pid}-${randomUUID()}`;
126
- const handle = await open(temporary, "wx", 0o600);
127
- try {
128
- await handle.sync();
129
- }
130
- finally {
131
- await handle.close();
132
- }
133
- await rename(temporary, this.path);
134
- await syncDirectory(dirname(this.path));
135
- });
136
- return true;
137
- }
138
- async #append(record, ...points) {
139
- const line = `${JSON.stringify(record)}\n`;
140
- const bytes = Buffer.byteLength(line);
141
- if (bytes > MAX_RECORD_BYTES)
142
- throw new Error("resident prompt journal record exceeds its size limit");
143
- await this.#serialize(async () => {
144
- for (const point of points.slice(0, 1))
145
- this.#faults.at(point);
146
- const current = await stat(this.path).then(value => value.size, error => error.code === "ENOENT" ? 0 : Promise.reject(error));
147
- if (current + bytes > this.#maximumBytes)
148
- throw new Error("resident prompt journal is full");
149
- const handle = await open(this.path, "a", 0o600);
150
- try {
151
- await handle.write(line, undefined, "utf8");
152
- if (points[1] !== undefined)
153
- this.#faults.at(points[1]);
154
- await handle.sync();
155
- if (points[2] !== undefined)
156
- this.#faults.at(points[2]);
157
- }
158
- finally {
159
- await handle.close();
160
- }
161
- });
162
- }
163
- async #serialize(operation) {
164
- const next = this.#operation.then(operation, operation);
165
- this.#operation = next.catch(() => undefined);
166
- await next;
167
- }
168
- }
169
- export function classifyMissingSession(record, sessionExists) {
170
- if (sessionExists)
171
- return "available";
172
- return record.fileExisted ? "missing-transcript" : "first-turn";
173
- }
174
- function decodeRecord(value) {
175
- if (typeof value !== "object" || value === null)
176
- throw new Error("invalid resident prompt journal record");
177
- const record = value;
178
- if (typeof record.id !== "string" || record.id.length === 0)
179
- throw new Error("invalid resident prompt journal id");
180
- if (record.type === "submitted") {
181
- if (typeof record.sessionId !== "string" || !(typeof record.sessionFile === "string" || record.sessionFile === null)
182
- || typeof record.incarnation !== "number" || typeof record.fileExisted !== "boolean"
183
- || !["prompt", "steer", "follow-up"].includes(String(record.kind)) || typeof record.text !== "string" || typeof record.at !== "string") {
184
- throw new Error("invalid submitted prompt journal record");
185
- }
186
- return record;
187
- }
188
- if ((record.type === "correlated" || record.type === "settled") && typeof record.entryId === "string")
189
- return record;
190
- if (record.type === "retired")
191
- return record;
192
- throw new Error("invalid resident prompt journal record type");
193
- }
194
- async function secureDirectory(path) {
195
- await mkdir(path, { recursive: true, mode: 0o700 });
196
- if (process.platform !== "win32")
197
- await chmod(path, 0o700);
198
- }
199
- async function syncDirectory(path) {
200
- if (process.platform === "win32")
201
- return;
202
- const handle = await open(path, "r");
203
- try {
204
- await handle.sync();
205
- }
206
- finally {
207
- await handle.close();
208
- }
209
- }
210
- export async function removeJournalTemporary(path) {
211
- await unlink(path).catch(error => { if (error.code !== "ENOENT")
212
- throw error; });
213
- }
@@ -1,12 +0,0 @@
1
- export interface ResidentEnvelope<T = Readonly<Record<string, unknown>>> {
2
- readonly type: string;
3
- readonly requestId?: number;
4
- readonly body: T;
5
- }
6
- /** Generation-1 MessagePack named-map codec. It intentionally supports only bridge-safe values. */
7
- export declare function encodeResidentFrame(value: ResidentEnvelope): Buffer;
8
- export declare function decodeResidentPayload(payload: Uint8Array): ResidentEnvelope;
9
- export declare class ResidentFrameDecoder {
10
- #private;
11
- push(chunk: Uint8Array): readonly ResidentEnvelope[];
12
- }