@timurproko/a1 0.1.0 → 0.1.1-dev.10

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 (602) hide show
  1. package/README.md +10 -43
  2. package/bin/{addone.js → cli.js} +2 -2
  3. package/bin/guardian.js +22 -0
  4. package/bin/ui.js +20 -0
  5. package/dist/native/darwin-arm64/manifest.json +20 -0
  6. package/dist/native/darwin-arm64/process-guardian +0 -0
  7. package/dist/native/linux-x64/manifest.json +20 -0
  8. package/dist/native/linux-x64/process-guardian +0 -0
  9. package/dist/native/win32-x64/manifest.json +20 -0
  10. package/dist/native/win32-x64/process-guardian.exe +0 -0
  11. package/dist/src/cli/dispatch.d.ts +4 -5
  12. package/dist/src/cli/dispatch.js +11 -11
  13. package/dist/src/cli/index.d.ts +0 -1
  14. package/dist/src/cli/index.js +0 -1
  15. package/dist/src/cli/version-stats.d.ts +0 -1
  16. package/dist/src/cli/version-stats.js +27 -23
  17. package/dist/src/cli/version.d.ts +1 -2
  18. package/dist/src/cli/version.js +4 -4
  19. package/dist/src/composition/index.d.ts +48 -0
  20. package/dist/src/composition/index.js +258 -0
  21. package/dist/src/features/launch/development-launch.d.ts +0 -1
  22. package/dist/src/features/launch/development-launch.js +12 -11
  23. package/dist/src/features/launch/index.d.ts +0 -1
  24. package/dist/src/features/launch/index.js +0 -1
  25. package/dist/src/features/launch/initialize-profile.d.ts +1 -2
  26. package/dist/src/features/launch/initialize-profile.js +24 -4
  27. package/dist/src/features/launch/intent.d.ts +0 -1
  28. package/dist/src/features/launch/intent.js +0 -1
  29. package/dist/src/features/launch/prepare-launch.d.ts +2 -3
  30. package/dist/src/features/launch/prepare-launch.js +3 -4
  31. package/dist/src/features/launch/profile-paths.d.ts +2 -3
  32. package/dist/src/features/launch/profile-paths.js +9 -8
  33. package/dist/src/features/launch/profiles.d.ts +3 -4
  34. package/dist/src/features/launch/profiles.js +7 -8
  35. package/dist/src/features/launch/runtime-selection.d.ts +13 -9
  36. package/dist/src/features/launch/runtime-selection.js +6 -7
  37. package/dist/src/features/owned-ui/customization.d.ts +5 -3
  38. package/dist/src/features/owned-ui/customization.js +2 -4
  39. package/dist/src/features/owned-ui/diagnostics.d.ts +0 -1
  40. package/dist/src/features/owned-ui/diagnostics.js +0 -1
  41. package/dist/src/features/owned-ui/index.d.ts +1 -2
  42. package/dist/src/features/owned-ui/index.js +1 -2
  43. package/dist/src/features/owned-ui/run.d.ts +9 -7
  44. package/dist/src/features/owned-ui/run.js +9 -15
  45. package/dist/src/features/owned-ui/settings-app.d.ts +22 -0
  46. package/dist/src/features/owned-ui/settings-app.js +633 -0
  47. package/dist/src/features/workspace/capabilities.d.ts +0 -1
  48. package/dist/src/features/workspace/capabilities.js +0 -1
  49. package/dist/src/features/workspace/index.d.ts +0 -1
  50. package/dist/src/features/workspace/index.js +0 -1
  51. package/dist/src/features/workspace/presentation.d.ts +1 -2
  52. package/dist/src/features/workspace/presentation.js +5 -4
  53. package/dist/src/features/workspace/reconciliation.d.ts +0 -1
  54. package/dist/src/features/workspace/reconciliation.js +0 -1
  55. package/dist/src/features/workspace/reducer.d.ts +0 -1
  56. package/dist/src/features/workspace/reducer.js +0 -1
  57. package/dist/src/features/workspace/router.d.ts +0 -1
  58. package/dist/src/features/workspace/router.js +0 -1
  59. package/dist/src/features/workspace/store.d.ts +0 -1
  60. package/dist/src/features/workspace/store.js +0 -1
  61. package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +95 -0
  62. package/dist/src/foundation/agent-engine-contracts/capability-ports.js +35 -0
  63. package/dist/src/foundation/agent-engine-contracts/domain-validation.d.ts +12 -0
  64. package/dist/src/foundation/agent-engine-contracts/domain-validation.js +89 -0
  65. package/dist/src/foundation/agent-engine-contracts/domain.d.ts +116 -0
  66. package/dist/src/foundation/agent-engine-contracts/domain.js +1 -0
  67. package/dist/src/foundation/agent-engine-contracts/index.d.ts +7 -0
  68. package/dist/src/foundation/agent-engine-contracts/index.js +7 -0
  69. package/dist/src/foundation/agent-engine-contracts/model.d.ts +78 -0
  70. package/dist/src/foundation/agent-engine-contracts/model.js +1 -0
  71. package/dist/src/foundation/agent-engine-contracts/ports.d.ts +18 -0
  72. package/dist/src/foundation/agent-engine-contracts/ports.js +1 -0
  73. package/dist/src/foundation/agent-engine-contracts/serialization.d.ts +7 -0
  74. package/dist/src/foundation/agent-engine-contracts/serialization.js +58 -0
  75. package/dist/src/foundation/agent-engine-contracts/validation.d.ts +5 -0
  76. package/dist/src/foundation/agent-engine-contracts/validation.js +128 -0
  77. package/dist/src/foundation/launch-guardian/index.d.ts +1 -0
  78. package/dist/src/foundation/launch-guardian/index.js +1 -0
  79. package/dist/src/foundation/launch-guardian/main.d.ts +31 -0
  80. package/dist/src/foundation/launch-guardian/main.js +165 -0
  81. package/dist/src/foundation/lifecycle/commands.d.ts +40 -0
  82. package/dist/src/foundation/lifecycle/commands.js +1 -0
  83. package/dist/src/foundation/lifecycle/index.d.ts +2 -1
  84. package/dist/src/foundation/lifecycle/index.js +2 -1
  85. package/dist/src/foundation/lifecycle/launch-instance.d.ts +46 -0
  86. package/dist/src/foundation/lifecycle/launch-instance.js +134 -0
  87. package/dist/src/foundation/lifecycle/model.d.ts +7 -44
  88. package/dist/src/foundation/lifecycle/model.js +3 -3
  89. package/dist/src/foundation/lifecycle/paths.d.ts +2 -3
  90. package/dist/src/foundation/lifecycle/paths.js +32 -16
  91. package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -1
  92. package/dist/src/foundation/native-host-protocol/codec.js +0 -1
  93. package/dist/src/foundation/native-host-protocol/evidence.d.ts +2 -3
  94. package/dist/src/foundation/native-host-protocol/evidence.js +4 -4
  95. package/dist/src/foundation/native-host-protocol/index.d.ts +0 -1
  96. package/dist/src/foundation/native-host-protocol/index.js +0 -1
  97. package/dist/src/foundation/native-host-protocol/messages.d.ts +1 -2
  98. package/dist/src/foundation/native-host-protocol/messages.js +2 -2
  99. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -1
  100. package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -1
  101. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -1
  102. package/dist/src/foundation/owned-ui-contracts/extension-ui.js +0 -1
  103. package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -1
  104. package/dist/src/foundation/owned-ui-contracts/index.js +0 -1
  105. package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -1
  106. package/dist/src/foundation/owned-ui-contracts/model.js +0 -1
  107. package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -1
  108. package/dist/src/foundation/owned-ui-contracts/validation.js +0 -1
  109. package/dist/src/foundation/owned-ui-settings/declarations.d.ts +13 -0
  110. package/dist/src/foundation/owned-ui-settings/declarations.js +39 -0
  111. package/dist/src/foundation/owned-ui-settings/index.d.ts +6 -0
  112. package/dist/src/foundation/owned-ui-settings/index.js +6 -0
  113. package/dist/src/foundation/owned-ui-settings/migrations.d.ts +13 -0
  114. package/dist/src/foundation/owned-ui-settings/migrations.js +28 -0
  115. package/dist/src/foundation/owned-ui-settings/resolution.d.ts +45 -0
  116. package/dist/src/foundation/owned-ui-settings/resolution.js +147 -0
  117. package/dist/src/foundation/owned-ui-settings/sections.d.ts +70 -0
  118. package/dist/src/foundation/owned-ui-settings/sections.js +93 -0
  119. package/dist/src/foundation/owned-ui-settings/session.d.ts +44 -0
  120. package/dist/src/foundation/owned-ui-settings/session.js +145 -0
  121. package/dist/src/foundation/owned-ui-settings/store.d.ts +28 -0
  122. package/dist/src/foundation/owned-ui-settings/store.js +90 -0
  123. package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -1
  124. package/dist/src/foundation/pi-component-adapter/components.js +0 -1
  125. package/dist/src/foundation/pi-component-adapter/conformance.d.ts +1 -1
  126. package/dist/src/foundation/pi-component-adapter/conformance.js +10 -4
  127. package/dist/src/foundation/pi-component-adapter/index.d.ts +1 -1
  128. package/dist/src/foundation/pi-component-adapter/index.js +1 -1
  129. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +165 -0
  130. package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +166 -0
  131. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -1
  132. package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -1
  133. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -1
  134. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +10 -13
  135. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -1
  136. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -1
  137. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -1
  138. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +5 -62
  139. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -1
  140. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -1
  141. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +9 -2
  142. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +10 -9
  143. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -1
  144. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -1
  145. package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
  146. package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
  147. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -1
  148. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -1
  149. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -1
  150. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js +0 -1
  151. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -1
  152. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -1
  153. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -1
  154. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -1
  155. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -1
  156. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +3 -27
  157. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -1
  158. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -1
  159. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -1
  160. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -1
  161. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -1
  162. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -1
  163. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts +0 -1
  164. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -1
  165. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +18 -0
  166. package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +55 -0
  167. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -1
  168. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -1
  169. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +10 -0
  170. package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +120 -0
  171. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts +0 -1
  172. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -1
  173. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -1
  174. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -1
  175. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +1 -2
  176. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +1 -2
  177. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -1
  178. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -1
  179. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -1
  180. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1
  181. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -1
  182. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -1
  183. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts +0 -1
  184. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -1
  185. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -1
  186. package/dist/src/foundation/pi-component-adapter/upstream/model-search.js +0 -1
  187. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -1
  188. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +1 -2
  189. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +8 -1
  190. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +30 -15
  191. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +19 -205
  192. package/dist/src/foundation/pi-engine-adapter/adapter.js +156 -181
  193. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +24 -1
  194. package/dist/src/foundation/pi-engine-adapter/conformance.js +60 -15
  195. package/dist/src/foundation/pi-engine-adapter/index.d.ts +6 -1
  196. package/dist/src/foundation/pi-engine-adapter/index.js +6 -1
  197. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +30 -0
  198. package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +61 -0
  199. package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +374 -0
  200. package/dist/src/foundation/pi-engine-adapter/public-main-entry.d.ts +5 -0
  201. package/dist/src/foundation/pi-engine-adapter/public-main-entry.js +27 -0
  202. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +31 -0
  203. package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +80 -0
  204. package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +18 -0
  205. package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +32 -0
  206. package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +43 -0
  207. package/dist/src/foundation/pi-engine-adapter/session-integration.js +97 -0
  208. package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +55 -0
  209. package/dist/src/foundation/pi-engine-adapter/settings-integration.js +233 -0
  210. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +20 -0
  211. package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +48 -0
  212. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +9 -1
  213. package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -1
  214. package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +2 -0
  215. package/dist/src/foundation/pi-owned-ui-integration/index.js +2 -0
  216. package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +29 -0
  217. package/dist/src/foundation/pi-owned-ui-integration/route-host.js +1 -0
  218. package/dist/src/{features/owned-ui/pi-session-shell.d.ts → foundation/pi-owned-ui-integration/session-shell.d.ts} +23 -14
  219. package/dist/src/{features/owned-ui/pi-session-shell.js → foundation/pi-owned-ui-integration/session-shell.js} +130 -61
  220. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +6 -1
  221. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +9 -1
  222. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +8 -4
  223. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +22 -9
  224. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -2
  225. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js +1 -2
  226. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +1 -1
  227. package/dist/src/foundation/pi-tui-runtime-adapter/index.js +1 -1
  228. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +4 -0
  229. package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +48 -0
  230. package/dist/src/foundation/presentation-contracts/index.d.ts +96 -0
  231. package/dist/src/foundation/presentation-contracts/index.js +38 -0
  232. package/dist/src/foundation/process-containment/artifact.d.ts +1 -0
  233. package/dist/src/foundation/process-containment/artifact.js +34 -0
  234. package/dist/src/foundation/process-containment/contracts.d.ts +31 -0
  235. package/dist/src/foundation/process-containment/contracts.js +35 -0
  236. package/dist/src/foundation/process-containment/index.d.ts +5 -0
  237. package/dist/src/foundation/process-containment/index.js +5 -0
  238. package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +6 -0
  239. package/dist/src/foundation/process-containment/linux-process-inspector.js +26 -0
  240. package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +16 -0
  241. package/dist/src/foundation/process-containment/native-guardian-containment.js +139 -0
  242. package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +17 -0
  243. package/dist/src/foundation/process-containment/windows-process-inspector.js +53 -0
  244. package/dist/src/foundation/protocol/client.d.ts +2 -2
  245. package/dist/src/foundation/protocol/client.js +3 -1
  246. package/dist/src/foundation/protocol/index.d.ts +0 -1
  247. package/dist/src/foundation/protocol/index.js +0 -1
  248. package/dist/src/foundation/protocol/messages.d.ts +6 -7
  249. package/dist/src/foundation/protocol/messages.js +3 -3
  250. package/dist/src/foundation/release/bootstrap.d.ts +2 -3
  251. package/dist/src/foundation/release/bootstrap.js +85 -33
  252. package/dist/src/foundation/release/cohort-selection.d.ts +0 -1
  253. package/dist/src/foundation/release/cohort-selection.js +3 -4
  254. package/dist/src/foundation/release/cohort-state.d.ts +6 -4
  255. package/dist/src/foundation/release/cohort-state.js +5 -4
  256. package/dist/src/foundation/release/concurrency.d.ts +1 -0
  257. package/dist/src/foundation/release/concurrency.js +17 -0
  258. package/dist/src/foundation/release/development-preview-release.d.ts +2 -2
  259. package/dist/src/foundation/release/development-preview-release.js +3 -2
  260. package/dist/src/foundation/release/index.d.ts +0 -1
  261. package/dist/src/foundation/release/index.js +0 -1
  262. package/dist/src/foundation/release/process-cleanup.d.ts +1 -2
  263. package/dist/src/foundation/release/process-cleanup.js +2 -3
  264. package/dist/src/foundation/release/release-gc.d.ts +0 -1
  265. package/dist/src/foundation/release/release-gc.js +0 -1
  266. package/dist/src/foundation/release/release-store.d.ts +38 -6
  267. package/dist/src/foundation/release/release-store.js +103 -43
  268. package/dist/src/foundation/release/release.d.ts +20 -6
  269. package/dist/src/foundation/release/release.js +77 -48
  270. package/dist/src/foundation/release/stable-release.d.ts +2 -2
  271. package/dist/src/foundation/release/stable-release.js +6 -5
  272. package/dist/src/foundation/release/update-transaction.d.ts +2 -2
  273. package/dist/src/foundation/release/update-transaction.js +8 -7
  274. package/dist/src/foundation/release/update.d.ts +20 -4
  275. package/dist/src/foundation/release/update.js +152 -36
  276. package/dist/src/foundation/storage/control-store.d.ts +8 -8
  277. package/dist/src/foundation/storage/control-store.js +132 -61
  278. package/dist/src/foundation/storage/index.d.ts +0 -1
  279. package/dist/src/foundation/storage/index.js +0 -1
  280. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -1
  281. package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -1
  282. package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -1
  283. package/dist/src/foundation/structured-agent-runtime/commands.js +0 -1
  284. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +2 -3
  285. package/dist/src/foundation/structured-agent-runtime/handshake.js +13 -13
  286. package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -1
  287. package/dist/src/foundation/structured-agent-runtime/index.js +0 -1
  288. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -1
  289. package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -1
  290. package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -1
  291. package/dist/src/foundation/structured-agent-runtime/state.js +0 -1
  292. package/dist/src/foundation/supervision/index.d.ts +1 -2
  293. package/dist/src/foundation/supervision/index.js +1 -2
  294. package/dist/src/foundation/supervision/main.d.ts +0 -1
  295. package/dist/src/foundation/supervision/main.js +11 -10
  296. package/dist/src/foundation/supervision/paths.d.ts +1 -2
  297. package/dist/src/foundation/supervision/paths.js +1 -2
  298. package/dist/src/foundation/supervision/server.d.ts +6 -5
  299. package/dist/src/foundation/supervision/server.js +259 -91
  300. package/dist/src/foundation/ui-apps/contracts.d.ts +42 -0
  301. package/dist/src/foundation/ui-apps/contracts.js +12 -0
  302. package/dist/src/foundation/ui-apps/host.d.ts +42 -0
  303. package/dist/src/foundation/ui-apps/host.js +152 -0
  304. package/dist/src/foundation/ui-apps/index.d.ts +3 -0
  305. package/dist/src/foundation/ui-apps/index.js +3 -0
  306. package/dist/src/foundation/ui-apps/registry.d.ts +11 -0
  307. package/dist/src/foundation/ui-apps/registry.js +32 -0
  308. package/dist/src/foundation/ui-components/dialog-panel.d.ts +36 -0
  309. package/dist/src/foundation/ui-components/dialog-panel.js +47 -0
  310. package/dist/src/foundation/ui-components/frame.d.ts +21 -0
  311. package/dist/src/foundation/ui-components/frame.js +54 -0
  312. package/dist/src/foundation/ui-components/index.d.ts +18 -0
  313. package/dist/src/foundation/ui-components/index.js +18 -0
  314. package/dist/src/foundation/ui-components/label.d.ts +8 -0
  315. package/dist/src/foundation/ui-components/label.js +36 -0
  316. package/dist/src/foundation/ui-components/line-input.d.ts +74 -0
  317. package/dist/src/foundation/ui-components/line-input.js +245 -0
  318. package/dist/src/foundation/ui-components/list-block.d.ts +66 -0
  319. package/dist/src/foundation/ui-components/list-block.js +176 -0
  320. package/dist/src/foundation/ui-components/list-view.d.ts +66 -0
  321. package/dist/src/foundation/ui-components/list-view.js +76 -0
  322. package/dist/src/foundation/ui-components/mouse.d.ts +15 -0
  323. package/dist/src/foundation/ui-components/mouse.js +46 -0
  324. package/dist/src/foundation/ui-components/pane.d.ts +33 -0
  325. package/dist/src/foundation/ui-components/pane.js +7 -0
  326. package/dist/src/foundation/ui-components/revision.d.ts +35 -0
  327. package/dist/src/foundation/ui-components/revision.js +79 -0
  328. package/dist/src/foundation/ui-components/scrollbar.d.ts +62 -0
  329. package/dist/src/foundation/ui-components/scrollbar.js +102 -0
  330. package/dist/src/foundation/ui-components/shortcuts.d.ts +57 -0
  331. package/dist/src/foundation/ui-components/shortcuts.js +81 -0
  332. package/dist/src/foundation/ui-components/spans.d.ts +7 -0
  333. package/dist/src/foundation/ui-components/spans.js +59 -0
  334. package/dist/src/foundation/ui-components/status-line.d.ts +16 -0
  335. package/dist/src/foundation/ui-components/status-line.js +14 -0
  336. package/dist/src/foundation/ui-components/stepper.d.ts +24 -0
  337. package/dist/src/foundation/ui-components/stepper.js +33 -0
  338. package/dist/src/foundation/ui-components/surface.d.ts +20 -0
  339. package/dist/src/foundation/ui-components/surface.js +38 -0
  340. package/dist/src/foundation/ui-components/text.d.ts +24 -0
  341. package/dist/src/foundation/ui-components/text.js +123 -0
  342. package/dist/src/foundation/ui-components/theme.d.ts +23 -0
  343. package/dist/src/foundation/ui-components/theme.js +13 -0
  344. package/dist/src/foundation/ui-components/value-menu.d.ts +41 -0
  345. package/dist/src/foundation/ui-components/value-menu.js +33 -0
  346. package/dist/src/foundation/workspace-contracts/index.d.ts +0 -1
  347. package/dist/src/foundation/workspace-contracts/index.js +0 -1
  348. package/dist/src/foundation/workspace-contracts/model.d.ts +0 -1
  349. package/dist/src/foundation/workspace-contracts/model.js +0 -1
  350. package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -1
  351. package/dist/src/foundation/workspace-contracts/validation.js +0 -1
  352. package/dist/src/product-identity.d.ts +37 -0
  353. package/dist/src/product-identity.js +150 -0
  354. package/dist/src/product-identity.json +99 -0
  355. package/docs/architecture/boundaries.md +32 -14
  356. package/docs/architecture/process-guardian-provenance.md +26 -0
  357. package/docs/architecture/project-structure.md +2 -2
  358. package/docs/architecture/resource-and-data-policy.md +1 -1
  359. package/docs/architecture/terminal-host-proof-gate.md +2 -2
  360. package/docs/architecture/terminal-host-provenance.md +3 -3
  361. package/docs/architecture/terminal-host-spike-evidence.md +1 -1
  362. package/docs/architecture/toolchain.md +40 -8
  363. package/docs/architecture/ui-reference-provenance.md +50 -0
  364. package/docs/ci-release-runbook.md +67 -0
  365. package/docs/features/launch-profiles.md +12 -6
  366. package/docs/manual-launch-instance-acceptance.md +66 -0
  367. package/docs/manual-pi-boundary-candidate.md +33 -0
  368. package/docs/manual-terminal-colour-check.md +55 -0
  369. package/docs/manual-transparent-checkpoint.md +11 -11
  370. package/package.json +27 -14
  371. package/bin/addone-ui.js +0 -20
  372. package/dist/src/cli/dispatch.d.ts.map +0 -1
  373. package/dist/src/cli/dispatch.js.map +0 -1
  374. package/dist/src/cli/index.d.ts.map +0 -1
  375. package/dist/src/cli/index.js.map +0 -1
  376. package/dist/src/cli/version-stats.d.ts.map +0 -1
  377. package/dist/src/cli/version-stats.js.map +0 -1
  378. package/dist/src/cli/version.d.ts.map +0 -1
  379. package/dist/src/cli/version.js.map +0 -1
  380. package/dist/src/features/launch/development-launch.d.ts.map +0 -1
  381. package/dist/src/features/launch/development-launch.js.map +0 -1
  382. package/dist/src/features/launch/index.d.ts.map +0 -1
  383. package/dist/src/features/launch/index.js.map +0 -1
  384. package/dist/src/features/launch/initialize-profile.d.ts.map +0 -1
  385. package/dist/src/features/launch/initialize-profile.js.map +0 -1
  386. package/dist/src/features/launch/intent.d.ts.map +0 -1
  387. package/dist/src/features/launch/intent.js.map +0 -1
  388. package/dist/src/features/launch/prepare-launch.d.ts.map +0 -1
  389. package/dist/src/features/launch/prepare-launch.js.map +0 -1
  390. package/dist/src/features/launch/profile-paths.d.ts.map +0 -1
  391. package/dist/src/features/launch/profile-paths.js.map +0 -1
  392. package/dist/src/features/launch/profiles.d.ts.map +0 -1
  393. package/dist/src/features/launch/profiles.js.map +0 -1
  394. package/dist/src/features/launch/runtime-selection.d.ts.map +0 -1
  395. package/dist/src/features/launch/runtime-selection.js.map +0 -1
  396. package/dist/src/features/owned-ui/customization.d.ts.map +0 -1
  397. package/dist/src/features/owned-ui/customization.js.map +0 -1
  398. package/dist/src/features/owned-ui/diagnostics.d.ts.map +0 -1
  399. package/dist/src/features/owned-ui/diagnostics.js.map +0 -1
  400. package/dist/src/features/owned-ui/index.d.ts.map +0 -1
  401. package/dist/src/features/owned-ui/index.js.map +0 -1
  402. package/dist/src/features/owned-ui/pi-session-shell.d.ts.map +0 -1
  403. package/dist/src/features/owned-ui/pi-session-shell.js.map +0 -1
  404. package/dist/src/features/owned-ui/run.d.ts.map +0 -1
  405. package/dist/src/features/owned-ui/run.js.map +0 -1
  406. package/dist/src/features/workspace/capabilities.d.ts.map +0 -1
  407. package/dist/src/features/workspace/capabilities.js.map +0 -1
  408. package/dist/src/features/workspace/index.d.ts.map +0 -1
  409. package/dist/src/features/workspace/index.js.map +0 -1
  410. package/dist/src/features/workspace/presentation.d.ts.map +0 -1
  411. package/dist/src/features/workspace/presentation.js.map +0 -1
  412. package/dist/src/features/workspace/reconciliation.d.ts.map +0 -1
  413. package/dist/src/features/workspace/reconciliation.js.map +0 -1
  414. package/dist/src/features/workspace/reducer.d.ts.map +0 -1
  415. package/dist/src/features/workspace/reducer.js.map +0 -1
  416. package/dist/src/features/workspace/router.d.ts.map +0 -1
  417. package/dist/src/features/workspace/router.js.map +0 -1
  418. package/dist/src/features/workspace/store.d.ts.map +0 -1
  419. package/dist/src/features/workspace/store.js.map +0 -1
  420. package/dist/src/foundation/lifecycle/index.d.ts.map +0 -1
  421. package/dist/src/foundation/lifecycle/index.js.map +0 -1
  422. package/dist/src/foundation/lifecycle/model.d.ts.map +0 -1
  423. package/dist/src/foundation/lifecycle/model.js.map +0 -1
  424. package/dist/src/foundation/lifecycle/paths.d.ts.map +0 -1
  425. package/dist/src/foundation/lifecycle/paths.js.map +0 -1
  426. package/dist/src/foundation/native-host-protocol/codec.d.ts.map +0 -1
  427. package/dist/src/foundation/native-host-protocol/codec.js.map +0 -1
  428. package/dist/src/foundation/native-host-protocol/evidence.d.ts.map +0 -1
  429. package/dist/src/foundation/native-host-protocol/evidence.js.map +0 -1
  430. package/dist/src/foundation/native-host-protocol/index.d.ts.map +0 -1
  431. package/dist/src/foundation/native-host-protocol/index.js.map +0 -1
  432. package/dist/src/foundation/native-host-protocol/messages.d.ts.map +0 -1
  433. package/dist/src/foundation/native-host-protocol/messages.js.map +0 -1
  434. package/dist/src/foundation/native-host-protocol/proof-gate.d.ts.map +0 -1
  435. package/dist/src/foundation/native-host-protocol/proof-gate.js.map +0 -1
  436. package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts.map +0 -1
  437. package/dist/src/foundation/owned-ui-contracts/extension-ui.js.map +0 -1
  438. package/dist/src/foundation/owned-ui-contracts/index.d.ts.map +0 -1
  439. package/dist/src/foundation/owned-ui-contracts/index.js.map +0 -1
  440. package/dist/src/foundation/owned-ui-contracts/model.d.ts.map +0 -1
  441. package/dist/src/foundation/owned-ui-contracts/model.js.map +0 -1
  442. package/dist/src/foundation/owned-ui-contracts/validation.d.ts.map +0 -1
  443. package/dist/src/foundation/owned-ui-contracts/validation.js.map +0 -1
  444. package/dist/src/foundation/pi-component-adapter/components.d.ts.map +0 -1
  445. package/dist/src/foundation/pi-component-adapter/components.js.map +0 -1
  446. package/dist/src/foundation/pi-component-adapter/conformance.d.ts.map +0 -1
  447. package/dist/src/foundation/pi-component-adapter/conformance.js.map +0 -1
  448. package/dist/src/foundation/pi-component-adapter/index.d.ts.map +0 -1
  449. package/dist/src/foundation/pi-component-adapter/index.js.map +0 -1
  450. package/dist/src/foundation/pi-component-adapter/shell-components.d.ts.map +0 -1
  451. package/dist/src/foundation/pi-component-adapter/shell-components.js.map +0 -1
  452. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts.map +0 -1
  453. package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js.map +0 -1
  454. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts.map +0 -1
  455. package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js.map +0 -1
  456. package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts.map +0 -1
  457. package/dist/src/foundation/pi-component-adapter/shell-footer-status.js.map +0 -1
  458. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts.map +0 -1
  459. package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js.map +0 -1
  460. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts.map +0 -1
  461. package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js.map +0 -1
  462. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts.map +0 -1
  463. package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js.map +0 -1
  464. package/dist/src/foundation/pi-component-adapter/theme.d.ts.map +0 -1
  465. package/dist/src/foundation/pi-component-adapter/theme.js.map +0 -1
  466. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts.map +0 -1
  467. package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js.map +0 -1
  468. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts.map +0 -1
  469. package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js.map +0 -1
  470. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts.map +0 -1
  471. package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js.map +0 -1
  472. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts.map +0 -1
  473. package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js.map +0 -1
  474. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts.map +0 -1
  475. package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js.map +0 -1
  476. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts.map +0 -1
  477. package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js.map +0 -1
  478. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts.map +0 -1
  479. package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js.map +0 -1
  480. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts.map +0 -1
  481. package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js.map +0 -1
  482. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts.map +0 -1
  483. package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js.map +0 -1
  484. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts.map +0 -1
  485. package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js.map +0 -1
  486. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts.map +0 -1
  487. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js.map +0 -1
  488. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts.map +0 -1
  489. package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js.map +0 -1
  490. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts.map +0 -1
  491. package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js.map +0 -1
  492. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts.map +0 -1
  493. package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js.map +0 -1
  494. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts.map +0 -1
  495. package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js.map +0 -1
  496. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts.map +0 -1
  497. package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js.map +0 -1
  498. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts.map +0 -1
  499. package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js.map +0 -1
  500. package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts.map +0 -1
  501. package/dist/src/foundation/pi-component-adapter/upstream/model-search.js.map +0 -1
  502. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts.map +0 -1
  503. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js.map +0 -1
  504. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts.map +0 -1
  505. package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js.map +0 -1
  506. package/dist/src/foundation/pi-engine-adapter/adapter.d.ts.map +0 -1
  507. package/dist/src/foundation/pi-engine-adapter/adapter.js.map +0 -1
  508. package/dist/src/foundation/pi-engine-adapter/conformance.d.ts.map +0 -1
  509. package/dist/src/foundation/pi-engine-adapter/conformance.js.map +0 -1
  510. package/dist/src/foundation/pi-engine-adapter/index.d.ts.map +0 -1
  511. package/dist/src/foundation/pi-engine-adapter/index.js.map +0 -1
  512. package/dist/src/foundation/pi-engine-adapter/workflows.d.ts.map +0 -1
  513. package/dist/src/foundation/pi-engine-adapter/workflows.js.map +0 -1
  514. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts.map +0 -1
  515. package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js.map +0 -1
  516. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts.map +0 -1
  517. package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js.map +0 -1
  518. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts.map +0 -1
  519. package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js.map +0 -1
  520. package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts.map +0 -1
  521. package/dist/src/foundation/pi-tui-runtime-adapter/index.js.map +0 -1
  522. package/dist/src/foundation/protocol/client.d.ts.map +0 -1
  523. package/dist/src/foundation/protocol/client.js.map +0 -1
  524. package/dist/src/foundation/protocol/index.d.ts.map +0 -1
  525. package/dist/src/foundation/protocol/index.js.map +0 -1
  526. package/dist/src/foundation/protocol/messages.d.ts.map +0 -1
  527. package/dist/src/foundation/protocol/messages.js.map +0 -1
  528. package/dist/src/foundation/release/bootstrap.d.ts.map +0 -1
  529. package/dist/src/foundation/release/bootstrap.js.map +0 -1
  530. package/dist/src/foundation/release/cohort-selection.d.ts.map +0 -1
  531. package/dist/src/foundation/release/cohort-selection.js.map +0 -1
  532. package/dist/src/foundation/release/cohort-state.d.ts.map +0 -1
  533. package/dist/src/foundation/release/cohort-state.js.map +0 -1
  534. package/dist/src/foundation/release/development-preview-release.d.ts.map +0 -1
  535. package/dist/src/foundation/release/development-preview-release.js.map +0 -1
  536. package/dist/src/foundation/release/index.d.ts.map +0 -1
  537. package/dist/src/foundation/release/index.js.map +0 -1
  538. package/dist/src/foundation/release/process-cleanup.d.ts.map +0 -1
  539. package/dist/src/foundation/release/process-cleanup.js.map +0 -1
  540. package/dist/src/foundation/release/release-gc.d.ts.map +0 -1
  541. package/dist/src/foundation/release/release-gc.js.map +0 -1
  542. package/dist/src/foundation/release/release-store.d.ts.map +0 -1
  543. package/dist/src/foundation/release/release-store.js.map +0 -1
  544. package/dist/src/foundation/release/release.d.ts.map +0 -1
  545. package/dist/src/foundation/release/release.js.map +0 -1
  546. package/dist/src/foundation/release/stable-release.d.ts.map +0 -1
  547. package/dist/src/foundation/release/stable-release.js.map +0 -1
  548. package/dist/src/foundation/release/update-transaction.d.ts.map +0 -1
  549. package/dist/src/foundation/release/update-transaction.js.map +0 -1
  550. package/dist/src/foundation/release/update.d.ts.map +0 -1
  551. package/dist/src/foundation/release/update.js.map +0 -1
  552. package/dist/src/foundation/storage/control-store.d.ts.map +0 -1
  553. package/dist/src/foundation/storage/control-store.js.map +0 -1
  554. package/dist/src/foundation/storage/index.d.ts.map +0 -1
  555. package/dist/src/foundation/storage/index.js.map +0 -1
  556. package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts.map +0 -1
  557. package/dist/src/foundation/structured-agent-runtime/backpressure.js.map +0 -1
  558. package/dist/src/foundation/structured-agent-runtime/commands.d.ts.map +0 -1
  559. package/dist/src/foundation/structured-agent-runtime/commands.js.map +0 -1
  560. package/dist/src/foundation/structured-agent-runtime/handshake.d.ts.map +0 -1
  561. package/dist/src/foundation/structured-agent-runtime/handshake.js.map +0 -1
  562. package/dist/src/foundation/structured-agent-runtime/index.d.ts.map +0 -1
  563. package/dist/src/foundation/structured-agent-runtime/index.js.map +0 -1
  564. package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts.map +0 -1
  565. package/dist/src/foundation/structured-agent-runtime/reconnection.js.map +0 -1
  566. package/dist/src/foundation/structured-agent-runtime/state.d.ts.map +0 -1
  567. package/dist/src/foundation/structured-agent-runtime/state.js.map +0 -1
  568. package/dist/src/foundation/supervision/index.d.ts.map +0 -1
  569. package/dist/src/foundation/supervision/index.js.map +0 -1
  570. package/dist/src/foundation/supervision/main.d.ts.map +0 -1
  571. package/dist/src/foundation/supervision/main.js.map +0 -1
  572. package/dist/src/foundation/supervision/paths.d.ts.map +0 -1
  573. package/dist/src/foundation/supervision/paths.js.map +0 -1
  574. package/dist/src/foundation/supervision/server.d.ts.map +0 -1
  575. package/dist/src/foundation/supervision/server.js.map +0 -1
  576. package/dist/src/foundation/transparent-terminal/command-resolution.d.ts +0 -14
  577. package/dist/src/foundation/transparent-terminal/command-resolution.d.ts.map +0 -1
  578. package/dist/src/foundation/transparent-terminal/command-resolution.js +0 -70
  579. package/dist/src/foundation/transparent-terminal/command-resolution.js.map +0 -1
  580. package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts +0 -33
  581. package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts.map +0 -1
  582. package/dist/src/foundation/transparent-terminal/foreground-broker.js +0 -88
  583. package/dist/src/foundation/transparent-terminal/foreground-broker.js.map +0 -1
  584. package/dist/src/foundation/transparent-terminal/index.d.ts +0 -4
  585. package/dist/src/foundation/transparent-terminal/index.d.ts.map +0 -1
  586. package/dist/src/foundation/transparent-terminal/index.js +0 -4
  587. package/dist/src/foundation/transparent-terminal/index.js.map +0 -1
  588. package/dist/src/foundation/transparent-terminal/main.d.ts +0 -10
  589. package/dist/src/foundation/transparent-terminal/main.d.ts.map +0 -1
  590. package/dist/src/foundation/transparent-terminal/main.js +0 -107
  591. package/dist/src/foundation/transparent-terminal/main.js.map +0 -1
  592. package/dist/src/foundation/transparent-terminal/native-launcher.d.ts +0 -26
  593. package/dist/src/foundation/transparent-terminal/native-launcher.d.ts.map +0 -1
  594. package/dist/src/foundation/transparent-terminal/native-launcher.js +0 -147
  595. package/dist/src/foundation/transparent-terminal/native-launcher.js.map +0 -1
  596. package/dist/src/foundation/workspace-contracts/index.d.ts.map +0 -1
  597. package/dist/src/foundation/workspace-contracts/index.js.map +0 -1
  598. package/dist/src/foundation/workspace-contracts/model.d.ts.map +0 -1
  599. package/dist/src/foundation/workspace-contracts/model.js.map +0 -1
  600. package/dist/src/foundation/workspace-contracts/validation.d.ts.map +0 -1
  601. package/dist/src/foundation/workspace-contracts/validation.js.map +0 -1
  602. /package/bin/{addone-supervisor.js → supervisor.js} +0 -0
