@timurproko/a1 0.1.8-dev.49ff83a → 0.1.8-dev.508

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 (865) hide show
  1. package/README.md +168 -65
  2. package/bin/cli.js +33 -11
  3. package/bin/guardian.js +16 -6
  4. package/bin/module-identity.js +76 -69
  5. package/bin/module-resolver.js +138 -0
  6. package/bin/pinned-pi-public.d.ts +3 -0
  7. package/bin/pinned-pi-public.js +93 -0
  8. package/bin/release-cleanup.js +8 -0
  9. package/bin/supervisor.js +2 -2
  10. package/bin/ui.js +67 -22
  11. package/bin/update-recovery.js +343 -0
  12. package/bin/warmup.js +28 -0
  13. package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
  14. package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
  15. package/dist/app/session-shell/clipboard-image.d.ts +11 -0
  16. package/dist/app/session-shell/clipboard-image.js +38 -0
  17. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
  18. package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
  19. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  20. package/dist/app/session-shell/helper-pool.js +98 -0
  21. package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
  22. package/dist/app/session-shell/image-preparation-client.js +145 -0
  23. package/dist/app/session-shell/image-preparation.d.ts +18 -0
  24. package/dist/app/session-shell/image-preparation.js +126 -0
  25. package/dist/app/session-shell/image-source.d.ts +13 -0
  26. package/dist/app/session-shell/image-source.js +171 -0
  27. package/dist/app/session-shell/image-worker.d.ts +17 -0
  28. package/dist/app/session-shell/image-worker.js +23 -0
  29. package/dist/app/session-shell/index.d.ts +7 -0
  30. package/dist/app/session-shell/index.js +4 -0
  31. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  32. package/dist/app/session-shell/paste-executor.js +253 -0
  33. package/dist/app/session-shell/paste-helper.js +173 -0
  34. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  35. package/dist/app/session-shell/paste-preparation-client.js +170 -0
  36. package/dist/app/session-shell/paste-protocol.d.ts +78 -0
  37. package/dist/app/session-shell/paste-protocol.js +18 -0
  38. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  39. package/dist/app/session-shell/paste-text-preparation.js +134 -0
  40. package/dist/app/session-shell/paste-text-worker.js +12 -0
  41. package/dist/app/session-shell/paste-types.d.ts +17 -0
  42. package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
  43. package/dist/app/session-shell/path-chip-presentation.js +24 -0
  44. package/dist/app/session-shell/prompt-chips.d.ts +76 -0
  45. package/dist/app/session-shell/prompt-chips.js +507 -0
  46. package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
  47. package/dist/app/session-shell/prompt-history-controller.js +170 -0
  48. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +35 -0
  49. package/dist/app/session-shell/prompt-suggestion-controller.js +207 -0
  50. package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
  51. package/dist/app/session-shell/quit-outro-effects.js +242 -0
  52. package/dist/app/session-shell/quit-outro.d.ts +38 -0
  53. package/dist/app/session-shell/quit-outro.js +98 -0
  54. package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
  55. package/dist/app/session-shell/response-copy-coordinator.js +187 -0
  56. package/dist/app/session-shell/response-copy-helper.js +122 -0
  57. package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
  58. package/dist/app/session-shell/response-copy-protocol.js +5 -0
  59. package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
  60. package/dist/app/session-shell/response-copy-transport.js +217 -0
  61. package/dist/app/session-shell/session-shell-root.d.ts +265 -0
  62. package/dist/app/session-shell/session-shell-root.js +1366 -0
  63. package/dist/app/session-shell/session-shell.d.ts +59 -0
  64. package/dist/app/session-shell/session-shell.js +1917 -0
  65. package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
  66. package/dist/app/session-shell/session-viewport-controller.js +597 -0
  67. package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
  68. package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
  69. package/dist/app/session-shell/system-clipboard.d.ts +20 -0
  70. package/dist/app/session-shell/system-clipboard.js +159 -0
  71. package/dist/app/session-shell/text-paste.d.ts +5 -0
  72. package/dist/app/session-shell/text-paste.js +16 -0
  73. package/dist/cli/capabilities.d.ts +6 -0
  74. package/dist/cli/capabilities.js +7 -0
  75. package/dist/cli/dispatch.d.ts +46 -0
  76. package/dist/cli/dispatch.js +261 -0
  77. package/dist/cli/index.d.ts +8 -0
  78. package/dist/cli/index.js +4 -0
  79. package/dist/cli/package-messages.d.ts +26 -0
  80. package/dist/cli/package-messages.js +71 -0
  81. package/dist/cli/packages.d.ts +32 -0
  82. package/dist/cli/packages.js +81 -0
  83. package/dist/cli/version-stats.d.ts +22 -0
  84. package/dist/cli/version-stats.js +112 -0
  85. package/dist/composition/index.d.ts +2 -0
  86. package/dist/composition/index.js +2 -0
  87. package/dist/composition/owned-ui.d.ts +37 -0
  88. package/dist/composition/owned-ui.js +136 -0
  89. package/dist/composition/settings-route-host.d.ts +7 -0
  90. package/dist/composition/settings-route-host.js +110 -0
  91. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  92. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  93. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  94. package/dist/contracts/agent-engine/index.d.ts +11 -0
  95. package/dist/contracts/agent-engine/index.js +6 -0
  96. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  97. package/dist/contracts/agent-engine/ports.js +1 -0
  98. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  99. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  100. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  101. package/dist/contracts/owned-ui/index.d.ts +12 -0
  102. package/dist/contracts/owned-ui/index.js +8 -0
  103. package/dist/contracts/owned-ui/model.d.ts +378 -0
  104. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  105. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  106. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  107. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  108. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  109. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  110. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  111. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  112. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  113. package/dist/contracts/owned-ui/validation.js +523 -0
  114. package/dist/contracts/presentation/index.d.ts +104 -0
  115. package/dist/features/launch/development-launch.js +36 -0
  116. package/dist/features/launch/index.d.ts +12 -0
  117. package/dist/features/launch/index.js +6 -0
  118. package/dist/features/launch/intent.d.ts +12 -0
  119. package/dist/features/launch/intent.js +8 -0
  120. package/dist/features/launch/prepare-launch.d.ts +11 -0
  121. package/dist/features/launch/prepare-launch.js +14 -0
  122. package/dist/features/launch/profile-paths.d.ts +16 -0
  123. package/dist/features/launch/profile-paths.js +36 -0
  124. package/dist/features/launch/runtime-selection.d.ts +16 -0
  125. package/dist/features/launch/runtime-selection.js +13 -0
  126. package/dist/features/owned-ui/index.d.ts +6 -0
  127. package/dist/features/owned-ui/index.js +4 -0
  128. package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
  129. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  130. package/dist/features/owned-ui/run.d.ts +17 -0
  131. package/dist/features/owned-ui/run.js +64 -0
  132. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  133. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  134. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  135. package/dist/features/owned-ui/settings-app.js +807 -0
  136. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  137. package/dist/features/owned-ui/settings-route.js +2 -0
  138. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  139. package/dist/features/prompt-history/image-sidecar.js +130 -0
  140. package/dist/features/prompt-history/index.d.ts +4 -0
  141. package/dist/features/prompt-history/index.js +3 -0
  142. package/dist/features/prompt-history/paths.d.ts +5 -0
  143. package/dist/features/prompt-history/paths.js +17 -0
  144. package/dist/features/prompt-history/service.d.ts +54 -0
  145. package/dist/features/prompt-history/service.js +425 -0
  146. package/dist/features/prompt-history/store.d.ts +16 -0
  147. package/dist/features/prompt-history/store.js +219 -0
  148. package/dist/features/prompt-history/worker.d.ts +9 -0
  149. package/dist/features/prompt-history/worker.js +45 -0
  150. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  151. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  152. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  153. package/dist/features/prompt-suggestions/index.js +1 -0
  154. package/dist/foundation/launch-context/index.d.ts +59 -0
  155. package/dist/foundation/launch-context/index.js +136 -0
  156. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  157. package/dist/foundation/launch-guardian/index.js +1 -0
  158. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  159. package/dist/foundation/launch-guardian/main.js +180 -0
  160. package/dist/foundation/lifecycle/commands.js +1 -0
  161. package/dist/foundation/lifecycle/index.d.ts +11 -0
  162. package/dist/foundation/lifecycle/index.js +5 -0
  163. package/dist/foundation/lifecycle/model.d.ts +64 -0
  164. package/dist/foundation/lifecycle/model.js +40 -0
  165. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  166. package/dist/foundation/lifecycle/paths.js +70 -0
  167. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  168. package/dist/foundation/lifecycle/session-selection.js +39 -0
  169. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  170. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  171. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  172. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  173. package/dist/foundation/process-containment/index.d.ts +8 -0
  174. package/dist/foundation/process-containment/index.js +6 -0
  175. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  176. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  177. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  178. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  179. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  180. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  181. package/dist/foundation/protocol/client.d.ts +18 -0
  182. package/dist/foundation/protocol/client.js +130 -0
  183. package/dist/foundation/protocol/index.d.ts +3 -0
  184. package/dist/foundation/protocol/index.js +2 -0
  185. package/dist/foundation/protocol/messages.d.ts +90 -0
  186. package/dist/foundation/protocol/messages.js +100 -0
  187. package/dist/foundation/release/bootstrap.d.ts +51 -0
  188. package/dist/foundation/release/bootstrap.js +427 -0
  189. package/dist/foundation/release/cohort-state.d.ts +157 -0
  190. package/dist/foundation/release/cohort-state.js +472 -0
  191. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  192. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  193. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  194. package/dist/foundation/release/dependency-certification.js +266 -0
  195. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  196. package/dist/foundation/release/dependency-layer.js +466 -0
  197. package/dist/foundation/release/endpoints.d.ts +24 -0
  198. package/dist/foundation/release/endpoints.js +134 -0
  199. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  200. package/dist/foundation/release/immutable-platform.js +13 -0
  201. package/dist/foundation/release/index.d.ts +30 -0
  202. package/dist/foundation/release/index.js +16 -0
  203. package/dist/foundation/release/release-gc.d.ts +71 -0
  204. package/dist/foundation/release/release-gc.js +764 -0
  205. package/dist/foundation/release/release-store.d.ts +49 -0
  206. package/dist/foundation/release/release-store.js +235 -0
  207. package/dist/foundation/release/release.d.ts +43 -0
  208. package/dist/foundation/release/release.js +215 -0
  209. package/dist/foundation/release/restart-certification.d.ts +68 -0
  210. package/dist/foundation/release/restart-certification.js +227 -0
  211. package/dist/foundation/release/types.d.ts +11 -0
  212. package/dist/foundation/release/types.js +1 -0
  213. package/dist/foundation/release/update-launch.d.ts +6 -0
  214. package/dist/foundation/release/update-launch.js +17 -0
  215. package/dist/foundation/release/update-recovery.d.ts +76 -0
  216. package/dist/foundation/release/update-recovery.js +356 -0
  217. package/dist/foundation/release/update-transaction.d.ts +42 -0
  218. package/dist/foundation/release/update-transaction.js +101 -0
  219. package/dist/foundation/release/update.d.ts +119 -0
  220. package/dist/foundation/release/update.js +632 -0
  221. package/dist/foundation/release/warmup.d.ts +3 -0
  222. package/dist/foundation/release/warmup.js +47 -0
  223. package/dist/foundation/startup/index.d.ts +4 -0
  224. package/dist/foundation/startup/index.js +2 -0
  225. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  226. package/dist/foundation/startup/startup-budget.js +42 -0
  227. package/dist/foundation/startup/startup-descriptor.js +34 -0
  228. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  229. package/dist/foundation/startup/startup-runtime.js +128 -0
  230. package/dist/foundation/storage/control-store.d.ts +18 -0
  231. package/dist/foundation/storage/control-store.js +342 -0
  232. package/dist/foundation/storage/index.d.ts +1 -0
  233. package/dist/foundation/storage/index.js +1 -0
  234. package/dist/foundation/supervision/index.d.ts +3 -0
  235. package/dist/foundation/supervision/index.js +3 -0
  236. package/dist/foundation/supervision/main.d.ts +1 -0
  237. package/dist/foundation/supervision/main.js +84 -0
  238. package/dist/foundation/supervision/paths.d.ts +1 -0
  239. package/dist/foundation/supervision/paths.js +1 -0
  240. package/dist/foundation/supervision/server.d.ts +46 -0
  241. package/dist/foundation/supervision/server.js +573 -0
  242. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  243. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  244. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  245. package/dist/foundation/terminal-cleanup/index.js +2 -0
  246. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  247. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  248. package/dist/integrations/pi/components/components.d.ts +4 -0
  249. package/dist/integrations/pi/components/components.js +64 -0
  250. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  251. package/dist/integrations/pi/components/conformance.js +70 -0
  252. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  253. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  254. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  255. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  256. package/dist/integrations/pi/components/index.d.ts +21 -0
  257. package/dist/integrations/pi/components/index.js +13 -0
  258. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  259. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  260. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  261. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  262. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  263. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  264. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  265. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  266. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  267. package/dist/integrations/pi/components/shell-components.js +7 -0
  268. package/dist/integrations/pi/components/shell-editor-autocomplete.js +298 -0
  269. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  270. package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
  271. package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
  272. package/dist/integrations/pi/components/shell-footer-status.js +248 -0
  273. package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
  274. package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
  275. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  276. package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
  277. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +123 -0
  278. package/dist/integrations/pi/components/shell-selectors-dialogs.js +242 -0
  279. package/dist/integrations/pi/components/shell-shared-facade.d.ts +217 -0
  280. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  281. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  282. package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
  283. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  284. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  285. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  286. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  287. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  288. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  289. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  290. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
  291. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  292. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  293. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  294. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  295. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  296. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  297. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
  298. package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
  299. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  300. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +46 -0
  301. package/dist/integrations/pi/components/upstream/components/owned-editor.js +187 -0
  302. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
  303. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
  304. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
  305. package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
  306. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  307. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
  308. package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
  309. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  310. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
  311. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  312. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  313. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  314. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  315. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
  316. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
  317. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  318. package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
  319. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  320. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  321. package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
  322. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  323. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  324. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  325. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  326. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
  327. package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
  328. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  329. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  330. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  331. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  332. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  333. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  334. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  335. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  336. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  337. package/dist/integrations/pi/engine/adapter.d.ts +135 -0
  338. package/dist/integrations/pi/engine/adapter.js +648 -0
  339. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  340. package/dist/integrations/pi/engine/changelog.js +63 -0
  341. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  342. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  343. package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
  344. package/dist/integrations/pi/engine/compaction-progress.js +96 -0
  345. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  346. package/dist/integrations/pi/engine/conformance.js +140 -0
  347. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  348. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  349. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  350. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  351. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  352. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  353. package/dist/integrations/pi/engine/index.d.ts +18 -0
  354. package/dist/integrations/pi/engine/index.js +10 -0
  355. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  356. package/dist/integrations/pi/engine/message-values.js +168 -0
  357. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  358. package/dist/integrations/pi/engine/package-integration.js +118 -0
  359. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  360. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  361. package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
  362. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
  363. package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
  364. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  365. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  366. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  367. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  368. package/dist/integrations/pi/engine/resource-catalog.d.ts +49 -0
  369. package/dist/integrations/pi/engine/resource-catalog.js +289 -0
  370. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  371. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  372. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  373. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  374. package/dist/integrations/pi/engine/session-events.js +223 -0
  375. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  376. package/dist/integrations/pi/engine/session-integration.js +195 -0
  377. package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
  378. package/dist/integrations/pi/engine/session-runtime.js +249 -0
  379. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  380. package/dist/integrations/pi/engine/session-selection.js +90 -0
  381. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  382. package/dist/integrations/pi/engine/settings-bridge.js +514 -0
  383. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  384. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  385. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  386. package/dist/integrations/pi/engine/settings-port.js +353 -0
  387. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  388. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  389. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  390. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  391. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  392. package/dist/integrations/pi/engine/transcript-projection.js +405 -0
  393. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  394. package/dist/integrations/pi/engine/usage-view.js +56 -0
  395. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  396. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  397. package/dist/integrations/pi/engine/workflow-contexts.d.ts +59 -0
  398. package/dist/integrations/pi/engine/workflow-contexts.js +316 -0
  399. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  400. package/dist/integrations/pi/engine/workflow-runner.js +509 -0
  401. package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
  402. package/dist/integrations/pi/engine/workflow-support.js +352 -0
  403. package/dist/integrations/pi/engine/workflows.d.ts +251 -0
  404. package/dist/integrations/pi/engine/workflows.js +63 -0
  405. package/dist/integrations/pi/startup-public.d.ts +2 -0
  406. package/dist/integrations/pi/startup-public.js +2223 -0
  407. package/dist/integrations/pi/startup-public.manifest.json +12502 -0
  408. package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
  409. package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
  410. package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
  411. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  412. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  413. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
  414. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  415. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  416. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  417. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  418. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
  419. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
  420. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  421. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  422. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  423. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  424. package/dist/native/darwin-arm64/manifest.json +4 -4
  425. package/dist/native/darwin-arm64/process-guardian +0 -0
  426. package/dist/native/linux-x64/manifest.json +3 -3
  427. package/dist/native/linux-x64/process-guardian +0 -0
  428. package/dist/native/win32-x64/manifest.json +3 -3
  429. package/dist/native/win32-x64/process-guardian.exe +0 -0
  430. package/dist/product-identity.d.ts +37 -0
  431. package/dist/product-identity.js +119 -0
  432. package/dist/product-identity.json +85 -0
  433. package/dist/runtime-payload-inventory.json +127147 -0
  434. package/dist/ui/apps/contracts.d.ts +64 -0
  435. package/dist/ui/apps/host.d.ts +42 -0
  436. package/dist/ui/apps/host.js +156 -0
  437. package/dist/ui/apps/index.d.ts +5 -0
  438. package/dist/ui/apps/index.js +3 -0
  439. package/dist/ui/apps/registry.d.ts +12 -0
  440. package/dist/ui/apps/registry.js +33 -0
  441. package/dist/ui/components/dialog-panel.js +49 -0
  442. package/dist/ui/components/frame.d.ts +22 -0
  443. package/dist/ui/components/frame.js +55 -0
  444. package/dist/ui/components/index.d.ts +47 -0
  445. package/dist/ui/components/index.js +25 -0
  446. package/dist/ui/components/line-input.d.ts +68 -0
  447. package/dist/ui/components/line-input.js +224 -0
  448. package/dist/ui/components/list-view.d.ts +60 -0
  449. package/dist/ui/components/list-view.js +82 -0
  450. package/dist/ui/components/mouse.d.ts +25 -0
  451. package/dist/ui/components/mouse.js +70 -0
  452. package/dist/ui/components/progress-status.d.ts +2 -0
  453. package/dist/ui/components/progress-status.js +4 -0
  454. package/dist/ui/components/prompt-input.d.ts +32 -0
  455. package/dist/ui/components/prompt-input.js +51 -0
  456. package/dist/ui/components/scrollbar.d.ts +88 -0
  457. package/dist/ui/components/scrollbar.js +137 -0
  458. package/dist/ui/components/selection-copy.d.ts +24 -0
  459. package/dist/ui/components/selection-copy.js +39 -0
  460. package/dist/ui/components/shortcuts.d.ts +58 -0
  461. package/dist/ui/components/shortcuts.js +82 -0
  462. package/dist/ui/components/spans.d.ts +28 -0
  463. package/dist/ui/components/spans.js +266 -0
  464. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  465. package/dist/ui/components/submitted-prompt.js +50 -0
  466. package/dist/ui/components/surface.d.ts +20 -0
  467. package/dist/ui/components/surface.js +44 -0
  468. package/dist/ui/components/text-selection.d.ts +62 -0
  469. package/dist/ui/components/text-selection.js +210 -0
  470. package/dist/ui/components/text.d.ts +38 -0
  471. package/dist/ui/components/text.js +185 -0
  472. package/dist/ui/components/transcript-viewport.d.ts +173 -0
  473. package/dist/ui/components/transcript-viewport.js +753 -0
  474. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  475. package/dist/ui/components/visible-hyperlinks.js +97 -0
  476. package/dist/ui/settings/declarations.d.ts +141 -0
  477. package/dist/ui/settings/declarations.js +135 -0
  478. package/dist/ui/settings/index.d.ts +10 -0
  479. package/dist/ui/settings/index.js +5 -0
  480. package/dist/ui/settings/manager.d.ts +54 -0
  481. package/dist/ui/settings/manager.js +256 -0
  482. package/dist/ui/settings/migrations.d.ts +13 -0
  483. package/dist/ui/settings/migrations.js +74 -0
  484. package/dist/ui/settings/sections.d.ts +52 -0
  485. package/dist/ui/settings/sections.js +112 -0
  486. package/docs/architecture/boundaries.md +17 -13
  487. package/docs/architecture/code-documentation.md +77 -0
  488. package/docs/architecture/history-editor-provenance.md +100 -0
  489. package/docs/architecture/internal-naming.md +91 -0
  490. package/docs/architecture/process-guardian-provenance.md +3 -1
  491. package/docs/architecture/project-structure.md +69 -30
  492. package/docs/architecture/prompt-suggestions.md +68 -0
  493. package/docs/architecture/resource-and-data-policy.md +28 -2
  494. package/docs/architecture/response-copy-delivery.md +85 -0
  495. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  496. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  497. package/docs/architecture/tool-image-presentation.md +62 -0
  498. package/docs/architecture/toolchain.md +32 -10
  499. package/docs/architecture/ui-reference-provenance.md +60 -6
  500. package/docs/ci-release-runbook.md +256 -79
  501. package/docs/features/launch-profiles.md +24 -17
  502. package/docs/features/modal-content-interaction.md +37 -0
  503. package/docs/features/prompt-history.md +149 -0
  504. package/docs/local-worktree-cleanup.md +212 -0
  505. package/docs/manual-code-streaming-cleanup.md +88 -0
  506. package/docs/manual-ghost-link-baseline.md +89 -0
  507. package/docs/manual-launch-instance-acceptance.md +12 -35
  508. package/docs/manual-owned-ui-checkpoint.md +79 -0
  509. package/docs/manual-pi-boundary-candidate.md +4 -5
  510. package/docs/manual-terminal-colour-check.md +4 -3
  511. package/docs/openspec-archive-automation.md +259 -0
  512. package/docs/repository-governance-live-acceptance.md +77 -0
  513. package/docs/validation.md +100 -0
  514. package/package.json +49 -34
  515. package/dist/src/cli/capabilities.d.ts +0 -15
  516. package/dist/src/cli/capabilities.js +0 -7
  517. package/dist/src/cli/dispatch.d.ts +0 -32
  518. package/dist/src/cli/dispatch.js +0 -142
  519. package/dist/src/cli/index.d.ts +0 -5
  520. package/dist/src/cli/index.js +0 -5
  521. package/dist/src/cli/packages.d.ts +0 -23
  522. package/dist/src/cli/packages.js +0 -84
  523. package/dist/src/cli/version-stats.d.ts +0 -16
  524. package/dist/src/cli/version-stats.js +0 -72
  525. package/dist/src/cli/version.d.ts +0 -2
  526. package/dist/src/cli/version.js +0 -23
  527. package/dist/src/composition/index.d.ts +0 -48
  528. package/dist/src/composition/index.js +0 -258
  529. package/dist/src/features/launch/development-launch.js +0 -28
  530. package/dist/src/features/launch/index.d.ts +0 -7
  531. package/dist/src/features/launch/index.js +0 -7
  532. package/dist/src/features/launch/intent.d.ts +0 -7
  533. package/dist/src/features/launch/intent.js +0 -4
  534. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  535. package/dist/src/features/launch/prepare-launch.js +0 -21
  536. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  537. package/dist/src/features/launch/profile-paths.js +0 -31
  538. package/dist/src/features/launch/profiles.d.ts +0 -12
  539. package/dist/src/features/launch/profiles.js +0 -26
  540. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  541. package/dist/src/features/launch/runtime-selection.js +0 -13
  542. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  543. package/dist/src/features/owned-ui/customization.js +0 -108
  544. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  545. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  546. package/dist/src/features/owned-ui/index.d.ts +0 -4
  547. package/dist/src/features/owned-ui/index.js +0 -4
  548. package/dist/src/features/owned-ui/run.d.ts +0 -11
  549. package/dist/src/features/owned-ui/run.js +0 -15
  550. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  551. package/dist/src/features/owned-ui/settings-app.js +0 -633
  552. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  553. package/dist/src/features/workspace/capabilities.js +0 -75
  554. package/dist/src/features/workspace/index.d.ts +0 -6
  555. package/dist/src/features/workspace/index.js +0 -6
  556. package/dist/src/features/workspace/presentation.d.ts +0 -30
  557. package/dist/src/features/workspace/presentation.js +0 -70
  558. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  559. package/dist/src/features/workspace/reconciliation.js +0 -82
  560. package/dist/src/features/workspace/reducer.d.ts +0 -42
  561. package/dist/src/features/workspace/reducer.js +0 -213
  562. package/dist/src/features/workspace/router.d.ts +0 -31
  563. package/dist/src/features/workspace/router.js +0 -124
  564. package/dist/src/features/workspace/store.d.ts +0 -17
  565. package/dist/src/features/workspace/store.js +0 -54
  566. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  567. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  568. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  569. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  570. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  571. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  572. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  573. package/dist/src/foundation/launch-guardian/index.js +0 -1
  574. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  575. package/dist/src/foundation/launch-guardian/main.js +0 -165
  576. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  577. package/dist/src/foundation/lifecycle/index.js +0 -4
  578. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  579. package/dist/src/foundation/lifecycle/model.js +0 -40
  580. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  581. package/dist/src/foundation/lifecycle/paths.js +0 -42
  582. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  583. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  584. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  585. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  586. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  587. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  588. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  589. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  590. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  591. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  592. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  593. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  594. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  595. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  596. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  597. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  598. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  599. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  600. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  601. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  602. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  603. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  604. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  605. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  606. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  607. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  608. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  609. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  610. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  611. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  612. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  613. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  614. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  615. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  616. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  617. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  618. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  619. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  620. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  621. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  622. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  623. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  624. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  625. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  626. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  627. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  628. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  629. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  630. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  631. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  632. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  633. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  634. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  635. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  636. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  637. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  638. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  639. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  640. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  641. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  642. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  643. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  644. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  645. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  646. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  647. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  648. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  649. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  650. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  651. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  652. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  653. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  654. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  655. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  656. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  657. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  658. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  659. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  660. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  661. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  662. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  663. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  664. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  665. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  666. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  667. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  668. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  669. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  670. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  671. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  672. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  673. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  674. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  675. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  676. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  677. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  678. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  679. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  680. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  681. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  682. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  683. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  684. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  685. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  686. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  687. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  688. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  689. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  690. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  691. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  692. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  693. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  694. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  695. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  696. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  697. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  698. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  699. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  700. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  701. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  702. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  703. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  704. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  705. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  706. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  707. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  708. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  709. package/dist/src/foundation/process-containment/index.js +0 -5
  710. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  711. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  712. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  713. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  714. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  715. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  716. package/dist/src/foundation/protocol/client.d.ts +0 -17
  717. package/dist/src/foundation/protocol/client.js +0 -129
  718. package/dist/src/foundation/protocol/index.d.ts +0 -2
  719. package/dist/src/foundation/protocol/index.js +0 -2
  720. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  721. package/dist/src/foundation/protocol/messages.js +0 -99
  722. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  723. package/dist/src/foundation/release/bootstrap.js +0 -335
  724. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  725. package/dist/src/foundation/release/cohort-state.js +0 -202
  726. package/dist/src/foundation/release/index.d.ts +0 -10
  727. package/dist/src/foundation/release/index.js +0 -10
  728. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  729. package/dist/src/foundation/release/release-gc.js +0 -16
  730. package/dist/src/foundation/release/release-store.d.ts +0 -43
  731. package/dist/src/foundation/release/release-store.js +0 -175
  732. package/dist/src/foundation/release/release.d.ts +0 -38
  733. package/dist/src/foundation/release/release.js +0 -204
  734. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  735. package/dist/src/foundation/release/update-transaction.js +0 -89
  736. package/dist/src/foundation/release/update.d.ts +0 -82
  737. package/dist/src/foundation/release/update.js +0 -529
  738. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  739. package/dist/src/foundation/storage/control-store.js +0 -530
  740. package/dist/src/foundation/storage/index.d.ts +0 -1
  741. package/dist/src/foundation/storage/index.js +0 -1
  742. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  743. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  744. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  745. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  746. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  747. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  748. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  749. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  750. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  751. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  752. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  753. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  754. package/dist/src/foundation/supervision/index.d.ts +0 -3
  755. package/dist/src/foundation/supervision/index.js +0 -3
  756. package/dist/src/foundation/supervision/main.d.ts +0 -1
  757. package/dist/src/foundation/supervision/main.js +0 -41
  758. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  759. package/dist/src/foundation/supervision/paths.js +0 -1
  760. package/dist/src/foundation/supervision/server.d.ts +0 -22
  761. package/dist/src/foundation/supervision/server.js +0 -451
  762. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  763. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  764. package/dist/src/foundation/ui-apps/host.js +0 -152
  765. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  766. package/dist/src/foundation/ui-apps/index.js +0 -3
  767. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  768. package/dist/src/foundation/ui-apps/registry.js +0 -32
  769. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  770. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  771. package/dist/src/foundation/ui-components/frame.js +0 -54
  772. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  773. package/dist/src/foundation/ui-components/index.js +0 -18
  774. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  775. package/dist/src/foundation/ui-components/line-input.js +0 -245
  776. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  777. package/dist/src/foundation/ui-components/list-view.js +0 -76
  778. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  779. package/dist/src/foundation/ui-components/mouse.js +0 -46
  780. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  781. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  782. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  783. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  784. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  785. package/dist/src/foundation/ui-components/spans.js +0 -59
  786. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  787. package/dist/src/foundation/ui-components/surface.js +0 -38
  788. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  789. package/dist/src/foundation/ui-components/text.js +0 -123
  790. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  791. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  792. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  793. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  794. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  795. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  796. package/dist/src/product-identity.d.ts +0 -37
  797. package/dist/src/product-identity.js +0 -150
  798. package/dist/src/product-identity.json +0 -99
  799. package/docs/manual-transparent-checkpoint.md +0 -53
  800. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  801. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  802. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  803. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  804. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  805. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  806. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  807. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  808. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  809. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  810. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  811. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  812. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  813. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  814. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  815. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  816. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  817. /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
  818. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  819. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  820. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  821. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  822. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  823. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  824. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  825. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  826. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  827. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  828. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  829. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  830. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  831. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  832. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  833. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  834. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  835. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  836. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
  837. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
  838. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
  839. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  840. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  841. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  842. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  843. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  844. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  845. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  846. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  847. /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
  848. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  849. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  850. /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
  851. /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
  852. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  853. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  854. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  855. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  856. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  857. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  858. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  859. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  860. /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
  861. /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
  862. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
  863. /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
  864. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  865. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,156 @@
