@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,326 +0,0 @@
|
|
|
1
|
-
import { listBuiltinSubscriptionProviders } from '../../config/subscription-providers.ts';
|
|
2
|
-
import { resolveApiKeys } from '../../config/index.ts';
|
|
3
|
-
import type { SecretsManager } from '../../config/secrets.ts';
|
|
4
|
-
import type { ProviderRegistry } from '@pellux/goodvibes-sdk/platform/providers/registry';
|
|
5
|
-
import type { ProviderRuntimeMetadata } from '@pellux/goodvibes-sdk/platform/providers/interface';
|
|
6
|
-
import { decodeJwtPayload } from '@pellux/goodvibes-sdk/platform/runtime/auth/oauth-core';
|
|
7
|
-
import type { ServiceRegistry } from '../../config/service-registry.ts';
|
|
8
|
-
import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
|
|
9
|
-
|
|
10
|
-
export type ProviderAuthRoute = 'api-key' | 'subscription' | 'service-oauth' | 'unconfigured';
|
|
11
|
-
export type ProviderAuthFreshness = 'healthy' | 'expiring' | 'expired' | 'pending' | 'unconfigured';
|
|
12
|
-
|
|
13
|
-
export interface ProviderUsageWindow {
|
|
14
|
-
readonly label: string;
|
|
15
|
-
readonly detail: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface ProviderRouteRecord {
|
|
19
|
-
readonly route: Exclude<ProviderAuthRoute, 'unconfigured'>;
|
|
20
|
-
readonly usable: boolean;
|
|
21
|
-
readonly freshness: ProviderAuthFreshness;
|
|
22
|
-
readonly detail: string;
|
|
23
|
-
readonly issues: readonly string[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface ProviderAccountRecord {
|
|
27
|
-
readonly providerId: string;
|
|
28
|
-
readonly active: boolean;
|
|
29
|
-
readonly modelCount: number;
|
|
30
|
-
readonly configured: boolean;
|
|
31
|
-
readonly oauthReady: boolean;
|
|
32
|
-
readonly pendingLogin: boolean;
|
|
33
|
-
readonly availableRoutes: readonly ProviderAuthRoute[];
|
|
34
|
-
readonly preferredRoute: ProviderAuthRoute;
|
|
35
|
-
readonly activeRoute: ProviderAuthRoute;
|
|
36
|
-
readonly activeRouteReason: string;
|
|
37
|
-
readonly authFreshness: ProviderAuthFreshness;
|
|
38
|
-
readonly fallbackRoute?: ProviderAuthRoute;
|
|
39
|
-
readonly fallbackRisk?: string;
|
|
40
|
-
readonly expiresAt?: number;
|
|
41
|
-
readonly tokenType?: string;
|
|
42
|
-
readonly notes: readonly string[];
|
|
43
|
-
readonly usageWindows: readonly ProviderUsageWindow[];
|
|
44
|
-
readonly issues: readonly string[];
|
|
45
|
-
readonly recommendedActions: readonly string[];
|
|
46
|
-
readonly routeRecords: readonly ProviderRouteRecord[];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface ProviderAccountSnapshot {
|
|
50
|
-
readonly capturedAt: number;
|
|
51
|
-
readonly providers: readonly ProviderAccountRecord[];
|
|
52
|
-
readonly configuredCount: number;
|
|
53
|
-
readonly issueCount: number;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface ProviderAccountSnapshotDeps {
|
|
57
|
-
readonly providerRegistry: Pick<ProviderRegistry, 'listModels' | 'getCurrentModel' | 'getRegistered' | 'describeRuntime'>;
|
|
58
|
-
readonly serviceRegistry: Pick<ServiceRegistry, 'getAll' | 'inspect'>;
|
|
59
|
-
readonly subscriptionManager: Pick<SubscriptionManager, 'list' | 'listPending' | 'get' | 'getPending'>;
|
|
60
|
-
readonly secretsManager: Pick<SecretsManager, 'get'>;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function builtinWindowsForProvider(providerId: string): readonly ProviderUsageWindow[] {
|
|
64
|
-
if (providerId === 'openai') {
|
|
65
|
-
return [
|
|
66
|
-
{ label: '5-hour window', detail: 'Subscription-backed Codex access may be constrained by rolling 5-hour usage limits.' },
|
|
67
|
-
{ label: '1-week window', detail: 'Subscription-backed Codex access may also be constrained by a rolling weekly limit.' },
|
|
68
|
-
];
|
|
69
|
-
}
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function classifyRoutes(input: {
|
|
74
|
-
providerId: string;
|
|
75
|
-
hasApiKey: boolean;
|
|
76
|
-
hasSubscription: boolean;
|
|
77
|
-
hasServiceOAuth: boolean;
|
|
78
|
-
}): readonly ProviderAuthRoute[] {
|
|
79
|
-
const routes: ProviderAuthRoute[] = [];
|
|
80
|
-
if (input.hasApiKey) routes.push('api-key');
|
|
81
|
-
if (input.hasSubscription) routes.push('subscription');
|
|
82
|
-
if (input.hasServiceOAuth) routes.push('service-oauth');
|
|
83
|
-
if (routes.length === 0) routes.push('unconfigured');
|
|
84
|
-
return routes;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function determineActiveRoute(routes: readonly ProviderAuthRoute[]): ProviderAuthRoute {
|
|
88
|
-
if (routes.includes('subscription')) return 'subscription';
|
|
89
|
-
if (routes.includes('service-oauth')) return 'service-oauth';
|
|
90
|
-
if (routes.includes('api-key')) return 'api-key';
|
|
91
|
-
return 'unconfigured';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function determineSubscriptionFreshness(expiresAt?: number): ProviderAuthFreshness {
|
|
95
|
-
if (typeof expiresAt !== 'number' || !Number.isFinite(expiresAt)) return 'healthy';
|
|
96
|
-
if (expiresAt <= Date.now()) return 'expired';
|
|
97
|
-
if (expiresAt <= Date.now() + 24 * 60 * 60 * 1000) return 'expiring';
|
|
98
|
-
return 'healthy';
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export async function buildProviderAccountSnapshot(
|
|
102
|
-
deps: ProviderAccountSnapshotDeps,
|
|
103
|
-
): Promise<ProviderAccountSnapshot> {
|
|
104
|
-
const providerRegistry = deps.providerRegistry;
|
|
105
|
-
const allModels = providerRegistry.listModels();
|
|
106
|
-
const currentModel = providerRegistry.getCurrentModel?.();
|
|
107
|
-
const apiKeys = await resolveApiKeys(deps.secretsManager);
|
|
108
|
-
const subscriptions = deps.subscriptionManager;
|
|
109
|
-
const builtinSubscriptionProviders = new Set(listBuiltinSubscriptionProviders().map((entry) => entry.provider));
|
|
110
|
-
const serviceRegistry = deps.serviceRegistry;
|
|
111
|
-
const serviceConfigs = serviceRegistry.getAll();
|
|
112
|
-
const services = Object.values(serviceConfigs);
|
|
113
|
-
const serviceInspections = await Promise.all(Object.keys(serviceConfigs).map(async (name) => ({
|
|
114
|
-
name,
|
|
115
|
-
inspection: await serviceRegistry.inspect(name),
|
|
116
|
-
})));
|
|
117
|
-
const serviceOauthByProvider = new Map<string, { configured: boolean; usable: boolean }>();
|
|
118
|
-
for (const { inspection } of serviceInspections) {
|
|
119
|
-
if (!inspection || inspection.config.authType !== 'oauth') continue;
|
|
120
|
-
const providerId = inspection.config.providerId ?? inspection.config.name;
|
|
121
|
-
const existing = serviceOauthByProvider.get(providerId);
|
|
122
|
-
serviceOauthByProvider.set(providerId, {
|
|
123
|
-
configured: true,
|
|
124
|
-
usable: Boolean(existing?.usable || inspection.hasPrimaryCredential),
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
const providerIds = new Set<string>([
|
|
128
|
-
...allModels.map((model) => model.provider),
|
|
129
|
-
...Object.keys(apiKeys),
|
|
130
|
-
...subscriptions.list().map((entry) => entry.provider),
|
|
131
|
-
...subscriptions.listPending().map((entry) => entry.provider),
|
|
132
|
-
...services.map((service) => service.providerId ?? service.name),
|
|
133
|
-
...builtinSubscriptionProviders,
|
|
134
|
-
]);
|
|
135
|
-
const providers = await Promise.all([...providerIds]
|
|
136
|
-
.sort((a, b) => a.localeCompare(b))
|
|
137
|
-
.map(async (providerId) => {
|
|
138
|
-
const subscription = subscriptions.get(providerId);
|
|
139
|
-
const pending = subscriptions.getPending(providerId);
|
|
140
|
-
const jwtPayload = subscription ? decodeJwtPayload(subscription.accessToken) : null;
|
|
141
|
-
const serviceOauth = serviceOauthByProvider.get(providerId);
|
|
142
|
-
let runtimeMetadata: ProviderRuntimeMetadata | undefined;
|
|
143
|
-
try {
|
|
144
|
-
runtimeMetadata = await providerRegistry.describeRuntime(providerId) ?? undefined;
|
|
145
|
-
} catch {
|
|
146
|
-
runtimeMetadata = undefined;
|
|
147
|
-
}
|
|
148
|
-
const subscriptionFreshness = subscription ? determineSubscriptionFreshness(subscription.expiresAt) : 'unconfigured';
|
|
149
|
-
const routes = classifyRoutes({
|
|
150
|
-
providerId,
|
|
151
|
-
hasApiKey: providerId in apiKeys,
|
|
152
|
-
hasSubscription: subscription != null,
|
|
153
|
-
hasServiceOAuth: Boolean(serviceOauth?.configured),
|
|
154
|
-
});
|
|
155
|
-
const usableRoutes = classifyRoutes({
|
|
156
|
-
providerId,
|
|
157
|
-
hasApiKey: providerId in apiKeys,
|
|
158
|
-
hasSubscription: subscription != null && subscriptionFreshness !== 'expired',
|
|
159
|
-
hasServiceOAuth: Boolean(serviceOauth?.usable),
|
|
160
|
-
});
|
|
161
|
-
const issues: string[] = [];
|
|
162
|
-
const notes: string[] = [];
|
|
163
|
-
const recommendedActions: string[] = [];
|
|
164
|
-
const routeRecords: ProviderRouteRecord[] = [];
|
|
165
|
-
const preferredRoute = determineActiveRoute(routes);
|
|
166
|
-
const activeRoute = determineActiveRoute(usableRoutes);
|
|
167
|
-
let activeRouteReason = 'No usable auth route is configured for this provider.';
|
|
168
|
-
let authFreshness: ProviderAuthFreshness = 'unconfigured';
|
|
169
|
-
|
|
170
|
-
if (providerId in apiKeys) {
|
|
171
|
-
routeRecords.push({
|
|
172
|
-
route: 'api-key',
|
|
173
|
-
usable: true,
|
|
174
|
-
freshness: 'healthy',
|
|
175
|
-
detail: 'Ambient API key is available for direct provider access.',
|
|
176
|
-
issues: [],
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (subscription) {
|
|
181
|
-
const subscriptionIssues: string[] = [];
|
|
182
|
-
if (subscriptionFreshness === 'expired') {
|
|
183
|
-
subscriptionIssues.push('Stored subscription session is expired.');
|
|
184
|
-
} else if (subscriptionFreshness === 'expiring') {
|
|
185
|
-
subscriptionIssues.push('Stored subscription session expires within 24 hours.');
|
|
186
|
-
}
|
|
187
|
-
routeRecords.push({
|
|
188
|
-
route: 'subscription',
|
|
189
|
-
usable: subscriptionFreshness !== 'expired',
|
|
190
|
-
freshness: pending ? 'pending' : subscriptionFreshness,
|
|
191
|
-
detail: subscription.overrideAmbientApiKeys
|
|
192
|
-
? 'Subscription route is configured to override ambient API-key resolution.'
|
|
193
|
-
: 'Subscription route is configured, but ambient API keys remain active unless selected explicitly.',
|
|
194
|
-
issues: subscriptionIssues,
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
if (serviceOauth?.configured) {
|
|
199
|
-
const serviceOauthIssues = serviceOauth.usable
|
|
200
|
-
? []
|
|
201
|
-
: ['Service OAuth path is configured but has no usable stored credential.'];
|
|
202
|
-
routeRecords.push({
|
|
203
|
-
route: 'service-oauth',
|
|
204
|
-
usable: serviceOauth.usable,
|
|
205
|
-
freshness: serviceOauth.usable ? 'healthy' : 'unconfigured',
|
|
206
|
-
detail: serviceOauth.usable
|
|
207
|
-
? 'Service OAuth credential is available for this provider.'
|
|
208
|
-
: 'Service OAuth metadata exists, but the credential path is incomplete.',
|
|
209
|
-
issues: serviceOauthIssues,
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (routes.includes('subscription') && routes.includes('api-key')) {
|
|
214
|
-
issues.push('Provider has both subscription and API-key auth paths; routing must remain explicit.');
|
|
215
|
-
recommendedActions.push('Review provider routing before switching models or auth paths.');
|
|
216
|
-
}
|
|
217
|
-
if (subscriptionFreshness === 'expired') {
|
|
218
|
-
issues.push('Stored subscription session is expired and needs refresh.');
|
|
219
|
-
recommendedActions.push(`Refresh or replace the ${providerId} subscription session before relying on it.`);
|
|
220
|
-
} else if (subscriptionFreshness === 'expiring') {
|
|
221
|
-
issues.push('Stored subscription session is nearing expiry.');
|
|
222
|
-
recommendedActions.push(`Renew or verify the ${providerId} subscription session soon to avoid route drift.`);
|
|
223
|
-
}
|
|
224
|
-
if (pending) {
|
|
225
|
-
issues.push('Provider has a pending OAuth login that has not been completed yet.');
|
|
226
|
-
recommendedActions.push(`Finish /subscription login ${providerId} finish <code> or clear the pending login.`);
|
|
227
|
-
}
|
|
228
|
-
if (serviceOauth?.configured && !serviceOauth.usable) {
|
|
229
|
-
issues.push('Service OAuth is configured but missing a usable credential.');
|
|
230
|
-
recommendedActions.push(`Repair service OAuth credentials for ${providerId} in /services or /settings.`);
|
|
231
|
-
}
|
|
232
|
-
if (!routes.includes('api-key') && !routes.includes('subscription') && !routes.includes('service-oauth')) {
|
|
233
|
-
recommendedActions.push(`Configure an API key or OAuth-backed route for ${providerId}.`);
|
|
234
|
-
} else if (activeRoute === 'unconfigured') {
|
|
235
|
-
recommendedActions.push(`No currently usable auth path exists for ${providerId}; repair the preferred route.`);
|
|
236
|
-
}
|
|
237
|
-
if (preferredRoute !== 'unconfigured' && activeRoute !== preferredRoute && activeRoute !== 'unconfigured') {
|
|
238
|
-
issues.push(`Preferred ${preferredRoute} path is unavailable; current usable route is ${activeRoute}.`);
|
|
239
|
-
recommendedActions.push(`Review why ${providerId} fell back from ${preferredRoute} to ${activeRoute}.`);
|
|
240
|
-
}
|
|
241
|
-
if (jwtPayload && typeof jwtPayload['iss'] === 'string') {
|
|
242
|
-
notes.push(`issuer=${jwtPayload['iss']}`);
|
|
243
|
-
}
|
|
244
|
-
if (runtimeMetadata?.notes) {
|
|
245
|
-
notes.push(...runtimeMetadata.notes);
|
|
246
|
-
}
|
|
247
|
-
if (runtimeMetadata?.usage?.notes) {
|
|
248
|
-
notes.push(...runtimeMetadata.usage.notes);
|
|
249
|
-
}
|
|
250
|
-
if (runtimeMetadata?.policy?.notes) {
|
|
251
|
-
notes.push(...runtimeMetadata.policy.notes);
|
|
252
|
-
}
|
|
253
|
-
if (builtinSubscriptionProviders.has(providerId)) {
|
|
254
|
-
notes.push('Built-in subscription adapter available.');
|
|
255
|
-
if (!subscription && !pending) {
|
|
256
|
-
recommendedActions.push(`Start /subscription login ${providerId} start to enable the built-in subscription path.`);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
for (const route of runtimeMetadata?.auth?.routes ?? []) {
|
|
260
|
-
if (!route.usable || !route.configured) {
|
|
261
|
-
for (const hint of route.repairHints ?? []) {
|
|
262
|
-
recommendedActions.push(hint);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
if (pending) {
|
|
267
|
-
authFreshness = 'pending';
|
|
268
|
-
activeRouteReason = 'OAuth login is pending completion.';
|
|
269
|
-
} else if (activeRoute === 'subscription') {
|
|
270
|
-
authFreshness = subscriptionFreshness;
|
|
271
|
-
activeRouteReason = subscriptionFreshness === 'expiring'
|
|
272
|
-
? 'Subscription route is active but nearing expiry.'
|
|
273
|
-
: 'Subscription route is the preferred usable path.';
|
|
274
|
-
} else if (activeRoute === 'service-oauth') {
|
|
275
|
-
authFreshness = 'healthy';
|
|
276
|
-
activeRouteReason = preferredRoute === 'subscription'
|
|
277
|
-
? 'Subscription route is unavailable, so service OAuth is the current usable path.'
|
|
278
|
-
: 'Service OAuth is the current usable route.';
|
|
279
|
-
} else if (activeRoute === 'api-key') {
|
|
280
|
-
authFreshness = 'healthy';
|
|
281
|
-
activeRouteReason = preferredRoute === 'subscription'
|
|
282
|
-
? 'Subscription route is unavailable, so ambient API-key access is the current usable path.'
|
|
283
|
-
: preferredRoute === 'service-oauth'
|
|
284
|
-
? 'Service OAuth is unavailable, so ambient API-key access is the current usable path.'
|
|
285
|
-
: 'Ambient API-key access is the current usable route.';
|
|
286
|
-
}
|
|
287
|
-
const fallbackRoute = preferredRoute !== activeRoute && activeRoute !== 'unconfigured'
|
|
288
|
-
? activeRoute
|
|
289
|
-
: undefined;
|
|
290
|
-
const fallbackRisk = fallbackRoute
|
|
291
|
-
? `Provider is using ${fallbackRoute} because the preferred ${preferredRoute} path is not currently usable.`
|
|
292
|
-
: undefined;
|
|
293
|
-
if (!pending && routes.includes('subscription') && !subscription && builtinSubscriptionProviders.has(providerId)) {
|
|
294
|
-
authFreshness = 'unconfigured';
|
|
295
|
-
}
|
|
296
|
-
return Object.freeze({
|
|
297
|
-
providerId,
|
|
298
|
-
active: currentModel?.provider === providerId,
|
|
299
|
-
modelCount: allModels.filter((model) => model.provider === providerId).length,
|
|
300
|
-
configured: routes[0] !== 'unconfigured',
|
|
301
|
-
oauthReady: builtinSubscriptionProviders.has(providerId) || Boolean(serviceOauth?.configured),
|
|
302
|
-
pendingLogin: pending != null,
|
|
303
|
-
availableRoutes: routes,
|
|
304
|
-
preferredRoute,
|
|
305
|
-
activeRoute,
|
|
306
|
-
activeRouteReason,
|
|
307
|
-
authFreshness,
|
|
308
|
-
...(fallbackRoute ? { fallbackRoute } : {}),
|
|
309
|
-
...(fallbackRisk ? { fallbackRisk } : {}),
|
|
310
|
-
...(subscription?.expiresAt ? { expiresAt: subscription.expiresAt } : {}),
|
|
311
|
-
...(subscription?.tokenType ? { tokenType: subscription.tokenType } : {}),
|
|
312
|
-
notes,
|
|
313
|
-
usageWindows: builtinWindowsForProvider(providerId),
|
|
314
|
-
issues,
|
|
315
|
-
recommendedActions: [...new Set(recommendedActions)],
|
|
316
|
-
routeRecords,
|
|
317
|
-
}) satisfies ProviderAccountRecord;
|
|
318
|
-
}));
|
|
319
|
-
|
|
320
|
-
return Object.freeze({
|
|
321
|
-
capturedAt: Date.now(),
|
|
322
|
-
providers,
|
|
323
|
-
configuredCount: providers.filter((provider) => provider.configured).length,
|
|
324
|
-
issueCount: providers.reduce((sum, provider) => sum + provider.issues.length, 0),
|
|
325
|
-
});
|
|
326
|
-
}
|