@pellux/goodvibes-tui 1.27.0 → 2.0.1

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 (404) hide show
  1. package/CHANGELOG.md +125 -2
  2. package/README.md +7 -9
  3. package/bin/goodvibes +2 -2
  4. package/bin/launcher-support.js +8 -4
  5. package/docs/README.md +11 -2
  6. package/docs/foundation-artifacts/operator-contract.json +6403 -2347
  7. package/package.json +14 -25
  8. package/scripts/postinstall.js +35 -35
  9. package/src/audio/spoken-turn-model-routing.ts +1 -1
  10. package/src/cli/bundle-command.ts +5 -5
  11. package/src/cli/completions/generate.ts +1 -1
  12. package/src/cli/doctor.ts +3 -3
  13. package/src/cli/entrypoint.ts +12 -7
  14. package/src/cli/help.ts +4 -5
  15. package/src/cli/hooks-command.ts +1 -1
  16. package/src/cli/index.ts +1 -4
  17. package/src/cli/launch-auto-update.ts +59 -7
  18. package/src/cli/management-commands.ts +6 -6
  19. package/src/cli/management-utils.ts +5 -5
  20. package/src/cli/management.ts +7 -7
  21. package/src/cli/network-posture.ts +1 -1
  22. package/src/cli/package-verification.ts +7 -6
  23. package/src/cli/plugin-bundles-command.ts +1 -1
  24. package/src/cli/plugin-command.ts +2 -2
  25. package/src/cli/service-command.ts +2 -2
  26. package/src/cli/service-posture.ts +4 -4
  27. package/src/cli/status.ts +9 -8
  28. package/src/cli/surface-command.ts +4 -4
  29. package/src/cli/tui-startup.ts +12 -3
  30. package/src/cli-flags.ts +3 -3
  31. package/src/config/goodvibes-home-audit.ts +0 -2
  32. package/src/config/secret-config.ts +37 -5
  33. package/src/config/tui-extension-settings.ts +1 -1
  34. package/src/core/approval-alert.ts +2 -2
  35. package/src/core/budget-breach-notifier.ts +3 -3
  36. package/src/core/conversation-compaction-render.ts +1 -1
  37. package/src/core/conversation-line-cache.ts +1 -1
  38. package/src/core/conversation-render-context.ts +1 -1
  39. package/src/core/conversation-rendering.ts +2 -2
  40. package/src/core/conversation.ts +10 -10
  41. package/src/core/long-task-notifier.ts +2 -2
  42. package/src/core/memory-diagnostics-gateway.ts +1 -1
  43. package/src/core/scriptable-statusline.ts +1 -1
  44. package/src/core/session-auto-titler.ts +1 -1
  45. package/src/core/session-resume-core.ts +2 -2
  46. package/src/core/stream-event-wiring.ts +24 -44
  47. package/src/core/terminal-notifier.ts +3 -3
  48. package/src/core/turn-cancellation.ts +1 -1
  49. package/src/core/turn-event-wiring.ts +5 -5
  50. package/src/input/command-registry.ts +6 -6
  51. package/src/input/commands/channel-pairing.ts +1 -1
  52. package/src/input/commands/cluster-runtime.ts +1 -1
  53. package/src/input/commands/codebase-runtime.ts +1 -1
  54. package/src/input/commands/devices-runtime.ts +1 -1
  55. package/src/input/commands/hosted-runtime.ts +330 -0
  56. package/src/input/commands/local-setup-review.ts +1 -1
  57. package/src/input/commands/local-setup-transfer.ts +2 -2
  58. package/src/input/commands/local-setup.ts +3 -3
  59. package/src/input/commands/managed-runtime.ts +2 -2
  60. package/src/input/commands/operator-rpc.ts +24 -110
  61. package/src/input/commands/payment-card-intake.ts +1 -1
  62. package/src/input/commands/permissions-provenance.ts +2 -2
  63. package/src/input/commands/plugin-runtime.ts +1 -1
  64. package/src/input/commands/provider.ts +1 -1
  65. package/src/input/commands/relay-runtime.ts +18 -9
  66. package/src/input/commands/rewind-runtime.ts +1 -1
  67. package/src/input/commands/runtime-services.ts +1 -1
  68. package/src/input/commands/services-runtime.ts +1 -1
  69. package/src/input/commands/session-workflow.ts +1 -1
  70. package/src/input/commands/settings-sync-runtime.ts +2 -2
  71. package/src/input/commands/share-runtime.ts +1 -1
  72. package/src/input/commands/tasks-runtime.ts +145 -55
  73. package/src/input/commands/update-runtime.ts +31 -28
  74. package/src/input/commands/work-plan-runtime.ts +2 -2
  75. package/src/input/commands/workstream-attempts.ts +1 -1
  76. package/src/input/commands/workstream-runtime.ts +2 -2
  77. package/src/input/commands.ts +2 -0
  78. package/src/input/feature-unit-layout.ts +1 -1
  79. package/src/input/feed-context-factory.ts +3 -3
  80. package/src/input/handler-content-actions.ts +2 -2
  81. package/src/input/handler-feed-routes.ts +1 -1
  82. package/src/input/handler-feed.ts +3 -3
  83. package/src/input/handler-modal-token-routes.ts +1 -1
  84. package/src/input/handler-onboarding-daemon-adopt.ts +3 -2
  85. package/src/input/handler-onboarding.ts +1 -1
  86. package/src/input/handler-types.ts +2 -2
  87. package/src/input/handler-ui-state.ts +1 -1
  88. package/src/input/handler.ts +4 -4
  89. package/src/input/input-history.ts +1 -1
  90. package/src/input/onboarding/onboarding-feature-units.ts +2 -2
  91. package/src/input/onboarding/onboarding-runtime-status.ts +15 -1
  92. package/src/input/onboarding/onboarding-wizard-apply.ts +17 -8
  93. package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +5 -3
  94. package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +1 -1
  95. package/src/input/onboarding/onboarding-wizard-types.ts +1 -1
  96. package/src/input/payments-config.ts +6 -6
  97. package/src/input/search.ts +1 -1
  98. package/src/input/session-picker-modal.ts +46 -0
  99. package/src/input/settings-modal-activation.ts +1 -1
  100. package/src/input/settings-modal-behavior.ts +4 -4
  101. package/src/input/settings-modal-commit.ts +11 -0
  102. package/src/input/settings-modal-data.ts +13 -80
  103. package/src/input/settings-modal-mutations.ts +33 -0
  104. package/src/input/settings-modal-secrets.ts +34 -0
  105. package/src/input/settings-modal-subscriptions.ts +1 -1
  106. package/src/input/settings-modal-types.ts +15 -1
  107. package/src/input/settings-modal.ts +28 -3
  108. package/src/input/worktree-setup-config.ts +1 -1
  109. package/src/main.ts +11 -9
  110. package/src/panels/agent-inspector-shared.ts +2 -2
  111. package/src/panels/base-panel.ts +2 -2
  112. package/src/panels/builtin/operations.ts +6 -8
  113. package/src/panels/builtin/session.ts +17 -0
  114. package/src/panels/builtin/shared.ts +5 -5
  115. package/src/panels/builtin-modals.ts +3 -3
  116. package/src/panels/confirm-state.ts +1 -1
  117. package/src/panels/cost-tracker-panel.ts +4 -4
  118. package/src/panels/diff-panel.ts +2 -2
  119. package/src/panels/diff-review-panel.ts +2 -2
  120. package/src/panels/expandable-list-panel.ts +2 -2
  121. package/src/panels/fleet-acts.ts +1 -1
  122. package/src/panels/fleet-observed-render.ts +1 -1
  123. package/src/panels/fleet-panel-format.ts +1 -1
  124. package/src/panels/fleet-panel.ts +1 -1
  125. package/src/panels/fleet-spawn.ts +1 -1
  126. package/src/panels/fleet-steer.ts +1 -1
  127. package/src/panels/fleet-transcript.ts +1 -1
  128. package/src/panels/git-panel.ts +1 -1
  129. package/src/panels/hosted-session-feed.ts +352 -0
  130. package/src/panels/hosted-session-panel.ts +221 -0
  131. package/src/panels/local-auth-panel.ts +3 -3
  132. package/src/panels/modals/devices-modal.ts +1 -1
  133. package/src/panels/modals/local-auth-modal.ts +1 -1
  134. package/src/panels/modals/pairing-modal.ts +1 -1
  135. package/src/panels/modals/services-modal.ts +1 -1
  136. package/src/panels/modals/settings-sync-modal.ts +1 -1
  137. package/src/panels/modals/subscription-modal.ts +1 -1
  138. package/src/panels/modals/work-plan-modal.ts +1 -1
  139. package/src/panels/notifications-panel.ts +1 -1
  140. package/src/panels/panel-confirm-overlay.ts +1 -1
  141. package/src/panels/plugins-panel.ts +2 -2
  142. package/src/panels/polish-core.ts +2 -2
  143. package/src/panels/polish-tables.ts +1 -1
  144. package/src/panels/polish.ts +2 -2
  145. package/src/panels/scrollable-list-panel.ts +3 -3
  146. package/src/panels/skills-panel.ts +3 -3
  147. package/src/panels/token-budget-panel.ts +5 -5
  148. package/src/panels/types.ts +1 -2
  149. package/src/permissions/prompt.ts +1 -1
  150. package/src/renderer/autocomplete-overlay.ts +1 -1
  151. package/src/renderer/block-actions-overlay.ts +1 -1
  152. package/src/renderer/bookmark-modal.ts +1 -1
  153. package/src/renderer/buffer.ts +1 -1
  154. package/src/renderer/code-block.ts +1 -1
  155. package/src/renderer/composer-fragments.ts +1 -1
  156. package/src/renderer/compositor.ts +2 -2
  157. package/src/renderer/config-modal.ts +1 -1
  158. package/src/renderer/context-inspector.ts +1 -1
  159. package/src/renderer/conversation-layout.ts +2 -2
  160. package/src/renderer/conversation-overlays.ts +1 -1
  161. package/src/renderer/conversation-surface.ts +2 -2
  162. package/src/renderer/diff-view.ts +1 -1
  163. package/src/renderer/diff.ts +1 -1
  164. package/src/renderer/file-picker-overlay.ts +1 -1
  165. package/src/renderer/fleet-tab-strip.ts +1 -1
  166. package/src/renderer/fullscreen-primitives.ts +2 -2
  167. package/src/renderer/fullscreen-workspace.ts +1 -1
  168. package/src/renderer/header-line.ts +1 -1
  169. package/src/renderer/help-overlay.ts +1 -1
  170. package/src/renderer/history-search-overlay.ts +2 -2
  171. package/src/renderer/layout.ts +5 -8
  172. package/src/renderer/markdown-inline.ts +1 -1
  173. package/src/renderer/markdown-table.ts +1 -1
  174. package/src/renderer/markdown.ts +1 -1
  175. package/src/renderer/mcp-workspace.ts +1 -1
  176. package/src/renderer/modal-factory.ts +2 -2
  177. package/src/renderer/model-workspace.ts +2 -2
  178. package/src/renderer/onboarding/onboarding-wizard.ts +1 -1
  179. package/src/renderer/overlay-box.ts +1 -1
  180. package/src/renderer/panel-composite.ts +1 -1
  181. package/src/renderer/panel-workspace-bar.ts +1 -1
  182. package/src/renderer/process-indicator.ts +1 -1
  183. package/src/renderer/profile-picker-modal.ts +1 -1
  184. package/src/renderer/search-overlay.ts +2 -2
  185. package/src/renderer/selection-modal-overlay.ts +1 -1
  186. package/src/renderer/session-picker-modal.ts +124 -3
  187. package/src/renderer/settings-modal-helpers.ts +2 -0
  188. package/src/renderer/settings-modal.ts +2 -2
  189. package/src/renderer/shell-surface.ts +2 -2
  190. package/src/renderer/system-message.ts +1 -1
  191. package/src/renderer/tab-strip.ts +1 -1
  192. package/src/renderer/theme-mode-config.ts +1 -1
  193. package/src/renderer/theme.ts +11 -12
  194. package/src/renderer/thinking.ts +1 -1
  195. package/src/renderer/tool-call.ts +2 -2
  196. package/src/renderer/tool-result-expanded-lines.ts +1 -1
  197. package/src/renderer/turn-injection.ts +7 -8
  198. package/src/renderer/ui-factory.ts +3 -3
  199. package/src/runtime/bootstrap-command-context.ts +4 -4
  200. package/src/runtime/bootstrap-command-parts.ts +5 -5
  201. package/src/runtime/bootstrap-core.ts +30 -30
  202. package/src/runtime/bootstrap-shell.ts +4 -4
  203. package/src/runtime/bootstrap.ts +128 -157
  204. package/src/runtime/client/approval-updates.ts +82 -0
  205. package/src/runtime/client/build-floors.ts +167 -0
  206. package/src/runtime/client/daemon-attach-handshake.ts +115 -0
  207. package/src/runtime/client/fleet-union.ts +147 -0
  208. package/src/runtime/client/host-service-status.ts +71 -0
  209. package/src/runtime/client/hosted-exit.ts +86 -0
  210. package/src/runtime/client/hosted-roster.ts +110 -0
  211. package/src/runtime/client/hosted-session-stream.ts +178 -0
  212. package/src/runtime/client/hosted-sessions.ts +187 -0
  213. package/src/runtime/client/operator-endpoint.ts +213 -0
  214. package/src/runtime/client/spine-adoption.ts +99 -0
  215. package/src/runtime/cloudflare-control-plane.ts +1 -1
  216. package/src/runtime/context-accounting-source.ts +1 -1
  217. package/src/runtime/context.ts +2 -2
  218. package/src/runtime/conversation-rewind-port.ts +42 -14
  219. package/src/runtime/daemon-attach-notices.ts +55 -19
  220. package/src/runtime/diagnostics/panels/ops.ts +1 -1
  221. package/src/runtime/disposal-wiring.ts +4 -24
  222. package/src/runtime/index.ts +119 -105
  223. package/src/runtime/install-self-check-startup.ts +2 -2
  224. package/src/runtime/interaction-seams.ts +1 -1
  225. package/src/runtime/knowledge-services.ts +8 -2
  226. package/src/runtime/legacy-daemon-migration.ts +15 -3
  227. package/src/runtime/legacy-daemon-reconcile.ts +3 -2
  228. package/src/runtime/memory-spine-transport.ts +37 -267
  229. package/src/runtime/notification-dispatch.ts +2 -2
  230. package/src/runtime/onboarding/apply.ts +2 -2
  231. package/src/runtime/onboarding/derivation.ts +2 -2
  232. package/src/runtime/onboarding/markers.ts +2 -2
  233. package/src/runtime/onboarding/progress.ts +2 -2
  234. package/src/runtime/onboarding/snapshot.ts +1 -1
  235. package/src/runtime/onboarding/state.ts +2 -2
  236. package/src/runtime/onboarding/types.ts +2 -2
  237. package/src/runtime/orchestrator-core-services.ts +1 -1
  238. package/src/runtime/path-shadow-startup.ts +28 -221
  239. package/src/runtime/power-keepawake-remote.ts +3 -2
  240. package/src/runtime/process-lifecycle.ts +2 -2
  241. package/src/runtime/provider-fallback.ts +10 -66
  242. package/src/runtime/recovery-autosave.ts +1 -1
  243. package/src/runtime/recovery-offer-wiring.ts +39 -23
  244. package/src/runtime/recovery-prompt.ts +31 -17
  245. package/src/runtime/relay-reachability-bridge.ts +53 -42
  246. package/src/runtime/release-artifacts.ts +2 -1
  247. package/src/runtime/runtime-services-types.ts +82 -35
  248. package/src/runtime/services.ts +305 -300
  249. package/src/runtime/session-resume-liveness-confirm.ts +1 -1
  250. package/src/runtime/ui-services.ts +7 -6
  251. package/src/runtime/update-check.ts +23 -43
  252. package/src/runtime/workspace-checkpointing.ts +1 -1
  253. package/src/runtime/wrfc-persistence.ts +2 -2
  254. package/src/shell/ui-openers.ts +30 -7
  255. package/src/utils/clipboard.ts +1 -1
  256. package/src/verification/verification-ledger.ts +10 -8
  257. package/src/version.ts +1 -1
  258. package/bin/goodvibes-daemon +0 -90
  259. package/src/cli/config-overrides.ts +0 -267
  260. package/src/cli/endpoints.ts +0 -109
  261. package/src/cli/parser.ts +0 -395
  262. package/src/cli/redaction.ts +0 -170
  263. package/src/cli/types.ts +0 -84
  264. package/src/cluster/commands.ts +0 -382
  265. package/src/cluster/remote-daemon-target.ts +0 -225
  266. package/src/cluster/render.ts +0 -268
  267. package/src/config/atomic-write.ts +0 -70
  268. package/src/config/credential-availability.ts +0 -122
  269. package/src/config/goodvibes-home.ts +0 -149
  270. package/src/config/index.ts +0 -88
  271. package/src/config/provider-model.ts +0 -23
  272. package/src/config/read-versioned.ts +0 -228
  273. package/src/core/alert-gating.ts +0 -67
  274. package/src/core/consolidation-receipt.ts +0 -41
  275. package/src/core/focus-tracker.ts +0 -41
  276. package/src/core/history.ts +0 -45
  277. package/src/core/memory-status.ts +0 -118
  278. package/src/core/orchestrator.ts +0 -7
  279. package/src/core/pairing-devices.ts +0 -49
  280. package/src/core/pairing-handoff.ts +0 -101
  281. package/src/core/pairing-offers.ts +0 -83
  282. package/src/core/pairing-origin.ts +0 -78
  283. package/src/core/rewind-turn-anchors.ts +0 -311
  284. package/src/core/session-recovery.ts +0 -210
  285. package/src/core/stable-host.ts +0 -171
  286. package/src/core/transcript-journal.ts +0 -503
  287. package/src/daemon/cli.ts +0 -641
  288. package/src/daemon/handlers/context.ts +0 -29
  289. package/src/daemon/handlers/contracts.ts +0 -77
  290. package/src/daemon/handlers/credentials.ts +0 -139
  291. package/src/daemon/handlers/drafts/draft-store.ts +0 -427
  292. package/src/daemon/handlers/drafts/index.ts +0 -17
  293. package/src/daemon/handlers/drafts/register.ts +0 -331
  294. package/src/daemon/handlers/errors.ts +0 -18
  295. package/src/daemon/handlers/inbox/cursor-store.ts +0 -457
  296. package/src/daemon/handlers/inbox/index.ts +0 -284
  297. package/src/daemon/handlers/inbox/mapping.ts +0 -192
  298. package/src/daemon/handlers/inbox/poller.ts +0 -212
  299. package/src/daemon/handlers/inbox/provider-adapter.ts +0 -156
  300. package/src/daemon/handlers/inbox/providers/discord.ts +0 -252
  301. package/src/daemon/handlers/inbox/providers/email.ts +0 -152
  302. package/src/daemon/handlers/inbox/providers/imap-client.ts +0 -300
  303. package/src/daemon/handlers/inbox/providers/route-util.ts +0 -24
  304. package/src/daemon/handlers/inbox/providers/slack.ts +0 -263
  305. package/src/daemon/handlers/index.ts +0 -117
  306. package/src/daemon/handlers/register.ts +0 -168
  307. package/src/daemon/handlers/remote/backends/cloud-terminal.ts +0 -142
  308. package/src/daemon/handlers/remote/backends/docker.ts +0 -79
  309. package/src/daemon/handlers/remote/backends/index.ts +0 -40
  310. package/src/daemon/handlers/remote/backends/local-process.ts +0 -113
  311. package/src/daemon/handlers/remote/backends/process-runner.ts +0 -127
  312. package/src/daemon/handlers/remote/backends/ssh.ts +0 -125
  313. package/src/daemon/handlers/remote/backends/types.ts +0 -97
  314. package/src/daemon/handlers/remote/dispatcher.ts +0 -181
  315. package/src/daemon/handlers/remote/index.ts +0 -119
  316. package/src/daemon/handlers/remote/peer-registry.ts +0 -357
  317. package/src/daemon/handlers/remote/service.ts +0 -191
  318. package/src/daemon/handlers/routing/inbox-bridge.ts +0 -71
  319. package/src/daemon/handlers/routing/index.ts +0 -261
  320. package/src/daemon/handlers/routing/route-store.ts +0 -319
  321. package/src/daemon/handlers/routing/routing-resolver.ts +0 -75
  322. package/src/daemon/handlers/sqlite-store.ts +0 -278
  323. package/src/daemon/handlers/triage/index.ts +0 -57
  324. package/src/daemon/handlers/triage/integration.ts +0 -213
  325. package/src/daemon/handlers/triage/pipeline.ts +0 -274
  326. package/src/daemon/handlers/triage/scorer.ts +0 -287
  327. package/src/daemon/handlers/triage/tagger/discord.ts +0 -187
  328. package/src/daemon/handlers/triage/tagger/imap.ts +0 -384
  329. package/src/daemon/handlers/triage/tagger/index.ts +0 -184
  330. package/src/daemon/handlers/triage/tagger/shared.ts +0 -70
  331. package/src/daemon/handlers/triage/tagger/slack.ts +0 -69
  332. package/src/daemon/handlers/triage/types.ts +0 -50
  333. package/src/daemon/lifecycle.ts +0 -41
  334. package/src/daemon/provision-wake-model.ts +0 -81
  335. package/src/daemon/safe-serve.ts +0 -61
  336. package/src/daemon/send/channels.ts +0 -200
  337. package/src/daemon/send/command.ts +0 -332
  338. package/src/daemon/send/composition.ts +0 -99
  339. package/src/daemon/send/failure-text.ts +0 -93
  340. package/src/daemon/send/inert-text.ts +0 -225
  341. package/src/daemon/send/stdin.ts +0 -24
  342. package/src/daemon/service-commands.ts +0 -329
  343. package/src/export/cost-utils.ts +0 -319
  344. package/src/input/selection.ts +0 -135
  345. package/src/plugins/loader.ts +0 -15
  346. package/src/renderer/bottom-bar.ts +0 -58
  347. package/src/renderer/conversation-tree.ts +0 -228
  348. package/src/runtime/agent-graph-composition.ts +0 -78
  349. package/src/runtime/channel-composition.ts +0 -46
  350. package/src/runtime/cluster-composition.ts +0 -124
  351. package/src/runtime/cluster-group-composition.ts +0 -284
  352. package/src/runtime/code-index-services.ts +0 -167
  353. package/src/runtime/daemon-handler-composition.ts +0 -76
  354. package/src/runtime/device-posture-composition.ts +0 -110
  355. package/src/runtime/durability-housekeeping.ts +0 -183
  356. package/src/runtime/durability-services.ts +0 -155
  357. package/src/runtime/embedded-service-factories.ts +0 -58
  358. package/src/runtime/feature-settings.ts +0 -154
  359. package/src/runtime/fleet-needs-input-push.ts +0 -70
  360. package/src/runtime/fleet-services.ts +0 -41
  361. package/src/runtime/idle-power-services.ts +0 -85
  362. package/src/runtime/mail-composition.ts +0 -65
  363. package/src/runtime/memory-fold.ts +0 -55
  364. package/src/runtime/operator-token-cleanup.ts +0 -109
  365. package/src/runtime/path-shadow.ts +0 -418
  366. package/src/runtime/perf/panel-health-monitor.ts +0 -18
  367. package/src/runtime/provider-optimizer-wiring.ts +0 -55
  368. package/src/runtime/reachability-notice.ts +0 -100
  369. package/src/runtime/remote-execution-composition.ts +0 -62
  370. package/src/runtime/session-liveness-marker.ts +0 -257
  371. package/src/runtime/session-pointer-surface.ts +0 -22
  372. package/src/runtime/session-storage-services.ts +0 -41
  373. package/src/runtime/surface-feature-flags.ts +0 -96
  374. package/src/runtime/terminal-output-guard.ts +0 -235
  375. package/src/runtime/trust/workspace-registration.ts +0 -192
  376. package/src/runtime/trust/workspace-trust.ts +0 -229
  377. package/src/runtime/ui/index.ts +0 -39
  378. package/src/runtime/ui/model-picker/data-provider.ts +0 -182
  379. package/src/runtime/ui/model-picker/health-enrichment.ts +0 -231
  380. package/src/runtime/ui/model-picker/index.ts +0 -59
  381. package/src/runtime/ui/model-picker/types.ts +0 -153
  382. package/src/runtime/ui/provider-health/data-provider.ts +0 -244
  383. package/src/runtime/ui/provider-health/fallback-visualizer.ts +0 -71
  384. package/src/runtime/ui/provider-health/index.ts +0 -46
  385. package/src/runtime/ui/provider-health/types.ts +0 -146
  386. package/src/runtime/ui-events.ts +0 -1
  387. package/src/runtime/ui-read-model-helpers.ts +0 -1
  388. package/src/runtime/ui-read-models-observability-maintenance.ts +0 -1
  389. package/src/runtime/ui-read-models-observability-options.ts +0 -1
  390. package/src/runtime/ui-read-models-observability-remote.ts +0 -1
  391. package/src/runtime/ui-read-models-observability-security.ts +0 -1
  392. package/src/runtime/ui-read-models-observability-system.ts +0 -1
  393. package/src/runtime/ui-read-models-observability.ts +0 -1
  394. package/src/runtime/ui-service-queries.ts +0 -1
  395. package/src/runtime/voice-setup-services.ts +0 -98
  396. package/src/runtime/workstream-attempts-validation.ts +0 -77
  397. package/src/runtime/workstream-draft-edits.ts +0 -95
  398. package/src/runtime/workstream-draft-store.ts +0 -274
  399. package/src/runtime/workstream-draft-types.ts +0 -42
  400. package/src/runtime/workstream-services.ts +0 -373
  401. package/src/tools/index.ts +0 -1
  402. package/src/types/grid.ts +0 -48
  403. package/src/types/sql-js.d.ts +0 -15
  404. package/src/work-plans/work-plan-store.ts +0 -702
