agent-nuvira 2.7.2 → 3.0.0
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/dist/agents/agents/writer-tool-calling.d.ts +14 -0
- package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
- package/dist/agents/agents/writer-tool-calling.js +20 -0
- package/dist/agents/agents/writer-tool-calling.js.map +1 -1
- package/dist/agents/agents/writer.d.ts.map +1 -1
- package/dist/agents/agents/writer.js +15 -4
- package/dist/agents/agents/writer.js.map +1 -1
- package/dist/agents/edit-module.d.ts +7 -0
- package/dist/agents/edit-module.d.ts.map +1 -1
- package/dist/agents/edit-module.js +21 -6
- package/dist/agents/edit-module.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +40 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +116 -27
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/agents/tool-calling-agent.d.ts +19 -0
- package/dist/agents/tool-calling-agent.d.ts.map +1 -1
- package/dist/agents/tool-calling-agent.js +42 -2
- package/dist/agents/tool-calling-agent.js.map +1 -1
- package/dist/auth-api.d.ts +2 -0
- package/dist/auth-api.d.ts.map +1 -0
- package/dist/auth-api.js +61 -0
- package/dist/auth-api.js.map +1 -0
- package/dist/auth.test.d.ts +1 -0
- package/dist/auth.test.d.ts.map +1 -0
- package/dist/auth.test.js +3 -0
- package/dist/auth.test.js.map +1 -0
- package/dist/cli/chat.d.ts +66 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +323 -77
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts +6 -0
- package/dist/cli/cli-program.d.ts.map +1 -0
- package/dist/cli/cli-program.js +222 -0
- package/dist/cli/cli-program.js.map +1 -0
- package/dist/cli/edit.d.ts.map +1 -1
- package/dist/cli/edit.js +18 -3
- package/dist/cli/edit.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +29 -5
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/failover-runner.d.ts +13 -0
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +11 -0
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/gateway.d.ts +16 -0
- package/dist/cli/gateway.d.ts.map +1 -1
- package/dist/cli/gateway.js +108 -2
- package/dist/cli/gateway.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +296 -20
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +20 -6
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/process-control.d.ts +10 -0
- package/dist/cli/process-control.d.ts.map +1 -1
- package/dist/cli/process-control.js +73 -7
- package/dist/cli/process-control.js.map +1 -1
- package/dist/cli/router.d.ts +16 -5
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +31 -206
- package/dist/cli/router.js.map +1 -1
- package/dist/config/paths.d.ts +23 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +30 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/provider-env.d.ts +37 -0
- package/dist/config/provider-env.d.ts.map +1 -0
- package/dist/config/provider-env.js +86 -0
- package/dist/config/provider-env.js.map +1 -0
- package/dist/context/history.d.ts.map +1 -1
- package/dist/context/history.js +24 -8
- package/dist/context/history.js.map +1 -1
- package/dist/context/session-recall.d.ts +30 -0
- package/dist/context/session-recall.d.ts.map +1 -1
- package/dist/context/session-recall.js +61 -0
- package/dist/context/session-recall.js.map +1 -1
- package/dist/file.js +0 -1
- package/dist/file.js.map +1 -1
- package/dist/gateway/adapters.d.ts +10 -0
- package/dist/gateway/adapters.d.ts.map +1 -1
- package/dist/gateway/adapters.js +4 -1
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/dedup.d.ts +105 -0
- package/dist/gateway/dedup.d.ts.map +1 -0
- package/dist/gateway/dedup.js +160 -0
- package/dist/gateway/dedup.js.map +1 -0
- package/dist/gateway/heartbeat.d.ts +99 -0
- package/dist/gateway/heartbeat.d.ts.map +1 -0
- package/dist/gateway/heartbeat.js +122 -0
- package/dist/gateway/heartbeat.js.map +1 -0
- package/dist/gateway/inbox.d.ts +14 -1
- package/dist/gateway/inbox.d.ts.map +1 -1
- package/dist/gateway/inbox.js.map +1 -1
- package/dist/gateway/platform-config.d.ts +5 -0
- package/dist/gateway/platform-config.d.ts.map +1 -1
- package/dist/gateway/platform-config.js +8 -13
- package/dist/gateway/platform-config.js.map +1 -1
- package/dist/gateway/registry.d.ts +65 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +307 -32
- package/dist/gateway/registry.js.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.js +64 -1
- package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
- package/dist/gateway/whatsapp/bridge.d.ts +4 -2
- package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/bridge.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inference/factory.d.ts +16 -0
- package/dist/inference/factory.d.ts.map +1 -1
- package/dist/inference/factory.js +42 -0
- package/dist/inference/factory.js.map +1 -1
- package/dist/inference/gemini-adapter.d.ts.map +1 -1
- package/dist/inference/gemini-adapter.js +3 -0
- package/dist/inference/gemini-adapter.js.map +1 -1
- package/dist/inference/interface.d.ts +12 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/local-adapter.d.ts +2 -0
- package/dist/inference/local-adapter.d.ts.map +1 -1
- package/dist/inference/local-adapter.js +36 -5
- package/dist/inference/local-adapter.js.map +1 -1
- package/dist/inference/model-catalog.d.ts +8 -0
- package/dist/inference/model-catalog.d.ts.map +1 -1
- package/dist/inference/model-catalog.js +40 -0
- package/dist/inference/model-catalog.js.map +1 -1
- package/dist/inference/model-probe.d.ts +7 -0
- package/dist/inference/model-probe.d.ts.map +1 -1
- package/dist/inference/model-probe.js +25 -7
- package/dist/inference/model-probe.js.map +1 -1
- package/dist/inference/native-tools.d.ts +8 -0
- package/dist/inference/native-tools.d.ts.map +1 -1
- package/dist/inference/native-tools.js +14 -3
- package/dist/inference/native-tools.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts +66 -7
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +134 -13
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/learning/auto-router.d.ts +21 -0
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +282 -21
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/context-budget.d.ts +133 -0
- package/dist/learning/context-budget.d.ts.map +1 -0
- package/dist/learning/context-budget.js +196 -0
- package/dist/learning/context-budget.js.map +1 -0
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +20 -8
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/eval-framework.d.ts.map +1 -1
- package/dist/learning/eval-framework.js +6 -2
- package/dist/learning/eval-framework.js.map +1 -1
- package/dist/learning/failure-bookkeeping.d.ts +41 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +122 -4
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/feedback.d.ts.map +1 -1
- package/dist/learning/feedback.js +19 -8
- package/dist/learning/feedback.js.map +1 -1
- package/dist/learning/model-first-router.d.ts.map +1 -1
- package/dist/learning/model-first-router.js +5 -11
- package/dist/learning/model-first-router.js.map +1 -1
- package/dist/learning/model-harness.d.ts +76 -0
- package/dist/learning/model-harness.d.ts.map +1 -0
- package/dist/learning/model-harness.js +119 -0
- package/dist/learning/model-harness.js.map +1 -0
- package/dist/learning/model-registry.d.ts +29 -0
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +129 -3
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/model-scoring.d.ts.map +1 -1
- package/dist/learning/model-scoring.js +6 -1
- package/dist/learning/model-scoring.js.map +1 -1
- package/dist/learning/model-selection.d.ts +15 -0
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +40 -1
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/provider-fallback.d.ts +12 -0
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +84 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/provider-revival.d.ts +106 -0
- package/dist/learning/provider-revival.d.ts.map +1 -0
- package/dist/learning/provider-revival.js +154 -0
- package/dist/learning/provider-revival.js.map +1 -0
- package/dist/learning/quota-ledger.d.ts +64 -3
- package/dist/learning/quota-ledger.d.ts.map +1 -1
- package/dist/learning/quota-ledger.js +122 -9
- package/dist/learning/quota-ledger.js.map +1 -1
- package/dist/learning/resilient-call.d.ts +98 -0
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +252 -46
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/nlu/conversation-gate.d.ts +37 -0
- package/dist/nlu/conversation-gate.d.ts.map +1 -1
- package/dist/nlu/conversation-gate.js +49 -0
- package/dist/nlu/conversation-gate.js.map +1 -1
- package/dist/nlu/schema.d.ts +4 -4
- package/dist/observability/dag-bridge.d.ts +69 -0
- package/dist/observability/dag-bridge.d.ts.map +1 -0
- package/dist/observability/dag-bridge.js +56 -0
- package/dist/observability/dag-bridge.js.map +1 -0
- package/dist/observability/event-bus.d.ts +5 -10
- package/dist/observability/event-bus.d.ts.map +1 -1
- package/dist/observability/event-bus.js +10 -42
- package/dist/observability/event-bus.js.map +1 -1
- package/dist/routes/auth.d.ts +3 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +41 -36
- package/dist/routes/auth.js.map +1 -0
- package/dist/skills/execution-audit.d.ts.map +1 -1
- package/dist/skills/execution-audit.js +17 -5
- package/dist/skills/execution-audit.js.map +1 -1
- package/dist/skills/sandbox-executor.d.ts +12 -1
- package/dist/skills/sandbox-executor.d.ts.map +1 -1
- package/dist/skills/sandbox-executor.js +28 -6
- package/dist/skills/sandbox-executor.js.map +1 -1
- package/dist/skills/secret-capture.d.ts +45 -1
- package/dist/skills/secret-capture.d.ts.map +1 -1
- package/dist/skills/secret-capture.js +82 -19
- package/dist/skills/secret-capture.js.map +1 -1
- package/dist/skills/skill-env-inventory.d.ts +79 -0
- package/dist/skills/skill-env-inventory.d.ts.map +1 -0
- package/dist/skills/skill-env-inventory.js +167 -0
- package/dist/skills/skill-env-inventory.js.map +1 -0
- package/dist/skills/skill-executor.d.ts +2 -0
- package/dist/skills/skill-executor.d.ts.map +1 -1
- package/dist/skills/skill-executor.js +19 -24
- package/dist/skills/skill-executor.js.map +1 -1
- package/dist/tools/ask-user.d.ts +14 -1
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +25 -1
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/followup-utils.d.ts +64 -0
- package/dist/tools/followup-utils.d.ts.map +1 -0
- package/dist/tools/followup-utils.js +158 -0
- package/dist/tools/followup-utils.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +35 -0
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +76 -0
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +8 -3
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +25 -12
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +31 -6
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/skill-tool.d.ts.map +1 -1
- package/dist/tools/skill-tool.js +52 -5
- package/dist/tools/skill-tool.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +63 -1
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +305 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/toolsets.d.ts +19 -3
- package/dist/tools/toolsets.d.ts.map +1 -1
- package/dist/tools/toolsets.js +21 -5
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +9 -13
- package/dist/utils/env.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts +13 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +16 -2
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/hub-data.d.ts +2 -0
- package/dist/web-dashboard/hub-data.d.ts.map +1 -1
- package/dist/web-dashboard/hub-data.js +4 -0
- package/dist/web-dashboard/hub-data.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +6 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +196 -3
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +31 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +11 -1
- package/src/web-dashboard/public/assets/index-56yPnN_m.js +207 -0
- package/src/web-dashboard/public/assets/index-56yPnN_m.js.map +1 -0
- package/src/web-dashboard/public/assets/{index-C507EUWf.css → index-Cyd6tIew.css} +1 -1
- package/src/web-dashboard/public/index.html +2 -2
- package/dist/example.d.ts +0 -1
- package/dist/example.d.ts.map +0 -1
- package/dist/example.js +0 -3
- package/dist/example.js.map +0 -1
- package/dist/fresh.d.ts +0 -2
- package/dist/fresh.d.ts.map +0 -1
- package/dist/fresh.js +0 -2
- package/dist/fresh.js.map +0 -1
- package/dist/mcp/mcp-dashboard-oauth.d.ts +0 -94
- package/dist/mcp/mcp-dashboard-oauth.d.ts.map +0 -1
- package/dist/mcp/mcp-dashboard-oauth.js +0 -140
- package/dist/mcp/mcp-dashboard-oauth.js.map +0 -1
- package/dist/memory/background-sync.d.ts +0 -107
- package/dist/memory/background-sync.d.ts.map +0 -1
- package/dist/memory/background-sync.js +0 -242
- package/dist/memory/background-sync.js.map +0 -1
- package/dist/memory/cross-session.d.ts +0 -68
- package/dist/memory/cross-session.d.ts.map +0 -1
- package/dist/memory/cross-session.js +0 -153
- package/dist/memory/cross-session.js.map +0 -1
- package/dist/memory/drift-detector.d.ts +0 -76
- package/dist/memory/drift-detector.d.ts.map +0 -1
- package/dist/memory/drift-detector.js +0 -216
- package/dist/memory/drift-detector.js.map +0 -1
- package/dist/memory/enhanced-manager.d.ts +0 -105
- package/dist/memory/enhanced-manager.d.ts.map +0 -1
- package/dist/memory/enhanced-manager.js +0 -280
- package/dist/memory/enhanced-manager.js.map +0 -1
- package/dist/memory/session-extraction.d.ts +0 -93
- package/dist/memory/session-extraction.d.ts.map +0 -1
- package/dist/memory/session-extraction.js +0 -290
- package/dist/memory/session-extraction.js.map +0 -1
- package/dist/memory/sqlite-store.d.ts +0 -208
- package/dist/memory/sqlite-store.d.ts.map +0 -1
- package/dist/memory/sqlite-store.js +0 -556
- package/dist/memory/sqlite-store.js.map +0 -1
- package/dist/skills/daytona-executor.d.ts +0 -78
- package/dist/skills/daytona-executor.d.ts.map +0 -1
- package/dist/skills/daytona-executor.js +0 -256
- package/dist/skills/daytona-executor.js.map +0 -1
- package/dist/skills/modal-executor.d.ts +0 -81
- package/dist/skills/modal-executor.d.ts.map +0 -1
- package/dist/skills/modal-executor.js +0 -285
- package/dist/skills/modal-executor.js.map +0 -1
- package/dist/sync/inventory.d.ts +0 -1
- package/dist/sync/inventory.d.ts.map +0 -1
- package/dist/sync/inventory.js +0 -3
- package/dist/sync/inventory.js.map +0 -1
- package/dist/sync/validate.d.ts +0 -1
- package/dist/sync/validate.d.ts.map +0 -1
- package/dist/sync/validate.js +0 -3
- package/dist/sync/validate.js.map +0 -1
- package/dist/test.d.ts +0 -2
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -3
- package/dist/test.js.map +0 -1
- package/dist/tools/browser-tool.d.ts +0 -206
- package/dist/tools/browser-tool.d.ts.map +0 -1
- package/dist/tools/browser-tool.js +0 -726
- package/dist/tools/browser-tool.js.map +0 -1
- package/dist/tools/delegate-tool.d.ts +0 -109
- package/dist/tools/delegate-tool.d.ts.map +0 -1
- package/dist/tools/delegate-tool.js +0 -185
- package/dist/tools/delegate-tool.js.map +0 -1
- package/dist/tools/delegation-state.d.ts +0 -87
- package/dist/tools/delegation-state.d.ts.map +0 -1
- package/dist/tools/delegation-state.js +0 -278
- package/dist/tools/delegation-state.js.map +0 -1
- package/dist/tools/desktop-ui.d.ts +0 -148
- package/dist/tools/desktop-ui.d.ts.map +0 -1
- package/dist/tools/desktop-ui.js +0 -486
- package/dist/tools/desktop-ui.js.map +0 -1
- package/dist/tools/image-video-tool.d.ts +0 -88
- package/dist/tools/image-video-tool.d.ts.map +0 -1
- package/dist/tools/image-video-tool.js +0 -276
- package/dist/tools/image-video-tool.js.map +0 -1
- package/dist/tools/kanban-cron-tools.d.ts +0 -92
- package/dist/tools/kanban-cron-tools.d.ts.map +0 -1
- package/dist/tools/kanban-cron-tools.js +0 -197
- package/dist/tools/kanban-cron-tools.js.map +0 -1
- package/dist/tools/messaging-tool.d.ts +0 -127
- package/dist/tools/messaging-tool.d.ts.map +0 -1
- package/dist/tools/messaging-tool.js +0 -314
- package/dist/tools/messaging-tool.js.map +0 -1
- package/dist/tools/modality/generic-caller.d.ts +0 -43
- package/dist/tools/modality/generic-caller.d.ts.map +0 -1
- package/dist/tools/modality/generic-caller.js +0 -254
- package/dist/tools/modality/generic-caller.js.map +0 -1
- package/dist/tools/modality/modality-catalog.d.ts +0 -134
- package/dist/tools/modality/modality-catalog.d.ts.map +0 -1
- package/dist/tools/modality/modality-catalog.js +0 -445
- package/dist/tools/modality/modality-catalog.js.map +0 -1
- package/dist/tools/modality/tool-router.d.ts +0 -81
- package/dist/tools/modality/tool-router.d.ts.map +0 -1
- package/dist/tools/modality/tool-router.js +0 -84
- package/dist/tools/modality/tool-router.js.map +0 -1
- package/dist/tools/security-tools.d.ts +0 -107
- package/dist/tools/security-tools.d.ts.map +0 -1
- package/dist/tools/security-tools.js +0 -264
- package/dist/tools/security-tools.js.map +0 -1
- package/dist/tools/ssh-tool.d.ts +0 -130
- package/dist/tools/ssh-tool.d.ts.map +0 -1
- package/dist/tools/ssh-tool.js +0 -328
- package/dist/tools/ssh-tool.js.map +0 -1
- package/dist/tools/tts-tool.d.ts +0 -91
- package/dist/tools/tts-tool.d.ts.map +0 -1
- package/dist/tools/tts-tool.js +0 -406
- package/dist/tools/tts-tool.js.map +0 -1
- package/dist/utils/shell-detection.d.ts +0 -124
- package/dist/utils/shell-detection.d.ts.map +0 -1
- package/dist/utils/shell-detection.js +0 -305
- package/dist/utils/shell-detection.js.map +0 -1
- package/dist/utils/windows-paths.d.ts +0 -185
- package/dist/utils/windows-paths.d.ts.map +0 -1
- package/dist/utils/windows-paths.js +0 -472
- package/dist/utils/windows-paths.js.map +0 -1
- package/src/web-dashboard/public/assets/index-C4frng1Q.js +0 -207
- package/src/web-dashboard/public/assets/index-C4frng1Q.js.map +0 -1
|
@@ -25,16 +25,28 @@
|
|
|
25
25
|
* - Chat: replace buildToolCallModel's tryGenerate with resilient wrapper
|
|
26
26
|
* - Tools: ctx.callLLM is already resilient (inherited from orchestrator)
|
|
27
27
|
*/
|
|
28
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
29
|
+
import { join } from 'node:path';
|
|
30
|
+
import { resolveNuviraConfigDir, resolveNuviraDataPath } from '../config/paths.js';
|
|
28
31
|
import { getAutoRouter } from './auto-router.js';
|
|
29
32
|
import { analyzeComplexity } from './hybrid-router.js';
|
|
30
33
|
import { buildAutoResolveOptions } from './resolve-options.js';
|
|
34
|
+
import { buildModelCandidates, buildTieredFailoverChain } from './model-first-router.js';
|
|
35
|
+
import { recordModelUsage } from './model-warmup.js';
|
|
36
|
+
import { resolveWorkingModel } from '../inference/model-validator.js';
|
|
37
|
+
import { getDefaultModel } from '../inference/provider-catalog.js';
|
|
31
38
|
import { getModelRegistry } from './model-registry.js';
|
|
32
39
|
import { recordActionFailure } from './failure-bookkeeping.js';
|
|
40
|
+
import { sweepTransientFailures } from './provider-revival.js';
|
|
33
41
|
import { getProviderFallback, recordRegistrySuccess } from './provider-fallback.js';
|
|
34
42
|
import { ProviderFactory } from '../inference/factory.js';
|
|
35
43
|
import { recordRoutingDecision } from './routing-history.js';
|
|
36
44
|
import { EventNames, getEventBus } from '../observability/event-bus.js';
|
|
37
45
|
import { logger } from '../utils/logger.js';
|
|
46
|
+
/** Key for a model-scoped exclusion / persisted failure. */
|
|
47
|
+
function modelKey(provider, model) {
|
|
48
|
+
return `${provider}|${model}`;
|
|
49
|
+
}
|
|
38
50
|
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
39
51
|
/** How long a provider is excluded after an auth failure (whole session). */
|
|
40
52
|
const AUTH_FAILURE_EXCLUSION_MS = Number.MAX_SAFE_INTEGER;
|
|
@@ -79,10 +91,11 @@ function exclusionDuration(kind) {
|
|
|
79
91
|
}
|
|
80
92
|
function loadPersistedFailures() {
|
|
81
93
|
try {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
// Resolved through the active config dir (`$NUVIRA_CONFIG_DIR` aware) — a
|
|
95
|
+
// hardcoded `~/.nuvira` here made an isolated process inherit (and mutate)
|
|
96
|
+
// the real profile's exclusions, so a cooldown earned by a live run
|
|
97
|
+
// silently suppressed models inside tests and sandboxes.
|
|
98
|
+
const path = resolveNuviraDataPath(FAILURE_PERSIST_PATH);
|
|
86
99
|
if (!existsSync(path))
|
|
87
100
|
return {};
|
|
88
101
|
const raw = readFileSync(path, 'utf-8');
|
|
@@ -99,17 +112,21 @@ function loadPersistedFailures() {
|
|
|
99
112
|
return {};
|
|
100
113
|
}
|
|
101
114
|
}
|
|
102
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Persist a failure for cross-pipeline memory. When the failing MODEL is known
|
|
117
|
+
* the entry is keyed `provider|model` so a sibling model on the same provider
|
|
118
|
+
* is still routable in the next process; without a model it stays
|
|
119
|
+
* provider-wide (the legacy, honest answer).
|
|
120
|
+
*/
|
|
121
|
+
function persistFailure(provider, kind, model) {
|
|
103
122
|
try {
|
|
104
|
-
const
|
|
105
|
-
const { join } = require('node:path');
|
|
106
|
-
const { homedir } = require('node:os');
|
|
107
|
-
const dir = join(homedir(), '.nuvira');
|
|
123
|
+
const dir = resolveNuviraConfigDir();
|
|
108
124
|
if (!existsSync(dir))
|
|
109
125
|
mkdirSync(dir, { recursive: true });
|
|
110
126
|
const path = join(dir, FAILURE_PERSIST_PATH);
|
|
111
127
|
const existing = loadPersistedFailures();
|
|
112
|
-
|
|
128
|
+
const key = model && model !== 'default' ? modelKey(provider, model) : provider;
|
|
129
|
+
existing[key] = {
|
|
113
130
|
expiresAt: Date.now() + exclusionDuration(kind),
|
|
114
131
|
kind,
|
|
115
132
|
recordedAt: Date.now(),
|
|
@@ -148,11 +165,19 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
148
165
|
const autoRouter = getAutoRouter();
|
|
149
166
|
const state = {
|
|
150
167
|
sessionFailed: new Map(),
|
|
168
|
+
sessionFailedModels: new Map(),
|
|
151
169
|
currentAttempt: 0,
|
|
152
170
|
currentProvider: '',
|
|
153
171
|
currentModel: '',
|
|
154
172
|
exhausted: false,
|
|
155
173
|
};
|
|
174
|
+
// Providers excluded by a TRANSIENT failure (server/network/timeout) during
|
|
175
|
+
// this session. Tracked separately from `state.sessionFailed` because a
|
|
176
|
+
// transient exclusion is PROVISIONAL: it is only upheld until a spot-check
|
|
177
|
+
// proves the provider is still down. The state previously allocated this
|
|
178
|
+
// marker for bookkeeping and never read it, so a provider that recovered kept
|
|
179
|
+
// being skipped for the entire task.
|
|
180
|
+
const transientProviders = new Set();
|
|
156
181
|
// Load cross-pipeline failures
|
|
157
182
|
const persistedFailures = options.crossPipelineMemory !== false ? loadPersistedFailures() : {};
|
|
158
183
|
// Initial routing decision
|
|
@@ -163,12 +188,49 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
163
188
|
}
|
|
164
189
|
// Build the ranked candidate list (all candidates, no cap)
|
|
165
190
|
// Pass task description + complexity for model-first failover
|
|
166
|
-
const allCandidates =
|
|
191
|
+
const allCandidates = buildDeepFailoverPool(initialDecision, {
|
|
192
|
+
taskDescription: options.task.description,
|
|
193
|
+
complexity: options.task.complexity ? analyzeComplexity(options.task.description) : undefined,
|
|
194
|
+
configManager,
|
|
195
|
+
});
|
|
196
|
+
// ONE shared exclusion predicate (session provider-wide + session per-model +
|
|
197
|
+
// cross-pipeline persisted + registry per-entry). The session maps are read
|
|
198
|
+
// LIVE, so a failure recorded mid-walk takes effect on the next candidate.
|
|
199
|
+
const failoverFilter = createFailoverExclusionFilter({
|
|
200
|
+
sessionFailed: state.sessionFailed,
|
|
201
|
+
sessionFailedModels: state.sessionFailedModels,
|
|
202
|
+
crossPipelineMemory: options.crossPipelineMemory !== false,
|
|
203
|
+
persistedFailures,
|
|
204
|
+
});
|
|
167
205
|
// The resilient callLLM
|
|
168
206
|
const callLLM = async (prompt, inferenceOptions) => {
|
|
169
207
|
if (state.exhausted) {
|
|
170
208
|
throw new Error(`All LLM providers exhausted. No more candidates available for: ${options.task.description}`);
|
|
171
209
|
}
|
|
210
|
+
// ── Re-verify before re-admit ──────────────────────────────────────────
|
|
211
|
+
// Before choosing a candidate, give any provider excluded by a TRANSIENT
|
|
212
|
+
// failure the one-more-round the state always intended: a 1-token
|
|
213
|
+
// spot-check. Verified → back in the pool for THIS call; still down → its
|
|
214
|
+
// exclusion is re-armed. Best-effort and bounded (the sweep stops at 3
|
|
215
|
+
// probes and skips still-active exclusions without a network call).
|
|
216
|
+
try {
|
|
217
|
+
await sweepTransientFailures({
|
|
218
|
+
transientProviders: () => transientProviders,
|
|
219
|
+
isExclusionActive: (provider, now) => expiryAt(state.sessionFailed.get(provider)) > now,
|
|
220
|
+
clearProvider: (provider) => {
|
|
221
|
+
transientProviders.delete(provider);
|
|
222
|
+
state.sessionFailed.delete(provider);
|
|
223
|
+
},
|
|
224
|
+
reArmProvider: (provider, until) => {
|
|
225
|
+
state.sessionFailed.set(provider, { expiresAt: until, kind: 'unknown' });
|
|
226
|
+
transientProviders.add(provider);
|
|
227
|
+
},
|
|
228
|
+
resolveProbeModel: (provider) => autoRouter.resolveModel(provider, options.task.agentType, configManager),
|
|
229
|
+
}, configManager, { agentType: options.task.agentType });
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Best-effort — revival must never break the call.
|
|
233
|
+
}
|
|
172
234
|
// Try current provider first, then walk all candidates
|
|
173
235
|
const candidatesToTry = [
|
|
174
236
|
{ provider: state.currentProvider, model: state.currentModel, score: 1.0 },
|
|
@@ -177,26 +239,16 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
177
239
|
];
|
|
178
240
|
let lastError = null;
|
|
179
241
|
for (const candidate of candidatesToTry) {
|
|
180
|
-
//
|
|
181
|
-
|
|
242
|
+
// MODEL-scoped exclusions are honored before provider-wide ones, and the
|
|
243
|
+
// registry is checked per ENTRY: a failed or parked model rules out only
|
|
244
|
+
// itself, so the provider's other candidates in this list stay reachable
|
|
245
|
+
// (deep failover). Shared with chat/execute via the same factory.
|
|
246
|
+
if (failoverFilter(candidate.provider, candidate.model)) {
|
|
182
247
|
if (options.verbose) {
|
|
183
|
-
logger.debug(` ⏭️ ${candidate.provider} excluded — skipping`);
|
|
248
|
+
logger.debug(` ⏭️ ${candidate.provider}/${candidate.model} excluded (failure or registry) — skipping`);
|
|
184
249
|
}
|
|
185
250
|
continue;
|
|
186
251
|
}
|
|
187
|
-
// Skip registry-blocked providers
|
|
188
|
-
try {
|
|
189
|
-
const registry = getModelRegistry();
|
|
190
|
-
if (registry.getBlockedProviders().includes(candidate.provider)) {
|
|
191
|
-
if (options.verbose) {
|
|
192
|
-
logger.debug(` ⏭️ ${candidate.provider} registry-blocked — skipping`);
|
|
193
|
-
}
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
// Best-effort — registry must never break routing.
|
|
199
|
-
}
|
|
200
252
|
// Resolve the provider adapter
|
|
201
253
|
const adapter = resolveProviderAdapter(configManager, candidate.provider);
|
|
202
254
|
if (!adapter) {
|
|
@@ -231,14 +283,12 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
231
283
|
try {
|
|
232
284
|
const adapter = resolveProviderAdapter(configManager, candidate.provider);
|
|
233
285
|
if (adapter) {
|
|
234
|
-
const { resolveWorkingModel } = require('../inference/model-validator.js');
|
|
235
286
|
resolvedModel = await resolveWorkingModel(adapter, candidate.provider, resolvedModel);
|
|
236
287
|
}
|
|
237
288
|
}
|
|
238
289
|
catch {
|
|
239
290
|
// Best-effort — fall through to the catalog's curated default
|
|
240
291
|
try {
|
|
241
|
-
const { getDefaultModel } = require('../inference/provider-catalog.js');
|
|
242
292
|
resolvedModel = getDefaultModel(candidate.provider);
|
|
243
293
|
}
|
|
244
294
|
catch {
|
|
@@ -266,7 +316,6 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
266
316
|
}
|
|
267
317
|
// Record usage for warmup daemon
|
|
268
318
|
try {
|
|
269
|
-
const { recordModelUsage } = require('./model-warmup.js');
|
|
270
319
|
recordModelUsage(candidate.provider, resolvedModel);
|
|
271
320
|
}
|
|
272
321
|
catch {
|
|
@@ -293,13 +342,37 @@ export function createResilientCallLLM(configManager, options) {
|
|
|
293
342
|
// Classify and record the failure
|
|
294
343
|
const kind = classifyFailure(err);
|
|
295
344
|
const duration = exclusionDuration(kind);
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
345
|
+
// PER-MODEL EXCLUSION when the failing model is known. Excluding the
|
|
346
|
+
// whole provider here is what stopped a provider's 2nd-best model from
|
|
347
|
+
// ever being tried: one 429 on model A took models B and C with it.
|
|
348
|
+
// Only a failure that indicts the whole provider (auth: the key is
|
|
349
|
+
// dead) still records a provider-wide exclusion.
|
|
350
|
+
const failedModel = candidate.model;
|
|
351
|
+
const modelScoped = kind !== 'auth' && !!failedModel && failedModel !== 'default';
|
|
352
|
+
if (modelScoped) {
|
|
353
|
+
state.sessionFailedModels.set(modelKey(candidate.provider, failedModel), {
|
|
354
|
+
expiresAt: Date.now() + duration,
|
|
355
|
+
kind,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
state.sessionFailed.set(candidate.provider, {
|
|
360
|
+
expiresAt: Date.now() + duration,
|
|
361
|
+
kind,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
// TRANSIENT failures are PROVISIONAL: mark the provider as awaiting a
|
|
365
|
+
// spot-check so a later call re-verifies it instead of skipping it for
|
|
366
|
+
// the rest of the task. auth = the key is dead (never revives on its
|
|
367
|
+
// own), rate-limit = the provider's own reset window governs, and
|
|
368
|
+
// model-not-found is definitive for that model — none of those are
|
|
369
|
+
// helped by a probe, so they are deliberately NOT marked.
|
|
370
|
+
if (kind === 'network' || kind === 'timeout' || kind === 'unknown') {
|
|
371
|
+
transientProviders.add(candidate.provider);
|
|
372
|
+
}
|
|
300
373
|
// Persist for cross-pipeline memory
|
|
301
374
|
if (options.crossPipelineMemory !== false) {
|
|
302
|
-
persistFailure(candidate.provider, kind);
|
|
375
|
+
persistFailure(candidate.provider, kind, modelScoped ? failedModel : undefined);
|
|
303
376
|
}
|
|
304
377
|
// Record failure in shared bookkeeping
|
|
305
378
|
try {
|
|
@@ -387,10 +460,31 @@ function resolveWithExclusions(autoRouter, configManager, task, sessionFailed, p
|
|
|
387
460
|
return null;
|
|
388
461
|
}
|
|
389
462
|
}
|
|
390
|
-
|
|
463
|
+
/**
|
|
464
|
+
* Build the DEEP failover pool — the ONE candidate list every entry path walks.
|
|
465
|
+
*
|
|
466
|
+
* This used to live only here, which is why the orchestrator/tool/sub-agent path
|
|
467
|
+
* was the deepest walker and chat/execute reached strictly fewer models. It is
|
|
468
|
+
* now exported so chat, execute, the dashboard console and the gateway all walk
|
|
469
|
+
* the SAME pool:
|
|
470
|
+
*
|
|
471
|
+
* 1. the router's primary win
|
|
472
|
+
* 2. the model-first TIERED pool (same model on other providers → same tier →
|
|
473
|
+
* escalate → de-escalate → local; quota pre-checked, so every provider's
|
|
474
|
+
* siblings are reachable, not just its one pin)
|
|
475
|
+
* 3. the router's own chain — ranked alternates PLUS the reserve pool
|
|
476
|
+
* 4. any ranked provider the chain never resolved a model for
|
|
477
|
+
* 5. the config-declared fallback providers
|
|
478
|
+
*
|
|
479
|
+
* Sorted best-first. Callers layer their OWN exclusions on top (session/model
|
|
480
|
+
* cooldowns, registry blocks) — the pool itself is never filtered, so a caller
|
|
481
|
+
* that deliberately wants to reach a parked model (to let `resolveWorkingModel`
|
|
482
|
+
* repair it) still can.
|
|
483
|
+
*/
|
|
484
|
+
export function buildDeepFailoverPool(decision, opts = {}) {
|
|
391
485
|
if (!decision)
|
|
392
486
|
return [];
|
|
393
|
-
const
|
|
487
|
+
const { taskDescription, complexity, configManager } = opts;
|
|
394
488
|
const candidates = [];
|
|
395
489
|
// Primary candidate
|
|
396
490
|
candidates.push({
|
|
@@ -406,10 +500,16 @@ function buildCandidateList(decision, sessionFailed, persistedFailures, taskDesc
|
|
|
406
500
|
// 4. De-escalate to lower tier, cheaper models (pre-check quota)
|
|
407
501
|
// 5. Local model (always available, last resort)
|
|
408
502
|
// 6. Any remaining (last resort before neural response)
|
|
503
|
+
// Only the providers the ROUTER actually considered (winner + ranked) may
|
|
504
|
+
// contribute tiered candidates. `ranked` is the post-governance, credentialed
|
|
505
|
+
// set, so this keeps the pool to really-callable providers — without it the
|
|
506
|
+
// tiered layer returns the whole CATALOG and every walk pointlessly probes
|
|
507
|
+
// providers the user has no key for (measured: 23 pairs, 16 of them
|
|
508
|
+
// un-credentialed, before this restriction).
|
|
509
|
+
const allowedProviders = [...new Set([decision.provider, ...decision.ranked.map((r) => r.provider)])];
|
|
409
510
|
try {
|
|
410
|
-
const { buildModelCandidates, buildTieredFailoverChain } = require('./model-first-router.js');
|
|
411
511
|
if (taskDescription && complexity) {
|
|
412
|
-
const modelCandidates = buildModelCandidates(taskDescription, complexity, configManager);
|
|
512
|
+
const modelCandidates = buildModelCandidates(taskDescription, complexity, configManager, allowedProviders);
|
|
413
513
|
const tieredChain = buildTieredFailoverChain({ model: decision.model, provider: decision.provider, dimensions: { capabilityFit: 0.5 } }, modelCandidates);
|
|
414
514
|
// Flatten tiers into candidate list, maintaining tier order
|
|
415
515
|
for (const tier of tieredChain) {
|
|
@@ -431,11 +531,36 @@ function buildCandidateList(decision, sessionFailed, persistedFailures, taskDesc
|
|
|
431
531
|
catch {
|
|
432
532
|
// Best-effort — tiered failover must never break routing
|
|
433
533
|
}
|
|
434
|
-
//
|
|
534
|
+
// The router's OWN fallback chain — ranked alternates PLUS the RESERVE pool
|
|
535
|
+
// (credentialed providers the registry hasn't verified yet). Each entry now
|
|
536
|
+
// carries a REAL model, and there are several per provider (DEEP FAILOVER),
|
|
537
|
+
// so dedupe must be by provider × model — dedupe by provider alone is what
|
|
538
|
+
// silently dropped every alternate model and made the chain one-model-per-
|
|
539
|
+
// provider. The reserve is strictly last-resort: scored below every ranked
|
|
540
|
+
// candidate so it is only reached once the verified pool is exhausted.
|
|
541
|
+
for (const fb of decision.fallbackChain) {
|
|
542
|
+
const model = fb.model && fb.model !== 'default' ? fb.model : 'default';
|
|
543
|
+
// The primary candidate is already candidates[0].
|
|
544
|
+
if (fb.provider === decision.provider && model === decision.model)
|
|
545
|
+
continue;
|
|
546
|
+
const key = `${fb.provider}|${model}`;
|
|
547
|
+
if (candidates.some((c) => `${c.provider}|${c.model}` === key))
|
|
548
|
+
continue;
|
|
549
|
+
candidates.push({
|
|
550
|
+
provider: fb.provider,
|
|
551
|
+
model,
|
|
552
|
+
// Keep the chain's own order meaningful: the router already ranked these
|
|
553
|
+
// (primary picks before alternates, reserve last). A real model from the
|
|
554
|
+
// chain outranks a bare provider placeholder.
|
|
555
|
+
score: model === 'default' ? 0.05 : 0.5,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
// Any ranked provider still missing entirely (no chain entry resolved a
|
|
559
|
+
// model) — added LAST with the placeholder; resolveModel fills it in at call
|
|
560
|
+
// time via the per-model path.
|
|
435
561
|
for (const ranked of decision.ranked) {
|
|
436
562
|
if (ranked.provider === decision.provider)
|
|
437
563
|
continue;
|
|
438
|
-
const key = `${ranked.provider}:default`;
|
|
439
564
|
if (candidates.some(c => c.provider === ranked.provider))
|
|
440
565
|
continue;
|
|
441
566
|
candidates.push({
|
|
@@ -462,16 +587,97 @@ function buildCandidateList(decision, sessionFailed, persistedFailures, taskDesc
|
|
|
462
587
|
}
|
|
463
588
|
// Sort by score descending (best first)
|
|
464
589
|
candidates.sort((a, b) => b.score - a.score);
|
|
590
|
+
// The router's own win MUST stay first. The score-sort above compares the
|
|
591
|
+
// router's COMPOSITE score against the tiered layer's raw capability scores,
|
|
592
|
+
// and a tiered candidate can outscore the winner — which would silently
|
|
593
|
+
// override the router for every caller that walks the pool in order (chat and
|
|
594
|
+
// execute do exactly that). The router's decision is authoritative; the pool
|
|
595
|
+
// only extends failover BEYOND it.
|
|
596
|
+
const primaryIdx = candidates.findIndex((c) => c.provider === decision.provider && c.model === decision.model);
|
|
597
|
+
if (primaryIdx > 0) {
|
|
598
|
+
const [primary] = candidates.splice(primaryIdx, 1);
|
|
599
|
+
candidates.unshift(primary);
|
|
600
|
+
}
|
|
465
601
|
return candidates;
|
|
466
602
|
}
|
|
467
|
-
|
|
603
|
+
/**
|
|
604
|
+
* Expiry read from either a bare timestamp (`Map<string, number>`, the shape
|
|
605
|
+
* chat keeps) or a record with `expiresAt` (resilient-call's internal maps and
|
|
606
|
+
* the persisted-failure store). Duck-typing both shapes is what lets ONE
|
|
607
|
+
* predicate serve every entry path without an adapter allocation per call.
|
|
608
|
+
*/
|
|
609
|
+
function expiryAt(value) {
|
|
610
|
+
if (value === undefined)
|
|
611
|
+
return 0;
|
|
612
|
+
return typeof value === 'number' ? value : value.expiresAt;
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Build the ONE failover-exclusion predicate every entry path shares, so the
|
|
616
|
+
* deep walk can never drift between chat, execute, the gateway and the
|
|
617
|
+
* orchestrator.
|
|
618
|
+
*
|
|
619
|
+
* It answers exactly the question the orchestrator's walk used to answer alone:
|
|
620
|
+
* "should this provider×model be skipped?". Provider-wide AND model-scoped
|
|
621
|
+
* exclusions are honored separately — a 429 on one model rules out that model
|
|
622
|
+
* only, never its healthy siblings. Session maps are read LIVE at call time, so
|
|
623
|
+
* a failure recorded mid-walk takes effect on the very next candidate.
|
|
624
|
+
*
|
|
625
|
+
* Best-effort by construction: a registry failure never rules a candidate out.
|
|
626
|
+
*/
|
|
627
|
+
export function createFailoverExclusionFilter(opts = {}) {
|
|
628
|
+
const persisted = opts.crossPipelineMemory === false
|
|
629
|
+
? {}
|
|
630
|
+
: opts.persistedFailures ?? loadPersistedFailures();
|
|
631
|
+
const registryCheck = opts.registryCheck !== false;
|
|
632
|
+
return (provider, model) => {
|
|
633
|
+
if (isExcluded(provider, model, opts.sessionFailed, opts.sessionFailedModels, persisted)) {
|
|
634
|
+
return true;
|
|
635
|
+
}
|
|
636
|
+
return registryCheck ? isRegistryRuledOut(provider, model) : false;
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
function isExcluded(provider, model, sessionFailed, sessionFailedModels, persistedFailures) {
|
|
468
640
|
const now = Date.now();
|
|
469
|
-
|
|
470
|
-
if (
|
|
641
|
+
// Provider-wide (auth / unresolved model).
|
|
642
|
+
if (expiryAt(sessionFailed?.get(provider)) > now)
|
|
471
643
|
return true;
|
|
472
|
-
|
|
473
|
-
if (persisted && persisted.expiresAt > now)
|
|
644
|
+
if (expiryAt(persistedFailures[provider]) > now)
|
|
474
645
|
return true;
|
|
646
|
+
// Model-scoped — only this exact provider × model is ruled out.
|
|
647
|
+
if (model && model !== 'default') {
|
|
648
|
+
const key = modelKey(provider, model);
|
|
649
|
+
const modelExcl = sessionFailedModels?.get(key);
|
|
650
|
+
if (expiryAt(modelExcl) > now)
|
|
651
|
+
return true;
|
|
652
|
+
const persistedModel = persistedFailures[key];
|
|
653
|
+
if (expiryAt(persistedModel) > now)
|
|
654
|
+
return true;
|
|
655
|
+
}
|
|
475
656
|
return false;
|
|
476
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* Has the Model Availability Registry already ruled this candidate out?
|
|
660
|
+
*
|
|
661
|
+
* Model-aware on purpose: with a concrete model the check is per-ENTRY
|
|
662
|
+
* (parked/unavailable/stale → skip just that candidate), so a parked model no
|
|
663
|
+
* longer blocks its healthy siblings on the same provider. Only an unresolved
|
|
664
|
+
* ('default') model falls back to the provider-wide blocked check.
|
|
665
|
+
* Best-effort — a registry failure never rules a candidate out.
|
|
666
|
+
*/
|
|
667
|
+
function isRegistryRuledOut(provider, model) {
|
|
668
|
+
try {
|
|
669
|
+
const registry = getModelRegistry();
|
|
670
|
+
if (model && model !== 'default') {
|
|
671
|
+
// Untracked model → unproven, not ruled out: the failover chain exists
|
|
672
|
+
// precisely to reach models the registry has no data on yet.
|
|
673
|
+
if (!registry.getEntry(provider, model))
|
|
674
|
+
return false;
|
|
675
|
+
return !registry.isUsable(provider, model);
|
|
676
|
+
}
|
|
677
|
+
return registry.getBlockedProviders().includes(provider);
|
|
678
|
+
}
|
|
679
|
+
catch {
|
|
680
|
+
return false;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
477
683
|
//# sourceMappingURL=resilient-call.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilient-call.js","sourceRoot":"","sources":["../../src/learning/resilient-call.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resilient-call.js","sourceRoot":"","sources":["../../src/learning/resilient-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
* in doubt it returns false (task) so no legitimate pipeline goal is ever
|
|
31
31
|
* starved of execution.
|
|
32
32
|
*/
|
|
33
|
+
import { type ParsedRequest } from './parser.js';
|
|
33
34
|
/** True when the ask carries an unambiguous coding action (task, not question). */
|
|
34
35
|
export declare function hasCodingAction(text: string): boolean;
|
|
35
36
|
/**
|
|
@@ -43,4 +44,40 @@ export declare function hasCodingAction(text: string): boolean;
|
|
|
43
44
|
* → task).
|
|
44
45
|
*/
|
|
45
46
|
export declare function isConversationalQuestion(text: string | null | undefined): boolean;
|
|
47
|
+
/** What an ask needs: a direct answer, or the multi-agent pipeline. */
|
|
48
|
+
export type AskKind = 'chat' | 'pipeline';
|
|
49
|
+
/**
|
|
50
|
+
* THE routing decision — one function, every surface.
|
|
51
|
+
*
|
|
52
|
+
* Before this existed, each entry point re-derived the chat-vs-pipeline choice
|
|
53
|
+
* its own way and they disagreed. The gateway asked only
|
|
54
|
+
* `parseRequestSync(text).action.run`, so "how do I add JWT auth to the app?"
|
|
55
|
+
* (status: the NLU's explain rule traps it as a chat question) came back as
|
|
56
|
+
* prose instead of getting the auth added, while a pipeline-shaped ask that was
|
|
57
|
+
* really a question still burned a multi-agent run. The CLI chat path already
|
|
58
|
+
* had the fix — the gate's question check first, then the coding-action
|
|
59
|
+
* override — so the gateway now calls the same function.
|
|
60
|
+
*
|
|
61
|
+
* Order (load-bearing):
|
|
62
|
+
* 1. a genuine question → 'chat' (never create a program to "answer" it);
|
|
63
|
+
* 2. a coding verb in command position → 'pipeline' (even when the NLU
|
|
64
|
+
* misreads it as explain);
|
|
65
|
+
* 3. otherwise the NLU action map decides, defaulting to 'chat'.
|
|
66
|
+
*
|
|
67
|
+
* `parsed` may be supplied by a caller that already parsed the text (the
|
|
68
|
+
* gateway does), so this costs nothing extra on the hot path.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveAskKind(text: string | null | undefined, parsed?: ParsedRequest): AskKind;
|
|
71
|
+
/**
|
|
72
|
+
* Is this ask a LOCAL CLI COMMAND aimed at the agent itself ("run nuvira
|
|
73
|
+
* gateway status", "agent-nuvira models", "buff gateway status")?
|
|
74
|
+
*
|
|
75
|
+
* Observed live: a sender typed a diagnostic command into WhatsApp and the
|
|
76
|
+
* gateway dispatched a SIX-TASK multi-agent pipeline (because the NLU read
|
|
77
|
+
* "run …" as a create intent) that failed after 112s and wrote an approval
|
|
78
|
+
* artifact. A remote sender cannot execute a command on the operator's
|
|
79
|
+
* machine, and a coding pipeline is the worst possible answer — so this is
|
|
80
|
+
* recognised explicitly and answered with a pointer instead.
|
|
81
|
+
*/
|
|
82
|
+
export declare function looksLikeAgentCliAsk(text: string | null | undefined): boolean;
|
|
46
83
|
//# sourceMappingURL=conversation-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-gate.d.ts","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;
|
|
1
|
+
{"version":3,"file":"conversation-gate.d.ts","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AA0BnE,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAOjF;AAED,uEAAuE;AACvE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAOT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAM7E"}
|
|
@@ -79,4 +79,53 @@ export function isConversationalQuestion(text) {
|
|
|
79
79
|
const parsed = parseRequestSync(t);
|
|
80
80
|
return parsed.action.run === 'chat';
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* THE routing decision — one function, every surface.
|
|
84
|
+
*
|
|
85
|
+
* Before this existed, each entry point re-derived the chat-vs-pipeline choice
|
|
86
|
+
* its own way and they disagreed. The gateway asked only
|
|
87
|
+
* `parseRequestSync(text).action.run`, so "how do I add JWT auth to the app?"
|
|
88
|
+
* (status: the NLU's explain rule traps it as a chat question) came back as
|
|
89
|
+
* prose instead of getting the auth added, while a pipeline-shaped ask that was
|
|
90
|
+
* really a question still burned a multi-agent run. The CLI chat path already
|
|
91
|
+
* had the fix — the gate's question check first, then the coding-action
|
|
92
|
+
* override — so the gateway now calls the same function.
|
|
93
|
+
*
|
|
94
|
+
* Order (load-bearing):
|
|
95
|
+
* 1. a genuine question → 'chat' (never create a program to "answer" it);
|
|
96
|
+
* 2. a coding verb in command position → 'pipeline' (even when the NLU
|
|
97
|
+
* misreads it as explain);
|
|
98
|
+
* 3. otherwise the NLU action map decides, defaulting to 'chat'.
|
|
99
|
+
*
|
|
100
|
+
* `parsed` may be supplied by a caller that already parsed the text (the
|
|
101
|
+
* gateway does), so this costs nothing extra on the hot path.
|
|
102
|
+
*/
|
|
103
|
+
export function resolveAskKind(text, parsed) {
|
|
104
|
+
const t = String(text ?? '').trim();
|
|
105
|
+
if (!t)
|
|
106
|
+
return 'chat';
|
|
107
|
+
if (isTrivialPrompt(t))
|
|
108
|
+
return 'chat';
|
|
109
|
+
if (hasCodingAction(t))
|
|
110
|
+
return 'pipeline';
|
|
111
|
+
const p = parsed ?? parseRequestSync(t);
|
|
112
|
+
return p.action.run === 'pipeline' ? 'pipeline' : 'chat';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Is this ask a LOCAL CLI COMMAND aimed at the agent itself ("run nuvira
|
|
116
|
+
* gateway status", "agent-nuvira models", "buff gateway status")?
|
|
117
|
+
*
|
|
118
|
+
* Observed live: a sender typed a diagnostic command into WhatsApp and the
|
|
119
|
+
* gateway dispatched a SIX-TASK multi-agent pipeline (because the NLU read
|
|
120
|
+
* "run …" as a create intent) that failed after 112s and wrote an approval
|
|
121
|
+
* artifact. A remote sender cannot execute a command on the operator's
|
|
122
|
+
* machine, and a coding pipeline is the worst possible answer — so this is
|
|
123
|
+
* recognised explicitly and answered with a pointer instead.
|
|
124
|
+
*/
|
|
125
|
+
export function looksLikeAgentCliAsk(text) {
|
|
126
|
+
const t = String(text ?? '').trim();
|
|
127
|
+
if (!t)
|
|
128
|
+
return false;
|
|
129
|
+
return /(?:^|\s)(?:nuvira|agent-nuvira|buff)\s+(?:gateway|models?|status|config|contacts?|delivery|whatsapp|dashboard|traces?|leaderboard)\b/i.test(t);
|
|
130
|
+
}
|
|
82
131
|
//# sourceMappingURL=conversation-gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-gate.js","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"conversation-gate.js","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,iBAAiB,GACrB,+MAA+M,CAAC;AAElN,oFAAoF;AACpF,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,sBAAsB,iBAAiB,MAAM,EAAE,GAAG,CAAC,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,wHAAwH,iBAAiB,UAAU,EACnJ,GAAG,CACJ,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,yEAAyE;IACzE,uCAAuC;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA+B;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC;AACtC,CAAC;AAKD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA+B,EAC/B,MAAsB;IAEtB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACtB,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1C,MAAM,CAAC,GAAG,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA+B;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,uIAAuI,CAAC,IAAI,CACjJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|