@pellux/goodvibes-tui 0.18.11 → 0.18.13
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 +72 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +1 -138
- package/src/config/subscription-providers.ts +1 -127
- package/src/core/conversation-rendering.ts +5 -5
- package/src/core/conversation.ts +177 -424
- package/src/core/history.ts +45 -0
- package/src/core/orchestrator.ts +3 -733
- package/src/core/system-message-router.ts +19 -58
- package/src/input/command-registry.ts +3 -3
- package/src/input/commands/session-content.ts +2 -2
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed.ts +2 -2
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/search.ts +1 -1
- package/src/input/selection.ts +2 -2
- package/src/input/session-picker-modal.ts +1 -1
- package/src/main.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +3 -3
- package/src/panels/agent-logs-panel.ts +3 -3
- package/src/panels/approval-panel.ts +2 -2
- package/src/panels/automation-control-panel.ts +3 -3
- package/src/panels/base-panel.ts +14 -14
- package/src/panels/builtin/agent.ts +1 -0
- package/src/panels/builtin/operations.ts +2 -1
- package/src/panels/builtin/session.ts +2 -2
- package/src/panels/builtin/shared.ts +5 -5
- package/src/panels/cockpit-panel.ts +2 -2
- package/src/panels/communication-panel.ts +3 -3
- package/src/panels/context-visualizer-panel.ts +6 -3
- package/src/panels/control-plane-panel.ts +3 -3
- package/src/panels/cost-tracker-panel.ts +3 -3
- package/src/panels/debug-panel.ts +2 -2
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/docs-panel.ts +1 -1
- package/src/panels/eval-panel.ts +2 -2
- package/src/panels/file-explorer-panel.ts +3 -3
- package/src/panels/file-preview-panel.ts +3 -3
- package/src/panels/forensics-panel.ts +2 -2
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hooks-panel.ts +3 -3
- package/src/panels/incident-review-panel.ts +1 -1
- package/src/panels/intelligence-panel.ts +2 -2
- package/src/panels/knowledge-panel.ts +1 -1
- package/src/panels/local-auth-panel.ts +2 -2
- package/src/panels/marketplace-panel.ts +1 -1
- package/src/panels/mcp-panel.ts +3 -3
- package/src/panels/memory-panel.ts +1 -1
- package/src/panels/ops-control-panel.ts +3 -3
- package/src/panels/ops-strategy-panel.ts +2 -2
- package/src/panels/orchestration-panel.ts +2 -2
- package/src/panels/panel-list-panel.ts +6 -6
- package/src/panels/plan-dashboard-panel.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/policy-panel.ts +2 -2
- package/src/panels/polish.ts +3 -3
- package/src/panels/provider-accounts-panel.ts +2 -2
- package/src/panels/provider-health-domains.ts +5 -1
- package/src/panels/provider-health-panel.ts +7 -3
- package/src/panels/provider-stats-panel.ts +3 -3
- package/src/panels/remote-panel.ts +3 -3
- package/src/panels/routes-panel.ts +3 -3
- package/src/panels/sandbox-panel.ts +2 -2
- package/src/panels/schedule-panel.ts +1 -1
- package/src/panels/security-panel.ts +2 -2
- package/src/panels/services-panel.ts +2 -2
- package/src/panels/session-browser-panel.ts +3 -3
- package/src/panels/settings-sync-panel.ts +2 -2
- package/src/panels/skills-panel.ts +6 -6
- package/src/panels/subscription-panel.ts +2 -2
- package/src/panels/symbol-outline-panel.ts +3 -3
- package/src/panels/system-messages-panel.ts +4 -4
- package/src/panels/tasks-panel.ts +2 -2
- package/src/panels/thinking-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +7 -3
- package/src/panels/tool-inspector-panel.ts +3 -3
- package/src/panels/types.ts +5 -5
- package/src/panels/watchers-panel.ts +3 -3
- package/src/panels/welcome-panel.ts +1 -1
- package/src/panels/worktree-panel.ts +2 -2
- package/src/panels/wrfc-panel.ts +3 -3
- package/src/permissions/prompt.ts +3 -22
- package/src/plugins/loader.ts +15 -304
- package/src/renderer/agent-detail-modal.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +2 -2
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/bottom-bar.ts +2 -2
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +2 -2
- package/src/renderer/compositor.ts +2 -2
- 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 +2 -2
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +2 -2
- package/src/renderer/file-tree.ts +2 -2
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/live-tail-modal.ts +1 -1
- package/src/renderer/markdown.ts +2 -2
- package/src/renderer/modal-factory.ts +3 -3
- package/src/renderer/model-picker-overlay.ts +2 -2
- package/src/renderer/overlay-box.ts +2 -2
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-picker-overlay.ts +2 -2
- package/src/renderer/panel-tab-bar.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +2 -2
- package/src/renderer/process-modal.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +2 -2
- package/src/renderer/progress.ts +2 -2
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +2 -2
- package/src/renderer/session-picker-modal.ts +2 -2
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +1 -1
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +2 -2
- package/src/renderer/text-layout.ts +1 -1
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/ui-factory.ts +2 -2
- package/src/runtime/bootstrap-command-context.ts +7 -8
- package/src/runtime/bootstrap-command-parts.ts +4 -6
- package/src/runtime/bootstrap-core.ts +5 -4
- package/src/runtime/bootstrap-hook-bridge.ts +16 -175
- package/src/runtime/bootstrap-shell.ts +5 -5
- package/src/runtime/bootstrap.ts +6 -5
- package/src/runtime/context.ts +4 -20
- package/src/runtime/diagnostics/panels/index.ts +1 -1
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/diagnostics/panels/panel-resources.ts +118 -0
- package/src/runtime/perf/panel-contracts.ts +32 -0
- package/src/runtime/perf/panel-health-monitor.ts +18 -0
- package/src/runtime/services.ts +6 -6
- package/src/runtime/store/domains/conversation.ts +1 -181
- package/src/runtime/store/domains/permissions.ts +1 -143
- package/src/runtime/store/helpers/reducers/conversation.ts +1 -228
- package/src/runtime/store/helpers/reducers/lifecycle.ts +1 -440
- package/src/runtime/store/selectors/index.ts +11 -6
- package/src/runtime/store/state.ts +12 -4
- package/src/runtime/ui-read-models-observability-security.ts +2 -2
- package/src/runtime/ui-read-models-observability-system.ts +1 -1
- package/src/runtime/ui-service-queries.ts +1 -1
- package/src/runtime/ui-services.ts +1 -1
- package/src/shell/ui-openers.ts +1 -1
- package/src/tools/index.ts +1 -186
- package/src/types/grid.ts +48 -0
- package/src/utils/clipboard.ts +21 -0
- package/src/utils/splash-lines.ts +1 -1
- package/src/utils/terminal-width.ts +185 -0
- package/src/version.ts +1 -1
- package/src/acp/connection.ts +0 -447
- package/src/acp/index.ts +0 -7
- package/src/acp/manager.ts +0 -1
- package/src/adapters/bluebubbles/index.ts +0 -127
- package/src/adapters/discord/index.ts +0 -297
- package/src/adapters/github/index.ts +0 -73
- package/src/adapters/google-chat/index.ts +0 -119
- package/src/adapters/imessage/index.ts +0 -92
- package/src/adapters/index.ts +0 -15
- package/src/adapters/matrix/index.ts +0 -116
- package/src/adapters/mattermost/index.ts +0 -151
- package/src/adapters/msteams/index.ts +0 -180
- package/src/adapters/ntfy/index.ts +0 -118
- package/src/adapters/signal/index.ts +0 -92
- package/src/adapters/slack/index.ts +0 -323
- package/src/adapters/telegram/index.ts +0 -160
- package/src/adapters/types.ts +0 -97
- package/src/adapters/webhook/index.ts +0 -178
- package/src/adapters/whatsapp/index.ts +0 -135
- package/src/agents/message-bus-core.ts +0 -312
- package/src/agents/message-bus.ts +0 -2
- package/src/agents/orchestrator-prompts.ts +0 -351
- package/src/agents/orchestrator-runner.ts +0 -668
- package/src/agents/orchestrator.ts +0 -438
- package/src/agents/session.ts +0 -108
- package/src/agents/worktree.ts +0 -153
- package/src/agents/wrfc-config.ts +0 -47
- package/src/agents/wrfc-controller.ts +0 -747
- package/src/agents/wrfc-gate-runtime.ts +0 -75
- package/src/agents/wrfc-reporting.ts +0 -284
- package/src/agents/wrfc-runtime-events.ts +0 -150
- package/src/agents/wrfc-types.ts +0 -67
- package/src/automation/delivery-manager.ts +0 -368
- package/src/automation/index.ts +0 -72
- package/src/automation/manager-runtime-delivery.ts +0 -139
- package/src/automation/manager-runtime-events.ts +0 -131
- package/src/automation/manager-runtime-execution.ts +0 -511
- package/src/automation/manager-runtime-helpers.ts +0 -433
- package/src/automation/manager-runtime-job-mutations.ts +0 -175
- package/src/automation/manager-runtime-reconcile.ts +0 -148
- package/src/automation/manager-runtime-scheduling.ts +0 -189
- package/src/automation/manager-runtime-sync.ts +0 -54
- package/src/automation/manager-runtime.ts +0 -721
- package/src/automation/manager.ts +0 -10
- package/src/automation/service.ts +0 -242
- package/src/channels/builtin/account-actions.ts +0 -490
- package/src/channels/builtin/accounts.ts +0 -433
- package/src/channels/builtin/contracts.ts +0 -405
- package/src/channels/builtin/plugins.ts +0 -308
- package/src/channels/builtin/rendering.ts +0 -174
- package/src/channels/builtin/setup-schema.ts +0 -504
- package/src/channels/builtin/shared.ts +0 -96
- package/src/channels/builtin/surfaces.ts +0 -57
- package/src/channels/builtin/targets.ts +0 -693
- package/src/channels/builtin-runtime.ts +0 -443
- package/src/channels/delivery/shared.ts +0 -199
- package/src/channels/delivery/strategies-bridge.ts +0 -246
- package/src/channels/delivery/strategies-core.ts +0 -299
- package/src/channels/delivery/strategies-enterprise.ts +0 -178
- package/src/channels/delivery/types.ts +0 -59
- package/src/channels/delivery-router.ts +0 -127
- package/src/channels/index.ts +0 -77
- package/src/channels/plugin-registry.ts +0 -551
- package/src/channels/provider-runtime.ts +0 -330
- package/src/channels/reply-pipeline.ts +0 -522
- package/src/channels/route-manager.ts +0 -340
- package/src/channels/surface-registry.ts +0 -186
- package/src/config/helper-model.ts +0 -1
- package/src/config/manager.ts +0 -8
- package/src/config/subscription-auth.ts +0 -31
- package/src/config/tool-llm.ts +0 -110
- package/src/control-plane/approval-broker.ts +0 -351
- package/src/control-plane/gateway.ts +0 -1
- package/src/control-plane/index.ts +0 -54
- package/src/control-plane/media-contract-schemas.ts +0 -1
- package/src/control-plane/method-catalog-admin.ts +0 -1
- package/src/control-plane/method-catalog-channels.ts +0 -1
- package/src/control-plane/method-catalog-control-automation.ts +0 -1
- package/src/control-plane/method-catalog-control-core.ts +0 -1
- package/src/control-plane/method-catalog-control.ts +0 -1
- package/src/control-plane/method-catalog-events.ts +0 -1
- package/src/control-plane/method-catalog-knowledge.ts +0 -1
- package/src/control-plane/method-catalog-media.ts +0 -1
- package/src/control-plane/method-catalog-runtime.ts +0 -1
- package/src/control-plane/method-catalog-shared.ts +0 -1
- package/src/control-plane/method-catalog.ts +0 -1
- package/src/control-plane/operator-contract-schemas-admin.ts +0 -1
- package/src/control-plane/operator-contract-schemas-channels.ts +0 -1
- package/src/control-plane/operator-contract-schemas-control.ts +0 -1
- package/src/control-plane/operator-contract-schemas-domains.ts +0 -1
- package/src/control-plane/operator-contract-schemas-knowledge.ts +0 -1
- package/src/control-plane/operator-contract-schemas-media.ts +0 -1
- package/src/control-plane/operator-contract-schemas-permissions.ts +0 -1
- package/src/control-plane/operator-contract-schemas-remote.ts +0 -1
- package/src/control-plane/operator-contract-schemas-runtime.ts +0 -1
- package/src/control-plane/operator-contract-schemas-shared.ts +0 -1
- package/src/control-plane/operator-contract-schemas-telemetry.ts +0 -1
- package/src/control-plane/operator-contract-schemas.ts +0 -1
- package/src/control-plane/operator-contract.ts +0 -165
- package/src/control-plane/session-broker.ts +0 -780
- package/src/core/compaction-sections.ts +0 -492
- package/src/core/compaction-types.ts +0 -147
- package/src/core/context-compaction.ts +0 -542
- package/src/core/conversation-compaction.ts +0 -68
- package/src/core/conversation-diff.ts +0 -55
- package/src/core/conversation-utils.ts +0 -72
- package/src/core/event-replay.ts +0 -287
- package/src/core/orchestrator-context-runtime.ts +0 -407
- package/src/core/orchestrator-follow-up-runtime.ts +0 -134
- package/src/core/orchestrator-runtime.ts +0 -132
- package/src/core/orchestrator-tool-runtime.ts +0 -468
- package/src/core/orchestrator-turn-helpers.ts +0 -355
- package/src/core/orchestrator-turn-loop.ts +0 -443
- package/src/core/plan-command-handler.ts +0 -169
- package/src/core/transcript-events/classify.ts +0 -95
- package/src/core/transcript-events/index.ts +0 -15
- package/src/daemon/control-plane.ts +0 -522
- package/src/daemon/facade-composition.ts +0 -398
- package/src/daemon/facade.ts +0 -638
- package/src/daemon/helpers.ts +0 -74
- package/src/daemon/http/router-route-contexts.ts +0 -370
- package/src/daemon/http/router.ts +0 -531
- package/src/daemon/http-listener.ts +0 -301
- package/src/daemon/index.ts +0 -1
- package/src/daemon/server.ts +0 -1
- package/src/daemon/service-manager.ts +0 -413
- package/src/daemon/surface-actions.ts +0 -183
- package/src/daemon/surface-delivery.ts +0 -530
- package/src/daemon/surface-policy.ts +0 -60
- package/src/daemon/transport-events.ts +0 -110
- package/src/daemon/types.ts +0 -191
- package/src/export/markdown.ts +0 -213
- package/src/export/session-export.ts +0 -1
- package/src/git/index.ts +0 -1
- package/src/git/service.ts +0 -414
- package/src/hooks/chain-engine.ts +0 -414
- package/src/hooks/dispatcher.ts +0 -414
- package/src/hooks/hook-api.ts +0 -170
- package/src/hooks/index.ts +0 -48
- package/src/hooks/runners/agent.ts +0 -93
- package/src/hooks/runners/prompt.ts +0 -69
- package/src/hooks/workbench.ts +0 -360
- package/src/integrations/index.ts +0 -42
- package/src/integrations/notifier.ts +0 -206
- package/src/integrations/webhooks.ts +0 -1
- package/src/knowledge/consolidation.ts +0 -346
- package/src/knowledge/graphql.ts +0 -324
- package/src/knowledge/index.ts +0 -60
- package/src/knowledge/ingest-compile.ts +0 -386
- package/src/knowledge/ingest-context.ts +0 -18
- package/src/knowledge/ingest-inputs.ts +0 -387
- package/src/knowledge/ingest.ts +0 -1
- package/src/knowledge/internal.ts +0 -257
- package/src/knowledge/knowledge-api.ts +0 -432
- package/src/knowledge/lint.ts +0 -121
- package/src/knowledge/memory-sync.ts +0 -62
- package/src/knowledge/packet.ts +0 -370
- package/src/knowledge/scheduling.ts +0 -283
- package/src/knowledge/service.ts +0 -715
- package/src/mcp/client.ts +0 -383
- package/src/mcp/index.ts +0 -12
- package/src/mcp/mcp-api.ts +0 -90
- package/src/mcp/registry.ts +0 -1
- package/src/media/builtin-image-understanding.ts +0 -303
- package/src/media/builtin-providers.ts +0 -26
- package/src/media/index.ts +0 -18
- package/src/multimodal/index.ts +0 -13
- package/src/multimodal/service.ts +0 -492
- package/src/permissions/briefs/build.ts +0 -88
- package/src/permissions/manager.ts +0 -1
- package/src/plugins/api.ts +0 -383
- package/src/plugins/manager.ts +0 -481
- package/src/profiles/shape.ts +0 -58
- package/src/providers/amazon-bedrock-mantle.ts +0 -50
- package/src/providers/amazon-bedrock.ts +0 -61
- package/src/providers/anthropic-compat.ts +0 -373
- package/src/providers/anthropic-sdk-provider.ts +0 -230
- package/src/providers/anthropic-vertex.ts +0 -59
- package/src/providers/anthropic.ts +0 -469
- package/src/providers/auto-register.ts +0 -417
- package/src/providers/builtin-catalog.ts +0 -326
- package/src/providers/builtin-registry.ts +0 -575
- package/src/providers/cache-planner.ts +0 -258
- package/src/providers/capabilities.ts +0 -1
- package/src/providers/custom-loader.ts +0 -425
- package/src/providers/discovered-compat.ts +0 -7
- package/src/providers/discovered-factory.ts +0 -61
- package/src/providers/discovered-traits.ts +0 -138
- package/src/providers/gemini.ts +0 -462
- package/src/providers/github-copilot.ts +0 -254
- package/src/providers/index.ts +0 -1
- package/src/providers/interface.ts +0 -185
- package/src/providers/llama-cpp.ts +0 -402
- package/src/providers/lm-studio-helpers.ts +0 -367
- package/src/providers/lm-studio.ts +0 -484
- package/src/providers/model-catalog-cache.ts +0 -221
- package/src/providers/model-catalog-notifications.ts +0 -97
- package/src/providers/model-catalog-synthetic.ts +0 -202
- package/src/providers/model-catalog.ts +0 -211
- package/src/providers/model-limits.ts +0 -1
- package/src/providers/ollama.ts +0 -469
- package/src/providers/openai-codex.ts +0 -472
- package/src/providers/openai-compat.ts +0 -615
- package/src/providers/openai.ts +0 -231
- package/src/providers/optimizer.ts +0 -1
- package/src/providers/provider-api.ts +0 -1
- package/src/providers/registry-helpers.ts +0 -34
- package/src/providers/registry-models.ts +0 -77
- package/src/providers/registry-types.ts +0 -67
- package/src/providers/registry.ts +0 -1
- package/src/providers/runtime-metadata.ts +0 -149
- package/src/providers/runtime-snapshot.ts +0 -130
- package/src/providers/synthetic.ts +0 -561
- package/src/providers/tier-prompts.ts +0 -84
- package/src/providers/tool-formats.ts +0 -414
- package/src/runtime/auth/inspection.ts +0 -125
- package/src/runtime/bootstrap-background.ts +0 -157
- package/src/runtime/bootstrap-helpers.ts +0 -88
- package/src/runtime/bootstrap-runtime-events.ts +0 -254
- package/src/runtime/bootstrap-services.ts +0 -197
- package/src/runtime/compaction/index.ts +0 -1
- package/src/runtime/compaction/lifecycle.ts +0 -1
- package/src/runtime/compaction/manager.ts +0 -474
- package/src/runtime/compaction/quality-score.ts +0 -1
- package/src/runtime/compaction/resume-repair.ts +0 -1
- package/src/runtime/compaction/strategies/autocompact.ts +0 -1
- package/src/runtime/compaction/strategies/boundary-commit.ts +0 -1
- package/src/runtime/compaction/strategies/collapse.ts +0 -1
- package/src/runtime/compaction/strategies/index.ts +0 -1
- package/src/runtime/compaction/strategies/microcompact.ts +0 -1
- package/src/runtime/compaction/strategies/reactive.ts +0 -1
- package/src/runtime/compaction/types.ts +0 -1
- package/src/runtime/ecosystem/recommendations.ts +0 -117
- package/src/runtime/emitters/agents.ts +0 -96
- package/src/runtime/emitters/automation.ts +0 -112
- package/src/runtime/emitters/communication.ts +0 -53
- package/src/runtime/emitters/compaction.ts +0 -161
- package/src/runtime/emitters/control-plane.ts +0 -65
- package/src/runtime/emitters/deliveries.ts +0 -65
- package/src/runtime/emitters/forensics.ts +0 -17
- package/src/runtime/emitters/index.ts +0 -59
- package/src/runtime/emitters/knowledge.ts +0 -129
- package/src/runtime/emitters/mcp.ts +0 -95
- package/src/runtime/emitters/ops.ts +0 -163
- package/src/runtime/emitters/orchestration.ts +0 -87
- package/src/runtime/emitters/permissions.ts +0 -98
- package/src/runtime/emitters/planner.ts +0 -23
- package/src/runtime/emitters/plugins.ts +0 -78
- package/src/runtime/emitters/providers.ts +0 -30
- package/src/runtime/emitters/routes.ts +0 -57
- package/src/runtime/emitters/security.ts +0 -53
- package/src/runtime/emitters/session.ts +0 -93
- package/src/runtime/emitters/surfaces.ts +0 -57
- package/src/runtime/emitters/tasks.ts +0 -69
- package/src/runtime/emitters/tools.ts +0 -140
- package/src/runtime/emitters/transport.ts +0 -78
- package/src/runtime/emitters/turn.ts +0 -155
- package/src/runtime/emitters/ui.ts +0 -57
- package/src/runtime/emitters/watchers.ts +0 -57
- package/src/runtime/emitters/workflows.ts +0 -79
- package/src/runtime/eval/index.ts +0 -48
- package/src/runtime/eval/runner.ts +0 -163
- package/src/runtime/eval/suites.ts +0 -264
- package/src/runtime/events/domain-map.ts +0 -148
- package/src/runtime/events/index.ts +0 -1
- package/src/runtime/events/turn.ts +0 -1
- package/src/runtime/events/workflows.ts +0 -1
- package/src/runtime/forensics/collector.ts +0 -693
- package/src/runtime/forensics/index.ts +0 -23
- package/src/runtime/foundation-clients.ts +0 -78
- package/src/runtime/foundation-services.ts +0 -96
- package/src/runtime/guidance.ts +0 -183
- package/src/runtime/health/effect-handlers.ts +0 -189
- package/src/runtime/health/index.ts +0 -70
- package/src/runtime/health/wiring.ts +0 -115
- package/src/runtime/integration/helpers.ts +0 -640
- package/src/runtime/lifecycle.ts +0 -107
- package/src/runtime/mcp/index.ts +0 -68
- package/src/runtime/mcp/manager.ts +0 -513
- package/src/runtime/network/inbound.ts +0 -131
- package/src/runtime/network/index.ts +0 -30
- package/src/runtime/network/outbound.ts +0 -292
- package/src/runtime/network/shared.ts +0 -82
- package/src/runtime/operator-client.ts +0 -235
- package/src/runtime/ops/control-plane.ts +0 -363
- package/src/runtime/ops/index.ts +0 -122
- package/src/runtime/ops/playbooks/index.ts +0 -10
- package/src/runtime/ops/playbooks/session-unrecoverable.ts +0 -196
- package/src/runtime/ops/playbooks/stuck-turn.ts +0 -197
- package/src/runtime/ops/runtime-context.ts +0 -100
- package/src/runtime/ops-api.ts +0 -27
- package/src/runtime/orchestration/spawn-policy.ts +0 -83
- package/src/runtime/peer-client.ts +0 -404
- package/src/runtime/perf/index.ts +0 -57
- package/src/runtime/perf/slo-collector.ts +0 -375
- package/src/runtime/permissions/index.ts +0 -190
- package/src/runtime/permissions/policy-runtime.ts +0 -1
- package/src/runtime/permissions/preflight.ts +0 -101
- package/src/runtime/permissions/rule-suggestions.ts +0 -36
- package/src/runtime/plugins/hot-reload.ts +0 -221
- package/src/runtime/plugins/index.ts +0 -84
- package/src/runtime/plugins/lifecycle.ts +0 -95
- package/src/runtime/plugins/manager.ts +0 -474
- package/src/runtime/plugins/manifest.ts +0 -167
- package/src/runtime/plugins/quarantine.ts +0 -202
- package/src/runtime/plugins/trust.ts +0 -291
- package/src/runtime/plugins/types.ts +0 -205
- package/src/runtime/provider-accounts/registry.ts +0 -326
- package/src/runtime/remote/distributed-runtime-contract-schemas.ts +0 -386
- package/src/runtime/remote/index.ts +0 -488
- package/src/runtime/remote/runner-registry.ts +0 -438
- package/src/runtime/remote/supervisor.ts +0 -70
- package/src/runtime/runtime-hook-api.ts +0 -5
- package/src/runtime/runtime-knowledge-api.ts +0 -14
- package/src/runtime/runtime-mcp-api.ts +0 -5
- package/src/runtime/runtime-ops-api.ts +0 -86
- package/src/runtime/runtime-provider-api.ts +0 -18
- package/src/runtime/session-maintenance.ts +0 -188
- package/src/runtime/session-persistence.ts +0 -288
- package/src/runtime/session-return-context.ts +0 -195
- package/src/runtime/settings/control-plane-store.ts +0 -258
- package/src/runtime/settings/control-plane.ts +0 -599
- package/src/runtime/shell-command-extensions.ts +0 -54
- package/src/runtime/shell-command-ops.ts +0 -207
- package/src/runtime/shell-command-platform.ts +0 -47
- package/src/runtime/shell-command-services.ts +0 -143
- package/src/runtime/shell-command-workspace.ts +0 -31
- package/src/runtime/tasks/adapters/acp-adapter.ts +0 -211
- package/src/runtime/tasks/adapters/agent-adapter.ts +0 -208
- package/src/runtime/tasks/adapters/index.ts +0 -16
- package/src/runtime/tasks/adapters/process-adapter.ts +0 -214
- package/src/runtime/tasks/adapters/scheduler-adapter.ts +0 -193
- package/src/runtime/tasks/index.ts +0 -68
- package/src/runtime/tasks/manager.ts +0 -415
- package/src/runtime/telemetry/api-helpers.ts +0 -517
- package/src/runtime/telemetry/api.ts +0 -768
- package/src/runtime/telemetry/index.ts +0 -178
- package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +0 -440
- package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +0 -200
- package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +0 -18
- package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +0 -204
- package/src/runtime/telemetry/instrumentation/domain-bridge.ts +0 -125
- package/src/runtime/telemetry/instrumentation/index.ts +0 -67
- package/src/runtime/tools/context.ts +0 -114
- package/src/runtime/tools/index.ts +0 -46
- package/src/runtime/tools/phased-executor.ts +0 -448
- package/src/runtime/tools/phases/budget.ts +0 -130
- package/src/runtime/tools/phases/execute.ts +0 -69
- package/src/runtime/tools/phases/index.ts +0 -13
- package/src/runtime/tools/phases/map-output.ts +0 -98
- package/src/runtime/tools/phases/permission.ts +0 -133
- package/src/runtime/tools/phases/posthook.ts +0 -57
- package/src/runtime/tools/phases/prehook.ts +0 -68
- package/src/runtime/tools/phases/validate.ts +0 -53
- package/src/runtime/transports/direct.ts +0 -73
- package/src/runtime/transports/http-helpers.ts +0 -218
- package/src/runtime/transports/http-types.ts +0 -364
- package/src/runtime/transports/http.ts +0 -629
- package/src/runtime/transports/realtime.ts +0 -50
- package/src/runtime/transports/remote-events.ts +0 -16
- package/src/runtime/transports/shared.ts +0 -39
- package/src/runtime/transports/ui-runtime-events.ts +0 -35
- package/src/runtime/ui-read-models-core.ts +0 -95
- package/src/runtime/ui-read-models-operations.ts +0 -203
- package/src/runtime/worktree/registry.ts +0 -252
- package/src/sessions/manager.ts +0 -14
- package/src/state/file-watcher.ts +0 -294
- package/src/state/index.ts +0 -56
- package/src/state/knowledge-injection.ts +0 -214
- package/src/state/memory-embedding-http.ts +0 -642
- package/src/state/memory-embeddings.ts +0 -312
- package/src/state/memory-ingest.ts +0 -132
- package/src/state/memory-registry.ts +0 -111
- package/src/state/memory-store-helpers.ts +0 -160
- package/src/state/memory-store.ts +0 -728
- package/src/state/memory-vector-store.ts +0 -418
- package/src/templates/manager.ts +0 -187
- package/src/tools/agent/index.ts +0 -610
- package/src/tools/agent/manager.ts +0 -476
- package/src/tools/analyze/git-modes.ts +0 -380
- package/src/tools/analyze/index.ts +0 -128
- package/src/tools/channel/agent-tools.ts +0 -16
- package/src/tools/channel/index.ts +0 -268
- package/src/tools/control/index.ts +0 -90
- package/src/tools/edit/core.ts +0 -619
- package/src/tools/edit/index.ts +0 -4
- package/src/tools/edit/phased.ts +0 -33
- package/src/tools/fetch/index.ts +0 -3
- package/src/tools/fetch/phased.ts +0 -34
- package/src/tools/fetch/runtime.ts +0 -499
- package/src/tools/mcp/index.ts +0 -190
- package/src/tools/remote-trigger/index.ts +0 -130
- package/src/tools/shared/auto-heal.ts +0 -282
- package/src/tools/state/index.ts +0 -688
- package/src/tools/web-search/index.ts +0 -38
- package/src/tools/write/index.ts +0 -604
- package/src/tools/write/phased.ts +0 -41
- package/src/types/generated/foundation-client-types.ts +0 -22
- package/src/watchers/index.ts +0 -11
- package/src/watchers/registry.ts +0 -517
- package/src/web-search/index.ts +0 -26
- package/src/web-search/provider-registry.ts +0 -64
- package/src/web-search/providers/brave.ts +0 -100
- package/src/web-search/providers/duckduckgo.ts +0 -270
- package/src/web-search/providers/exa.ts +0 -77
- package/src/web-search/providers/firecrawl.ts +0 -90
- package/src/web-search/providers/perplexity.ts +0 -86
- package/src/web-search/providers/searxng.ts +0 -88
- package/src/web-search/providers/shared.ts +0 -249
- package/src/web-search/providers/tavily.ts +0 -90
- package/src/web-search/service.ts +0 -142
|
@@ -1,629 +0,0 @@
|
|
|
1
|
-
import { getOperatorContract, getPeerContract } from '@pellux/goodvibes-sdk/contracts';
|
|
2
|
-
import type { AutomationSurfaceKind } from '@pellux/goodvibes-sdk/platform/automation/types';
|
|
3
|
-
import type {
|
|
4
|
-
ControlPlaneRecentEvent,
|
|
5
|
-
SharedApprovalRecord,
|
|
6
|
-
SharedSessionInputRecord,
|
|
7
|
-
SharedSessionMessage,
|
|
8
|
-
SharedSessionRecord,
|
|
9
|
-
SharedSessionSubmission,
|
|
10
|
-
} from '@pellux/goodvibes-sdk/platform/control-plane/index';
|
|
11
|
-
import type { RuntimeTask } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/tasks';
|
|
12
|
-
import type { ProviderRuntimeSnapshot, ProviderUsageSnapshot } from '@pellux/goodvibes-sdk/platform/providers/runtime-snapshot';
|
|
13
|
-
import type { TelemetryFilter, TelemetryListResponse, TelemetryRecord, TelemetrySnapshot } from '@pellux/goodvibes-sdk/platform/runtime/telemetry/api';
|
|
14
|
-
import type { ReadableSpan } from '@pellux/goodvibes-sdk/platform/runtime/telemetry/types';
|
|
15
|
-
import type {
|
|
16
|
-
DistributedNodeHostContract,
|
|
17
|
-
DistributedPendingWork,
|
|
18
|
-
DistributedPeerKind,
|
|
19
|
-
DistributedPeerRecord,
|
|
20
|
-
DistributedRuntimePairRequest,
|
|
21
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/remote/distributed-runtime-types';
|
|
22
|
-
import type {
|
|
23
|
-
UiControlPlaneSnapshot,
|
|
24
|
-
UiLocalAuthSnapshot,
|
|
25
|
-
UiSessionSnapshot,
|
|
26
|
-
UiTasksSnapshot,
|
|
27
|
-
} from '../ui-read-models.ts';
|
|
28
|
-
import type { UiRuntimeEvents } from '@pellux/goodvibes-sdk/platform/runtime/ui-events';
|
|
29
|
-
import { createClientTransport } from '@pellux/goodvibes-sdk/platform/runtime/transports/client-transport';
|
|
30
|
-
import { createHttpJsonTransport, type HttpJsonTransport } from '@pellux/goodvibes-sdk/platform/runtime/transports/http-json-transport';
|
|
31
|
-
import {
|
|
32
|
-
appendTelemetryQuery,
|
|
33
|
-
buildSessionEnsureBody,
|
|
34
|
-
buildSessionMessageBody,
|
|
35
|
-
buildSteerSessionMessageBody,
|
|
36
|
-
buildTaskSubmitBody,
|
|
37
|
-
buildTransportUrl,
|
|
38
|
-
connectTelemetryStream,
|
|
39
|
-
createJsonRequestInit,
|
|
40
|
-
normalizeTelemetryQuery,
|
|
41
|
-
readControlPlaneSnapshot,
|
|
42
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/transports/http-helpers';
|
|
43
|
-
import { createOperatorRemoteClient } from '@pellux/goodvibes-sdk/platform/runtime/transports/operator-remote-client';
|
|
44
|
-
import { createPeerRemoteClient } from '@pellux/goodvibes-sdk/platform/runtime/transports/peer-remote-client';
|
|
45
|
-
import {
|
|
46
|
-
createEventSourceConnector,
|
|
47
|
-
requestJson,
|
|
48
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/transports/shared';
|
|
49
|
-
import type { TransportPaths } from '@pellux/goodvibes-sdk/platform/runtime/transports/transport-paths';
|
|
50
|
-
import type {
|
|
51
|
-
HttpPeerRecordSnapshot,
|
|
52
|
-
HttpPeerSnapshot,
|
|
53
|
-
HttpProvidersSnapshot,
|
|
54
|
-
HttpRemotePairApprovalResponse,
|
|
55
|
-
HttpRemotePairRequestInput,
|
|
56
|
-
HttpRemotePairResponse,
|
|
57
|
-
HttpRemotePairVerificationResponse,
|
|
58
|
-
HttpRemotePeerClaimInput,
|
|
59
|
-
HttpRemotePeerCompleteInput,
|
|
60
|
-
HttpRemotePeerHeartbeatInput,
|
|
61
|
-
HttpRemotePeerInvokeInput,
|
|
62
|
-
HttpRemotePeerInvokeResponse,
|
|
63
|
-
HttpRemotePeerTokenResponse,
|
|
64
|
-
HttpSessionEnsureInput,
|
|
65
|
-
HttpSessionMessageInput,
|
|
66
|
-
HttpSteerSessionMessageInput,
|
|
67
|
-
HttpTaskActionResponse,
|
|
68
|
-
HttpTaskRetryResponse,
|
|
69
|
-
HttpTaskSubmitResponse,
|
|
70
|
-
HttpTransport,
|
|
71
|
-
HttpTransportOperatorClient,
|
|
72
|
-
HttpTransportOptions,
|
|
73
|
-
HttpTransportPeerClient,
|
|
74
|
-
HttpTransportSnapshot,
|
|
75
|
-
HttpTransportTelemetryMetricsSnapshot,
|
|
76
|
-
HttpTransportTelemetryQuery,
|
|
77
|
-
} from '@pellux/goodvibes-sdk/platform/runtime/transports/http-types';
|
|
78
|
-
import { createRemoteUiRuntimeEvents } from '@pellux/goodvibes-sdk/platform/runtime/transports/ui-runtime-events';
|
|
79
|
-
|
|
80
|
-
type SdkTelemetryQuery = {
|
|
81
|
-
readonly limit?: number;
|
|
82
|
-
readonly since?: number;
|
|
83
|
-
readonly until?: number;
|
|
84
|
-
readonly domains?: string;
|
|
85
|
-
readonly types?: string;
|
|
86
|
-
readonly severity?: 'debug' | 'error' | 'info' | 'warn';
|
|
87
|
-
readonly traceId?: string;
|
|
88
|
-
readonly sessionId?: string;
|
|
89
|
-
readonly turnId?: string;
|
|
90
|
-
readonly agentId?: string;
|
|
91
|
-
readonly taskId?: string;
|
|
92
|
-
readonly cursor?: string;
|
|
93
|
-
readonly view?: 'raw' | 'safe';
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
interface RemoteSnapshotResponse extends Record<string, unknown> {
|
|
97
|
-
readonly distributed?: {
|
|
98
|
-
readonly pairRequests?: readonly DistributedRuntimePairRequest[];
|
|
99
|
-
readonly peers?: readonly DistributedPeerRecord[];
|
|
100
|
-
readonly work?: readonly DistributedPendingWork[];
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function isNotFoundError(error: unknown): boolean {
|
|
105
|
-
return Boolean(
|
|
106
|
-
typeof error === 'object'
|
|
107
|
-
&& error !== null
|
|
108
|
-
&& 'transport' in error
|
|
109
|
-
&& typeof (error as { transport?: { readonly status?: number } }).transport?.status === 'number'
|
|
110
|
-
&& (error as { transport?: { readonly status?: number } }).transport?.status === 404,
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async function withNullOnNotFound<T>(run: () => Promise<T>): Promise<T | null> {
|
|
115
|
-
try {
|
|
116
|
-
return await run();
|
|
117
|
-
} catch (error) {
|
|
118
|
-
if (isNotFoundError(error)) return null;
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function asContractInput(input: object | undefined): Record<string, unknown> | undefined {
|
|
124
|
-
return input as unknown as Record<string, unknown> | undefined;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function normalizeSharedSessionRecord(record: SharedSessionRecord | Record<string, unknown>): SharedSessionRecord {
|
|
128
|
-
const candidate = record as SharedSessionRecord & {
|
|
129
|
-
readonly surfaceKinds?: readonly string[];
|
|
130
|
-
readonly participants?: ReadonlyArray<{
|
|
131
|
-
readonly surfaceKind: string;
|
|
132
|
-
readonly surfaceId: string;
|
|
133
|
-
readonly externalId?: string;
|
|
134
|
-
readonly userId?: string;
|
|
135
|
-
readonly displayName?: string;
|
|
136
|
-
readonly routeId?: string;
|
|
137
|
-
readonly lastSeenAt: number;
|
|
138
|
-
}>;
|
|
139
|
-
};
|
|
140
|
-
return {
|
|
141
|
-
...candidate,
|
|
142
|
-
surfaceKinds: (candidate.surfaceKinds ?? []) as readonly AutomationSurfaceKind[],
|
|
143
|
-
participants: (candidate.participants ?? []).map((participant) => ({
|
|
144
|
-
...participant,
|
|
145
|
-
surfaceKind: participant.surfaceKind as AutomationSurfaceKind,
|
|
146
|
-
})),
|
|
147
|
-
} as SharedSessionRecord;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
function normalizeSharedSessionMessage(
|
|
151
|
-
message: SharedSessionMessage | Record<string, unknown> | null | undefined,
|
|
152
|
-
fallbackInput?: SharedSessionInputRecord,
|
|
153
|
-
): SharedSessionMessage {
|
|
154
|
-
if (message && typeof message === 'object') {
|
|
155
|
-
const candidate = message as SharedSessionMessage & { readonly surfaceKind?: string };
|
|
156
|
-
return {
|
|
157
|
-
...candidate,
|
|
158
|
-
surfaceKind: candidate.surfaceKind as AutomationSurfaceKind | undefined,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
if (!fallbackInput) {
|
|
162
|
-
throw new Error('Shared session submission did not include a message');
|
|
163
|
-
}
|
|
164
|
-
return {
|
|
165
|
-
id: fallbackInput.causationId ?? `msg-${fallbackInput.id}`,
|
|
166
|
-
sessionId: fallbackInput.sessionId,
|
|
167
|
-
role: 'user',
|
|
168
|
-
body: fallbackInput.body,
|
|
169
|
-
createdAt: fallbackInput.createdAt,
|
|
170
|
-
surfaceKind: fallbackInput.surfaceKind,
|
|
171
|
-
surfaceId: fallbackInput.surfaceId,
|
|
172
|
-
routeId: fallbackInput.routeId,
|
|
173
|
-
userId: fallbackInput.userId,
|
|
174
|
-
displayName: fallbackInput.displayName,
|
|
175
|
-
metadata: fallbackInput.metadata,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
function normalizeSharedSessionInput(record: SharedSessionInputRecord | Record<string, unknown>): SharedSessionInputRecord {
|
|
180
|
-
const candidate = record as SharedSessionInputRecord & { readonly surfaceKind?: string };
|
|
181
|
-
return {
|
|
182
|
-
...candidate,
|
|
183
|
-
surfaceKind: candidate.surfaceKind as AutomationSurfaceKind | undefined,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function normalizeSharedSessionSubmission(record: Record<string, unknown>): SharedSessionSubmission {
|
|
188
|
-
const sessionValue = record.session;
|
|
189
|
-
if (!sessionValue || typeof sessionValue !== 'object') {
|
|
190
|
-
throw new Error('Shared session submission did not include a session');
|
|
191
|
-
}
|
|
192
|
-
const inputValue = record.input;
|
|
193
|
-
if (!inputValue || typeof inputValue !== 'object') {
|
|
194
|
-
throw new Error('Shared session submission did not include an input');
|
|
195
|
-
}
|
|
196
|
-
const session = normalizeSharedSessionRecord(sessionValue as Record<string, unknown>);
|
|
197
|
-
const input = normalizeSharedSessionInput(inputValue as Record<string, unknown>);
|
|
198
|
-
return {
|
|
199
|
-
session,
|
|
200
|
-
userMessage: normalizeSharedSessionMessage(
|
|
201
|
-
(record.message as Record<string, unknown> | null | undefined) ?? (record.userMessage as Record<string, unknown> | null | undefined),
|
|
202
|
-
input,
|
|
203
|
-
),
|
|
204
|
-
routeBinding: record.routeBinding as SharedSessionSubmission['routeBinding'],
|
|
205
|
-
input,
|
|
206
|
-
intent: input.intent,
|
|
207
|
-
mode: record.mode as SharedSessionSubmission['mode'],
|
|
208
|
-
state: input.state,
|
|
209
|
-
task: typeof record.task === 'string' ? record.task : undefined,
|
|
210
|
-
activeAgentId: typeof record.agentId === 'string'
|
|
211
|
-
? record.agentId
|
|
212
|
-
: typeof record.activeAgentId === 'string'
|
|
213
|
-
? record.activeAgentId
|
|
214
|
-
: undefined,
|
|
215
|
-
created: Boolean(record.created),
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
function normalizeTelemetryQueryForSdk(
|
|
220
|
-
query: HttpTransportTelemetryQuery | undefined,
|
|
221
|
-
defaultLimit: number,
|
|
222
|
-
): SdkTelemetryQuery {
|
|
223
|
-
const normalized = normalizeTelemetryQuery(query, defaultLimit);
|
|
224
|
-
return {
|
|
225
|
-
...(normalized.limit !== undefined ? { limit: normalized.limit } : {}),
|
|
226
|
-
...(normalized.since !== undefined ? { since: normalized.since } : {}),
|
|
227
|
-
...(normalized.until !== undefined ? { until: normalized.until } : {}),
|
|
228
|
-
...(normalized.domains?.length ? { domains: normalized.domains.join(',') } : {}),
|
|
229
|
-
...(normalized.eventTypes?.length ? { types: normalized.eventTypes.join(',') } : {}),
|
|
230
|
-
...(normalized.severity ? { severity: normalized.severity } : {}),
|
|
231
|
-
...(normalized.traceId ? { traceId: normalized.traceId } : {}),
|
|
232
|
-
...(normalized.sessionId ? { sessionId: normalized.sessionId } : {}),
|
|
233
|
-
...(normalized.turnId ? { turnId: normalized.turnId } : {}),
|
|
234
|
-
...(normalized.agentId ? { agentId: normalized.agentId } : {}),
|
|
235
|
-
...(normalized.taskId ? { taskId: normalized.taskId } : {}),
|
|
236
|
-
...(normalized.cursor ? { cursor: normalized.cursor } : {}),
|
|
237
|
-
...(normalized.view ? { view: normalized.view } : {}),
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
function createOperatorClient(
|
|
242
|
-
transport: HttpJsonTransport,
|
|
243
|
-
events: UiRuntimeEvents,
|
|
244
|
-
): HttpTransportOperatorClient {
|
|
245
|
-
const paths = transport.paths;
|
|
246
|
-
const token = transport.authToken ?? null;
|
|
247
|
-
const fetchImpl = transport.fetchImpl;
|
|
248
|
-
const operatorApi = createOperatorRemoteClient(transport, getOperatorContract());
|
|
249
|
-
|
|
250
|
-
return {
|
|
251
|
-
sessions: {
|
|
252
|
-
current: async (): Promise<UiSessionSnapshot> =>
|
|
253
|
-
await requestJson(fetchImpl, buildTransportUrl(paths.controlPlaneUrl, '/api/session'), createJsonRequestInit(token)),
|
|
254
|
-
list: async (limit = 100): Promise<readonly SharedSessionRecord[]> =>
|
|
255
|
-
(await operatorApi.sessions.list({ limit })).sessions.map((entry) => normalizeSharedSessionRecord(entry as unknown as Record<string, unknown>)),
|
|
256
|
-
get: async (sessionId): Promise<SharedSessionRecord | null> => {
|
|
257
|
-
const response = await withNullOnNotFound(() => operatorApi.sessions.get(sessionId));
|
|
258
|
-
return response?.session ? normalizeSharedSessionRecord(response.session as unknown as Record<string, unknown>) : null;
|
|
259
|
-
},
|
|
260
|
-
messages: async (sessionId, limit = 100): Promise<readonly SharedSessionMessage[]> =>
|
|
261
|
-
(await operatorApi.sessions.messages.list(sessionId, { limit })).messages.map((entry) =>
|
|
262
|
-
normalizeSharedSessionMessage(entry as unknown as Record<string, unknown>),
|
|
263
|
-
),
|
|
264
|
-
inputs: async (sessionId, limit = 100): Promise<readonly SharedSessionInputRecord[]> => {
|
|
265
|
-
const response = await operatorApi.invoke<{ inputs: readonly Record<string, unknown>[] }>('sessions.inputs.list', { sessionId, limit });
|
|
266
|
-
return (response.inputs ?? []).map((entry) => normalizeSharedSessionInput(entry));
|
|
267
|
-
},
|
|
268
|
-
ensureSession: async (input: HttpSessionEnsureInput = {}): Promise<SharedSessionRecord> =>
|
|
269
|
-
normalizeSharedSessionRecord((await operatorApi.sessions.create(buildSessionEnsureBody(input))).session as unknown as Record<string, unknown>),
|
|
270
|
-
close: async (sessionId): Promise<SharedSessionRecord | null> => {
|
|
271
|
-
const response = await withNullOnNotFound(() => operatorApi.sessions.close(sessionId));
|
|
272
|
-
return response?.session ? normalizeSharedSessionRecord(response.session as unknown as Record<string, unknown>) : null;
|
|
273
|
-
},
|
|
274
|
-
reopen: async (sessionId): Promise<SharedSessionRecord | null> => {
|
|
275
|
-
const response = await withNullOnNotFound(() => operatorApi.sessions.reopen(sessionId));
|
|
276
|
-
return response?.session ? normalizeSharedSessionRecord(response.session as unknown as Record<string, unknown>) : null;
|
|
277
|
-
},
|
|
278
|
-
submitMessage: async (sessionId, input): Promise<SharedSessionSubmission> =>
|
|
279
|
-
normalizeSharedSessionSubmission(await operatorApi.invoke<Record<string, unknown>>(
|
|
280
|
-
'sessions.messages.create',
|
|
281
|
-
{ sessionId, ...buildSessionMessageBody(input) },
|
|
282
|
-
)),
|
|
283
|
-
steerMessage: async (sessionId, input): Promise<SharedSessionSubmission> =>
|
|
284
|
-
normalizeSharedSessionSubmission(await operatorApi.invoke<Record<string, unknown>>(
|
|
285
|
-
'sessions.steer',
|
|
286
|
-
{ sessionId, ...buildSteerSessionMessageBody(input) },
|
|
287
|
-
)),
|
|
288
|
-
followUpMessage: async (sessionId, input): Promise<SharedSessionSubmission> =>
|
|
289
|
-
normalizeSharedSessionSubmission(await operatorApi.invoke<Record<string, unknown>>(
|
|
290
|
-
'sessions.followUp',
|
|
291
|
-
{ sessionId, ...buildSessionMessageBody(input) },
|
|
292
|
-
)),
|
|
293
|
-
cancelInput: async (sessionId, inputId): Promise<SharedSessionInputRecord | null> => {
|
|
294
|
-
const response = await withNullOnNotFound(() => operatorApi.sessions.inputs.cancel(sessionId, inputId));
|
|
295
|
-
return response?.input ? normalizeSharedSessionInput(response.input as unknown as Record<string, unknown>) : null;
|
|
296
|
-
},
|
|
297
|
-
},
|
|
298
|
-
tasks: {
|
|
299
|
-
snapshot: async (): Promise<UiTasksSnapshot> => {
|
|
300
|
-
const { tasks } = await operatorApi.tasks.list();
|
|
301
|
-
return { tasks: tasks as unknown as readonly RuntimeTask[] };
|
|
302
|
-
},
|
|
303
|
-
list: async (limit = 100): Promise<readonly RuntimeTask[]> =>
|
|
304
|
-
(await operatorApi.tasks.list({ limit })).tasks as unknown as readonly RuntimeTask[],
|
|
305
|
-
get: async (taskId): Promise<RuntimeTask | null> => {
|
|
306
|
-
const response = await withNullOnNotFound(() => operatorApi.tasks.get(taskId));
|
|
307
|
-
return (response?.task ?? null) as unknown as RuntimeTask | null;
|
|
308
|
-
},
|
|
309
|
-
running: async (): Promise<readonly RuntimeTask[]> =>
|
|
310
|
-
((await operatorApi.tasks.list()).tasks as unknown as readonly RuntimeTask[]).filter((task) => task.status === 'running'),
|
|
311
|
-
submit: async (input): Promise<HttpTaskSubmitResponse> =>
|
|
312
|
-
await operatorApi.invoke<HttpTaskSubmitResponse>('tasks.create', buildTaskSubmitBody(input)),
|
|
313
|
-
cancel: async (taskId): Promise<HttpTaskActionResponse> =>
|
|
314
|
-
await operatorApi.invoke<HttpTaskActionResponse>('tasks.cancel', { taskId }),
|
|
315
|
-
retry: async (taskId): Promise<HttpTaskRetryResponse> =>
|
|
316
|
-
await operatorApi.invoke<HttpTaskRetryResponse>('tasks.retry', { taskId }),
|
|
317
|
-
},
|
|
318
|
-
approvals: {
|
|
319
|
-
list: async (limit = 100): Promise<readonly SharedApprovalRecord[]> =>
|
|
320
|
-
(await operatorApi.approvals.list({ limit })).approvals as unknown as readonly SharedApprovalRecord[],
|
|
321
|
-
get: async (approvalId): Promise<SharedApprovalRecord | null> => {
|
|
322
|
-
const approvals = await operatorApi.approvals.list({ limit: 200 });
|
|
323
|
-
return ((approvals.approvals as unknown as readonly SharedApprovalRecord[]).find((entry) => entry.id === approvalId) ?? null);
|
|
324
|
-
},
|
|
325
|
-
claim: async (approvalId, actor, actorSurface = 'transport', note): Promise<SharedApprovalRecord | null> => {
|
|
326
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ approval?: SharedApprovalRecord | null }>(
|
|
327
|
-
'approvals.claim',
|
|
328
|
-
{ approvalId, actor, actorSurface, ...(note ? { note } : {}) },
|
|
329
|
-
));
|
|
330
|
-
return response?.approval ?? null;
|
|
331
|
-
},
|
|
332
|
-
approve: async (approvalId, actor, actorSurface = 'transport', note): Promise<SharedApprovalRecord | null> => {
|
|
333
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ approval?: SharedApprovalRecord | null }>(
|
|
334
|
-
'approvals.approve',
|
|
335
|
-
{ approvalId, actor, actorSurface, ...(note ? { note } : {}) },
|
|
336
|
-
));
|
|
337
|
-
return response?.approval ?? null;
|
|
338
|
-
},
|
|
339
|
-
deny: async (approvalId, actor, actorSurface = 'transport', note): Promise<SharedApprovalRecord | null> => {
|
|
340
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ approval?: SharedApprovalRecord | null }>(
|
|
341
|
-
'approvals.deny',
|
|
342
|
-
{ approvalId, actor, actorSurface, ...(note ? { note } : {}) },
|
|
343
|
-
));
|
|
344
|
-
return response?.approval ?? null;
|
|
345
|
-
},
|
|
346
|
-
cancel: async (approvalId, actor, actorSurface = 'transport', note): Promise<SharedApprovalRecord | null> => {
|
|
347
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ approval?: SharedApprovalRecord | null }>(
|
|
348
|
-
'approvals.cancel',
|
|
349
|
-
{ approvalId, actor, actorSurface, ...(note ? { note } : {}) },
|
|
350
|
-
));
|
|
351
|
-
return response?.approval ?? null;
|
|
352
|
-
},
|
|
353
|
-
},
|
|
354
|
-
providers: {
|
|
355
|
-
listIds: async (): Promise<readonly string[]> =>
|
|
356
|
-
(await operatorApi.providers.list()).providers.map((provider) => provider.providerId),
|
|
357
|
-
runtimeSnapshots: async (): Promise<readonly ProviderRuntimeSnapshot[]> =>
|
|
358
|
-
(await operatorApi.providers.list()).providers as unknown as readonly ProviderRuntimeSnapshot[],
|
|
359
|
-
runtimeSnapshot: async (providerId): Promise<ProviderRuntimeSnapshot | null> =>
|
|
360
|
-
await withNullOnNotFound(() => operatorApi.providers.get(providerId)) as unknown as ProviderRuntimeSnapshot | null,
|
|
361
|
-
usageSnapshot: async (providerId): Promise<ProviderUsageSnapshot | null> =>
|
|
362
|
-
await withNullOnNotFound(() => operatorApi.providers.usage(providerId)) as unknown as ProviderUsageSnapshot | null,
|
|
363
|
-
accountSnapshot: async (): Promise<Record<string, unknown>> =>
|
|
364
|
-
await operatorApi.accounts.snapshot() as Record<string, unknown>,
|
|
365
|
-
localAuthSnapshot: async (): Promise<UiLocalAuthSnapshot> =>
|
|
366
|
-
await operatorApi.localAuth.status() as UiLocalAuthSnapshot,
|
|
367
|
-
snapshot: async (): Promise<HttpProvidersSnapshot> => {
|
|
368
|
-
const [providerResponse, accountSnapshot, localAuthSnapshot] = await Promise.all([
|
|
369
|
-
operatorApi.providers.list(),
|
|
370
|
-
operatorApi.accounts.snapshot(),
|
|
371
|
-
operatorApi.localAuth.status(),
|
|
372
|
-
]);
|
|
373
|
-
const runtimeSnapshots = providerResponse.providers as unknown as readonly ProviderRuntimeSnapshot[];
|
|
374
|
-
return {
|
|
375
|
-
providerIds: runtimeSnapshots.map((provider: ProviderRuntimeSnapshot) => provider.providerId),
|
|
376
|
-
runtimeSnapshots,
|
|
377
|
-
accountSnapshot,
|
|
378
|
-
localAuthSnapshot: localAuthSnapshot as UiLocalAuthSnapshot,
|
|
379
|
-
};
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
controlPlane: {
|
|
383
|
-
snapshot: async (): Promise<UiControlPlaneSnapshot> => await readControlPlaneSnapshot(fetchImpl, paths, token),
|
|
384
|
-
currentAuth: async (): Promise<import('./http-types.ts').HttpTransportControlPlaneAuthSnapshot> =>
|
|
385
|
-
await operatorApi.control.auth.current(),
|
|
386
|
-
recentEvents: async (limit = 6): Promise<readonly ControlPlaneRecentEvent[]> =>
|
|
387
|
-
(await operatorApi.invoke<{ messages: readonly ControlPlaneRecentEvent[] }>('control.messages.list', { limit })).messages ?? [],
|
|
388
|
-
},
|
|
389
|
-
telemetry: {
|
|
390
|
-
snapshot: async (query: HttpTransportTelemetryQuery = 20): Promise<TelemetrySnapshot> =>
|
|
391
|
-
await operatorApi.telemetry.snapshot(normalizeTelemetryQueryForSdk(query, 20)) as unknown as TelemetrySnapshot,
|
|
392
|
-
events: async (query: HttpTransportTelemetryQuery = 100): Promise<TelemetryListResponse<TelemetryRecord>> =>
|
|
393
|
-
await operatorApi.telemetry.events(normalizeTelemetryQueryForSdk(query, 100)) as unknown as TelemetryListResponse<TelemetryRecord>,
|
|
394
|
-
errors: async (query: HttpTransportTelemetryQuery = 100): Promise<TelemetryListResponse<TelemetryRecord>> =>
|
|
395
|
-
await operatorApi.telemetry.errors(normalizeTelemetryQueryForSdk(query, 100)) as unknown as TelemetryListResponse<TelemetryRecord>,
|
|
396
|
-
traces: async (query: HttpTransportTelemetryQuery = 100): Promise<TelemetryListResponse<ReadableSpan>> =>
|
|
397
|
-
await operatorApi.telemetry.traces(normalizeTelemetryQueryForSdk(query, 100)) as unknown as TelemetryListResponse<ReadableSpan>,
|
|
398
|
-
metrics: async (query: HttpTransportTelemetryQuery = 100): Promise<HttpTransportTelemetryMetricsSnapshot> =>
|
|
399
|
-
await operatorApi.telemetry.metrics(normalizeTelemetryQueryForSdk(query, 100)) as unknown as HttpTransportTelemetryMetricsSnapshot,
|
|
400
|
-
otlpTraces: async (query: HttpTransportTelemetryQuery = 100) =>
|
|
401
|
-
await operatorApi.telemetry.otlp.traces(normalizeTelemetryQueryForSdk(query, 100)) as Record<string, unknown>,
|
|
402
|
-
otlpLogs: async (query: HttpTransportTelemetryQuery = 100) =>
|
|
403
|
-
await operatorApi.telemetry.otlp.logs(normalizeTelemetryQueryForSdk(query, 100)) as Record<string, unknown>,
|
|
404
|
-
otlpMetrics: async (query: HttpTransportTelemetryQuery = 100) =>
|
|
405
|
-
await operatorApi.telemetry.otlp.metrics(normalizeTelemetryQueryForSdk(query, 100)) as Record<string, unknown>,
|
|
406
|
-
stream: async (handlers, query: HttpTransportTelemetryQuery = 100) => {
|
|
407
|
-
const normalized = normalizeTelemetryQuery(query, 100);
|
|
408
|
-
const url = new URL(paths.telemetryStreamUrl);
|
|
409
|
-
appendTelemetryQuery(url, normalized);
|
|
410
|
-
return await connectTelemetryStream(fetchImpl, url.toString(), token, handlers);
|
|
411
|
-
},
|
|
412
|
-
},
|
|
413
|
-
events,
|
|
414
|
-
shellPaths: paths,
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
function createPeerClient(
|
|
419
|
-
transport: HttpJsonTransport,
|
|
420
|
-
): HttpTransportPeerClient {
|
|
421
|
-
const operatorApi = createOperatorRemoteClient(transport, getOperatorContract());
|
|
422
|
-
const peerApi = createPeerRemoteClient(transport, getPeerContract());
|
|
423
|
-
|
|
424
|
-
function createPeerTokenClient(tokenValue: string) {
|
|
425
|
-
return createPeerRemoteClient(createHttpJsonTransport({
|
|
426
|
-
baseUrl: transport.baseUrl,
|
|
427
|
-
authToken: tokenValue,
|
|
428
|
-
fetchImpl: transport.fetchImpl,
|
|
429
|
-
}), getPeerContract());
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
async function readRemoteSnapshot(): Promise<RemoteSnapshotResponse> {
|
|
433
|
-
return await operatorApi.invoke<RemoteSnapshotResponse>('remote.snapshot');
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
async function readNodeHostContractValue(): Promise<DistributedNodeHostContract> {
|
|
437
|
-
return (await operatorApi.invoke<{ contract: DistributedNodeHostContract }>('remote.node_host.contract')).contract;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
async function readPeers(limit = 500): Promise<readonly DistributedPeerRecord[]> {
|
|
441
|
-
return (await operatorApi.invoke<{ peers: readonly DistributedPeerRecord[] }>('remote.peers.list', { limit })).peers ?? [];
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
return {
|
|
445
|
-
pairing: {
|
|
446
|
-
listRequests: async (limit = 100): Promise<readonly DistributedRuntimePairRequest[]> =>
|
|
447
|
-
(await operatorApi.invoke<{ requests: readonly DistributedRuntimePairRequest[] }>('remote.pair.requests.list', { limit })).requests ?? [],
|
|
448
|
-
request: async (input): Promise<HttpRemotePairResponse> =>
|
|
449
|
-
await peerApi.invoke<HttpRemotePairResponse>('pair.request', asContractInput(input)),
|
|
450
|
-
approve: async (requestId, actor, note): Promise<HttpRemotePairApprovalResponse | null> =>
|
|
451
|
-
await withNullOnNotFound(() => operatorApi.invoke<HttpRemotePairApprovalResponse>(
|
|
452
|
-
'remote.pair.requests.approve',
|
|
453
|
-
{ requestId, actor, ...(note ? { note } : {}) },
|
|
454
|
-
)),
|
|
455
|
-
reject: async (requestId, actor, note): Promise<DistributedRuntimePairRequest | null> => {
|
|
456
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ request?: DistributedRuntimePairRequest | null }>(
|
|
457
|
-
'remote.pair.requests.reject',
|
|
458
|
-
{ requestId, actor, ...(note ? { note } : {}) },
|
|
459
|
-
));
|
|
460
|
-
return response?.request ?? null;
|
|
461
|
-
},
|
|
462
|
-
verify: async (requestId, challenge, remoteAddress): Promise<HttpRemotePairVerificationResponse | null> =>
|
|
463
|
-
await withNullOnNotFound(() => peerApi.invoke<HttpRemotePairVerificationResponse>(
|
|
464
|
-
'pair.verify',
|
|
465
|
-
{ requestId, challenge, ...(remoteAddress ? { remoteAddress } : {}) },
|
|
466
|
-
)),
|
|
467
|
-
},
|
|
468
|
-
peers: {
|
|
469
|
-
list: async (kind?: DistributedPeerKind, limit = 200): Promise<readonly DistributedPeerRecord[]> =>
|
|
470
|
-
(await operatorApi.invoke<{ peers: readonly DistributedPeerRecord[] }>('remote.peers.list', {
|
|
471
|
-
...(kind ? { kind } : {}),
|
|
472
|
-
limit,
|
|
473
|
-
})).peers ?? [],
|
|
474
|
-
get: async (peerId): Promise<DistributedPeerRecord | null> => {
|
|
475
|
-
const response = await operatorApi.invoke<{ peers: readonly DistributedPeerRecord[] }>('remote.peers.list', { limit: 500 });
|
|
476
|
-
return (response.peers ?? []).find((peer) => peer.id === peerId) ?? null;
|
|
477
|
-
},
|
|
478
|
-
getSnapshot: async (peerId): Promise<HttpPeerRecordSnapshot | null> => {
|
|
479
|
-
const [snapshot, contract, peers] = await Promise.all([
|
|
480
|
-
readRemoteSnapshot(),
|
|
481
|
-
readNodeHostContractValue(),
|
|
482
|
-
readPeers(),
|
|
483
|
-
]);
|
|
484
|
-
const pairRequests = (snapshot.distributed?.pairRequests ?? []).filter((entry) => entry.peerId === peerId || entry.requestedId === peerId);
|
|
485
|
-
const work = (snapshot.distributed?.work ?? []).filter((entry) => entry.peerId === peerId);
|
|
486
|
-
const peer = peers.find((entry) => entry.id === peerId) ?? null;
|
|
487
|
-
if (!peer && pairRequests.length === 0 && work.length === 0) {
|
|
488
|
-
return null;
|
|
489
|
-
}
|
|
490
|
-
return {
|
|
491
|
-
peerId,
|
|
492
|
-
peer,
|
|
493
|
-
pairRequests,
|
|
494
|
-
work,
|
|
495
|
-
nodeHostContract: contract,
|
|
496
|
-
};
|
|
497
|
-
},
|
|
498
|
-
heartbeat: async (tokenValue, input = {}): Promise<{ peer: DistributedPeerRecord }> =>
|
|
499
|
-
await createPeerTokenClient(tokenValue).invoke<{ peer: DistributedPeerRecord }>('peer.heartbeat', asContractInput(input)),
|
|
500
|
-
rotateToken: async (peerId, actor, label, scopes): Promise<HttpRemotePeerTokenResponse | null> =>
|
|
501
|
-
await withNullOnNotFound(() => operatorApi.invoke<HttpRemotePeerTokenResponse>(
|
|
502
|
-
'remote.peers.token.rotate',
|
|
503
|
-
{
|
|
504
|
-
peerId,
|
|
505
|
-
actor,
|
|
506
|
-
...(label ? { label } : {}),
|
|
507
|
-
...(scopes ? { scopes } : {}),
|
|
508
|
-
},
|
|
509
|
-
)),
|
|
510
|
-
revokeToken: async (peerId, actor, tokenId, note): Promise<DistributedPeerRecord | null> => {
|
|
511
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ peer?: DistributedPeerRecord | null }>(
|
|
512
|
-
'remote.peers.token.revoke',
|
|
513
|
-
{
|
|
514
|
-
peerId,
|
|
515
|
-
actor,
|
|
516
|
-
...(tokenId ? { tokenId } : {}),
|
|
517
|
-
...(note ? { note } : {}),
|
|
518
|
-
},
|
|
519
|
-
));
|
|
520
|
-
return response?.peer ?? null;
|
|
521
|
-
},
|
|
522
|
-
disconnect: async (peerId, actor, note, requeueClaimedWork = true): Promise<DistributedPeerRecord | null> => {
|
|
523
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ peer?: DistributedPeerRecord | null }>(
|
|
524
|
-
'remote.peers.disconnect',
|
|
525
|
-
{
|
|
526
|
-
peerId,
|
|
527
|
-
actor,
|
|
528
|
-
...(note ? { note } : {}),
|
|
529
|
-
requeueClaimedWork,
|
|
530
|
-
},
|
|
531
|
-
));
|
|
532
|
-
return response?.peer ?? null;
|
|
533
|
-
},
|
|
534
|
-
},
|
|
535
|
-
work: {
|
|
536
|
-
list: async (limit = 200, peerId?: string): Promise<readonly DistributedPendingWork[]> =>
|
|
537
|
-
(await operatorApi.invoke<{ work: readonly DistributedPendingWork[] }>('remote.work.list', {
|
|
538
|
-
...(peerId ? { peerId } : {}),
|
|
539
|
-
limit,
|
|
540
|
-
})).work ?? [],
|
|
541
|
-
invoke: async (input): Promise<HttpRemotePeerInvokeResponse> =>
|
|
542
|
-
await operatorApi.invoke<HttpRemotePeerInvokeResponse>('remote.peers.invoke', asContractInput(input)),
|
|
543
|
-
claim: async (tokenValue, input = {}): Promise<readonly DistributedPendingWork[]> =>
|
|
544
|
-
(await createPeerTokenClient(tokenValue).invoke<{ work: readonly DistributedPendingWork[] }>('work.pull', asContractInput(input))).work ?? [],
|
|
545
|
-
complete: async (tokenValue, workId, input = {}): Promise<DistributedPendingWork | null> => {
|
|
546
|
-
const response = await withNullOnNotFound(() => createPeerTokenClient(tokenValue).invoke<{ work?: DistributedPendingWork | null }>(
|
|
547
|
-
'work.complete',
|
|
548
|
-
{ workId, ...(input as object) },
|
|
549
|
-
));
|
|
550
|
-
return response?.work ?? null;
|
|
551
|
-
},
|
|
552
|
-
cancel: async (workId, actor, note): Promise<DistributedPendingWork | null> => {
|
|
553
|
-
const response = await withNullOnNotFound(() => operatorApi.invoke<{ work?: DistributedPendingWork | null }>(
|
|
554
|
-
'remote.work.cancel',
|
|
555
|
-
{
|
|
556
|
-
workId,
|
|
557
|
-
actor,
|
|
558
|
-
...(note ? { reason: note } : {}),
|
|
559
|
-
},
|
|
560
|
-
));
|
|
561
|
-
return response?.work ?? null;
|
|
562
|
-
},
|
|
563
|
-
},
|
|
564
|
-
getSnapshot: async (): Promise<HttpPeerSnapshot> => {
|
|
565
|
-
const [remoteSnapshot, contract, peers] = await Promise.all([
|
|
566
|
-
readRemoteSnapshot(),
|
|
567
|
-
readNodeHostContractValue(),
|
|
568
|
-
readPeers(),
|
|
569
|
-
]);
|
|
570
|
-
return {
|
|
571
|
-
capturedAt: Date.now(),
|
|
572
|
-
nodeHostContract: contract,
|
|
573
|
-
remoteSnapshot,
|
|
574
|
-
pairRequests: remoteSnapshot.distributed?.pairRequests ?? [],
|
|
575
|
-
peers,
|
|
576
|
-
work: remoteSnapshot.distributed?.work ?? [],
|
|
577
|
-
};
|
|
578
|
-
},
|
|
579
|
-
getNodeHostContract: async (): Promise<DistributedNodeHostContract> => await readNodeHostContractValue(),
|
|
580
|
-
};
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
export function createHttpTransport(options: HttpTransportOptions): HttpTransport {
|
|
584
|
-
const httpClient = createHttpJsonTransport({
|
|
585
|
-
baseUrl: options.baseUrl,
|
|
586
|
-
authToken: options.authToken,
|
|
587
|
-
fetchImpl: options.fetchImpl,
|
|
588
|
-
});
|
|
589
|
-
const fetchImpl = httpClient.fetchImpl;
|
|
590
|
-
const paths = httpClient.paths;
|
|
591
|
-
const events = createRemoteUiRuntimeEvents(createEventSourceConnector(httpClient.baseUrl, options.authToken, fetchImpl));
|
|
592
|
-
const operator = createOperatorClient(httpClient, events);
|
|
593
|
-
const peer = createPeerClient(httpClient);
|
|
594
|
-
const transport = createClientTransport('http', operator, peer);
|
|
595
|
-
|
|
596
|
-
return Object.freeze({
|
|
597
|
-
...transport,
|
|
598
|
-
async snapshot(): Promise<HttpTransportSnapshot> {
|
|
599
|
-
const [currentSession, tasks, approvals, sessions, controlPlane, providers, remoteSnapshot, nodeHostContract, peerSnapshot] = await Promise.all([
|
|
600
|
-
operator.sessions.current(),
|
|
601
|
-
operator.tasks.snapshot(),
|
|
602
|
-
operator.approvals.list(),
|
|
603
|
-
operator.sessions.list(),
|
|
604
|
-
operator.controlPlane.snapshot(),
|
|
605
|
-
operator.providers.snapshot(),
|
|
606
|
-
requestJson<Record<string, unknown>>(fetchImpl, paths.remoteUrl, createJsonRequestInit(options.authToken)),
|
|
607
|
-
peer.getNodeHostContract(),
|
|
608
|
-
peer.getSnapshot(),
|
|
609
|
-
]);
|
|
610
|
-
return {
|
|
611
|
-
kind: 'http',
|
|
612
|
-
operator: {
|
|
613
|
-
currentSession,
|
|
614
|
-
tasks,
|
|
615
|
-
approvals,
|
|
616
|
-
sessions,
|
|
617
|
-
controlPlane,
|
|
618
|
-
providers,
|
|
619
|
-
shellPaths: paths,
|
|
620
|
-
},
|
|
621
|
-
peer: {
|
|
622
|
-
...peerSnapshot,
|
|
623
|
-
nodeHostContract,
|
|
624
|
-
remoteSnapshot,
|
|
625
|
-
},
|
|
626
|
-
};
|
|
627
|
-
},
|
|
628
|
-
});
|
|
629
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { createHttpTransport } from '@pellux/goodvibes-sdk/platform/runtime/transports/http';
|
|
2
|
-
import { createClientTransport } from '@pellux/goodvibes-sdk/platform/runtime/transports/client-transport';
|
|
3
|
-
import type { HttpTransportOptions, HttpTransportPeerClient, HttpTransportOperatorClient, HttpTransportSnapshot } from '@pellux/goodvibes-sdk/platform/runtime/transports/http-types';
|
|
4
|
-
import { createWebSocketConnector } from '@pellux/goodvibes-sdk/platform/runtime/transports/shared';
|
|
5
|
-
import { createRemoteUiRuntimeEvents } from '@pellux/goodvibes-sdk/platform/runtime/transports/ui-runtime-events';
|
|
6
|
-
|
|
7
|
-
export interface RealtimeTransportOptions extends HttpTransportOptions {
|
|
8
|
-
readonly webSocketImpl?: typeof WebSocket;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface RealtimeTransportSnapshot extends Omit<HttpTransportSnapshot, 'kind'> {
|
|
12
|
-
readonly kind: 'realtime';
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface RealtimeTransport {
|
|
16
|
-
readonly kind: 'realtime';
|
|
17
|
-
readonly operator: HttpTransportOperatorClient;
|
|
18
|
-
readonly peer: HttpTransportPeerClient;
|
|
19
|
-
getOperatorClient(): HttpTransportOperatorClient;
|
|
20
|
-
getPeerClient(): HttpTransportPeerClient;
|
|
21
|
-
snapshot(): Promise<RealtimeTransportSnapshot>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function createRealtimeTransport(options: RealtimeTransportOptions): RealtimeTransport {
|
|
25
|
-
const baseTransport = createHttpTransport({
|
|
26
|
-
baseUrl: options.baseUrl,
|
|
27
|
-
authToken: options.authToken,
|
|
28
|
-
fetchImpl: options.fetchImpl,
|
|
29
|
-
});
|
|
30
|
-
const WebSocketImpl = options.webSocketImpl ?? WebSocket;
|
|
31
|
-
const events = createRemoteUiRuntimeEvents(
|
|
32
|
-
createWebSocketConnector(options.baseUrl, options.authToken, WebSocketImpl),
|
|
33
|
-
);
|
|
34
|
-
const operator = {
|
|
35
|
-
...baseTransport.operator,
|
|
36
|
-
events,
|
|
37
|
-
};
|
|
38
|
-
const transport = createClientTransport('realtime', operator, baseTransport.peer);
|
|
39
|
-
|
|
40
|
-
return Object.freeze({
|
|
41
|
-
...transport,
|
|
42
|
-
async snapshot(): Promise<RealtimeTransportSnapshot> {
|
|
43
|
-
const snapshot = await baseTransport.snapshot();
|
|
44
|
-
return {
|
|
45
|
-
...snapshot,
|
|
46
|
-
kind: 'realtime',
|
|
47
|
-
};
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
}
|