@@ -153,6 +153,10 @@ export const openContractRouteStream = transport.openContractRouteStream;
153
153
  export const requireContractRoute = transport.requireContractRoute;
154
154
  export const isAbortError = transport.isAbortError;
155
155
  export const openServerSentEventStream = transport.openServerSentEventStream;
156
+ // Re-exported here because bootstrap.ts — the one place an exit can await
157
+ // anything — sits on the 800-line per-file gate, so it reaches this through the
158
+ // import block it already has rather than a second import line.
159
+ export { leaveHostedSessionOnExit } from './client/hosted-exit.ts';
156
160
  export const createOperatorRemoteClient = transport.createOperatorRemoteClient;
157
161
  export const createPeerRemoteClient = transport.createPeerRemoteClient;
158
162
  export const buildEventSourceUrl = transport.buildEventSourceUrl;
@@ -202,73 +206,105 @@ export type RemoteRuntimeEventsOptions = Transport.RemoteRuntimeEventsOptions;
202
206
  export type RemoteRuntimeEvents = Transport.RemoteRuntimeEvents;
203
207
  export type SerializedRuntimeEnvelope = Transport.SerializedRuntimeEnvelope;
204
208
 
205
- // Operations compatibility aliases.
206
- export const AcpTaskAdapter = operations.AcpTaskAdapter;
207
- export const OpsControlPlane = operations.OpsControlPlane;
208
- export const OpsIllegalActionError = operations.OpsIllegalActionError;
209
- export const OpsTargetNotFoundError = operations.OpsTargetNotFoundError;
210
- export const ToolContractVerifier = operations.ToolContractVerifier;
211
- export const McpLifecycleManager = operations.McpLifecycleManager;
212
- export const McpPermissionManager = operations.McpPermissionManager;
213
- export const McpSchemaFreshnessTracker = operations.McpSchemaFreshnessTracker;
214
- export const buildMcpAttackPathReview = operations.buildMcpAttackPathReview;
215
- export const createMcpLifecycleManager = operations.createMcpLifecycleManager;
216
- export const DEFAULT_RECONNECT_CONFIG = operations.DEFAULT_RECONNECT_CONFIG;
217
- export const ALL_CAPABILITIES = operations.ALL_CAPABILITIES;
218
- export const PLUGIN_CAPABILITIES = operations.PLUGIN_CAPABILITIES;
219
- export const HIGH_RISK_CAPABILITIES = operations.HIGH_RISK_CAPABILITIES;
220
- export const PluginLifecycleManager = operations.PluginLifecycleManager;
221
- export const PluginQuarantineEngine = operations.PluginQuarantineEngine;
222
- export const PluginTrustStore = operations.PluginTrustStore;
223
- export const SAFE_CAPABILITIES = operations.SAFE_CAPABILITIES;
224
- export const filterCapabilitiesByTrust = operations.filterCapabilitiesByTrust;
225
- export const hasCapability = operations.hasCapability;
226
- export const isHighRiskCapability = operations.isHighRiskCapability;
227
- export const isPluginOperational = operations.isPluginOperational;
228
- export const isPluginReloadable = operations.isPluginReloadable;
229
- export const isPluginTerminal = operations.isPluginTerminal;
230
- export const resolveCapabilityManifest = operations.resolveCapabilityManifest;
231
- export const validateManifestV2 = operations.validateManifestV2;
232
- export const validatePluginSignature = operations.validatePluginSignature;
233
- // Instance-type companions for the operations class aliases (see note above the
234
- // security block): the `export const` form re-exports the value only.
235
- export type AcpTaskAdapter = InstanceType<typeof operations.AcpTaskAdapter>;
236
- export type OpsIllegalActionError = InstanceType<typeof operations.OpsIllegalActionError>;
237
- export type OpsTargetNotFoundError = InstanceType<typeof operations.OpsTargetNotFoundError>;
238
- export type ToolContractVerifier = InstanceType<typeof operations.ToolContractVerifier>;
239
- export type McpLifecycleManager = InstanceType<typeof operations.McpLifecycleManager>;
240
- export type McpPermissionManager = InstanceType<typeof operations.McpPermissionManager>;
241
- export type McpSchemaFreshnessTracker = InstanceType<typeof operations.McpSchemaFreshnessTracker>;
242
- export type PluginLifecycleManager = InstanceType<typeof operations.PluginLifecycleManager>;
243
- export type PluginQuarantineEngine = InstanceType<typeof operations.PluginQuarantineEngine>;
244
- export type PluginTrustStore = InstanceType<typeof operations.PluginTrustStore>;
245
- export const LOW_QUALITY_THRESHOLD = operations.LOW_QUALITY_THRESHOLD;
246
- export const computeQualityScore = operations.computeQualityScore;
247
- export const createCompactionManager = operations.createCompactionManager;
248
- export const describeScore = operations.describeScore;
249
- export const escalateStrategy = operations.escalateStrategy;
250
- export const isTerminalCompactionState = operations.isTerminalCompactionState;
251
- export const reachableFromCompactionState = operations.reachableFromCompactionState;
252
- export const compactionFailurePlaybook = operations.compactionFailurePlaybook;
253
- export const exportRecoveryPlaybook = operations.exportRecoveryPlaybook;
254
- export const permissionDeadlockPlaybook = operations.permissionDeadlockPlaybook;
255
- export const pluginDegradationPlaybook = operations.pluginDegradationPlaybook;
256
- export const reconnectFailurePlaybook = operations.reconnectFailurePlaybook;
257
- export const sessionUnrecoverablePlaybook = operations.sessionUnrecoverablePlaybook;
258
- export const stuckTurnPlaybook = operations.stuckTurnPlaybook;
259
- export const createSessionUnrecoverablePlaybook = operations.createSessionUnrecoverablePlaybook;
260
- export const createStuckTurnPlaybook = operations.createStuckTurnPlaybook;
261
- export const evaluateOrchestrationSpawn = operations.evaluateOrchestrationSpawn;
262
- export const TRANSPORT_COMPATIBILITY_MATRIX = operations.TRANSPORT_COMPATIBILITY_MATRIX;
263
- export const applyTransition = operations.applyTransition;
264
- export const canTransition = operations.canTransition;
265
- export const isOperational = operations.isOperational;
266
- export const isReloadable = operations.isReloadable;
267
- export const isTerminal = operations.isTerminal;
268
- export const reachableFrom = operations.reachableFrom;
269
- export const evaluateSessionMaintenance = operations.evaluateSessionMaintenance;
270
- export const formatSessionMaintenanceLines = operations.formatSessionMaintenanceLines;
271
- export const getGuidanceMode = operations.getGuidanceMode;
209
+ // Operations compatibility aliases. Grouped as a single live ESM re-export
210
+ // from the SDK's own `platform/runtime/operations` subpath rather than eager
211
+ // `export const X = operations.X` module-scope reads off the `operations`
212
+ // namespace object: those reads evaluated the namespace getter while the
213
+ // compiled single-file bundle could still be mid-cycle, and the binding they
214
+ // reached for was not defined yet — source execution hid this, the compiled
215
+ // binary died on it at load. A grouped `export { ... } from '<subpath>'` is a
216
+ // live binding resolved by the module system, not a module-scope value read,
217
+ // so it is cycle-safe.
218
+ export {
219
+ AcpTaskAdapter,
220
+ OpsControlPlane,
221
+ OpsIllegalActionError,
222
+ OpsTargetNotFoundError,
223
+ ToolContractVerifier,
224
+ McpLifecycleManager,
225
+ McpPermissionManager,
226
+ McpSchemaFreshnessTracker,
227
+ buildMcpAttackPathReview,
228
+ createMcpLifecycleManager,
229
+ DEFAULT_RECONNECT_CONFIG,
230
+ ALL_CAPABILITIES,
231
+ PLUGIN_CAPABILITIES,
232
+ HIGH_RISK_CAPABILITIES,
233
+ PluginLifecycleManager,
234
+ PluginQuarantineEngine,
235
+ PluginTrustStore,
236
+ SAFE_CAPABILITIES,
237
+ filterCapabilitiesByTrust,
238
+ hasCapability,
239
+ isHighRiskCapability,
240
+ isPluginOperational,
241
+ isPluginReloadable,
242
+ isPluginTerminal,
243
+ resolveCapabilityManifest,
244
+ validateManifestV2,
245
+ validatePluginSignature,
246
+ LOW_QUALITY_THRESHOLD,
247
+ computeQualityScore,
248
+ createCompactionManager,
249
+ describeScore,
250
+ escalateStrategy,
251
+ isTerminalCompactionState,
252
+ reachableFromCompactionState,
253
+ compactionFailurePlaybook,
254
+ exportRecoveryPlaybook,
255
+ permissionDeadlockPlaybook,
256
+ pluginDegradationPlaybook,
257
+ reconnectFailurePlaybook,
258
+ sessionUnrecoverablePlaybook,
259
+ stuckTurnPlaybook,
260
+ createSessionUnrecoverablePlaybook,
261
+ createStuckTurnPlaybook,
262
+ evaluateOrchestrationSpawn,
263
+ TRANSPORT_COMPATIBILITY_MATRIX,
264
+ applyTransition,
265
+ canTransition,
266
+ isOperational,
267
+ isReloadable,
268
+ isTerminal,
269
+ reachableFrom,
270
+ evaluateSessionMaintenance,
271
+ formatSessionMaintenanceLines,
272
+ getGuidanceMode,
273
+ buildPersistedSessionContext,
274
+ buildLocalReturnContextSummary,
275
+ formatReturnContextForDisplay,
276
+ getReturnContextMode,
277
+ maybeAssistReturnContextSummary,
278
+ persistConversation,
279
+ generateUserSessionId,
280
+ loadLastConversation,
281
+ loadRecoveryConversation,
282
+ writeRecoveryFile,
283
+ deleteRecoveryFile,
284
+ checkRecoveryFile,
285
+ getRecoveryFilePath,
286
+ getRecoveryDir,
287
+ getLastSessionPointerPath,
288
+ writeLastSessionPointer,
289
+ readLastSessionPointer,
290
+ createSessionSurface,
291
+ consumeRecovery,
292
+ removeRecoveryPoint,
293
+ checkRecoveryForSession,
294
+ exportRemoteArtifactForAgent,
295
+ importRemoteArtifact,
296
+ RemoteRunnerRegistry,
297
+ RemoteSupervisor,
298
+ DistributedRuntimeManager,
299
+ getDistributedNodeHostContract,
300
+ CURRENT_PROTOCOL_VERSION,
301
+ VersionMismatchError,
302
+ negotiateProtocolVersion,
303
+ createTaskManager,
304
+ PhasedToolExecutor,
305
+ budgetPhase,
306
+ permissionPhase,
307
+ } from '@pellux/goodvibes-sdk/platform/runtime/operations';
272
308
  // Snapshot-retention symbols (SnapshotPruner, RetentionPolicy,
