@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
@@ -0,0 +1,139 @@
1
+ /**
2
+ * The settings screen's edits: values shown ahead of the source, and an undo history ordered by edit
3
+ * sequence. Undo requests drain one at a time so each restores against the result of the one before.
4
+ */
5
+ export class SettingsEdits {
6
+ #session;
7
+ #openStructured;
8
+ #pending = new Map();
9
+ #history = [];
10
+ #sequence = 0;
11
+ #requests = 0;
12
+ #active = false;
13
+ #closed = false;
14
+ constructor(session, openStructured) {
15
+ this.#session = session;
16
+ this.#openStructured = openStructured;
17
+ }
18
+ /** The value a row shows: a pending edit, or the source's value. */
19
+ shown(entry) {
20
+ return this.#pending.get(pendingKey(entry)) ?? entry.value;
21
+ }
22
+ apply(entry, value) {
23
+ const key = pendingKey(entry);
24
+ const previous = this.shown(entry);
25
+ const sequence = ++this.#sequence;
26
+ // Invariant: shown immediately so the row never lags a keypress, and so the next press
27
+ // steps from here rather than from a value the source has not caught up to.
28
+ this.#pending.set(key, value);
29
+ void this.#session.change(entry.backend, entry.id, value).then(outcome => {
30
+ const failed = changeFailure(outcome) !== null;
31
+ if (!failed && previous !== null && previous !== value)
32
+ this.#record({ kind: "scalar", sequence, entry, previous });
33
+ // Concurrency: a later press may have moved on; only the last request clears itself.
34
+ if (this.#pending.get(key) === value)
35
+ this.#pending.delete(key);
36
+ });
37
+ }
38
+ /** Saves a structured dialog's record; `rollback` runs when the change fails. */
39
+ saveStructured(entry, previous, forward, rollback) {
40
+ const sequence = ++this.#sequence;
41
+ void this.#session.changeStructured(entry.backend, entry.id, structuredValue(entry, forward)).then(outcome => {
42
+ if (changeFailure(outcome) === null)
43
+ this.#record({ kind: "structured", sequence, entry, previous, forward });
44
+ else
45
+ rollback();
46
+ });
47
+ }
48
+ undo() {
49
+ this.#requests++;
50
+ this.#drain();
51
+ }
52
+ open() { this.#closed = false; }
53
+ /** Drops the history and queued requests; late results no longer record undo steps. */
54
+ close() {
55
+ this.#closed = true;
56
+ this.#history.length = 0;
57
+ this.#requests = 0;
58
+ }
59
+ #record(record) {
60
+ if (this.#closed)
61
+ return;
62
+ const after = this.#history.findIndex(candidate => candidate.sequence > record.sequence);
63
+ if (after < 0)
64
+ this.#history.push(record);
65
+ else
66
+ this.#history.splice(after, 0, record);
67
+ }
68
+ #drain() {
69
+ if (this.#active || this.#requests === 0)
70
+ return;
71
+ const record = this.#history.pop();
72
+ if (record === undefined) {
73
+ this.#requests = 0;
74
+ return;
75
+ }
76
+ this.#requests--;
77
+ this.#active = true;
78
+ if (record.kind === "scalar") {
79
+ const key = pendingKey(record.entry);
80
+ this.#pending.set(key, record.previous);
81
+ void this.#session.change(record.entry.backend, record.entry.id, record.previous).then(outcome => {
82
+ if (this.#pending.get(key) === record.previous)
83
+ this.#pending.delete(key);
84
+ this.#finish(record, outcome);
85
+ });
86
+ return;
87
+ }
88
+ const open = this.#openStructured();
89
+ const target = open !== null && sameEntry(open.entry, record.entry) ? open : null;
90
+ if (target !== null)
91
+ replaceRecord(target.record, record.previous);
92
+ void this.#session.changeStructured(record.entry.backend, record.entry.id, structuredValue(record.entry, record.previous)).then(outcome => {
93
+ if (changeFailure(outcome) !== null && target !== null && this.#openStructured() === target && sameRecord(target.record, record.previous)) {
94
+ replaceRecord(target.record, record.forward);
95
+ }
96
+ this.#finish(record, outcome);
97
+ });
98
+ }
99
+ #finish(record, outcome) {
100
+ if (changeFailure(outcome) !== null)
101
+ this.#record(record);
102
+ this.#active = false;
103
+ this.#drain();
104
+ }
105
+ }
106
+ function pendingKey(entry) {
107
+ return `${entry.backend}:${entry.id}`;
108
+ }
109
+ /** The record the engine stores: a choice part at its fallback is unset, so the engine's default applies. */
110
+ export function structuredValue(entry, record) {
111
+ return Object.fromEntries(Object.entries(record).filter(([key, value]) => {
112
+ const part = entry.flags.find(candidate => candidate.key === key);
113
+ return part?.choices === undefined || value !== part.fallback;
114
+ }));
115
+ }
116
+ export function sameRecord(left, right) {
117
+ const leftEntries = Object.entries(left);
118
+ const rightEntries = Object.entries(right);
119
+ return leftEntries.length === rightEntries.length
120
+ && leftEntries.every(([key, value]) => right[key] === value);
121
+ }
122
+ export function replaceRecord(target, source) {
123
+ for (const key of Object.keys(target))
124
+ delete target[key];
125
+ Object.assign(target, source);
126
+ }
127
+ /** Why a change did not take effect, or null when it did. */
128
+ export function changeFailure(outcome) {
129
+ if (outcome.failure !== null)
130
+ return outcome.failure;
131
+ if (outcome.status === "failed")
132
+ return "the effect failed";
133
+ if (outcome.status === "unavailable")
134
+ return outcome.limitationReason ?? "the setting is unavailable";
135
+ return outcome.limitationReason;
136
+ }
137
+ function sameEntry(left, right) {
138
+ return left.backend === right.backend && left.id === right.id;
139
+ }
@@ -0,0 +1,29 @@
1
+ import { type PaneMouseEvent, type RailPosition, type ScrollbarGeometry, type ScrollbarPresentation, type ScrollbarPresentationInput } from "../../ui/components/index.js";
2
+ /** Where the rail was painted in the last frame, with the list page it scrolls by. */
3
+ export interface SettingsRailFrame {
4
+ readonly rail: RailPosition;
5
+ readonly geometry: ScrollbarGeometry;
6
+ readonly page: number;
7
+ }
8
+ /** How a pointer report landed on the rail: owned keeps it from the list, and `scroll` is the list's new offset. */
9
+ export interface SettingsRailPointer {
10
+ readonly owned: boolean;
11
+ readonly changed: boolean;
12
+ readonly overRail: boolean;
13
+ readonly scroll?: number;
14
+ }
15
+ /** The settings list's scrollbar rail: hover, thumb drag, track paging, and the lingering highlight after a scroll. */
16
+ export declare class SettingsScrollRail {
17
+ #private;
18
+ /** Notes the frame's scroll; a moved list keeps the rail lit and repaints once the highlight lapses. */
19
+ noteRenderedScroll(scroll: number, now: number, requestRender: () => void): void;
20
+ presentation(input: Omit<ScrollbarPresentationInput, "hovered" | "dragging" | "activeUntil">): ScrollbarPresentation;
21
+ /** Records where the rail was painted, or null when this frame has no rail. */
22
+ setFrame(frame: Omit<SettingsRailFrame, "rail"> & {
23
+ readonly rail: Omit<RailPosition, "key">;
24
+ } | null): void;
25
+ pointer(event: PaneMouseEvent, scroll: number): SettingsRailPointer;
26
+ /** Drops hover and any drag, as when a dialog takes the screen. */
27
+ clear(): void;
28
+ dispose(): void;
29
+ }
@@ -0,0 +1,79 @@
1
+ import { scrollForTrackPage, scrollbarPresentation, ScrollbarRails, } from "../../ui/components/index.js";
2
+ /** Identity of the settings list rail in the shared rail state. */
3
+ const RAIL_KEY = "settings";
4
+ // Compatibility: the transcript rail stays lit this long after a scroll, and repaints just after.
5
+ const SCROLL_LINGER_MS = 900;
6
+ const SCROLL_LINGER_REPAINT_MS = 925;
7
+ /** The settings list's scrollbar rail: hover, thumb drag, track paging, and the lingering highlight after a scroll. */
8
+ export class SettingsScrollRail {
9
+ #rails = new ScrollbarRails();
10
+ #frame = null;
11
+ #activeUntil = 0;
12
+ #activityTimer;
13
+ #renderedScroll;
14
+ /** Notes the frame's scroll; a moved list keeps the rail lit and repaints once the highlight lapses. */
15
+ noteRenderedScroll(scroll, now, requestRender) {
16
+ // Rationale: every way of scrolling ends in this frame, so a moved list is noticed here
17
+ // once rather than at each wheel, drag, key, and search branch.
18
+ if (this.#renderedScroll !== undefined && this.#renderedScroll !== scroll) {
19
+ this.#activeUntil = Math.max(this.#activeUntil, now + SCROLL_LINGER_MS);
20
+ this.#clearTimer();
21
+ this.#activityTimer = setTimeout(() => {
22
+ this.#activityTimer = undefined;
23
+ requestRender();
24
+ }, SCROLL_LINGER_REPAINT_MS);
25
+ this.#activityTimer.unref?.();
26
+ }
27
+ this.#renderedScroll = scroll;
28
+ }
29
+ presentation(input) {
30
+ return scrollbarPresentation({
31
+ ...input,
32
+ hovered: this.#rails.isHovered(RAIL_KEY),
33
+ dragging: this.#rails.isDragging(RAIL_KEY),
34
+ activeUntil: this.#activeUntil,
35
+ });
36
+ }
37
+ /** Records where the rail was painted, or null when this frame has no rail. */
38
+ setFrame(frame) {
39
+ this.#frame = frame === null ? null : { ...frame, rail: { ...frame.rail, key: RAIL_KEY } };
40
+ }
41
+ // Rationale: the rail takes its share of a pointer report first: hover, a thumb drag, or a
42
+ // track page. Owned means the list must not see the report; changed means the rail looks different.
43
+ pointer(event, scroll) {
44
+ const frame = this.#frame;
45
+ const wasHovered = this.#rails.isHovered(RAIL_KEY);
46
+ if (frame === null) {
47
+ this.#rails.clear();
48
+ return { owned: false, changed: wasHovered, overRail: false };
49
+ }
50
+ const pointer = { column: event.column, row: event.row - 1 };
51
+ if (this.#rails.isDragging(RAIL_KEY)) {
52
+ // Invariant: a drag keeps the pointer wherever it goes until the button comes up.
53
+ if (event.kind === "release") {
54
+ this.#rails.endDrag();
55
+ return { owned: true, changed: true, overRail: false };
56
+ }
57
+ const target = this.#rails.dragTo(frame.rail, frame.geometry, pointer);
58
+ return target === null ? { owned: true, changed: true, overRail: false } : { owned: true, changed: true, overRail: false, scroll: target };
59
+ }
60
+ const over = this.#rails.notePointer([frame.rail], pointer) !== null;
61
+ if (!over)
62
+ return { owned: false, changed: wasHovered, overRail: false };
63
+ if (event.kind === "press" && !this.#rails.beginDrag(frame.rail, frame.geometry, pointer)) {
64
+ return { owned: true, changed: true, overRail: true, scroll: scrollForTrackPage(frame.geometry, pointer.row - frame.rail.rowStart, scroll, frame.page) };
65
+ }
66
+ return { owned: true, changed: true, overRail: true };
67
+ }
68
+ /** Drops hover and any drag, as when a dialog takes the screen. */
69
+ clear() { this.#rails.clear(); }
70
+ dispose() {
71
+ this.#clearTimer();
72
+ this.#rails.clear();
73
+ }
74
+ #clearTimer() {
75
+ if (this.#activityTimer !== undefined)
76
+ clearTimeout(this.#activityTimer);
77
+ this.#activityTimer = undefined;
78
+ }
79
+ }
@@ -1,5 +1,5 @@
1
1
  import type { UiTheme } from "../../ui/components/index.js";
2
- export interface SettingsSearchPointerEvent {
2
+ interface SettingsSearchPointerEvent {
3
3
  readonly kind: "press" | "motion" | "release";
4
4
  readonly button: number;
5
5
  readonly column: number;
@@ -27,3 +27,4 @@ export interface SettingsSearchInputFactory {
27
27
  create(options: SettingsSearchInputOptions): SettingsSearchInput;
28
28
  isTextInput(data: string): boolean;
29
29
  }
30
+ export {};
@@ -1,8 +1,8 @@
1
1
  import type { Worker } from "node:worker_threads";
2
2
  import { type PromptHistoryFailure, type PromptHistoryPort, type PromptHistoryResult, type PromptHistorySnapshot, type PromptHistorySubmission } from "../../contracts/owned-ui/index.js";
3
3
  import { type PromptHistoryScope } from "./paths.js";
4
- export type HistoryRecoveryState = "starting" | "ready" | "recovering" | "blocked-storage" | "closing" | "closed";
5
- export interface HistoryClock {
4
+ type HistoryRecoveryState = "starting" | "ready" | "recovering" | "blocked-storage" | "closing" | "closed";
5
+ interface HistoryClock {
6
6
  now(): number;
7
7
  setTimeout(callback: () => void, milliseconds: number): ReturnType<typeof setTimeout>;
8
8
  clearTimeout(timer: ReturnType<typeof setTimeout> | undefined): void;
@@ -57,3 +57,4 @@ export declare class PromptHistoryService implements PromptHistoryPort {
57
57
  onFailure(listener: (code: PromptHistoryFailure) => void): () => void;
58
58
  close(): Promise<void>;
59
59
  }
60
+ export {};
@@ -6,12 +6,7 @@ export declare const PRIVATE_ENVIRONMENT: Readonly<{
6
6
  releaseDigest: "LAUNCH_CONTEXT_RELEASE_DIGEST";
7
7
  releaseLayers: "LAUNCH_CONTEXT_RELEASE_LAYERS";
8
8
  launchProfile: "LAUNCH_CONTEXT_PROFILE";
9
- launchMode: "LAUNCH_CONTEXT_MODE";
10
- updateVersion: "LAUNCH_CONTEXT_UPDATE_VERSION";
11
9
  immutableWarmup: "LAUNCH_CONTEXT_WARMUP";
12
- residentRootExecutable: "LAUNCH_CONTEXT_RESIDENT_ROOT_EXECUTABLE";
13
- residentRootArguments: "LAUNCH_CONTEXT_RESIDENT_ROOT_ARGUMENTS";
14
- residentFallback: "LAUNCH_CONTEXT_RESIDENT_FALLBACK";
15
10
  }>;
16
11
  /**
17
12
  * Keys published by releases that predate the neutral cutover. They are read when
@@ -35,15 +30,8 @@ export interface LaunchContext {
35
30
  readonly releaseDigest?: string;
36
31
  readonly releaseLayers?: string;
37
32
  readonly launchProfile?: "a1" | "pi";
38
- readonly launchMode?: "tabs" | "solo";
39
- readonly updateVersion?: string;
40
33
  readonly immutableWarmup?: "1";
41
- readonly residentRootExecutable?: string;
42
- readonly residentRootArguments?: string;
43
- readonly residentFallback?: string;
44
34
  }
45
- /** The Tabs settings configure resident tabs; a direct-route launch, by `a1 solo` or by a fallback, hides them. */
46
- export declare function hidesTabSettings(context: Pick<LaunchContext, "launchMode" | "residentFallback">): boolean;
47
35
  export type LaunchContextRequirement = "optional" | "profile" | "release" | "warmup";
48
36
  /** Read current keys, fall back to superseded keys per field, with bounded diagnostics. */
49
37
  export declare function readLaunchContext(environment: NodeJS.ProcessEnv, requirement?: LaunchContextRequirement, platform?: NodeJS.Platform): LaunchContext;
@@ -6,12 +6,7 @@ export const PRIVATE_ENVIRONMENT = Object.freeze({
6
6
  releaseDigest: "LAUNCH_CONTEXT_RELEASE_DIGEST",
7
7
  releaseLayers: "LAUNCH_CONTEXT_RELEASE_LAYERS",
8
8
  launchProfile: "LAUNCH_CONTEXT_PROFILE",
9
- launchMode: "LAUNCH_CONTEXT_MODE",
10
- updateVersion: "LAUNCH_CONTEXT_UPDATE_VERSION",
11
9
  immutableWarmup: "LAUNCH_CONTEXT_WARMUP",
12
- residentRootExecutable: "LAUNCH_CONTEXT_RESIDENT_ROOT_EXECUTABLE",
13
- residentRootArguments: "LAUNCH_CONTEXT_RESIDENT_ROOT_ARGUMENTS",
14
- residentFallback: "LAUNCH_CONTEXT_RESIDENT_FALLBACK",
15
10
  });
16
11
  /**
17
12
  * Keys published by releases that predate the neutral cutover. They are read when
@@ -32,10 +27,6 @@ const SUPERSEDED_ENTRIES = Object.entries(SUPERSEDED_ENVIRONMENT);
32
27
  const PRIVATE_KEYS = new Set([...Object.values(PRIVATE_ENVIRONMENT), ...Object.values(SUPERSEDED_ENVIRONMENT)]);
33
28
  const LOGICAL_KEYS = new Map(PRIVATE_ENTRIES.map(([logical, key]) => [key, logical]));
34
29
  const SUPERSEDED_LOGICAL_KEYS = new Map(SUPERSEDED_ENTRIES.map(([logical, key]) => [key, logical]));
35
- /** The Tabs settings configure resident tabs; a direct-route launch, by `a1 solo` or by a fallback, hides them. */
36
- export function hidesTabSettings(context) {
37
- return context.launchMode === "solo" || context.residentFallback !== undefined;
38
- }
39
30
  /** Read current keys, fall back to superseded keys per field, with bounded diagnostics. */
40
31
  export function readLaunchContext(environment, requirement = "optional", platform = process.platform) {
41
32
  const values = {};
@@ -70,25 +61,8 @@ export function readLaunchContext(environment, requirement = "optional", platfor
70
61
  if (values.launchProfile !== undefined && values.launchProfile !== "a1" && values.launchProfile !== "pi") {
71
62
  throw invalidContext("launchProfile", "unsupported profile");
72
63
  }
73
- if (values.launchMode !== undefined && values.launchMode !== "tabs" && values.launchMode !== "solo") {
74
- throw invalidContext("launchMode", "unsupported launch mode");
75
- }
76
- if (values.launchProfile === "pi" && values.launchMode === "tabs")
77
- throw invalidContext("launchMode", "Pi comparison cannot use tabs");
78
64
  if (values.immutableWarmup !== undefined && values.immutableWarmup !== "1")
79
65
  throw invalidContext("immutableWarmup", "invalid permission flag");
80
- if ((values.residentRootExecutable === undefined) !== (values.residentRootArguments === undefined))
81
- throw invalidContext("residentRootExecutable", "resident root command is incomplete");
82
- if (values.residentRootArguments !== undefined) {
83
- try {
84
- const argumentsValue = JSON.parse(values.residentRootArguments);
85
- if (!Array.isArray(argumentsValue) || argumentsValue.some(value => typeof value !== "string"))
86
- throw new Error("not string arguments");
87
- }
88
- catch {
89
- throw invalidContext("residentRootArguments", "invalid JSON argument list");
90
- }
91
- }
92
66
  if (values.releaseDigest !== undefined && !/^[a-f0-9]{64}$/.test(values.releaseDigest))
93
67
  throw invalidContext("releaseDigest", "invalid digest");
94
68
  if (requirement === "profile")
@@ -0,0 +1,9 @@
1
+ interface ClaimGateHandle {
2
+ release(): void;
3
+ }
4
+ /**
5
+ * Try once to hold the worktree mutation gate. The gate is a lock directory beside the authority
6
+ * file; contention returns null so the caller keeps its own bounded retry.
7
+ */
8
+ export declare function tryAcquireClaimGate(path: string): ClaimGateHandle | null;
9
+ export {};
@@ -0,0 +1,37 @@
1
+ import lockfile from "proper-lockfile";
2
+ /** A stalled mutation loses the gate after this bound instead of holding it until the process ends. */
3
+ const CLAIM_GATE_STALE_MS = 10_000;
4
+ /**
5
+ * Try once to hold the worktree mutation gate. The gate is a lock directory beside the authority
6
+ * file; contention returns null so the caller keeps its own bounded retry.
7
+ */
8
+ export function tryAcquireClaimGate(path) {
9
+ let release;
10
+ try {
11
+ release = lockfile.lockSync(path, {
12
+ realpath: false,
13
+ lockfilePath: `${path}.gate`,
14
+ stale: CLAIM_GATE_STALE_MS,
15
+ onCompromised: () => { },
16
+ });
17
+ }
18
+ catch (cause) {
19
+ if (cause instanceof Error && "code" in cause && cause.code === "ELOCKED")
20
+ return null;
21
+ throw Object.assign(new Error("cannot access the worktree mutation gate; check A1 data-directory permissions and filesystem availability", { cause }), {
22
+ code: "worktree-coordination-io",
23
+ });
24
+ }
25
+ let released = false;
26
+ return {
27
+ release() {
28
+ if (released)
29
+ return;
30
+ released = true;
31
+ try {
32
+ release();
33
+ }
34
+ catch { /* Compatibility: a reclaimed stale gate is already gone. */ }
35
+ },
36
+ };
37
+ }
@@ -1,13 +1,9 @@
1
- export type { LaunchInstanceStopIntent, SupervisorCommand } from "./commands.js";
2
- export { assertLaunchInstance, assertLaunchInstanceOutcome, assertLaunchInstanceTransition, assertProcessContainmentIdentity } from "./launch-instance.js";
3
- export type { LaunchInstance, LaunchInstanceId, LaunchInstanceOutcome, LaunchInstanceShutdownPolicy, LaunchInstanceState, LaunchInstanceStopReason, ProcessContainmentIdentity, } from "./launch-instance.js";
4
- export { assertDimensions, assertLaunchProfileId, assertNativeProcessIdentity, assertTransparentTerminalLaunchProfile } from "./model.js";
5
- export type { CommandResult, DriverProfileId, GenerationId, LaunchProfileId, NativeProcessIdentity, RequestId, SupervisorSnapshot, TerminalDimensions, TransparentTerminalLaunchProfile, TransparentTerminalLifecycleOutcome, } from "./model.js";
6
- export { resolveCohortEndpoint, resolveProductPaths } from "./paths.js";
7
- export type { CohortEndpointPaths, ProductPaths } from "./paths.js";
1
+ export { assertLaunchProfileId } from "./model.js";
2
+ export type { LaunchProfileId, ProcessIdentity } from "./model.js";
3
+ export { PID_LIVENESS_IDENTITY, inspectLiveProcess } from "./process-liveness.js";
4
+ export { resolveProductPaths } from "./paths.js";
5
+ export type { ProductPaths } from "./paths.js";
8
6
  export { parseSessionSelection, sessionSelectionArguments } from "./session-selection.js";
9
7
  export type { SessionSelection } from "./session-selection.js";
10
8
  export { PRIMARY_SESSION_AGENT_ID, activateSessionRepositoryContext, clearSessionRepositoryContext, listSessionRepositoryWorktrees, readSessionRepositoryContext, registerSessionRepositoryRuntime, releaseSessionRepositoryRuntime, setSessionRepositoryContext, } from "./session-repository-context.js";
11
9
  export type { SessionRepositoryContext, SessionRepositoryContextOptions, SessionRepositoryIdentity, SessionWorktreeInventoryEntry, SessionWorktreeStatus, } from "./session-repository-context.js";
12
- export { createSupervisorStartupAttempt, publishSupervisorStartupResult, readSupervisorStartupResult, supervisorStartupFailure, supervisorStartupReady, supervisorStartupResultPath, } from "./supervisor-startup.js";
13
- export type { SupervisorStartupAttemptIdentity, SupervisorStartupResult } from "./supervisor-startup.js";
@@ -1,6 +1,5 @@
1
- export { assertLaunchInstance, assertLaunchInstanceOutcome, assertLaunchInstanceTransition, assertProcessContainmentIdentity } from "./launch-instance.js";
2
- export { assertDimensions, assertLaunchProfileId, assertNativeProcessIdentity, assertTransparentTerminalLaunchProfile } from "./model.js";
3
- export { resolveCohortEndpoint, resolveProductPaths } from "./paths.js";
1
+ export { assertLaunchProfileId } from "./model.js";
2
+ export { PID_LIVENESS_IDENTITY, inspectLiveProcess } from "./process-liveness.js";
3
+ export { resolveProductPaths } from "./paths.js";
4
4
  export { parseSessionSelection, sessionSelectionArguments } from "./session-selection.js";
5
5
  export { PRIMARY_SESSION_AGENT_ID, activateSessionRepositoryContext, clearSessionRepositoryContext, listSessionRepositoryWorktrees, readSessionRepositoryContext, registerSessionRepositoryRuntime, releaseSessionRepositoryRuntime, setSessionRepositoryContext, } from "./session-repository-context.js";
6
- export { createSupervisorStartupAttempt, publishSupervisorStartupResult, readSupervisorStartupResult, supervisorStartupFailure, supervisorStartupReady, supervisorStartupResultPath, } from "./supervisor-startup.js";
@@ -1,64 +1,7 @@
1
1
  export type LaunchProfileId = "a1" | "pi";
2
- export type GenerationId = string;
3
- export type DriverProfileId = string;
4
- export type RequestId = string;
5
- export interface TerminalDimensions {
6
- readonly columns: number;
7
- readonly rows: number;
8
- }
9
- export interface TransparentTerminalLaunchProfile {
10
- readonly id: DriverProfileId;
11
- readonly terminalCapability: "transparent";
12
- readonly executable: string;
13
- readonly arguments: readonly string[];
14
- readonly cwd: string;
15
- readonly environment: Readonly<Record<string, string>>;
16
- readonly terminalType: string;
17
- readonly dimensions: TerminalDimensions;
18
- readonly ownerDisconnect: "stop" | "detach";
19
- readonly recovery: "detach-only" | "none";
20
- readonly surface: "none";
21
- readonly visualReconnection: "none";
22
- }
23
- export interface NativeProcessIdentity {
2
+ /** A process as session coordination records it: a pid plus the identity its writer observed. */
3
+ export interface ProcessIdentity {
24
4
  readonly pid: number;
25
5
  readonly startIdentity: string;
26
6
  }
27
- export type TransparentTerminalLifecycleOutcome = {
28
- readonly kind: "exited";
29
- readonly exitCode: number;
30
- } | {
31
- readonly kind: "signaled";
32
- readonly signal: string;
33
- } | {
34
- readonly kind: "stopped";
35
- readonly reason: "owner-disconnect" | "user-request" | "update";
36
- } | {
37
- readonly kind: "detached";
38
- readonly reason: "owner-disconnect";
39
- } | {
40
- readonly kind: "spawn-error" | "broker-error";
41
- readonly message: string;
42
- readonly code: string | null;
43
- };
44
- export interface SupervisorSnapshot {
45
- readonly revision: number;
46
- readonly activeInstances: readonly {
47
- readonly id: string;
48
- readonly profileId: LaunchProfileId;
49
- readonly state: "requested" | "active" | "stopping";
50
- }[];
51
- }
52
- export interface CommandResult {
53
- readonly requestId: RequestId;
54
- readonly ok: boolean;
55
- readonly revision: number;
56
- readonly error?: {
57
- readonly code: "invalid-command" | "not-found" | "stale-generation" | "capability-error" | "containment-unsupported" | "ownership-error" | "release-superseded" | "driver-error";
58
- readonly message: string;
59
- };
60
- }
61
7
  export declare function assertLaunchProfileId(value: unknown): asserts value is LaunchProfileId;
62
- export declare function assertDimensions(dimensions: TerminalDimensions): void;
63
- export declare function assertTransparentTerminalLaunchProfile(profile: TransparentTerminalLaunchProfile): void;
64
- export declare function assertNativeProcessIdentity(identity: NativeProcessIdentity): void;
@@ -3,38 +3,3 @@ export function assertLaunchProfileId(value) {
3
3
  if (value !== "a1" && value !== "pi")
4
4
  throw new TypeError(PRODUCT_TEXT.diagnostic(`launch profile is invalid: ${String(value)}`));
5
5
  }
6
- export function assertDimensions(dimensions) {
7
- if (!Number.isInteger(dimensions.columns) || dimensions.columns < 2 || dimensions.columns > 500) {
8
- throw new RangeError("terminal columns must be an integer from 2 to 500");
9
- }
10
- if (!Number.isInteger(dimensions.rows) || dimensions.rows < 1 || dimensions.rows > 300) {
11
- throw new RangeError("terminal rows must be an integer from 1 to 300");
12
- }
13
- }
14
- export function assertTransparentTerminalLaunchProfile(profile) {
15
- if (!profile.id || profile.terminalCapability !== "transparent")
16
- throw new TypeError("invalid transparent terminal profile identity");
17
- if (!profile.executable || profile.executable.includes("\0"))
18
- throw new TypeError("transparent executable must be non-empty and contain no null byte");
19
- if (!profile.cwd || profile.cwd.includes("\0"))
20
- throw new TypeError("transparent working directory must be non-empty and contain no null byte");
21
- if (profile.arguments.some(value => typeof value !== "string" || value.includes("\0")))
22
- throw new TypeError("transparent arguments must contain no null byte");
23
- if (Object.entries(profile.environment).some(([name, value]) => !name || name.includes("=") || name.includes("\0") || value.includes("\0"))) {
24
- throw new TypeError("transparent environment contains an invalid name or value");
25
- }
26
- if (!profile.terminalType || profile.terminalType.includes("\0"))
27
- throw new TypeError("transparent terminal type is invalid");
28
- assertDimensions(profile.dimensions);
29
- if (profile.surface !== "none" || profile.visualReconnection !== "none")
30
- throw new TypeError("transparent profiles cannot declare a surface or visual reconnection");
31
- if (profile.ownerDisconnect === "detach" && profile.recovery !== "detach-only")
32
- throw new TypeError("transparent detach policy requires detach-only recovery");
33
- if (profile.ownerDisconnect === "stop" && profile.recovery !== "none")
34
- throw new TypeError("transparent stop policy requires no recovery claim");
35
- }
36
- export function assertNativeProcessIdentity(identity) {
37
- if (!Number.isSafeInteger(identity.pid) || identity.pid <= 0 || !identity.startIdentity || identity.startIdentity.includes("\0")) {
38
- throw new TypeError("invalid native process identity");
39
- }
40
- }
@@ -2,29 +2,5 @@ export interface ProductPaths {
2
2
  readonly configDir: string;
3
3
  readonly dataDir: string;
4
4
  readonly runtimeDir: string;
5
- readonly databasePath: string;
6
- /** The endpoint written by releases that predate cohort-scoped identity. */
7
- readonly endpoint: string;
8
- /** The metadata written by releases that predate cohort-scoped identity. */
9
- readonly endpointMetadataPath: string;
10
- readonly endpointsDir: string;
11
- /** A short, A1-managed socket directory when the host imposes a small Unix-path limit. */
12
- readonly endpointDirectory?: string | null;
13
- readonly supervisorLogPath: string;
14
5
  }
15
- /** Where one cohort listens, and where it records that it is listening. */
16
- export interface CohortEndpointPaths {
17
- readonly endpoint: string;
18
- readonly endpointMetadataPath: string;
19
- }
20
- /**
21
- * Endpoint identity for one release cohort. Two cohorts can be live at once — an update
22
- * leaves a working session on the release it started on — so the name a supervisor listens
23
- * on has to name the release as well as the runtime directory, or the two contend for one
24
- * endpoint and replacing one means ending the other.
25
- *
26
- * An explicit endpoint override keeps its single endpoint: it is how an isolated run pins
27
- * the address it is going to talk to.
28
- */
29
- export declare function resolveCohortEndpoint(paths: ProductPaths, releaseId: string, environment?: NodeJS.ProcessEnv, hostPlatform?: NodeJS.Platform): CohortEndpointPaths;
30
6
  export declare function resolveProductPaths(environment?: NodeJS.ProcessEnv, hostPlatform?: NodeJS.Platform, fallbackHome?: string): ProductPaths;
@@ -1,27 +1,6 @@
1
- import { createHash } from "node:crypto";
2
1
  import { homedir, platform } from "node:os";
3
2
  import { posix, win32 } from "node:path";
4
3
  import { PRODUCT_IDENTITY } from "../../product-identity.js";
5
- /**
6
- * Endpoint identity for one release cohort. Two cohorts can be live at once — an update
7
- * leaves a working session on the release it started on — so the name a supervisor listens
8
- * on has to name the release as well as the runtime directory, or the two contend for one
9
- * endpoint and replacing one means ending the other.
10
- *
11
- * An explicit endpoint override keeps its single endpoint: it is how an isolated run pins
12
- * the address it is going to talk to.
13
- */
14
- export function resolveCohortEndpoint(paths, releaseId, environment = process.env, hostPlatform = platform()) {
15
- if (environment[PRODUCT_IDENTITY.environment.endpoint]) {
16
- return { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath };
17
- }
18
- const path = hostPlatform === "win32" ? win32 : posix;
19
- const token = createHash("sha256").update(releaseId).digest("hex").slice(0, 16);
20
- const endpoint = hostPlatform === "win32"
21
- ? `${paths.endpoint}-${token}`
22
- : path.join(paths.endpointDirectory ?? paths.runtimeDir, `${token}-${PRODUCT_IDENTITY.endpoint.unixSocketFilename}`);
23
- return { endpoint, endpointMetadataPath: path.join(paths.endpointsDir, `${token}.json`) };
24
- }
25
4
  export function resolveProductPaths(environment = process.env, hostPlatform = platform(), fallbackHome = homedir()) {
26
5
  const windows = hostPlatform === "win32";
27
6
  const path = windows ? win32 : posix;
@@ -29,8 +8,6 @@ export function resolveProductPaths(environment = process.env, hostPlatform = pl
29
8
  const configOverride = environment[PRODUCT_IDENTITY.environment.configDir];
30
9
  const dataOverride = environment[PRODUCT_IDENTITY.environment.dataDir];
31
10
  const runtimeOverride = environment[PRODUCT_IDENTITY.environment.runtimeDir];
32
- const databaseOverride = environment[PRODUCT_IDENTITY.environment.databasePath];
33
- const endpointOverride = environment[PRODUCT_IDENTITY.environment.endpoint];
34
11
  const configDir = path.resolve(configOverride
35
12
  ?? (windows
36
13
  ? path.join(environment.APPDATA ?? home, PRODUCT_IDENTITY.state.windowsControlDirectory)
@@ -45,26 +22,9 @@ export function resolveProductPaths(environment = process.env, hostPlatform = pl
45
22
  : environment.XDG_RUNTIME_DIR
46
23
  ? path.join(environment.XDG_RUNTIME_DIR, PRODUCT_IDENTITY.state.unixControlDirectory)
47
24
  : path.join(dataDir, "runtime")));
48
- const namespace = createHash("sha256").update(runtimeDir.toLowerCase()).digest("hex").slice(0, 20);
49
- // Platform: Darwin limits Unix-domain socket paths to roughly 104 bytes. Runtime roots
50
- // under /var/folders can exceed that before the cohort suffix is added, so only socket
51
- // files use a short owned namespace while metadata remains under the selected runtime.
52
- const endpointDirectory = !endpointOverride && hostPlatform === "darwin"
53
- ? posix.join("/tmp", `${PRODUCT_IDENTITY.state.unixControlDirectory}-${namespace}`)
54
- : null;
55
- const endpoint = endpointOverride
56
- ?? (windows
57
- ? `\\\\.\\pipe\\${PRODUCT_IDENTITY.endpoint.windowsPipeStem}-${namespace}`
58
- : path.join(endpointDirectory ?? runtimeDir, PRODUCT_IDENTITY.endpoint.unixSocketFilename));
59
25
  return {
60
26
  configDir,
61
27
  dataDir,
62
28
  runtimeDir,
63
- databasePath: path.resolve(databaseOverride ?? path.join(dataDir, PRODUCT_IDENTITY.endpoint.databaseFilename)),
64
- endpoint,
65
- endpointMetadataPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.metadataFilename),
66
- endpointsDir: path.join(runtimeDir, "endpoints"),
67
- endpointDirectory,
68
- supervisorLogPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.supervisorLogFilename),
69
29
  };
70
30
  }
@@ -0,0 +1,8 @@
1
+ import type { ProcessIdentity } from "./model.js";
2
+ /**
3
+ * The identity every record written by this build carries. Liveness is a pid probe, so the
4
+ * identity only distinguishes records this build wrote from records an older build left.
5
+ */
6
+ export declare const PID_LIVENESS_IDENTITY = "pid-liveness";
7
+ /** Observe whether a process is running; a permission refusal still proves the pid exists. */
8
+ export declare function inspectLiveProcess(pid: number): Promise<ProcessIdentity | null>;