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
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GenericCaller — handles API calls to modality providers.
|
|
3
|
-
*
|
|
4
|
-
* Instead of provider-specific code, this module:
|
|
5
|
-
* 1. Uses provider's requestBuilder to construct the request
|
|
6
|
-
* 2. Makes the API call with proper auth, timeouts, retries
|
|
7
|
-
* 3. Uses provider's responseParser to parse the response
|
|
8
|
-
* 4. Handles errors generically
|
|
9
|
-
*
|
|
10
|
-
* This allows adding new providers without writing new API calling code.
|
|
11
|
-
*/
|
|
12
|
-
import { logger } from '../../utils/logger.js';
|
|
13
|
-
// ─── Types ──────────────────────────────────────────────────────────────────
|
|
14
|
-
export class ModalityError extends Error {
|
|
15
|
-
providerId;
|
|
16
|
-
statusCode;
|
|
17
|
-
details;
|
|
18
|
-
constructor(providerId, statusCode, details) {
|
|
19
|
-
super(`[${providerId}] HTTP ${statusCode}: ${details}`);
|
|
20
|
-
this.providerId = providerId;
|
|
21
|
-
this.statusCode = statusCode;
|
|
22
|
-
this.details = details;
|
|
23
|
-
this.name = 'ModalityError';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
// ─── API Key Resolution ─────────────────────────────────────────────────────
|
|
27
|
-
/**
|
|
28
|
-
* Get the API key for a provider.
|
|
29
|
-
* Checks: config > envVar > hardcoded
|
|
30
|
-
*/
|
|
31
|
-
function getApiKey(provider, config) {
|
|
32
|
-
// Check config first
|
|
33
|
-
if (config) {
|
|
34
|
-
const modalityConfig = config.modality;
|
|
35
|
-
if (modalityConfig) {
|
|
36
|
-
const providerConfig = modalityConfig[provider.modality]?.[provider.id];
|
|
37
|
-
if (providerConfig?.apiKey) {
|
|
38
|
-
return providerConfig.apiKey;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Check env var
|
|
43
|
-
if (provider.envVar) {
|
|
44
|
-
return process.env[provider.envVar];
|
|
45
|
-
}
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
// ─── Generic API Caller ─────────────────────────────────────────────────────
|
|
49
|
-
/**
|
|
50
|
-
* Call a modality provider with generic API handling.
|
|
51
|
-
*
|
|
52
|
-
* Flow:
|
|
53
|
-
* 1. Build request using provider's requestBuilder
|
|
54
|
-
* 2. Resolve auth (API key from config or env)
|
|
55
|
-
* 3. Make HTTP request with timeout
|
|
56
|
-
* 4. Parse response using provider's responseParser
|
|
57
|
-
* 5. Return standardized result
|
|
58
|
-
*/
|
|
59
|
-
export async function callModalityProvider(provider, prompt, opts = {}, config) {
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
const apiKey = getApiKey(provider, config);
|
|
62
|
-
// Determine endpoint
|
|
63
|
-
const endpoint = provider.endpoint || getDefaultEndpoint(provider.modality);
|
|
64
|
-
// Build request
|
|
65
|
-
const requestBody = provider.requestBuilder(prompt, opts);
|
|
66
|
-
// Build headers
|
|
67
|
-
const headers = {
|
|
68
|
-
'Content-Type': 'application/json',
|
|
69
|
-
...provider.headers,
|
|
70
|
-
};
|
|
71
|
-
// Add auth
|
|
72
|
-
if (apiKey) {
|
|
73
|
-
if (provider.apiType === 'openai') {
|
|
74
|
-
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
// Generic API key header
|
|
78
|
-
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Handle file uploads (for transcription)
|
|
82
|
-
let body;
|
|
83
|
-
if (provider.modality === 'transcription' && typeof requestBody.file === 'string') {
|
|
84
|
-
// For transcription, we need to send a file
|
|
85
|
-
const { readFileSync } = await import('fs');
|
|
86
|
-
const fileBuffer = readFileSync(requestBody.file);
|
|
87
|
-
const formData = new FormData();
|
|
88
|
-
formData.append('file', new Blob([fileBuffer]), 'audio.wav');
|
|
89
|
-
if (requestBody.model)
|
|
90
|
-
formData.append('model', requestBody.model);
|
|
91
|
-
if (requestBody.language)
|
|
92
|
-
formData.append('language', requestBody.language);
|
|
93
|
-
body = formData;
|
|
94
|
-
delete headers['Content-Type']; // Let browser set multipart boundary
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
body = JSON.stringify(requestBody);
|
|
98
|
-
}
|
|
99
|
-
// Handle Pollinations (special case: GET request)
|
|
100
|
-
if (provider.apiType === 'pollinations') {
|
|
101
|
-
const { writeArtifact, safeArtifactName } = await import('./shared.js');
|
|
102
|
-
const { fetchImageBytes } = await import('./image-gen.js');
|
|
103
|
-
const width = opts.width ?? 1024;
|
|
104
|
-
const height = opts.height ?? 1024;
|
|
105
|
-
const url = `${provider.baseUrl}/${encodeURIComponent(prompt)}?width=${width}&height=${height}&nologo=true`;
|
|
106
|
-
const buffer = await fetchImageBytes(url);
|
|
107
|
-
const file = writeArtifact('images', safeArtifactName(prompt, '.png'), buffer, opts.cwd);
|
|
108
|
-
return {
|
|
109
|
-
ok: true,
|
|
110
|
-
file,
|
|
111
|
-
durationMs: Date.now() - startTime,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
// Make HTTP request
|
|
115
|
-
const response = await fetch(provider.baseUrl + endpoint, {
|
|
116
|
-
method: 'POST',
|
|
117
|
-
headers,
|
|
118
|
-
body,
|
|
119
|
-
signal: AbortSignal.timeout(provider.timeoutMs || 30000),
|
|
120
|
-
});
|
|
121
|
-
// Handle errors
|
|
122
|
-
if (!response.ok) {
|
|
123
|
-
const errorText = await response.text().catch(() => 'Unknown error');
|
|
124
|
-
throw new ModalityError(provider.id, response.status, errorText.slice(0, 200));
|
|
125
|
-
}
|
|
126
|
-
// Parse response
|
|
127
|
-
let data;
|
|
128
|
-
const contentType = response.headers.get('content-type') || '';
|
|
129
|
-
if (contentType.includes('application/json')) {
|
|
130
|
-
data = await response.json();
|
|
131
|
-
}
|
|
132
|
-
else if (contentType.includes('image/') || contentType.includes('audio/') || contentType.includes('video/')) {
|
|
133
|
-
// Binary response (image, audio, video)
|
|
134
|
-
const buffer = Buffer.from(await response.arrayBuffer());
|
|
135
|
-
data = { buffer, contentType };
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
// Text response
|
|
139
|
-
const text = await response.text();
|
|
140
|
-
data = { text };
|
|
141
|
-
}
|
|
142
|
-
// Use provider's response parser
|
|
143
|
-
const result = provider.responseParser(data);
|
|
144
|
-
// Handle file saving if data is a buffer
|
|
145
|
-
if (result.ok && result.data instanceof Buffer) {
|
|
146
|
-
const { writeArtifact, safeArtifactName } = await import('./shared.js');
|
|
147
|
-
const ext = getExtension(contentType);
|
|
148
|
-
const file = writeArtifact(getOutputDir(provider.modality), safeArtifactName(prompt, ext), result.data, opts.cwd);
|
|
149
|
-
result.file = file;
|
|
150
|
-
}
|
|
151
|
-
// Handle URL download if data is a string (URL)
|
|
152
|
-
if (result.ok && typeof result.data === 'string' && result.data.startsWith('http')) {
|
|
153
|
-
const { writeArtifact, safeArtifactName } = await import('./shared.js');
|
|
154
|
-
const fetchResponse = await fetch(result.data);
|
|
155
|
-
if (fetchResponse.ok) {
|
|
156
|
-
const buffer = Buffer.from(await fetchResponse.arrayBuffer());
|
|
157
|
-
const ext = getExtension(fetchResponse.headers.get('content-type') || '');
|
|
158
|
-
const file = writeArtifact(getOutputDir(provider.modality), safeArtifactName(prompt, ext), buffer, opts.cwd);
|
|
159
|
-
result.file = file;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
result.durationMs = Date.now() - startTime;
|
|
163
|
-
return result;
|
|
164
|
-
}
|
|
165
|
-
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
166
|
-
function getDefaultEndpoint(modality) {
|
|
167
|
-
switch (modality) {
|
|
168
|
-
case 'image': return '/images/generations';
|
|
169
|
-
case 'tts': return '/audio/speech';
|
|
170
|
-
case 'video': return '/generation';
|
|
171
|
-
case 'transcription': return '/audio/transcriptions';
|
|
172
|
-
default: return '/';
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
function getExtension(contentType) {
|
|
176
|
-
if (contentType.includes('jpeg') || contentType.includes('jpg'))
|
|
177
|
-
return '.jpg';
|
|
178
|
-
if (contentType.includes('png'))
|
|
179
|
-
return '.png';
|
|
180
|
-
if (contentType.includes('webp'))
|
|
181
|
-
return '.webp';
|
|
182
|
-
if (contentType.includes('gif'))
|
|
183
|
-
return '.gif';
|
|
184
|
-
if (contentType.includes('mp4'))
|
|
185
|
-
return '.mp4';
|
|
186
|
-
if (contentType.includes('webm'))
|
|
187
|
-
return '.webm';
|
|
188
|
-
if (contentType.includes('mp3'))
|
|
189
|
-
return '.mp3';
|
|
190
|
-
if (contentType.includes('wav'))
|
|
191
|
-
return '.wav';
|
|
192
|
-
if (contentType.includes('ogg'))
|
|
193
|
-
return '.ogg';
|
|
194
|
-
return '.bin';
|
|
195
|
-
}
|
|
196
|
-
function getOutputDir(modality) {
|
|
197
|
-
switch (modality) {
|
|
198
|
-
case 'image': return 'images';
|
|
199
|
-
case 'tts': return 'audio';
|
|
200
|
-
case 'video': return 'videos';
|
|
201
|
-
case 'transcription': return 'transcriptions';
|
|
202
|
-
default: return 'output';
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
// ─── Failover Caller ────────────────────────────────────────────────────────
|
|
206
|
-
/**
|
|
207
|
-
* Call modality with failover across providers.
|
|
208
|
-
*
|
|
209
|
-
* Flow:
|
|
210
|
-
* 1. Get all available providers for the modality
|
|
211
|
-
* 2. Score each provider
|
|
212
|
-
* 3. Try best provider first
|
|
213
|
-
* 4. On failure, try next best
|
|
214
|
-
* 5. Continue until success or all providers exhausted
|
|
215
|
-
*/
|
|
216
|
-
export async function callModalityWithFailover(modality, prompt, opts = {}, config) {
|
|
217
|
-
const { getAvailableModalityProviders, scoreModalityProvider } = await import('./modality-catalog.js');
|
|
218
|
-
const providers = getAvailableModalityProviders(modality);
|
|
219
|
-
if (providers.length === 0) {
|
|
220
|
-
return {
|
|
221
|
-
ok: false,
|
|
222
|
-
error: `No ${modality} providers available`,
|
|
223
|
-
durationMs: 0,
|
|
224
|
-
provider: 'none',
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
// Score and sort providers
|
|
228
|
-
const scored = providers.map(p => ({
|
|
229
|
-
provider: p,
|
|
230
|
-
score: scoreModalityProvider(p),
|
|
231
|
-
})).sort((a, b) => b.score - a.score);
|
|
232
|
-
// Try each provider
|
|
233
|
-
for (const { provider } of scored) {
|
|
234
|
-
try {
|
|
235
|
-
logger.debug(`[generic-caller] Trying ${provider.name} for ${modality}`);
|
|
236
|
-
const result = await callModalityProvider(provider, prompt, opts, config);
|
|
237
|
-
if (result.ok) {
|
|
238
|
-
logger.info(`[generic-caller] ${modality} generated via ${provider.name} in ${result.durationMs}ms`);
|
|
239
|
-
return { ...result, provider: provider.id };
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
catch (err) {
|
|
243
|
-
logger.debug(`[generic-caller] ${provider.name} failed: ${err instanceof Error ? err.message : err}`);
|
|
244
|
-
// Continue to next provider
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
return {
|
|
248
|
-
ok: false,
|
|
249
|
-
error: `All ${modality} providers failed`,
|
|
250
|
-
durationMs: 0,
|
|
251
|
-
provider: 'none',
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
//# sourceMappingURL=generic-caller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generic-caller.js","sourceRoot":"","sources":["../../../src/tools/modality/generic-caller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ModalityCatalog — data-driven provider definitions for modality tools.
|
|
3
|
-
*
|
|
4
|
-
* This is the modality equivalent of `provider-catalog.ts` for LLMs.
|
|
5
|
-
* Instead of hardcoding providers in tool-router.ts, we define them as data
|
|
6
|
-
* objects that can be extended via config without code changes.
|
|
7
|
-
*
|
|
8
|
-
* Design principles:
|
|
9
|
-
* 1. Data over code — providers are data objects, not if/else blocks
|
|
10
|
-
* 2. User-configurable — add providers via config, no code changes
|
|
11
|
-
* 3. Generic API caller — uses requestBuilder + responseParser
|
|
12
|
-
* 4. Consistent scoring — same pattern as LLM routing
|
|
13
|
-
*
|
|
14
|
-
* Usage:
|
|
15
|
-
* const providers = getModalityProviders('image');
|
|
16
|
-
* const best = selectBestModalityProvider(providers, context);
|
|
17
|
-
* const result = await callModalityProvider(best, prompt, opts);
|
|
18
|
-
*/
|
|
19
|
-
export type ModalityType = 'image' | 'tts' | 'video' | 'transcription';
|
|
20
|
-
export type ApiType = 'openai' | 'rest' | 'grpc' | 'local' | 'pollinations';
|
|
21
|
-
export interface ModalityProvider {
|
|
22
|
-
/** Unique provider identifier (e.g., 'dalle', 'pollinations'). */
|
|
23
|
-
id: string;
|
|
24
|
-
/** Human-readable name (e.g., 'DALL-E 3'). */
|
|
25
|
-
name: string;
|
|
26
|
-
/** Which modality this provider serves. */
|
|
27
|
-
modality: ModalityType;
|
|
28
|
-
/** API type determines how to call the provider. */
|
|
29
|
-
apiType: ApiType;
|
|
30
|
-
/** Base URL for API calls. */
|
|
31
|
-
baseUrl: string;
|
|
32
|
-
/** Environment variable for API key (undefined for keyless). */
|
|
33
|
-
envVar?: string;
|
|
34
|
-
/** Custom headers to include in API calls. */
|
|
35
|
-
headers?: Record<string, string>;
|
|
36
|
-
/** Endpoint path (appended to baseUrl). Default depends on modality. */
|
|
37
|
-
endpoint?: string;
|
|
38
|
-
/** Cost per unit (image=per image, tts=per 1K chars, video=per second). */
|
|
39
|
-
costPerUnit: number;
|
|
40
|
-
/** Quality score 0-1 (higher = better). */
|
|
41
|
-
quality: number;
|
|
42
|
-
/** Speed score 0-1 (higher = faster). */
|
|
43
|
-
speed: number;
|
|
44
|
-
/** Available models for this provider. */
|
|
45
|
-
models: string[];
|
|
46
|
-
/** Default model to use if none specified. */
|
|
47
|
-
defaultModel?: string;
|
|
48
|
-
/** Timeout in milliseconds. */
|
|
49
|
-
timeoutMs?: number;
|
|
50
|
-
/** Whether this provider is currently available (has API key). */
|
|
51
|
-
available: boolean;
|
|
52
|
-
/** Build the API request body from prompt and options. */
|
|
53
|
-
requestBuilder: (prompt: string, opts: ModalityOptions) => Record<string, unknown>;
|
|
54
|
-
/** Parse the API response into a standardized result. */
|
|
55
|
-
responseParser: (data: unknown) => ModalityResponse;
|
|
56
|
-
}
|
|
57
|
-
export interface ModalityOptions {
|
|
58
|
-
width?: number;
|
|
59
|
-
height?: number;
|
|
60
|
-
duration?: number;
|
|
61
|
-
resolution?: string;
|
|
62
|
-
voice?: string;
|
|
63
|
-
language?: string;
|
|
64
|
-
model?: string;
|
|
65
|
-
cwd?: string;
|
|
66
|
-
}
|
|
67
|
-
export interface ModalityResponse {
|
|
68
|
-
/** Whether the operation succeeded. */
|
|
69
|
-
ok: boolean;
|
|
70
|
-
/** Output data (buffer for image/audio, URL for video). */
|
|
71
|
-
data?: Buffer | string;
|
|
72
|
-
/** Output file path (if saved to disk). */
|
|
73
|
-
file?: string;
|
|
74
|
-
/** Text output (for transcription). */
|
|
75
|
-
text?: string;
|
|
76
|
-
/** Error message if failed. */
|
|
77
|
-
error?: string;
|
|
78
|
-
/** Duration in milliseconds. */
|
|
79
|
-
durationMs: number;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Get all providers for a modality (built-in + user-configured).
|
|
83
|
-
*/
|
|
84
|
-
export declare function getModalityProviders(modality: ModalityType): ModalityProvider[];
|
|
85
|
-
/**
|
|
86
|
-
* Get all available providers for a modality (has API key or is keyless).
|
|
87
|
-
*/
|
|
88
|
-
export declare function getAvailableModalityProviders(modality: ModalityType): ModalityProvider[];
|
|
89
|
-
/**
|
|
90
|
-
* Get a specific provider by ID.
|
|
91
|
-
*/
|
|
92
|
-
export declare function getModalityProvider(id: string): ModalityProvider | undefined;
|
|
93
|
-
/**
|
|
94
|
-
* Add a user-configured provider.
|
|
95
|
-
* Called when user sets config like:
|
|
96
|
-
* nuvira config set modality.image.replicate.apiKey=xxxxx
|
|
97
|
-
*/
|
|
98
|
-
export declare function addModalityProvider(provider: ModalityProvider): void;
|
|
99
|
-
/**
|
|
100
|
-
* Remove a user-configured provider.
|
|
101
|
-
*/
|
|
102
|
-
export declare function removeModalityProvider(id: string): boolean;
|
|
103
|
-
/**
|
|
104
|
-
* Load user-configured providers from config.
|
|
105
|
-
*/
|
|
106
|
-
export declare function loadUserConfiguredProviders(config: Record<string, unknown>): void;
|
|
107
|
-
/**
|
|
108
|
-
* Score a modality provider for routing.
|
|
109
|
-
*/
|
|
110
|
-
export declare function scoreModalityProvider(provider: ModalityProvider, context?: {
|
|
111
|
-
maxCost?: number;
|
|
112
|
-
priorityQuality?: boolean;
|
|
113
|
-
prioritySpeed?: boolean;
|
|
114
|
-
}): number;
|
|
115
|
-
/**
|
|
116
|
-
* Select the best modality provider for a task.
|
|
117
|
-
*/
|
|
118
|
-
export declare function selectBestModalityProvider(modality: ModalityType, context?: {
|
|
119
|
-
maxCost?: number;
|
|
120
|
-
priorityQuality?: boolean;
|
|
121
|
-
prioritySpeed?: boolean;
|
|
122
|
-
}): ModalityProvider | null;
|
|
123
|
-
/**
|
|
124
|
-
* Get status of all modality providers (for dashboard display).
|
|
125
|
-
*/
|
|
126
|
-
export declare function getModalityProviderStatus(): Record<ModalityType, Array<{
|
|
127
|
-
id: string;
|
|
128
|
-
name: string;
|
|
129
|
-
available: boolean;
|
|
130
|
-
costPerUnit: number;
|
|
131
|
-
quality: number;
|
|
132
|
-
speed: number;
|
|
133
|
-
}>>;
|
|
134
|
-
//# sourceMappingURL=modality-catalog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modality-catalog.d.ts","sourceRoot":"","sources":["../../../src/tools/modality/modality-catalog.ts"],"names":[],"mappings":"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"}
|