273
309
  // DEFAULT_RETENTION_CONFIG) are intentionally NOT re-exported here. No app code
274
310
  // consumes them — only the retention unit test does, and it now imports them
@@ -280,48 +316,26 @@ export const getGuidanceMode = operations.getGuidanceMode;
280
316
  // `var` declaration on the darwin-arm64 target, so the compiled binary died at
281
317
  // startup with `ReferenceError: SnapshotPruner2 is not defined`. Dropping the
282
318
  // re-export removes the collision (and the same latent hazard for the other two).
283
- export const buildPersistedSessionContext = operations.buildPersistedSessionContext;
284
- export const buildLocalReturnContextSummary = operations.buildLocalReturnContextSummary;
285
- export const formatReturnContextForDisplay = operations.formatReturnContextForDisplay;
286
- export const getReturnContextMode = operations.getReturnContextMode;
287
- export const maybeAssistReturnContextSummary = operations.maybeAssistReturnContextSummary;
288
- export const persistConversation = operations.persistConversation;
289
- export const generateUserSessionId = operations.generateUserSessionId;
290
- export const loadLastConversation = operations.loadLastConversation;
291
- export const loadRecoveryConversation = operations.loadRecoveryConversation;
292
- export const writeRecoveryFile = operations.writeRecoveryFile;
293
- export const deleteRecoveryFile = operations.deleteRecoveryFile;
294
- export const checkRecoveryFile = operations.checkRecoveryFile;
295
- export const getRecoveryFilePath = operations.getRecoveryFilePath;
296
- export const getRecoveryDir = operations.getRecoveryDir;
297
- export const getLastSessionPointerPath = operations.getLastSessionPointerPath;
298
- export const writeLastSessionPointer = operations.writeLastSessionPointer;
299
- export const readLastSessionPointer = operations.readLastSessionPointer;
319
+ // Instance-type companions for the operations class aliases are no longer
320
+ // declared here: `export { X } from '<subpath>'` forwards a class's value AND
321
+ // its implicit instance type together, so a separate local
322
+ // `export type X = InstanceType<typeof operations.X>` for the same name is
323
+ // now a redundant declaration that TypeScript rejects as a conflict
324
+ // (TS2484). This applies to every class name in the grouped re-export above
325
+ // (AcpTaskAdapter, OpsControlPlane, OpsIllegalActionError,
326
+ // OpsTargetNotFoundError, ToolContractVerifier, McpLifecycleManager,
327
+ // McpPermissionManager, McpSchemaFreshnessTracker, PluginLifecycleManager,
328
+ // PluginQuarantineEngine, PluginTrustStore, RemoteRunnerRegistry,
329
+ // RemoteSupervisor, DistributedRuntimeManager) — their instance types are
330
+ // forwarded automatically and are not redeclared below.
300
331
  // The declare-once storage handle (platform/runtime/session-surface.ts) plus
