@0xmaxma/claude-gateway 1.8.14 → 2.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/README.md +28 -1613
- package/config.template.json +7 -1
- package/dist/agent/runner.d.ts +377 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +680 -24
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/skill-learning/index.d.ts +6 -4
- package/dist/agent/skill-learning/index.d.ts.map +1 -1
- package/dist/agent/skill-learning/index.js +3 -3
- package/dist/agent/skill-learning/index.js.map +1 -1
- package/dist/agent/skill-learning/notifier.d.ts +3 -4
- package/dist/agent/skill-learning/notifier.d.ts.map +1 -1
- package/dist/agent/skill-learning/notifier.js +15 -13
- package/dist/agent/skill-learning/notifier.js.map +1 -1
- package/dist/agent/skill-learning/reviewer.d.ts.map +1 -1
- package/dist/agent/skill-learning/reviewer.js +3 -1
- package/dist/agent/skill-learning/reviewer.js.map +1 -1
- package/dist/api/connectors-router.d.ts.map +1 -1
- package/dist/api/connectors-router.js +110 -4
- package/dist/api/connectors-router.js.map +1 -1
- package/dist/api/gateway-router.d.ts +1 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +13 -1
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/line-webhook-router.d.ts +2 -2
- package/dist/api/line-webhook-router.d.ts.map +1 -1
- package/dist/api/line-webhook-router.js +264 -230
- package/dist/api/line-webhook-router.js.map +1 -1
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +135 -10
- package/dist/api/router.js.map +1 -1
- package/dist/api/share-router.d.ts.map +1 -1
- package/dist/api/share-router.js +29 -10
- package/dist/api/share-router.js.map +1 -1
- package/dist/api/slack-client.d.ts +2 -0
- package/dist/api/slack-client.d.ts.map +1 -1
- package/dist/api/slack-client.js +6 -2
- package/dist/api/slack-client.js.map +1 -1
- package/dist/api/slack-webhook-router.d.ts +3 -0
- package/dist/api/slack-webhook-router.d.ts.map +1 -1
- package/dist/api/slack-webhook-router.js +226 -131
- package/dist/api/slack-webhook-router.js.map +1 -1
- package/dist/api/voice-router.d.ts +21 -0
- package/dist/api/voice-router.d.ts.map +1 -0
- package/dist/api/voice-router.js +372 -0
- package/dist/api/voice-router.js.map +1 -0
- package/dist/api/voice-settings-router.d.ts +5 -0
- package/dist/api/voice-settings-router.d.ts.map +1 -0
- package/dist/api/voice-settings-router.js +318 -0
- package/dist/api/voice-settings-router.js.map +1 -0
- package/dist/apps/agent-container-migration.d.ts +11 -0
- package/dist/apps/agent-container-migration.d.ts.map +1 -0
- package/dist/apps/agent-container-migration.js +85 -0
- package/dist/apps/agent-container-migration.js.map +1 -0
- package/dist/apps/installer.d.ts +1 -1
- package/dist/apps/installer.d.ts.map +1 -1
- package/dist/apps/installer.js +2 -1
- package/dist/apps/installer.js.map +1 -1
- package/dist/cli/commands/tasks.d.ts +5 -0
- package/dist/cli/commands/tasks.d.ts.map +1 -0
- package/dist/cli/commands/tasks.js +92 -0
- package/dist/cli/commands/tasks.js.map +1 -0
- package/dist/cli/http-client.d.ts +2 -0
- package/dist/cli/http-client.d.ts.map +1 -1
- package/dist/cli/http-client.js +8 -3
- package/dist/cli/http-client.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/config/config-write-lock.d.ts +2 -0
- package/dist/config/config-write-lock.d.ts.map +1 -1
- package/dist/config/config-write-lock.js +5 -0
- package/dist/config/config-write-lock.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +87 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/migrator.d.ts.map +1 -1
- package/dist/config/migrator.js +12 -1
- package/dist/config/migrator.js.map +1 -1
- package/dist/config/watcher.d.ts.map +1 -1
- package/dist/config/watcher.js +6 -0
- package/dist/config/watcher.js.map +1 -1
- package/dist/connectors/resolve.d.ts.map +1 -1
- package/dist/connectors/resolve.js +3 -1
- package/dist/connectors/resolve.js.map +1 -1
- package/dist/connectors/types.d.ts +8 -0
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/cron/manager.d.ts.map +1 -1
- package/dist/cron/manager.js +21 -2
- package/dist/cron/manager.js.map +1 -1
- package/dist/discord/receiver.d.ts +2 -1
- package/dist/discord/receiver.d.ts.map +1 -1
- package/dist/discord/receiver.js +5 -1
- package/dist/discord/receiver.js.map +1 -1
- package/dist/history/db.d.ts +3 -0
- package/dist/history/db.d.ts.map +1 -1
- package/dist/history/db.js +21 -1
- package/dist/history/db.js.map +1 -1
- package/dist/history/types.d.ts +2 -0
- package/dist/history/types.d.ts.map +1 -1
- package/dist/index.js +48 -9
- package/dist/index.js.map +1 -1
- package/dist/orchestration/bounded-queue.d.ts +15 -0
- package/dist/orchestration/bounded-queue.d.ts.map +1 -0
- package/dist/orchestration/bounded-queue.js +58 -0
- package/dist/orchestration/bounded-queue.js.map +1 -0
- package/dist/orchestration/bridge.d.ts +55 -0
- package/dist/orchestration/bridge.d.ts.map +1 -0
- package/dist/orchestration/bridge.js +234 -0
- package/dist/orchestration/bridge.js.map +1 -0
- package/dist/orchestration/browser-routing.d.ts +7 -0
- package/dist/orchestration/browser-routing.d.ts.map +1 -0
- package/dist/orchestration/browser-routing.js +22 -0
- package/dist/orchestration/browser-routing.js.map +1 -0
- package/dist/orchestration/capabilities.d.ts +49 -0
- package/dist/orchestration/capabilities.d.ts.map +1 -0
- package/dist/orchestration/capabilities.js +417 -0
- package/dist/orchestration/capabilities.js.map +1 -0
- package/dist/orchestration/capacity.d.ts +14 -0
- package/dist/orchestration/capacity.d.ts.map +1 -0
- package/dist/orchestration/capacity.js +52 -0
- package/dist/orchestration/capacity.js.map +1 -0
- package/dist/orchestration/channel-activity.d.ts +21 -0
- package/dist/orchestration/channel-activity.d.ts.map +1 -0
- package/dist/orchestration/channel-activity.js +72 -0
- package/dist/orchestration/channel-activity.js.map +1 -0
- package/dist/orchestration/channel-controls.d.ts +32 -0
- package/dist/orchestration/channel-controls.d.ts.map +1 -0
- package/dist/orchestration/channel-controls.js +105 -0
- package/dist/orchestration/channel-controls.js.map +1 -0
- package/dist/orchestration/channel-input-media.d.ts +11 -0
- package/dist/orchestration/channel-input-media.d.ts.map +1 -0
- package/dist/orchestration/channel-input-media.js +54 -0
- package/dist/orchestration/channel-input-media.js.map +1 -0
- package/dist/orchestration/channel-media.d.ts +4 -0
- package/dist/orchestration/channel-media.d.ts.map +1 -0
- package/dist/orchestration/channel-media.js +70 -0
- package/dist/orchestration/channel-media.js.map +1 -0
- package/dist/orchestration/channel-speech.d.ts +7 -0
- package/dist/orchestration/channel-speech.d.ts.map +1 -0
- package/dist/orchestration/channel-speech.js +65 -0
- package/dist/orchestration/channel-speech.js.map +1 -0
- package/dist/orchestration/cli-skills.d.ts +12 -0
- package/dist/orchestration/cli-skills.d.ts.map +1 -0
- package/dist/orchestration/cli-skills.js +132 -0
- package/dist/orchestration/cli-skills.js.map +1 -0
- package/dist/orchestration/config.d.ts +256 -0
- package/dist/orchestration/config.d.ts.map +1 -0
- package/dist/orchestration/config.js +110 -0
- package/dist/orchestration/config.js.map +1 -0
- package/dist/orchestration/container.d.ts +21 -0
- package/dist/orchestration/container.d.ts.map +1 -0
- package/dist/orchestration/container.js +195 -0
- package/dist/orchestration/container.js.map +1 -0
- package/dist/orchestration/control-delivery.d.ts +5 -0
- package/dist/orchestration/control-delivery.d.ts.map +1 -0
- package/dist/orchestration/control-delivery.js +50 -0
- package/dist/orchestration/control-delivery.js.map +1 -0
- package/dist/orchestration/conversation-intake.d.ts +32 -0
- package/dist/orchestration/conversation-intake.d.ts.map +1 -0
- package/dist/orchestration/conversation-intake.js +92 -0
- package/dist/orchestration/conversation-intake.js.map +1 -0
- package/dist/orchestration/decisions.d.ts +27 -0
- package/dist/orchestration/decisions.d.ts.map +1 -0
- package/dist/orchestration/decisions.js +148 -0
- package/dist/orchestration/decisions.js.map +1 -0
- package/dist/orchestration/delivery.d.ts +30 -0
- package/dist/orchestration/delivery.d.ts.map +1 -0
- package/dist/orchestration/delivery.js +219 -0
- package/dist/orchestration/delivery.js.map +1 -0
- package/dist/orchestration/display-stream.d.ts +4 -0
- package/dist/orchestration/display-stream.d.ts.map +1 -0
- package/dist/orchestration/display-stream.js +77 -0
- package/dist/orchestration/display-stream.js.map +1 -0
- package/dist/orchestration/events.d.ts +30 -0
- package/dist/orchestration/events.d.ts.map +1 -0
- package/dist/orchestration/events.js +65 -0
- package/dist/orchestration/events.js.map +1 -0
- package/dist/orchestration/execution-observation.d.ts +38 -0
- package/dist/orchestration/execution-observation.d.ts.map +1 -0
- package/dist/orchestration/execution-observation.js +25 -0
- package/dist/orchestration/execution-observation.js.map +1 -0
- package/dist/orchestration/file-delivery.d.ts +16 -0
- package/dist/orchestration/file-delivery.d.ts.map +1 -0
- package/dist/orchestration/file-delivery.js +139 -0
- package/dist/orchestration/file-delivery.js.map +1 -0
- package/dist/orchestration/gateway-config.d.ts +17 -0
- package/dist/orchestration/gateway-config.d.ts.map +1 -0
- package/dist/orchestration/gateway-config.js +128 -0
- package/dist/orchestration/gateway-config.js.map +1 -0
- package/dist/orchestration/history.d.ts +13 -0
- package/dist/orchestration/history.d.ts.map +1 -0
- package/dist/orchestration/history.js +48 -0
- package/dist/orchestration/history.js.map +1 -0
- package/dist/orchestration/identity.d.ts +6 -0
- package/dist/orchestration/identity.d.ts.map +1 -0
- package/dist/orchestration/identity.js +13 -0
- package/dist/orchestration/identity.js.map +1 -0
- package/dist/orchestration/inference-errors.d.ts +3 -0
- package/dist/orchestration/inference-errors.d.ts.map +1 -0
- package/dist/orchestration/inference-errors.js +16 -0
- package/dist/orchestration/inference-errors.js.map +1 -0
- package/dist/orchestration/input-images.d.ts +12 -0
- package/dist/orchestration/input-images.d.ts.map +1 -0
- package/dist/orchestration/input-images.js +66 -0
- package/dist/orchestration/input-images.js.map +1 -0
- package/dist/orchestration/instance-lock.d.ts +5 -0
- package/dist/orchestration/instance-lock.d.ts.map +1 -0
- package/dist/orchestration/instance-lock.js +33 -0
- package/dist/orchestration/instance-lock.js.map +1 -0
- package/dist/orchestration/line-loading.d.ts +21 -0
- package/dist/orchestration/line-loading.d.ts.map +1 -0
- package/dist/orchestration/line-loading.js +89 -0
- package/dist/orchestration/line-loading.js.map +1 -0
- package/dist/orchestration/media.d.ts +3 -0
- package/dist/orchestration/media.d.ts.map +1 -0
- package/dist/orchestration/media.js +46 -0
- package/dist/orchestration/media.js.map +1 -0
- package/dist/orchestration/migrations/schema.d.ts +3 -0
- package/dist/orchestration/migrations/schema.d.ts.map +1 -0
- package/dist/orchestration/migrations/schema.js +80 -0
- package/dist/orchestration/migrations/schema.js.map +1 -0
- package/dist/orchestration/notification-mailbox.d.ts +5 -0
- package/dist/orchestration/notification-mailbox.d.ts.map +1 -0
- package/dist/orchestration/notification-mailbox.js +29 -0
- package/dist/orchestration/notification-mailbox.js.map +1 -0
- package/dist/orchestration/process-activity.d.ts +23 -0
- package/dist/orchestration/process-activity.d.ts.map +1 -0
- package/dist/orchestration/process-activity.js +95 -0
- package/dist/orchestration/process-activity.js.map +1 -0
- package/dist/orchestration/process-supervisor.d.ts +15 -0
- package/dist/orchestration/process-supervisor.d.ts.map +1 -0
- package/dist/orchestration/process-supervisor.js +92 -0
- package/dist/orchestration/process-supervisor.js.map +1 -0
- package/dist/orchestration/process-turn.d.ts +35 -0
- package/dist/orchestration/process-turn.d.ts.map +1 -0
- package/dist/orchestration/process-turn.js +246 -0
- package/dist/orchestration/process-turn.js.map +1 -0
- package/dist/orchestration/progress-review.d.ts +28 -0
- package/dist/orchestration/progress-review.d.ts.map +1 -0
- package/dist/orchestration/progress-review.js +48 -0
- package/dist/orchestration/progress-review.js.map +1 -0
- package/dist/orchestration/recovery.d.ts +8 -0
- package/dist/orchestration/recovery.d.ts.map +1 -0
- package/dist/orchestration/recovery.js +35 -0
- package/dist/orchestration/recovery.js.map +1 -0
- package/dist/orchestration/reply-context.d.ts +7 -0
- package/dist/orchestration/reply-context.d.ts.map +1 -0
- package/dist/orchestration/reply-context.js +54 -0
- package/dist/orchestration/reply-context.js.map +1 -0
- package/dist/orchestration/runtime.d.ts +232 -0
- package/dist/orchestration/runtime.d.ts.map +1 -0
- package/dist/orchestration/runtime.js +962 -0
- package/dist/orchestration/runtime.js.map +1 -0
- package/dist/orchestration/skills.d.ts +17 -0
- package/dist/orchestration/skills.d.ts.map +1 -0
- package/dist/orchestration/skills.js +32 -0
- package/dist/orchestration/skills.js.map +1 -0
- package/dist/orchestration/source-policy.d.ts +6 -0
- package/dist/orchestration/source-policy.d.ts.map +1 -0
- package/dist/orchestration/source-policy.js +16 -0
- package/dist/orchestration/source-policy.js.map +1 -0
- package/dist/orchestration/speech.d.ts +24 -0
- package/dist/orchestration/speech.d.ts.map +1 -0
- package/dist/orchestration/speech.js +61 -0
- package/dist/orchestration/speech.js.map +1 -0
- package/dist/orchestration/stop-controls.d.ts +30 -0
- package/dist/orchestration/stop-controls.d.ts.map +1 -0
- package/dist/orchestration/stop-controls.js +79 -0
- package/dist/orchestration/stop-controls.js.map +1 -0
- package/dist/orchestration/store.d.ts +86 -0
- package/dist/orchestration/store.d.ts.map +1 -0
- package/dist/orchestration/store.js +275 -0
- package/dist/orchestration/store.js.map +1 -0
- package/dist/orchestration/task-controls.d.ts +130 -0
- package/dist/orchestration/task-controls.d.ts.map +1 -0
- package/dist/orchestration/task-controls.js +55 -0
- package/dist/orchestration/task-controls.js.map +1 -0
- package/dist/orchestration/task-files.d.ts +29 -0
- package/dist/orchestration/task-files.d.ts.map +1 -0
- package/dist/orchestration/task-files.js +200 -0
- package/dist/orchestration/task-files.js.map +1 -0
- package/dist/orchestration/task-report.d.ts +7 -0
- package/dist/orchestration/task-report.d.ts.map +1 -0
- package/dist/orchestration/task-report.js +33 -0
- package/dist/orchestration/task-report.js.map +1 -0
- package/dist/orchestration/tasks/checkpoint-hook.d.ts +19 -0
- package/dist/orchestration/tasks/checkpoint-hook.d.ts.map +1 -0
- package/dist/orchestration/tasks/checkpoint-hook.js +49 -0
- package/dist/orchestration/tasks/checkpoint-hook.js.map +1 -0
- package/dist/orchestration/tasks/cleanup.d.ts +18 -0
- package/dist/orchestration/tasks/cleanup.d.ts.map +1 -0
- package/dist/orchestration/tasks/cleanup.js +113 -0
- package/dist/orchestration/tasks/cleanup.js.map +1 -0
- package/dist/orchestration/tasks/driver.d.ts +23 -0
- package/dist/orchestration/tasks/driver.d.ts.map +1 -0
- package/dist/orchestration/tasks/driver.js +209 -0
- package/dist/orchestration/tasks/driver.js.map +1 -0
- package/dist/orchestration/tasks/failure.d.ts +5 -0
- package/dist/orchestration/tasks/failure.d.ts.map +1 -0
- package/dist/orchestration/tasks/failure.js +17 -0
- package/dist/orchestration/tasks/failure.js.map +1 -0
- package/dist/orchestration/tasks/pool.d.ts +18 -0
- package/dist/orchestration/tasks/pool.d.ts.map +1 -0
- package/dist/orchestration/tasks/pool.js +73 -0
- package/dist/orchestration/tasks/pool.js.map +1 -0
- package/dist/orchestration/tasks/scheduler.d.ts +38 -0
- package/dist/orchestration/tasks/scheduler.d.ts.map +1 -0
- package/dist/orchestration/tasks/scheduler.js +160 -0
- package/dist/orchestration/tasks/scheduler.js.map +1 -0
- package/dist/orchestration/tasks/service.d.ts +109 -0
- package/dist/orchestration/tasks/service.d.ts.map +1 -0
- package/dist/orchestration/tasks/service.js +697 -0
- package/dist/orchestration/tasks/service.js.map +1 -0
- package/dist/orchestration/tasks/shared-workspace.d.ts +25 -0
- package/dist/orchestration/tasks/shared-workspace.d.ts.map +1 -0
- package/dist/orchestration/tasks/shared-workspace.js +162 -0
- package/dist/orchestration/tasks/shared-workspace.js.map +1 -0
- package/dist/orchestration/tasks/task-directive.d.ts +6 -0
- package/dist/orchestration/tasks/task-directive.d.ts.map +1 -0
- package/dist/orchestration/tasks/task-directive.js +41 -0
- package/dist/orchestration/tasks/task-directive.js.map +1 -0
- package/dist/orchestration/tasks/timing.d.ts +15 -0
- package/dist/orchestration/tasks/timing.d.ts.map +1 -0
- package/dist/orchestration/tasks/timing.js +48 -0
- package/dist/orchestration/tasks/timing.js.map +1 -0
- package/dist/orchestration/tasks/tool-repetition.d.ts +3 -0
- package/dist/orchestration/tasks/tool-repetition.d.ts.map +1 -0
- package/dist/orchestration/tasks/tool-repetition.js +30 -0
- package/dist/orchestration/tasks/tool-repetition.js.map +1 -0
- package/dist/orchestration/tasks/workspace.d.ts +24 -0
- package/dist/orchestration/tasks/workspace.d.ts.map +1 -0
- package/dist/orchestration/tasks/workspace.js +147 -0
- package/dist/orchestration/tasks/workspace.js.map +1 -0
- package/dist/orchestration/telegram-speech.d.ts +17 -0
- package/dist/orchestration/telegram-speech.d.ts.map +1 -0
- package/dist/orchestration/telegram-speech.js +55 -0
- package/dist/orchestration/telegram-speech.js.map +1 -0
- package/dist/orchestration/telegram-tool-status.d.ts +23 -0
- package/dist/orchestration/telegram-tool-status.d.ts.map +1 -0
- package/dist/orchestration/telegram-tool-status.js +207 -0
- package/dist/orchestration/telegram-tool-status.js.map +1 -0
- package/dist/orchestration/telegram-voices.d.ts +42 -0
- package/dist/orchestration/telegram-voices.d.ts.map +1 -0
- package/dist/orchestration/telegram-voices.js +70 -0
- package/dist/orchestration/telegram-voices.js.map +1 -0
- package/dist/orchestration/tool-activity.d.ts +10 -0
- package/dist/orchestration/tool-activity.d.ts.map +1 -0
- package/dist/orchestration/tool-activity.js +38 -0
- package/dist/orchestration/tool-activity.js.map +1 -0
- package/dist/orchestration/types.d.ts +177 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +13 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/orchestration/voice-reply-policy.d.ts +8 -0
- package/dist/orchestration/voice-reply-policy.d.ts.map +1 -0
- package/dist/orchestration/voice-reply-policy.js +46 -0
- package/dist/orchestration/voice-reply-policy.js.map +1 -0
- package/dist/orchestration/worker-shares.d.ts +8 -0
- package/dist/orchestration/worker-shares.d.ts.map +1 -0
- package/dist/orchestration/worker-shares.js +59 -0
- package/dist/orchestration/worker-shares.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +121 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +69 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/session/input-image.d.ts +10 -0
- package/dist/session/input-image.d.ts.map +1 -0
- package/dist/session/input-image.js +3 -0
- package/dist/session/input-image.js.map +1 -0
- package/dist/session/process.d.ts +15 -3
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +143 -35
- package/dist/session/process.js.map +1 -1
- package/dist/session/runtime-profile.d.ts +36 -0
- package/dist/session/runtime-profile.d.ts.map +1 -0
- package/dist/session/runtime-profile.js +63 -0
- package/dist/session/runtime-profile.js.map +1 -0
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +23 -1
- package/dist/session/store.js.map +1 -1
- package/dist/share/share-store.d.ts +3 -1
- package/dist/share/share-store.d.ts.map +1 -1
- package/dist/share/share-store.js +13 -2
- package/dist/share/share-store.js.map +1 -1
- package/dist/shared/line-request-order.d.ts +2 -0
- package/dist/shared/line-request-order.d.ts.map +1 -0
- package/dist/shared/line-request-order.js +16 -0
- package/dist/shared/line-request-order.js.map +1 -0
- package/dist/shared/task-elapsed.d.ts +3 -0
- package/dist/shared/task-elapsed.d.ts.map +1 -0
- package/dist/shared/task-elapsed.js +12 -0
- package/dist/shared/task-elapsed.js.map +1 -0
- package/dist/shared/task-updated-time.d.ts +3 -0
- package/dist/shared/task-updated-time.d.ts.map +1 -0
- package/dist/shared/task-updated-time.js +15 -0
- package/dist/shared/task-updated-time.js.map +1 -0
- package/dist/skills/loader.d.ts +2 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/telegram/chunks.d.ts +19 -0
- package/dist/telegram/chunks.d.ts.map +1 -0
- package/dist/telegram/chunks.js +129 -0
- package/dist/telegram/chunks.js.map +1 -0
- package/dist/telegram/markdown.d.ts.map +1 -1
- package/dist/telegram/markdown.js +18 -3
- package/dist/telegram/markdown.js.map +1 -1
- package/dist/telegram/receiver.d.ts +2 -1
- package/dist/telegram/receiver.d.ts.map +1 -1
- package/dist/telegram/receiver.js +6 -1
- package/dist/telegram/receiver.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/web-ui.d.ts.map +1 -1
- package/dist/ui/web-ui.js +31 -5
- package/dist/ui/web-ui.js.map +1 -1
- package/dist/voice/diagnostics.d.ts +29 -0
- package/dist/voice/diagnostics.d.ts.map +1 -0
- package/dist/voice/diagnostics.js +37 -0
- package/dist/voice/diagnostics.js.map +1 -0
- package/dist/voice/errors.d.ts +19 -0
- package/dist/voice/errors.d.ts.map +1 -0
- package/dist/voice/errors.js +133 -0
- package/dist/voice/errors.js.map +1 -0
- package/dist/voice/line-audio.d.ts +4 -0
- package/dist/voice/line-audio.d.ts.map +1 -0
- package/dist/voice/line-audio.js +27 -0
- package/dist/voice/line-audio.js.map +1 -0
- package/dist/voice/managed-quota.d.ts +5 -0
- package/dist/voice/managed-quota.d.ts.map +1 -0
- package/dist/voice/managed-quota.js +35 -0
- package/dist/voice/managed-quota.js.map +1 -0
- package/dist/voice/mp3.d.ts +3 -0
- package/dist/voice/mp3.d.ts.map +1 -0
- package/dist/voice/mp3.js +30 -0
- package/dist/voice/mp3.js.map +1 -0
- package/dist/voice/notes.d.ts +9 -0
- package/dist/voice/notes.d.ts.map +1 -0
- package/dist/voice/notes.js +68 -0
- package/dist/voice/notes.js.map +1 -0
- package/dist/voice/playback.d.ts +22 -0
- package/dist/voice/playback.d.ts.map +1 -0
- package/dist/voice/playback.js +52 -0
- package/dist/voice/playback.js.map +1 -0
- package/dist/voice/preview.d.ts +6 -0
- package/dist/voice/preview.d.ts.map +1 -0
- package/dist/voice/preview.js +44 -0
- package/dist/voice/preview.js.map +1 -0
- package/dist/voice/protocol.d.ts +10 -0
- package/dist/voice/protocol.d.ts.map +1 -0
- package/dist/voice/protocol.js +30 -0
- package/dist/voice/protocol.js.map +1 -0
- package/dist/voice/providers/cartesia-tts.d.ts +26 -0
- package/dist/voice/providers/cartesia-tts.d.ts.map +1 -0
- package/dist/voice/providers/cartesia-tts.js +95 -0
- package/dist/voice/providers/cartesia-tts.js.map +1 -0
- package/dist/voice/providers/deepgram-stt.d.ts +20 -0
- package/dist/voice/providers/deepgram-stt.d.ts.map +1 -0
- package/dist/voice/providers/deepgram-stt.js +66 -0
- package/dist/voice/providers/deepgram-stt.js.map +1 -0
- package/dist/voice/providers/elevenlabs-stt.d.ts +20 -0
- package/dist/voice/providers/elevenlabs-stt.d.ts.map +1 -0
- package/dist/voice/providers/elevenlabs-stt.js +92 -0
- package/dist/voice/providers/elevenlabs-stt.js.map +1 -0
- package/dist/voice/providers/elevenlabs-tts.d.ts +26 -0
- package/dist/voice/providers/elevenlabs-tts.d.ts.map +1 -0
- package/dist/voice/providers/elevenlabs-tts.js +82 -0
- package/dist/voice/providers/elevenlabs-tts.js.map +1 -0
- package/dist/voice/providers/encoded-audio-tts.d.ts +21 -0
- package/dist/voice/providers/encoded-audio-tts.d.ts.map +1 -0
- package/dist/voice/providers/encoded-audio-tts.js +175 -0
- package/dist/voice/providers/encoded-audio-tts.js.map +1 -0
- package/dist/voice/providers/fake.d.ts +39 -0
- package/dist/voice/providers/fake.d.ts.map +1 -0
- package/dist/voice/providers/fake.js +41 -0
- package/dist/voice/providers/fake.js.map +1 -0
- package/dist/voice/providers/gemini-live-stt.d.ts +21 -0
- package/dist/voice/providers/gemini-live-stt.d.ts.map +1 -0
- package/dist/voice/providers/gemini-live-stt.js +158 -0
- package/dist/voice/providers/gemini-live-stt.js.map +1 -0
- package/dist/voice/providers/gemini.d.ts +60 -0
- package/dist/voice/providers/gemini.d.ts.map +1 -0
- package/dist/voice/providers/gemini.js +124 -0
- package/dist/voice/providers/gemini.js.map +1 -0
- package/dist/voice/providers/model-ref.d.ts +9 -0
- package/dist/voice/providers/model-ref.d.ts.map +1 -0
- package/dist/voice/providers/model-ref.js +31 -0
- package/dist/voice/providers/model-ref.js.map +1 -0
- package/dist/voice/providers/openrouter.d.ts +39 -0
- package/dist/voice/providers/openrouter.d.ts.map +1 -0
- package/dist/voice/providers/openrouter.js +154 -0
- package/dist/voice/providers/openrouter.js.map +1 -0
- package/dist/voice/providers/paxalabs-stt.d.ts +12 -0
- package/dist/voice/providers/paxalabs-stt.d.ts.map +1 -0
- package/dist/voice/providers/paxalabs-stt.js +41 -0
- package/dist/voice/providers/paxalabs-stt.js.map +1 -0
- package/dist/voice/providers/paxalabs-tts.d.ts +23 -0
- package/dist/voice/providers/paxalabs-tts.d.ts.map +1 -0
- package/dist/voice/providers/paxalabs-tts.js +80 -0
- package/dist/voice/providers/paxalabs-tts.js.map +1 -0
- package/dist/voice/providers/recorded-stt.d.ts +34 -0
- package/dist/voice/providers/recorded-stt.d.ts.map +1 -0
- package/dist/voice/providers/recorded-stt.js +59 -0
- package/dist/voice/providers/recorded-stt.js.map +1 -0
- package/dist/voice/providers/registry.d.ts +10 -0
- package/dist/voice/providers/registry.d.ts.map +1 -0
- package/dist/voice/providers/registry.js +77 -0
- package/dist/voice/providers/registry.js.map +1 -0
- package/dist/voice/providers/socket.d.ts +10 -0
- package/dist/voice/providers/socket.d.ts.map +1 -0
- package/dist/voice/providers/socket.js +91 -0
- package/dist/voice/providers/socket.js.map +1 -0
- package/dist/voice/providers/upstream.d.ts +9 -0
- package/dist/voice/providers/upstream.d.ts.map +1 -0
- package/dist/voice/providers/upstream.js +51 -0
- package/dist/voice/providers/upstream.js.map +1 -0
- package/dist/voice/providers/voice-catalog.d.ts +17 -0
- package/dist/voice/providers/voice-catalog.d.ts.map +1 -0
- package/dist/voice/providers/voice-catalog.js +167 -0
- package/dist/voice/providers/voice-catalog.js.map +1 -0
- package/dist/voice/queue.d.ts +2 -0
- package/dist/voice/queue.d.ts.map +1 -0
- package/dist/voice/queue.js +6 -0
- package/dist/voice/queue.js.map +1 -0
- package/dist/voice/session.d.ts +86 -0
- package/dist/voice/session.d.ts.map +1 -0
- package/dist/voice/session.js +464 -0
- package/dist/voice/session.js.map +1 -0
- package/dist/voice/turn-manager.d.ts +27 -0
- package/dist/voice/turn-manager.d.ts.map +1 -0
- package/dist/voice/turn-manager.js +75 -0
- package/dist/voice/turn-manager.js.map +1 -0
- package/dist/voice/types.d.ts +78 -0
- package/dist/voice/types.d.ts.map +1 -0
- package/dist/voice/types.js +18 -0
- package/dist/voice/types.js.map +1 -0
- package/dist/voice/wav.d.ts +2 -0
- package/dist/voice/wav.d.ts.map +1 -0
- package/dist/voice/wav.js +21 -0
- package/dist/voice/wav.js.map +1 -0
- package/dist/wechat/ilink-client.d.ts +13 -0
- package/dist/wechat/ilink-client.d.ts.map +1 -1
- package/dist/wechat/ilink-client.js +19 -0
- package/dist/wechat/ilink-client.js.map +1 -1
- package/dist/whatsapp/manager.d.ts.map +1 -1
- package/dist/whatsapp/manager.js +51 -1
- package/dist/whatsapp/manager.js.map +1 -1
- package/mcp/capability-catalog.ts +206 -0
- package/mcp/modules.ts +56 -0
- package/mcp/server.ts +18 -37
- package/mcp/tools/browser/module.ts +1 -1
- package/mcp/tools/browser/skills/open-browser/SKILL.md +5 -3
- package/mcp/tools/discord/commands.ts +17 -1
- package/mcp/tools/discord/inbound.ts +11 -0
- package/mcp/tools/discord/module.ts +42 -2
- package/mcp/tools/discord/receiver-server.ts +10 -0
- package/mcp/tools/discord/types.ts +4 -1
- package/mcp/tools/image/module.ts +3 -1
- package/mcp/tools/receiver-spool.test.ts +28 -0
- package/mcp/tools/receiver-spool.ts +56 -0
- package/mcp/tools/share-file/module.ts +9 -1
- package/mcp/tools/shared/share-client.ts +19 -0
- package/mcp/tools/tasks/module.ts +35 -0
- package/mcp/tools/telegram/media-group.ts +21 -0
- package/mcp/tools/telegram/receiver-server.ts +232 -11
- package/mcp/tools/telegram/selection-confirmation.ts +20 -0
- package/mcp/tools/telegram/task-browser.ts +117 -0
- package/mcp/tools/telegram/task-detail.ts +36 -0
- package/mcp/tools/telegram/task-elapsed.ts +1 -0
- package/mcp/tools/telegram/typing.ts +6 -116
- package/mcp/tools/video/module.ts +1 -1
- package/mcp/types.ts +5 -0
- package/package.json +2 -1
- package/resource/claude_gateway.jpeg +0 -0
- package/scripts/orchestration/bench-store.cjs +30 -0
- package/scripts/orchestration/inspect.cjs +16 -0
- package/scripts/orchestration/probe-profile.cjs +67 -0
- package/scripts/orchestration/reconcile.cjs +21 -0
- package/scripts/orchestration/smoke-elevenlabs.cjs +90 -0
- package/scripts/orchestration/smoke-media.cjs +70 -0
- package/scripts/orchestration/smoke-text.cjs +101 -0
- package/scripts/orchestration/smoke-vision.cjs +49 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RecordedStt } from './recorded-stt';
|
|
2
|
+
/** Paxa accepts completed recordings, not a realtime transcription stream. */
|
|
3
|
+
export declare function transcribePaxa(audio: Uint8Array, options: {
|
|
4
|
+
provider: string;
|
|
5
|
+
model: string;
|
|
6
|
+
language?: string;
|
|
7
|
+
signal: AbortSignal;
|
|
8
|
+
}, request?: typeof fetch): Promise<string>;
|
|
9
|
+
export declare class PaxaLabsStt extends RecordedStt {
|
|
10
|
+
constructor(id?: string, model?: string, request?: typeof fetch);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=paxalabs-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paxalabs-stt.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/paxalabs-stt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,8EAA8E;AAC9E,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAc5L;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,EAAE,SAAa,EAAE,KAAK,SAA6B,EAAE,OAAO,GAAE,OAAO,KAAa;CAM/F"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PaxaLabsStt = void 0;
|
|
4
|
+
exports.transcribePaxa = transcribePaxa;
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
const recorded_stt_1 = require("./recorded-stt");
|
|
8
|
+
const paxalabs_tts_1 = require("./paxalabs-tts");
|
|
9
|
+
/** Paxa accepts completed recordings, not a realtime transcription stream. */
|
|
10
|
+
async function transcribePaxa(audio, options, request = fetch) {
|
|
11
|
+
const { base, key } = (0, paxalabs_tts_1.paxaConnection)(options.provider);
|
|
12
|
+
if (!key)
|
|
13
|
+
throw new types_1.VoiceError('STT_CREDENTIALS_MISSING');
|
|
14
|
+
if (!audio.length || audio.length > 25 * 1024 * 1024)
|
|
15
|
+
throw new types_1.VoiceError('VOICE_NOTE_SIZE_LIMIT');
|
|
16
|
+
if (options.language && !['th', 'en'].includes(options.language))
|
|
17
|
+
throw new types_1.VoiceError('STT_LANGUAGE_UNSUPPORTED');
|
|
18
|
+
const response = await (0, errors_1.voiceProviderRequest)(new URL('stt', base), {
|
|
19
|
+
method: 'POST', redirect: 'error', signal: options.signal,
|
|
20
|
+
headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
|
|
21
|
+
body: JSON.stringify({ audio: Buffer.from(audio).toString('base64'), model: options.model, ...(options.language ? { language: options.language } : {}) }),
|
|
22
|
+
}, request);
|
|
23
|
+
if (!response.ok)
|
|
24
|
+
throw await (0, errors_1.providerHttpError)('STT', response);
|
|
25
|
+
const result = await response.json();
|
|
26
|
+
if (typeof result.text !== 'string' || Buffer.byteLength(result.text) > 60000)
|
|
27
|
+
throw new types_1.VoiceError('STT_INVALID_RESPONSE');
|
|
28
|
+
return result.text.trim();
|
|
29
|
+
}
|
|
30
|
+
class PaxaLabsStt extends recorded_stt_1.RecordedStt {
|
|
31
|
+
constructor(id = 'paxalabs', model = 'paxa-stt-lite-v1-preview', request = fetch) {
|
|
32
|
+
super(id, model, request, transcribePaxa, language => {
|
|
33
|
+
if (!(0, paxalabs_tts_1.paxaConnection)(id).key)
|
|
34
|
+
throw new types_1.VoiceError('STT_CREDENTIALS_MISSING');
|
|
35
|
+
if (language && !['th', 'en'].includes(language))
|
|
36
|
+
throw new types_1.VoiceError('STT_LANGUAGE_UNSUPPORTED');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.PaxaLabsStt = PaxaLabsStt;
|
|
41
|
+
//# sourceMappingURL=paxalabs-stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paxalabs-stt.js","sourceRoot":"","sources":["../../../src/voice/providers/paxalabs-stt.ts"],"names":[],"mappings":";;;AAMA,wCAcC;AApBD,sCAAoE;AACpE,oCAAsC;AACtC,iDAA6C;AAC7C,iDAAgD;AAEhD,8EAA8E;AACvE,KAAK,UAAU,cAAc,CAAC,KAAiB,EAAE,OAAoF,EAAE,UAAwB,KAAK;IACzK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAA,6BAAc,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,kBAAU,CAAC,yBAAyB,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;QAAE,MAAM,IAAI,kBAAU,CAAC,uBAAuB,CAAC,CAAC;IACpG,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,kBAAU,CAAC,0BAA0B,CAAC,CAAC;IACnH,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAoB,EAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;QAChE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;QACzD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;KAC1J,EAAE,OAAO,CAAC,CAAC;IACZ,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,MAAM,IAAA,0BAAiB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;IAC3D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;QAAE,MAAM,IAAI,kBAAU,CAAC,sBAAsB,CAAC,CAAC;IAC5H,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAa,WAAY,SAAQ,0BAAW;IAC1C,YAAY,EAAE,GAAG,UAAU,EAAE,KAAK,GAAG,0BAA0B,EAAE,UAAwB,KAAK;QAC5F,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE;YACnD,IAAI,CAAC,IAAA,6BAAc,EAAC,EAAE,CAAC,CAAC,GAAG;gBAAE,MAAM,IAAI,kBAAU,CAAC,yBAAyB,CAAC,CAAC;YAC7E,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,kBAAU,CAAC,0BAA0B,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAPD,kCAOC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EncodedAudioTts } from './encoded-audio-tts';
|
|
2
|
+
import { TtsProvider } from '../types';
|
|
3
|
+
import { SocketFactory } from './socket';
|
|
4
|
+
export declare function paxaConnection(provider?: string): {
|
|
5
|
+
base: URL;
|
|
6
|
+
key: string;
|
|
7
|
+
};
|
|
8
|
+
export declare class PaxaLabsTts extends EncodedAudioTts {
|
|
9
|
+
private readonly connection;
|
|
10
|
+
private readonly model;
|
|
11
|
+
private readonly connect;
|
|
12
|
+
readonly capabilities: {
|
|
13
|
+
textStreaming: boolean;
|
|
14
|
+
wordAlignment: boolean;
|
|
15
|
+
outputFormats: import("../types").AudioFormat[];
|
|
16
|
+
};
|
|
17
|
+
constructor(connection: {
|
|
18
|
+
base: URL;
|
|
19
|
+
key: string;
|
|
20
|
+
}, model?: string, connect?: SocketFactory, id?: string);
|
|
21
|
+
protected audio(options: Pick<Parameters<TtsProvider['synthesize']>[0], 'text' | 'voiceId' | 'signal'>): AsyncIterable<Buffer>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=paxalabs-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paxalabs-tts.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/paxalabs-tts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAS,WAAW,EAAc,MAAM,UAAU,CAAC;AAC1D,OAAO,EAA4B,aAAa,EAAE,MAAM,UAAU,CAAC;AAGnE,wBAAgB,cAAc,CAAC,QAAQ,SAAa,GAAG;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIhF;AAED,qBAAa,WAAY,SAAQ,eAAe;IAElC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAA8B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAwB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAD3I,QAAQ,CAAC,YAAY;;;;MAAyE;gBACjE,UAAU,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAmB,KAAK,SAAsB,EAAmB,OAAO,GAAE,aAAwC,EAAE,EAAE,SAAa;cACrL,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;CAsCtI"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PaxaLabsTts = void 0;
|
|
4
|
+
exports.paxaConnection = paxaConnection;
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const encoded_audio_tts_1 = require("./encoded-audio-tts");
|
|
7
|
+
const types_1 = require("../types");
|
|
8
|
+
const socket_1 = require("./socket");
|
|
9
|
+
const upstream_1 = require("./upstream");
|
|
10
|
+
function paxaConnection(provider = 'paxalabs') {
|
|
11
|
+
if (provider === 'managed:paxalabs')
|
|
12
|
+
return (0, upstream_1.upstreamVoiceConnection)('paxalabs', true);
|
|
13
|
+
if (provider === 'upstream:paxalabs')
|
|
14
|
+
return (0, upstream_1.upstreamVoiceConnection)('paxalabs');
|
|
15
|
+
return { base: new URL('https://api.paxalabs.com/v1/'), key: process.env.PAXALABS_API_KEY ?? '' };
|
|
16
|
+
}
|
|
17
|
+
class PaxaLabsTts extends encoded_audio_tts_1.EncodedAudioTts {
|
|
18
|
+
constructor(connection, model = 'paxa-tts-flash-v1', connect = socket_1.openBinaryProviderSocket, id = 'paxalabs') {
|
|
19
|
+
super(id);
|
|
20
|
+
this.connection = connection;
|
|
21
|
+
this.model = model;
|
|
22
|
+
this.connect = connect;
|
|
23
|
+
this.capabilities = { textStreaming: true, wordAlignment: false, outputFormats: [types_1.PCM16] };
|
|
24
|
+
}
|
|
25
|
+
async *audio(options) {
|
|
26
|
+
if (!this.connection.key)
|
|
27
|
+
throw new types_1.VoiceError('TTS_CREDENTIALS_MISSING');
|
|
28
|
+
const url = new URL('tts/live', this.connection.base);
|
|
29
|
+
url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
30
|
+
const socket = await this.connect(url.toString(), { Authorization: `Bearer ${this.connection.key}` }, options.signal);
|
|
31
|
+
let sendError, done = false;
|
|
32
|
+
let cancel;
|
|
33
|
+
const cancelled = new Promise(resolve => { cancel = () => { socket.close(); resolve({ done: true, value: undefined }); }; });
|
|
34
|
+
options.signal.addEventListener('abort', cancel, { once: true });
|
|
35
|
+
if (options.signal.aborted)
|
|
36
|
+
cancel();
|
|
37
|
+
const input = options.text[Symbol.asyncIterator]();
|
|
38
|
+
const sending = (async () => {
|
|
39
|
+
await socket.send({ type: 'start', model: this.model, voice: options.voiceId, format: 'mp3' });
|
|
40
|
+
while (!options.signal.aborted) {
|
|
41
|
+
const next = await Promise.race([input.next(), cancelled]);
|
|
42
|
+
if (next.done || options.signal.aborted)
|
|
43
|
+
break;
|
|
44
|
+
const text = next.value;
|
|
45
|
+
// Respect the provider's per-frame ceiling without splitting surrogate pairs.
|
|
46
|
+
const chars = Array.from(text);
|
|
47
|
+
for (let i = 0; i < chars.length; i += 5000)
|
|
48
|
+
await socket.send({ type: 'text', text: chars.slice(i, i + 5000).join('') });
|
|
49
|
+
}
|
|
50
|
+
if (!options.signal.aborted)
|
|
51
|
+
await socket.send({ type: 'end' });
|
|
52
|
+
})().catch(error => { sendError = error; socket.close(); });
|
|
53
|
+
try {
|
|
54
|
+
for await (const event of socket.messages) {
|
|
55
|
+
if (options.signal.aborted)
|
|
56
|
+
return;
|
|
57
|
+
if (event.type === 'error')
|
|
58
|
+
throw (0, errors_1.providerVoiceError)('TTS', undefined, event);
|
|
59
|
+
if (event.binaryAudio)
|
|
60
|
+
yield Buffer.from(event.binaryAudio);
|
|
61
|
+
if (event.type === 'done') {
|
|
62
|
+
done = true;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
await sending;
|
|
67
|
+
if (sendError)
|
|
68
|
+
throw sendError;
|
|
69
|
+
if (!done && !options.signal.aborted)
|
|
70
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
options.signal.removeEventListener('abort', cancel);
|
|
74
|
+
cancel();
|
|
75
|
+
void input.return?.().catch(() => { });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.PaxaLabsTts = PaxaLabsTts;
|
|
80
|
+
//# sourceMappingURL=paxalabs-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paxalabs-tts.js","sourceRoot":"","sources":["../../../src/voice/providers/paxalabs-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AudioFormat, SttProvider, SttEvent } from '../types';
|
|
2
|
+
import { BoundedQueue } from '../queue';
|
|
3
|
+
/** Shared bounded recording/commit lifecycle for file-based STT providers. */
|
|
4
|
+
export declare class RecordedStt implements SttProvider {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
private readonly model;
|
|
7
|
+
private readonly request;
|
|
8
|
+
private readonly transcribe;
|
|
9
|
+
private readonly validate;
|
|
10
|
+
readonly capabilities: {
|
|
11
|
+
partials: boolean;
|
|
12
|
+
manualCommit: boolean;
|
|
13
|
+
speechActivityEvents: boolean;
|
|
14
|
+
finalizationTimeoutMs: number;
|
|
15
|
+
mode: "batch";
|
|
16
|
+
};
|
|
17
|
+
constructor(id: string, model: string, request: typeof fetch, transcribe: (audio: Uint8Array, options: {
|
|
18
|
+
provider: string;
|
|
19
|
+
model: string;
|
|
20
|
+
language?: string;
|
|
21
|
+
signal: AbortSignal;
|
|
22
|
+
}, request: typeof fetch) => Promise<string>, validate: (language?: string) => void);
|
|
23
|
+
open(options: {
|
|
24
|
+
format: AudioFormat;
|
|
25
|
+
language?: string;
|
|
26
|
+
signal: AbortSignal;
|
|
27
|
+
}): Promise<{
|
|
28
|
+
events: BoundedQueue<SttEvent>;
|
|
29
|
+
pushAudio: (frame: Uint8Array) => Promise<void>;
|
|
30
|
+
commitSegment: (commitId: string) => Promise<void>;
|
|
31
|
+
close: () => Promise<void>;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=recorded-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorded-stt.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/recorded-stt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAc,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,8EAA8E;AAC9E,qBAAa,WAAY,YAAW,WAAW;IAEjC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAgB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAuJ,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADpT,QAAQ,CAAC,YAAY;;;;;;MAA8H;gBAC9H,EAAE,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM,EAAmB,OAAO,EAAE,OAAO,KAAK,EAAmB,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,EAAmB,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI;IAC3U,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE;;2BAWtD,UAAU;kCAKH,MAAM;;;CAc3C"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecordedStt = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const queue_1 = require("../queue");
|
|
6
|
+
const wav_1 = require("../wav");
|
|
7
|
+
/** Shared bounded recording/commit lifecycle for file-based STT providers. */
|
|
8
|
+
class RecordedStt {
|
|
9
|
+
constructor(id, model, request, transcribe, validate) {
|
|
10
|
+
this.id = id;
|
|
11
|
+
this.model = model;
|
|
12
|
+
this.request = request;
|
|
13
|
+
this.transcribe = transcribe;
|
|
14
|
+
this.validate = validate;
|
|
15
|
+
this.capabilities = { partials: false, manualCommit: true, speechActivityEvents: false, finalizationTimeoutMs: 65000, mode: 'batch' };
|
|
16
|
+
}
|
|
17
|
+
async open(options) {
|
|
18
|
+
if (options.format.encoding !== 'pcm_s16le' || options.format.channels !== 1 || options.format.sampleRate !== 16000)
|
|
19
|
+
throw new types_1.VoiceError('UNSUPPORTED_AUDIO_FORMAT');
|
|
20
|
+
this.validate(options.language);
|
|
21
|
+
const abort = new AbortController();
|
|
22
|
+
const signal = AbortSignal.any([abort.signal, options.signal]);
|
|
23
|
+
const events = new queue_1.BoundedQueue(131072, e => JSON.stringify(e).length);
|
|
24
|
+
let frames = [], size = 0, busy = false, segment = 0;
|
|
25
|
+
const close = () => { frames = []; size = 0; events.close(); };
|
|
26
|
+
signal.addEventListener('abort', close, { once: true });
|
|
27
|
+
return {
|
|
28
|
+
events,
|
|
29
|
+
pushAudio: async (frame) => {
|
|
30
|
+
signal.throwIfAborted();
|
|
31
|
+
if (size + frame.length > 16000 * 2 * 60)
|
|
32
|
+
throw new types_1.VoiceError('AUDIO_TOO_LARGE');
|
|
33
|
+
frames.push(Buffer.from(frame));
|
|
34
|
+
size += frame.length;
|
|
35
|
+
},
|
|
36
|
+
commitSegment: async (commitId) => {
|
|
37
|
+
signal.throwIfAborted();
|
|
38
|
+
if (busy)
|
|
39
|
+
throw new types_1.VoiceError('COMMIT_IN_PROGRESS');
|
|
40
|
+
const recording = Buffer.concat(frames);
|
|
41
|
+
frames = [];
|
|
42
|
+
size = 0;
|
|
43
|
+
busy = true;
|
|
44
|
+
try {
|
|
45
|
+
const text = recording.length ? await this.transcribe((0, wav_1.pcmToWav)(recording), { provider: this.id, model: this.model, language: options.language, signal: AbortSignal.any([signal, AbortSignal.timeout(60000)]) }, this.request) : '';
|
|
46
|
+
signal.throwIfAborted();
|
|
47
|
+
events.push({ type: 'segment_final', segmentId: String(segment++), text });
|
|
48
|
+
events.push({ type: 'commit_done', commitId });
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
busy = false;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
close: async () => { abort.abort(); signal.removeEventListener('abort', close); close(); },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.RecordedStt = RecordedStt;
|
|
59
|
+
//# sourceMappingURL=recorded-stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorded-stt.js","sourceRoot":"","sources":["../../../src/voice/providers/recorded-stt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SttProvider, TtsProvider } from '../types';
|
|
2
|
+
export declare function sttProvider(config: {
|
|
3
|
+
provider: string;
|
|
4
|
+
model: string;
|
|
5
|
+
}): SttProvider;
|
|
6
|
+
export declare function ttsProvider(config: {
|
|
7
|
+
provider: string;
|
|
8
|
+
model: string;
|
|
9
|
+
}): TtsProvider;
|
|
10
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,MAAM,UAAU,CAAC;AA6BhE,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAOpF;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAapF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sttProvider = sttProvider;
|
|
4
|
+
exports.ttsProvider = ttsProvider;
|
|
5
|
+
const managed_quota_1 = require("../managed-quota");
|
|
6
|
+
const openrouter_1 = require("./openrouter");
|
|
7
|
+
const model_ref_1 = require("./model-ref");
|
|
8
|
+
const gemini_1 = require("./gemini");
|
|
9
|
+
const gemini_live_stt_1 = require("./gemini-live-stt");
|
|
10
|
+
const paxalabs_stt_1 = require("./paxalabs-stt");
|
|
11
|
+
const paxalabs_tts_1 = require("./paxalabs-tts");
|
|
12
|
+
const upstream_1 = require("./upstream");
|
|
13
|
+
const types_1 = require("../types");
|
|
14
|
+
const elevenlabs_stt_1 = require("./elevenlabs-stt");
|
|
15
|
+
const elevenlabs_tts_1 = require("./elevenlabs-tts");
|
|
16
|
+
const deepgram_stt_1 = require("./deepgram-stt");
|
|
17
|
+
const cartesia_tts_1 = require("./cartesia-tts");
|
|
18
|
+
function makeSttProvider(config) {
|
|
19
|
+
config = { ...config, provider: (0, model_ref_1.canonicalVoiceProvider)(config.provider), model: (0, model_ref_1.nativeVoiceModel)(config.provider, config.model) };
|
|
20
|
+
if (['openrouter', 'upstream:openrouter'].includes(config.provider))
|
|
21
|
+
return new openrouter_1.OpenRouterStt(config.provider, config.model);
|
|
22
|
+
if (['gemini', 'upstream:gemini'].includes(config.provider))
|
|
23
|
+
return config.model === 'gemini-3.5-transcribe-live' ? new gemini_live_stt_1.GeminiLiveStt(config.provider, config.model) : new gemini_1.GeminiStt(config.provider, config.model);
|
|
24
|
+
if (config.provider === 'managed:elevenlabs')
|
|
25
|
+
return new elevenlabs_stt_1.ElevenLabsStt((0, upstream_1.upstreamVoiceConnection)('elevenlabs', true).key, config.model, upstream_1.managedVoiceSocket, config.provider);
|
|
26
|
+
if (config.provider === 'upstream:elevenlabs')
|
|
27
|
+
return new elevenlabs_stt_1.ElevenLabsStt((0, upstream_1.upstreamVoiceConnection)().key, config.model, upstream_1.upstreamVoiceSocket, 'upstream:elevenlabs');
|
|
28
|
+
if (config.provider === 'elevenlabs')
|
|
29
|
+
return new elevenlabs_stt_1.ElevenLabsStt(process.env.ELEVENLABS_API_KEY ?? '', config.model);
|
|
30
|
+
if (['paxalabs', 'upstream:paxalabs', 'managed:paxalabs'].includes(config.provider))
|
|
31
|
+
return new paxalabs_stt_1.PaxaLabsStt(config.provider, config.model);
|
|
32
|
+
if (config.provider === 'deepgram')
|
|
33
|
+
return new deepgram_stt_1.DeepgramStt(process.env.DEEPGRAM_API_KEY ?? '', config.model);
|
|
34
|
+
throw new types_1.VoiceError('UNKNOWN_STT_PROVIDER');
|
|
35
|
+
}
|
|
36
|
+
function makeTtsProvider(config) {
|
|
37
|
+
config = { ...config, provider: (0, model_ref_1.canonicalVoiceProvider)(config.provider), model: (0, model_ref_1.nativeVoiceModel)(config.provider, config.model) };
|
|
38
|
+
if (['openrouter', 'upstream:openrouter'].includes(config.provider))
|
|
39
|
+
return new openrouter_1.OpenRouterTts(config.provider, config.model);
|
|
40
|
+
if (['gemini', 'upstream:gemini'].includes(config.provider))
|
|
41
|
+
return new gemini_1.GeminiTts(config.provider, config.model);
|
|
42
|
+
if (config.provider === 'managed:elevenlabs')
|
|
43
|
+
return new elevenlabs_tts_1.ElevenLabsTts((0, upstream_1.upstreamVoiceConnection)('elevenlabs', true).key, config.model, upstream_1.managedVoiceSocket, config.provider);
|
|
44
|
+
if (config.provider === 'upstream:elevenlabs')
|
|
45
|
+
return new elevenlabs_tts_1.ElevenLabsTts((0, upstream_1.upstreamVoiceConnection)().key, config.model, upstream_1.upstreamVoiceSocket, 'upstream:elevenlabs');
|
|
46
|
+
if (config.provider === 'elevenlabs')
|
|
47
|
+
return new elevenlabs_tts_1.ElevenLabsTts(process.env.ELEVENLABS_API_KEY ?? '', config.model);
|
|
48
|
+
if (['paxalabs', 'upstream:paxalabs', 'managed:paxalabs'].includes(config.provider))
|
|
49
|
+
return new paxalabs_tts_1.PaxaLabsTts((0, paxalabs_tts_1.paxaConnection)(config.provider), config.model, undefined, config.provider);
|
|
50
|
+
if (config.provider === 'cartesia')
|
|
51
|
+
return new cartesia_tts_1.CartesiaTts(process.env.CARTESIA_API_KEY ?? '', config.model);
|
|
52
|
+
throw new types_1.VoiceError('UNKNOWN_TTS_PROVIDER');
|
|
53
|
+
}
|
|
54
|
+
function sttProvider(config) {
|
|
55
|
+
const provider = makeSttProvider(config);
|
|
56
|
+
if (!config.provider.startsWith('managed:'))
|
|
57
|
+
return provider;
|
|
58
|
+
return { id: provider.id, capabilities: provider.capabilities, async open(options) {
|
|
59
|
+
await (0, managed_quota_1.requireManagedVoiceCredit)(config.provider, undefined, options.signal);
|
|
60
|
+
return provider.open(options);
|
|
61
|
+
} };
|
|
62
|
+
}
|
|
63
|
+
function ttsProvider(config) {
|
|
64
|
+
const provider = makeTtsProvider(config);
|
|
65
|
+
if (!config.provider.startsWith('managed:'))
|
|
66
|
+
return provider;
|
|
67
|
+
return { id: provider.id, capabilities: provider.capabilities,
|
|
68
|
+
synthesizeFile: provider.synthesizeFile ? async (options) => {
|
|
69
|
+
await (0, managed_quota_1.requireManagedVoiceCredit)(config.provider, undefined, options.signal);
|
|
70
|
+
return provider.synthesizeFile(options);
|
|
71
|
+
} : undefined,
|
|
72
|
+
async *synthesize(options) {
|
|
73
|
+
await (0, managed_quota_1.requireManagedVoiceCredit)(config.provider, undefined, options.signal);
|
|
74
|
+
yield* provider.synthesize(options);
|
|
75
|
+
}, };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/voice/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ProviderSocket {
|
|
2
|
+
messages: AsyncIterable<Record<string, any>>;
|
|
3
|
+
send(value: unknown): Promise<void>;
|
|
4
|
+
audio(value: Uint8Array): Promise<void>;
|
|
5
|
+
close(): void;
|
|
6
|
+
}
|
|
7
|
+
export type SocketFactory = (url: string, headers: Record<string, string>, signal: AbortSignal) => Promise<ProviderSocket>;
|
|
8
|
+
export declare const openProviderSocket: SocketFactory;
|
|
9
|
+
export declare const openBinaryProviderSocket: SocketFactory;
|
|
10
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/socket.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;CAAE;AAC9K,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3H,eAAO,MAAM,kBAAkB,EAAE,aAAiF,CAAC;AACnH,eAAO,MAAM,wBAAwB,EAAE,aAAgF,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.openBinaryProviderSocket = exports.openProviderSocket = void 0;
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const ws_1 = __importDefault(require("ws"));
|
|
9
|
+
const queue_1 = require("../queue");
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
const openProviderSocket = (url, headers, signal) => openSocket(url, headers, signal, false);
|
|
12
|
+
exports.openProviderSocket = openProviderSocket;
|
|
13
|
+
const openBinaryProviderSocket = (url, headers, signal) => openSocket(url, headers, signal, true);
|
|
14
|
+
exports.openBinaryProviderSocket = openBinaryProviderSocket;
|
|
15
|
+
const openSocket = async (url, headers, signal, binaryAudio) => {
|
|
16
|
+
signal.throwIfAborted();
|
|
17
|
+
const ws = new ws_1.default(url, { headers, maxPayload: 4 * 1024 * 1024, handshakeTimeout: 10000 });
|
|
18
|
+
const messages = new queue_1.BoundedQueue(4 * 1024 * 1024, value => Buffer.byteLength(JSON.stringify(value)));
|
|
19
|
+
let opened = false;
|
|
20
|
+
let handshakeError;
|
|
21
|
+
const close = () => { ws.terminate(); messages.close(); };
|
|
22
|
+
const abort = () => { messages.close(new types_1.VoiceError('PROVIDER_ABORTED')); ws.terminate(); };
|
|
23
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
24
|
+
ws.on('message', (data, binary) => {
|
|
25
|
+
try {
|
|
26
|
+
messages.push(binaryAudio && binary ? { binaryAudio: data } : JSON.parse(data.toString()));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
messages.close(new types_1.VoiceError('INVALID_PROVIDER_MESSAGE'));
|
|
30
|
+
ws.terminate();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
ws.on('error', () => messages.close(handshakeError ?? new types_1.VoiceError('PROVIDER_CONNECTION_FAILED')));
|
|
34
|
+
ws.on('close', (code, reason) => {
|
|
35
|
+
signal.removeEventListener('abort', abort);
|
|
36
|
+
// Managed relays can exhaust a daily quota after the socket has opened.
|
|
37
|
+
// Preserve that diagnostic instead of turning it into a generic reconnect.
|
|
38
|
+
if (code === 1008 && reason.length) {
|
|
39
|
+
try {
|
|
40
|
+
const diagnostic = JSON.parse(reason.toString());
|
|
41
|
+
messages.close((0, errors_1.providerVoiceError)('VOICE', diagnostic?.error?.status, diagnostic));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
catch { /* native non-JSON close reason */ }
|
|
45
|
+
}
|
|
46
|
+
messages.close();
|
|
47
|
+
});
|
|
48
|
+
await new Promise((resolve, reject) => {
|
|
49
|
+
ws.once('unexpected-response', (_request, response) => {
|
|
50
|
+
const parts = [];
|
|
51
|
+
let size = 0, finished = false;
|
|
52
|
+
const finish = () => {
|
|
53
|
+
if (finished)
|
|
54
|
+
return;
|
|
55
|
+
finished = true;
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
let payload;
|
|
58
|
+
try {
|
|
59
|
+
payload = JSON.parse(Buffer.concat(parts).toString());
|
|
60
|
+
}
|
|
61
|
+
catch { /* no structured diagnostic */ }
|
|
62
|
+
handshakeError = (0, errors_1.providerVoiceError)('VOICE', response.statusCode, payload);
|
|
63
|
+
messages.close(handshakeError);
|
|
64
|
+
reject(handshakeError);
|
|
65
|
+
response.destroy();
|
|
66
|
+
ws.terminate();
|
|
67
|
+
};
|
|
68
|
+
const timer = setTimeout(finish, 2000);
|
|
69
|
+
response.on('data', (part) => { size += part.length; if (size <= 16384)
|
|
70
|
+
parts.push(part);
|
|
71
|
+
else
|
|
72
|
+
finish(); });
|
|
73
|
+
response.once('end', finish);
|
|
74
|
+
response.once('error', finish);
|
|
75
|
+
response.once('aborted', finish);
|
|
76
|
+
});
|
|
77
|
+
ws.once('open', () => { opened = true; resolve(); });
|
|
78
|
+
ws.once('error', () => reject(new types_1.VoiceError('PROVIDER_CONNECTION_FAILED')));
|
|
79
|
+
ws.once('close', () => { if (!opened)
|
|
80
|
+
reject(new types_1.VoiceError('PROVIDER_CONNECTION_CLOSED')); });
|
|
81
|
+
});
|
|
82
|
+
const send = (value) => {
|
|
83
|
+
if (signal.aborted || ws.readyState !== ws_1.default.OPEN)
|
|
84
|
+
return Promise.reject(new types_1.VoiceError('PROVIDER_CONNECTION_CLOSED'));
|
|
85
|
+
if (ws.bufferedAmount > 1024 * 1024)
|
|
86
|
+
return Promise.reject(new types_1.VoiceError('PROVIDER_TOO_SLOW'));
|
|
87
|
+
return new Promise((resolve, reject) => ws.send(value, error => error ? reject(new types_1.VoiceError('PROVIDER_SEND_FAILED')) : resolve()));
|
|
88
|
+
};
|
|
89
|
+
return { messages, send: value => send(JSON.stringify(value)), audio: send, close };
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/voice/providers/socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SocketFactory } from './socket';
|
|
2
|
+
/** Reuses the pod's existing provider credentials; never exposes upstream BYOK keys. */
|
|
3
|
+
export declare function upstreamVoiceConnection(provider?: 'elevenlabs' | 'paxalabs' | 'gemini' | 'openrouter', managed?: boolean): {
|
|
4
|
+
base: URL;
|
|
5
|
+
key: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const upstreamVoiceSocket: SocketFactory;
|
|
8
|
+
export declare const managedVoiceSocket: SocketFactory;
|
|
9
|
+
//# sourceMappingURL=upstream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/upstream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,QAAQ,GAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,YAA2B,EAAE,OAAO,UAAQ,GAAG;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CA+BjK;AACD,eAAO,MAAM,mBAAmB,EAAE,aAAuC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,EAAE,aAAsC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.managedVoiceSocket = exports.upstreamVoiceSocket = void 0;
|
|
4
|
+
exports.upstreamVoiceConnection = upstreamVoiceConnection;
|
|
5
|
+
const claude_settings_1 = require("../../config/claude-settings");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
const socket_1 = require("./socket");
|
|
8
|
+
/** Reuses the pod's existing provider credentials; never exposes upstream BYOK keys. */
|
|
9
|
+
function upstreamVoiceConnection(provider = 'elevenlabs', managed = false) {
|
|
10
|
+
// Claude Code applies settings.json over inherited environment. Resolve the
|
|
11
|
+
// credential group together so a settings identity never uses another token.
|
|
12
|
+
const settings = (0, claude_settings_1.claudeSettingsEnv)();
|
|
13
|
+
const credentialKeys = ['ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_API_KEY', 'CLAUDE_CODE_OAUTH_TOKEN'];
|
|
14
|
+
const credentials = credentialKeys.some(key => key in settings) ? settings : process.env;
|
|
15
|
+
const clean = (value) => typeof value === 'string' && value.trim() === value && !/[\x00-\x1f\x7f]/.test(value) ? value : '';
|
|
16
|
+
const endpoint = 'ANTHROPIC_BASE_URL' in settings ? settings.ANTHROPIC_BASE_URL : process.env.ANTHROPIC_BASE_URL;
|
|
17
|
+
let base;
|
|
18
|
+
try {
|
|
19
|
+
base = new URL(clean(endpoint));
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new types_1.VoiceError('INVALID_UPSTREAM_VOICE_URL');
|
|
23
|
+
}
|
|
24
|
+
if (!['https:', 'http:'].includes(base.protocol) ||
|
|
25
|
+
base.username ||
|
|
26
|
+
base.password ||
|
|
27
|
+
base.search ||
|
|
28
|
+
base.hash)
|
|
29
|
+
throw new types_1.VoiceError('INVALID_UPSTREAM_VOICE_URL');
|
|
30
|
+
if (base.protocol === 'http:' &&
|
|
31
|
+
!['localhost', '127.0.0.1', '[::1]'].includes(base.hostname))
|
|
32
|
+
throw new types_1.VoiceError('INVALID_UPSTREAM_VOICE_URL');
|
|
33
|
+
base.pathname = `/v1/voice/${managed ? 'managed/' : ''}${provider}/`;
|
|
34
|
+
const key = credentialKeys.map(name => clean(credentials[name])).find(Boolean) ?? '';
|
|
35
|
+
if (!key)
|
|
36
|
+
throw new types_1.VoiceError('UPSTREAM_VOICE_CREDENTIALS_MISSING');
|
|
37
|
+
return { base, key };
|
|
38
|
+
}
|
|
39
|
+
exports.upstreamVoiceSocket = relayVoiceSocket(false);
|
|
40
|
+
exports.managedVoiceSocket = relayVoiceSocket(true);
|
|
41
|
+
function relayVoiceSocket(managed) {
|
|
42
|
+
return async (upstream, _headers, signal) => {
|
|
43
|
+
const { base, key } = upstreamVoiceConnection('elevenlabs', managed);
|
|
44
|
+
const source = new URL(upstream);
|
|
45
|
+
const url = new URL(source.pathname.replace(/^\/v1\//, ''), base);
|
|
46
|
+
url.search = source.search;
|
|
47
|
+
url.protocol = base.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
48
|
+
return (0, socket_1.openProviderSocket)(url.toString(), { Authorization: `Bearer ${key}` }, signal);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=upstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../../src/voice/providers/upstream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface VoiceChoice {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
gender?: string;
|
|
5
|
+
supported_model_ids?: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function voiceChoices(config: {
|
|
8
|
+
provider: string;
|
|
9
|
+
voiceId: string;
|
|
10
|
+
model?: string;
|
|
11
|
+
}): Promise<VoiceChoice[]>;
|
|
12
|
+
export declare function resolveVoiceId(config: {
|
|
13
|
+
provider: string;
|
|
14
|
+
voiceId: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
}): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=voice-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-catalog.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/voice-catalog.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;AAuF1G,wBAAsB,YAAY,CAAC,MAAM,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAA;CAAC,GAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAU/G;AAID,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBjH"}
|