@pellux/goodvibes-tui 0.18.4 → 0.18.9
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 +190 -0
- package/README.md +2 -2
- package/bin/goodvibes +1 -1
- package/bin/goodvibes-daemon +66 -0
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +14 -7
- package/scripts/postinstall.js +220 -0
- package/src/acp/connection.ts +5 -5
- package/src/acp/index.ts +1 -1
- package/src/acp/manager.ts +1 -133
- package/src/adapters/bluebubbles/index.ts +1 -1
- package/src/adapters/discord/index.ts +2 -2
- package/src/adapters/github/index.ts +1 -1
- package/src/adapters/google-chat/index.ts +1 -1
- package/src/adapters/imessage/index.ts +1 -1
- package/src/adapters/index.ts +15 -15
- package/src/adapters/matrix/index.ts +1 -1
- package/src/adapters/mattermost/index.ts +1 -1
- package/src/adapters/msteams/index.ts +2 -2
- package/src/adapters/ntfy/index.ts +1 -1
- package/src/adapters/signal/index.ts +1 -1
- package/src/adapters/slack/index.ts +2 -2
- package/src/adapters/telegram/index.ts +1 -1
- package/src/adapters/types.ts +4 -4
- package/src/adapters/webhook/index.ts +1 -1
- package/src/adapters/whatsapp/index.ts +1 -1
- package/src/agents/message-bus-core.ts +2 -2
- package/src/agents/message-bus.ts +2 -2
- package/src/agents/orchestrator-prompts.ts +4 -4
- package/src/agents/orchestrator-runner.ts +11 -11
- package/src/agents/orchestrator.ts +15 -14
- package/src/agents/session.ts +1 -1
- package/src/agents/worktree.ts +1 -1
- package/src/agents/wrfc-config.ts +2 -2
- package/src/agents/wrfc-controller.ts +12 -12
- package/src/agents/wrfc-gate-runtime.ts +5 -5
- package/src/agents/wrfc-reporting.ts +1 -1
- package/src/agents/wrfc-runtime-events.ts +3 -3
- package/src/agents/wrfc-types.ts +1 -1
- package/src/automation/delivery-manager.ts +4 -4
- package/src/automation/index.ts +4 -4
- package/src/automation/manager-runtime-delivery.ts +1 -1
- package/src/automation/manager-runtime-events.ts +3 -3
- package/src/automation/manager-runtime-execution.ts +5 -5
- package/src/automation/manager-runtime-helpers.ts +2 -2
- package/src/automation/manager-runtime-job-mutations.ts +3 -3
- package/src/automation/manager-runtime-reconcile.ts +4 -4
- package/src/automation/manager-runtime-scheduling.ts +2 -2
- package/src/automation/manager-runtime.ts +18 -18
- package/src/automation/manager.ts +2 -2
- package/src/automation/service.ts +2 -2
- package/src/channels/builtin/account-actions.ts +5 -5
- package/src/channels/builtin/accounts.ts +2 -2
- package/src/channels/builtin/contracts.ts +3 -3
- package/src/channels/builtin/plugins.ts +5 -5
- package/src/channels/builtin/rendering.ts +4 -4
- package/src/channels/builtin/setup-schema.ts +1 -1
- package/src/channels/builtin/shared.ts +7 -7
- package/src/channels/builtin/surfaces.ts +2 -2
- package/src/channels/builtin/targets.ts +3 -3
- package/src/channels/builtin-runtime.ts +11 -11
- package/src/channels/delivery/shared.ts +2 -2
- package/src/channels/delivery/strategies-bridge.ts +3 -3
- package/src/channels/delivery/strategies-core.ts +5 -5
- package/src/channels/delivery/strategies-enterprise.ts +3 -3
- package/src/channels/delivery/types.ts +2 -2
- package/src/channels/delivery-router.ts +9 -9
- package/src/channels/index.ts +12 -12
- package/src/channels/plugin-registry.ts +1 -1
- package/src/channels/provider-runtime.ts +3 -3
- package/src/channels/reply-pipeline.ts +3 -3
- package/src/channels/route-manager.ts +2 -2
- package/src/channels/surface-registry.ts +2 -2
- package/src/config/helper-model.ts +1 -233
- package/src/config/index.ts +3 -3
- package/src/config/manager.ts +8 -404
- package/src/config/secrets.ts +21 -542
- package/src/config/service-registry.ts +1 -329
- package/src/config/tool-llm.ts +3 -3
- package/src/control-plane/approval-broker.ts +1 -1
- package/src/control-plane/gateway.ts +1 -713
- package/src/control-plane/index.ts +7 -7
- package/src/control-plane/media-contract-schemas.ts +1 -208
- package/src/control-plane/method-catalog-admin.ts +1 -136
- package/src/control-plane/method-catalog-channels.ts +1 -591
- package/src/control-plane/method-catalog-control-automation.ts +1 -475
- package/src/control-plane/method-catalog-control-core.ts +1 -594
- package/src/control-plane/method-catalog-control.ts +1 -8
- package/src/control-plane/method-catalog-events.ts +1 -74
- package/src/control-plane/method-catalog-knowledge.ts +1 -531
- package/src/control-plane/method-catalog-media.ts +1 -279
- package/src/control-plane/method-catalog-runtime.ts +1 -304
- package/src/control-plane/method-catalog-shared.ts +1 -223
- package/src/control-plane/method-catalog.ts +1 -242
- package/src/control-plane/operator-contract-schemas-admin.ts +1 -639
- package/src/control-plane/operator-contract-schemas-channels.ts +1 -375
- package/src/control-plane/operator-contract-schemas-control.ts +1 -226
- package/src/control-plane/operator-contract-schemas-domains.ts +1 -4
- package/src/control-plane/operator-contract-schemas-knowledge.ts +1 -582
- package/src/control-plane/operator-contract-schemas-media.ts +1 -297
- package/src/control-plane/operator-contract-schemas-permissions.ts +1 -100
- package/src/control-plane/operator-contract-schemas-remote.ts +1 -38
- package/src/control-plane/operator-contract-schemas-runtime.ts +1 -563
- package/src/control-plane/operator-contract-schemas-shared.ts +1 -85
- package/src/control-plane/operator-contract-schemas-telemetry.ts +1 -349
- package/src/control-plane/operator-contract-schemas.ts +1 -6
- package/src/control-plane/operator-contract.ts +5 -3
- package/src/control-plane/session-broker.ts +1 -1
- package/src/core/compaction-sections.ts +5 -5
- package/src/core/compaction-types.ts +3 -3
- package/src/core/composer-state.ts +1 -1
- package/src/core/context-compaction.ts +7 -7
- package/src/core/conversation-compaction.ts +4 -4
- package/src/core/conversation-diff.ts +1 -1
- package/src/core/conversation-rendering.ts +5 -5
- package/src/core/conversation-utils.ts +2 -2
- package/src/core/conversation.ts +10 -10
- package/src/core/event-replay.ts +1 -1
- package/src/core/orchestrator-context-runtime.ts +8 -8
- package/src/core/orchestrator-follow-up-runtime.ts +2 -2
- package/src/core/orchestrator-runtime.ts +4 -4
- package/src/core/orchestrator-tool-runtime.ts +7 -7
- package/src/core/orchestrator-turn-helpers.ts +7 -7
- package/src/core/orchestrator-turn-loop.ts +10 -10
- package/src/core/orchestrator.ts +17 -17
- package/src/core/plan-command-handler.ts +2 -2
- package/src/core/system-message-router.ts +2 -2
- package/src/core/transcript-events/classify.ts +1 -1
- package/src/core/transcript-events/index.ts +3 -3
- package/src/daemon/cli.ts +6 -6
- package/src/daemon/control-plane.ts +7 -7
- package/src/daemon/facade-composition.ts +16 -15
- package/src/daemon/facade.ts +17 -17
- package/src/daemon/helpers.ts +2 -2
- package/src/daemon/http/router-route-contexts.ts +11 -11
- package/src/daemon/http/router.ts +25 -25
- package/src/daemon/http-listener.ts +3 -3
- package/src/daemon/index.ts +1 -3
- package/src/daemon/service-manager.ts +1 -1
- package/src/daemon/surface-actions.ts +8 -8
- package/src/daemon/surface-delivery.ts +7 -7
- package/src/daemon/surface-policy.ts +1 -1
- package/src/daemon/transport-events.ts +4 -4
- package/src/daemon/types.ts +24 -24
- package/src/export/markdown.ts +1 -1
- package/src/export/session-export.ts +1 -633
- package/src/git/index.ts +1 -1
- package/src/git/service.ts +1 -1
- package/src/hooks/chain-engine.ts +1 -1
- package/src/hooks/dispatcher.ts +4 -4
- package/src/hooks/hook-api.ts +1 -1
- package/src/hooks/index.ts +8 -8
- package/src/hooks/runners/agent.ts +1 -1
- package/src/hooks/runners/prompt.ts +1 -1
- package/src/hooks/workbench.ts +2 -2
- package/src/input/command-registry.ts +24 -17
- package/src/input/commands/config.ts +1 -1
- package/src/input/commands/control-room-runtime.ts +2 -2
- package/src/input/commands/conversation-runtime.ts +1 -1
- package/src/input/commands/discovery-runtime.ts +7 -1
- package/src/input/commands/eval.ts +2 -2
- package/src/input/commands/git-runtime.ts +1 -1
- package/src/input/commands/guidance-runtime.ts +3 -3
- package/src/input/commands/health-runtime.ts +7 -7
- package/src/input/commands/incident-runtime.ts +1 -1
- package/src/input/commands/integration-runtime.ts +3 -3
- package/src/input/commands/local-provider-runtime.ts +1 -1
- package/src/input/commands/local-runtime.ts +1 -1
- package/src/input/commands/local-setup-review.ts +2 -2
- package/src/input/commands/local-setup.ts +2 -2
- package/src/input/commands/managed-runtime.ts +2 -2
- package/src/input/commands/marketplace-runtime.ts +1 -1
- package/src/input/commands/platform-access-runtime.ts +1 -1
- package/src/input/commands/platform-sandbox-qemu.ts +3 -3
- package/src/input/commands/platform-sandbox-runtime.ts +5 -5
- package/src/input/commands/platform-sandbox-session.ts +1 -1
- package/src/input/commands/policy-dispatch.ts +2 -2
- package/src/input/commands/product-runtime.ts +2 -2
- package/src/input/commands/profile-sync-runtime.ts +1 -1
- package/src/input/commands/provider-accounts-runtime.ts +1 -1
- package/src/input/commands/provider.ts +3 -3
- package/src/input/commands/quit-shared.ts +1 -1
- package/src/input/commands/recall-bundle.ts +1 -1
- package/src/input/commands/recall-capture.ts +2 -2
- package/src/input/commands/recall-query.ts +2 -2
- package/src/input/commands/recall-shared.ts +1 -1
- package/src/input/commands/remote-runtime-setup.ts +1 -1
- package/src/input/commands/remote-runtime.ts +1 -1
- package/src/input/commands/runtime-services.ts +13 -11
- package/src/input/commands/schedule-runtime.ts +2 -2
- package/src/input/commands/session-content.ts +1 -1
- package/src/input/commands/session-workflow.ts +4 -4
- package/src/input/commands/settings-sync-runtime.ts +1 -1
- package/src/input/commands/share-runtime.ts +9 -4
- package/src/input/commands/shell-core.ts +1 -1
- package/src/input/commands/skills-runtime.ts +1 -1
- package/src/input/commands/subscription-runtime.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +1 -1
- package/src/input/commands/teamwork-runtime.ts +1 -1
- package/src/input/commands/worktree-runtime.ts +1 -1
- package/src/input/handler-command-route.ts +1 -1
- package/src/input/handler-content-actions.ts +3 -3
- package/src/input/handler-feed-routes.ts +2 -2
- package/src/input/handler-feed.ts +1 -1
- package/src/input/handler-shortcuts.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/keybindings.ts +5 -0
- package/src/input/model-picker.ts +2 -2
- package/src/input/profile-picker-modal.ts +1 -1
- package/src/input/session-picker-modal.ts +1 -1
- package/src/input/settings-modal.ts +4 -4
- package/src/integrations/index.ts +1 -1
- package/src/integrations/notifier.ts +1 -1
- package/src/integrations/webhooks.ts +1 -177
- package/src/knowledge/consolidation.ts +2 -2
- package/src/knowledge/graphql.ts +1 -1
- package/src/knowledge/index.ts +5 -5
- package/src/knowledge/ingest-compile.ts +3 -3
- package/src/knowledge/ingest-context.ts +1 -1
- package/src/knowledge/ingest-inputs.ts +4 -4
- package/src/knowledge/ingest.ts +1 -20
- package/src/knowledge/internal.ts +1 -1
- package/src/knowledge/knowledge-api.ts +7 -7
- package/src/knowledge/lint.ts +3 -3
- package/src/knowledge/memory-sync.ts +2 -2
- package/src/knowledge/packet.ts +3 -3
- package/src/knowledge/scheduling.ts +2 -2
- package/src/knowledge/service.ts +10 -10
- package/src/main.ts +11 -10
- package/src/mcp/index.ts +4 -4
- package/src/mcp/mcp-api.ts +1 -1
- package/src/mcp/registry.ts +1 -508
- package/src/media/builtin-image-understanding.ts +2 -2
- package/src/media/builtin-providers.ts +2 -2
- package/src/media/index.ts +1 -1
- package/src/multimodal/index.ts +1 -1
- package/src/multimodal/service.ts +2 -2
- package/src/panels/agent-inspector-panel.ts +2 -2
- package/src/panels/agent-logs-panel.ts +3 -3
- package/src/panels/approval-panel.ts +2 -2
- package/src/panels/builtin/operations.ts +3 -1
- package/src/panels/builtin/shared.ts +14 -14
- package/src/panels/context-visualizer-panel.ts +2 -2
- package/src/panels/cost-tracker-panel.ts +2 -2
- package/src/panels/debug-panel.ts +3 -3
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hooks-panel.ts +4 -4
- package/src/panels/knowledge-panel.ts +1 -1
- package/src/panels/marketplace-panel.ts +1 -1
- package/src/panels/mcp-panel.ts +1 -1
- package/src/panels/memory-panel.ts +2 -2
- package/src/panels/ops-control-panel.ts +2 -2
- package/src/panels/ops-strategy-panel.ts +2 -2
- package/src/panels/plugins-panel.ts +1 -1
- package/src/panels/policy-panel.ts +1 -1
- package/src/panels/provider-health-panel.ts +3 -3
- package/src/panels/provider-stats-panel.ts +2 -2
- package/src/panels/sandbox-panel.ts +3 -3
- package/src/panels/schedule-panel.ts +1 -1
- package/src/panels/settings-sync-panel.ts +1 -1
- package/src/panels/skills-panel.ts +28 -1
- package/src/panels/system-messages-panel.ts +1 -1
- package/src/panels/tasks-panel.ts +1 -1
- package/src/panels/thinking-panel.ts +2 -2
- package/src/panels/token-budget-panel.ts +1 -1
- package/src/panels/tool-inspector-panel.ts +2 -2
- package/src/panels/worktree-panel.ts +1 -1
- package/src/panels/wrfc-panel.ts +4 -4
- package/src/permissions/briefs/build.ts +1 -1
- package/src/permissions/manager.ts +1 -356
- package/src/permissions/prompt.ts +1 -1
- package/src/plugins/api.ts +9 -9
- package/src/plugins/loader.ts +8 -8
- package/src/plugins/manager.ts +5 -5
- package/src/providers/amazon-bedrock-mantle.ts +1 -1
- package/src/providers/amazon-bedrock.ts +1 -1
- package/src/providers/anthropic-compat.ts +4 -4
- package/src/providers/anthropic-sdk-provider.ts +5 -5
- package/src/providers/anthropic-vertex.ts +1 -1
- package/src/providers/anthropic.ts +4 -4
- package/src/providers/auto-register.ts +6 -6
- package/src/providers/builtin-catalog.ts +2 -2
- package/src/providers/builtin-registry.ts +15 -15
- package/src/providers/cache-planner.ts +2 -2
- package/src/providers/capabilities.ts +1 -601
- package/src/providers/custom-loader.ts +6 -6
- package/src/providers/discovered-compat.ts +7 -18
- package/src/providers/discovered-factory.ts +7 -7
- package/src/providers/discovered-traits.ts +1 -1
- package/src/providers/gemini.ts +4 -4
- package/src/providers/github-copilot.ts +4 -4
- package/src/providers/index.ts +1 -47
- package/src/providers/interface.ts +1 -1
- package/src/providers/llama-cpp.ts +4 -4
- package/src/providers/lm-studio-helpers.ts +1 -1
- package/src/providers/lm-studio.ts +4 -4
- package/src/providers/model-catalog-cache.ts +1 -1
- package/src/providers/model-catalog-notifications.ts +1 -1
- package/src/providers/model-catalog-synthetic.ts +2 -2
- package/src/providers/model-catalog.ts +7 -7
- package/src/providers/model-limits.ts +1 -280
- package/src/providers/ollama.ts +4 -4
- package/src/providers/openai-codex.ts +2 -2
- package/src/providers/openai-compat.ts +4 -4
- package/src/providers/openai.ts +3 -3
- package/src/providers/optimizer.ts +1 -381
- package/src/providers/provider-api.ts +1 -553
- package/src/providers/registry-helpers.ts +1 -1
- package/src/providers/registry-models.ts +2 -2
- package/src/providers/registry-types.ts +5 -5
- package/src/providers/registry.ts +1 -729
- package/src/providers/runtime-metadata.ts +1 -1
- package/src/providers/runtime-snapshot.ts +3 -3
- package/src/providers/synthetic.ts +3 -3
- package/src/providers/tier-prompts.ts +1 -1
- package/src/providers/tool-formats.ts +1 -1
- package/src/renderer/agent-detail-modal.ts +2 -2
- package/src/renderer/block-actions.ts +1 -1
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +1 -1
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/git-status.ts +1 -1
- package/src/renderer/live-tail-modal.ts +1 -1
- package/src/renderer/process-modal.ts +2 -2
- package/src/runtime/bootstrap-background.ts +18 -8
- package/src/runtime/bootstrap-command-context.ts +24 -24
- package/src/runtime/bootstrap-command-parts.ts +24 -24
- package/src/runtime/bootstrap-core.ts +12 -10
- package/src/runtime/bootstrap-helpers.ts +2 -2
- package/src/runtime/bootstrap-hook-bridge.ts +9 -9
- package/src/runtime/bootstrap-runtime-events.ts +4 -4
- package/src/runtime/bootstrap-services.ts +4 -4
- package/src/runtime/bootstrap-shell.ts +11 -11
- package/src/runtime/bootstrap.ts +28 -10
- package/src/runtime/compaction/index.ts +1 -90
- package/src/runtime/compaction/lifecycle.ts +1 -167
- package/src/runtime/compaction/manager.ts +11 -11
- package/src/runtime/compaction/quality-score.ts +1 -279
- package/src/runtime/compaction/resume-repair.ts +1 -183
- package/src/runtime/compaction/strategies/autocompact.ts +1 -65
- package/src/runtime/compaction/strategies/boundary-commit.ts +1 -106
- package/src/runtime/compaction/strategies/collapse.ts +1 -90
- package/src/runtime/compaction/strategies/index.ts +1 -23
- package/src/runtime/compaction/strategies/microcompact.ts +1 -74
- package/src/runtime/compaction/strategies/reactive.ts +1 -89
- package/src/runtime/compaction/types.ts +1 -221
- package/src/runtime/context.ts +10 -10
- package/src/runtime/diagnostics/actions.ts +1 -1
- package/src/runtime/diagnostics/index.ts +5 -5
- package/src/runtime/diagnostics/panels/agents.ts +2 -2
- package/src/runtime/diagnostics/panels/events.ts +2 -2
- package/src/runtime/diagnostics/panels/health.ts +2 -2
- package/src/runtime/diagnostics/panels/ops.ts +2 -2
- package/src/runtime/diagnostics/panels/policy.ts +2 -2
- package/src/runtime/diagnostics/panels/tasks.ts +2 -2
- package/src/runtime/diagnostics/panels/tool-calls.ts +2 -2
- package/src/runtime/diagnostics/provider.ts +1 -1
- package/src/runtime/ecosystem/recommendations.ts +1 -1
- package/src/runtime/emitters/agents.ts +2 -2
- package/src/runtime/emitters/automation.ts +2 -2
- package/src/runtime/emitters/communication.ts +2 -2
- package/src/runtime/emitters/compaction.ts +2 -2
- package/src/runtime/emitters/control-plane.ts +2 -2
- package/src/runtime/emitters/deliveries.ts +2 -2
- package/src/runtime/emitters/forensics.ts +2 -2
- package/src/runtime/emitters/index.ts +27 -27
- package/src/runtime/emitters/knowledge.ts +2 -2
- package/src/runtime/emitters/mcp.ts +2 -2
- package/src/runtime/emitters/ops.ts +2 -2
- package/src/runtime/emitters/orchestration.ts +2 -2
- package/src/runtime/emitters/permissions.ts +2 -2
- package/src/runtime/emitters/planner.ts +2 -2
- package/src/runtime/emitters/plugins.ts +2 -2
- package/src/runtime/emitters/providers.ts +2 -2
- package/src/runtime/emitters/routes.ts +2 -2
- package/src/runtime/emitters/security.ts +2 -2
- package/src/runtime/emitters/session.ts +2 -2
- package/src/runtime/emitters/surfaces.ts +2 -2
- package/src/runtime/emitters/tasks.ts +2 -2
- package/src/runtime/emitters/tools.ts +2 -2
- package/src/runtime/emitters/transport.ts +2 -2
- package/src/runtime/emitters/turn.ts +3 -3
- package/src/runtime/emitters/ui.ts +2 -2
- package/src/runtime/emitters/watchers.ts +2 -2
- package/src/runtime/emitters/workflows.ts +3 -3
- package/src/runtime/eval/index.ts +3 -3
- package/src/runtime/eval/runner.ts +1 -1
- package/src/runtime/eval/suites.ts +1 -1
- package/src/runtime/events/domain-map.ts +2 -2
- package/src/runtime/events/index.ts +1 -194
- package/src/runtime/events/turn.ts +1 -60
- package/src/runtime/events/workflows.ts +1 -17
- package/src/runtime/forensics/collector.ts +4 -4
- package/src/runtime/forensics/index.ts +1 -1
- package/src/runtime/foundation-clients.ts +14 -14
- package/src/runtime/foundation-services.ts +8 -8
- package/src/runtime/guidance.ts +3 -3
- package/src/runtime/health/effect-handlers.ts +3 -3
- package/src/runtime/health/index.ts +4 -4
- package/src/runtime/health/wiring.ts +2 -2
- package/src/runtime/index.ts +29 -29
- package/src/runtime/integration/helpers.ts +12 -12
- package/src/runtime/lifecycle.ts +4 -4
- package/src/runtime/mcp/index.ts +3 -3
- package/src/runtime/mcp/manager.ts +1 -1
- package/src/runtime/network/inbound.ts +2 -2
- package/src/runtime/network/index.ts +5 -5
- package/src/runtime/network/outbound.ts +2 -2
- package/src/runtime/network/shared.ts +1 -1
- package/src/runtime/operator-client.ts +9 -9
- package/src/runtime/ops/control-plane.ts +2 -2
- package/src/runtime/ops/index.ts +3 -3
- package/src/runtime/ops/playbooks/index.ts +2 -2
- package/src/runtime/ops/playbooks/session-unrecoverable.ts +2 -2
- package/src/runtime/ops/playbooks/stuck-turn.ts +1 -1
- package/src/runtime/ops/runtime-context.ts +1 -1
- package/src/runtime/orchestration/spawn-policy.ts +1 -1
- package/src/runtime/peer-client.ts +3 -3
- package/src/runtime/perf/index.ts +1 -1
- package/src/runtime/perf/slo-collector.ts +1 -1
- package/src/runtime/permissions/index.ts +5 -5
- package/src/runtime/permissions/policy-runtime.ts +1 -175
- package/src/runtime/permissions/rule-suggestions.ts +1 -1
- package/src/runtime/plugins/hot-reload.ts +4 -4
- package/src/runtime/plugins/index.ts +13 -13
- package/src/runtime/plugins/lifecycle.ts +1 -1
- package/src/runtime/plugins/manager.ts +10 -10
- package/src/runtime/plugins/manifest.ts +2 -2
- package/src/runtime/plugins/quarantine.ts +2 -2
- package/src/runtime/plugins/trust.ts +2 -2
- package/src/runtime/plugins/types.ts +1 -1
- package/src/runtime/provider-accounts/registry.ts +2 -2
- package/src/runtime/remote/distributed-runtime-contract-schemas.ts +3 -3
- package/src/runtime/remote/index.ts +3 -3
- package/src/runtime/remote/runner-registry.ts +2 -2
- package/src/runtime/remote/supervisor.ts +1 -1
- package/src/runtime/runtime-hook-api.ts +1 -1
- package/src/runtime/runtime-knowledge-api.ts +1 -1
- package/src/runtime/runtime-mcp-api.ts +1 -1
- package/src/runtime/runtime-ops-api.ts +2 -2
- package/src/runtime/runtime-provider-api.ts +1 -1
- package/src/runtime/services.ts +42 -35
- package/src/runtime/session-maintenance.ts +1 -1
- package/src/runtime/session-persistence.ts +2 -2
- package/src/runtime/session-return-context.ts +3 -3
- package/src/runtime/settings/control-plane-store.ts +1 -1
- package/src/runtime/settings/control-plane.ts +2 -2
- package/src/runtime/shell-command-extensions.ts +7 -7
- package/src/runtime/shell-command-ops.ts +6 -6
- package/src/runtime/shell-command-platform.ts +1 -1
- package/src/runtime/shell-command-services.ts +18 -18
- package/src/runtime/shell-command-workspace.ts +2 -2
- package/src/runtime/store/domains/conversation.ts +1 -1
- package/src/runtime/store/domains/index.ts +4 -4
- package/src/runtime/store/domains/permissions.ts +1 -1
- package/src/runtime/store/helpers/reducers/conversation.ts +3 -3
- package/src/runtime/store/helpers/reducers/lifecycle.ts +3 -3
- package/src/runtime/store/helpers/reducers/shared.ts +2 -2
- package/src/runtime/store/helpers/reducers/sync.ts +1 -1
- package/src/runtime/store/helpers/reducers.ts +4 -4
- package/src/runtime/store/index.ts +4 -4
- package/src/runtime/store/selectors/index.ts +2 -2
- package/src/runtime/store/state.ts +4 -4
- package/src/runtime/tasks/adapters/acp-adapter.ts +1 -1
- package/src/runtime/tasks/adapters/index.ts +6 -6
- package/src/runtime/tasks/index.ts +3 -3
- package/src/runtime/tasks/manager.ts +3 -3
- package/src/runtime/telemetry/api-helpers.ts +2 -2
- package/src/runtime/telemetry/api.ts +2 -2
- package/src/runtime/telemetry/index.ts +5 -5
- package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +1 -1
- package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +1 -1
- package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +1 -1
- package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +1 -1
- package/src/runtime/telemetry/instrumentation/domain-bridge.ts +5 -5
- package/src/runtime/telemetry/instrumentation/index.ts +3 -3
- package/src/runtime/tools/context.ts +3 -3
- package/src/runtime/tools/index.ts +4 -4
- package/src/runtime/tools/phased-executor.ts +3 -3
- package/src/runtime/tools/phases/budget.ts +1 -1
- package/src/runtime/tools/phases/execute.ts +1 -1
- package/src/runtime/tools/phases/index.ts +7 -7
- package/src/runtime/tools/phases/map-output.ts +1 -1
- package/src/runtime/tools/phases/permission.ts +2 -2
- package/src/runtime/tools/phases/posthook.ts +1 -1
- package/src/runtime/tools/phases/prehook.ts +1 -1
- package/src/runtime/tools/phases/validate.ts +1 -1
- package/src/runtime/transports/direct.ts +4 -4
- package/src/runtime/transports/http-helpers.ts +3 -3
- package/src/runtime/transports/http-types.ts +6 -6
- package/src/runtime/transports/http.ts +8 -8
- package/src/runtime/transports/realtime.ts +4 -4
- package/src/runtime/transports/remote-events.ts +1 -1
- package/src/runtime/transports/shared.ts +2 -2
- package/src/runtime/transports/ui-runtime-events.ts +2 -2
- package/src/runtime/ui/index.ts +7 -7
- package/src/runtime/ui/model-picker/data-provider.ts +4 -4
- package/src/runtime/ui/model-picker/health-enrichment.ts +3 -3
- package/src/runtime/ui/model-picker/index.ts +8 -8
- package/src/runtime/ui/provider-health/data-provider.ts +2 -2
- package/src/runtime/ui/provider-health/fallback-visualizer.ts +1 -1
- package/src/runtime/ui/provider-health/index.ts +5 -5
- package/src/runtime/ui-events.ts +1 -1
- package/src/runtime/ui-read-models-core.ts +2 -2
- package/src/runtime/ui-read-models-observability-maintenance.ts +4 -4
- package/src/runtime/ui-read-models-observability-options.ts +1 -1
- package/src/runtime/ui-read-models-observability-remote.ts +2 -2
- package/src/runtime/ui-read-models-observability-security.ts +3 -3
- package/src/runtime/ui-read-models-observability-system.ts +6 -6
- package/src/runtime/ui-read-models-observability.ts +10 -10
- package/src/runtime/ui-read-models-operations.ts +2 -2
- package/src/runtime/ui-read-models.ts +7 -7
- package/src/runtime/ui-service-queries.ts +2 -2
- package/src/runtime/ui-services.ts +7 -7
- package/src/runtime/worktree/registry.ts +1 -1
- package/src/scripts/process-messages.ts +1 -1
- package/src/sessions/manager.ts +9 -383
- package/src/shell/blocking-input.ts +3 -3
- package/src/shell/ui-openers.ts +3 -3
- package/src/state/file-watcher.ts +1 -1
- package/src/state/index.ts +10 -10
- package/src/state/knowledge-injection.ts +2 -2
- package/src/state/memory-embedding-http.ts +2 -2
- package/src/state/memory-embeddings.ts +1 -1
- package/src/state/memory-ingest.ts +3 -3
- package/src/state/memory-registry.ts +3 -3
- package/src/state/memory-store-helpers.ts +1 -1
- package/src/state/memory-store.ts +4 -4
- package/src/state/memory-vector-store.ts +3 -3
- package/src/tools/agent/index.ts +7 -7
- package/src/tools/agent/manager.ts +8 -8
- package/src/tools/analyze/git-modes.ts +2 -2
- package/src/tools/analyze/index.ts +2 -2
- package/src/tools/channel/agent-tools.ts +1 -1
- package/src/tools/channel/index.ts +2 -2
- package/src/tools/control/index.ts +1 -1
- package/src/tools/edit/core.ts +3 -3
- package/src/tools/edit/index.ts +2 -2
- package/src/tools/edit/phased.ts +2 -2
- package/src/tools/fetch/index.ts +2 -2
- package/src/tools/fetch/phased.ts +1 -1
- package/src/tools/index.ts +28 -28
- package/src/tools/mcp/index.ts +1 -1
- package/src/tools/remote-trigger/index.ts +1 -1
- package/src/tools/shared/auto-heal.ts +2 -2
- package/src/tools/state/index.ts +1 -1
- package/src/tools/web-search/index.ts +1 -1
- package/src/tools/write/index.ts +3 -3
- package/src/tools/write/phased.ts +1 -1
- package/src/version.ts +1 -1
- package/src/watchers/index.ts +2 -2
- package/src/watchers/registry.ts +2 -2
- package/src/web-search/index.ts +10 -10
- package/src/web-search/provider-registry.ts +8 -8
- package/src/web-search/providers/brave.ts +1 -1
- package/src/web-search/providers/duckduckgo.ts +1 -1
- package/src/web-search/providers/exa.ts +1 -1
- package/src/web-search/providers/firecrawl.ts +1 -1
- package/src/web-search/providers/perplexity.ts +1 -1
- package/src/web-search/providers/searxng.ts +1 -1
- package/src/web-search/providers/shared.ts +1 -1
- package/src/web-search/providers/tavily.ts +1 -1
- package/src/web-search/service.ts +2 -2
- package/docs/README.md +0 -32
- package/scripts/postinstall.mjs +0 -203
- package/src/runtime/ecosystem/catalog.ts +0 -606
- package/src/runtime/sandbox/backend.ts +0 -291
- package/src/runtime/sandbox/manager.ts +0 -364
- package/src/runtime/sandbox/provisioning.ts +0 -422
- package/src/runtime/sandbox/session-registry.ts +0 -289
- package/src/tools/repl/index.ts +0 -318
|
@@ -1,601 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Provider Capability Registry
|
|
3
|
-
*
|
|
4
|
-
* Unified capability contracts per provider/model for routing decisions.
|
|
5
|
-
* Routing choices are fully explainable from capability records.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { getCacheCapability, type CacheType } from '@pellux/goodvibes-sdk/platform/providers/cache-capability';
|
|
9
|
-
import type { LLMProvider } from './interface.ts';
|
|
10
|
-
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
// Core Types
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Unified capability contract describing what a provider/model can do.
|
|
17
|
-
* All fields are required — use `getCapability()` which always returns a
|
|
18
|
-
* fully-resolved record derived from provider defaults and model overrides.
|
|
19
|
-
*/
|
|
20
|
-
export interface ProviderCapability {
|
|
21
|
-
/** Whether the provider streams responses incrementally. */
|
|
22
|
-
streaming: boolean;
|
|
23
|
-
/** Whether the model accepts tool/function definitions in requests. */
|
|
24
|
-
toolCalling: boolean;
|
|
25
|
-
/** Whether the model can execute multiple tool calls in one turn. */
|
|
26
|
-
parallelTools: boolean;
|
|
27
|
-
/** Whether the provider supports JSON mode / structured output. */
|
|
28
|
-
jsonMode: boolean;
|
|
29
|
-
/** Whether the model exposes reasoning effort / budget controls. */
|
|
30
|
-
reasoningControls: boolean;
|
|
31
|
-
/** Maximum tokens the model can receive (context window). */
|
|
32
|
-
maxContextTokens: number;
|
|
33
|
-
/** Maximum tokens the model can generate in one response. */
|
|
34
|
-
maxOutputTokens: number;
|
|
35
|
-
/** Provider-level request timeout in milliseconds. */
|
|
36
|
-
timeoutMs: number;
|
|
37
|
-
/** Prompt-caching strategy supported by this provider. */
|
|
38
|
-
caching: CacheType;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* A request profile describing what capabilities are needed to handle a
|
|
43
|
-
* particular task. All fields are optional — omitted means "no requirement".
|
|
44
|
-
*/
|
|
45
|
-
export interface RequestProfile {
|
|
46
|
-
/** Whether the request requires streaming output. */
|
|
47
|
-
requiresStreaming?: boolean;
|
|
48
|
-
/** Whether the request submits tool definitions. */
|
|
49
|
-
requiresToolCalling?: boolean;
|
|
50
|
-
/** Whether the request expects parallel tool execution. */
|
|
51
|
-
requiresParallelTools?: boolean;
|
|
52
|
-
/** Whether the request expects a JSON-mode / structured output response. */
|
|
53
|
-
requiresJsonMode?: boolean;
|
|
54
|
-
/** Whether the request tunes reasoning effort (budget, effort label). */
|
|
55
|
-
requiresReasoningControls?: boolean;
|
|
56
|
-
/** Minimum context window size the request needs (in tokens). */
|
|
57
|
-
minContextTokens?: number;
|
|
58
|
-
/** Minimum output capacity the request needs (in tokens). */
|
|
59
|
-
minOutputTokens?: number;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
// Route Explanation
|
|
64
|
-
// ---------------------------------------------------------------------------
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Typed reason codes for routing rejections.
|
|
68
|
-
* Use these instead of free-form strings so callers can branch on them.
|
|
69
|
-
*/
|
|
70
|
-
export const RouteRejectionCode = {
|
|
71
|
-
NO_STREAMING: 'NO_STREAMING',
|
|
72
|
-
NO_TOOL_CALLING: 'NO_TOOL_CALLING',
|
|
73
|
-
NO_PARALLEL_TOOLS: 'NO_PARALLEL_TOOLS',
|
|
74
|
-
NO_JSON_MODE: 'NO_JSON_MODE',
|
|
75
|
-
NO_REASONING_CONTROLS: 'NO_REASONING_CONTROLS',
|
|
76
|
-
CONTEXT_TOO_SMALL: 'CONTEXT_TOO_SMALL',
|
|
77
|
-
OUTPUT_TOO_SMALL: 'OUTPUT_TOO_SMALL',
|
|
78
|
-
} as const;
|
|
79
|
-
|
|
80
|
-
export type RouteRejectionCode = (typeof RouteRejectionCode)[keyof typeof RouteRejectionCode];
|
|
81
|
-
|
|
82
|
-
/** A single capability requirement that was not met. */
|
|
83
|
-
export interface RouteRejectionDetail {
|
|
84
|
-
/** Machine-readable rejection code. */
|
|
85
|
-
code: RouteRejectionCode;
|
|
86
|
-
/** Human-readable description of why this requirement failed. */
|
|
87
|
-
reason: string;
|
|
88
|
-
/** Actual capability value on the provider. */
|
|
89
|
-
actual: boolean | number | string;
|
|
90
|
-
/** Required value from the request profile. */
|
|
91
|
-
required: boolean | number | string;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/** Structured result of a routing decision for a provider/model/request triple. */
|
|
95
|
-
export type RouteExplanation =
|
|
96
|
-
| {
|
|
97
|
-
accepted: true;
|
|
98
|
-
providerId: string;
|
|
99
|
-
modelId: string;
|
|
100
|
-
/** Human-readable summary of why this route was chosen. */
|
|
101
|
-
summary: string;
|
|
102
|
-
/** The resolved capability record used for this decision. */
|
|
103
|
-
capability: ProviderCapability;
|
|
104
|
-
}
|
|
105
|
-
| {
|
|
106
|
-
accepted: false;
|
|
107
|
-
providerId: string;
|
|
108
|
-
modelId: string;
|
|
109
|
-
/** Human-readable summary of why this route was rejected. */
|
|
110
|
-
summary: string;
|
|
111
|
-
/** Ordered list of unmet requirements (non-empty when accepted=false). */
|
|
112
|
-
rejections: RouteRejectionDetail[];
|
|
113
|
-
/** The resolved capability record used for this decision. */
|
|
114
|
-
capability: ProviderCapability;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
// ---------------------------------------------------------------------------
|
|
118
|
-
// Provider Defaults
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Baseline capability defaults per built-in provider.
|
|
123
|
-
* Fields not listed fall back to `GLOBAL_DEFAULTS`.
|
|
124
|
-
*
|
|
125
|
-
* Note: All known providers intentionally specify every field — this makes each
|
|
126
|
-
* provider's contract explicit and self-contained, at the cost of requiring all
|
|
127
|
-
* entries to be updated when a new `ProviderCapability` field is added.
|
|
128
|
-
* Unknown/custom providers fall back to `GLOBAL_DEFAULTS` for unspecified fields.
|
|
129
|
-
*/
|
|
130
|
-
const PROVIDER_DEFAULTS: Record<string, Partial<ProviderCapability>> = {
|
|
131
|
-
anthropic: {
|
|
132
|
-
streaming: true,
|
|
133
|
-
toolCalling: true,
|
|
134
|
-
parallelTools: true,
|
|
135
|
-
jsonMode: false, // Anthropic uses structured output via tool schemas, not a json_mode flag
|
|
136
|
-
reasoningControls: false, // Extended thinking enabled per-model via reasoningEffort
|
|
137
|
-
maxContextTokens: 200_000,
|
|
138
|
-
maxOutputTokens: 8_192,
|
|
139
|
-
timeoutMs: 120_000,
|
|
140
|
-
},
|
|
141
|
-
openai: {
|
|
142
|
-
streaming: true,
|
|
143
|
-
toolCalling: true,
|
|
144
|
-
parallelTools: true,
|
|
145
|
-
jsonMode: true,
|
|
146
|
-
reasoningControls: false, // o-series models override this
|
|
147
|
-
maxContextTokens: 128_000,
|
|
148
|
-
maxOutputTokens: 16_384,
|
|
149
|
-
timeoutMs: 120_000,
|
|
150
|
-
},
|
|
151
|
-
gemini: {
|
|
152
|
-
streaming: true,
|
|
153
|
-
toolCalling: true,
|
|
154
|
-
parallelTools: true,
|
|
155
|
-
jsonMode: true,
|
|
156
|
-
reasoningControls: false,
|
|
157
|
-
maxContextTokens: 1_000_000,
|
|
158
|
-
maxOutputTokens: 8_192,
|
|
159
|
-
timeoutMs: 120_000,
|
|
160
|
-
},
|
|
161
|
-
inceptionlabs: {
|
|
162
|
-
streaming: true,
|
|
163
|
-
toolCalling: false, // mercury-2 does not support tool calling
|
|
164
|
-
parallelTools: false,
|
|
165
|
-
jsonMode: false,
|
|
166
|
-
reasoningControls: true, // mercury reasoning budget
|
|
167
|
-
maxContextTokens: 128_000,
|
|
168
|
-
maxOutputTokens: 32_000,
|
|
169
|
-
timeoutMs: 60_000,
|
|
170
|
-
},
|
|
171
|
-
openrouter: {
|
|
172
|
-
streaming: true,
|
|
173
|
-
toolCalling: true, // varies per routed model; default optimistic
|
|
174
|
-
parallelTools: true,
|
|
175
|
-
jsonMode: true,
|
|
176
|
-
reasoningControls: false,
|
|
177
|
-
maxContextTokens: 128_000,
|
|
178
|
-
maxOutputTokens: 4_096,
|
|
179
|
-
timeoutMs: 120_000,
|
|
180
|
-
},
|
|
181
|
-
groq: {
|
|
182
|
-
streaming: true,
|
|
183
|
-
toolCalling: true,
|
|
184
|
-
parallelTools: false, // Groq does not support parallel tool calls
|
|
185
|
-
jsonMode: true,
|
|
186
|
-
reasoningControls: false,
|
|
187
|
-
maxContextTokens: 131_072,
|
|
188
|
-
maxOutputTokens: 8_192,
|
|
189
|
-
timeoutMs: 30_000, // Groq is very fast; short timeout appropriate
|
|
190
|
-
},
|
|
191
|
-
cerebras: {
|
|
192
|
-
streaming: true,
|
|
193
|
-
toolCalling: true,
|
|
194
|
-
parallelTools: false,
|
|
195
|
-
jsonMode: true,
|
|
196
|
-
reasoningControls: false,
|
|
197
|
-
maxContextTokens: 128_000,
|
|
198
|
-
maxOutputTokens: 8_192,
|
|
199
|
-
timeoutMs: 30_000,
|
|
200
|
-
},
|
|
201
|
-
mistral: {
|
|
202
|
-
streaming: true,
|
|
203
|
-
toolCalling: true,
|
|
204
|
-
parallelTools: false,
|
|
205
|
-
jsonMode: true,
|
|
206
|
-
reasoningControls: false,
|
|
207
|
-
maxContextTokens: 128_000,
|
|
208
|
-
maxOutputTokens: 4_096,
|
|
209
|
-
timeoutMs: 60_000,
|
|
210
|
-
},
|
|
211
|
-
huggingface: {
|
|
212
|
-
streaming: true,
|
|
213
|
-
toolCalling: true,
|
|
214
|
-
parallelTools: false,
|
|
215
|
-
jsonMode: false,
|
|
216
|
-
reasoningControls: false,
|
|
217
|
-
maxContextTokens: 128_000,
|
|
218
|
-
maxOutputTokens: 8_192,
|
|
219
|
-
timeoutMs: 120_000,
|
|
220
|
-
},
|
|
221
|
-
ollama: {
|
|
222
|
-
streaming: true,
|
|
223
|
-
toolCalling: true,
|
|
224
|
-
parallelTools: false,
|
|
225
|
-
jsonMode: true,
|
|
226
|
-
reasoningControls: false,
|
|
227
|
-
maxContextTokens: 32_768,
|
|
228
|
-
maxOutputTokens: 4_096,
|
|
229
|
-
timeoutMs: 300_000, // Local models may be slow
|
|
230
|
-
},
|
|
231
|
-
'ollama-cloud': {
|
|
232
|
-
streaming: true,
|
|
233
|
-
toolCalling: true,
|
|
234
|
-
parallelTools: false,
|
|
235
|
-
jsonMode: true,
|
|
236
|
-
reasoningControls: false,
|
|
237
|
-
maxContextTokens: 131_072,
|
|
238
|
-
maxOutputTokens: 8_192,
|
|
239
|
-
timeoutMs: 120_000,
|
|
240
|
-
},
|
|
241
|
-
aihubmix: {
|
|
242
|
-
streaming: true,
|
|
243
|
-
toolCalling: true,
|
|
244
|
-
parallelTools: true,
|
|
245
|
-
jsonMode: true,
|
|
246
|
-
reasoningControls: false,
|
|
247
|
-
maxContextTokens: 128_000,
|
|
248
|
-
maxOutputTokens: 8_192,
|
|
249
|
-
timeoutMs: 120_000,
|
|
250
|
-
},
|
|
251
|
-
deepseek: {
|
|
252
|
-
streaming: true,
|
|
253
|
-
toolCalling: true,
|
|
254
|
-
parallelTools: false,
|
|
255
|
-
jsonMode: true,
|
|
256
|
-
reasoningControls: false,
|
|
257
|
-
maxContextTokens: 128_000,
|
|
258
|
-
maxOutputTokens: 8_192,
|
|
259
|
-
timeoutMs: 120_000,
|
|
260
|
-
},
|
|
261
|
-
together: {
|
|
262
|
-
streaming: true,
|
|
263
|
-
toolCalling: true,
|
|
264
|
-
parallelTools: true,
|
|
265
|
-
jsonMode: true,
|
|
266
|
-
reasoningControls: false,
|
|
267
|
-
maxContextTokens: 131_072,
|
|
268
|
-
maxOutputTokens: 8_192,
|
|
269
|
-
timeoutMs: 120_000,
|
|
270
|
-
},
|
|
271
|
-
fireworks: {
|
|
272
|
-
streaming: true,
|
|
273
|
-
toolCalling: true,
|
|
274
|
-
parallelTools: true,
|
|
275
|
-
jsonMode: true,
|
|
276
|
-
reasoningControls: false,
|
|
277
|
-
maxContextTokens: 131_072,
|
|
278
|
-
maxOutputTokens: 8_192,
|
|
279
|
-
timeoutMs: 120_000,
|
|
280
|
-
},
|
|
281
|
-
'github-copilot': {
|
|
282
|
-
streaming: true,
|
|
283
|
-
toolCalling: true,
|
|
284
|
-
parallelTools: true,
|
|
285
|
-
jsonMode: true,
|
|
286
|
-
reasoningControls: false,
|
|
287
|
-
maxContextTokens: 128_000,
|
|
288
|
-
maxOutputTokens: 8_192,
|
|
289
|
-
timeoutMs: 120_000,
|
|
290
|
-
},
|
|
291
|
-
'amazon-bedrock': {
|
|
292
|
-
streaming: true,
|
|
293
|
-
toolCalling: true,
|
|
294
|
-
parallelTools: true,
|
|
295
|
-
jsonMode: false,
|
|
296
|
-
reasoningControls: true,
|
|
297
|
-
maxContextTokens: 200_000,
|
|
298
|
-
maxOutputTokens: 8_192,
|
|
299
|
-
timeoutMs: 120_000,
|
|
300
|
-
},
|
|
301
|
-
'amazon-bedrock-mantle': {
|
|
302
|
-
streaming: true,
|
|
303
|
-
toolCalling: true,
|
|
304
|
-
parallelTools: true,
|
|
305
|
-
jsonMode: false,
|
|
306
|
-
reasoningControls: true,
|
|
307
|
-
maxContextTokens: 200_000,
|
|
308
|
-
maxOutputTokens: 8_192,
|
|
309
|
-
timeoutMs: 120_000,
|
|
310
|
-
},
|
|
311
|
-
'anthropic-vertex': {
|
|
312
|
-
streaming: true,
|
|
313
|
-
toolCalling: true,
|
|
314
|
-
parallelTools: true,
|
|
315
|
-
jsonMode: false,
|
|
316
|
-
reasoningControls: true,
|
|
317
|
-
maxContextTokens: 200_000,
|
|
318
|
-
maxOutputTokens: 8_192,
|
|
319
|
-
timeoutMs: 120_000,
|
|
320
|
-
},
|
|
321
|
-
minimax: {
|
|
322
|
-
streaming: true,
|
|
323
|
-
toolCalling: true,
|
|
324
|
-
parallelTools: true,
|
|
325
|
-
jsonMode: false,
|
|
326
|
-
reasoningControls: true,
|
|
327
|
-
maxContextTokens: 128_000,
|
|
328
|
-
maxOutputTokens: 8_192,
|
|
329
|
-
timeoutMs: 120_000,
|
|
330
|
-
},
|
|
331
|
-
xai: {
|
|
332
|
-
streaming: true,
|
|
333
|
-
toolCalling: true,
|
|
334
|
-
parallelTools: true,
|
|
335
|
-
jsonMode: true,
|
|
336
|
-
reasoningControls: false,
|
|
337
|
-
maxContextTokens: 131_072,
|
|
338
|
-
maxOutputTokens: 8_192,
|
|
339
|
-
timeoutMs: 120_000,
|
|
340
|
-
},
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* Fallback defaults applied when a provider is not in `PROVIDER_DEFAULTS`.
|
|
345
|
-
* Intentionally conservative: no reasoning controls, modest token limits.
|
|
346
|
-
*/
|
|
347
|
-
const GLOBAL_DEFAULTS: ProviderCapability = {
|
|
348
|
-
streaming: true,
|
|
349
|
-
toolCalling: true,
|
|
350
|
-
parallelTools: false,
|
|
351
|
-
jsonMode: false,
|
|
352
|
-
reasoningControls: false,
|
|
353
|
-
maxContextTokens: 32_768,
|
|
354
|
-
maxOutputTokens: 4_096,
|
|
355
|
-
timeoutMs: 120_000,
|
|
356
|
-
caching: 'none',
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
// ---------------------------------------------------------------------------
|
|
360
|
-
// Per-model overrides
|
|
361
|
-
// ---------------------------------------------------------------------------
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Model-level capability overrides keyed by model ID.
|
|
365
|
-
* These take precedence over both provider defaults and `LLMProvider.capabilities`.
|
|
366
|
-
*/
|
|
367
|
-
const MODEL_OVERRIDES: Record<string, Partial<ProviderCapability>> = {
|
|
368
|
-
// Anthropic reasoning models
|
|
369
|
-
'claude-opus-4-5': { reasoningControls: true, maxOutputTokens: 32_000 },
|
|
370
|
-
'claude-sonnet-4-5': { reasoningControls: true, maxOutputTokens: 64_000 },
|
|
371
|
-
'claude-3-5-sonnet-20241022': { maxOutputTokens: 8_192 },
|
|
372
|
-
'claude-3-7-sonnet-20250219': { reasoningControls: true, maxOutputTokens: 64_000 },
|
|
373
|
-
// OpenAI reasoning models
|
|
374
|
-
'o1': { reasoningControls: true, jsonMode: false, maxOutputTokens: 32_768 },
|
|
375
|
-
'o1-mini': { reasoningControls: true, jsonMode: false, maxOutputTokens: 65_536 },
|
|
376
|
-
'o1-preview': { reasoningControls: true, jsonMode: false, maxOutputTokens: 32_768 },
|
|
377
|
-
'o3': { reasoningControls: true, maxOutputTokens: 100_000 },
|
|
378
|
-
'o3-mini': { reasoningControls: true, maxOutputTokens: 65_536 },
|
|
379
|
-
'o4-mini': { reasoningControls: true, maxOutputTokens: 65_536 },
|
|
380
|
-
// Mercury models (InceptionLabs)
|
|
381
|
-
'mercury-2': { toolCalling: false, parallelTools: false, reasoningControls: true, maxOutputTokens: 32_000 },
|
|
382
|
-
'mercury-edit': { toolCalling: false, parallelTools: false, reasoningControls: false, maxOutputTokens: 32_000 },
|
|
383
|
-
// Gemini large context
|
|
384
|
-
'gemini-2.5-pro': { maxContextTokens: 2_097_152, maxOutputTokens: 65_536, reasoningControls: true },
|
|
385
|
-
'gemini-2.5-flash': { maxContextTokens: 1_048_576, maxOutputTokens: 65_536, reasoningControls: true },
|
|
386
|
-
'gemini-2.0-flash': { maxContextTokens: 1_048_576, maxOutputTokens: 8_192 },
|
|
387
|
-
// Gemini 3 series
|
|
388
|
-
'gemini-3-flash-preview': { maxContextTokens: 1_048_576, maxOutputTokens: 65_536, reasoningControls: true },
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
// ---------------------------------------------------------------------------
|
|
392
|
-
// ProviderCapabilityRegistry
|
|
393
|
-
// ---------------------------------------------------------------------------
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Registry that resolves and caches capability records per provider/model,
|
|
397
|
-
* and provides explainable routing decisions.
|
|
398
|
-
*
|
|
399
|
-
* Merge order (lowest to highest priority):
|
|
400
|
-
* 1. `GLOBAL_DEFAULTS` — conservative baseline
|
|
401
|
-
* 2. `PROVIDER_DEFAULTS[providerId]` — provider-level defaults
|
|
402
|
-
* 3. `LLMProvider.capabilities` — self-declared by the provider instance
|
|
403
|
-
* 4. `MODEL_OVERRIDES` — static per-model overrides
|
|
404
|
-
*
|
|
405
|
-
* Exception: the `caching` field is always sourced from `getCacheCapability(providerId)`
|
|
406
|
-
* (falling back to `MODEL_OVERRIDES.caching` if present), so self-declared caching
|
|
407
|
-
* from `LLMProvider.capabilities` is intentionally ignored.
|
|
408
|
-
*
|
|
409
|
-
* The cache key is `${providerId}::${modelId}`. Call `invalidate()` after dynamic
|
|
410
|
-
* provider registration to avoid stale entries.
|
|
411
|
-
*/
|
|
412
|
-
export class ProviderCapabilityRegistry {
|
|
413
|
-
private readonly cache = new Map<string, ProviderCapability>();
|
|
414
|
-
|
|
415
|
-
/**
|
|
416
|
-
* Resolve the full capability record for a provider/model pair.
|
|
417
|
-
*
|
|
418
|
-
* @param providerId - The registered provider name (e.g. `'anthropic'`).
|
|
419
|
-
* @param modelId - The model ID (e.g. `'claude-opus-4-5'`).
|
|
420
|
-
* @param provider - Optional provider instance for self-declared capabilities.
|
|
421
|
-
* @returns A fully-resolved, immutable `ProviderCapability`.
|
|
422
|
-
*/
|
|
423
|
-
getCapability(
|
|
424
|
-
providerId: string,
|
|
425
|
-
modelId: string,
|
|
426
|
-
provider?: Pick<LLMProvider, 'capabilities'>,
|
|
427
|
-
): ProviderCapability {
|
|
428
|
-
const key = `${providerId}::${modelId}`;
|
|
429
|
-
const cached = this.cache.get(key);
|
|
430
|
-
if (cached) return cached;
|
|
431
|
-
|
|
432
|
-
const resolved = this._resolve(providerId, modelId, provider);
|
|
433
|
-
this.cache.set(key, resolved);
|
|
434
|
-
return resolved;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
* Invalidate all cached capability records.
|
|
439
|
-
* Call after dynamic provider registration or model discovery.
|
|
440
|
-
*/
|
|
441
|
-
invalidate(): void {
|
|
442
|
-
this.cache.clear();
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* Check whether a resolved capability record satisfies a request profile.
|
|
447
|
-
*
|
|
448
|
-
* @param capability - Resolved capability from `getCapability()`.
|
|
449
|
-
* @param request - The request profile describing requirements.
|
|
450
|
-
* @returns `true` if every requirement in the profile is satisfied.
|
|
451
|
-
*/
|
|
452
|
-
canHandle(capability: ProviderCapability, request: RequestProfile): boolean {
|
|
453
|
-
return this._collectRejections(capability, request).length === 0;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Produce a structured routing explanation for a provider/model/request triple.
|
|
458
|
-
* Always returns a complete `RouteExplanation` — never throws.
|
|
459
|
-
*
|
|
460
|
-
* @param providerId - The registered provider name.
|
|
461
|
-
* @param modelId - The model ID.
|
|
462
|
-
* @param request - The request profile.
|
|
463
|
-
* @param provider - Optional provider instance for self-declared capabilities.
|
|
464
|
-
* @returns A `RouteExplanation` with `accepted` flag, rejections, and capability.
|
|
465
|
-
*/
|
|
466
|
-
getRouteExplanation(
|
|
467
|
-
providerId: string,
|
|
468
|
-
modelId: string,
|
|
469
|
-
request: RequestProfile,
|
|
470
|
-
provider?: Pick<LLMProvider, 'capabilities'>,
|
|
471
|
-
): RouteExplanation {
|
|
472
|
-
const capability = this.getCapability(providerId, modelId, provider);
|
|
473
|
-
const rejections = this._collectRejections(capability, request);
|
|
474
|
-
|
|
475
|
-
if (rejections.length === 0) {
|
|
476
|
-
return {
|
|
477
|
-
accepted: true,
|
|
478
|
-
providerId,
|
|
479
|
-
modelId,
|
|
480
|
-
summary: `Route accepted: ${providerId}/${modelId} satisfies all request requirements.`,
|
|
481
|
-
capability,
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
const reasons = rejections.map((r) => r.reason).join('; ');
|
|
486
|
-
return {
|
|
487
|
-
accepted: false,
|
|
488
|
-
providerId,
|
|
489
|
-
modelId,
|
|
490
|
-
summary: `Route rejected: ${providerId}/${modelId} — ${reasons}`,
|
|
491
|
-
rejections,
|
|
492
|
-
capability,
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// -------------------------------------------------------------------------
|
|
497
|
-
// Private helpers
|
|
498
|
-
// -------------------------------------------------------------------------
|
|
499
|
-
|
|
500
|
-
private _resolve(
|
|
501
|
-
providerId: string,
|
|
502
|
-
modelId: string,
|
|
503
|
-
provider?: Pick<LLMProvider, 'capabilities'>,
|
|
504
|
-
): ProviderCapability {
|
|
505
|
-
const providerDefaults = PROVIDER_DEFAULTS[providerId] ?? {};
|
|
506
|
-
const selfDeclared: Partial<ProviderCapability> = provider?.capabilities ?? {};
|
|
507
|
-
const modelOverride: Partial<ProviderCapability> = MODEL_OVERRIDES[modelId] ?? {};
|
|
508
|
-
|
|
509
|
-
// Resolve caching separately via cache-capability module
|
|
510
|
-
const cacheType = getCacheCapability(providerId).type;
|
|
511
|
-
|
|
512
|
-
// Merge: GLOBAL_DEFAULTS < provider defaults < self-declared < model overrides
|
|
513
|
-
return Object.freeze({
|
|
514
|
-
...GLOBAL_DEFAULTS,
|
|
515
|
-
...providerDefaults,
|
|
516
|
-
...selfDeclared,
|
|
517
|
-
...modelOverride,
|
|
518
|
-
// caching always derived from getCacheCapability; not overridable via selfDeclared
|
|
519
|
-
// but can be overridden by MODEL_OVERRIDES if a future model has different caching
|
|
520
|
-
caching: modelOverride.caching ?? cacheType,
|
|
521
|
-
});
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
private _collectRejections(
|
|
525
|
-
capability: ProviderCapability,
|
|
526
|
-
request: RequestProfile,
|
|
527
|
-
): RouteRejectionDetail[] {
|
|
528
|
-
const rejections: RouteRejectionDetail[] = [];
|
|
529
|
-
|
|
530
|
-
if (request.requiresStreaming === true && !capability.streaming) {
|
|
531
|
-
rejections.push({
|
|
532
|
-
code: RouteRejectionCode.NO_STREAMING,
|
|
533
|
-
reason: 'Provider does not support streaming responses',
|
|
534
|
-
actual: capability.streaming,
|
|
535
|
-
required: true,
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
if (request.requiresToolCalling === true && !capability.toolCalling) {
|
|
540
|
-
rejections.push({
|
|
541
|
-
code: RouteRejectionCode.NO_TOOL_CALLING,
|
|
542
|
-
reason: 'Model does not support tool/function calling',
|
|
543
|
-
actual: capability.toolCalling,
|
|
544
|
-
required: true,
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
if (request.requiresParallelTools === true && !capability.parallelTools) {
|
|
549
|
-
rejections.push({
|
|
550
|
-
code: RouteRejectionCode.NO_PARALLEL_TOOLS,
|
|
551
|
-
reason: 'Model does not support parallel tool execution',
|
|
552
|
-
actual: capability.parallelTools,
|
|
553
|
-
required: true,
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
if (request.requiresJsonMode === true && !capability.jsonMode) {
|
|
558
|
-
rejections.push({
|
|
559
|
-
code: RouteRejectionCode.NO_JSON_MODE,
|
|
560
|
-
reason: 'Provider does not support JSON mode / structured output',
|
|
561
|
-
actual: capability.jsonMode,
|
|
562
|
-
required: true,
|
|
563
|
-
});
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
if (request.requiresReasoningControls === true && !capability.reasoningControls) {
|
|
567
|
-
rejections.push({
|
|
568
|
-
code: RouteRejectionCode.NO_REASONING_CONTROLS,
|
|
569
|
-
reason: 'Model does not expose reasoning effort or budget controls',
|
|
570
|
-
actual: capability.reasoningControls,
|
|
571
|
-
required: true,
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
if (
|
|
576
|
-
request.minContextTokens !== undefined &&
|
|
577
|
-
capability.maxContextTokens < request.minContextTokens
|
|
578
|
-
) {
|
|
579
|
-
rejections.push({
|
|
580
|
-
code: RouteRejectionCode.CONTEXT_TOO_SMALL,
|
|
581
|
-
reason: `Context window (${capability.maxContextTokens.toLocaleString()} tokens) is smaller than the required minimum (${request.minContextTokens.toLocaleString()} tokens)`,
|
|
582
|
-
actual: capability.maxContextTokens,
|
|
583
|
-
required: request.minContextTokens,
|
|
584
|
-
});
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
if (
|
|
588
|
-
request.minOutputTokens !== undefined &&
|
|
589
|
-
capability.maxOutputTokens < request.minOutputTokens
|
|
590
|
-
) {
|
|
591
|
-
rejections.push({
|
|
592
|
-
code: RouteRejectionCode.OUTPUT_TOO_SMALL,
|
|
593
|
-
reason: `Output capacity (${capability.maxOutputTokens.toLocaleString()} tokens) is smaller than the required minimum (${request.minOutputTokens.toLocaleString()} tokens)`,
|
|
594
|
-
actual: capability.maxOutputTokens,
|
|
595
|
-
required: request.minOutputTokens,
|
|
596
|
-
});
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
return rejections;
|
|
600
|
-
}
|
|
601
|
-
}
|
|
1
|
+
export * from '@pellux/goodvibes-sdk/platform/providers/capabilities';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as fsPromises from 'fs/promises';
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import type { RuntimeEventBus } from '
|
|
5
|
-
import { emitProviderWarning } from '
|
|
6
|
-
import { OpenAICompatProvider } from '
|
|
7
|
-
import { AnthropicCompatProvider } from '
|
|
8
|
-
import type { LLMProvider } from '
|
|
9
|
-
import type { ModelDefinition } from '
|
|
4
|
+
import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
5
|
+
import { emitProviderWarning } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
|
|
6
|
+
import { OpenAICompatProvider } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
|
|
7
|
+
import { AnthropicCompatProvider } from '@pellux/goodvibes-sdk/platform/providers/anthropic-compat';
|
|
8
|
+
import type { LLMProvider } from '@pellux/goodvibes-sdk/platform/providers/interface';
|
|
9
|
+
import type { ModelDefinition } from '@pellux/goodvibes-sdk/platform/providers/registry';
|
|
10
10
|
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
11
11
|
import {
|
|
12
12
|
LocalContextIngestionService,
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
super(opts);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class VLLMProvider extends DiscoveredCompatProvider {}
|
|
13
|
-
|
|
14
|
-
export class LlamaCppProvider extends DiscoveredCompatProvider {}
|
|
15
|
-
|
|
16
|
-
export class TGIProvider extends DiscoveredCompatProvider {}
|
|
17
|
-
|
|
18
|
-
export class LocalAIProvider extends DiscoveredCompatProvider {}
|
|
1
|
+
export type { DiscoveredCompatOptions } from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
|
|
2
|
+
export {
|
|
3
|
+
LocalAIProvider,
|
|
4
|
+
LlamaCppProvider,
|
|
5
|
+
TGIProvider,
|
|
6
|
+
VLLMProvider,
|
|
7
|
+
} from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { DiscoveredServer } from '@pellux/goodvibes-sdk/platform/discovery/scanner';
|
|
2
|
-
import type { LLMProvider } from '
|
|
3
|
-
import { getDiscoveredTraits } from '
|
|
4
|
-
import { LocalAIProvider, TGIProvider, VLLMProvider } from '
|
|
5
|
-
import { LlamaCppProvider } from '
|
|
6
|
-
import { LMStudioProvider } from '
|
|
7
|
-
import { OpenAICompatProvider } from '
|
|
8
|
-
import { OllamaProvider } from '
|
|
2
|
+
import type { LLMProvider } from '@pellux/goodvibes-sdk/platform/providers/interface';
|
|
3
|
+
import { getDiscoveredTraits } from '@pellux/goodvibes-sdk/platform/providers/discovered-traits';
|
|
4
|
+
import { LocalAIProvider, TGIProvider, VLLMProvider } from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
|
|
5
|
+
import { LlamaCppProvider } from '@pellux/goodvibes-sdk/platform/providers/llama-cpp';
|
|
6
|
+
import { LMStudioProvider } from '@pellux/goodvibes-sdk/platform/providers/lm-studio';
|
|
7
|
+
import { OpenAICompatProvider } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
|
|
8
|
+
import { OllamaProvider } from '@pellux/goodvibes-sdk/platform/providers/ollama';
|
|
9
9
|
|
|
10
10
|
export function createDiscoveredProvider(server: DiscoveredServer): LLMProvider {
|
|
11
11
|
const traits = getDiscoveredTraits(server.serverType);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ServerType } from '@pellux/goodvibes-sdk/platform/discovery/scanner';
|
|
2
|
-
import type { ProviderCapability } from '
|
|
2
|
+
import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
|
|
3
3
|
|
|
4
4
|
export interface DiscoveredServerTraits {
|
|
5
5
|
readonly adapter:
|