301
332
  // the two prompted-recovery primitives that only accept it. Every session
302
333
  // path in this app derives from one surface built in runtime/services.ts.
303
- export const createSessionSurface = operations.createSessionSurface;
304
334
  export type SessionSurface = Operations.SessionSurface;
305
- export const consumeRecovery = operations.consumeRecovery;
306
- export const removeRecoveryPoint = operations.removeRecoveryPoint;
307
335
  // Probe for a NAMED session's live snapshot (per-session supersession — see
308
336
  // session-recovery.ts's header) without retiring anything. Backs the
309
337
  // --continue / --resume pre-resume check in cli/tui-startup.ts.
310
- export const checkRecoveryForSession = operations.checkRecoveryForSession;
311
338
  export type RecoveryFileInfo = Operations.RecoveryFileInfo;
312
- export const exportRemoteArtifactForAgent = operations.exportRemoteArtifactForAgent;
313
- export const importRemoteArtifact = operations.importRemoteArtifact;
314
- export const RemoteRunnerRegistry = operations.RemoteRunnerRegistry;
315
- export const RemoteSupervisor = operations.RemoteSupervisor;
316
- export const DistributedRuntimeManager = operations.DistributedRuntimeManager;
317
- export const getDistributedNodeHostContract = operations.getDistributedNodeHostContract;
318
- export const CURRENT_PROTOCOL_VERSION = operations.CURRENT_PROTOCOL_VERSION;
319
- export const VersionMismatchError = operations.VersionMismatchError;
320
- export const negotiateProtocolVersion = operations.negotiateProtocolVersion;
321
- export const createTaskManager = operations.createTaskManager;
322
- export const PhasedToolExecutor = operations.PhasedToolExecutor;
323
- export const budgetPhase = operations.budgetPhase;
324
- export const permissionPhase = operations.permissionPhase;
325
339
 
