@timurproko/a1 0.1.8-dev.ece8cef → 0.2.1-dev.590

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 (922) hide show
  1. package/README.md +104 -58
  2. package/bin/activate.js +8 -0
  3. package/bin/cli.js +39 -13
  4. package/bin/guardian.js +21 -6
  5. package/bin/module-identity.js +76 -69
  6. package/bin/module-resolver.js +138 -0
  7. package/bin/pinned-pi-public.d.ts +3 -0
  8. package/bin/pinned-pi-public.js +93 -0
  9. package/bin/release-cleanup.js +8 -0
  10. package/bin/supervisor.js +2 -2
  11. package/bin/sync-pi-tui-proxy.js +7 -0
  12. package/bin/ui.js +67 -22
  13. package/bin/update-recovery.js +365 -0
  14. package/bin/warmup.js +28 -0
  15. package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
  16. package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
  17. package/dist/app/session-shell/clipboard-image.d.ts +11 -0
  18. package/dist/app/session-shell/clipboard-image.js +38 -0
  19. package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
  20. package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
  21. package/dist/app/session-shell/helper-pool.d.ts +33 -0
  22. package/dist/app/session-shell/helper-pool.js +98 -0
  23. package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
  24. package/dist/app/session-shell/image-preparation-client.js +145 -0
  25. package/dist/app/session-shell/image-preparation.d.ts +18 -0
  26. package/dist/app/session-shell/image-preparation.js +126 -0
  27. package/dist/app/session-shell/image-source.d.ts +13 -0
  28. package/dist/app/session-shell/image-source.js +171 -0
  29. package/dist/app/session-shell/image-worker.d.ts +17 -0
  30. package/dist/app/session-shell/image-worker.js +23 -0
  31. package/dist/app/session-shell/index.d.ts +7 -0
  32. package/dist/app/session-shell/index.js +4 -0
  33. package/dist/app/session-shell/paste-executor.d.ts +18 -0
  34. package/dist/app/session-shell/paste-executor.js +253 -0
  35. package/dist/app/session-shell/paste-helper.js +173 -0
  36. package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
  37. package/dist/app/session-shell/paste-preparation-client.js +170 -0
  38. package/dist/app/session-shell/paste-protocol.d.ts +78 -0
  39. package/dist/app/session-shell/paste-protocol.js +18 -0
  40. package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
  41. package/dist/app/session-shell/paste-text-preparation.js +134 -0
  42. package/dist/app/session-shell/paste-text-worker.js +12 -0
  43. package/dist/app/session-shell/paste-types.d.ts +17 -0
  44. package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
  45. package/dist/app/session-shell/path-chip-presentation.js +24 -0
  46. package/dist/app/session-shell/prompt-chips.d.ts +76 -0
  47. package/dist/app/session-shell/prompt-chips.js +499 -0
  48. package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
  49. package/dist/app/session-shell/prompt-history-controller.js +170 -0
  50. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +37 -0
  51. package/dist/app/session-shell/prompt-suggestion-controller.js +219 -0
  52. package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
  53. package/dist/app/session-shell/quit-outro-effects.js +242 -0
  54. package/dist/app/session-shell/quit-outro.d.ts +38 -0
  55. package/dist/app/session-shell/quit-outro.js +98 -0
  56. package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
  57. package/dist/app/session-shell/response-copy-coordinator.js +187 -0
  58. package/dist/app/session-shell/response-copy-helper.js +122 -0
  59. package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
  60. package/dist/app/session-shell/response-copy-protocol.js +5 -0
  61. package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
  62. package/dist/app/session-shell/response-copy-transport.js +217 -0
  63. package/dist/app/session-shell/session-shell-root.d.ts +278 -0
  64. package/dist/app/session-shell/session-shell-root.js +1442 -0
  65. package/dist/app/session-shell/session-shell.d.ts +66 -0
  66. package/dist/app/session-shell/session-shell.js +2151 -0
  67. package/dist/app/session-shell/session-viewport-controller.d.ts +62 -0
  68. package/dist/app/session-shell/session-viewport-controller.js +623 -0
  69. package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
  70. package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
  71. package/dist/app/session-shell/system-clipboard.d.ts +20 -0
  72. package/dist/app/session-shell/system-clipboard.js +159 -0
  73. package/dist/app/session-shell/text-paste.d.ts +5 -0
  74. package/dist/app/session-shell/text-paste.js +16 -0
  75. package/dist/cli/capabilities.d.ts +6 -0
  76. package/dist/cli/capabilities.js +7 -0
  77. package/dist/cli/dispatch.d.ts +53 -0
  78. package/dist/cli/dispatch.js +287 -0
  79. package/dist/cli/index.d.ts +8 -0
  80. package/dist/cli/index.js +4 -0
  81. package/dist/cli/package-messages.d.ts +27 -0
  82. package/dist/cli/package-messages.js +83 -0
  83. package/dist/cli/packages.d.ts +32 -0
  84. package/dist/cli/packages.js +81 -0
  85. package/dist/cli/session-context.d.ts +9 -0
  86. package/dist/cli/session-context.js +29 -0
  87. package/dist/cli/version-stats.d.ts +22 -0
  88. package/dist/cli/version-stats.js +112 -0
  89. package/dist/composition/index.d.ts +2 -0
  90. package/dist/composition/index.js +2 -0
  91. package/dist/composition/owned-ui.d.ts +37 -0
  92. package/dist/composition/owned-ui.js +159 -0
  93. package/dist/composition/settings-route-host.d.ts +16 -0
  94. package/dist/composition/settings-route-host.js +141 -0
  95. package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
  96. package/dist/contracts/agent-engine/domain-validation.js +107 -0
  97. package/dist/contracts/agent-engine/domain.d.ts +138 -0
  98. package/dist/contracts/agent-engine/index.d.ts +11 -0
  99. package/dist/contracts/agent-engine/index.js +6 -0
  100. package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
  101. package/dist/contracts/agent-engine/ports.js +1 -0
  102. package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
  103. package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
  104. package/dist/contracts/owned-ui/image-attachments.js +67 -0
  105. package/dist/contracts/owned-ui/index.d.ts +14 -0
  106. package/dist/contracts/owned-ui/index.js +9 -0
  107. package/dist/contracts/owned-ui/model.d.ts +383 -0
  108. package/dist/contracts/owned-ui/prompt-chips.d.ts +15 -0
  109. package/dist/contracts/owned-ui/prompt-chips.js +59 -0
  110. package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
  111. package/dist/contracts/owned-ui/prompt-history.js +23 -0
  112. package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
  113. package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
  114. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
  115. package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
  116. package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
  117. package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
  118. package/dist/contracts/owned-ui/validation.d.ts +15 -0
  119. package/dist/contracts/owned-ui/validation.js +554 -0
  120. package/dist/contracts/presentation/index.d.ts +117 -0
  121. package/dist/contracts/presentation/index.js +68 -0
  122. package/dist/features/launch/development-launch.js +36 -0
  123. package/dist/features/launch/index.d.ts +14 -0
  124. package/dist/features/launch/index.js +7 -0
  125. package/dist/features/launch/intent.d.ts +12 -0
  126. package/dist/features/launch/intent.js +8 -0
  127. package/dist/features/launch/prepare-launch.d.ts +11 -0
  128. package/dist/features/launch/prepare-launch.js +14 -0
  129. package/dist/features/launch/profile-paths.d.ts +16 -0
  130. package/dist/features/launch/profile-paths.js +36 -0
  131. package/dist/features/launch/runtime-selection.d.ts +16 -0
  132. package/dist/features/launch/runtime-selection.js +13 -0
  133. package/dist/features/launch/session-context.d.ts +8 -0
  134. package/dist/features/launch/session-context.js +8 -0
  135. package/dist/features/owned-ui/index.d.ts +9 -0
  136. package/dist/features/owned-ui/index.js +6 -0
  137. package/dist/features/owned-ui/project-trust-dialog.d.ts +2 -0
  138. package/dist/features/owned-ui/project-trust-dialog.js +55 -0
  139. package/dist/features/owned-ui/project-trust-prompt.d.ts +23 -0
  140. package/dist/features/owned-ui/project-trust-prompt.js +149 -0
  141. package/dist/features/owned-ui/reference-routes.d.ts +6 -0
  142. package/dist/features/owned-ui/reference-routes.js +6 -0
  143. package/dist/features/owned-ui/reference-screen-app.d.ts +43 -0
  144. package/dist/features/owned-ui/reference-screen-app.js +279 -0
  145. package/dist/features/owned-ui/run.d.ts +17 -0
  146. package/dist/features/owned-ui/run.js +64 -0
  147. package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
  148. package/dist/features/owned-ui/session-fork-prompt.js +34 -0
  149. package/dist/features/owned-ui/settings-app.d.ts +21 -0
  150. package/dist/features/owned-ui/settings-app.js +851 -0
  151. package/dist/features/owned-ui/settings-route.d.ts +2 -0
  152. package/dist/features/owned-ui/settings-route.js +2 -0
  153. package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
  154. package/dist/features/prompt-history/image-sidecar.js +130 -0
  155. package/dist/features/prompt-history/index.d.ts +4 -0
  156. package/dist/features/prompt-history/index.js +3 -0
  157. package/dist/features/prompt-history/paths.d.ts +5 -0
  158. package/dist/features/prompt-history/paths.js +17 -0
  159. package/dist/features/prompt-history/service.d.ts +54 -0
  160. package/dist/features/prompt-history/service.js +425 -0
  161. package/dist/features/prompt-history/store.d.ts +16 -0
  162. package/dist/features/prompt-history/store.js +219 -0
  163. package/dist/features/prompt-history/worker.d.ts +9 -0
  164. package/dist/features/prompt-history/worker.js +45 -0
  165. package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
  166. package/dist/features/prompt-suggestions/diagnostics.js +82 -0
  167. package/dist/features/prompt-suggestions/index.d.ts +2 -0
  168. package/dist/features/prompt-suggestions/index.js +1 -0
  169. package/dist/foundation/launch-context/index.d.ts +59 -0
  170. package/dist/foundation/launch-context/index.js +136 -0
  171. package/dist/foundation/launch-guardian/index.d.ts +2 -0
  172. package/dist/foundation/launch-guardian/index.js +1 -0
  173. package/dist/foundation/launch-guardian/main.d.ts +33 -0
  174. package/dist/foundation/launch-guardian/main.js +179 -0
  175. package/dist/foundation/lifecycle/commands.js +1 -0
  176. package/dist/foundation/lifecycle/index.d.ts +13 -0
  177. package/dist/foundation/lifecycle/index.js +6 -0
  178. package/dist/foundation/lifecycle/model.d.ts +64 -0
  179. package/dist/foundation/lifecycle/model.js +40 -0
  180. package/dist/foundation/lifecycle/paths.d.ts +30 -0
  181. package/dist/foundation/lifecycle/paths.js +70 -0
  182. package/dist/foundation/lifecycle/session-repository-context.d.ts +18 -0
  183. package/dist/foundation/lifecycle/session-repository-context.js +173 -0
  184. package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
  185. package/dist/foundation/lifecycle/session-selection.js +39 -0
  186. package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
  187. package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
  188. package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
  189. package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
  190. package/dist/foundation/process-containment/index.d.ts +8 -0
  191. package/dist/foundation/process-containment/index.js +6 -0
  192. package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
  193. package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
  194. package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
  195. package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
  196. package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
  197. package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
  198. package/dist/foundation/protocol/client.d.ts +18 -0
  199. package/dist/foundation/protocol/client.js +130 -0
  200. package/dist/foundation/protocol/index.d.ts +3 -0
  201. package/dist/foundation/protocol/index.js +2 -0
  202. package/dist/foundation/protocol/messages.d.ts +90 -0
  203. package/dist/foundation/protocol/messages.js +100 -0
  204. package/dist/foundation/release/bootstrap.d.ts +51 -0
  205. package/dist/foundation/release/bootstrap.js +470 -0
  206. package/dist/foundation/release/cohort-state.d.ts +159 -0
  207. package/dist/foundation/release/cohort-state.js +507 -0
  208. package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
  209. package/dist/foundation/release/dependency-certification-retention.js +88 -0
  210. package/dist/foundation/release/dependency-certification.d.ts +24 -0
  211. package/dist/foundation/release/dependency-certification.js +266 -0
  212. package/dist/foundation/release/dependency-layer.d.ts +78 -0
  213. package/dist/foundation/release/dependency-layer.js +466 -0
  214. package/dist/foundation/release/endpoints.d.ts +24 -0
  215. package/dist/foundation/release/endpoints.js +134 -0
  216. package/dist/foundation/release/immutable-platform.d.ts +6 -0
  217. package/dist/foundation/release/immutable-platform.js +13 -0
  218. package/dist/foundation/release/index.d.ts +33 -0
  219. package/dist/foundation/release/index.js +18 -0
  220. package/dist/foundation/release/ordinary-launch-selection.d.ts +14 -0
  221. package/dist/foundation/release/ordinary-launch-selection.js +15 -0
  222. package/dist/foundation/release/release-gc.d.ts +71 -0
  223. package/dist/foundation/release/release-gc.js +764 -0
  224. package/dist/foundation/release/release-store.d.ts +49 -0
  225. package/dist/foundation/release/release-store.js +235 -0
  226. package/dist/foundation/release/release.d.ts +43 -0
  227. package/dist/foundation/release/release.js +215 -0
  228. package/dist/foundation/release/restart-certification.d.ts +68 -0
  229. package/dist/foundation/release/restart-certification.js +227 -0
  230. package/dist/foundation/release/types.d.ts +11 -0
  231. package/dist/foundation/release/types.js +1 -0
  232. package/dist/foundation/release/update-activation.d.ts +72 -0
  233. package/dist/foundation/release/update-activation.js +204 -0
  234. package/dist/foundation/release/update-launch.d.ts +6 -0
  235. package/dist/foundation/release/update-launch.js +17 -0
  236. package/dist/foundation/release/update-recovery.d.ts +82 -0
  237. package/dist/foundation/release/update-recovery.js +386 -0
  238. package/dist/foundation/release/update-transaction.d.ts +42 -0
  239. package/dist/foundation/release/update-transaction.js +101 -0
  240. package/dist/foundation/release/update.d.ts +142 -0
  241. package/dist/foundation/release/update.js +773 -0
  242. package/dist/foundation/release/warmup.d.ts +3 -0
  243. package/dist/foundation/release/warmup.js +47 -0
  244. package/dist/foundation/startup/index.d.ts +4 -0
  245. package/dist/foundation/startup/index.js +2 -0
  246. package/dist/foundation/startup/startup-budget.d.ts +46 -0
  247. package/dist/foundation/startup/startup-budget.js +42 -0
  248. package/dist/foundation/startup/startup-descriptor.js +34 -0
  249. package/dist/foundation/startup/startup-runtime.d.ts +27 -0
  250. package/dist/foundation/startup/startup-runtime.js +128 -0
  251. package/dist/foundation/storage/control-store.d.ts +18 -0
  252. package/dist/foundation/storage/control-store.js +342 -0
  253. package/dist/foundation/storage/index.d.ts +1 -0
  254. package/dist/foundation/storage/index.js +1 -0
  255. package/dist/foundation/supervision/index.d.ts +3 -0
  256. package/dist/foundation/supervision/index.js +3 -0
  257. package/dist/foundation/supervision/main.d.ts +1 -0
  258. package/dist/foundation/supervision/main.js +84 -0
  259. package/dist/foundation/supervision/paths.d.ts +1 -0
  260. package/dist/foundation/supervision/paths.js +1 -0
  261. package/dist/foundation/supervision/server.d.ts +46 -0
  262. package/dist/foundation/supervision/server.js +584 -0
  263. package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
  264. package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
  265. package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
  266. package/dist/foundation/terminal-cleanup/index.js +2 -0
  267. package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
  268. package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
  269. package/dist/integrations/pi/components/components.d.ts +4 -0
  270. package/dist/integrations/pi/components/components.js +64 -0
  271. package/dist/integrations/pi/components/conformance.d.ts +18 -0
  272. package/dist/integrations/pi/components/conformance.js +70 -0
  273. package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
  274. package/dist/integrations/pi/components/editor-interaction.js +1 -0
  275. package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
  276. package/dist/integrations/pi/components/history-editor-loader.js +5 -0
  277. package/dist/integrations/pi/components/index.d.ts +26 -0
  278. package/dist/integrations/pi/components/index.js +16 -0
  279. package/dist/integrations/pi/components/modal-frame.d.ts +41 -0
  280. package/dist/integrations/pi/components/modal-frame.js +110 -0
  281. package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
  282. package/dist/integrations/pi/components/models-dialog.js +403 -0
  283. package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
  284. package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
  285. package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
  286. package/dist/integrations/pi/components/path-word-ranges.js +37 -0
  287. package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
  288. package/dist/integrations/pi/components/prompt-input-port.js +1 -0
  289. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
  290. package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
  291. package/dist/integrations/pi/components/shell-components.d.ts +7 -0
  292. package/dist/integrations/pi/components/shell-components.js +7 -0
  293. package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +23 -0
  294. package/dist/integrations/pi/components/shell-editor-autocomplete.js +357 -0
  295. package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
  296. package/dist/integrations/pi/components/shell-extension-ui.js +282 -0
  297. package/dist/integrations/pi/components/shell-footer-status.d.ts +8 -0
  298. package/dist/integrations/pi/components/shell-footer-status.js +287 -0
  299. package/dist/integrations/pi/components/shell-hotkey-sections.d.ts +7 -0
  300. package/dist/integrations/pi/components/shell-hotkey-sections.js +29 -0
  301. package/dist/integrations/pi/components/shell-presenters-info.d.ts +73 -0
  302. package/dist/integrations/pi/components/shell-presenters-info.js +188 -0
  303. package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
  304. package/dist/integrations/pi/components/shell-presenters-transcript.js +435 -0
  305. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +134 -0
  306. package/dist/integrations/pi/components/shell-selectors-dialogs.js +286 -0
  307. package/dist/integrations/pi/components/shell-shared-facade.d.ts +233 -0
  308. package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
  309. package/dist/integrations/pi/components/skills-command.d.ts +49 -0
  310. package/dist/integrations/pi/components/skills-command.js +119 -0
  311. package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
  312. package/dist/integrations/pi/components/skills-dialog.js +128 -0
  313. package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
  314. package/dist/integrations/pi/components/submitted-prompt-adapter.js +52 -0
  315. package/dist/integrations/pi/components/theme.d.ts +5 -0
  316. package/dist/integrations/pi/components/theme.js +11 -0
  317. package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +8 -0
  318. package/dist/integrations/pi/components/thinking-selector-dialog.js +22 -0
  319. package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
  320. package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
  321. package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
  322. package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
  323. package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
  324. package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
  325. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
  326. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +371 -0
  327. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
  328. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
  329. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
  330. package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
  331. package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
  332. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
  333. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +22 -0
  334. package/dist/integrations/pi/components/upstream/components/extension-editor.js +89 -0
  335. package/dist/integrations/pi/components/upstream/components/extension-input.d.ts +17 -0
  336. package/dist/integrations/pi/components/upstream/components/extension-input.js +73 -0
  337. package/dist/integrations/pi/components/upstream/components/extension-selector.d.ts +15 -0
  338. package/dist/integrations/pi/components/upstream/components/extension-selector.js +93 -0
  339. package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
  340. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
  341. package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
  342. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +60 -0
  343. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +347 -0
  344. package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +12 -0
  345. package/dist/integrations/pi/components/upstream/components/session-footer.js +150 -0
  346. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
  347. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +97 -0
  348. package/dist/integrations/pi/components/upstream/components/session-selector.js +935 -0
  349. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
  350. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +54 -0
  351. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
  352. package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
  353. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +36 -0
  354. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +153 -0
  355. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
  356. package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
  357. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +102 -0
  358. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1294 -0
  359. package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
  360. package/dist/integrations/pi/components/upstream/components/trust-selector.js +87 -0
  361. package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
  362. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
  363. package/dist/integrations/pi/components/upstream/history/editor-core.js +2145 -0
  364. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
  365. package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
  366. package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
  367. package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
  368. package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +17 -0
  369. package/dist/integrations/pi/components/upstream/history/text-helpers.js +34 -0
  370. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
  371. package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
  372. package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
  373. package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
  374. package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
  375. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
  376. package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
  377. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
  378. package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
  379. package/dist/integrations/pi/engine/adapter.d.ts +140 -0
  380. package/dist/integrations/pi/engine/adapter.js +663 -0
  381. package/dist/integrations/pi/engine/changelog.d.ts +2 -0
  382. package/dist/integrations/pi/engine/changelog.js +63 -0
  383. package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
  384. package/dist/integrations/pi/engine/command-dispatch.js +125 -0
  385. package/dist/integrations/pi/engine/compaction-progress.d.ts +24 -0
  386. package/dist/integrations/pi/engine/compaction-progress.js +97 -0
  387. package/dist/integrations/pi/engine/conformance.d.ts +39 -0
  388. package/dist/integrations/pi/engine/conformance.js +140 -0
  389. package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
  390. package/dist/integrations/pi/engine/event-delivery.js +184 -0
  391. package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
  392. package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
  393. package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
  394. package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
  395. package/dist/integrations/pi/engine/index.d.ts +18 -0
  396. package/dist/integrations/pi/engine/index.js +10 -0
  397. package/dist/integrations/pi/engine/message-values.d.ts +29 -0
  398. package/dist/integrations/pi/engine/message-values.js +169 -0
  399. package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
  400. package/dist/integrations/pi/engine/package-integration.js +118 -0
  401. package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
  402. package/dist/integrations/pi/engine/pending-delivery.js +156 -0
  403. package/dist/integrations/pi/engine/pi-settings-metadata.json +397 -0
  404. package/dist/integrations/pi/engine/project-trust-preflight.d.ts +21 -0
  405. package/dist/integrations/pi/engine/project-trust-preflight.js +46 -0
  406. package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
  407. package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
  408. package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
  409. package/dist/integrations/pi/engine/provider-authentication.js +209 -0
  410. package/dist/integrations/pi/engine/repository-pr-rest.d.ts +21 -0
  411. package/dist/integrations/pi/engine/repository-pr-rest.js +155 -0
  412. package/dist/integrations/pi/engine/repository-pr.d.ts +16 -0
  413. package/dist/integrations/pi/engine/repository-pr.js +79 -0
  414. package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
  415. package/dist/integrations/pi/engine/resource-catalog.js +299 -0
  416. package/dist/integrations/pi/engine/resources/changelog.json +12 -0
  417. package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
  418. package/dist/integrations/pi/engine/runtime-integration.js +118 -0
  419. package/dist/integrations/pi/engine/session-events.d.ts +48 -0
  420. package/dist/integrations/pi/engine/session-events.js +223 -0
  421. package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
  422. package/dist/integrations/pi/engine/session-integration.js +195 -0
  423. package/dist/integrations/pi/engine/session-runtime.d.ts +98 -0
  424. package/dist/integrations/pi/engine/session-runtime.js +412 -0
  425. package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
  426. package/dist/integrations/pi/engine/session-selection.js +90 -0
  427. package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
  428. package/dist/integrations/pi/engine/settings-bridge.js +516 -0
  429. package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
  430. package/dist/integrations/pi/engine/settings-metadata.js +67 -0
  431. package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
  432. package/dist/integrations/pi/engine/settings-port.js +363 -0
  433. package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
  434. package/dist/integrations/pi/engine/tool-rendering.js +145 -0
  435. package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
  436. package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
  437. package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
  438. package/dist/integrations/pi/engine/transcript-projection.js +440 -0
  439. package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
  440. package/dist/integrations/pi/engine/usage-view.js +56 -0
  441. package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
  442. package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
  443. package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
  444. package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
  445. package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
  446. package/dist/integrations/pi/engine/workflow-runner.js +536 -0
  447. package/dist/integrations/pi/engine/workflow-support.d.ts +38 -0
  448. package/dist/integrations/pi/engine/workflow-support.js +386 -0
  449. package/dist/integrations/pi/engine/workflows.d.ts +308 -0
  450. package/dist/integrations/pi/engine/workflows.js +81 -0
  451. package/dist/integrations/pi/startup-public.d.ts +2 -0
  452. package/dist/integrations/pi/startup-public.js +2254 -0
  453. package/dist/integrations/pi/startup-public.manifest.json +12679 -0
  454. package/dist/integrations/pi/tui-runtime/adapter.d.ts +58 -0
  455. package/dist/integrations/pi/tui-runtime/adapter.js +792 -0
  456. package/dist/integrations/pi/tui-runtime/contracts.d.ts +158 -0
  457. package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
  458. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
  459. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +439 -0
  460. package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
  461. package/dist/integrations/pi/tui-runtime/index.js +5 -0
  462. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
  463. package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
  464. package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +19 -0
  465. package/dist/integrations/pi/tui-runtime/mouse-report-input.js +91 -0
  466. package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
  467. package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
  468. package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
  469. package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
  470. package/dist/native/darwin-arm64/manifest.json +4 -4
  471. package/dist/native/darwin-arm64/process-guardian +0 -0
  472. package/dist/native/linux-x64/manifest.json +3 -3
  473. package/dist/native/linux-x64/process-guardian +0 -0
  474. package/dist/native/win32-x64/manifest.json +3 -3
  475. package/dist/native/win32-x64/process-guardian.exe +0 -0
  476. package/dist/product-identity.d.ts +37 -0
  477. package/dist/product-identity.js +119 -0
  478. package/dist/product-identity.json +87 -0
  479. package/dist/runtime-payload-inventory.json +134179 -0
  480. package/dist/ui/apps/contracts.d.ts +72 -0
  481. package/dist/ui/apps/host.d.ts +42 -0
  482. package/dist/ui/apps/host.js +156 -0
  483. package/dist/ui/apps/index.d.ts +5 -0
  484. package/dist/ui/apps/index.js +3 -0
  485. package/dist/ui/apps/registry.d.ts +12 -0
  486. package/dist/ui/apps/registry.js +33 -0
  487. package/dist/ui/components/dialog-panel.d.ts +37 -0
  488. package/dist/ui/components/dialog-panel.js +58 -0
  489. package/dist/ui/components/frame.d.ts +22 -0
  490. package/dist/ui/components/frame.js +55 -0
  491. package/dist/ui/components/index.d.ts +50 -0
  492. package/dist/ui/components/index.js +26 -0
  493. package/dist/ui/components/line-input.d.ts +68 -0
  494. package/dist/ui/components/line-input.js +224 -0
  495. package/dist/ui/components/list-block.d.ts +70 -0
  496. package/dist/ui/components/list-block.js +189 -0
  497. package/dist/ui/components/list-view.d.ts +60 -0
  498. package/dist/ui/components/list-view.js +84 -0
  499. package/dist/ui/components/mouse.d.ts +25 -0
  500. package/dist/ui/components/mouse.js +72 -0
  501. package/dist/ui/components/progress-status.d.ts +9 -0
  502. package/dist/ui/components/progress-status.js +25 -0
  503. package/dist/ui/components/prompt-input.d.ts +32 -0
  504. package/dist/ui/components/prompt-input.js +51 -0
  505. package/dist/ui/components/scrollbar.d.ts +88 -0
  506. package/dist/ui/components/scrollbar.js +137 -0
  507. package/dist/ui/components/selection-copy.d.ts +24 -0
  508. package/dist/ui/components/selection-copy.js +39 -0
  509. package/dist/ui/components/shortcut-hints.d.ts +7 -0
  510. package/dist/ui/components/shortcut-hints.js +12 -0
  511. package/dist/ui/components/shortcuts.d.ts +60 -0
  512. package/dist/ui/components/shortcuts.js +85 -0
  513. package/dist/ui/components/spans.d.ts +28 -0
  514. package/dist/ui/components/spans.js +266 -0
  515. package/dist/ui/components/submitted-prompt.d.ts +23 -0
  516. package/dist/ui/components/submitted-prompt.js +50 -0
  517. package/dist/ui/components/surface.d.ts +20 -0
  518. package/dist/ui/components/surface.js +44 -0
  519. package/dist/ui/components/text-selection.d.ts +62 -0
  520. package/dist/ui/components/text-selection.js +210 -0
  521. package/dist/ui/components/text.d.ts +38 -0
  522. package/dist/ui/components/text.js +185 -0
  523. package/dist/ui/components/theme.d.ts +19 -0
  524. package/dist/ui/components/theme.js +9 -0
  525. package/dist/ui/components/transcript-viewport.d.ts +187 -0
  526. package/dist/ui/components/transcript-viewport.js +886 -0
  527. package/dist/ui/components/value-menu.d.ts +43 -0
  528. package/dist/ui/components/value-menu.js +41 -0
  529. package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
  530. package/dist/ui/components/visible-hyperlinks.js +97 -0
  531. package/dist/ui/settings/declarations.d.ts +127 -0
  532. package/dist/ui/settings/declarations.js +124 -0
  533. package/dist/ui/settings/index.d.ts +10 -0
  534. package/dist/ui/settings/index.js +5 -0
  535. package/dist/ui/settings/manager.d.ts +54 -0
  536. package/dist/ui/settings/manager.js +256 -0
  537. package/dist/ui/settings/migrations.d.ts +13 -0
  538. package/dist/ui/settings/migrations.js +92 -0
  539. package/dist/ui/settings/sections.d.ts +52 -0
  540. package/dist/ui/settings/sections.js +112 -0
  541. package/docs/architecture/boundaries.md +17 -13
  542. package/docs/architecture/code-documentation.md +77 -0
  543. package/docs/architecture/history-editor-provenance.md +100 -0
  544. package/docs/architecture/internal-naming.md +94 -0
  545. package/docs/architecture/process-guardian-provenance.md +3 -1
  546. package/docs/architecture/project-structure.md +72 -30
  547. package/docs/architecture/prompt-suggestions.md +68 -0
  548. package/docs/architecture/resource-and-data-policy.md +28 -2
  549. package/docs/architecture/response-copy-delivery.md +85 -0
  550. package/docs/architecture/terminal-host-proof-gate.md +1 -1
  551. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  552. package/docs/architecture/tool-image-presentation.md +62 -0
  553. package/docs/architecture/toolchain.md +34 -10
  554. package/docs/architecture/ui-reference-provenance.md +73 -6
  555. package/docs/ci-release-runbook.md +266 -77
  556. package/docs/features/launch-profiles.md +24 -17
  557. package/docs/features/modal-content-interaction.md +38 -0
  558. package/docs/features/prompt-history.md +149 -0
  559. package/docs/local-worktree-cleanup.md +214 -0
  560. package/docs/manual-code-streaming-cleanup.md +88 -0
  561. package/docs/manual-ghost-link-baseline.md +89 -0
  562. package/docs/manual-launch-instance-acceptance.md +12 -35
  563. package/docs/manual-owned-ui-checkpoint.md +79 -0
  564. package/docs/manual-pi-boundary-candidate.md +4 -5
  565. package/docs/manual-terminal-colour-check.md +4 -3
  566. package/docs/openspec-archive-automation.md +269 -0
  567. package/docs/repository-governance-live-acceptance.md +77 -0
  568. package/docs/validation.md +105 -0
  569. package/package.json +53 -34
  570. package/dist/src/cli/capabilities.d.ts +0 -15
  571. package/dist/src/cli/capabilities.js +0 -7
  572. package/dist/src/cli/dispatch.d.ts +0 -31
  573. package/dist/src/cli/dispatch.js +0 -123
  574. package/dist/src/cli/index.d.ts +0 -5
  575. package/dist/src/cli/index.js +0 -5
  576. package/dist/src/cli/packages.d.ts +0 -23
  577. package/dist/src/cli/packages.js +0 -84
  578. package/dist/src/cli/version-stats.d.ts +0 -16
  579. package/dist/src/cli/version-stats.js +0 -72
  580. package/dist/src/cli/version.d.ts +0 -2
  581. package/dist/src/cli/version.js +0 -23
  582. package/dist/src/composition/index.d.ts +0 -48
  583. package/dist/src/composition/index.js +0 -258
  584. package/dist/src/features/launch/development-launch.js +0 -28
  585. package/dist/src/features/launch/index.d.ts +0 -7
  586. package/dist/src/features/launch/index.js +0 -7
  587. package/dist/src/features/launch/intent.d.ts +0 -7
  588. package/dist/src/features/launch/intent.js +0 -4
  589. package/dist/src/features/launch/prepare-launch.d.ts +0 -13
  590. package/dist/src/features/launch/prepare-launch.js +0 -21
  591. package/dist/src/features/launch/profile-paths.d.ts +0 -15
  592. package/dist/src/features/launch/profile-paths.js +0 -31
  593. package/dist/src/features/launch/profiles.d.ts +0 -12
  594. package/dist/src/features/launch/profiles.js +0 -26
  595. package/dist/src/features/launch/runtime-selection.d.ts +0 -19
  596. package/dist/src/features/launch/runtime-selection.js +0 -13
  597. package/dist/src/features/owned-ui/customization.d.ts +0 -38
  598. package/dist/src/features/owned-ui/customization.js +0 -108
  599. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
  600. package/dist/src/features/owned-ui/diagnostics.js +0 -94
  601. package/dist/src/features/owned-ui/index.d.ts +0 -4
  602. package/dist/src/features/owned-ui/index.js +0 -4
  603. package/dist/src/features/owned-ui/run.d.ts +0 -11
  604. package/dist/src/features/owned-ui/run.js +0 -15
  605. package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
  606. package/dist/src/features/owned-ui/settings-app.js +0 -633
  607. package/dist/src/features/workspace/capabilities.d.ts +0 -31
  608. package/dist/src/features/workspace/capabilities.js +0 -75
  609. package/dist/src/features/workspace/index.d.ts +0 -6
  610. package/dist/src/features/workspace/index.js +0 -6
  611. package/dist/src/features/workspace/presentation.d.ts +0 -30
  612. package/dist/src/features/workspace/presentation.js +0 -70
  613. package/dist/src/features/workspace/reconciliation.d.ts +0 -15
  614. package/dist/src/features/workspace/reconciliation.js +0 -82
  615. package/dist/src/features/workspace/reducer.d.ts +0 -42
  616. package/dist/src/features/workspace/reducer.js +0 -213
  617. package/dist/src/features/workspace/router.d.ts +0 -31
  618. package/dist/src/features/workspace/router.js +0 -124
  619. package/dist/src/features/workspace/store.d.ts +0 -17
  620. package/dist/src/features/workspace/store.js +0 -54
  621. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
  622. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
  623. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
  624. package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
  625. package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
  626. package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
  627. package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
  628. package/dist/src/foundation/launch-guardian/index.js +0 -1
  629. package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
  630. package/dist/src/foundation/launch-guardian/main.js +0 -165
  631. package/dist/src/foundation/lifecycle/index.d.ts +0 -4
  632. package/dist/src/foundation/lifecycle/index.js +0 -4
  633. package/dist/src/foundation/lifecycle/model.d.ts +0 -64
  634. package/dist/src/foundation/lifecycle/model.js +0 -40
  635. package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
  636. package/dist/src/foundation/lifecycle/paths.js +0 -42
  637. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
  638. package/dist/src/foundation/native-host-protocol/codec.js +0 -56
  639. package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
  640. package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
  641. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
  642. package/dist/src/foundation/native-host-protocol/index.js +0 -4
  643. package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
  644. package/dist/src/foundation/native-host-protocol/messages.js +0 -149
  645. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
  646. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
  647. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
  648. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
  649. package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
  650. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
  651. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
  652. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
  653. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
  654. package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
  655. package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
  656. package/dist/src/foundation/owned-ui-settings/index.js +0 -6
  657. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
  658. package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
  659. package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
  660. package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
  661. package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
  662. package/dist/src/foundation/owned-ui-settings/session.js +0 -145
  663. package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
  664. package/dist/src/foundation/owned-ui-settings/store.js +0 -90
  665. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
  666. package/dist/src/foundation/pi-component-adapter/components.js +0 -64
  667. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
  668. package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
  669. package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
  670. package/dist/src/foundation/pi-component-adapter/index.js +0 -13
  671. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
  672. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
  673. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
  674. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
  675. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
  676. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
  677. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
  678. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
  679. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
  680. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
  681. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
  682. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
  683. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
  684. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
  685. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
  686. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
  687. package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
  688. package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
  689. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
  690. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
  691. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
  692. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
  693. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
  694. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
  695. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
  696. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
  697. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
  698. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
  699. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
  700. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
  701. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
  702. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
  703. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
  704. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
  705. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
  706. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
  707. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
  708. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
  709. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
  710. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
  711. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
  712. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
  713. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
  714. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
  715. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
  716. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
  717. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
  718. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
  719. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
  720. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
  721. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
  722. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
  723. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
  724. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
  725. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
  726. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
  727. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
  728. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
  729. package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
  730. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
  731. package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
  732. package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
  733. package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
  734. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
  735. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
  736. package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
  737. package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
  738. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
  739. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
  740. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
  741. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
  742. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
  743. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
  744. package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
  745. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
  746. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
  747. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
  748. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
  749. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
  750. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
  751. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
  752. package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
  753. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
  754. package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
  755. package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
  756. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
  757. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
  758. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
  759. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
  760. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
  761. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
  762. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
  763. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
  764. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
  765. package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
  766. package/dist/src/foundation/presentation-contracts/index.js +0 -38
  767. package/dist/src/foundation/process-containment/index.d.ts +0 -5
  768. package/dist/src/foundation/process-containment/index.js +0 -5
  769. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
  770. package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
  771. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
  772. package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
  773. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
  774. package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
  775. package/dist/src/foundation/protocol/client.d.ts +0 -17
  776. package/dist/src/foundation/protocol/client.js +0 -129
  777. package/dist/src/foundation/protocol/index.d.ts +0 -2
  778. package/dist/src/foundation/protocol/index.js +0 -2
  779. package/dist/src/foundation/protocol/messages.d.ts +0 -89
  780. package/dist/src/foundation/protocol/messages.js +0 -99
  781. package/dist/src/foundation/release/bootstrap.d.ts +0 -29
  782. package/dist/src/foundation/release/bootstrap.js +0 -335
  783. package/dist/src/foundation/release/cohort-state.d.ts +0 -70
  784. package/dist/src/foundation/release/cohort-state.js +0 -202
  785. package/dist/src/foundation/release/development-preview-release.d.ts +0 -49
  786. package/dist/src/foundation/release/development-preview-release.js +0 -114
  787. package/dist/src/foundation/release/index.d.ts +0 -11
  788. package/dist/src/foundation/release/index.js +0 -11
  789. package/dist/src/foundation/release/release-gc.d.ts +0 -5
  790. package/dist/src/foundation/release/release-gc.js +0 -16
  791. package/dist/src/foundation/release/release-store.d.ts +0 -43
  792. package/dist/src/foundation/release/release-store.js +0 -175
  793. package/dist/src/foundation/release/release.d.ts +0 -38
  794. package/dist/src/foundation/release/release.js +0 -204
  795. package/dist/src/foundation/release/update-transaction.d.ts +0 -31
  796. package/dist/src/foundation/release/update-transaction.js +0 -89
  797. package/dist/src/foundation/release/update.d.ts +0 -80
  798. package/dist/src/foundation/release/update.js +0 -458
  799. package/dist/src/foundation/storage/control-store.d.ts +0 -61
  800. package/dist/src/foundation/storage/control-store.js +0 -530
  801. package/dist/src/foundation/storage/index.d.ts +0 -1
  802. package/dist/src/foundation/storage/index.js +0 -1
  803. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
  804. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
  805. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
  806. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
  807. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
  808. package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
  809. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
  810. package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
  811. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
  812. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
  813. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
  814. package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
  815. package/dist/src/foundation/supervision/index.d.ts +0 -3
  816. package/dist/src/foundation/supervision/index.js +0 -3
  817. package/dist/src/foundation/supervision/main.d.ts +0 -1
  818. package/dist/src/foundation/supervision/main.js +0 -41
  819. package/dist/src/foundation/supervision/paths.d.ts +0 -1
  820. package/dist/src/foundation/supervision/paths.js +0 -1
  821. package/dist/src/foundation/supervision/server.d.ts +0 -22
  822. package/dist/src/foundation/supervision/server.js +0 -451
  823. package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
  824. package/dist/src/foundation/ui-apps/host.d.ts +0 -42
  825. package/dist/src/foundation/ui-apps/host.js +0 -152
  826. package/dist/src/foundation/ui-apps/index.d.ts +0 -3
  827. package/dist/src/foundation/ui-apps/index.js +0 -3
  828. package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
  829. package/dist/src/foundation/ui-apps/registry.js +0 -32
  830. package/dist/src/foundation/ui-components/dialog-panel.d.ts +0 -36
  831. package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
  832. package/dist/src/foundation/ui-components/frame.d.ts +0 -21
  833. package/dist/src/foundation/ui-components/frame.js +0 -54
  834. package/dist/src/foundation/ui-components/index.d.ts +0 -18
  835. package/dist/src/foundation/ui-components/index.js +0 -18
  836. package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
  837. package/dist/src/foundation/ui-components/line-input.js +0 -245
  838. package/dist/src/foundation/ui-components/list-block.d.ts +0 -66
  839. package/dist/src/foundation/ui-components/list-block.js +0 -176
  840. package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
  841. package/dist/src/foundation/ui-components/list-view.js +0 -76
  842. package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
  843. package/dist/src/foundation/ui-components/mouse.js +0 -46
  844. package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
  845. package/dist/src/foundation/ui-components/scrollbar.js +0 -102
  846. package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
  847. package/dist/src/foundation/ui-components/shortcuts.js +0 -81
  848. package/dist/src/foundation/ui-components/spans.d.ts +0 -7
  849. package/dist/src/foundation/ui-components/spans.js +0 -59
  850. package/dist/src/foundation/ui-components/surface.d.ts +0 -20
  851. package/dist/src/foundation/ui-components/surface.js +0 -38
  852. package/dist/src/foundation/ui-components/text.d.ts +0 -24
  853. package/dist/src/foundation/ui-components/text.js +0 -123
  854. package/dist/src/foundation/ui-components/theme.d.ts +0 -23
  855. package/dist/src/foundation/ui-components/theme.js +0 -13
  856. package/dist/src/foundation/ui-components/value-menu.d.ts +0 -41
  857. package/dist/src/foundation/ui-components/value-menu.js +0 -33
  858. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
  859. package/dist/src/foundation/workspace-contracts/index.js +0 -2
  860. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
  861. package/dist/src/foundation/workspace-contracts/model.js +0 -2
  862. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
  863. package/dist/src/foundation/workspace-contracts/validation.js +0 -335
  864. package/dist/src/product-identity.d.ts +0 -37
  865. package/dist/src/product-identity.js +0 -150
  866. package/dist/src/product-identity.json +0 -99
  867. package/docs/manual-transparent-checkpoint.md +0 -53
  868. /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
  869. /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
  870. /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
  871. /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
  872. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
  873. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
  874. /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
  875. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
  876. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
  877. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
  878. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
  879. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
  880. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
  881. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
  882. /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
  883. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
  884. /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
  885. /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
  886. /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
  887. /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
  888. /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
  889. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
  890. /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
  891. /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
  892. /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
  893. /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
  894. /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
  895. /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
  896. /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
  897. /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
  898. /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
  899. /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
  900. /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
  901. /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
  902. /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
  903. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
  904. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
  905. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
  906. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
  907. /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
  908. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
  909. /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
  910. /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
  911. /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
  912. /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
  913. /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
  914. /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
  915. /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
  916. /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
  917. /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
  918. /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
  919. /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
  920. /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
  921. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
  922. /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