1
+ import type { PresentationComponentPort, PresentationPointerSurface } from "../../../contracts/presentation/index.js";
2
+ import type { PiTuiInputCoordinationDecision, PiTuiInputCoordinationScheduler, PiTuiInputSurfaceKind } from "./input-presentation-coordinator.js";
3
+ export type PiTuiRuntimeState = "idle" | "running" | "stopping" | "stopped" | "failed";
4
+ export interface PiTuiViewport {
5
+ readonly columns: number;
6
+ readonly rows: number;
7
+ }
8
+ export interface PiTuiScrollState {
9
+ readonly scrollTop: number;
10
+ readonly viewportHeight: number;
11
+ readonly followingEnd: boolean;
12
+ readonly scrollbarVisible: boolean;
13
+ }
14
+ export type PiTuiPointerSurface = PresentationPointerSurface;
15
+ export interface PiTuiComponentPort extends PresentationComponentPort {
16
+ readonly wantsKeyRelease?: boolean;
17
+ }
18
+ export interface PiTuiTerminalPort {
19
+ start(onInput: (data: string) => void, onResize: () => void): void;
20
+ stop(): void;
21
+ drainInput(maxMs?: number, idleMs?: number): Promise<void>;
22
+ write(data: string): void;
23
+ readonly columns: number;
24
+ readonly rows: number;
25
+ readonly kittyProtocolActive: boolean;
26
+ moveBy(lines: number): void;
27
+ hideCursor(): void;
28
+ showCursor(): void;
29
+ clearLine(): void;
30
+ clearFromCursor(): void;
31
+ clearScreen(): void;
32
+ setTitle(title: string): void;
33
+ setProgress(active: boolean): void;
34
+ }
35
+ export type PiTuiSizeValue = number | `${number}%`;
36
+ export type PiTuiOverlayAnchor = "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "top-center" | "bottom-center" | "left-center" | "right-center";
37
+ export interface PiTuiOverlayMargin {
38
+ readonly top?: number;
39
+ readonly right?: number;
40
+ readonly bottom?: number;
41
+ readonly left?: number;
42
+ }
43
+ export interface PiTuiOverlayOptions {
44
+ readonly width?: PiTuiSizeValue;
45
+ readonly minWidth?: number;
46
+ readonly maxHeight?: PiTuiSizeValue;
47
+ readonly anchor?: PiTuiOverlayAnchor;
48
+ readonly offsetX?: number;
49
+ readonly offsetY?: number;
50
+ readonly row?: PiTuiSizeValue;
51
+ readonly col?: PiTuiSizeValue;
52
+ readonly margin?: PiTuiOverlayMargin | number;
53
+ readonly visible?: (columns: number, rows: number) => boolean;
54
+ readonly nonCapturing?: boolean;
55
+ /** A1-owned input scheduling declaration; omitted extension overlays fail closed. */
56
+ readonly inputCoordination?: Exclude<PiTuiInputSurfaceKind, "editor">;
57
+ }
58
+ export interface PiTuiOverlayUnfocusOptions {
59
+ readonly target: PiTuiComponentPort | null;
60
+ }
61
+ export interface PiTuiOverlayHandle {
62
+ hide(): void;
63
+ setHidden(hidden: boolean): void;
64
+ isHidden(): boolean;
65
+ focus(): void;
66
+ unfocus(options?: PiTuiOverlayUnfocusOptions): void;
67
+ isFocused(): boolean;
68
+ /** The most recently rendered terminal-relative rectangle of a visible overlay. */
69
+ getBounds(): {
70
+ readonly row: number;
71
+ readonly col: number;
72
+ readonly width: number;
73
+ readonly height: number;
74
+ } | undefined;
75
+ }
76
+ export interface PiTuiInputListenerResult {
77
+ readonly consume?: boolean;
78
+ readonly data?: string;
79
+ }
80
+ export type PiTuiInputListener = (data: string) => PiTuiInputListenerResult | undefined;
81
+ /** Runs at the terminal bridge before Pi TUI receives physical input. */
82
+ export type PiTuiPreInputListener = PiTuiInputListener;
83
+ export interface PiTuiLayoutEntry {
84
+ readonly node: PiTuiLayoutNode;
85
+ readonly basis?: number | "auto";
86
+ readonly grow?: number;
87
+ readonly shrink?: number;
88
+ readonly minSize?: number;
89
+ readonly maxSize?: number;
90
+ readonly visible?: (viewport: PiTuiViewport) => boolean;
91
+ }
92
+ export type PiTuiLayoutNode = {
93
+ readonly type: "component";
94
+ readonly component: PiTuiComponentPort;
95
+ } | {
96
+ readonly type: "stack";
97
+ readonly direction: "vertical" | "horizontal";
98
+ readonly children: readonly PiTuiLayoutEntry[];
99
+ readonly gap?: number;
100
+ readonly align?: "stretch" | "start" | "center" | "end";
101
+ } | {
102
+ readonly type: "scroll";
103
+ readonly id: string;
104
+ readonly child: PiTuiLayoutNode;
105
+ readonly follow?: "none" | "end";
106
+ readonly primary?: boolean;
107
+ readonly overscroll?: "chain" | "contain";
108
+ readonly scrollbar?: "hidden" | "auto" | "always";
109
+ /** Styles the scrollbar track; the pinned runtime draws it as foreground text. */
110
+ readonly scrollbarTrackStyle?: (text: string) => string;
111
+ /** Styles the scrollbar thumb; the pinned runtime draws it as foreground text. */
112
+ readonly scrollbarThumbStyle?: (text: string) => string;
113
+ readonly scrollbarHideDelayMs?: number;
114
+ };
115
+ export type PiTuiInputDiagnosticsPhase = "receipt" | "semantic-start" | "semantic-end" | "composition-start" | "composition-end" | "write-start" | "write-end";
116
+ export interface PiTuiInputDiagnosticsEvent {
117
+ readonly phase: PiTuiInputDiagnosticsPhase;
118
+ readonly revision: number;
119
+ readonly atMs: number;
120
+ readonly pendingDepth: number;
121
+ readonly pendingPresentationDepth: 0 | 1;
122
+ readonly appliedRevision: number;
123
+ }
124
+ export interface PiTuiRuntimeAdapterOptions {
125
+ readonly root: PiTuiComponentPort;
126
+ /** Bare viewport only: painted overlays in back-to-front order; null while geometry is stale. */
127
+ readonly onOverlayGeometry?: (surfaces: readonly PiTuiPointerSurface[] | null) => void;
128
+ readonly mode?: "regular" | "fullscreen";
129
+ readonly layoutRoot?: PiTuiLayoutNode;
130
+ readonly terminal?: PiTuiTerminalPort;
131
+ /** A1-owned public-boundary decorator; comparison paths omit it. */
132
+ readonly decorateTerminal?: (terminal: PiTuiTerminalPort) => PiTuiTerminalPort;
133
+ /** Bare-custom-viewport scheduling policy; comparison paths omit it. */
134
+ readonly inputCoordination?: {
135
+ readonly classify: (data: string, focusedOverlay?: Exclude<PiTuiInputSurfaceKind, "editor">) => PiTuiInputCoordinationDecision;
136
+ readonly onReceipt?: () => void;
137
+ readonly scheduler?: PiTuiInputCoordinationScheduler;
138
+ };
139
+ /** Optional bounded evidence hook. Production composition omits it. */
140
+ readonly inputDiagnostics?: {
141
+ readonly onEvent: (event: PiTuiInputDiagnosticsEvent) => void;
142
+ readonly now?: () => number;
143
+ };
144
+ readonly hardwareCursor?: boolean;
145
+ readonly mouse?: boolean;
146
+ readonly wheelScrollLines?: number;
147
+ readonly openUrl?: (url: string) => void;
148
+ readonly onRightClickPaste?: () => void;
149
+ readonly logDirectory?: string;
150
+ }
151
+ export interface PiTuiStopOptions {
152
+ readonly preserveScreen?: boolean;
153
+ readonly drainInput?: boolean;
154
+ readonly drainMaxMs?: number;
155
+ readonly drainIdleMs?: number;
156
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,88 @@
1
+ import type { PiTuiTerminalPort } from "./contracts.js";
2
+ export declare const PINNED_PI_TUI_DAMAGE_GRAMMAR = "@earendil-works/pi-tui@0.85.1:tui-alt-screen-one-write-v1";
3
+ export interface PiTuiDamageFrameDescriptor {
4
+ readonly frameId: number;
5
+ readonly width: number;
6
+ readonly height: number;
7
+ readonly transcript: {
8
+ readonly rowStart: number;
9
+ readonly rowEnd: number;
10
+ } | null;
11
+ readonly dock: {
12
+ readonly rowStart: number;
13
+ readonly rowEnd: number;
14
+ } | null;
15
+ /**
16
+ * Visible rows owned by the block that is currently streaming. A live block repaints
17
+ * every row it owns when it reflows, so the allowed damage follows the declared tail
18
+ * instead of assuming a one-row tail.
19
+ */
20
+ readonly liveTailRows?: number;
21
+ readonly verticalShiftRows: number;
22
+ readonly safeVerticalShift: boolean;
23
+ readonly cause: string;
24
+ }
25
+ export interface PiTuiDamageFrameSafety {
26
+ readonly overlayActive: boolean;
27
+ readonly selectionActive: boolean;
28
+ readonly replacementSurfaceActive: boolean;
29
+ }
30
+ export type PiTuiDamageDecisionReason = "transformed" | "suppressed-redundant-clear" | "hyperlink-cleanup" | "pending-hyperlink-cleanup" | "not-armed" | "unsafe-frame" | "stale-frame" | "unsupported-region-scroll" | "geometry-mismatch" | "grammar-mismatch" | "unsafe-terminal-content" | "incomplete-prior-frame" | "excessive-real-damage";
31
+ export interface PiTuiDamageDecision {
32
+ readonly frameId: number | null;
33
+ readonly transformed: boolean;
34
+ readonly reason: PiTuiDamageDecisionReason;
35
+ readonly shiftRows: number;
36
+ readonly paintedRows: readonly number[];
37
+ }
38
+ export interface DamageAwareTerminalOptions {
39
+ readonly regionalScroll: boolean;
40
+ /** The shell supplies visible-row analysis; the terminal layer owns no UI parser. */
41
+ readonly inspectHyperlinks: (content: string) => {
42
+ readonly ranges: readonly unknown[];
43
+ readonly hasExplicitLink: boolean;
44
+ readonly signature: string;
45
+ readonly replaySafe: boolean;
46
+ readonly width: number;
47
+ };
48
+ readonly onResize?: () => void;
49
+ readonly onHyperlinkCleanupRequired?: () => void;
50
+ }
51
+ /**
52
+ * A fail-closed adapter for one pinned Pi fullscreen write grammar. Semantic
53
+ * viewport metadata authorizes a shift; bytes are inspected only to validate
54
+ * and preserve Pi's complete row paint and cursor syntax.
55
+ */
56
+ export declare class DamageAwareTerminalAdapter implements PiTuiTerminalPort {
57
+ #private;
58
+ readonly inner: PiTuiTerminalPort;
59
+ readonly options: DamageAwareTerminalOptions;
60
+ constructor(inner: PiTuiTerminalPort, options: DamageAwareTerminalOptions);
61
+ get columns(): number;
62
+ get rows(): number;
63
+ get kittyProtocolActive(): boolean;
64
+ get lastDecision(): PiTuiDamageDecision;
65
+ get hyperlinkCleanupPending(): boolean;
66
+ /**
67
+ * The rows as last forwarded to the terminal, top to bottom, with styling
68
+ * intact. A row the adapter has not seen since its last invalidation is empty.
69
+ * The quit outro animates over this snapshot because it is what the terminal
70
+ * shows, not what a fresh render would produce.
71
+ */
72
+ presentedRows(): readonly string[];
73
+ /** Latches the former link rows, including rows whose replacement contains no link. */
74
+ requestHyperlinkCleanup(rows?: readonly number[]): void;
75
+ arm(descriptor: PiTuiDamageFrameDescriptor, safety: PiTuiDamageFrameSafety): void;
76
+ start(onInput: (data: string) => void, onResize: () => void): void;
77
+ stop(): void;
78
+ drainInput(maxMs?: number, idleMs?: number): Promise<void>;
79
+ write(data: string): void;
80
+ moveBy(lines: number): void;
81
+ hideCursor(): void;
82
+ showCursor(): void;
83
+ clearLine(): void;
84
+ clearFromCursor(): void;
85
+ clearScreen(): void;
86
+ setTitle(title: string): void;
87
+ setProgress(active: boolean): void;
88
+ }
@@ -0,0 +1,433 @@
1
+ export const PINNED_PI_TUI_DAMAGE_GRAMMAR = "@earendil-works/pi-tui@0.85.1:tui-alt-screen-one-write-v1";
2
+ const BEGIN_SYNCHRONIZED_OUTPUT = "\u001b[?2026h";
3
+ const END_SYNCHRONIZED_OUTPUT = "\u001b[?2026l";
4
+ const ROW_MARKER = /\u001b\[(\d+);1H\u001b\[2K/gu;
5
+ const CURSOR_SUFFIX = /(?:\u001b\[(\d+);(\d+)H)?\u001b\[\?25[hl]\u001b\[\?2026l$/u;
6
+ const OUT_OF_BAND = /^(?:\u001b\](?:0|2|9|52);[^\u0007\u001b]*(?:\u0007|\u001b\\)|\u001b\[\?25[hl])+$/u;
7
+ /**
8
+ * A fail-closed adapter for one pinned Pi fullscreen write grammar. Semantic
9
+ * viewport metadata authorizes a shift; bytes are inspected only to validate
10
+ * and preserve Pi's complete row paint and cursor syntax.
11
+ */
12
+ export class DamageAwareTerminalAdapter {
13
+ #rows = new Map();
14
+ #links = new Map();
15
+ #cleanupRevision = 0;
16
+ #cleanupRows = new Set();
17
+ #cleanupNeedsCompleteFrame = false;
18
+ #cleanedRevision = 0;
19
+ #recoveryRevision = 0;
20
+ #epoch = 0;
21
+ #armed;
22
+ #lastConsumedFrameId = 0;
23
+ #cacheWidth = 0;
24
+ #cacheHeight = 0;
25
+ #decision = {
26
+ frameId: null,
27
+ transformed: false,
28
+ reason: "not-armed",
29
+ shiftRows: 0,
30
+ paintedRows: [],
31
+ };
32
+ inner;
33
+ options;
34
+ constructor(inner, options) { this.inner = inner; this.options = options; }
35
+ get columns() { return this.inner.columns; }
36
+ get rows() { return this.inner.rows; }
37
+ get kittyProtocolActive() { return this.inner.kittyProtocolActive; }
38
+ get lastDecision() { return this.#decision; }
39
+ get hyperlinkCleanupPending() { return this.#cleanupRevision > this.#cleanedRevision; }
40
+ /**
41
+ * The rows as last forwarded to the terminal, top to bottom, with styling
42
+ * intact. A row the adapter has not seen since its last invalidation is empty.
43
+ * The quit outro animates over this snapshot because it is what the terminal
44
+ * shows, not what a fresh render would produce.
45
+ */
46
+ presentedRows() {
47
+ const presented = [];
48
+ for (let row = 1; row <= this.rows; row += 1)
49
+ presented.push(this.#rows.get(row) ?? "");
50
+ return presented;
51
+ }
52
+ /** Latches the former link rows, including rows whose replacement contains no link. */
53
+ requestHyperlinkCleanup(rows) {
54
+ this.#cleanupRevision += 1;
55
+ if (rows !== undefined) {
56
+ for (const row of rows) {
57
+ if (Number.isSafeInteger(row) && row >= 1 && row <= this.rows)
58
+ this.#cleanupRows.add(row);
59
+ }
60
+ }
61
+ else {
62
+ // Invariant: no known pointer is not proof of no host-hover decoration. Unscoped
63
+ // removal/invalidation repairs every previously linked row, not every screen row.
64
+ for (const [row, state] of this.#links)
65
+ if (state.ranges.length > 0)
66
+ this.#cleanupRows.add(row);
67
+ }
68
+ }
69
+ arm(descriptor, safety) {
70
+ this.#armed = { descriptor, safety };
71
+ }
72
+ start(onInput, onResize) {
73
+ this.inner.start(onInput, () => {
74
+ this.#epoch += 1;
75
+ this.#recoveryRevision = 0;
76
+ this.#invalidatePresentation();
77
+ this.options.onResize?.();
78
+ onResize();
79
+ });
80
+ }
81
+ stop() {
82
+ this.#epoch += 1;
83
+ this.#armed = undefined;
84
+ this.#cleanupRevision = this.#cleanedRevision = this.#recoveryRevision = 0;
85
+ this.#cleanupRows.clear();
86
+ this.#cleanupNeedsCompleteFrame = false;
87
+ this.#lastConsumedFrameId = 0;
88
+ this.#invalidateRows();
89
+ this.inner.stop();
90
+ }
91
+ drainInput(maxMs, idleMs) { return this.inner.drainInput(maxMs, idleMs); }
92
+ write(data) {
93
+ const armed = this.#armed;
94
+ this.#armed = undefined;
95
+ const parsed = parsePinnedFullscreenWrite(data);
96
+ if (armed !== undefined && armed.descriptor.frameId <= this.#lastConsumedFrameId) {
97
+ // Concurrency: a recognized obsolete frame must never repaint newer cells,
98
+ // acknowledge cleanup, or become the reference for a subsequent differential.
99
+ this.#decision = this.#decide(armed, parsed);
100
+ return;
101
+ }
102
+ const sameGeometry = this.#cacheWidth === this.columns && this.#cacheHeight === this.rows;
103
+ const unknownPaint = parsed === null && !OUT_OF_BAND.test(data);
104
+ if (!sameGeometry || unknownPaint)
105
+ this.#invalidatePresentation();
106
+ if (unknownPaint && !this.hyperlinkCleanupPending && this.options.inspectHyperlinks(data).ranges.length > 0) {
107
+ this.requestHyperlinkCleanup();
108
+ this.#cleanupNeedsCompleteFrame = true;
109
+ }
110
+ // Invariant: a deliberate same-geometry reset discards presented link state. Ordinary streamed
111
+ // row changes are not cleanup requests: candidate-looking text is not terminal state.
112
+ if (sameGeometry && parsed?.structuralPrefix === "\u001b[2J"
113
+ && hasCompleteScreenRows(parsed.rows, this.rows) && !this.hyperlinkCleanupPending
114
+ && !this.#hasSameHyperlinkState(parsed.rows))
115
+ this.requestHyperlinkCleanup();
116
+ const decision = this.#decide(armed, parsed);
117
+ const coveredRevision = this.#cleanupRevision;
118
+ const cleanup = this.hyperlinkCleanupPending && parsed !== null
119
+ && (armed === undefined || (armed.descriptor.width === this.columns && armed.descriptor.height === this.rows))
120
+ ? this.#boundedCleanupFrame(parsed) : null;
121
+ const epoch = this.#epoch;
122
+ let output = data;
123
+ if (cleanup !== null) {
124
+ output = buildCompleteWrite(cleanup);
125
+ this.#decision = {
126
+ frameId: armed?.descriptor.frameId ?? null, transformed: output !== data,
127
+ reason: "hyperlink-cleanup", shiftRows: 0, paintedRows: cleanup.rows.map(row => row.row),
128
+ };
129
+ }
130
+ else {
131
+ this.#decision = decision;
132
+ if (decision.reason === "suppressed-redundant-clear" && parsed !== null) {
133
+ output = buildClearlessWrite(parsed, this.#rows);
134
+ }
135
+ else if (decision.transformed && armed !== undefined && parsed !== null) {
136
+ output = buildDamageWrite(parsed, armed.descriptor, new Set(decision.paintedRows), this.#rows);
137
+ }
138
+ }
139
+ this.inner.write(output);
140
+ if (epoch !== this.#epoch
141
+ || (armed !== undefined && this.#lastConsumedFrameId !== armed.descriptor.frameId))
142
+ return;
143
+ // Invariant: cache invalidation follows forwarded bytes, not a suppressed clear.
144
+ // A bounded cleanup preserves prior rows and publishes all changed or invalidated rows.
145
+ this.#rememberFrame(armed?.descriptor, cleanup ?? parsed, output);
146
+ if (cleanup !== null) {
147
+ this.#cleanedRevision = Math.max(this.#cleanedRevision, coveredRevision);
148
+ if (this.#cleanupRevision === coveredRevision) {
149
+ this.#cleanupRows.clear();
150
+ this.#cleanupNeedsCompleteFrame = false;
151
+ }
152
+ }
153
+ this.#scheduleCleanupRecovery();
154
+ }
155
+ moveBy(lines) { this.inner.moveBy(lines); }
156
+ hideCursor() { this.inner.hideCursor(); }
157
+ showCursor() { this.inner.showCursor(); }
158
+ clearLine() { this.#invalidatePresentation(); this.inner.clearLine(); }
159
+ clearFromCursor() { this.#invalidatePresentation(); this.inner.clearFromCursor(); }
160
+ clearScreen() { this.#invalidatePresentation(); this.inner.clearScreen(); }
161
+ setTitle(title) { this.inner.setTitle(title); }
162
+ setProgress(active) { this.inner.setProgress(active); }
163
+ #decide(armed, parsed) {
164
+ if (armed === undefined) {
165
+ return { frameId: null, transformed: false, reason: "not-armed", shiftRows: 0, paintedRows: [] };
166
+ }
167
+ const descriptor = armed.descriptor;
168
+ const base = {
169
+ frameId: descriptor.frameId,
170
+ transformed: false,
171
+ shiftRows: descriptor.verticalShiftRows,
172
+ paintedRows: [],
173
+ };
174
+ if (descriptor.frameId <= this.#lastConsumedFrameId)
175
+ return { ...base, reason: "stale-frame" };
176
+ this.#lastConsumedFrameId = descriptor.frameId;
177
+ if (this.hyperlinkCleanupPending)
178
+ return { ...base, reason: "pending-hyperlink-cleanup" };
179
+ if (parsed !== null && parsed.structuralPrefix === "\u001b[2J"
180
+ && this.#cacheWidth === descriptor.width && this.#cacheHeight === descriptor.height
181
+ && descriptor.width === this.columns && descriptor.height === this.rows
182
+ && hasCompleteScreenRows(parsed.rows, descriptor.height) && this.#hasSameHyperlinkState(parsed.rows)) {
183
+ return {
184
+ frameId: descriptor.frameId,
185
+ transformed: true,
186
+ reason: "suppressed-redundant-clear",
187
+ shiftRows: 0,
188
+ paintedRows: parsed.rows.map(row => row.row),
189
+ };
190
+ }
191
+ if (!descriptor.safeVerticalShift || armed.safety.overlayActive || armed.safety.selectionActive
192
+ || armed.safety.replacementSurfaceActive || descriptor.transcript === null) {
193
+ return { ...base, reason: "unsafe-frame" };
194
+ }
195
+ if (!this.options.regionalScroll)
196
+ return { ...base, reason: "unsupported-region-scroll" };
197
+ if (descriptor.width !== this.columns || descriptor.height !== this.rows
198
+ || descriptor.verticalShiftRows < 1
199
+ || descriptor.verticalShiftRows >= descriptor.transcript.rowEnd - descriptor.transcript.rowStart + 1) {
200
+ return { ...base, reason: "geometry-mismatch" };
201
+ }
202
+ if (parsed === null)
203
+ return { ...base, reason: "grammar-mismatch" };
204
+ if (parsed.structuralPrefix.length > 0
205
+ || hasUnsafeTerminalContent(parsed, this.options.inspectHyperlinks, descriptor.transcript)
206
+ || this.#hasExplicitLinkRisk(descriptor.transcript) || this.#hasUnsafeRows(descriptor.transcript)) {
207
+ return { ...base, reason: "unsafe-terminal-content" };
208
+ }
209
+ const { rowStart, rowEnd } = descriptor.transcript;
210
+ const desired = new Map(parsed.rows.map(row => [row.row, row.content]));
211
+ for (let row = rowStart; row <= rowEnd; row += 1) {
212
+ if (!desired.has(row) && !this.#rows.has(row))
213
+ return { ...base, reason: "incomplete-prior-frame" };
214
+ if (row <= rowEnd - descriptor.verticalShiftRows && !this.#rows.has(row + descriptor.verticalShiftRows)) {
215
+ return { ...base, reason: "incomplete-prior-frame" };
216
+ }
217
+ }
218
+ for (const row of parsed.rows) {
219
+ const inTranscript = row.row >= rowStart && row.row <= rowEnd;
220
+ const inDock = descriptor.dock !== null && row.row >= descriptor.dock.rowStart && row.row <= descriptor.dock.rowEnd;
221
+ if (!inTranscript && !inDock)
222
+ return { ...base, reason: "grammar-mismatch" };
223
+ }
224
+ const painted = new Set();
225
+ for (let row = rowStart; row <= rowEnd; row += 1) {
226
+ const source = row + descriptor.verticalShiftRows;
227
+ const desiredContent = desired.get(row) ?? this.#rows.get(row);
228
+ if (source > rowEnd || desiredContent !== this.#rows.get(source))
229
+ painted.add(row);
230
+ }
231
+ for (const row of parsed.rows) {
232
+ if (descriptor.dock !== null && row.row >= descriptor.dock.rowStart && row.row <= descriptor.dock.rowEnd)
233
+ painted.add(row.row);
234
+ }
235
+ // Rationale: a followed frame may repaint the live tail it declares, expose the shifted
236
+ // suffix, and restyle one sticky boundary row. A frame that declares no tail keeps the
237
+ // historical one-row allowance. Anything beyond that reaches settled rows and fails closed.
238
+ const liveTailRows = Math.max(1, descriptor.liveTailRows ?? 1);
239
+ if (painted.size > descriptor.verticalShiftRows + liveTailRows + 1 + countDockRows(parsed.rows, descriptor.dock)) {
240
+ return { ...base, reason: "excessive-real-damage" };
241
+ }
242
+ return {
243
+ frameId: descriptor.frameId,
244
+ transformed: true,
245
+ reason: "transformed",
246
+ shiftRows: descriptor.verticalShiftRows,
247
+ paintedRows: [...painted].sort((left, right) => left - right),
248
+ };
249
+ }
250
+ #rememberFrame(descriptor, parsed, raw) {
251
+ if (raw.includes("\u001b[2J") || raw.includes("\u001b[?1049") || raw.includes("\u001b_G") || raw.includes("\u001bPq")) {
252
+ this.#invalidateRows();
253
+ }
254
+ if (parsed === null)
255
+ return;
256
+ const width = descriptor?.width ?? this.columns;
257
+ const height = descriptor?.height ?? this.rows;
258
+ if (width !== this.#cacheWidth || height !== this.#cacheHeight) {
259
+ this.#invalidateRows();
260
+ this.#cacheWidth = width;
261
+ this.#cacheHeight = height;
262
+ }
263
+ if (parsed.rows.some(row => row.row > this.rows)) {
264
+ this.#invalidatePresentation();
265
+ return;
266
+ }
267
+ for (const row of parsed.rows) {
268
+ if (this.#rows.get(row.row) !== row.content)
269
+ this.#links.set(row.row, this.options.inspectHyperlinks(row.content));
270
+ this.#rows.set(row.row, row.content);
271
+ }
272
+ }
273
+ #hasSameHyperlinkState(rows) {
274
+ return rows.every(row => {
275
+ const previous = this.#links.get(row.row);
276
+ const next = row.content === this.#rows.get(row.row) ? previous : this.options.inspectHyperlinks(row.content);
277
+ return next?.replaySafe === true && (previous?.signature ?? "") === next.signature;
278
+ });
279
+ }
280
+ #hasExplicitLinkRisk(region) {
281
+ for (const [row, state] of this.#links) {
282
+ if (row >= region.rowStart && row <= region.rowEnd && state.hasExplicitLink)
283
+ return true;
284
+ }
285
+ return false;
286
+ }
287
+ #hasUnsafeRows(region) {
288
+ for (const [row, state] of this.#links) {
289
+ if (row >= region.rowStart && row <= region.rowEnd && !state.replaySafe)
290
+ return true;
291
+ }
292
+ return false;
293
+ }
294
+ #boundedCleanupFrame(parsed) {
295
+ const sameGeometry = this.#cacheWidth === this.columns && this.#cacheHeight === this.rows;
296
+ const complete = hasCompleteScreenRows(parsed.rows, this.rows);
297
+ if (this.#cleanupNeedsCompleteFrame && !complete)
298
+ return null;
299
+ const suppressReset = sameGeometry && !this.#cleanupNeedsCompleteFrame
300
+ && parsed.structuralPrefix === "\u001b[2J" && complete;
301
+ const structuralPrefix = suppressReset ? "" : parsed.structuralPrefix;
302
+ const desired = structuralPrefix.length === 0 ? new Map(this.#rows) : new Map();
303
+ const dirty = new Set([...this.#cleanupRows].filter(row => row <= this.rows));
304
+ for (const row of parsed.rows) {
305
+ if (row.row > this.rows)
306
+ return null;
307
+ desired.set(row.row, row.content);
308
+ if (structuralPrefix.length > 0 || this.#cleanupNeedsCompleteFrame
309
+ || this.#rows.get(row.row) !== row.content)
310
+ dirty.add(row.row);
311
+ }
312
+ // Invariant: validate all incoming rows before dropping an apparent redundant reset. Unknown
313
+ // content must pass through unchanged, never become a partially transformed frame.
314
+ for (const row of parsed.rows) {
315
+ const state = row.content === this.#rows.get(row.row) ? this.#links.get(row.row) : this.options.inspectHyperlinks(row.content);
316
+ if (state?.replaySafe !== true || state.width > this.columns)
317
+ return null;
318
+ }
319
+ const rows = [];
320
+ for (const row of [...dirty].sort((left, right) => left - right)) {
321
+ const content = desired.get(row);
322
+ if (content === undefined)
323
+ return null;
324
+ const state = content === this.#rows.get(row) ? this.#links.get(row) : this.options.inspectHyperlinks(content);
325
+ if (state?.replaySafe !== true || state.width > this.columns)
326
+ return null;
327
+ rows.push({ row, content, segment: `\u001b[${row};1H\u001b[2K${content}` });
328
+ }
329
+ // Invariant: only preserve a structural clear supplied by Pi; cleanup never manufactures one.
330
+ return { structuralPrefix, rows, cursorSuffix: parsed.cursorSuffix };
331
+ }
332
+ #scheduleCleanupRecovery() {
333
+ if (!this.hyperlinkCleanupPending || this.#recoveryRevision === this.#cleanupRevision
334
+ || this.options.onHyperlinkCleanupRequired === undefined)
335
+ return;
336
+ this.#recoveryRevision = this.#cleanupRevision;
337
+ const epoch = this.#epoch;
338
+ // Concurrency: force only after Pi finishes updating its previous-screen
339
+ // state. One recovery per revision avoids loops on unsupported image frames.
340
+ queueMicrotask(() => {
341
+ if (epoch === this.#epoch && this.hyperlinkCleanupPending)
342
+ this.options.onHyperlinkCleanupRequired?.();
343
+ });
344
+ }
345
+ #invalidatePresentation() {
346
+ if ([...this.#links.values()].some(state => state.ranges.length > 0) && !this.hyperlinkCleanupPending) {
347
+ this.requestHyperlinkCleanup();
348
+ }
349
+ // Invariant: after unknown paint or geometry loss, exact former row locations are no longer
350
+ // authoritative. Wait for a complete safe frame instead of guessing a partial repair.
351
+ if (this.hyperlinkCleanupPending)
352
+ this.#cleanupNeedsCompleteFrame = true;
353
+ this.#invalidateRows();
354
+ }
355
+ #invalidateRows() {
356
+ this.#rows.clear();
357
+ this.#links.clear();
358
+ this.#cacheWidth = 0;
359
+ this.#cacheHeight = 0;
360
+ }
361
+ }
362
+ function parsePinnedFullscreenWrite(data) {
363
+ if (!data.startsWith(BEGIN_SYNCHRONIZED_OUTPUT) || !data.endsWith(END_SYNCHRONIZED_OUTPUT))
364
+ return null;
365
+ const suffix = data.match(CURSOR_SUFFIX);
366
+ if (suffix?.index === undefined)
367
+ return null;
368
+ const body = data.slice(BEGIN_SYNCHRONIZED_OUTPUT.length, suffix.index);
369
+ const matches = [...body.matchAll(ROW_MARKER)];
370
+ if (matches.length === 0)
371
+ return body.length === 0
372
+ ? { structuralPrefix: "", rows: [], cursorSuffix: data.slice(suffix.index) } : null;
373
+ const structuralPrefix = body.slice(0, matches[0].index);
374
+ if (structuralPrefix !== "" && structuralPrefix !== "\u001b[2J")
375
+ return null;
376
+ const rows = [];
377
+ let previousRow = 0;
378
+ for (let index = 0; index < matches.length; index += 1) {
379
+ const match = matches[index];
380
+ const row = Number.parseInt(match[1], 10);
381
+ if (!Number.isSafeInteger(row) || row < 1 || row <= previousRow)
382
+ return null;
383
+ previousRow = row;
384
+ const start = match.index;
385
+ const contentStart = start + match[0].length;
386
+ const end = matches[index + 1]?.index ?? body.length;
387
+ const content = body.slice(contentStart, end);
388
+ rows.push({ row, content, segment: body.slice(start, end) });
389
+ }
390
+ return { structuralPrefix, rows, cursorSuffix: data.slice(suffix.index) };
391
+ }
392
+ function hasUnsafeTerminalContent(parsed, inspect, linkRegion) {
393
+ const data = parsed.rows.map(row => row.content).join("");
394
+ if (data.includes("\u001b_G") || data.includes("\u001bPq") || data.includes("\u001b[2J"))
395
+ return true;
396
+ return parsed.rows.some(row => {
397
+ if (linkRegion !== undefined && (row.row < linkRegion.rowStart || row.row > linkRegion.rowEnd))
398
+ return false;
399
+ const state = inspect(row.content);
400
+ return !state.replaySafe || state.hasExplicitLink;
401
+ });
402
+ }
403
+ function buildDamageWrite(parsed, descriptor, paintedRows, previousRows) {
404
+ const transcript = descriptor.transcript;
405
+ const regionShift = `\u001b[${transcript.rowStart};${transcript.rowEnd}r`
406
+ + `\u001b[${transcript.rowStart};1H`
407
+ + `\u001b[${descriptor.verticalShiftRows}S`
408
+ + "\u001b[r";
409
+ const parsedRows = new Map(parsed.rows.map(row => [row.row, row]));
410
+ const rowPaint = [...paintedRows].sort((left, right) => left - right).map(row => {
411
+ const parsedRow = parsedRows.get(row);
412
+ if (parsedRow !== undefined)
413
+ return parsedRow.segment;
414
+ return `\u001b[${row};1H\u001b[2K${previousRows.get(row) ?? ""}`;
415
+ }).join("");
416
+ return `${BEGIN_SYNCHRONIZED_OUTPUT}${regionShift}${rowPaint}${parsed.cursorSuffix}`;
417
+ }
418
+ /** Keeps required cleanup rows and current content in one synchronized transaction. */
419
+ function buildCompleteWrite(parsed) {
420
+ return `${BEGIN_SYNCHRONIZED_OUTPUT}${parsed.structuralPrefix}${parsed.rows.map(row => row.segment).join("")}${parsed.cursorSuffix}`;
421
+ }
422
+ function buildClearlessWrite(parsed, previousRows) {
423
+ const changed = parsed.rows.filter(row => previousRows.get(row.row) !== row.content);
424
+ return `${BEGIN_SYNCHRONIZED_OUTPUT}${changed.map(row => row.segment).join("")}${parsed.cursorSuffix}`;
425
+ }
426
+ function hasCompleteScreenRows(rows, height) {
427
+ return rows.length === height && rows.every((row, index) => row.row === index + 1);
428
+ }
429
+ function countDockRows(rows, dock) {
430
+ if (dock === null)
431
+ return 0;
432
+ return rows.filter(row => row.row >= dock.rowStart && row.row <= dock.rowEnd).length;
433
+ }