326
340
  export type RemoteSessionBundle = Operations.RemoteSessionBundle;
327
341
  export type ContractVerifierOptions = Operations.ContractVerifierOptions;
@@ -359,10 +373,10 @@ export type CompactionStrategy = Operations.CompactionStrategy;
359
373
  export type StrategyInput = Operations.StrategyInput;
360
374
  export type StrategyOutput = Operations.StrategyOutput;
361
375
  export type DistributedRuntimeSnapshotStore = Operations.DistributedRuntimeSnapshotStore;
362
- export type RemoteRunnerRegistry = Operations.RemoteRunnerRegistry;
363
- export type RemoteSupervisor = Operations.RemoteSupervisor;
364
- export type DistributedRuntimeManager = Operations.DistributedRuntimeManager;
365
- export type OpsControlPlane = Operations.OpsControlPlane;
376
+ // RemoteRunnerRegistry, RemoteSupervisor, DistributedRuntimeManager, and
377
+ // OpsControlPlane are classes forwarded by the grouped value re-export above
378
+ // (`export { X } from '<subpath>'` carries both the value and its implicit
379
+ // instance type), so redeclaring their types here would conflict (TS2484).
366
380
  export type RuntimeTransitionResult = Operations.RuntimeTransitionResult;
367
381
  export type RetentionClass = Operations.RetentionClass;
