@pellux/goodvibes-tui 1.27.1 → 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 (405) hide show
  1. package/CHANGELOG.md +116 -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 +3 -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 +4 -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 -693
  288. package/src/daemon/fatal-boot-report.ts +0 -111
  289. package/src/daemon/handlers/context.ts +0 -29
  290. package/src/daemon/handlers/contracts.ts +0 -77
  291. package/src/daemon/handlers/credentials.ts +0 -139
  292. package/src/daemon/handlers/drafts/draft-store.ts +0 -427
  293. package/src/daemon/handlers/drafts/index.ts +0 -17
  294. package/src/daemon/handlers/drafts/register.ts +0 -331
  295. package/src/daemon/handlers/errors.ts +0 -18
  296. package/src/daemon/handlers/inbox/cursor-store.ts +0 -457
  297. package/src/daemon/handlers/inbox/index.ts +0 -284
  298. package/src/daemon/handlers/inbox/mapping.ts +0 -192
  299. package/src/daemon/handlers/inbox/poller.ts +0 -212
  300. package/src/daemon/handlers/inbox/provider-adapter.ts +0 -156
  301. package/src/daemon/handlers/inbox/providers/discord.ts +0 -252
  302. package/src/daemon/handlers/inbox/providers/email.ts +0 -152
  303. package/src/daemon/handlers/inbox/providers/imap-client.ts +0 -300
  304. package/src/daemon/handlers/inbox/providers/route-util.ts +0 -24
  305. package/src/daemon/handlers/inbox/providers/slack.ts +0 -263
  306. package/src/daemon/handlers/index.ts +0 -117
  307. package/src/daemon/handlers/register.ts +0 -168
  308. package/src/daemon/handlers/remote/backends/cloud-terminal.ts +0 -142
  309. package/src/daemon/handlers/remote/backends/docker.ts +0 -79
  310. package/src/daemon/handlers/remote/backends/index.ts +0 -40
  311. package/src/daemon/handlers/remote/backends/local-process.ts +0 -113
  312. package/src/daemon/handlers/remote/backends/process-runner.ts +0 -127
  313. package/src/daemon/handlers/remote/backends/ssh.ts +0 -125
  314. package/src/daemon/handlers/remote/backends/types.ts +0 -97
  315. package/src/daemon/handlers/remote/dispatcher.ts +0 -181
  316. package/src/daemon/handlers/remote/index.ts +0 -119
  317. package/src/daemon/handlers/remote/peer-registry.ts +0 -357
  318. package/src/daemon/handlers/remote/service.ts +0 -191
  319. package/src/daemon/handlers/routing/inbox-bridge.ts +0 -71
  320. package/src/daemon/handlers/routing/index.ts +0 -261
  321. package/src/daemon/handlers/routing/route-store.ts +0 -319
  322. package/src/daemon/handlers/routing/routing-resolver.ts +0 -75
  323. package/src/daemon/handlers/sqlite-store.ts +0 -278
  324. package/src/daemon/handlers/triage/index.ts +0 -57
  325. package/src/daemon/handlers/triage/integration.ts +0 -213
  326. package/src/daemon/handlers/triage/pipeline.ts +0 -274
  327. package/src/daemon/handlers/triage/scorer.ts +0 -287
  328. package/src/daemon/handlers/triage/tagger/discord.ts +0 -187
  329. package/src/daemon/handlers/triage/tagger/imap.ts +0 -384
  330. package/src/daemon/handlers/triage/tagger/index.ts +0 -184
  331. package/src/daemon/handlers/triage/tagger/shared.ts +0 -70
  332. package/src/daemon/handlers/triage/tagger/slack.ts +0 -69
  333. package/src/daemon/handlers/triage/types.ts +0 -50
  334. package/src/daemon/lifecycle.ts +0 -41
  335. package/src/daemon/provision-wake-model.ts +0 -81
  336. package/src/daemon/safe-serve.ts +0 -61
  337. package/src/daemon/send/channels.ts +0 -200
  338. package/src/daemon/send/command.ts +0 -332
  339. package/src/daemon/send/composition.ts +0 -99
  340. package/src/daemon/send/failure-text.ts +0 -93
  341. package/src/daemon/send/inert-text.ts +0 -225
  342. package/src/daemon/send/stdin.ts +0 -24
  343. package/src/daemon/service-commands.ts +0 -329
  344. package/src/export/cost-utils.ts +0 -319
  345. package/src/input/selection.ts +0 -135
  346. package/src/plugins/loader.ts +0 -15
  347. package/src/renderer/bottom-bar.ts +0 -58
  348. package/src/renderer/conversation-tree.ts +0 -228
  349. package/src/runtime/agent-graph-composition.ts +0 -78
  350. package/src/runtime/channel-composition.ts +0 -46
  351. package/src/runtime/cluster-composition.ts +0 -124
  352. package/src/runtime/cluster-group-composition.ts +0 -284
  353. package/src/runtime/code-index-services.ts +0 -167
  354. package/src/runtime/daemon-handler-composition.ts +0 -76
  355. package/src/runtime/device-posture-composition.ts +0 -110
  356. package/src/runtime/durability-housekeeping.ts +0 -183
  357. package/src/runtime/durability-services.ts +0 -155
  358. package/src/runtime/embedded-service-factories.ts +0 -74
  359. package/src/runtime/feature-settings.ts +0 -154
  360. package/src/runtime/fleet-needs-input-push.ts +0 -70
  361. package/src/runtime/fleet-services.ts +0 -41
  362. package/src/runtime/idle-power-services.ts +0 -85
  363. package/src/runtime/mail-composition.ts +0 -65
  364. package/src/runtime/memory-fold.ts +0 -55
  365. package/src/runtime/operator-token-cleanup.ts +0 -109
  366. package/src/runtime/path-shadow.ts +0 -418
  367. package/src/runtime/perf/panel-health-monitor.ts +0 -18
  368. package/src/runtime/provider-optimizer-wiring.ts +0 -55
  369. package/src/runtime/reachability-notice.ts +0 -100
  370. package/src/runtime/remote-execution-composition.ts +0 -62
  371. package/src/runtime/session-liveness-marker.ts +0 -257
  372. package/src/runtime/session-pointer-surface.ts +0 -22
  373. package/src/runtime/session-storage-services.ts +0 -41
  374. package/src/runtime/surface-feature-flags.ts +0 -96
  375. package/src/runtime/terminal-output-guard.ts +0 -235
  376. package/src/runtime/trust/workspace-registration.ts +0 -192
  377. package/src/runtime/trust/workspace-trust.ts +0 -229
  378. package/src/runtime/ui/index.ts +0 -39
  379. package/src/runtime/ui/model-picker/data-provider.ts +0 -182
  380. package/src/runtime/ui/model-picker/health-enrichment.ts +0 -231
  381. package/src/runtime/ui/model-picker/index.ts +0 -59
  382. package/src/runtime/ui/model-picker/types.ts +0 -153
  383. package/src/runtime/ui/provider-health/data-provider.ts +0 -244
  384. package/src/runtime/ui/provider-health/fallback-visualizer.ts +0 -71
  385. package/src/runtime/ui/provider-health/index.ts +0 -46
  386. package/src/runtime/ui/provider-health/types.ts +0 -146
  387. package/src/runtime/ui-events.ts +0 -1
  388. package/src/runtime/ui-read-model-helpers.ts +0 -1
  389. package/src/runtime/ui-read-models-observability-maintenance.ts +0 -1
  390. package/src/runtime/ui-read-models-observability-options.ts +0 -1
  391. package/src/runtime/ui-read-models-observability-remote.ts +0 -1
  392. package/src/runtime/ui-read-models-observability-security.ts +0 -1
  393. package/src/runtime/ui-read-models-observability-system.ts +0 -1
  394. package/src/runtime/ui-read-models-observability.ts +0 -1
  395. package/src/runtime/ui-service-queries.ts +0 -1
  396. package/src/runtime/voice-setup-services.ts +0 -98
  397. package/src/runtime/workstream-attempts-validation.ts +0 -77
  398. package/src/runtime/workstream-draft-edits.ts +0 -95
  399. package/src/runtime/workstream-draft-store.ts +0 -274
  400. package/src/runtime/workstream-draft-types.ts +0 -42
  401. package/src/runtime/workstream-services.ts +0 -373
  402. package/src/tools/index.ts +0 -1
  403. package/src/types/grid.ts +0 -48
  404. package/src/types/sql-js.d.ts +0 -15
  405. package/src/work-plans/work-plan-store.ts +0 -702