@@ -0,0 +1,633 @@
1
+ import { GLOBAL_SCOPE, LineInput, PLAIN_THEME, ShortcutRegistry, PROMPT_GLYPH, blockJumpTarget, dialogValueColumn, numericValues, RAIL_COLUMNS, renderDialogPanel, renderEmptyState, renderGroupHeader, renderInputRow, renderStatusLine, renderListRow, renderNote, dialogRowAt, menuRowAt, regionAt, renderValueMenu, withScrollbarRail, stepperEnds, steppedValue, valueColumnFor, valueMenuFrame, promptRule, caretCell, blockRowSpan, displayWidth, faint, handleLineInputKey, humanizeLabel, humanizeTitle, indexOfKey, isThumbRow, layoutList, moveSelection, rowKey, scrollForSelection, scrollbarGeometry, selectableIndexes, } from "../../foundation/ui-components/index.js";
2
+ export const SETTINGS_APP_ID = "settings";
3
+ export const SETTINGS_ROUTE = "settings";
4
+ const SCOPE = SETTINGS_APP_ID;
5
+ /** The panel a setting with parts opens: its own keys, its own hint. */
6
+ const DIALOG_SCOPE = `${SETTINGS_APP_ID}-parts`;
7
+ const SCROLLBAR_TOP_INSET = 1;
8
+ const SEARCH_PLACEHOLDER = "search settings";
9
+ /** What a structured value offers instead of printing itself. */
10
+ const CONFIGURE = "configure";
11
+ export const SETTINGS_SHORTCUTS = new ShortcutRegistry();
12
+ SETTINGS_SHORTCUTS.declare({ key: "/", scope: SCOPE, description: "Search settings", section: "Change", hint: { keys: "/", does: "to search" } }, "open-filter");
13
+ SETTINGS_SHORTCUTS.declare({ key: "up", scope: SCOPE, description: "Previous setting", section: "Navigate", hint: { keys: "↑↓", does: "to navigate" } }, "move-up");
14
+ SETTINGS_SHORTCUTS.declare({ key: "down", scope: SCOPE, description: "Next setting", section: "Navigate", hint: { keys: "↑↓", does: "to navigate" } }, "move-down");
15
+ SETTINGS_SHORTCUTS.declare({ key: "shift+up", scope: SCOPE, description: "Previous section", section: "Navigate", hint: { keys: "Shift+↑↓", does: "to jump" } }, "block-up");
16
+ SETTINGS_SHORTCUTS.declare({ key: "shift+down", scope: SCOPE, description: "Next section", section: "Navigate", hint: { keys: "Shift+↑↓", does: "to jump" } }, "block-down");
17
+ SETTINGS_SHORTCUTS.declare({ key: "pageUp", scope: SCOPE, description: "Up a page", section: "Navigate" }, "page-up");
18
+ SETTINGS_SHORTCUTS.declare({ key: "pageDown", scope: SCOPE, description: "Down a page", section: "Navigate" }, "page-down");
19
+ SETTINGS_SHORTCUTS.declare({ key: "home", scope: SCOPE, description: "First setting", section: "Navigate" }, "first");
20
+ SETTINGS_SHORTCUTS.declare({ key: "end", scope: SCOPE, description: "Last setting", section: "Navigate" }, "last");
21
+ SETTINGS_SHORTCUTS.declare({ key: "enter", scope: SCOPE, description: "Change value", section: "Change", hint: { keys: "Enter/Space", does: "to change" } }, "activate");
22
+ SETTINGS_SHORTCUTS.declare({ key: "space", scope: SCOPE, description: "Change value", section: "Change", hint: { keys: "Enter/Space", does: "to change" } }, "activate");
23
+ SETTINGS_SHORTCUTS.declare({ key: "left", scope: SCOPE, description: "Previous value", section: "Change", hint: { keys: "←→", does: "to adjust" } }, "previous-value");
24
+ SETTINGS_SHORTCUTS.declare({ key: "right", scope: SCOPE, description: "Next value", section: "Change", hint: { keys: "←→", does: "to adjust" } }, "next-value");
25
+ SETTINGS_SHORTCUTS.declare({ key: "escape", scope: GLOBAL_SCOPE, description: "Close", section: "Screen", hint: { keys: "Esc", does: "to cancel" } }, "close");
26
+ SETTINGS_SHORTCUTS.declare({ key: "enter", scope: DIALOG_SCOPE, description: "Change this part", section: "Parts", hint: { keys: "Enter/Space", does: "to change" } }, "part-change");
27
+ SETTINGS_SHORTCUTS.declare({ key: "space", scope: DIALOG_SCOPE, description: "Change this part", section: "Parts", hint: { keys: "Enter/Space", does: "to change" } }, "part-change");
28
+ SETTINGS_SHORTCUTS.declare({ key: "left", scope: DIALOG_SCOPE, description: "Change this part", section: "Parts" }, "part-change");
29
+ SETTINGS_SHORTCUTS.declare({ key: "right", scope: DIALOG_SCOPE, description: "Change this part", section: "Parts" }, "part-change");
30
+ SETTINGS_SHORTCUTS.declare({ key: "up", scope: DIALOG_SCOPE, description: "Previous part", section: "Parts" }, "part-previous");
31
+ SETTINGS_SHORTCUTS.declare({ key: "down", scope: DIALOG_SCOPE, description: "Next part", section: "Parts" }, "part-next");
32
+ const KEYS = {
33
+ "\u001b[A": "up",
34
+ "\u001b[B": "down",
35
+ "\u001b[1;2A": "shift+up",
36
+ "\u001b[1;2B": "shift+down",
37
+ "\u001b[D": "left",
38
+ "\u001b[C": "right",
39
+ "\u001b[5~": "pageUp",
40
+ "\u001b[6~": "pageDown",
41
+ "\u001b[H": "home",
42
+ "\u001b[F": "end",
43
+ "\u001b": "escape",
44
+ "\r": "enter",
45
+ "\n": "enter",
46
+ " ": "space",
47
+ "/": "/",
48
+ };
49
+ /**
50
+ * The settings screen. Rows, sticky headers, scrolling, and the keymap come from
51
+ * the shared component layer; what belongs to settings is which sections exist,
52
+ * how a value is shown, and where an accepted change is routed.
53
+ */
54
+ export class SettingsApp {
55
+ id = SETTINGS_APP_ID;
56
+ #session;
57
+ #selectedKey;
58
+ #scroll = 0;
59
+ #reveal;
60
+ #notice = null;
61
+ #filter = null;
62
+ #menu = null;
63
+ #structured = null;
64
+ #loading = true;
65
+ #interruptArmed = false;
66
+ /** Values requested but not yet reflected by the source, keyed by entry. */
67
+ #pending = new Map();
68
+ #footerHeight = 1;
69
+ /** Column the dialog's values start at, so a label stays a label. */
70
+ #dialogValueColumn = 0;
71
+ /** Screen row the dialog panel starts on, for pointer hits. */
72
+ #panelTop = 0;
73
+ #panelTopForFrame = 0;
74
+ /** Row key under the pointer, and where each row was drawn last frame. */
75
+ #hoverKey = null;
76
+ #hoverRegion = "label";
77
+ #frameRows = [];
78
+ /** Where the value menu was drawn last frame, for hit testing. */
79
+ #menuFrame = null;
80
+ constructor(session) {
81
+ this.#session = session;
82
+ }
83
+ onActivate(host) {
84
+ void this.#session.load().then(() => {
85
+ this.#loading = false;
86
+ host.requestRender();
87
+ });
88
+ }
89
+ render(rect, host) {
90
+ const theme = host.theme ?? PLAIN_THEME;
91
+ this.#interruptArmed = host.interruptArmed;
92
+ const rows = this.#rows();
93
+ const footer = this.#footerLines(rect.width, theme);
94
+ this.#footerHeight = footer.length;
95
+ this.#panelTopForFrame = Math.max(0, rect.height - footer.length);
96
+ this.#panelTop = this.#panelTopForFrame;
97
+ const bodyHeight = Math.max(0, rect.height - footer.length);
98
+ const selected = indexOfKey(rows, this.#selectedKey);
99
+ this.#scroll = scrollForSelection(rows, bodyHeight, this.#scroll, selected, this.#reveal);
100
+ this.#reveal = undefined;
101
+ const layout = layoutList(rows, bodyHeight, this.#scroll);
102
+ const contentWidth = Math.max(0, rect.width - RAIL_COLUMNS);
103
+ const valueColumn = this.#valueColumn(rows);
104
+ const geometry = scrollbarGeometry({
105
+ contentLength: rows.length,
106
+ viewportHeight: layout.visible,
107
+ scroll: layout.scroll,
108
+ trackHeight: Math.max(0, bodyHeight - SCROLLBAR_TOP_INSET),
109
+ });
110
+ const body = [];
111
+ this.#frameRows = [];
112
+ if (rows.length === 0) {
113
+ const message = this.#loading ? "Loading settings…" : "No settings found.";
114
+ body.push(...renderEmptyState(message, "👀", bodyHeight, contentWidth, theme));
115
+ }
116
+ else {
117
+ if (layout.topPadding > 0)
118
+ body.push("");
119
+ if (layout.stickyHeader !== undefined)
120
+ body.push(this.#header(layout.stickyHeader, theme, contentWidth));
121
+ for (const index of layout.rowIndexes) {
122
+ const row = rows[index];
123
+ if (row !== undefined && row.kind === "element") {
124
+ this.#frameRows.push({
125
+ key: `${row.value.backend}:${row.value.id}`,
126
+ screenRow: body.length,
127
+ valueColumn,
128
+ valueWidth: row.value.structured
129
+ ? CONFIGURE.length
130
+ : row.value.value === null ? 0 : displayWidth(displayValue(row.value.value)),
131
+ stepper: isStepper(row.value),
132
+ });
133
+ }
134
+ body.push(this.#renderRow(row, index === selected, contentWidth, valueColumn, theme));
135
+ }
136
+ while (body.length < bodyHeight)
137
+ body.push("");
138
+ }
139
+ const withRail = withScrollbarRail(body.slice(0, bodyHeight), geometry, contentWidth, theme, {
140
+ topInset: SCROLLBAR_TOP_INSET,
141
+ });
142
+ return this.#withMenu([...withRail, ...footer], selected, layout, valueColumn, theme, rect);
143
+ }
144
+ onInput(data, host) {
145
+ if (this.#structured !== null)
146
+ return this.#structuredKey(data);
147
+ if (this.#menu !== null)
148
+ return this.#menuKey(data);
149
+ if (this.#filter !== null)
150
+ return this.#filterKey(data);
151
+ const action = SETTINGS_SHORTCUTS.resolve(KEYS[data] ?? data, SCOPE);
152
+ if (action === null)
153
+ return { consumed: false };
154
+ const rows = this.#rows();
155
+ const selected = indexOfKey(rows, this.#selectedKey);
156
+ switch (action) {
157
+ case "close":
158
+ host.close();
159
+ return { consumed: true };
160
+ case "open-filter":
161
+ this.#filter = new LineInput("");
162
+ this.#notice = null;
163
+ return { consumed: true };
164
+ case "activate": {
165
+ const row = rows[selected];
166
+ if (row?.kind === "element" && row.value.structured)
167
+ this.#openStructured(row.value);
168
+ else
169
+ this.#cycle(rows, selected, 1);
170
+ return { consumed: true };
171
+ }
172
+ case "move-up":
173
+ case "move-down":
174
+ this.#select(rows, moveSelection(rows, selected, action === "move-down" ? 1 : -1));
175
+ return { consumed: true };
176
+ case "page-up":
177
+ case "page-down":
178
+ this.#select(rows, moveSelection(rows, selected, action === "page-down" ? 8 : -8));
179
+ return { consumed: true };
180
+ case "block-up":
181
+ case "block-down": {
182
+ const target = blockJumpTarget(rows, selected, action === "block-down" ? 1 : -1);
183
+ if (target !== undefined)
184
+ this.#jump(rows, target);
185
+ return { consumed: true };
186
+ }
187
+ case "first":
188
+ case "last": {
189
+ // End lands on the very last setting, not on the head of its section.
190
+ const selectable = selectableIndexes(rows);
191
+ const target = action === "last" ? selectable.at(-1) : selectable[0];
192
+ if (target !== undefined)
193
+ this.#jump(rows, target);
194
+ return { consumed: true };
195
+ }
196
+ case "previous-value":
197
+ case "next-value":
198
+ this.#cycle(rows, selected, action === "next-value" ? 1 : -1);
199
+ return { consumed: true };
200
+ default:
201
+ return { consumed: false };
202
+ }
203
+ }
204
+ onMouse(event, _host) {
205
+ const menu = this.#menu;
206
+ const frame = this.#menuFrame;
207
+ if (menu !== null && frame !== null) {
208
+ const overRow = menuRowAt(frame, event.row - 1, event.column);
209
+ const overMenu = overRow !== null;
210
+ if (event.kind === "motion") {
211
+ // The menu owns the pointer, but the row it came from is still the thing
212
+ // being changed, so its value keeps reading as the one under the pointer.
213
+ // Only a dialog that takes the screen puts that out.
214
+ const hadHover = this.#hoverKey !== menu.anchorKey || this.#hoverRegion !== "value";
215
+ this.#hoverKey = menu.anchorKey;
216
+ this.#hoverRegion = "value";
217
+ if (!overMenu) {
218
+ const cleared = menu.index !== -1;
219
+ menu.index = -1;
220
+ return { consumed: true, render: hadHover || cleared };
221
+ }
222
+ if (menu.index === overRow)
223
+ return { consumed: true, render: hadHover };
224
+ menu.index = overRow ?? -1;
225
+ return { consumed: true, render: true };
226
+ }
227
+ if (event.kind !== "press")
228
+ return { consumed: true, render: false };
229
+ if (overRow === null) {
230
+ // A press anywhere else dismisses the menu rather than acting through it.
231
+ this.#menu = null;
232
+ return { consumed: true };
233
+ }
234
+ const value = menu.choices[overRow];
235
+ this.#menu = null;
236
+ if (value !== undefined)
237
+ this.#apply(menu.entry, value);
238
+ return { consumed: true };
239
+ }
240
+ const open = this.#structured;
241
+ if (open !== null) {
242
+ // The panel owns the pointer while it is open; its flag rows are the targets.
243
+ // The panel's rows begin one line below its rule.
244
+ const panel = { firstRow: this.#panelTop + 1, rows: open.flags.length, valueColumn: this.#dialogValueColumn };
245
+ const row = event.row - 1 - panel.firstRow;
246
+ if (row < 0 || row >= panel.rows)
247
+ return { consumed: true, render: false };
248
+ if (event.kind === "motion") {
249
+ if (open.index === row)
250
+ return { consumed: true, render: false };
251
+ open.index = row;
252
+ return { consumed: true, render: true };
253
+ }
254
+ if (event.kind === "press") {
255
+ open.index = row;
256
+ // Pointing at the label picks the row; the value is what changes it,
257
+ // exactly as in the list behind the dialog.
258
+ const key = open.flags[row] ?? "";
259
+ const width = displayWidth((open.record[key] ?? false) ? "true" : "false");
260
+ if (dialogRowAt(panel, event.row - 1, event.column, width) !== null)
261
+ this.#toggleFlag(row);
262
+ return { consumed: true };
263
+ }
264
+ return { consumed: true, render: false };
265
+ }
266
+ const row = this.#frameRows.find(candidate => candidate.screenRow === event.row - 1);
267
+ const previousKey = this.#hoverKey;
268
+ const previousRegion = this.#hoverRegion;
269
+ if (row === undefined) {
270
+ this.#hoverKey = null;
271
+ this.#hoverRegion = "label";
272
+ return { consumed: event.kind !== "motion", render: previousKey !== null };
273
+ }
274
+ this.#hoverKey = row.key;
275
+ this.#hoverRegion = regionAt(row, event.column);
276
+ if (event.kind === "press") {
277
+ const rows = this.#rows();
278
+ const index = rows.findIndex(candidate => rowKey(candidate) === row.key);
279
+ if (index >= 0) {
280
+ // The pointer acts where it points; the arrow belongs to the keyboard.
281
+ this.#notice = null;
282
+ if (this.#hoverRegion === "minus")
283
+ this.#cycle(rows, index, -1);
284
+ else if (this.#hoverRegion === "plus")
285
+ this.#cycle(rows, index, 1);
286
+ else if (this.#hoverRegion === "value")
287
+ this.#openMenu(rows, index);
288
+ }
289
+ return { consumed: true };
290
+ }
291
+ if (event.kind === "wheel-up" || event.kind === "wheel-down") {
292
+ this.#scroll = Math.max(0, this.#scroll + (event.kind === "wheel-down" ? 3 : -3));
293
+ return { consumed: true };
294
+ }
295
+ const changed = previousKey !== this.#hoverKey || previousRegion !== this.#hoverRegion;
296
+ return { consumed: event.kind !== "motion", render: changed };
297
+ }
298
+ #openMenu(rows, selected) {
299
+ const row = rows[selected];
300
+ if (row === undefined || row.kind !== "element")
301
+ return;
302
+ const entry = row.value;
303
+ if (entry.structured) {
304
+ this.#openStructured(entry);
305
+ return;
306
+ }
307
+ const shown = this.#shownValue(entry);
308
+ // A number is stepped, not picked from a list: it has its own two controls,
309
+ // and pointing at it is not a request for anything else.
310
+ if (typeof shown === "number")
311
+ return;
312
+ if (!entry.editable || entry.choices === null || entry.choices.length === 0) {
313
+ this.#notice = `${labelOf(entry)} cannot be changed here`;
314
+ return;
315
+ }
316
+ const current = shown === null ? 0 : Math.max(0, entry.choices.indexOf(shown));
317
+ // Nothing is highlighted until the pointer or a key picks a row, so opening
318
+ // the menu does not flash a highlight the reader did not ask for.
319
+ this.#menu = { entry, current, anchorKey: `${entry.backend}:${entry.id}`, choices: entry.choices, index: -1 };
320
+ }
321
+ /**
322
+ * A structured setting is a set of flags, so it opens as its own list rather
323
+ * than as a value menu: each row names one flag and toggles it in place.
324
+ */
325
+ #openStructured(entry) {
326
+ // The flags come from the declaration, not from the stored value: an unset
327
+ // flag still has a row, showing the default the source would apply.
328
+ if (entry.flags.length === 0) {
329
+ this.#notice = `${labelOf(entry)} has nothing to configure`;
330
+ return;
331
+ }
332
+ const stored = typeof entry.rawValue === "object" && entry.rawValue !== null && !Array.isArray(entry.rawValue)
333
+ ? entry.rawValue
334
+ : {};
335
+ const record = {};
336
+ for (const flag of entry.flags) {
337
+ const value = stored[flag.key];
338
+ record[flag.key] = typeof value === "boolean" ? value : flag.fallback;
339
+ }
340
+ // The dialog takes the screen: the row it was opened from stops being the
341
+ // thing under the pointer, so it stops looking like it.
342
+ this.#hoverKey = null;
343
+ this.#hoverRegion = "label";
344
+ this.#structured = { entry, flags: entry.flags.map(flag => flag.key), index: 0, record };
345
+ }
346
+ #structuredKey(data) {
347
+ const open = this.#structured;
348
+ if (open === null)
349
+ return { consumed: false };
350
+ switch (SETTINGS_SHORTCUTS.resolve(KEYS[data] ?? data, DIALOG_SCOPE)) {
351
+ case "close":
352
+ this.#structured = null;
353
+ return { consumed: true };
354
+ case "part-previous":
355
+ open.index = Math.max(0, open.index - 1);
356
+ return { consumed: true };
357
+ case "part-next":
358
+ open.index = Math.min(open.flags.length - 1, open.index + 1);
359
+ return { consumed: true };
360
+ case "part-change":
361
+ this.#toggleFlag(open.index);
362
+ return { consumed: true };
363
+ default:
364
+ return { consumed: true, render: false };
365
+ }
366
+ }
367
+ #toggleFlag(index) {
368
+ const open = this.#structured;
369
+ const flag = open?.flags[index];
370
+ if (open === null || open === undefined || flag === undefined)
371
+ return;
372
+ open.record[flag] = !(open.record[flag] ?? false);
373
+ const next = { ...open.record };
374
+ void this.#session.changeStructured(open.entry.backend, open.entry.id, next).then(outcome => {
375
+ this.#notice = outcome.failure === null ? null : `Could not save ${labelOf(open.entry)}: ${outcome.failure}`;
376
+ });
377
+ }
378
+ #menuKey(data) {
379
+ const menu = this.#menu;
380
+ if (menu === null)
381
+ return { consumed: false };
382
+ const key = KEYS[data] ?? data;
383
+ if (key === "escape") {
384
+ this.#menu = null;
385
+ return { consumed: true };
386
+ }
387
+ if (key === "up" || key === "down") {
388
+ // The keyboard starts from the value in effect rather than from the top.
389
+ menu.index = menu.index < 0
390
+ ? menu.current
391
+ : Math.min(menu.choices.length - 1, Math.max(0, menu.index + (key === "down" ? 1 : -1)));
392
+ }
393
+ else if (key === "enter") {
394
+ const value = menu.choices[menu.index];
395
+ this.#menu = null;
396
+ if (value !== undefined)
397
+ this.#apply(menu.entry, value);
398
+ }
399
+ return { consumed: true };
400
+ }
401
+ #filterKey(data) {
402
+ const input = this.#filter;
403
+ if (input === null)
404
+ return { consumed: false };
405
+ const key = KEYS[data];
406
+ if (key === "up" || key === "down" || key === "shift+up" || key === "shift+down") {
407
+ const rows = this.#rows();
408
+ // Nothing found means nothing to move through; the key is still swallowed
409
+ // rather than typed into the search.
410
+ if (selectableIndexes(rows).length === 0)
411
+ return { consumed: true, render: false };
412
+ const selected = indexOfKey(rows, this.#selectedKey);
413
+ const forward = key === "down" || key === "shift+down";
414
+ if (key === "shift+up" || key === "shift+down") {
415
+ const target = blockJumpTarget(rows, selected, forward ? 1 : -1);
416
+ if (target !== undefined)
417
+ this.#jump(rows, target);
418
+ return { consumed: true };
419
+ }
420
+ this.#select(rows, moveSelection(rows, selected, forward ? 1 : -1));
421
+ return { consumed: true };
422
+ }
423
+ const outcome = handleLineInputKey(input, data);
424
+ if (outcome.kind === "cancelled")
425
+ this.#filter = null;
426
+ this.#scroll = 0;
427
+ return { consumed: true };
428
+ }
429
+ #cycle(rows, selected, delta) {
430
+ const row = rows[selected];
431
+ if (row === undefined || row.kind !== "element")
432
+ return;
433
+ const entry = row.value;
434
+ if (!entry.editable) {
435
+ this.#notice = `${labelOf(entry)} cannot be changed here`;
436
+ return;
437
+ }
438
+ const shown = this.#shownValue(entry);
439
+ if (typeof shown === "number") {
440
+ // At the end of the range there is nothing to say: the arrow already reads
441
+ // as unavailable, so a message would only repeat it.
442
+ const next = steppedValue(rangeOf(entry), shown, delta);
443
+ if (next !== null)
444
+ this.#apply(entry, next);
445
+ return;
446
+ }
447
+ const choices = entry.choices;
448
+ if (choices === null || choices.length === 0) {
449
+ this.#notice = `${labelOf(entry)} cannot be changed here`;
450
+ return;
451
+ }
452
+ const current = shown === null ? -1 : choices.indexOf(shown);
453
+ const next = choices[current < 0
454
+ ? (delta > 0 ? 0 : choices.length - 1)
455
+ : (current + delta + choices.length) % choices.length];
456
+ if (next !== undefined)
457
+ this.#apply(entry, next);
458
+ }
459
+ #apply(entry, value) {
460
+ const key = `${entry.backend}:${entry.id}`;
461
+ // Shown immediately so the row never lags a keypress, and so the next press
462
+ // steps from here rather than from a value the source has not caught up to.
463
+ this.#pending.set(key, value);
464
+ void this.#session.change(entry.backend, entry.id, value).then(outcome => {
465
+ if (outcome.failure !== null) {
466
+ this.#pending.delete(key);
467
+ this.#notice = `Could not save ${labelOf(entry)}: ${outcome.failure}`;
468
+ return;
469
+ }
470
+ // A later press may have moved on; only the last request clears itself.
471
+ if (this.#pending.get(key) === value)
472
+ this.#pending.delete(key);
473
+ this.#notice = outcome.pendingRestart ? `${labelOf(entry)} applies on the next start` : null;
474
+ });
475
+ }
476
+ /** What the row shows: the value asked for if one is outstanding, else the source's. */
477
+ #shownValue(entry) {
478
+ return this.#pending.get(`${entry.backend}:${entry.id}`) ?? entry.value;
479
+ }
480
+ #jump(rows, target) {
481
+ this.#select(rows, target);
482
+ this.#reveal = blockRowSpan(rows, target);
483
+ }
484
+ #select(rows, index) {
485
+ if (index < 0)
486
+ return;
487
+ this.#selectedKey = rowKey(rows[index]);
488
+ this.#notice = null;
489
+ }
490
+ #rows() {
491
+ const needle = this.#filter?.value.trim().toLowerCase() ?? "";
492
+ const matches = (entry) => needle.length === 0
493
+ || entry.id.toLowerCase().includes(needle)
494
+ || labelOf(entry).toLowerCase().includes(needle);
495
+ const rows = [];
496
+ for (const section of this.#session.sections()) {
497
+ // A section named by the search is what the reader asked for, so it arrives
498
+ // whole rather than narrowed to the entries that happen to repeat its name.
499
+ const named = needle.length > 0 && section.title.toLowerCase().includes(needle);
500
+ const entries = named ? section.entries : section.entries.filter(matches);
501
+ if (needle.length > 0 && entries.length === 0)
502
+ continue;
503
+ if (rows.length > 0)
504
+ rows.push({ kind: "spacer" });
505
+ rows.push({ kind: "group", group: section.id, title: section.title });
506
+ if (section.unavailableReason !== null) {
507
+ rows.push({ kind: "note", group: section.id, text: section.unavailableReason });
508
+ continue;
509
+ }
510
+ if (section.readOnlyReason !== null && (needle.length === 0 || named)) {
511
+ rows.push({ kind: "note", group: section.id, text: section.readOnlyReason });
512
+ }
513
+ // Presented in the order the source reports, which is the order the
514
+ // pinned engine shows and is neither declaration order nor alphabetical.
515
+ for (const entry of entries) {
516
+ rows.push({
517
+ kind: "element",
518
+ group: section.id,
519
+ key: `${entry.backend}:${entry.id}`,
520
+ selectable: entry.editable,
521
+ value: entry,
522
+ });
523
+ }
524
+ }
525
+ return rows;
526
+ }
527
+ #valueColumn(rows) {
528
+ const shown = rows.flatMap(row => (row.kind === "element" ? [this.#viewRow(row.value)] : []));
529
+ return valueColumnFor(shown);
530
+ }
531
+ #header(title, theme, width) {
532
+ return renderGroupHeader(humanizeTitle(title), width, theme);
533
+ }
534
+ #renderRow(row, selected, width, valueColumn, theme) {
535
+ if (row === undefined || row.kind === "spacer")
536
+ return "";
537
+ if (row.kind === "group")
538
+ return this.#header(row.title, theme, width);
539
+ if (row.kind === "note")
540
+ return renderNote(row.text, width, theme);
541
+ const entry = row.value;
542
+ const key = `${entry.backend}:${entry.id}`;
543
+ const hovered = this.#hoverKey === key;
544
+ return renderListRow(this.#viewRow(entry), { selected, hovered, region: this.#hoverRegion }, valueColumn, width, theme);
545
+ }
546
+ /** What the list view needs to draw a setting: its words, and where it can go. */
547
+ #viewRow(entry) {
548
+ const shown = this.#shownValue(entry);
549
+ const value = entry.structured
550
+ ? CONFIGURE
551
+ : shown === null ? describeRaw(entry.rawValue) : displayValue(shown);
552
+ const range = rangeOf(entry);
553
+ return {
554
+ key: `${entry.backend}:${entry.id}`,
555
+ label: labelOf(entry),
556
+ value,
557
+ ...(entry.origin === "default" ? { suffix: "(default)" } : {}),
558
+ ...(typeof shown === "number" && entry.editable ? { stepper: stepperEnds(range, shown) } : {}),
559
+ };
560
+ }
561
+ #withMenu(lines, _selected, _layout, valueColumn, theme, rect) {
562
+ const menu = this.#menu;
563
+ const anchor = menu === null ? undefined : this.#frameRows.find(candidate => candidate.key === menu.anchorKey);
564
+ if (menu === null || anchor === undefined) {
565
+ this.#menuFrame = null;
566
+ return lines;
567
+ }
568
+ const state = {
569
+ choices: menu.choices.map(choice => displayValue(choice)),
570
+ current: this.#shownValue(menu.entry) === null ? null : displayValue(this.#shownValue(menu.entry)),
571
+ index: menu.index,
572
+ };
573
+ const frame = valueMenuFrame(state, { screenRow: anchor.screenRow, valueColumn }, {
574
+ bodyHeight: lines.length - this.#footerHeight,
575
+ surfaceWidth: rect.width,
576
+ reservedRight: RAIL_COLUMNS,
577
+ });
578
+ this.#menuFrame = frame;
579
+ return renderValueMenu(lines, state, frame, theme);
580
+ }
581
+ /** What the panel needs to present a structured setting's parts. */
582
+ #dialogLines(open, width, theme) {
583
+ const rows = open.flags.map(key => {
584
+ const declared = open.entry.flags.find(flag => flag.key === key);
585
+ return {
586
+ label: declared?.label ?? humanizeLabel(key),
587
+ // The engine writes these as the booleans they are rather than as yes/no.
588
+ value: (open.record[key] ?? false) ? "true" : "false",
589
+ ...(declared?.description === undefined ? {} : { description: declared.description }),
590
+ };
591
+ });
592
+ this.#dialogValueColumn = dialogValueColumn(rows);
593
+ this.#panelTop = this.#panelTopForFrame;
594
+ return renderDialogPanel({ rows, index: open.index, hint: SETTINGS_SHORTCUTS.hint(DIALOG_SCOPE) }, width, theme);
595
+ }
596
+ #footerLines(width, theme) {
597
+ const open = this.#structured;
598
+ if (open !== null)
599
+ return this.#dialogLines(open, width, theme);
600
+ // The hint is the declarations, so a key cannot be described here and bound
601
+ // to something else.
602
+ const hint = this.#interruptArmed ? "press ctrl+c again to exit A1" : SETTINGS_SHORTCUTS.hint(SCOPE);
603
+ const status = renderStatusLine({ hint, report: this.#notice }, width, theme);
604
+ const input = this.#filter;
605
+ if (input === null)
606
+ return [status];
607
+ return [...renderInputRow(input, width, { placeholder: SEARCH_PLACEHOLDER }).lines, status];
608
+ }
609
+ }
610
+ /** The source's own wording when it has one, otherwise the id made readable. */
611
+ function labelOf(entry) {
612
+ return entry.label ?? humanizeLabel(entry.id);
613
+ }
614
+ function isStepper(entry, shown = entry.value) {
615
+ return typeof shown === "number" && entry.editable;
616
+ }
617
+ /** Where a setting's number may go: what the engine states, or what it offers. */
618
+ function rangeOf(entry) {
619
+ return { minimum: entry.minimum, maximum: entry.maximum, values: numericValues(entry.choices) };
620
+ }
621
+ /** Booleans read as yes and no; everything else prints as itself. */
622
+ function displayValue(value) {
623
+ if (typeof value === "boolean")
624
+ return value ? "yes" : "no";
625
+ return String(value);
626
+ }
627
+ function describeRaw(value) {
628
+ if (value === null || value === undefined)
629
+ return "unset";
630
+ if (typeof value === "object")
631
+ return Array.isArray(value) ? `${value.length} items` : "structured value";
632
+ return String(value);
633
+ }
@@ -29,4 +29,3 @@ export type WorkspaceActionGateResult = {
29
29
  };