368
382
  export type RetentionClassConfig = Operations.RetentionClassConfig;
@@ -17,7 +17,7 @@
17
17
  import { existsSync } from 'node:fs';
18
18
  import { getGoodVibesPackageRoot, resolveGoodVibesDaemonExecutable } from '../cli/service-posture.ts';
19
19
  import { runInstallSelfCheck } from './install-self-check.ts';
20
- import { announceReachability } from './path-shadow-startup.ts';
20
+ import { announceInstallReachability } from './path-shadow-startup.ts';
21
21
  import type { SystemMessageRouter } from '../core/system-message-router.ts';
22
22
 
23
23
  export function announceInstallSelfCheck(router: SystemMessageRouter): void {
@@ -53,7 +53,7 @@ export function announceInstallSelfCheck(router: SystemMessageRouter): void {
53
53
  */
54
54
  export function announceInstallHealth(router: SystemMessageRouter): void {
55
55
  announceInstallSelfCheck(router);
56
- void announceReachability(router).catch(() => {
56
+ void announceInstallReachability(router).catch(() => {
57
57
  // Best-effort — a reachability check must never block or crash boot.
58
58
  });
59
59
  }
@@ -11,7 +11,7 @@
11
11
 
12
12
  import type { CommandContext } from '../input/command-registry.ts';
13
13
  import type { PowerManager } from '@pellux/goodvibes-sdk/platform/power';
14
- import type { Line } from '../types/grid.ts';
14
+ import type { Line } from '@pellux/goodvibes-sdk/platform/types';
15
15
  import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config';
16
16
  import { createCancelToolCall, type ToolCancelOrchestrator } from '../core/turn-cancellation.ts';
17
17
  import { powerSurfaceFromState } from '../core/power-status.ts';
@@ -33,7 +33,7 @@ import type { ProviderRegistry } from '@pellux/goodvibes-sdk/platform/providers'
33
33
  import type { ArtifactStore } from '@pellux/goodvibes-sdk/platform/artifacts';
34
34
  import type { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state';
35
35
  import type { RuntimeEventBus } from '@/runtime/index.ts';
36
- import { WorkPlanStore } from '../work-plans/work-plan-store.ts';
36
+ import { WorkPlanStore } from '@pellux/goodvibes-sdk/platform/workflow';
37
37
 
38
38
  const REGULAR_KNOWLEDGE_DB_FILE = 'knowledge-wiki.sqlite';
39
39
  const HOME_GRAPH_KNOWLEDGE_DB_FILE = 'knowledge-home-graph.sqlite';
@@ -84,7 +84,13 @@ export function createKnowledgeServices(deps: KnowledgeServicesDeps): KnowledgeS
84
84
  const homeGraphService = new HomeGraphService(homeGraphKnowledgeStore, artifactStore, { semanticService: homeGraphSemanticService, admitExpensiveWork });
85
85
  const projectPlanningProjectId = projectPlanningProjectIdFromPath(deps.workingDirectory);
86
86
  const projectPlanningService = new ProjectPlanningService(knowledgeStore, { defaultProjectId: projectPlanningProjectId });
87
- const workPlanStore = new WorkPlanStore({ homeDirectory: deps.homeDirectory, projectId: projectPlanningProjectId, projectRoot: deps.workingDirectory });
87
+ const workPlanStore = new WorkPlanStore({
88
+ homeDirectory: deps.homeDirectory,
89
+ projectId: projectPlanningProjectId,
90
+ projectRoot: deps.workingDirectory,
91
+ surfaceRoot: 'tui',
92
+ source: 'tui',
93
+ });
88
94
  return {
89
95
  knowledgeStore, agentKnowledgeStore, homeGraphKnowledgeStore,
90
96
  knowledgeSemanticService, homeGraphSemanticService, agentKnowledgeSemanticService,
@@ -6,7 +6,8 @@
6
6
  *
7
7
  * NAMING, load-bearing: this module's identifiers say "legacy" because the
8
8
  * engine migrates AWAY from the `goodvibes-daemon.service` unit name toward
9
- * the runtime-managed unit — but that same name is what scripts/install.sh
9
+ * the runtime-managed unit — but that same name is what the suite installer
10
+ * (goodvibes-daemon scripts/install.sh)
10
11
  * actively creates for curl-installed hosts TODAY. It is a parallel,
11
12
  * first-class install path, not an obsolete one. User-facing copy therefore
12
13
  * describes it as "the install-script unit" and never labels it legacy or
@@ -126,7 +127,7 @@ export function buildManagedDaemonServiceManager(params: BuildManagedDaemonServi
126
127
  // already configured for hostMode=network / a non-default port) keeps its
127
128
  // endpoint without a unit rewrite. Baking endpoint values here is what
128
129
  // silently re-pinned custom-configured hosts back to the values current at
129
- // install time. scripts/install.sh writes the same shape — the two paths
130
+ // install time. The suite installer writes the same shape — the two paths
130
131
  // must produce the identical running daemon (see the installer parity test).
131
132
  // `params.host`/`params.port` remain inputs because the migration engine
132
133
  // still needs them for its read-only port-liveness probe.
@@ -135,7 +136,18 @@ export function buildManagedDaemonServiceManager(params: BuildManagedDaemonServi
135
136
  description: MANAGED_SERVICE_DESCRIPTION,
136
137
  workingDirectory,
137
138
  command: params.binaryPath,
138
- args: ['--daemon-home', params.homeDir],
139
+ // `--daemon-home` names the daemon's own STATE directory — the one holding
140
+ // operator-tokens.json, auth-users.json and daemon-settings.json — which is
141
+ // `<home>/.goodvibes/daemon`. This baked the USER HOME, so a serviced
142
+ // daemon filed its identity a level above where every reader in this
143
+ // repository looks: the SDK's platform/config goodvibes-home resolves the flag AS the state
144
+ // directory, cli/service-posture.ts already writes the state directory into
145
+ // GOODVIBES_DAEMON_HOME for the unit it installs, and runtime/bootstrap.ts
146
+ // reads the companion token from the state directory. On a normal machine
147
+ // the mismatch is invisible from the outside — the daemon simply mints a
148
+ // second operator-tokens.json in the home directory and the client keeps
149
+ // reading the empty one under .goodvibes/daemon.
150
+ args: ['--daemon-home', join(params.homeDir, '.goodvibes', 'daemon')],
139
151
  env: {},
140
152
  restartOnFailure: true,
141
153
  };
@@ -22,11 +22,12 @@ import {
22
22
  type ManagedServiceActionResult = ReturnType<ManagedServiceActionRunner>;
23
23
 
24
24
  /**
25
- * The exact marker string scripts/install.sh writes into every unit it
25
+ * The exact marker string the suite installer writes into every unit it
26
26
  * creates (as a `# managed by goodvibes install.sh` comment). The reconcile
27
27
  * check below keys on it to tell an installer-created legacy unit — safe to
28
28
  * auto-retire — apart from a hand-written one that must only ever be reported.
29
- * Kept in lockstep with `INSTALLER_MARKER` in scripts/install.sh.
29
+ * Kept in lockstep with `INSTALLER_MARKER` in the suite installer
30
+ * (goodvibes-daemon scripts/install.sh).
30
31
  */
31
32
  export const INSTALLER_UNIT_MARKER = 'managed by goodvibes install.sh';
32
33