@@ -0,0 +1,224 @@
1
+ import { displayWidth, faint, truncateToWidth } from "./text.js";
2
+ import { PromptInput } from "./prompt-input.js";
3
+ const MAX_VALUE_LENGTH = 4_096;
4
+ const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: "grapheme" });
5
+ /** Character class for a word boundary: 0 space, 1 word, 2 anything else. */
6
+ function charClass(character) {
7
+ if (/\s/.test(character))
8
+ return 0;
9
+ if (/[\p{L}\p{N}_]/u.test(character))
10
+ return 1;
11
+ return 2;
12
+ }
13
+ /**
14
+ * Where a word jump to the left lands: past any whitespace, then past the run of
15
+ * characters of one class, so a word and a run of punctuation each count as one.
16
+ */
17
+ export function wordLeft(text, from) {
18
+ const graphemes = [...GRAPHEMES.segment(text.slice(0, from))].map(entry => entry.segment);
19
+ let at = from;
20
+ let index = graphemes.length - 1;
21
+ while (index >= 0 && charClass(graphemes[index] ?? "") === 0)
22
+ at -= (graphemes[index--] ?? "").length;
23
+ if (index >= 0) {
24
+ const cls = charClass(graphemes[index] ?? "");
25
+ while (index >= 0 && charClass(graphemes[index] ?? "") === cls)
26
+ at -= (graphemes[index--] ?? "").length;
27
+ }
28
+ return at;
29
+ }
30
+ /** Where a word jump to the right lands, by the same rules mirrored. */
31
+ export function wordRight(text, from) {
32
+ const graphemes = [...GRAPHEMES.segment(text.slice(from))].map(entry => entry.segment);
33
+ let at = from;
34
+ let index = 0;
35
+ while (index < graphemes.length && charClass(graphemes[index] ?? "") === 0)
36
+ at += (graphemes[index++] ?? "").length;
37
+ if (index < graphemes.length) {
38
+ const cls = charClass(graphemes[index] ?? "");
39
+ while (index < graphemes.length && charClass(graphemes[index] ?? "") === cls)
40
+ at += (graphemes[index++] ?? "").length;
41
+ }
42
+ return at;
43
+ }
44
+ /**
45
+ * A single-line editable value with a caret and horizontal scrolling. Accept and
46
+ * cancel are reported distinctly so a caller can commit or discard; cancelling
47
+ * never changes the caller's value.
48
+ */
49
+ export class LineInput {
50
+ #value;
51
+ #caret;
52
+ #offset = 0;
53
+ constructor(value = "") {
54
+ this.#value = value.slice(0, MAX_VALUE_LENGTH);
55
+ this.#caret = this.#value.length;
56
+ }
57
+ get value() {
58
+ return this.#value;
59
+ }
60
+ get caret() {
61
+ return this.#caret;
62
+ }
63
+ setValue(value) {
64
+ this.#value = value.slice(0, MAX_VALUE_LENGTH);
65
+ this.#caret = Math.min(this.#caret, this.#value.length);
66
+ this.#offset = 0;
67
+ }
68
+ insert(text) {
69
+ const printable = [...text].filter(character => {
70
+ const code = character.codePointAt(0) ?? 0;
71
+ return code >= 0x20 && code !== 0x7f;
72
+ }).join("");
73
+ if (printable.length === 0)
74
+ return;
75
+ const next = this.#value.slice(0, this.#caret) + printable + this.#value.slice(this.#caret);
76
+ if (next.length > MAX_VALUE_LENGTH)
77
+ return;
78
+ this.#value = next;
79
+ this.#caret += printable.length;
80
+ }
81
+ backspace() {
82
+ if (this.#caret === 0)
83
+ return;
84
+ this.#value = this.#value.slice(0, this.#caret - 1) + this.#value.slice(this.#caret);
85
+ this.#caret -= 1;
86
+ }
87
+ deleteForward() {
88
+ if (this.#caret >= this.#value.length)
89
+ return;
90
+ this.#value = this.#value.slice(0, this.#caret) + this.#value.slice(this.#caret + 1);
91
+ }
92
+ moveCaret(delta) {
93
+ this.#caret = Math.min(Math.max(this.#caret + delta, 0), this.#value.length);
94
+ }
95
+ /** Moves the caret one word, in whichever direction the sign says. */
96
+ moveCaretByWord(direction) {
97
+ this.#caret = direction < 0 ? wordLeft(this.#value, this.#caret) : wordRight(this.#value, this.#caret);
98
+ }
99
+ /** Removes the word before the caret, leaving the caret where it began. */
100
+ deleteWordBefore() {
101
+ const to = wordLeft(this.#value, this.#caret);
102
+ if (to >= this.#caret)
103
+ return;
104
+ this.#value = this.#value.slice(0, to) + this.#value.slice(this.#caret);
105
+ this.#caret = to;
106
+ }
107
+ /** Removes the word after the caret, leaving the caret where it is. */
108
+ deleteWordAfter() {
109
+ const to = wordRight(this.#value, this.#caret);
110
+ if (to <= this.#caret)
111
+ return;
112
+ this.#value = this.#value.slice(0, this.#caret) + this.#value.slice(to);
113
+ }
114
+ moveCaretToStart() {
115
+ this.#caret = 0;
116
+ }
117
+ moveCaretToEnd() {
118
+ this.#caret = this.#value.length;
119
+ }
120
+ /** Visible slice for a width, scrolled so the caret stays on screen. */
121
+ view(width) {
122
+ if (width <= 0)
123
+ return { text: "", caretColumn: 0 };
124
+ const before = this.#value.slice(0, this.#caret);
125
+ const caretWidth = displayWidth(before);
126
+ if (caretWidth < this.#offset)
127
+ this.#offset = caretWidth;
128
+ if (caretWidth >= this.#offset + width)
129
+ this.#offset = caretWidth - width + 1;
130
+ if (this.#offset < 0)
131
+ this.#offset = 0;
132
+ let start = 0;
133
+ let consumed = 0;
134
+ for (const character of this.#value) {
135
+ if (consumed >= this.#offset)
136
+ break;
137
+ consumed += displayWidth(character);
138
+ start += character.length;
139
+ }
140
+ return {
141
+ text: truncateToWidth(this.#value.slice(start), width),
142
+ caretColumn: Math.max(0, Math.min(width, caretWidth - this.#offset)),
143
+ };
144
+ }
145
+ }
146
+ /** Applies one key to the input and reports whether the caller should commit. */
147
+ export function handleLineInputKey(input, data) {
148
+ if (data === "\r" || data === "\n")
149
+ return { kind: "accepted", value: input.value };
150
+ if (data === "\u001b" || data === "\u0003")
151
+ return { kind: "cancelled" };
152
+ // Platform: a word delete is decided before a plain one: on Windows Terminal the raw
153
+ // backspace byte IS ctrl+backspace, and the plain branch would swallow it.
154
+ if (data === "\b" || data === "\u001b\u007f" || data === "\u0017") {
155
+ input.deleteWordBefore();
156
+ return { kind: "editing" };
157
+ }
158
+ if (data === "\u001b[3;5~" || data === "\u001b[3;3~" || data === "\u001bd") {
159
+ input.deleteWordAfter();
160
+ return { kind: "editing" };
161
+ }
162
+ if (data === "\u007f") {
163
+ input.backspace();
164
+ return { kind: "editing" };
165
+ }
166
+ if (data === "\u001b[3~") {
167
+ input.deleteForward();
168
+ return { kind: "editing" };
169
+ }
170
+ if (data === "\u001b[1;5D" || data === "\u001b[1;3D" || data === "\u001bb") {
171
+ input.moveCaretByWord(-1);
172
+ return { kind: "editing" };
173
+ }
174
+ if (data === "\u001b[1;5C" || data === "\u001b[1;3C" || data === "\u001bf") {
175
+ input.moveCaretByWord(1);
176
+ return { kind: "editing" };
177
+ }
178
+ if (data === "\u001b[D") {
179
+ input.moveCaret(-1);
180
+ return { kind: "editing" };
181
+ }
182
+ if (data === "\u001b[C") {
183
+ input.moveCaret(1);
184
+ return { kind: "editing" };
185
+ }
186
+ if (data === "\u001b[H" || data === "\u0001") {
187
+ input.moveCaretToStart();
188
+ return { kind: "editing" };
189
+ }
190
+ if (data === "\u001b[F" || data === "\u0005") {
191
+ input.moveCaretToEnd();
192
+ return { kind: "editing" };
193
+ }
194
+ // Rationale: any other escape sequence is a key this input has no answer for - a page
195
+ // key, a function key, a chord. It is swallowed rather than typed, because the
196
+ // one thing it certainly is not is text the reader meant to enter.
197
+ if (data.startsWith("\u001b"))
198
+ return { kind: "editing" };
199
+ input.insert(data);
200
+ return { kind: "editing" };
201
+ }
202
+ /**
203
+ * The caret the reference draws: the cell under it is reversed rather than given
204
+ * a colour of its own, so it reads as a block in whatever theme is in use.
205
+ */
206
+ export function caretCell(text) {
207
+ return `\u001b[7m${text}\u001b[27m`;
208
+ }
209
+ /** The input row as the reference draws one, padded to exactly the width. */
210
+ export function renderInputRow(input, width, options = {}) {
211
+ const presentation = new PromptInput(options.theme);
212
+ const view = input.view(Math.max(0, width - presentation.geometry(width).prefixWidth));
213
+ const placeholder = options.placeholder ?? "";
214
+ const empty = view.text.length === 0 && placeholder.length > 0;
215
+ const before = view.text.slice(0, view.caretColumn);
216
+ const under = view.text.slice(view.caretColumn, view.caretColumn + 1) || " ";
217
+ const after = view.text.slice(view.caretColumn + 1);
218
+ // Rationale: typed text is left unpainted, the caret reverses its cell, and the
219
+ // placeholder is quietened by weight rather than by a colour of its own.
220
+ const body = empty
221
+ ? `${caretCell(placeholder.slice(0, 1))}${faint(placeholder.slice(1))}`
222
+ : `${before}${caretCell(under)}${after}`;
223
+ return { lines: presentation.render(width, () => ({ rows: [body] }), options.ruled) };
224
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * A grouped list: group headers, selectable elements, notes, and spacers. While
3
+ * the top visible row belongs to a group, that group's header stays pinned as
4
+ * the first rendered row, so the reader always knows which group is on screen.
5
+ */
6
+ export type ListRow<T> = {
7
+ readonly kind: "group";
8
+ readonly group: string;
9
+ readonly title: string;
10
+ } | {
11
+ readonly kind: "element";
12
+ readonly group: string;
13
+ readonly key: string;
14
+ readonly selectable: boolean;
15
+ readonly value: T;
16
+ } | {
17
+ readonly kind: "note";
18
+ readonly group: string;
19
+ readonly text: string;
20
+ } | {
21
+ readonly kind: "spacer";
22
+ };
23
+ export interface ListRowSpan {
24
+ readonly from: number;
25
+ readonly to: number;
26
+ }
27
+ export declare function rowKey<T>(row: ListRow<T> | undefined): string | undefined;
28
+ export declare function selectableIndexes<T>(rows: readonly ListRow<T>[]): readonly number[];
29
+ export declare function indexOfKey<T>(rows: readonly ListRow<T>[], key: string | undefined): number;
30
+ /** Clamped movement between selectable rows. No wrap-around. */
31
+ export declare function moveSelection<T>(rows: readonly ListRow<T>[], current: number, delta: number): number;
32
+ /**
33
+ * Forward lands on the first element of the next group. Backward lands on the
34
+ * first element of the current group, or the previous group's when already
35
+ * there. Groups with no selectable element are skipped; edges stay put.
36
+ */
37
+ export declare function blockJumpTarget<T>(rows: readonly ListRow<T>[], current: number, delta: number): number | undefined;
38
+ /** The block containing `index`: its header through the row before the next header. */
39
+ export declare function blockRowSpan<T>(rows: readonly ListRow<T>[], index: number): ListRowSpan;
40
+ /** The header pinned above the body while its content or outgoing spacer is at the top. */
41
+ export declare function stickyHeaderFor<T>(rows: readonly ListRow<T>[], scroll: number): string | undefined;
42
+ export interface ListLayoutOptions {
43
+ /** Settings keeps one opening row; embedded documents can start with their own prelude. */
44
+ readonly topPadding?: boolean;
45
+ }
46
+ /** One blank row above the first group while the list is scrolled to the top. */
47
+ export declare function topPaddingRows(scroll: number, enabled?: boolean): number;
48
+ /** Rows of content visible after the padding and any pinned header. */
49
+ export declare function visibleRowCount<T>(rows: readonly ListRow<T>[], bodyHeight: number, scroll: number, options?: ListLayoutOptions): number;
50
+ export declare function maxScrollFor<T>(rows: readonly ListRow<T>[], bodyHeight: number, options?: ListLayoutOptions): number;
51
+ export declare function clampScroll<T>(rows: readonly ListRow<T>[], bodyHeight: number, scroll: number, options?: ListLayoutOptions): {
52
+ readonly scroll: number;
53
+ readonly visible: number;
54
+ };
55
+ /**
56
+ * Scroll that brings the selection into view, moving the least it can. A reveal
57
+ * span asks for a whole block; a block taller than the viewport is shown from
58
+ * its header instead.
59
+ */
60
+ export declare function scrollForSelection<T>(rows: readonly ListRow<T>[], bodyHeight: number, scroll: number, selected: number, reveal?: ListRowSpan): number;
61
+ export interface ListLayout {
62
+ readonly scroll: number;
63
+ readonly visible: number;
64
+ readonly stickyHeader: string | undefined;
65
+ readonly topPadding: number;
66
+ /** Row indexes rendered in the body, in order. */
67
+ readonly rowIndexes: readonly number[];
68
+ }
69
+ /** Everything a renderer needs for one frame, derived rather than remembered. */
70
+ export declare function layoutList<T>(rows: readonly ListRow<T>[], bodyHeight: number, scroll: number, options?: ListLayoutOptions): ListLayout;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * A grouped list: group headers, selectable elements, notes, and spacers. While
3
+ * the top visible row belongs to a group, that group's header stays pinned as
4
+ * the first rendered row, so the reader always knows which group is on screen.
5
+ */
6
+ export function rowKey(row) {
7
+ return row !== undefined && row.kind === "element" && row.selectable ? row.key : undefined;
8
+ }
9
+ export function selectableIndexes(rows) {
10
+ const indexes = [];
11
+ rows.forEach((row, index) => {
12
+ if (rowKey(row) !== undefined)
13
+ indexes.push(index);
14
+ });
15
+ return indexes;
16
+ }
17
+ export function indexOfKey(rows, key) {
18
+ if (key !== undefined) {
19
+ const found = rows.findIndex(row => rowKey(row) === key);
20
+ if (found >= 0)
21
+ return found;
22
+ }
23
+ return selectableIndexes(rows)[0] ?? -1;
24
+ }
25
+ /** Clamped movement between selectable rows. No wrap-around. */
26
+ export function moveSelection(rows, current, delta) {
27
+ const selectable = selectableIndexes(rows);
28
+ if (selectable.length === 0)
29
+ return -1;
30
+ const position = selectable.indexOf(current);
31
+ if (position < 0)
32
+ return selectable[0] ?? -1;
33
+ const next = Math.min(Math.max(position + delta, 0), selectable.length - 1);
34
+ return selectable[next] ?? current;
35
+ }
36
+ function firstElementOfBlock(rows, headerIndex) {
37
+ for (let index = headerIndex + 1; index < rows.length && rows[index]?.kind !== "group"; index++) {
38
+ if (rowKey(rows[index]) !== undefined)
39
+ return index;
40
+ }
41
+ return undefined;
42
+ }
43
+ function headerAbove(rows, index) {
44
+ for (let cursor = Math.min(index, rows.length - 1); cursor >= 0; cursor--) {
45
+ if (rows[cursor]?.kind === "group")
46
+ return cursor;
47
+ }
48
+ return -1;
49
+ }
50
+ /**
51
+ * Forward lands on the first element of the next group. Backward lands on the
52
+ * first element of the current group, or the previous group's when already
53
+ * there. Groups with no selectable element are skipped; edges stay put.
54
+ */
55
+ export function blockJumpTarget(rows, current, delta) {
56
+ if (current < 0 || rows.length === 0)
57
+ return undefined;
58
+ const header = headerAbove(rows, current);
59
+ if (header < 0)
60
+ return undefined;
61
+ const blocks = [];
62
+ for (let index = 0; index < rows.length; index++) {
63
+ if (rows[index]?.kind === "group" && firstElementOfBlock(rows, index) !== undefined)
64
+ blocks.push(index);
65
+ }
66
+ const position = blocks.indexOf(header);
67
+ if (position < 0)
68
+ return undefined;
69
+ if (delta > 0) {
70
+ if (position >= blocks.length - 1)
71
+ return undefined;
72
+ const next = blocks[position + 1];
73
+ return next === undefined ? undefined : firstElementOfBlock(rows, next);
74
+ }
75
+ const own = firstElementOfBlock(rows, header);
76
+ if (own !== undefined && own < current)
77
+ return own;
78
+ if (position <= 0)
79
+ return undefined;
80
+ const previous = blocks[position - 1];
81
+ return previous === undefined ? undefined : firstElementOfBlock(rows, previous);
82
+ }
83
+ /** The block containing `index`: its header through the row before the next header. */
84
+ export function blockRowSpan(rows, index) {
85
+ if (rows.length === 0)
86
+ return { from: 0, to: 0 };
87
+ const start = Math.min(Math.max(index, 0), rows.length - 1);
88
+ const from = Math.max(headerAbove(rows, start), 0);
89
+ let to = rows.length - 1;
90
+ for (let cursor = start + 1; cursor < rows.length; cursor++) {
91
+ if (rows[cursor]?.kind === "group") {
92
+ to = cursor - 1;
93
+ break;
94
+ }
95
+ }
96
+ return { from, to };
97
+ }
98
+ /** The header pinned above the body while its content or outgoing spacer is at the top. */
99
+ export function stickyHeaderFor(rows, scroll) {
100
+ const row = rows[scroll];
101
+ if (row === undefined || row.kind === "group")
102
+ return undefined;
103
+ const header = headerAbove(rows, scroll);
104
+ const headerRow = header < 0 ? undefined : rows[header];
105
+ return headerRow !== undefined && headerRow.kind === "group" ? headerRow.title : undefined;
106
+ }
107
+ /** One blank row above the first group while the list is scrolled to the top. */
108
+ export function topPaddingRows(scroll, enabled = true) {
109
+ return enabled && scroll <= 0 ? 1 : 0;
110
+ }
111
+ /** Rows of content visible after the padding and any pinned header. */
112
+ export function visibleRowCount(rows, bodyHeight, scroll, options = {}) {
113
+ const reserved = topPaddingRows(scroll, options.topPadding !== false) + (stickyHeaderFor(rows, scroll) === undefined ? 0 : 1);
114
+ return Math.max(1, bodyHeight - reserved);
115
+ }
116
+ export function maxScrollFor(rows, bodyHeight, options = {}) {
117
+ let scroll = Math.max(0, rows.length - 1);
118
+ for (let pass = 0; pass < 8; pass++) {
119
+ const next = Math.max(0, rows.length - visibleRowCount(rows, bodyHeight, scroll, options));
120
+ if (next === scroll)
121
+ break;
122
+ scroll = next;
123
+ }
124
+ return scroll;
125
+ }
126
+ export function clampScroll(rows, bodyHeight, scroll, options = {}) {
127
+ const bounded = Math.min(Math.max(scroll, 0), maxScrollFor(rows, bodyHeight, options));
128
+ return { scroll: bounded, visible: visibleRowCount(rows, bodyHeight, bounded, options) };
129
+ }
130
+ /**
131
+ * Scroll that brings the selection into view, moving the least it can. A reveal
132
+ * span asks for a whole block; a block taller than the viewport is shown from
133
+ * its header instead.
134
+ */
135
+ export function scrollForSelection(rows, bodyHeight, scroll, selected, reveal) {
136
+ let next = scroll;
137
+ for (let pass = 0; pass < 2; pass++) {
138
+ const visible = visibleRowCount(rows, bodyHeight, next);
139
+ if (selected >= 0) {
140
+ if (reveal && reveal.to - reveal.from < visible) {
141
+ if (reveal.from < next)
142
+ next = reveal.from;
143
+ if (reveal.to >= next + visible)
144
+ next = reveal.to - visible + 1;
145
+ }
146
+ else if (reveal) {
147
+ next = reveal.from;
148
+ }
149
+ else {
150
+ if (selected < next)
151
+ next = selected;
152
+ if (selected >= next + visible)
153
+ next = selected - visible + 1;
154
+ }
155
+ }
156
+ next = clampScroll(rows, bodyHeight, next).scroll;
157
+ }
158
+ return next;
159
+ }
160
+ /** Everything a renderer needs for one frame, derived rather than remembered. */
161
+ export function layoutList(rows, bodyHeight, scroll, options = {}) {
162
+ const clamped = clampScroll(rows, bodyHeight, scroll, options);
163
+ const sticky = stickyHeaderFor(rows, clamped.scroll);
164
+ const padding = topPaddingRows(clamped.scroll, options.topPadding !== false);
165
+ const indexes = [];
166
+ // Invariant: a spacer at the scroll boundary belongs to the outgoing pinned section.
167
+ // The pin represents that transition, so the spacer spends no body row and the final
168
+ // setting remains reachable at the bottom.
169
+ const firstOffset = rows[clamped.scroll]?.kind === "spacer" && sticky !== undefined ? 1 : 0;
170
+ for (let offset = firstOffset; indexes.length < clamped.visible && clamped.scroll + offset < rows.length; offset++) {
171
+ indexes.push(clamped.scroll + offset);
172
+ }
173
+ // Invariant: a bottom clamp can land on the outgoing spacer with too few rows after it to fill the
174
+ // viewport. The pinned heading already represents that boundary, so fill the freed capacity
175
+ // from the same section rather than exposing a synthetic blank row at the bottom.
176
+ if (firstOffset > 0 && indexes.length < clamped.visible) {
177
+ const header = headerAbove(rows, clamped.scroll);
178
+ for (let index = clamped.scroll - 1; index > header && indexes.length < clamped.visible; index--) {
179
+ indexes.unshift(index);
180
+ }
181
+ }
182
+ return {
183
+ scroll: clamped.scroll,
184
+ visible: clamped.visible,
185
+ stickyHeader: sticky,
186
+ topPadding: padding,
187
+ rowIndexes: Object.freeze(indexes),
188
+ };
189
+ }
@@ -0,0 +1,60 @@
1
+ import type { UiTheme } from "./theme.js";
2
+ /** The part of a row the pointer is over. A label selects; a value acts. */
3
+ export type ListRegion = "label" | "value" | "minus" | "plus";
4
+ /** Columns a stepper's controls occupy on either side of the value. */
5
+ export declare const STEPPER_RESERVE = 2;
6
+ export interface ListViewRow {
7
+ /** Identity of the row, as the screen knows it. */
8
+ readonly key: string;
9
+ readonly label: string;
10
+ /** The value as it should read. Formatting belongs to the screen. */
11
+ readonly value: string;
12
+ /** Trailing note, such as where a value came from. */
13
+ readonly suffix?: string;
14
+ /**
15
+ * Present when the value is stepped. Each end says whether it can still act;
16
+ * an end that cannot is drawn as unavailable rather than explaining itself.
17
+ */
18
+ readonly stepper?: {
19
+ readonly lower: boolean;
20
+ readonly raise: boolean;
21
+ };
22
+ }
23
+ export interface ListRowState {
24
+ /** The keyboard's row. */
25
+ readonly selected: boolean;
26
+ /** The pointer's row, and where on it the pointer is. */
27
+ readonly hovered: boolean;
28
+ readonly region: ListRegion;
29
+ }
30
+ /** Where a row was drawn, so a later pointer report can be read against it. */
31
+ export interface ListRowPlacement {
32
+ readonly key: string;
33
+ readonly screenRow: number;
34
+ readonly valueColumn: number;
35
+ readonly valueWidth: number;
36
+ readonly stepper: boolean;
37
+ }
38
+ /**
39
+ * The column every value begins at: past the widest label, with room to breathe,
40
+ * and with the stepper's columns reserved for every row when any row has one, so
41
+ * a number does not shift its own value out of the column it shares.
42
+ */
43
+ export declare function valueColumnFor(rows: readonly ListViewRow[], indent?: number, gap?: number): number;
44
+ /** A group's name with the shared one-cell section inset used by owned screens. */
45
+ export declare function renderGroupHeader(title: string, width: number, theme: UiTheme): string;
46
+ /**
47
+ * One row, painted. The label carries the selection, the value carries the
48
+ * pointer, and the stepper appears only when the pointer is on the value it
49
+ * belongs to — an affordance, not decoration.
50
+ */
51
+ export declare function renderListRow(row: ListViewRow, state: ListRowState, valueColumn: number, width: number, theme: UiTheme): string;
52
+ /** A line that stands in for rows: why a group has none, or what it is waiting on. */
53
+ export declare function renderNote(text: string, width: number, theme: UiTheme): string;
54
+ /** Where the value of a row starts and ends, for reading a pointer against it. */
55
+ export declare function placementFor(row: ListViewRow, screenRow: number, valueColumn: number, hovered: boolean): ListRowPlacement;
56
+ /**
57
+ * The part of a row a column falls on. The stepper's controls sit in the columns
58
+ * reserved before and after the value, so they are only reachable while drawn.
59
+ */
60
+ export declare function regionAt(placement: ListRowPlacement, column: number): ListRegion;
@@ -0,0 +1,84 @@
1
+ import { displayWidth, truncateToWidth } from "./text.js";
2
+ /** Columns a stepper's controls occupy on either side of the value. */
3
+ export const STEPPER_RESERVE = 2;
4
+ /**
5
+ * The column every value begins at: past the widest label, with room to breathe,
6
+ * and with the stepper's columns reserved for every row when any row has one, so
7
+ * a number does not shift its own value out of the column it shares.
8
+ */
9
+ export function valueColumnFor(rows, indent = 2, gap = 2) {
10
+ const widest = Math.min(30, Math.max(0, ...rows.map(row => displayWidth(row.label))));
11
+ const stepper = rows.some(row => row.stepper !== undefined) ? STEPPER_RESERVE : 0;
12
+ return indent + widest + gap + stepper;
13
+ }
14
+ /** A group's name with the shared one-cell section inset used by owned screens. */
15
+ export function renderGroupHeader(title, width, theme) {
16
+ if (width <= 0)
17
+ return "";
18
+ return ` ${truncateToWidth(theme.fg("mdHeading", theme.bold(title)), width - 1)}`;
19
+ }
20
+ /**
21
+ * One row, painted. The label carries the selection, the value carries the
22
+ * pointer, and the stepper appears only when the pointer is on the value it
23
+ * belongs to — an affordance, not decoration.
24
+ */
25
+ export function renderListRow(row, state, valueColumn, width, theme) {
26
+ const cursor = state.selected ? "→ " : " ";
27
+ const labelColumn = Math.max(displayWidth(row.label), valueColumn - 4 - (row.stepper === undefined ? 0 : STEPPER_RESERVE));
28
+ const labelPadded = `${row.label}${" ".repeat(Math.max(0, labelColumn - displayWidth(row.label)))}`;
29
+ const leftRaw = `${cursor}${labelPadded}`;
30
+ const left = state.selected
31
+ ? `${theme.fg("accent", cursor)}${theme.fg("accent", labelPadded)}`
32
+ : `${cursor}${theme.plain(labelPadded)}`;
33
+ const gap = Math.max(2, valueColumn - displayWidth(leftRaw));
34
+ // Rationale: a declared difference from pinned SettingsList, which paints the selected
35
+ // value in the accent too. Here only the cursor and label carry the selection; the
36
+ // value reads the same on every row, and pointer hover brightens it without moving
37
+ // the keyboard selection.
38
+ const valueHovered = state.hovered && state.region !== "label";
39
+ const stepper = row.stepper !== undefined && valueHovered;
40
+ const value = valueHovered ? theme.plain(row.value) : theme.fg("muted", row.value);
41
+ const minus = stepper
42
+ ? row.stepper?.lower === true
43
+ ? state.region === "minus" ? theme.plain("- ") : theme.fg("dim", "- ")
44
+ : theme.disabled("- ")
45
+ : "";
46
+ const plus = stepper
47
+ ? row.stepper?.raise === true
48
+ ? state.region === "plus" ? theme.plain(" +") : theme.fg("dim", " +")
49
+ : theme.disabled(" +")
50
+ : "";
51
+ const indent = Math.max(2, stepper ? gap - STEPPER_RESERVE : gap);
52
+ const suffix = row.suffix === undefined ? "" : theme.fg("dim", ` ${row.suffix}`);
53
+ return truncateToWidth(`${left}${" ".repeat(indent)}${minus}${value}${plus}${suffix}`, width);
54
+ }
55
+ /** A line that stands in for rows: why a group has none, or what it is waiting on. */
56
+ export function renderNote(text, width, theme) {
57
+ return truncateToWidth(theme.fg("muted", ` ${text}`), width);
58
+ }
59
+ /** Where the value of a row starts and ends, for reading a pointer against it. */
60
+ export function placementFor(row, screenRow, valueColumn, hovered) {
61
+ const stepper = row.stepper !== undefined && hovered;
62
+ return {
63
+ key: row.key,
64
+ screenRow,
65
+ valueColumn: stepper ? valueColumn - STEPPER_RESERVE : valueColumn,
66
+ valueWidth: displayWidth(row.value),
67
+ stepper,
68
+ };
69
+ }
70
+ /**
71
+ * The part of a row a column falls on. The stepper's controls sit in the columns
72
+ * reserved before and after the value, so they are only reachable while drawn.
73
+ */
74
+ export function regionAt(placement, column) {
75
+ const start = placement.valueColumn + 1;
76
+ const end = start + placement.valueWidth;
77
+ if (column >= start && column <= end)
78
+ return "value";
79
+ if (placement.stepper && column >= start - STEPPER_RESERVE && column < start)
80
+ return "minus";
81
+ if (placement.stepper && column > end && column <= end + STEPPER_RESERVE)
82
+ return "plus";
83
+ return "label";
84
+ }
@@ -0,0 +1,25 @@
1
+ import type { PaneMouseEvent } from "./pane.js";
2
+ /**
3
+ * SGR mouse reporting. A screen that wants hover, click, and drag needs the
4
+ * terminal to send reports; nothing else in A1 turns this on, and the sequences
5
+ * are paired so the terminal is always left as it was found.
6
+ */
7
+ export declare const MOUSE_TRACKING_ON = "\u001B[?1006h\u001B[?1000h\u001B[?1003h\u001B[?1004h";
8
+ export declare const MOUSE_TRACKING_OFF = "\u001B[?1004l\u001B[?1003l\u001B[?1000l\u001B[?1006l";
9
+ export interface ParsedMouseInput {
10
+ readonly events: readonly PaneMouseEvent[];
11
+ /** Input with every mouse report removed, for ordinary key handling. */
12
+ readonly rest: string;
13
+ }
14
+ /** Extracts SGR mouse reports, leaving any keyboard input untouched. */
15
+ export declare function parseMouseInput(data: string): ParsedMouseInput;
16
+ export interface RoutedMouseInput {
17
+ /** Input left for the TUI after only claimed reports were removed. */
18
+ readonly data: string;
19
+ readonly consumed: boolean;
20
+ }
21
+ /**
22
+ * Routes every SGR report independently, preserving keyboard bytes and mouse
23
+ * reports the caller does not claim even when they share one physical chunk.
24
+ */
25
+ export declare function routeMouseInput(data: string, claim: (event: PaneMouseEvent, report: string) => boolean): RoutedMouseInput;