@@ -1,41 +0,0 @@
1
- /**
2
- * fleet-services.ts — the shared, archive-aware fleet registry construction,
3
- * lifted out of services.ts so the composition root stays under the file-size
4
- * cap. Mirrors the sibling create*Services helpers (durability, code-index,
5
- * workstream): a single dependency-injected call that services.ts makes once.
6
- *
7
- * Also owns the daemon-side observed foreign-agent source: when
8
- * observeExternalAgents is on (the standalone daemon), externally-launched
9
- * coding-agent sessions observed read-only on the host fold in as
10
- * 'observed-external' rows (visibility + steer; never counted against
11
- * fleet.maxSize, never stopped). The interactive process leaves it off and
12
- * reads the daemon's snapshot, so it never double-scans. Absence ⇒ a quiet
13
- * empty set. Mirrors the SDK's own createRuntimeServices wiring.
14
- */
15
- import { computeUsageCostUsd, type ProviderRegistry } from '@pellux/goodvibes-sdk/platform/providers';
16
- import { type ArchivableProcessRegistry } from '@pellux/goodvibes-sdk/platform/runtime/fleet';
17
- import { ObservedAgentSource } from '@pellux/goodvibes-sdk/platform/runtime/fleet/observed';
18
- import { createArchivableFleetRegistry, type ProcessRegistryDeps } from '@pellux/goodvibes-terminal-shell';
19
-
20
- export interface FleetServicesDeps
21
- extends Omit<ProcessRegistryDeps, 'observedAgents' | 'priceUsage'> {
22
- /** Turns on the daemon-side observed foreign-agent source (daemon only). */
23
- readonly observeExternalAgents?: boolean | undefined;
24
- /** Backs the honest pricing resolver folded into priceUsage below. */
25
- readonly providerRegistry: Pick<ProviderRegistry, 'resolveModelPricing'>;
26
- }
27
-
28
- export function createFleetServices(
29
- deps: FleetServicesDeps,
30
- ): { processRegistry: ArchivableProcessRegistry } {
31
- const { observeExternalAgents, providerRegistry, ...registryDeps } = deps;
32
- const observedAgents = observeExternalAgents ? new ObservedAgentSource() : undefined;
33
- const processRegistry = createArchivableFleetRegistry({
34
- ...registryDeps,
35
- observedAgents, // Daemon-side observed foreign-agent rows (undefined in the interactive process)
36
- // Honest-unpriced through the ONE pricing resolver (manual -> registration -> provider-served
37
- // -> catalog -> unknown); unknown/subscription yields null, never $0. Mirrors the SDK composition.
38
- priceUsage: (model, usage) => (model ? computeUsageCostUsd(providerRegistry.resolveModelPricing(model), usage) : null),
39
- });
40
- return { processRegistry };
41
- }
@@ -1,85 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // idle-power-services.ts — the idle-time / sleep-ownership / live-turn slice of
3
- // the runtime composition, extracted from services.ts (file-size hygiene).
4
- //
5
- // Mirrors the SDK's own createRuntimeServices wiring: idle-time memory
6
- // consolidation (learning.consolidation.*), host sleep ownership (power.*), and
7
- // the per-session live-turn control holder that backs the
8
- // sessions.toolCalls.cancel / sessions.queuedMessages.* wire verbs. Consolidation
9
- // receipts ride the SAME attach-time queue every other receipt uses — a run that
10
- // changed something records a one-line notice into the file-backed
11
- // feature-announcement store, drained on the next surface attach; a quiet run
12
- // records nothing.
13
- // ---------------------------------------------------------------------------
14
-
15
- import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config';
16
- import type { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state';
17
- import { MemoryConsolidationScheduler } from '@pellux/goodvibes-sdk/platform/state';
18
- import { SessionLiveTurnControlsHolder } from '@pellux/goodvibes-sdk/platform/control-plane';
19
- import { PowerManager, wireRuntimePower, createUnavailablePowerSeam } from '@pellux/goodvibes-sdk/platform/power';
20
- import { FeatureAnnouncementStore, featureAnnouncementsPath } from '@pellux/goodvibes-sdk/platform/runtime/feature-announcements';
21
- import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/state';
22
- import { formatConsolidationReceipt } from '../core/consolidation-receipt.ts';
23
-
24
- export interface IdlePowerServicesDeps {
25
- readonly configManager: ConfigManager;
26
- readonly memoryRegistry: MemoryRegistry;
27
- readonly runtimeBus: RuntimeEventBus;
28
- /** True when no session is busy — the consolidation scheduler's idle gate. */
29
- readonly isIdle: () => boolean;
30
- /** Sleep-edge checkpoint + a wake catch-up tick (store snapshots). */
31
- readonly snapshotTick: () => void;
32
- /** Wake catch-up: fire the automation heartbeat. */
33
- readonly heartbeat: () => Promise<void>;
34
- /**
35
- * Host power seam. SDK 1.9.0 makes wireRuntimePower default an absent seam to
36
- * the REAL host seam (createHostPowerSeam — which spawns systemd-inhibit and a
37
- * dbus-monitor sleep-edge watcher). That spawn is a host-level side effect, so
38
- * this fork mirrors the SDK's own createRuntimeServices: when no seam is passed
39
- * we default to the NON-spawning unavailable seam, keeping test-constructed
40
- * runtimes deterministic. Only the real long-lived compositions (the standalone
41
- * daemon and the embedded interactive runtime, which itself IS the daemon) pass
42
- * createHostPowerSeam() to opt into live OS keep-awake/idle-inhibit.
43
- */
44
- readonly powerSeam?: Parameters<typeof wireRuntimePower>[0]['seam'];
45
- }
46
-
47
- export interface IdlePowerServices {
48
- readonly memoryConsolidationScheduler: MemoryConsolidationScheduler;
49
- readonly powerManager: PowerManager;
50
- readonly sessionLiveTurnControls: SessionLiveTurnControlsHolder;
51
- }
52
-
53
- /** Construct (and start) the idle-consolidation scheduler, power manager, and live-turn holder. */
54
- export function wireIdlePowerAndLiveTurn(deps: IdlePowerServicesDeps): IdlePowerServices {
55
- const consolidationReceiptStore = new FeatureAnnouncementStore(featureAnnouncementsPath(deps.configManager));
56
- const memoryConsolidationScheduler = new MemoryConsolidationScheduler({
57
- memoryRegistry: deps.memoryRegistry,
58
- configSource: deps.configManager,
59
- isIdle: deps.isIdle,
60
- onReceipt: (receipt) => {
61
- const text = formatConsolidationReceipt(receipt);
62
- if (text) consolidationReceiptStore.record(receipt.runId, text);
63
- },
64
- });
65
- memoryConsolidationScheduler.start();
66
- const sessionLiveTurnControls = new SessionLiveTurnControlsHolder();
67
- const powerManager = wireRuntimePower({
68
- readConfig: (key) => deps.configManager.get(key as Parameters<typeof deps.configManager.get>[0]),
69
- writeConfig: (key, value) => deps.configManager.setDynamic(key as Parameters<typeof deps.configManager.setDynamic>[0], value),
70
- // Live config subscription: an external edit to power.keepAwake (a settings-
71
- // modal toggle, a hand-edited settings file) applies LIVE to the in-process
72
- // manager — acquires/releases the inhibitor and lights the chip with no
73
- // restart. This is the config-apply path for the EMBEDDED topology + the
74
- // local chip; the external daemon is reached separately over the verb.
75
- subscribeConfig: (key, cb) => (deps.configManager.subscribe as unknown as (k: string, c: (v: unknown) => void) => () => void)(key, (newValue) => cb(newValue)),
76
- runtimeBus: deps.runtimeBus,
77
- sleepCheckpoint: deps.snapshotTick,
78
- wakeCatchUp: [() => memoryConsolidationScheduler.tick(), deps.snapshotTick, deps.heartbeat],
79
- // Non-spawning default (see powerSeam doc above): without an explicit opt-in
80
- // the seam is the honest unavailable one, NOT the spawning host seam that
81
- // wireRuntimePower would otherwise pick for an undefined seam.
82
- seam: deps.powerSeam ?? createUnavailablePowerSeam('runtime services constructed without a host power seam'),
83
- });
84
- return { memoryConsolidationScheduler, powerManager, sessionLiveTurnControls };
85
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * mail-composition.ts
3
- *
4
- * The deps that let the platform register this daemon's `email.*` verbs.
5
- *
6
- * `calendar.*` and `email.*` are served by the platform now, not by handlers in
7
- * this repository — those were deleted when the platform gained an
8
- * implementation the daemon could call. What is left for a product to supply is
9
- * the wiring, and it is not optional: without `homeDirectory` the calendar
10
- * composition returns null, without these deps the mail one does, and either way
11
- * the verbs stay cataloged-but-unhandled while every surface reports the daemon
12
- * unreachable on a daemon that is working perfectly.
13
- *
14
- * Extracted from services.ts rather than living there, because that file sits at
15
- * the 800-line architecture cap and a composition step is exactly the kind of
16
- * thing the cap exists to push into a module of its own.
17
- */
18
-
19
- import {
20
- withSurfaceEmailConfig,
21
- describeSurfaceEmailConfigProblem,
22
- describeSenderClaimNeutrally,
23
- type EmailServiceDeps,
24
- type SurfaceEmailConfigProblem,
25
- } from '@pellux/goodvibes-sdk/platform/email';
26
- import { nodeEmailTransport } from '@pellux/goodvibes-sdk/platform/email/node';
27
-
28
- /** The narrow slices this composition needs; the real managers satisfy them. */
29
- interface MailCompositionInput {
30
- readonly configManager: { get(key: never): unknown };
31
- readonly secretsManager: { get(key: string): Promise<string | null> };
32
- }
33
-
34
- /**
35
- * Build the mail deps and the not-configured describer that go to
36
- * `registerGatewayVerbGroups`.
37
- *
38
- * The settings come from the daemon's own `surfaces.email.*` keys through
39
- * `withSurfaceEmailConfig`, so the keys an operator has already set — and that
40
- * the settings modal now shows — keep working unchanged, and a not-configured
41
- * answer names the keys THIS operator actually has rather than the ones the
42
- * service validates internally.
43
- */
44
- export function composeMailDeps(input: MailCompositionInput): {
45
- readonly emailServiceDeps: EmailServiceDeps;
46
- readonly describeEmailConfigProblem: () => Promise<SurfaceEmailConfigProblem | null>;
47
- } {
48
- const getConfig = (key: string): unknown => input.configManager.get(key as never);
49
- const emailServiceDeps = withSurfaceEmailConfig({
50
- getConfig,
51
- secretsManager: input.secretsManager,
52
- transport: nodeEmailTransport,
53
- // The daemon has no wording of its own for a sender line, so it takes the
54
- // platform's rather than growing a second implementation of a rule that is
55
- // security-relevant: a From: header is a claim, sender authentication
56
- // raises display confidence only, and commandAuthority is the literal
57
- // 'none'.
58
- describeSenderClaim: describeSenderClaimNeutrally,
59
- } as never);
60
- return {
61
- emailServiceDeps,
62
- describeEmailConfigProblem: () =>
63
- describeSurfaceEmailConfigProblem(getConfig, input.secretsManager),
64
- };
65
- }
@@ -1,55 +0,0 @@
1
- import { join } from 'node:path';
2
- import {
3
- foldMemoryStores,
4
- formatMemoryFoldReport,
5
- type LegacyMemorySource,
6
- type MemoryEmbeddingProviderRegistry,
7
- type MemoryFoldReport,
8
- type MemoryStore,
9
- } from '@pellux/goodvibes-sdk/platform/state';
10
-
11
- /**
12
- * Fold the TUI's legacy per-project memory store into the canonical
13
- * cross-surface store. Called once at boot AFTER `memoryStore.init()` so records written
14
- * before unification survive. Id-keyed and idempotent — a re-run imports nothing new and
15
- * never deletes the legacy file. Returns the report so boot can log what moved.
16
- */
17
- export async function foldTuiLegacyMemory(
18
- memoryStore: MemoryStore,
19
- memoryEmbeddingRegistry: MemoryEmbeddingProviderRegistry,
20
- workingDirectory: string,
21
- ): Promise<MemoryFoldReport> {
22
- const legacyTuiProject = join(workingDirectory, '.goodvibes', 'tui', 'memory.sqlite');
23
- const sources: LegacyMemorySource[] = [
24
- { label: `tui:${workingDirectory} (legacy per-project store)`, dbPath: legacyTuiProject },
25
- ];
26
- return foldMemoryStores(memoryStore, sources, { embeddingRegistry: memoryEmbeddingRegistry });
27
- }
28
-
29
- /** A minimal boot logger seam (matches the SDK logger's info/warn shape). */
30
- export interface BootFoldLogger {
31
- info(message: string, meta?: unknown): void;
32
- warn(message: string, meta?: unknown): void;
33
- }
34
-
35
- /**
36
- * Run the legacy TUI memory fold at boot and surface the report. Never blocks or
37
- * fails boot: a fold error degrades to a warn and the canonical store serves on.
38
- * Only logs the report when something actually moved (or a source failed), so a
39
- * clean boot stays quiet.
40
- */
41
- export async function runBootMemoryFold(
42
- memoryStore: MemoryStore,
43
- memoryEmbeddingRegistry: MemoryEmbeddingProviderRegistry,
44
- workingDirectory: string,
45
- log: BootFoldLogger,
46
- ): Promise<void> {
47
- try {
48
- const report = await foldTuiLegacyMemory(memoryStore, memoryEmbeddingRegistry, workingDirectory);
49
- if (report.totalImported > 0 || report.failedSources.length > 0) {
50
- log.info(`[bootstrap] memory fold: ${formatMemoryFoldReport(report)}`);
51
- }
52
- } catch (err) {
53
- log.warn('memory fold at bootstrap failed (non-fatal; canonical store unaffected)', { err });
54
- }
55
- }
@@ -1,109 +0,0 @@
1
- /**
2
- * operator-token-cleanup.ts
3
- *
4
- * Shared helper that enumerates the legacy workspace-scoped `operator-tokens.json`
5
- * locations the TUI has written at various pre-0.21.28 versions. Used by both the
6
- * in-process bootstrap path (`src/runtime/bootstrap.ts`) and the standalone daemon
7
- * CLI (`src/daemon/cli.ts`) so stale-token pruning has a single source of
8
- * truth for where to look.
9
- *
10
- * Adding a new legacy location: append to `workspaceOperatorTokenCandidates` and
11
- * the new path will be inspected on the next daemon boot.
12
- */
13
-
14
- import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
15
- import { randomBytes } from 'node:crypto';
16
- import { dirname, join } from 'node:path';
17
- import { getOrCreateCompanionToken } from '@pellux/goodvibes-sdk/platform/pairing';
18
- import type { CompanionPairingResult } from '@pellux/goodvibes-sdk/platform/pairing';
19
-
20
- /**
21
- * Return the list of absolute operator-tokens.json paths the TUI may have written
22
- * at legacy (pre-0.21.28) workspace-scoped locations under `workingDirectory`.
23
- *
24
- * The canonical, current-SDK location is `<daemonHomeDir>/operator-tokens.json`;
25
- * this helper is strictly for legacy-cleanup candidates.
26
- */
27
- export function workspaceOperatorTokenCandidates(workingDirectory: string): readonly string[] {
28
- return [
29
- join(workingDirectory, '.goodvibes', 'operator-tokens.json'),
30
- join(workingDirectory, '.goodvibes', 'tui', 'operator-tokens.json'),
31
- ];
32
- }
33
-
34
- /**
35
- * External-daemon adoption: resolve the operator/companion
36
- * token this TUI process uses to authenticate with its daemon, honoring
37
- * `GOODVIBES_DAEMON_TOKEN` as a non-interactive override.
38
- *
39
- * Without this override, the only way to make a TUI instance adopt an
40
- * already-running external daemon that used an out-of-band or explicit token
41
- * (rather than one derived from `getOrCreateCompanionToken` under a *shared*
42
- * home directory) was to hand-write `<daemonHomeDir>/operator-tokens.json`
43
- * before startup — there was no env var or CLI flag equivalent.
44
- *
45
- * `GOODVIBES_DAEMON_TOKEN` is already the documented env var `bin/goodvibes-daemon`
46
- * honors for its own bearer token (see `src/daemon/cli.ts`'s `readDaemonCliTokens`)
47
- * and the one `src/verification/live-verifier.ts`'s `readDaemonToken` already falls
48
- * back to when probing a daemon's HTTP surface from the outside. Reusing the same
49
- * name here means one env var configures both sides of an adopted-daemon setup —
50
- * start the daemon with `GOODVIBES_DAEMON_TOKEN=<token>` and point the TUI at it
51
- * with the same `GOODVIBES_DAEMON_TOKEN=<token>` plus
52
- * `--config controlPlane.host=<host> --config controlPlane.port=<port>` — instead
53
- * of introducing a second, TUI-only flag.
54
- *
55
- * When the override is set and does not already match the on-disk record, the
56
- * file is rewritten so the override becomes durable for this home directory
57
- * (an existing peerId is kept when present, so companion-pairing identity does
58
- * not needlessly churn). Falls back to the existing `getOrCreateCompanionToken`
59
- * behavior — read the existing file, or mint a fresh random token — when the
60
- * override is unset.
61
- *
62
- * @param explicitToken - Takes precedence over `GOODVIBES_DAEMON_TOKEN` when
63
- * provided. Used by the onboarding wizard's "connect to an existing daemon"
64
- * action (a pasted token) so it shares this exact persistence logic with the
65
- * env-var path instead of duplicating it.
66
- */
67
- export function resolveDaemonCompanionToken(daemonHomeDir: string, explicitToken?: string): CompanionPairingResult {
68
- const override = explicitToken?.trim() || process.env.GOODVIBES_DAEMON_TOKEN?.trim();
69
- if (!override) return getOrCreateCompanionToken('tui', { daemonHomeDir });
70
-
71
- const tokenPath = join(daemonHomeDir, 'operator-tokens.json');
72
- let existingPeerId: string | undefined;
73
- let existingCreatedAt: number | undefined;
74
- if (existsSync(tokenPath)) {
75
- try {
76
- const record = JSON.parse(readFileSync(tokenPath, 'utf-8')) as {
77
- token?: unknown;
78
- peerId?: unknown;
79
- createdAt?: unknown;
80
- };
81
- if (typeof record.token === 'string' && record.token === override) {
82
- return {
83
- token: override,
84
- peerId: typeof record.peerId === 'string' ? record.peerId : randomBytes(12).toString('hex'),
85
- createdAt: typeof record.createdAt === 'number' ? record.createdAt : Date.now(),
86
- };
87
- }
88
- if (typeof record.peerId === 'string') existingPeerId = record.peerId;
89
- if (typeof record.createdAt === 'number') existingCreatedAt = record.createdAt;
90
- } catch {
91
- // Malformed on-disk record — fall through and rewrite it with the override.
92
- }
93
- }
94
-
95
- const record: CompanionPairingResult = {
96
- token: override,
97
- peerId: existingPeerId ?? randomBytes(12).toString('hex'),
98
- createdAt: existingCreatedAt ?? Date.now(),
99
- };
100
- try {
101
- mkdirSync(dirname(tokenPath), { recursive: true });
102
- writeFileSync(tokenPath, JSON.stringify(record, null, 2), { encoding: 'utf-8', mode: 0o600 });
103
- chmodSync(tokenPath, 0o600);
104
- } catch {
105
- // Best-effort persistence — the override still applies for this process
106
- // even if the file could not be written (e.g. a read-only home directory).
107
- }
108
- return record;
109
- }