@pellux/goodvibes-tui 1.27.1 → 2.0.2
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.
- package/CHANGELOG.md +127 -2
- package/README.md +7 -9
- package/bin/goodvibes +2 -2
- package/bin/launcher-support.js +8 -4
- package/docs/README.md +11 -2
- package/docs/foundation-artifacts/operator-contract.json +6403 -2347
- package/package.json +14 -25
- package/scripts/postinstall.js +35 -35
- package/src/audio/spoken-turn-model-routing.ts +1 -1
- package/src/cli/bundle-command.ts +5 -5
- package/src/cli/completions/generate.ts +1 -1
- package/src/cli/doctor.ts +3 -3
- package/src/cli/entrypoint.ts +12 -7
- package/src/cli/help.ts +4 -5
- package/src/cli/hooks-command.ts +1 -1
- package/src/cli/index.ts +1 -4
- package/src/cli/launch-auto-update.ts +59 -7
- package/src/cli/management-commands.ts +6 -6
- package/src/cli/management-utils.ts +5 -5
- package/src/cli/management.ts +7 -7
- package/src/cli/network-posture.ts +1 -1
- package/src/cli/package-verification.ts +7 -6
- package/src/cli/plugin-bundles-command.ts +1 -1
- package/src/cli/plugin-command.ts +2 -2
- package/src/cli/service-command.ts +2 -2
- package/src/cli/service-posture.ts +4 -4
- package/src/cli/status.ts +9 -8
- package/src/cli/surface-command.ts +4 -4
- package/src/cli/tui-startup.ts +3 -3
- package/src/cli-flags.ts +3 -3
- package/src/config/goodvibes-home-audit.ts +0 -2
- package/src/config/secret-config.ts +37 -5
- package/src/config/tui-extension-settings.ts +1 -1
- package/src/core/approval-alert.ts +2 -2
- package/src/core/budget-breach-notifier.ts +3 -3
- package/src/core/conversation-compaction-render.ts +1 -1
- package/src/core/conversation-line-cache.ts +1 -1
- package/src/core/conversation-render-context.ts +1 -1
- package/src/core/conversation-rendering.ts +2 -2
- package/src/core/conversation.ts +10 -10
- package/src/core/long-task-notifier.ts +2 -2
- package/src/core/memory-diagnostics-gateway.ts +1 -1
- package/src/core/scriptable-statusline.ts +1 -1
- package/src/core/session-auto-titler.ts +1 -1
- package/src/core/session-resume-core.ts +2 -2
- package/src/core/stream-event-wiring.ts +24 -44
- package/src/core/terminal-notifier.ts +3 -3
- package/src/core/turn-cancellation.ts +1 -1
- package/src/core/turn-event-wiring.ts +5 -5
- package/src/input/command-registry.ts +6 -6
- package/src/input/commands/channel-pairing.ts +1 -1
- package/src/input/commands/cluster-runtime.ts +1 -1
- package/src/input/commands/codebase-runtime.ts +1 -1
- package/src/input/commands/devices-runtime.ts +1 -1
- package/src/input/commands/hosted-runtime.ts +330 -0
- package/src/input/commands/local-setup-review.ts +1 -1
- package/src/input/commands/local-setup-transfer.ts +2 -2
- package/src/input/commands/local-setup.ts +3 -3
- package/src/input/commands/managed-runtime.ts +2 -2
- package/src/input/commands/operator-rpc.ts +24 -110
- package/src/input/commands/payment-card-intake.ts +1 -1
- package/src/input/commands/permissions-provenance.ts +2 -2
- package/src/input/commands/plugin-runtime.ts +1 -1
- package/src/input/commands/provider.ts +1 -1
- package/src/input/commands/relay-runtime.ts +18 -9
- package/src/input/commands/rewind-runtime.ts +1 -1
- package/src/input/commands/runtime-services.ts +1 -1
- package/src/input/commands/services-runtime.ts +1 -1
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/commands/settings-sync-runtime.ts +2 -2
- package/src/input/commands/share-runtime.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +145 -55
- package/src/input/commands/update-runtime.ts +31 -28
- package/src/input/commands/work-plan-runtime.ts +2 -2
- package/src/input/commands/workstream-attempts.ts +1 -1
- package/src/input/commands/workstream-runtime.ts +2 -2
- package/src/input/commands.ts +2 -0
- package/src/input/feature-unit-layout.ts +1 -1
- package/src/input/feed-context-factory.ts +3 -3
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed-routes.ts +1 -1
- package/src/input/handler-feed.ts +3 -3
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-onboarding-daemon-adopt.ts +3 -2
- package/src/input/handler-onboarding.ts +1 -1
- package/src/input/handler-types.ts +2 -2
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +4 -4
- package/src/input/input-history.ts +1 -1
- package/src/input/onboarding/onboarding-feature-units.ts +2 -2
- package/src/input/onboarding/onboarding-runtime-status.ts +15 -1
- package/src/input/onboarding/onboarding-wizard-apply.ts +17 -8
- package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +5 -3
- package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-types.ts +1 -1
- package/src/input/payments-config.ts +6 -6
- package/src/input/search.ts +1 -1
- package/src/input/session-picker-modal.ts +46 -0
- package/src/input/settings-modal-activation.ts +1 -1
- package/src/input/settings-modal-behavior.ts +4 -4
- package/src/input/settings-modal-commit.ts +11 -0
- package/src/input/settings-modal-data.ts +9 -122
- package/src/input/settings-modal-mutations.ts +33 -0
- package/src/input/settings-modal-secrets.ts +34 -0
- package/src/input/settings-modal-subscriptions.ts +1 -1
- package/src/input/settings-modal-types.ts +15 -1
- package/src/input/settings-modal.ts +28 -3
- package/src/input/worktree-setup-config.ts +1 -1
- package/src/main.ts +11 -9
- package/src/panels/agent-inspector-shared.ts +2 -2
- package/src/panels/base-panel.ts +2 -2
- package/src/panels/builtin/operations.ts +6 -8
- package/src/panels/builtin/session.ts +17 -0
- package/src/panels/builtin/shared.ts +5 -5
- package/src/panels/builtin-modals.ts +3 -3
- package/src/panels/confirm-state.ts +1 -1
- package/src/panels/cost-tracker-panel.ts +4 -4
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/diff-review-panel.ts +2 -2
- package/src/panels/expandable-list-panel.ts +2 -2
- package/src/panels/fleet-acts.ts +1 -1
- package/src/panels/fleet-observed-render.ts +1 -1
- package/src/panels/fleet-panel-format.ts +1 -1
- package/src/panels/fleet-panel.ts +1 -1
- package/src/panels/fleet-spawn.ts +1 -1
- package/src/panels/fleet-steer.ts +1 -1
- package/src/panels/fleet-transcript.ts +1 -1
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hosted-session-feed.ts +352 -0
- package/src/panels/hosted-session-panel.ts +221 -0
- package/src/panels/local-auth-panel.ts +3 -3
- package/src/panels/modals/devices-modal.ts +1 -1
- package/src/panels/modals/local-auth-modal.ts +1 -1
- package/src/panels/modals/pairing-modal.ts +1 -1
- package/src/panels/modals/services-modal.ts +1 -1
- package/src/panels/modals/settings-sync-modal.ts +1 -1
- package/src/panels/modals/subscription-modal.ts +1 -1
- package/src/panels/modals/work-plan-modal.ts +1 -1
- package/src/panels/notifications-panel.ts +1 -1
- package/src/panels/panel-confirm-overlay.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/polish-core.ts +2 -2
- package/src/panels/polish-tables.ts +1 -1
- package/src/panels/polish.ts +2 -2
- package/src/panels/scrollable-list-panel.ts +3 -3
- package/src/panels/skills-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +5 -5
- package/src/panels/types.ts +1 -2
- package/src/permissions/prompt.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +1 -1
- package/src/renderer/block-actions-overlay.ts +1 -1
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +1 -1
- package/src/renderer/composer-fragments.ts +1 -1
- package/src/renderer/compositor.ts +2 -2
- package/src/renderer/config-modal.ts +1 -1
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +2 -2
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/conversation-surface.ts +2 -2
- package/src/renderer/diff-view.ts +1 -1
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +1 -1
- package/src/renderer/fleet-tab-strip.ts +1 -1
- package/src/renderer/fullscreen-primitives.ts +2 -2
- package/src/renderer/fullscreen-workspace.ts +1 -1
- package/src/renderer/header-line.ts +1 -1
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/layout.ts +5 -8
- package/src/renderer/markdown-inline.ts +1 -1
- package/src/renderer/markdown-table.ts +1 -1
- package/src/renderer/markdown.ts +1 -1
- package/src/renderer/mcp-workspace.ts +1 -1
- package/src/renderer/modal-factory.ts +2 -2
- package/src/renderer/model-workspace.ts +2 -2
- package/src/renderer/onboarding/onboarding-wizard.ts +1 -1
- package/src/renderer/overlay-box.ts +1 -1
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +1 -1
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +1 -1
- package/src/renderer/session-picker-modal.ts +124 -3
- package/src/renderer/settings-modal-helpers.ts +2 -0
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +2 -2
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +1 -1
- package/src/renderer/theme-mode-config.ts +21 -33
- package/src/renderer/theme.ts +11 -12
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/tool-result-expanded-lines.ts +1 -1
- package/src/renderer/turn-injection.ts +7 -8
- package/src/renderer/ui-factory.ts +3 -3
- package/src/runtime/bootstrap-command-context.ts +4 -4
- package/src/runtime/bootstrap-command-parts.ts +5 -5
- package/src/runtime/bootstrap-core.ts +30 -30
- package/src/runtime/bootstrap-shell.ts +4 -4
- package/src/runtime/bootstrap.ts +128 -157
- package/src/runtime/client/approval-updates.ts +82 -0
- package/src/runtime/client/build-floors.ts +167 -0
- package/src/runtime/client/daemon-attach-handshake.ts +115 -0
- package/src/runtime/client/fleet-union.ts +147 -0
- package/src/runtime/client/host-service-status.ts +71 -0
- package/src/runtime/client/hosted-exit.ts +86 -0
- package/src/runtime/client/hosted-roster.ts +110 -0
- package/src/runtime/client/hosted-session-stream.ts +178 -0
- package/src/runtime/client/hosted-sessions.ts +187 -0
- package/src/runtime/client/operator-endpoint.ts +213 -0
- package/src/runtime/client/spine-adoption.ts +99 -0
- package/src/runtime/cloudflare-control-plane.ts +1 -1
- package/src/runtime/context-accounting-source.ts +1 -1
- package/src/runtime/context.ts +2 -2
- package/src/runtime/conversation-rewind-port.ts +42 -14
- package/src/runtime/daemon-attach-notices.ts +55 -19
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/disposal-wiring.ts +4 -24
- package/src/runtime/index.ts +119 -105
- package/src/runtime/install-self-check-startup.ts +2 -2
- package/src/runtime/interaction-seams.ts +1 -1
- package/src/runtime/knowledge-services.ts +8 -2
- package/src/runtime/legacy-daemon-migration.ts +4 -3
- package/src/runtime/legacy-daemon-reconcile.ts +3 -2
- package/src/runtime/memory-spine-transport.ts +37 -267
- package/src/runtime/notification-dispatch.ts +2 -2
- package/src/runtime/onboarding/apply.ts +2 -2
- package/src/runtime/onboarding/derivation.ts +2 -2
- package/src/runtime/onboarding/markers.ts +2 -2
- package/src/runtime/onboarding/progress.ts +2 -2
- package/src/runtime/onboarding/snapshot.ts +1 -1
- package/src/runtime/onboarding/state.ts +2 -2
- package/src/runtime/onboarding/types.ts +2 -2
- package/src/runtime/orchestrator-core-services.ts +1 -1
- package/src/runtime/path-shadow-startup.ts +28 -221
- package/src/runtime/power-keepawake-remote.ts +3 -2
- package/src/runtime/process-lifecycle.ts +2 -2
- package/src/runtime/provider-fallback.ts +10 -66
- package/src/runtime/recovery-autosave.ts +1 -1
- package/src/runtime/recovery-offer-wiring.ts +39 -23
- package/src/runtime/recovery-prompt.ts +31 -17
- package/src/runtime/relay-reachability-bridge.ts +53 -42
- package/src/runtime/release-artifacts.ts +2 -1
- package/src/runtime/runtime-services-types.ts +82 -35
- package/src/runtime/services.ts +305 -300
- package/src/runtime/session-resume-liveness-confirm.ts +1 -1
- package/src/runtime/ui-services.ts +7 -6
- package/src/runtime/update-check.ts +23 -43
- package/src/runtime/workspace-checkpointing.ts +1 -1
- package/src/runtime/wrfc-persistence.ts +2 -2
- package/src/shell/ui-openers.ts +30 -7
- package/src/utils/clipboard.ts +1 -1
- package/src/verification/verification-ledger.ts +10 -8
- package/src/version.ts +1 -1
- package/bin/goodvibes-daemon +0 -90
- package/src/cli/config-overrides.ts +0 -267
- package/src/cli/endpoints.ts +0 -109
- package/src/cli/parser.ts +0 -395
- package/src/cli/redaction.ts +0 -170
- package/src/cli/types.ts +0 -84
- package/src/cluster/commands.ts +0 -382
- package/src/cluster/remote-daemon-target.ts +0 -225
- package/src/cluster/render.ts +0 -268
- package/src/config/atomic-write.ts +0 -70
- package/src/config/credential-availability.ts +0 -122
- package/src/config/goodvibes-home.ts +0 -149
- package/src/config/index.ts +0 -88
- package/src/config/provider-model.ts +0 -23
- package/src/config/read-versioned.ts +0 -228
- package/src/core/alert-gating.ts +0 -67
- package/src/core/consolidation-receipt.ts +0 -41
- package/src/core/focus-tracker.ts +0 -41
- package/src/core/history.ts +0 -45
- package/src/core/memory-status.ts +0 -118
- package/src/core/orchestrator.ts +0 -7
- package/src/core/pairing-devices.ts +0 -49
- package/src/core/pairing-handoff.ts +0 -101
- package/src/core/pairing-offers.ts +0 -83
- package/src/core/pairing-origin.ts +0 -78
- package/src/core/rewind-turn-anchors.ts +0 -311
- package/src/core/session-recovery.ts +0 -210
- package/src/core/stable-host.ts +0 -171
- package/src/core/transcript-journal.ts +0 -503
- package/src/daemon/cli.ts +0 -693
- package/src/daemon/fatal-boot-report.ts +0 -111
- package/src/daemon/handlers/context.ts +0 -29
- package/src/daemon/handlers/contracts.ts +0 -77
- package/src/daemon/handlers/credentials.ts +0 -139
- package/src/daemon/handlers/drafts/draft-store.ts +0 -427
- package/src/daemon/handlers/drafts/index.ts +0 -17
- package/src/daemon/handlers/drafts/register.ts +0 -331
- package/src/daemon/handlers/errors.ts +0 -18
- package/src/daemon/handlers/inbox/cursor-store.ts +0 -457
- package/src/daemon/handlers/inbox/index.ts +0 -284
- package/src/daemon/handlers/inbox/mapping.ts +0 -192
- package/src/daemon/handlers/inbox/poller.ts +0 -212
- package/src/daemon/handlers/inbox/provider-adapter.ts +0 -156
- package/src/daemon/handlers/inbox/providers/discord.ts +0 -252
- package/src/daemon/handlers/inbox/providers/email.ts +0 -152
- package/src/daemon/handlers/inbox/providers/imap-client.ts +0 -300
- package/src/daemon/handlers/inbox/providers/route-util.ts +0 -24
- package/src/daemon/handlers/inbox/providers/slack.ts +0 -263
- package/src/daemon/handlers/index.ts +0 -117
- package/src/daemon/handlers/register.ts +0 -168
- package/src/daemon/handlers/remote/backends/cloud-terminal.ts +0 -142
- package/src/daemon/handlers/remote/backends/docker.ts +0 -79
- package/src/daemon/handlers/remote/backends/index.ts +0 -40
- package/src/daemon/handlers/remote/backends/local-process.ts +0 -113
- package/src/daemon/handlers/remote/backends/process-runner.ts +0 -127
- package/src/daemon/handlers/remote/backends/ssh.ts +0 -125
- package/src/daemon/handlers/remote/backends/types.ts +0 -97
- package/src/daemon/handlers/remote/dispatcher.ts +0 -181
- package/src/daemon/handlers/remote/index.ts +0 -119
- package/src/daemon/handlers/remote/peer-registry.ts +0 -357
- package/src/daemon/handlers/remote/service.ts +0 -191
- package/src/daemon/handlers/routing/inbox-bridge.ts +0 -71
- package/src/daemon/handlers/routing/index.ts +0 -261
- package/src/daemon/handlers/routing/route-store.ts +0 -319
- package/src/daemon/handlers/routing/routing-resolver.ts +0 -75
- package/src/daemon/handlers/sqlite-store.ts +0 -278
- package/src/daemon/handlers/triage/index.ts +0 -57
- package/src/daemon/handlers/triage/integration.ts +0 -213
- package/src/daemon/handlers/triage/pipeline.ts +0 -274
- package/src/daemon/handlers/triage/scorer.ts +0 -287
- package/src/daemon/handlers/triage/tagger/discord.ts +0 -187
- package/src/daemon/handlers/triage/tagger/imap.ts +0 -384
- package/src/daemon/handlers/triage/tagger/index.ts +0 -184
- package/src/daemon/handlers/triage/tagger/shared.ts +0 -70
- package/src/daemon/handlers/triage/tagger/slack.ts +0 -69
- package/src/daemon/handlers/triage/types.ts +0 -50
- package/src/daemon/lifecycle.ts +0 -41
- package/src/daemon/provision-wake-model.ts +0 -81
- package/src/daemon/safe-serve.ts +0 -61
- package/src/daemon/send/channels.ts +0 -200
- package/src/daemon/send/command.ts +0 -332
- package/src/daemon/send/composition.ts +0 -99
- package/src/daemon/send/failure-text.ts +0 -93
- package/src/daemon/send/inert-text.ts +0 -225
- package/src/daemon/send/stdin.ts +0 -24
- package/src/daemon/service-commands.ts +0 -329
- package/src/export/cost-utils.ts +0 -319
- package/src/input/selection.ts +0 -135
- package/src/plugins/loader.ts +0 -15
- package/src/renderer/bottom-bar.ts +0 -58
- package/src/renderer/conversation-tree.ts +0 -228
- package/src/runtime/agent-graph-composition.ts +0 -78
- package/src/runtime/channel-composition.ts +0 -46
- package/src/runtime/cluster-composition.ts +0 -124
- package/src/runtime/cluster-group-composition.ts +0 -284
- package/src/runtime/code-index-services.ts +0 -167
- package/src/runtime/daemon-handler-composition.ts +0 -76
- package/src/runtime/device-posture-composition.ts +0 -110
- package/src/runtime/durability-housekeeping.ts +0 -183
- package/src/runtime/durability-services.ts +0 -155
- package/src/runtime/embedded-service-factories.ts +0 -74
- package/src/runtime/feature-settings.ts +0 -154
- package/src/runtime/fleet-needs-input-push.ts +0 -70
- package/src/runtime/fleet-services.ts +0 -41
- package/src/runtime/idle-power-services.ts +0 -85
- package/src/runtime/mail-composition.ts +0 -65
- package/src/runtime/memory-fold.ts +0 -55
- package/src/runtime/operator-token-cleanup.ts +0 -109
- package/src/runtime/path-shadow.ts +0 -418
- package/src/runtime/perf/panel-health-monitor.ts +0 -18
- package/src/runtime/provider-optimizer-wiring.ts +0 -55
- package/src/runtime/reachability-notice.ts +0 -100
- package/src/runtime/remote-execution-composition.ts +0 -62
- package/src/runtime/session-liveness-marker.ts +0 -257
- package/src/runtime/session-pointer-surface.ts +0 -22
- package/src/runtime/session-storage-services.ts +0 -41
- package/src/runtime/surface-feature-flags.ts +0 -96
- package/src/runtime/terminal-output-guard.ts +0 -235
- package/src/runtime/trust/workspace-registration.ts +0 -192
- package/src/runtime/trust/workspace-trust.ts +0 -229
- package/src/runtime/ui/index.ts +0 -39
- package/src/runtime/ui/model-picker/data-provider.ts +0 -182
- package/src/runtime/ui/model-picker/health-enrichment.ts +0 -231
- package/src/runtime/ui/model-picker/index.ts +0 -59
- package/src/runtime/ui/model-picker/types.ts +0 -153
- package/src/runtime/ui/provider-health/data-provider.ts +0 -244
- package/src/runtime/ui/provider-health/fallback-visualizer.ts +0 -71
- package/src/runtime/ui/provider-health/index.ts +0 -46
- package/src/runtime/ui/provider-health/types.ts +0 -146
- package/src/runtime/ui-events.ts +0 -1
- package/src/runtime/ui-read-model-helpers.ts +0 -1
- package/src/runtime/ui-read-models-observability-maintenance.ts +0 -1
- package/src/runtime/ui-read-models-observability-options.ts +0 -1
- package/src/runtime/ui-read-models-observability-remote.ts +0 -1
- package/src/runtime/ui-read-models-observability-security.ts +0 -1
- package/src/runtime/ui-read-models-observability-system.ts +0 -1
- package/src/runtime/ui-read-models-observability.ts +0 -1
- package/src/runtime/ui-service-queries.ts +0 -1
- package/src/runtime/voice-setup-services.ts +0 -98
- package/src/runtime/workstream-attempts-validation.ts +0 -77
- package/src/runtime/workstream-draft-edits.ts +0 -95
- package/src/runtime/workstream-draft-store.ts +0 -274
- package/src/runtime/workstream-draft-types.ts +0 -42
- package/src/runtime/workstream-services.ts +0 -373
- package/src/tools/index.ts +0 -1
- package/src/types/grid.ts +0 -48
- package/src/types/sql-js.d.ts +0 -15
- package/src/work-plans/work-plan-store.ts +0 -702
|
@@ -1,53 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* relay-reachability-bridge.ts —
|
|
3
|
-
*
|
|
2
|
+
* relay-reachability-bridge.ts — what this terminal can honestly say about the
|
|
3
|
+
* outbound relay's live state.
|
|
4
4
|
*
|
|
5
|
-
* The
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
5
|
+
* The relay is a DAEMON capability. The reachability controller is composed
|
|
6
|
+
* inside the SDK's `DaemonServer` (platform/daemon/facade.ts,
|
|
7
|
+
* `getRelayReachability()`), gated on `relay.enabled` plus the `relay-connect`
|
|
8
|
+
* feature flag, and the process holding that controller is the one that
|
|
9
|
+
* registers with the relay and can mint a pairing payload for it.
|
|
10
|
+
*
|
|
11
|
+
* This terminal is a client. It never constructs a `DaemonServer`, so it holds
|
|
12
|
+
* no controller of its own, and it has no handle to the adopted daemon's — the
|
|
13
|
+
* control plane exposes no verb for one. The operator contract's `relay`
|
|
14
|
+
* category carries the two step-up ceremony verbs (`stepup.challenge.mint`,
|
|
15
|
+
* `stepup.credential.register`) and nothing that reports registration state or
|
|
16
|
+
* mints a pairing payload, so there is no wire call to make.
|
|
17
|
+
*
|
|
18
|
+
* Hence `'unavailable'`, and deliberately NOT `'disabled'`. `'disabled'` is a
|
|
19
|
+
* real relay state meaning the owner turned it off; reporting it for a relay
|
|
20
|
+
* this terminal cannot see would tell an operator whose daemon IS registered
|
|
21
|
+
* that their relay is off. What is true is narrower and worth saying plainly:
|
|
22
|
+
* the state exists, it lives in the daemon, and this surface cannot read it.
|
|
23
|
+
*
|
|
24
|
+
* The accessors keep their shape rather than collapsing into the call sites,
|
|
25
|
+
* because the shape is what a relay-state verb would fill in: the day the
|
|
26
|
+
* daemon serves one, the call is made here and `/relay` renders a live state
|
|
27
|
+
* with nothing else changing.
|
|
16
28
|
*/
|
|
17
29
|
|
|
18
30
|
import type { RelayRegistrationStatus } from '@pellux/goodvibes-daemon-sdk';
|
|
19
|
-
import {
|
|
31
|
+
import type { RelayPairingPayload } from '@pellux/goodvibes-transport-core/relay';
|
|
20
32
|
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
/**
|
|
34
|
+
* What `/relay` can be told: the daemon-side registration states, plus
|
|
35
|
+
* `'disabled'` for a relay that is off, plus `'unavailable'` for one whose
|
|
36
|
+
* state is real but not readable from here.
|
|
37
|
+
*/
|
|
38
|
+
export type RelayReadableStatus = RelayRegistrationStatus | 'disabled' | 'unavailable';
|
|
26
39
|
|
|
27
|
-
/**
|
|
28
|
-
interface
|
|
29
|
-
|
|
40
|
+
/** A minted pairing payload, in both the structured and the scannable form. */
|
|
41
|
+
export interface RelayPairingMint {
|
|
42
|
+
readonly payload: RelayPairingPayload;
|
|
43
|
+
readonly encoded: string;
|
|
30
44
|
}
|
|
31
45
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return candidate.getRelayReachability() ?? null;
|
|
46
|
+
export interface RelayReadAccessors {
|
|
47
|
+
relayStatus(): RelayReadableStatus;
|
|
48
|
+
mintRelayPairing(): Promise<RelayPairingMint | null>;
|
|
36
49
|
}
|
|
37
50
|
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
}
|
|
51
|
+
/**
|
|
52
|
+
* The one sentence explaining an `'unavailable'` relay state, and a pairing
|
|
53
|
+
* payload this terminal cannot mint. Stated once so `/relay status` and
|
|
54
|
+
* `/relay pair` cannot drift into two different explanations of one fact.
|
|
55
|
+
*/
|
|
56
|
+
export const RELAY_STATE_NOT_READABLE_HERE =
|
|
57
|
+
'The daemon holds the relay connection and the control plane exposes no verb for its state, '
|
|
58
|
+
+ 'so this terminal cannot read it — ask the machine running the daemon.';
|
|
59
|
+
|
|
60
|
+
/** The two relay accessors, spread into `externalServices` from bootstrap.ts. */
|
|
61
|
+
export const relayReadAccessors: RelayReadAccessors = {
|
|
62
|
+
relayStatus: () => 'unavailable',
|
|
63
|
+
mintRelayPairing: async () => null,
|
|
64
|
+
};
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* stay in lockstep:
|
|
9
9
|
* - scripts/postinstall.js (npm install-time binary download)
|
|
10
10
|
* - src/input/commands/update-runtime.ts (the /update self-update)
|
|
11
|
-
* - scripts/install.sh
|
|
11
|
+
* - the suite installer (goodvibes-daemon scripts/install.sh; mirrors the
|
|
12
|
+
* same names)
|
|
12
13
|
*/
|
|
13
14
|
export {
|
|
14
15
|
CHECKSUM_MANIFEST_NAME,
|
|
@@ -11,16 +11,28 @@
|
|
|
11
11
|
* anywhere else in the app had to change.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import type { FocusTracker } from '
|
|
14
|
+
import type { FocusTracker } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
15
|
+
import type { ApprovalBroker, GatewayMethodCatalog, SessionLiveTurnControlsHolder, SharedSessionBroker } from '@pellux/goodvibes-sdk/platform/control-plane';
|
|
16
|
+
import type { StepUpService } from '@pellux/goodvibes-sdk/daemon';
|
|
17
|
+
import type { PairingTokenManager } from '@pellux/goodvibes-sdk/platform/pairing';
|
|
18
|
+
import type {
|
|
19
|
+
ConversationRewindHostClient,
|
|
20
|
+
DaemonConfigClient,
|
|
21
|
+
DaemonCredentialsClient,
|
|
22
|
+
DaemonVerbCaller,
|
|
23
|
+
DevicesClient,
|
|
24
|
+
WireSessionDispatch,
|
|
25
|
+
} from '@pellux/goodvibes-sdk/platform/runtime/client';
|
|
26
|
+
import type { ClientBuildGuard } from './client/build-floors.ts';
|
|
27
|
+
import type { FleetUnionReadModel } from './client/fleet-union.ts';
|
|
28
|
+
import type { ApprovalRaiser } from '@pellux/goodvibes-sdk/platform/runtime/client-services';
|
|
29
|
+
import type { PermissionPromptDecision, PermissionPromptRequest } from '@pellux/goodvibes-sdk/platform/permissions';
|
|
15
30
|
import type { ConfigManager, ServiceRegistry, SubscriptionManager, ToolLLM } from '@pellux/goodvibes-sdk/platform/config';
|
|
16
31
|
import type { SecretsManager } from '../config/secrets.ts';
|
|
17
32
|
import type { AutomationDeliveryManager, AutomationManager } from '@pellux/goodvibes-sdk/platform/automation';
|
|
18
33
|
import type { ChannelDeliveryRouter, ChannelPolicyManager, ChannelPluginRegistry, RouteBindingManager, SurfaceRegistry } from '@pellux/goodvibes-sdk/platform/channels';
|
|
19
|
-
import type { ApprovalBroker, GatewayMethodCatalog, SessionLiveTurnControlsHolder, SharedSessionBroker } from '@pellux/goodvibes-sdk/platform/control-plane';
|
|
20
34
|
import type { PowerManager } from '@pellux/goodvibes-sdk/platform/power';
|
|
21
|
-
import type { wireIdlePowerAndLiveTurn } from '
|
|
22
|
-
import type { StepUpService } from '@pellux/goodvibes-sdk/daemon';
|
|
23
|
-
import type { PairingTokenManager } from '@pellux/goodvibes-sdk/platform/pairing';
|
|
35
|
+
import type { wireIdlePowerAndLiveTurn } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
24
36
|
import type { WatcherRegistry } from '@pellux/goodvibes-sdk/platform/watchers';
|
|
25
37
|
import type { ArtifactStore } from '@pellux/goodvibes-sdk/platform/artifacts';
|
|
26
38
|
import type { HomeGraphService, KnowledgeService, ProjectPlanningService } from '@pellux/goodvibes-sdk/platform/knowledge';
|
|
@@ -34,11 +46,10 @@ import type { UserPermissionRuleStore } from '@pellux/goodvibes-sdk/platform/per
|
|
|
34
46
|
import type { buildExecPromptAnswerHandler } from '@pellux/goodvibes-sdk/platform/runtime/permissions/exec-prompt-wiring';
|
|
35
47
|
import type { buildLocalhostFetchApproval } from '@pellux/goodvibes-sdk/platform/runtime/permissions/localhost-fetch-approval';
|
|
36
48
|
import type { NotificationDispatcher } from './notification-dispatch.ts';
|
|
37
|
-
import type { createDurabilityServices } from '
|
|
49
|
+
import type { createDurabilityServices } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
38
50
|
import type { MemorySpineClient } from '@pellux/goodvibes-sdk/platform/runtime/memory-spine';
|
|
39
51
|
import type { WorkspaceCheckpointManager } from '@pellux/goodvibes-sdk/platform/workspace';
|
|
40
52
|
import type { DomainDispatch, RuntimeStore } from './store/index.ts';
|
|
41
|
-
import type { DevicePostureRuntime } from '@pellux/goodvibes-sdk/platform/devices';
|
|
42
53
|
import type { RuntimeEventBus, DistributedRuntimeManager, RemoteRunnerRegistry, RemoteSupervisor, IntegrationHelperService, IdempotencyStore, ComponentHealthMonitor, WorktreeRegistry, SandboxSessionRegistry, ShellPathService, FeatureFlagManager, PolicyRuntimeState, SessionSurface } from '@/runtime/index.ts';
|
|
43
54
|
import type { VoiceProviderRegistry, VoiceService } from '@pellux/goodvibes-sdk/platform/voice';
|
|
44
55
|
import type { CacheRegistry, PauseController, MemoryGovernor } from '@pellux/goodvibes-sdk/platform/runtime/memory';
|
|
@@ -57,12 +68,9 @@ import type { BenchmarkStore, CacheHitTracker, FavoritesStore, ModelLimitsServic
|
|
|
57
68
|
import type { KeybindingsManager } from '../input/keybindings.ts';
|
|
58
69
|
import type { AdaptivePlanner, DeterministicReplayEngine, ExecutionPlanManager, SessionLineageTracker, SessionMemoryStore } from '@pellux/goodvibes-sdk/platform/core';
|
|
59
70
|
import type { ArchivableProcessRegistry } from '@pellux/goodvibes-sdk/platform/runtime/fleet';
|
|
60
|
-
import type { OrchestrationEngine, WorkstreamCommandService } from '
|
|
61
|
-
import type { WorkPlanStore } from '
|
|
62
|
-
import type {
|
|
63
|
-
import type { ClusterGroupComposition } from './cluster-group-composition.ts';
|
|
64
|
-
import type { ClusterCoordinator } from '@pellux/goodvibes-sdk/platform/cluster';
|
|
65
|
-
import type { WorkspaceTrustManager } from './trust/workspace-trust.ts';
|
|
71
|
+
import type { OrchestrationEngine, WorkstreamCommandService } from '@pellux/goodvibes-sdk/platform/orchestration';
|
|
72
|
+
import type { WorkPlanStore } from '@pellux/goodvibes-sdk/platform/workflow';
|
|
73
|
+
import type { WorkspaceTrustManager } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
66
74
|
|
|
67
75
|
export interface RuntimeServicesOptions {
|
|
68
76
|
readonly runtimeBus: RuntimeEventBus;
|
|
@@ -83,12 +91,8 @@ export interface RuntimeServicesOptions {
|
|
|
83
91
|
* is the single reader that produces it.
|
|
84
92
|
*/
|
|
85
93
|
readonly daemonHomeDirectory?: string | undefined;
|
|
86
|
-
/** Opt-in (daemon-side only): fold host-observed external coding-agent sessions
|
|
87
|
-
* into the fleet as 'observed-external' rows. Interactive leaves it off and reads
|
|
88
|
-
* the daemon snapshot. Mirrors the SDK's own createRuntimeServices option. */
|
|
89
|
-
readonly observeExternalAgents?: boolean | undefined;
|
|
90
94
|
/** Host power seam opt-in. Fork mirrors the SDK: non-spawning unavailable-seam
|
|
91
|
-
* default (idle-power-services.ts);
|
|
95
|
+
* default (idle-power-services.ts); this product always passes createHostPowerSeam(), since it never has a co-located daemon to own its own inhibitor. */
|
|
92
96
|
readonly powerSeam?: Parameters<typeof wireIdlePowerAndLiveTurn>[0]['powerSeam'];
|
|
93
97
|
/** Live session id, read per crash-residue sweep so the running session is exempt — see durability-services.ts. */
|
|
94
98
|
readonly currentSessionId?: (() => string | null) | undefined;
|
|
@@ -117,9 +121,47 @@ export interface RuntimeServices {
|
|
|
117
121
|
readonly routeBindings: RouteBindingManager;
|
|
118
122
|
readonly surfaceRegistry: SurfaceRegistry;
|
|
119
123
|
readonly channelPlugins: ChannelPluginRegistry;
|
|
124
|
+
/** The one router this surface delivers through — AutomationDeliveryManager's own, not a second copy of it. */
|
|
120
125
|
readonly channelDeliveryRouter: ChannelDeliveryRouter;
|
|
121
126
|
readonly watcherRegistry: WatcherRegistry;
|
|
127
|
+
/**
|
|
128
|
+
* This surface's own record of the asks IT raised — what the approval card
|
|
129
|
+
* and the panel render. Not authoritative: `requestApproval` below raises the
|
|
130
|
+
* same ask on the daemon, whose record every other surface reads.
|
|
131
|
+
*/
|
|
122
132
|
readonly approvalBroker: ApprovalBroker;
|
|
133
|
+
/** Raise an ask: `approvals.raise` on the daemon plus the prompt at this terminal. */
|
|
134
|
+
readonly requestApproval: ApprovalRaiser;
|
|
135
|
+
/** The one resolution of "which daemon", shared by every client seam. */
|
|
136
|
+
readonly daemonVerbs: DaemonVerbCaller;
|
|
137
|
+
/**
|
|
138
|
+
* Inbound dispatch for sessions this surface hosts, over the adopted daemon's
|
|
139
|
+
* session inputs. Inert until bootstrap.ts activates it; bound to the SAME
|
|
140
|
+
* continuation runner the local broker uses.
|
|
141
|
+
*/
|
|
142
|
+
readonly wireSessionDispatch: WireSessionDispatch;
|
|
143
|
+
/**
|
|
144
|
+
* The daemon's build floor on this terminal. bootstrap.ts feeds it every
|
|
145
|
+
* floor the adopted daemon announces and attaches the notice sink; the
|
|
146
|
+
* continuation runner consults it before spawning, so a build the daemon has
|
|
147
|
+
* declared too old stops taking shared-session work instead of executing it
|
|
148
|
+
* under superseded rules. See client/build-floors.ts.
|
|
149
|
+
*/
|
|
150
|
+
readonly clientBuildGuard: ClientBuildGuard;
|
|
151
|
+
/**
|
|
152
|
+
* This surface offering its live conversation to the daemon, so a rewind
|
|
153
|
+
* driven from anywhere can reach the messages — which only this process
|
|
154
|
+
* holds. Started on adoption; released on disposal.
|
|
155
|
+
*/
|
|
156
|
+
readonly conversationRewindHost: ConversationRewindHostClient;
|
|
157
|
+
/** Daemon-owned settings, read and written over `config.get` / `config.set`. */
|
|
158
|
+
readonly daemonConfig: DaemonConfigClient;
|
|
159
|
+
/** Daemon-scoped credential writes: `credentials.set`/`delete` on the daemon, one verified sequence. */
|
|
160
|
+
readonly daemonCredentials: DaemonCredentialsClient;
|
|
161
|
+
/** The terminal prompt, late-bound — the UI layer patches the real one in after boot. */
|
|
162
|
+
readonly localPromptRef: { requestPermission: (request: PermissionPromptRequest) => Promise<PermissionPromptDecision> };
|
|
163
|
+
/** The live session id an ask belongs to; written by the bootstrap tail. */
|
|
164
|
+
readonly liveSessionIdRef: { value: string | null };
|
|
123
165
|
/** Loopback-fetch approval that rides the approval broker; shared by the tool registry and orchestrator so every surface asks the same way. */
|
|
124
166
|
readonly localhostFetchApproval: ReturnType<typeof buildLocalhostFetchApproval>;
|
|
125
167
|
/** Terminal prompt-answer handler that rides the approval broker; shared by the tool registry and orchestrator so an interactive command's prompt gets an ask/card on every surface. */
|
|
@@ -128,10 +170,25 @@ export interface RuntimeServices {
|
|
|
128
170
|
readonly notificationDispatcher: NotificationDispatcher;
|
|
129
171
|
/** Durable user-origin permission rules (remembered approvals); permissions.rules.* surface. Mirrors the SDK composition. */
|
|
130
172
|
readonly userPermissionRuleStore: UserPermissionRuleStore;
|
|
173
|
+
/**
|
|
174
|
+
* An EMPTY verb catalog. This product answers no verbs — it is a client. The
|
|
175
|
+
* field exists because the SDK's `startExternalServices` takes a daemon-grade
|
|
176
|
+
* `RuntimeServices` even in the adopt-only mode this surface runs in, and
|
|
177
|
+
* because plugin loading is handed one. Nothing is ever served off it: with
|
|
178
|
+
* `adoptOnly` no `DaemonServer` is constructed, so a descriptor registered
|
|
179
|
+
* here has no listener behind it. Plugin registrations that need to be
|
|
180
|
+
* ANSWERED belong daemon-side — see docs/decisions for the plugin split.
|
|
181
|
+
*/
|
|
182
|
+
readonly gatewayMethods: GatewayMethodCatalog;
|
|
183
|
+
/** Step-up (re-auth) for this surface's own privileged actions. */
|
|
184
|
+
readonly stepUpService: StepUpService;
|
|
185
|
+
/** This installation's pairing tokens — the bearer a phone or browser presents. */
|
|
186
|
+
readonly pairingTokens: PairingTokenManager;
|
|
187
|
+
/** Paired-phone posture over `devices.*` verbs; the `phone` tool calls through it. */
|
|
188
|
+
readonly devices: DevicesClient;
|
|
131
189
|
readonly sessionBroker: SharedSessionBroker;
|
|
132
190
|
readonly deliveryManager: AutomationDeliveryManager;
|
|
133
191
|
readonly automationManager: AutomationManager;
|
|
134
|
-
readonly gatewayMethods: GatewayMethodCatalog;
|
|
135
192
|
readonly artifactStore: ArtifactStore;
|
|
136
193
|
readonly knowledgeService: KnowledgeService;
|
|
137
194
|
readonly agentKnowledgeService: KnowledgeService;
|
|
@@ -145,8 +202,6 @@ export interface RuntimeServices {
|
|
|
145
202
|
readonly memorySpine: MemorySpineClient;
|
|
146
203
|
readonly serviceRegistry: ServiceRegistry;
|
|
147
204
|
readonly secretsManager: SecretsManager;
|
|
148
|
-
readonly stepUpService: StepUpService;
|
|
149
|
-
readonly pairingTokens: PairingTokenManager; // backs pairing.tokens.* verbs + the settings device surface (mirrors the SDK composition)
|
|
150
205
|
readonly subscriptionManager: SubscriptionManager;
|
|
151
206
|
readonly localUserAuthManager: UserAuthManager;
|
|
152
207
|
readonly profileManager: ProfileManager;
|
|
@@ -184,20 +239,6 @@ export interface RuntimeServices {
|
|
|
184
239
|
readonly providerRegistry: ProviderRegistry;
|
|
185
240
|
readonly toolLLM: ToolLLM;
|
|
186
241
|
readonly distributedRuntime: DistributedRuntimeManager;
|
|
187
|
-
/**
|
|
188
|
-
* The paired-phone feature for this host: the grants ledger, the capture
|
|
189
|
-
* store, the housekeeping sweeps, and the capability service every `device.*`
|
|
190
|
-
* setting governs. Bound to the `devices.*` verbs at composition; the `phone`
|
|
191
|
-
* tool is registered on it in the bootstrap tail.
|
|
192
|
-
*/
|
|
193
|
-
readonly devicePosture: DevicePostureRuntime;
|
|
194
|
-
readonly daemonHandlers: DaemonHandlerSurfaces;
|
|
195
|
-
/** Elects the one node on this network that consumes inbound messages; hand it to the DaemonServer so its consumers share this leadership instead of holding a second election. */
|
|
196
|
-
readonly clusterCoordinator: ClusterCoordinator;
|
|
197
|
-
/** LAN group membership: identity, keys, roster, and the `cluster` verbs. */
|
|
198
|
-
readonly clusterGroup: ClusterGroupComposition;
|
|
199
|
-
/** Start the group layer and then the election, in that order. Idempotent. */
|
|
200
|
-
readonly startCluster: () => Promise<void>;
|
|
201
242
|
readonly remoteRunnerRegistry: RemoteRunnerRegistry;
|
|
202
243
|
readonly remoteSupervisor: RemoteSupervisor;
|
|
203
244
|
readonly sessionMemoryStore: SessionMemoryStore;
|
|
@@ -239,6 +280,12 @@ export interface RuntimeServices {
|
|
|
239
280
|
readonly sessionLiveTurnControls: SessionLiveTurnControlsHolder;
|
|
240
281
|
/** Unified live process registry (agents, WRFC chains, workflows, watchers, background processes) backing the Fleet panel; archive-aware — finished subtrees can be moved to the session archive view. */
|
|
241
282
|
readonly processRegistry: ArchivableProcessRegistry;
|
|
283
|
+
/**
|
|
284
|
+
* What the Fleet panel reads: this surface's own registry rows UNION the
|
|
285
|
+
* adopted daemon's, deduped by node id with the local (live, actionable) copy
|
|
286
|
+
* winning. Interval-refreshed on the daemon half — see client/fleet-union.ts.
|
|
287
|
+
*/
|
|
288
|
+
readonly fleetReadModel: FleetUnionReadModel;
|
|
242
289
|
readonly modeManager: ModeManager;
|
|
243
290
|
readonly fileUndoManager: FileUndoManager;
|
|
244
291
|
readonly workspaceCheckpointManager: WorkspaceCheckpointManager;
|