@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.
- package/CHANGELOG.md +125 -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 +12 -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 +13 -80
- 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 +1 -1
- 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 +15 -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 -641
- 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 -58
- 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
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* proceeds exactly as it always did. The marker belonging to THIS process is
|
|
15
15
|
* ignored too — re-resuming the session already open here is not a fork.
|
|
16
16
|
*/
|
|
17
|
-
import { checkSessionLiveness } from '
|
|
17
|
+
import { checkSessionLiveness } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
18
18
|
import type { SessionSurface } from '@/runtime/index.ts';
|
|
19
19
|
import type { SelectionItem, SelectionResult } from '../input/selection-modal.ts';
|
|
20
20
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RuntimeServices } from './services.ts';
|
|
2
2
|
import type { RemoteRunnerRegistry } from '@/runtime/index.ts';
|
|
3
3
|
import type { RemoteSupervisor } from '@/runtime/index.ts';
|
|
4
|
-
import { createUiRuntimeEvents, type UiRuntimeEvents } from '
|
|
4
|
+
import { createUiRuntimeEvents, type UiRuntimeEvents } from '@/runtime/index.ts';
|
|
5
5
|
import { createUiReadModels, type UiReadModels, type UiReadModelOptions } from './ui-read-models.ts';
|
|
6
6
|
import type { ForensicsRegistry } from '@/runtime/index.ts';
|
|
7
7
|
import type { ControlPlaneRecentEvent } from '@pellux/goodvibes-sdk/platform/control-plane';
|
|
@@ -10,7 +10,7 @@ import { SessionUnionCache, type SessionReadFacade } from '@pellux/goodvibes-sdk
|
|
|
10
10
|
import type { ShellPathService } from '@/runtime/index.ts';
|
|
11
11
|
import type { HostServiceStatus } from '@/runtime/index.ts';
|
|
12
12
|
import type { SecretsManager } from '../config/secrets.ts';
|
|
13
|
-
import type {
|
|
13
|
+
import type { RelayReadAccessors } from './relay-reachability-bridge.ts';
|
|
14
14
|
|
|
15
15
|
export interface UiEnvironmentServices {
|
|
16
16
|
readonly workingDirectory: string;
|
|
@@ -66,7 +66,7 @@ export interface UiPlatformServices {
|
|
|
66
66
|
readonly webhookNotifier: RuntimeServices['webhookNotifier'];
|
|
67
67
|
readonly focusTracker: RuntimeServices['focusTracker'];
|
|
68
68
|
readonly policyRuntimeState: RuntimeServices['policyRuntimeState'];
|
|
69
|
-
readonly externalServices?:
|
|
69
|
+
readonly externalServices?: RelayReadAccessors & {
|
|
70
70
|
inspect(): {
|
|
71
71
|
readonly daemonRunning: boolean;
|
|
72
72
|
readonly daemonPortInUse?: boolean;
|
|
@@ -79,8 +79,6 @@ export interface UiPlatformServices {
|
|
|
79
79
|
readonly sessionSpineActive?: boolean;
|
|
80
80
|
readonly sessionSpineStatus?: 'unknown' | 'online' | 'offline';
|
|
81
81
|
};
|
|
82
|
-
/** Undelivered daemon receipts (update/crash/migration) for the attach-time consuming read; empty when no daemon runs. */
|
|
83
|
-
collectDaemonReceipts(): readonly { readonly id: string; readonly text: string; readonly at: number }[];
|
|
84
82
|
restart(): Promise<{
|
|
85
83
|
readonly daemonRunning: boolean;
|
|
86
84
|
readonly daemonPortInUse?: boolean;
|
|
@@ -119,6 +117,8 @@ export interface UiRuntimeSharedServices {
|
|
|
119
117
|
readonly remoteSupervisor: RuntimeServices['remoteSupervisor'] & RemoteSupervisor;
|
|
120
118
|
/** the shared live process registry backing the Fleet panel. */
|
|
121
119
|
readonly processRegistry: RuntimeServices['processRegistry'];
|
|
120
|
+
/** The Fleet panel's read model: local rows union the adopted daemon's. */
|
|
121
|
+
readonly fleetReadModel: RuntimeServices['fleetReadModel'];
|
|
122
122
|
/** The shared runtime event bus — the Fleet panel subscribes to its 'communication' domain for the honest steer-consumed signal. */
|
|
123
123
|
readonly runtimeBus: RuntimeServices['runtimeBus'];
|
|
124
124
|
};
|
|
@@ -143,7 +143,7 @@ export interface UiRuntimeServicesOptions extends UiReadModelOptions {
|
|
|
143
143
|
readonly getControlPlaneRecentEvents?: (limit: number) => readonly ControlPlaneRecentEvent[];
|
|
144
144
|
/**
|
|
145
145
|
* The shared session read facade constructed in bootstrap-core (so
|
|
146
|
-
* bootstrap.ts can drive its adopted-external/
|
|
146
|
+
* bootstrap.ts can drive its adopted-external/local mode). When omitted
|
|
147
147
|
* (test callers), a local-only passthrough facade over the broker is auto-created.
|
|
148
148
|
*/
|
|
149
149
|
readonly sessionUnionCache?: SessionUnionCache;
|
|
@@ -212,6 +212,7 @@ export function createUiRuntimeServices(
|
|
|
212
212
|
remoteRunnerRegistry: runtimeServices.remoteRunnerRegistry,
|
|
213
213
|
remoteSupervisor: runtimeServices.remoteSupervisor,
|
|
214
214
|
processRegistry: runtimeServices.processRegistry,
|
|
215
|
+
fleetReadModel: runtimeServices.fleetReadModel,
|
|
215
216
|
runtimeBus: runtimeServices.runtimeBus,
|
|
216
217
|
},
|
|
217
218
|
events: createUiRuntimeEvents(runtimeServices.runtimeBus),
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure logic for `/update
|
|
3
|
-
*
|
|
2
|
+
* Pure logic for `/update`, re-exported from the platform's update-policy
|
|
3
|
+
* modules so there is one mechanism everywhere: version comparison and the
|
|
4
|
+
* release-tag redirect lookup from `platform/runtime/self-update`, install-kind
|
|
5
|
+
* detection from `platform/runtime/operations`.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Install-kind detection stays local: it encodes how THIS package is
|
|
9
|
-
* installed (compiled binary vs bun/npm package vs source run) and what
|
|
10
|
-
* command replaces a swap for each kind.
|
|
7
|
+
* The self-update download/verify/swap orchestration that USES these lives in
|
|
8
|
+
* src/input/commands/update-runtime.ts; this module only decides "is there a
|
|
9
|
+
* newer version" and "can this install be swapped in place".
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* `fallbackUpdateCommand` is wrapped rather than re-exported: the platform's
|
|
12
|
+
* takes the package name a package-managed install is upgraded through, and
|
|
13
|
+
* that name is this product's own.
|
|
15
14
|
*/
|
|
16
15
|
export {
|
|
17
16
|
compareVersions,
|
|
@@ -21,39 +20,20 @@ export {
|
|
|
21
20
|
type UpdateFetchLike,
|
|
22
21
|
} from '@pellux/goodvibes-sdk/platform/runtime/self-update';
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* package-manager ancestry — the scripts/install.sh install path.
|
|
29
|
-
* Swappable in place.
|
|
30
|
-
* - "bun-global-package": running the vendored binary shipped inside an
|
|
31
|
-
* npm/bun-managed package install (execPath contains a "node_modules"
|
|
32
|
-
* path segment — true for both `bun add -g` and a local project
|
|
33
|
-
* dependency). Managed by the package manager; swapping the vendored
|
|
34
|
-
* file in place would fight the next `bun add -g` upgrade, so this is
|
|
35
|
-
* never swapped — the user re-runs their package manager instead.
|
|
36
|
-
* - "source": running directly via the `bun` interpreter (`bun run
|
|
37
|
-
* src/main.ts`), not a compiled binary at all.
|
|
38
|
-
*/
|
|
39
|
-
export type InstallKind = 'binary' | 'bun-global-package' | 'source';
|
|
23
|
+
export {
|
|
24
|
+
detectInstallKind,
|
|
25
|
+
type InstallKind,
|
|
26
|
+
} from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
40
27
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return 'bun-global-package';
|
|
49
|
-
}
|
|
50
|
-
return 'binary';
|
|
51
|
-
}
|
|
28
|
+
import {
|
|
29
|
+
fallbackUpdateCommand as platformFallbackUpdateCommand,
|
|
30
|
+
type InstallKind as PlatformInstallKind,
|
|
31
|
+
} from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
32
|
+
|
|
33
|
+
/** The package a package-managed install of this terminal is upgraded through. */
|
|
34
|
+
const TERMINAL_PACKAGE_NAME = '@pellux/goodvibes-tui';
|
|
52
35
|
|
|
53
36
|
/** The exact command to tell the user to run instead of a swap, for each non-binary install kind. */
|
|
54
|
-
export function fallbackUpdateCommand(kind: Exclude<
|
|
55
|
-
|
|
56
|
-
return 'bun add -g @pellux/goodvibes-tui';
|
|
57
|
-
}
|
|
58
|
-
return 'curl -fsSL https://goodvibes.sh/install.sh | sh';
|
|
37
|
+
export function fallbackUpdateCommand(kind: Exclude<PlatformInstallKind, 'binary'>): string {
|
|
38
|
+
return platformFallbackUpdateCommand(kind, TERMINAL_PACKAGE_NAME);
|
|
59
39
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WorkspaceCheckpointManager } from '@pellux/goodvibes-sdk/platform/workspace';
|
|
2
2
|
import { withCheckpointGuardSettings } from '../config/tui-extension-settings.ts';
|
|
3
|
-
import type { ConfigManager } from '
|
|
3
|
+
import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config';
|
|
4
4
|
import type { RuntimeEventBus, SessionSurface } from '@/runtime/index.ts';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
|
|
47
47
|
import type { WrfcChain, WrfcState } from '@pellux/goodvibes-sdk/platform/agents';
|
|
48
48
|
import type { RuntimeEventBus, WorkflowEvent } from '@/runtime/index.ts';
|
|
49
|
-
import { atomicWriteFileSync } from '
|
|
50
|
-
import { readVersioned } from '
|
|
49
|
+
import { atomicWriteFileSync } from '@pellux/goodvibes-sdk/platform/config';
|
|
50
|
+
import { readVersioned } from '@pellux/goodvibes-sdk/platform/config';
|
|
51
51
|
import type { SystemMessageRouter } from '../core/system-message-router.ts';
|
|
52
52
|
|
|
53
53
|
// ─── Constants ───────────────────────────────────────────────────────────────
|
package/src/shell/ui-openers.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ConfigManager } from '
|
|
2
|
-
import { getProviderIdFromModel } from '
|
|
1
|
+
import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config';
|
|
2
|
+
import { getProviderIdFromModel } from '@pellux/goodvibes-sdk/platform/providers';
|
|
3
3
|
import type { ConversationManager } from '../core/conversation';
|
|
4
4
|
import type { CommandContext } from '../input/command-registry.ts';
|
|
5
5
|
import type { InputHandler } from '../input/handler.ts';
|
|
@@ -11,7 +11,7 @@ import type { McpRegistry } from '@pellux/goodvibes-sdk/platform/mcp';
|
|
|
11
11
|
import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config';
|
|
12
12
|
import type { SecretsManager } from '@pellux/goodvibes-sdk/platform/config';
|
|
13
13
|
import type { MemoryEmbeddingProviderRegistry } from '@pellux/goodvibes-sdk/platform/state';
|
|
14
|
-
import type { ServiceInspectionQuery } from '
|
|
14
|
+
import type { ServiceInspectionQuery } from '@/runtime/index.ts';
|
|
15
15
|
import type { EmbeddingProviderPickerEntry, ModelPickerTargetInfo } from '../input/model-picker.ts';
|
|
16
16
|
import type { SelectionItem } from '../input/selection-modal.ts';
|
|
17
17
|
import { categorizeBuiltinCommands } from '../input/commands.ts';
|
|
@@ -20,7 +20,9 @@ import { setActiveThemeMode } from '../renderer/theme.ts';
|
|
|
20
20
|
import { THEME_MODE_CONFIG_KEY, coerceThemeModeSetting } from '../renderer/theme-mode-config.ts';
|
|
21
21
|
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils';
|
|
22
22
|
import { buildFirstOpenItems, decodeFirstOpenChoice, selfRecordWorkspaceRegistration } from '../cli/tui-startup.ts';
|
|
23
|
-
import type {
|
|
23
|
+
import type { SettingsDaemonCredentialWriter } from '../input/settings-modal-secrets.ts';
|
|
24
|
+
import type { DaemonOwnedConfigWriter } from '../input/settings-modal-mutations.ts';
|
|
25
|
+
import type { WorkspaceTrustLevel } from '@pellux/goodvibes-sdk/platform/runtime/operations';
|
|
24
26
|
|
|
25
27
|
type WireShellUiOpenersOptions = {
|
|
26
28
|
commandContext: CommandContext;
|
|
@@ -34,6 +36,18 @@ type WireShellUiOpenersOptions = {
|
|
|
34
36
|
mcpRegistry: McpRegistry;
|
|
35
37
|
subscriptionManager: SubscriptionManager;
|
|
36
38
|
secretsManager?: Pick<SecretsManager, 'delete' | 'get' | 'set'>;
|
|
39
|
+
/**
|
|
40
|
+
* The daemon's credential write. Present when a daemon is configured; a
|
|
41
|
+
* daemon-scoped credential goes there rather than into this surface's own
|
|
42
|
+
* store, which the daemon never reads.
|
|
43
|
+
*/
|
|
44
|
+
daemonCredentials?: SettingsDaemonCredentialWriter | null;
|
|
45
|
+
/**
|
|
46
|
+
* Where a daemon-owned setting is written. `surfaces.*`, `watchers.*`,
|
|
47
|
+
* `automation.*` and the rest are applied by the daemon; writing one into
|
|
48
|
+
* this surface's own file reports success and configures nothing.
|
|
49
|
+
*/
|
|
50
|
+
daemonConfig?: DaemonOwnedConfigWriter | null;
|
|
37
51
|
serviceRegistry: Pick<ServiceInspectionQuery, 'getAll'>;
|
|
38
52
|
/** Backs the model picker's 'embeddings' target and its own item-list mode. */
|
|
39
53
|
memoryEmbeddingRegistry: Pick<MemoryEmbeddingProviderRegistry, 'getDefaultProviderId' | 'setDefaultProvider' | 'status'>;
|
|
@@ -120,6 +134,8 @@ export function wireShellUiOpeners(options: WireShellUiOpenersOptions): void {
|
|
|
120
134
|
mcpRegistry,
|
|
121
135
|
subscriptionManager,
|
|
122
136
|
secretsManager,
|
|
137
|
+
daemonCredentials,
|
|
138
|
+
daemonConfig,
|
|
123
139
|
serviceRegistry,
|
|
124
140
|
memoryEmbeddingRegistry,
|
|
125
141
|
workingDirectory,
|
|
@@ -394,12 +410,19 @@ export function wireShellUiOpeners(options: WireShellUiOpenersOptions): void {
|
|
|
394
410
|
commandContext.openSettingsModal = (target?: string) => {
|
|
395
411
|
input.modalOpened('settings');
|
|
396
412
|
input.settingsModal.open(configManager, featureFlags, subscriptionManager, serviceRegistry, mcpRegistry, secretsManager, {
|
|
397
|
-
// The Connections category
|
|
398
|
-
//
|
|
399
|
-
//
|
|
413
|
+
// The Connections category probes through this app's catalog, which is
|
|
414
|
+
// empty by construction — so those rows read 'unreachable' rather than
|
|
415
|
+
// inventing a settled state nothing established. Retargeting that probe
|
|
416
|
+
// at the daemon is the remaining half of this seam.
|
|
400
417
|
...(commandContext.workspace?.gatewayMethods
|
|
401
418
|
? { gatewayMethods: commandContext.workspace.gatewayMethods }
|
|
402
419
|
: {}),
|
|
420
|
+
// A daemon-scoped credential goes to the daemon, which writes the secret,
|
|
421
|
+
// verifies it reads back, and only then points the config key at it.
|
|
422
|
+
...(daemonCredentials ? { daemonCredentials } : {}),
|
|
423
|
+
// A daemon-owned setting is applied by the daemon, so it is written there.
|
|
424
|
+
...(daemonConfig ? { daemonConfig } : {}),
|
|
425
|
+
reportError: (message: string) => { commandContext.print?.(message); },
|
|
403
426
|
requestRender: render,
|
|
404
427
|
onSettingApplied: (change) => {
|
|
405
428
|
// forced dark/light applies immediately (rebuild palettes + full
|
package/src/utils/clipboard.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils';
|
|
2
2
|
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils';
|
|
3
|
-
import { allowTerminalWrite } from '
|
|
3
|
+
import { allowTerminalWrite } from '@pellux/goodvibes-terminal-shell/terminal-output-guard';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* copyToClipboard - Uses OSC 52 escape sequence to copy text to the terminal clipboard.
|
|
@@ -2,7 +2,7 @@ import { readFileSync, readdirSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { CONFIG_SCHEMA } from '@pellux/goodvibes-sdk/platform/config';
|
|
4
4
|
import { FEATURE_SETTINGS } from '@pellux/goodvibes-sdk/platform/runtime/state';
|
|
5
|
-
import { featureEnablementWrite } from '
|
|
5
|
+
import { featureEnablementWrite, GOODVIBES_CLI_CATALOG } from '@pellux/goodvibes-terminal-shell';
|
|
6
6
|
import { CommandRegistry } from '../input/command-registry.ts';
|
|
7
7
|
import { registerBuiltinCommands } from '../input/commands.ts';
|
|
8
8
|
|
|
@@ -531,18 +531,20 @@ function countBuiltinPanels(root: string): number {
|
|
|
531
531
|
return count;
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
534
|
+
/**
|
|
535
|
+
* The CLI command words this terminal actually accepts, read off the catalog
|
|
536
|
+
* the parser is driven by rather than scraped out of a source file — the
|
|
537
|
+
* ledger counts what ships, and a catalog entry IS what ships.
|
|
538
|
+
*/
|
|
539
|
+
function listCliCommands(): string[] {
|
|
540
|
+
return GOODVIBES_CLI_CATALOG.commands
|
|
541
|
+
.map((spec) => spec.name as string)
|
|
540
542
|
.filter((command) => command !== 'unknown');
|
|
541
543
|
}
|
|
542
544
|
|
|
543
545
|
export function buildVerificationLedger(root: string): VerificationLedger {
|
|
544
546
|
const slashCommandNames = listSlashCommands();
|
|
545
|
-
const cliCommandNames = listCliCommands(
|
|
547
|
+
const cliCommandNames = listCliCommands();
|
|
546
548
|
const slashCommands = slashCommandNames.length;
|
|
547
549
|
const panels = countBuiltinPanels(root);
|
|
548
550
|
const cliCommands = cliCommandNames.length;
|
package/src/version.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { join } from 'node:path';
|
|
|
6
6
|
// The prebuild script updates the fallback value before compilation.
|
|
7
7
|
// Uses import.meta.dir (Bun) to locate package.json relative to this file,
|
|
8
8
|
// which is correct regardless of the process working directory.
|
|
9
|
-
let _version = '
|
|
9
|
+
let _version = '2.0.1';
|
|
10
10
|
try {
|
|
11
11
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8'));
|
|
12
12
|
// Only trust a version read from OUR OWN package.json. A Bun single-file
|
package/bin/goodvibes-daemon
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
//
|
|
3
|
-
// ── READ THIS BEFORE DEV-TESTING DAEMON ROUTES THROUGH THIS SHIM ──────────
|
|
4
|
-
//
|
|
5
|
-
// This launcher prefers a PREBUILT binary over the source checkout. On a
|
|
6
|
-
// machine with `vendor/goodvibes-daemon-<platform>` staged, `bun bin/goodvibes-daemon`
|
|
7
|
-
// runs THAT binary — compiled against the PUBLISHED SDK — not the source in
|
|
8
|
-
// this repo and not whatever `sdk-dev link` overlaid into node_modules.
|
|
9
|
-
//
|
|
10
|
-
// The consequence is quiet and expensive: a route you just added returns 404
|
|
11
|
-
// and every explanation you reach for is wrong, because the process answering
|
|
12
|
-
// never contained your code. It cost a round several hours.
|
|
13
|
-
//
|
|
14
|
-
// Two further traps in the same area:
|
|
15
|
-
// - Killing this shim does NOT kill the vendored child. `pkill -f` on the
|
|
16
|
-
// shim's command line leaves the daemon listening, so the "restart" you
|
|
17
|
-
// think you performed changed nothing.
|
|
18
|
-
// - `sdk-dev link` overlays node_modules only. A vendored binary ignores it
|
|
19
|
-
// completely.
|
|
20
|
-
//
|
|
21
|
-
// To exercise source (and a linked SDK), bypass this launcher:
|
|
22
|
-
// bun src/daemon/cli.ts --port <port> --hostname 127.0.0.1
|
|
23
|
-
// and isolate it with GOODVIBES_HOME / GOODVIBES_DAEMON_HOME / GOODVIBES_WORKING_DIR
|
|
24
|
-
// so it cannot read the machine's real credentials or claim its service unit.
|
|
25
|
-
//
|
|
26
|
-
import { dirname, join } from 'node:path';
|
|
27
|
-
import { fileURLToPath } from 'node:url';
|
|
28
|
-
import { spawnSync } from 'node:child_process';
|
|
29
|
-
import {
|
|
30
|
-
ensureVendoredBinary,
|
|
31
|
-
isExecutable,
|
|
32
|
-
isSourceCheckout,
|
|
33
|
-
resolveArtifactName,
|
|
34
|
-
resolvePlatformPackageBinary,
|
|
35
|
-
run,
|
|
36
|
-
supportedTargetsText,
|
|
37
|
-
} from './launcher-support.js';
|
|
38
|
-
|
|
39
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
40
|
-
const packageRoot = join(__dirname, '..');
|
|
41
|
-
|
|
42
|
-
if (process.platform === 'win32') {
|
|
43
|
-
console.error('goodvibes-daemon: native Windows is not supported.');
|
|
44
|
-
console.error('Use WSL so the Linux release binary path applies.');
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const artifactName = resolveArtifactName('daemon', process.platform, process.arch);
|
|
49
|
-
const localPlatformBuild = artifactName ? join(packageRoot, 'dist', artifactName) : null;
|
|
50
|
-
const localBuild = join(packageRoot, 'dist', 'goodvibes-daemon');
|
|
51
|
-
const vendoredBinary = artifactName ? join(packageRoot, 'vendor', artifactName) : null;
|
|
52
|
-
|
|
53
|
-
if (localPlatformBuild && isExecutable(localPlatformBuild)) {
|
|
54
|
-
run(localPlatformBuild, process.argv.slice(2));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (isExecutable(localBuild)) {
|
|
58
|
-
run(localBuild, process.argv.slice(2));
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (vendoredBinary && isExecutable(vendoredBinary)) {
|
|
62
|
-
run(vendoredBinary, process.argv.slice(2));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const platformPackageBinary = resolvePlatformPackageBinary('daemon', process.platform, process.arch, packageRoot);
|
|
66
|
-
if (platformPackageBinary) {
|
|
67
|
-
run(platformPackageBinary, process.argv.slice(2));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (artifactName) {
|
|
71
|
-
try {
|
|
72
|
-
const installedBinary = await ensureVendoredBinary({ packageRoot, artifactName });
|
|
73
|
-
run(installedBinary, process.argv.slice(2));
|
|
74
|
-
} catch (error) {
|
|
75
|
-
console.error(`goodvibes-daemon: failed to install release binary: ${error instanceof Error ? error.message : String(error)}`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const bunProbe = spawnSync('bun', ['--version'], { stdio: 'ignore' });
|
|
80
|
-
if (bunProbe.status === 0 && isSourceCheckout(packageRoot)) {
|
|
81
|
-
run('bun', [join(packageRoot, 'src', 'daemon', 'cli.ts'), ...process.argv.slice(2)]);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
console.error('goodvibes-daemon: no runnable binary is available.');
|
|
85
|
-
console.error(`platform: ${process.platform}-${process.arch}`);
|
|
86
|
-
console.error(`supported prebuilt targets: ${supportedTargetsText()}`);
|
|
87
|
-
console.error('Either:');
|
|
88
|
-
console.error(' 1. check network access to the GitHub release assets, or');
|
|
89
|
-
console.error(' 2. build locally with `bun run build:daemon:<platform>` in a source checkout.');
|
|
90
|
-
process.exit(1);
|