30
30
  export declare function gateWorkspaceAction(agent: ManagedAgentDescriptor, action: WorkspaceCapabilityAction): WorkspaceActionGateResult;
31
31
  export declare function availableWorkspaceActions(agent: ManagedAgentDescriptor): readonly WorkspaceCapabilityActionType[];
32
- //# sourceMappingURL=capabilities.d.ts.map
@@ -73,4 +73,3 @@ function allow(action) {
73
73
  function reject(code, diagnostic) {
74
74
  return { kind: "rejected", code, diagnostic };
75
75
  }
76
- //# sourceMappingURL=capabilities.js.map
@@ -4,4 +4,3 @@ export * from "./reconciliation.js";
4
4
  export * from "./reducer.js";
5
5
  export * from "./router.js";
6
6
  export * from "./store.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@ export * from "./reconciliation.js";
4
4
  export * from "./reducer.js";
5
5
  export * from "./router.js";
6
6
  export * from "./store.js";
7
- //# sourceMappingURL=index.js.map
@@ -19,7 +19,7 @@ export interface WorkspaceAgentPresentationRow {
19
19
  }
20
20
  export interface WorkspacePresentationModel {
21
21
  readonly role: "listbox";
22
- readonly label: "AddOne agents";
22
+ readonly label: string;
23
23
  readonly selectedAgentId: string | null;
24
24
  readonly rows: readonly WorkspaceAgentPresentationRow[];
25
25
  readonly overflowCount: number;
@@ -28,4 +28,3 @@ export interface WorkspacePresentationModel {
28
28
  }
29
29
  export declare function presentWorkspace(view: WorkspaceView, options?: WorkspacePresentationOptions): WorkspacePresentationModel;
30
30
  export declare function workspaceSelectionForKey(view: WorkspaceView, key: "ArrowDown" | "ArrowUp" | "Home" | "End"): string | null;
31
- //# sourceMappingURL=presentation.d.ts.map