agent-nuvira 2.7.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/cli/chat.d.ts +55 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +278 -72
- 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 +242 -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 +245 -12
- 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 +47 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +227 -21
- 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/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 +92 -7
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +203 -13
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +90 -5
- 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 +19 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +67 -2
- 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-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-selection.d.ts +15 -0
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +27 -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 +74 -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/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +48 -3
- 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 +2 -2
- 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/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/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +22 -1
- package/dist/tools/loop-skill-hint.js.map +1 -1
- 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 +192 -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
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, statSync } from 'node:fs';
|
|
20
20
|
import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
21
21
|
import { spawnSync } from 'node:child_process';
|
|
22
|
+
import { pushDAGUpdate, updateDAGNode, resetDAG } from '../observability/dag-bridge.js';
|
|
22
23
|
import inquirer from 'inquirer';
|
|
23
24
|
import { ProviderFactory } from '../inference/factory.js';
|
|
24
25
|
import { ConfigManager } from '../config/manager.js';
|
|
@@ -59,6 +60,8 @@ import { getModelRegistry } from '../learning/model-registry.js';
|
|
|
59
60
|
import { buildAutoResolveOptions } from '../learning/resolve-options.js';
|
|
60
61
|
import { classifyFallbackError, getProviderFallback, recordRegistrySuccess } from '../learning/provider-fallback.js';
|
|
61
62
|
import { recordActionFailure } from '../learning/failure-bookkeeping.js';
|
|
63
|
+
import { sweepTransientFailures, sessionRevivalStore } from '../learning/provider-revival.js';
|
|
64
|
+
import { resolveContextBudget, resolveContextFileBudget, resolveMaxOutputTokens } from '../learning/context-budget.js';
|
|
62
65
|
import { resolveWorkingModel } from '../inference/model-validator.js';
|
|
63
66
|
import { refreshModelRegistry } from '../inference/model-probe.js';
|
|
64
67
|
import { recordRoutingDecision } from '../learning/routing-history.js';
|
|
@@ -69,35 +72,28 @@ import { createReviewFromResult } from '../team/review.js';
|
|
|
69
72
|
import { indexFiles, retrieve, recordRetrievalStats, retrievalOptionsFromConfig, estimateTokens as retrievalEstimateTokens } from '../learning/retrieval.js';
|
|
70
73
|
// ─── DAG Integration (optional — dashboard may not be built) ─────────────────
|
|
71
74
|
/**
|
|
72
|
-
* Push a DAG update to the live dashboard, if
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
+
* Push a DAG update to the live dashboard, if one is running.
|
|
76
|
+
*
|
|
77
|
+
* These helpers used to `await import('../web-dashboard/server.js')` on first
|
|
78
|
+
* use, which dragged the entire 270 KB dashboard module into every CLI pipeline
|
|
79
|
+
* run just to mutate in-process graph state nothing could read (no dashboard =
|
|
80
|
+
* no SSE clients), and added an upward edge to the import graph. The dashboard
|
|
81
|
+
* now REGISTERS its implementation with `observability/dag-bridge.ts` when it
|
|
82
|
+
* loads, so these are cheap no-ops without a dashboard — same observable
|
|
83
|
+
* behaviour, no web module in the agent's dependency closure.
|
|
84
|
+
*
|
|
85
|
+
* Deliberately still `async`: every call site awaits them, and the ordering
|
|
86
|
+
* contract (the update lands before the step it describes completes) is what
|
|
87
|
+
* the DAG view depends on.
|
|
75
88
|
*/
|
|
76
|
-
let dagModule = undefined;
|
|
77
|
-
async function ensureDAGModule() {
|
|
78
|
-
if (dagModule !== undefined)
|
|
79
|
-
return; // already attempted (null = failed, object = loaded)
|
|
80
|
-
try {
|
|
81
|
-
dagModule = await import('../web-dashboard/server.js');
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
dagModule = null; // dashboard module not available — mark as failed
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
89
|
async function tryPushDAG(update) {
|
|
88
|
-
|
|
89
|
-
if (dagModule)
|
|
90
|
-
dagModule.pushDAGUpdate(update);
|
|
90
|
+
pushDAGUpdate(update);
|
|
91
91
|
}
|
|
92
92
|
async function tryUpdateDAGNode(nodeId, update) {
|
|
93
|
-
|
|
94
|
-
if (dagModule)
|
|
95
|
-
dagModule.updateDAGNode(nodeId, update);
|
|
93
|
+
updateDAGNode(nodeId, update);
|
|
96
94
|
}
|
|
97
95
|
async function tryResetDAG() {
|
|
98
|
-
|
|
99
|
-
if (dagModule)
|
|
100
|
-
dagModule.resetDAG();
|
|
96
|
+
resetDAG();
|
|
101
97
|
}
|
|
102
98
|
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
103
99
|
/** Valid per-subtask complexity labels (mirrors ComplexityLevel). */
|
|
@@ -119,6 +115,28 @@ function createAgent(agentType, registry) {
|
|
|
119
115
|
return null;
|
|
120
116
|
}
|
|
121
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Default for the iterative tool-calling writer/reviewer (audit W3).
|
|
120
|
+
*
|
|
121
|
+
* The one-shot writer receives the plan + gathered context and must emit the
|
|
122
|
+
* COMPLETE content of every file in a single response — it cannot read the
|
|
123
|
+
* file it is editing, so it rewrites code it has never seen, and a single
|
|
124
|
+
* malformed code fence loses the whole task. `writer-tc`/`reviewer-tc` run a
|
|
125
|
+
* prompt-based read→edit→verify loop instead, which is provider-agnostic (no
|
|
126
|
+
* native function calling required) and is the single largest capability gap
|
|
127
|
+
* between this harness and Freebuff's for every model, weak ones most of all.
|
|
128
|
+
*
|
|
129
|
+
* It is therefore ON by default; `--no-tool-calling` (CLI) or
|
|
130
|
+
* `useToolCalling: false` (API) restores the one-shot writer.
|
|
131
|
+
*/
|
|
132
|
+
export const DEFAULT_USE_TOOL_CALLING = true;
|
|
133
|
+
/**
|
|
134
|
+
* Resolve the tool-calling writer/reviewer setting from options.
|
|
135
|
+
* Exported so the default is testable without booting an orchestrator.
|
|
136
|
+
*/
|
|
137
|
+
export function resolveUseToolCalling(options) {
|
|
138
|
+
return options.useToolCalling ?? DEFAULT_USE_TOOL_CALLING;
|
|
139
|
+
}
|
|
122
140
|
export class Orchestrator {
|
|
123
141
|
configManager;
|
|
124
142
|
/** The module registry used for agent lookups */
|
|
@@ -189,6 +207,30 @@ export class Orchestrator {
|
|
|
189
207
|
sessionFailedProviders: new Map(),
|
|
190
208
|
sessionTransientFailedProviders: new Set(),
|
|
191
209
|
};
|
|
210
|
+
/**
|
|
211
|
+
* Re-verify transiently-failed providers and re-admit the ones that recovered.
|
|
212
|
+
*
|
|
213
|
+
* The pipeline allocated `failureSession.sessionTransientFailedProviders` and
|
|
214
|
+
* never read it, so the documented round-trip — "fail → cool down → prove
|
|
215
|
+
* recovery with a 1-token spot-check → route again" — only ever went ONE way
|
|
216
|
+
* here. A provider that recovered mid-run stayed excluded for the rest of the
|
|
217
|
+
* pipeline, which is how a transient 503 ended up degrading a whole run.
|
|
218
|
+
*
|
|
219
|
+
* Called once per task batch (and at pipeline entry), so recovery is discovered
|
|
220
|
+
* between tasks rather than by failing again. Cheap when nothing is pending:
|
|
221
|
+
* the sweep returns immediately on an empty transient set, and a still-active
|
|
222
|
+
* exclusion is skipped without a network call.
|
|
223
|
+
*/
|
|
224
|
+
async sweepTransientProviders(agentType = 'orchestrator') {
|
|
225
|
+
try {
|
|
226
|
+
const result = await sweepTransientFailures(sessionRevivalStore(this.failureSession), this.configManager, { agentType });
|
|
227
|
+
return result.revived;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// Best-effort — revival must never break the pipeline.
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
192
234
|
/** Execution telemetry accumulator for the current pipeline */
|
|
193
235
|
stats = {
|
|
194
236
|
llmCalls: 0,
|
|
@@ -222,6 +264,11 @@ export class Orchestrator {
|
|
|
222
264
|
}
|
|
223
265
|
/** The actual pipeline body — wrapped by execute() with a K1 runId. */
|
|
224
266
|
async executeCorrelated(goal, options = {}) {
|
|
267
|
+
// Re-admit any provider that recovered since the LAST run before the planner
|
|
268
|
+
// routes: the transient marker is session-scoped, but the registry block it
|
|
269
|
+
// pairs with persists, so a provider proven healthy in a prior run must not
|
|
270
|
+
// stay hidden from this one.
|
|
271
|
+
await this.sweepTransientProviders('planner');
|
|
225
272
|
// P0 reasoning trace: begin the per-pipeline trace so every planner,
|
|
226
273
|
// memory, and task LLM call lands in ~/.nuvira/memory/reasoning-traces.json
|
|
227
274
|
// (best-effort — a trace failure must never break the pipeline).
|
|
@@ -962,6 +1009,12 @@ export class Orchestrator {
|
|
|
962
1009
|
parallelGroup.push({ task, strategy });
|
|
963
1010
|
}
|
|
964
1011
|
}
|
|
1012
|
+
// ── Re-verify before re-admit, once per BATCH ────────────────────────
|
|
1013
|
+
// A provider that failed transiently earlier in this pipeline is only
|
|
1014
|
+
// re-admitted once a spot-check proves it is back. Re-checking per batch
|
|
1015
|
+
// (not per task) bounds the cost: a batch is already the fan-out unit, and
|
|
1016
|
+
// the sweep no-ops when no exclusion has expired.
|
|
1017
|
+
await this.sweepTransientProviders();
|
|
965
1018
|
// Mark every runnable task as running up front so the live board shows
|
|
966
1019
|
// the whole batch (and its parallel lanes) at once.
|
|
967
1020
|
for (const { task } of taskStrategies) {
|
|
@@ -1470,11 +1523,17 @@ export class Orchestrator {
|
|
|
1470
1523
|
// Best-effort — fall through to the original value if resolution fails
|
|
1471
1524
|
}
|
|
1472
1525
|
}
|
|
1526
|
+
const servedModel = isAutoModel(requestedModel) ? (config.model || requestedModel) : requestedModel;
|
|
1473
1527
|
const mergedOptions = {
|
|
1474
1528
|
...inferenceOptions,
|
|
1475
|
-
model:
|
|
1529
|
+
model: servedModel,
|
|
1476
1530
|
temperature: inferenceOptions?.temperature ?? config.temperature ?? 0.7,
|
|
1477
|
-
|
|
1531
|
+
// Output cap: explicit option → configured value → the model's real
|
|
1532
|
+
// capability. The old flat `4096` held a 200K+ model to a small-model
|
|
1533
|
+
// ceiling, so the better the model, the more of it the constant wasted.
|
|
1534
|
+
maxTokens: inferenceOptions?.maxTokens ??
|
|
1535
|
+
config.maxTokens ??
|
|
1536
|
+
resolveMaxOutputTokens({ provider: providerType, model: servedModel }),
|
|
1478
1537
|
};
|
|
1479
1538
|
// The strongest signal the provider×model is NOT usable: a real call
|
|
1480
1539
|
// failed. Feed the SHARED registry telemetry path (the same one chat
|
|
@@ -1915,7 +1974,7 @@ export class Orchestrator {
|
|
|
1915
1974
|
// This gives the LLM iterative read→edit→verify capability instead
|
|
1916
1975
|
// of a single-shot LLM call (adopted from Freebuff/Hermes pattern).
|
|
1917
1976
|
let actualAgentType = effectiveAgentType;
|
|
1918
|
-
if (options
|
|
1977
|
+
if (resolveUseToolCalling(options)) {
|
|
1919
1978
|
if (effectiveAgentType === 'writer') {
|
|
1920
1979
|
actualAgentType = 'writer-tc';
|
|
1921
1980
|
}
|
|
@@ -2976,7 +3035,37 @@ export class Orchestrator {
|
|
|
2976
3035
|
* Logs details in verbose mode.
|
|
2977
3036
|
*/
|
|
2978
3037
|
pruneContext(vault, options) {
|
|
2979
|
-
|
|
3038
|
+
// Budget from the SERVED model's real window when it is known (the registry
|
|
3039
|
+
// records each provider's advertised `context_length`), falling back to the
|
|
3040
|
+
// historical 128K default when it is not — so nothing regresses for a model
|
|
3041
|
+
// we cannot discover, while a large-window model stops being pruned as if it
|
|
3042
|
+
// had 128K. An explicit `contextLimit` still wins outright.
|
|
3043
|
+
//
|
|
3044
|
+
// NOTE: this uses the pipeline's configured provider/model. In auto mode the
|
|
3045
|
+
// CONCRETE model is chosen per task, so a per-task budget would be more
|
|
3046
|
+
// precise still — that requires threading the routed decision into pruning.
|
|
3047
|
+
const maxTokens = resolveContextBudget({
|
|
3048
|
+
provider: options.provider,
|
|
3049
|
+
model: options.model,
|
|
3050
|
+
override: options.contextLimit,
|
|
3051
|
+
}).budget;
|
|
3052
|
+
// T2 — model-window-aware FILE-context budget for the writer/edit agents,
|
|
3053
|
+
// derived from the same window the pruner uses. Unknown windows resolve to
|
|
3054
|
+
// the historical caps (10 files / 16K chars), so nothing regresses; a known
|
|
3055
|
+
// large window lets the writer read more of the project instead of a fixed
|
|
3056
|
+
// keyhole. Best-effort — budget metadata must never break a run.
|
|
3057
|
+
try {
|
|
3058
|
+
const fileBudget = resolveContextFileBudget({
|
|
3059
|
+
provider: options.provider,
|
|
3060
|
+
model: options.model,
|
|
3061
|
+
override: options.contextLimit,
|
|
3062
|
+
});
|
|
3063
|
+
vault.setMeta('contextFileBudgetChars', fileBudget.maxChars);
|
|
3064
|
+
vault.setMeta('contextFileBudgetFiles', fileBudget.maxFiles);
|
|
3065
|
+
}
|
|
3066
|
+
catch {
|
|
3067
|
+
// Best-effort.
|
|
3068
|
+
}
|
|
2980
3069
|
const pruner = new ContextPruner({
|
|
2981
3070
|
maxTokens,
|
|
2982
3071
|
conversationMode: options.contextPruneMode || 'soft',
|