@0xmaxma/claude-gateway 1.8.13 → 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 -1605
- package/config.template.json +7 -1
- package/dist/agent/runner.d.ts +394 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +867 -38
- 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 +372 -11
- 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/api/wechat-access.d.ts +45 -0
- package/dist/api/wechat-access.d.ts.map +1 -0
- package/dist/api/wechat-access.js +48 -0
- package/dist/api/wechat-access.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 +12 -1
- package/dist/history/types.d.ts.map +1 -1
- package/dist/history/types.js +10 -1
- package/dist/history/types.js.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 +144 -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 +54 -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 +207 -0
- package/dist/wechat/ilink-client.d.ts.map +1 -0
- package/dist/wechat/ilink-client.js +660 -0
- package/dist/wechat/ilink-client.js.map +1 -0
- package/dist/wechat/manager.d.ts +93 -0
- package/dist/wechat/manager.d.ts.map +1 -0
- package/dist/wechat/manager.js +409 -0
- package/dist/wechat/manager.js.map +1 -0
- 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 -35
- 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/tools/wechat/client.ts +49 -0
- package/mcp/tools/wechat/module.ts +88 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"mp3.d.ts","sourceRoot":"","sources":["../../src/voice/mp3.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,KAAK,EAAC,UAAU,GAAE,MAAM,CAiBrD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mp3DurationMs = mp3DurationMs;
|
|
4
|
+
/** Duration of bounded MPEG Layer III output. Count complete frames, skipping ID3 metadata. */
|
|
5
|
+
function mp3DurationMs(bytes) {
|
|
6
|
+
let offset = 0, seconds = 0, frames = 0;
|
|
7
|
+
if (bytes.length >= 10 && bytes[0] === 73 && bytes[1] === 68 && bytes[2] === 51) {
|
|
8
|
+
offset = 10 + ((bytes[6] & 127) * 2097152 + (bytes[7] & 127) * 16384 + (bytes[8] & 127) * 128 + (bytes[9] & 127)) + (bytes[5] & 16 ? 10 : 0);
|
|
9
|
+
}
|
|
10
|
+
while (offset + 4 <= bytes.length) {
|
|
11
|
+
const a = bytes[offset], b = bytes[offset + 1], c = bytes[offset + 2];
|
|
12
|
+
const version = (b >> 3) & 3, layer = (b >> 1) & 3, rate = (c >> 2) & 3, index = c >> 4;
|
|
13
|
+
if (a !== 255 || (b & 224) !== 224 || version === 1 || layer !== 1 || rate === 3 || index === 0 || index === 15) {
|
|
14
|
+
offset++;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const bitrates = version === 3 ? [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320] : [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];
|
|
18
|
+
const sampleRate = [44100, 48000, 32000][rate] / (version === 3 ? 1 : version === 2 ? 2 : 4);
|
|
19
|
+
const size = Math.floor((version === 3 ? 144 : 72) * bitrates[index] * 1000 / sampleRate) + ((c >> 1) & 1);
|
|
20
|
+
if (offset + size > bytes.length)
|
|
21
|
+
break;
|
|
22
|
+
seconds += (version === 3 ? 1152 : 576) / sampleRate;
|
|
23
|
+
frames++;
|
|
24
|
+
offset += size;
|
|
25
|
+
}
|
|
26
|
+
if (!frames)
|
|
27
|
+
throw Error('INVALID_MP3');
|
|
28
|
+
return Math.ceil(seconds * 1000);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mp3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mp3.js","sourceRoot":"","sources":["../../src/voice/mp3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Uploaded voice notes use the file API, not a realtime PCM socket. */
|
|
2
|
+
export declare function transcribeVoiceNote(path: string, options: {
|
|
3
|
+
provider: string;
|
|
4
|
+
model: string;
|
|
5
|
+
language?: string;
|
|
6
|
+
}, request?: typeof fetch): Promise<string>;
|
|
7
|
+
/** Keep provider diagnostics consistent across chat channels and browser voice. */
|
|
8
|
+
export declare function voiceNoteFailureMessage(code: string): string;
|
|
9
|
+
//# sourceMappingURL=notes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/voice/notes.ts"],"names":[],"mappings":"AAWA,wEAAwE;AACxE,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BvK;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transcribeVoiceNote = transcribeVoiceNote;
|
|
4
|
+
exports.voiceNoteFailureMessage = voiceNoteFailureMessage;
|
|
5
|
+
const managed_quota_1 = require("./managed-quota");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
const model_ref_1 = require("./providers/model-ref");
|
|
8
|
+
const openrouter_1 = require("./providers/openrouter");
|
|
9
|
+
const gemini_1 = require("./providers/gemini");
|
|
10
|
+
const paxalabs_stt_1 = require("./providers/paxalabs-stt");
|
|
11
|
+
const upstream_1 = require("./providers/upstream");
|
|
12
|
+
const promises_1 = require("fs/promises");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const types_1 = require("../orchestration/types");
|
|
15
|
+
/** Uploaded voice notes use the file API, not a realtime PCM socket. */
|
|
16
|
+
async function transcribeVoiceNote(path, options, request = fetch) {
|
|
17
|
+
options = { ...options, provider: (0, model_ref_1.canonicalVoiceProvider)(options.provider), model: (0, model_ref_1.nativeVoiceModel)(options.provider, options.model) };
|
|
18
|
+
await (0, managed_quota_1.requireManagedVoiceCredit)(options.provider, request);
|
|
19
|
+
if (['paxalabs', 'upstream:paxalabs', 'managed:paxalabs', 'gemini', 'upstream:gemini', 'openrouter', 'upstream:openrouter'].includes(options.provider)) {
|
|
20
|
+
const info = await (0, promises_1.stat)(path);
|
|
21
|
+
if (!info.isFile() || !info.size || info.size > 25 * 1024 * 1024)
|
|
22
|
+
throw new types_1.OrchestrationError('VOICE_NOTE_SIZE_LIMIT');
|
|
23
|
+
const text = await (options.provider.includes('gemini') ? gemini_1.transcribeGemini : options.provider.includes('openrouter') ? openrouter_1.transcribeOpenRouter : paxalabs_stt_1.transcribePaxa)(await (0, promises_1.readFile)(path), { ...options, signal: AbortSignal.timeout(60000) }, request);
|
|
24
|
+
if (!text)
|
|
25
|
+
throw new types_1.OrchestrationError('VOICE_NOTE_NO_TRANSCRIPT');
|
|
26
|
+
return text;
|
|
27
|
+
}
|
|
28
|
+
if (!['elevenlabs', 'upstream:elevenlabs', 'managed:elevenlabs'].includes(options.provider))
|
|
29
|
+
throw new types_1.OrchestrationError('VOICE_NOTE_PROVIDER_UNSUPPORTED');
|
|
30
|
+
const upstream = options.provider === 'managed:elevenlabs' ? (0, upstream_1.upstreamVoiceConnection)('elevenlabs', true) : options.provider === 'upstream:elevenlabs' ? (0, upstream_1.upstreamVoiceConnection)() : undefined;
|
|
31
|
+
const key = upstream?.key || process.env.ELEVENLABS_API_KEY;
|
|
32
|
+
if (!key)
|
|
33
|
+
throw new types_1.OrchestrationError('STT_CREDENTIALS_MISSING');
|
|
34
|
+
const info = await (0, promises_1.stat)(path);
|
|
35
|
+
if (!info.isFile() || !info.size || info.size > 20 * 1024 * 1024)
|
|
36
|
+
throw new types_1.OrchestrationError('VOICE_NOTE_SIZE_LIMIT');
|
|
37
|
+
const data = new FormData();
|
|
38
|
+
data.set('model_id', options.model);
|
|
39
|
+
data.set('file', new Blob([new Uint8Array(await (0, promises_1.readFile)(path))]), (0, path_1.basename)(path));
|
|
40
|
+
data.set('tag_audio_events', 'false');
|
|
41
|
+
data.set('diarize', 'false');
|
|
42
|
+
if (options.language)
|
|
43
|
+
data.set('language_code', options.language);
|
|
44
|
+
const response = await (0, errors_1.voiceProviderRequest)(upstream ? new URL('speech-to-text', upstream.base).toString() : 'https://api.elevenlabs.io/v1/speech-to-text', {
|
|
45
|
+
method: 'POST', headers: upstream ? { Authorization: `Bearer ${key}` } : { 'xi-api-key': key }, body: data, signal: AbortSignal.timeout(60000), redirect: 'error',
|
|
46
|
+
}, request);
|
|
47
|
+
if (!response.ok)
|
|
48
|
+
throw await (0, errors_1.providerHttpError)('STT', response);
|
|
49
|
+
const result = await response.json();
|
|
50
|
+
if (typeof result.text !== 'string' || !result.text.trim() || Buffer.byteLength(result.text) > 60000)
|
|
51
|
+
throw new types_1.OrchestrationError('VOICE_NOTE_NO_TRANSCRIPT');
|
|
52
|
+
return result.text.trim();
|
|
53
|
+
}
|
|
54
|
+
/** Keep provider diagnostics consistent across chat channels and browser voice. */
|
|
55
|
+
function voiceNoteFailureMessage(code) {
|
|
56
|
+
const local = {
|
|
57
|
+
VOICE_NOTE_NO_TRANSCRIPT: 'No speech was detected in the voice note. Please record it again or type your message.',
|
|
58
|
+
VOICE_NOTE_SIZE_LIMIT: 'The voice note is empty or exceeds the provider file size limit. Please send a shorter recording.',
|
|
59
|
+
VOICE_NOTES_DISABLED: 'Voice message transcription is disabled for this agent.',
|
|
60
|
+
VOICE_NOTE_ATTACHMENT_MISSING: 'The voice note attachment is missing. Please resend it or type your message.',
|
|
61
|
+
VOICE_NOTE_PROVIDER_UNSUPPORTED: 'The selected provider does not support voice message transcription. Check the voice message STT settings.',
|
|
62
|
+
VOICE_NOTE_INTERRUPTED: 'Voice note transcription was interrupted. Please resend it or type your message.',
|
|
63
|
+
};
|
|
64
|
+
if (Object.prototype.hasOwnProperty.call(local, code))
|
|
65
|
+
return local[code];
|
|
66
|
+
return `Voice note could not be transcribed. ${(0, errors_1.describeVoiceError)(code).message}`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/voice/notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TtsAudioChunk } from './types';
|
|
2
|
+
export declare class VoicePlayback {
|
|
3
|
+
readonly generation: `${string}-${string}-${string}-${string}-${string}`;
|
|
4
|
+
private epochValue;
|
|
5
|
+
private controller;
|
|
6
|
+
private sentSamples;
|
|
7
|
+
private playedSamples;
|
|
8
|
+
private lastChunkSeq;
|
|
9
|
+
get epoch(): number;
|
|
10
|
+
get signal(): AbortSignal;
|
|
11
|
+
clear(incomingEpoch?: number): number;
|
|
12
|
+
accept(epoch: number, chunk: TtsAudioChunk): boolean;
|
|
13
|
+
progress(epoch: number, samples: number): void;
|
|
14
|
+
snapshot(): {
|
|
15
|
+
generation: string;
|
|
16
|
+
epoch: number;
|
|
17
|
+
generatedSamples: number;
|
|
18
|
+
playedSamples: number;
|
|
19
|
+
};
|
|
20
|
+
close(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/voice/playback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAc,MAAM,SAAS,CAAC;AAEpD,qBAAa,aAAa;IACxB,QAAQ,CAAC,UAAU,sDAAgB;IACnC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAM;IAC1B,IAAI,KAAK,IAAI,MAAM,CAA4B;IAC/C,IAAI,MAAM,IAAI,WAAW,CAAmC;IAC5D,KAAK,CAAC,aAAa,SAAsB,GAAG,MAAM;IAOlD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO;IAMpD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9C,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAGlG,KAAK,IAAI,IAAI;CACd"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VoicePlayback = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
class VoicePlayback {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.generation = (0, crypto_1.randomUUID)();
|
|
9
|
+
this.epochValue = 0;
|
|
10
|
+
this.controller = new AbortController();
|
|
11
|
+
this.sentSamples = 0;
|
|
12
|
+
this.playedSamples = 0;
|
|
13
|
+
this.lastChunkSeq = -1;
|
|
14
|
+
}
|
|
15
|
+
get epoch() { return this.epochValue; }
|
|
16
|
+
get signal() { return this.controller.signal; }
|
|
17
|
+
clear(incomingEpoch = this.epochValue + 1) {
|
|
18
|
+
if (!Number.isSafeInteger(incomingEpoch) || incomingEpoch < 0 || incomingEpoch > 0xffffffff)
|
|
19
|
+
throw new types_1.VoiceError('INVALID_EPOCH');
|
|
20
|
+
if (incomingEpoch <= this.epochValue)
|
|
21
|
+
return this.epochValue;
|
|
22
|
+
this.controller.abort();
|
|
23
|
+
this.controller = new AbortController();
|
|
24
|
+
this.epochValue = incomingEpoch;
|
|
25
|
+
this.sentSamples = 0;
|
|
26
|
+
this.playedSamples = 0;
|
|
27
|
+
this.lastChunkSeq = -1;
|
|
28
|
+
return this.epochValue;
|
|
29
|
+
}
|
|
30
|
+
accept(epoch, chunk) {
|
|
31
|
+
if (epoch !== this.epochValue)
|
|
32
|
+
return false;
|
|
33
|
+
if (chunk.chunkSeq !== this.lastChunkSeq + 1 || chunk.bytes.length % 2)
|
|
34
|
+
throw new types_1.VoiceError('INVALID_AUDIO_CHUNK');
|
|
35
|
+
this.lastChunkSeq = chunk.chunkSeq;
|
|
36
|
+
this.sentSamples += chunk.bytes.length / 2;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
progress(epoch, samples) {
|
|
40
|
+
if (epoch !== this.epochValue)
|
|
41
|
+
return;
|
|
42
|
+
if (!Number.isSafeInteger(samples) || samples < this.playedSamples || samples > this.sentSamples)
|
|
43
|
+
throw new types_1.VoiceError('INVALID_PLAYBACK_PROGRESS');
|
|
44
|
+
this.playedSamples = samples;
|
|
45
|
+
}
|
|
46
|
+
snapshot() {
|
|
47
|
+
return { generation: this.generation, epoch: this.epochValue, generatedSamples: this.sentSamples, playedSamples: this.playedSamples };
|
|
48
|
+
}
|
|
49
|
+
close() { this.controller.abort(); }
|
|
50
|
+
}
|
|
51
|
+
exports.VoicePlayback = VoicePlayback;
|
|
52
|
+
//# sourceMappingURL=playback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../src/voice/playback.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,mCAAoD;AAEpD,MAAa,aAAa;IAA1B;QACW,eAAU,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC3B,eAAU,GAAG,CAAC,CAAC;QACf,eAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,gBAAW,GAAG,CAAC,CAAC;QAChB,kBAAa,GAAG,CAAC,CAAC;QAClB,iBAAY,GAAG,CAAC,CAAC,CAAC;IAyB5B,CAAC;IAxBC,IAAI,KAAK,KAAa,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAkB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,UAAU;YAAE,MAAM,IAAI,kBAAU,CAAC,eAAe,CAAC,CAAC;QACnI,IAAI,aAAa,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,KAAa,EAAE,KAAoB;QACxC,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,kBAAU,CAAC,qBAAqB,CAAC,CAAC;QACpH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ,CAAC,KAAa,EAAE,OAAe;QACrC,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO;QACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,kBAAU,CAAC,2BAA2B,CAAC,CAAC;QACpJ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IACD,QAAQ;QACN,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IACxI,CAAC;IACD,KAAK,KAAW,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC3C;AA/BD,sCA+BC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Fixed samples avoid accepting arbitrary prompts at the preview endpoint. */
|
|
2
|
+
export declare const VOICE_PREVIEW_TEXT: Record<string, string>;
|
|
3
|
+
/** Documented fallback when a restricted provider key cannot read /models. */
|
|
4
|
+
export declare function voicePreviewLanguages(provider: string, model: string): string[];
|
|
5
|
+
export declare function voicePreviewError(error: unknown): string;
|
|
6
|
+
//# sourceMappingURL=preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/voice/preview.ts"],"names":[],"mappings":"AACA,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBrD,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/E;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAA8C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VOICE_PREVIEW_TEXT = void 0;
|
|
4
|
+
exports.voicePreviewLanguages = voicePreviewLanguages;
|
|
5
|
+
exports.voicePreviewError = voicePreviewError;
|
|
6
|
+
const model_ref_1 = require("./providers/model-ref");
|
|
7
|
+
/** Fixed samples avoid accepting arbitrary prompts at the preview endpoint. */
|
|
8
|
+
exports.VOICE_PREVIEW_TEXT = {
|
|
9
|
+
en: 'Hello! This is a preview of my voice.',
|
|
10
|
+
th: 'สวัสดี นี่คือตัวอย่างเสียงของฉัน ยินดีที่ได้รู้จัก',
|
|
11
|
+
ar: 'مرحبًا! هذه عينة من صوتي. يسعدني لقاؤك.',
|
|
12
|
+
de: 'Hallo! Dies ist eine Hörprobe meiner Stimme. Schön, dich kennenzulernen.',
|
|
13
|
+
es: '¡Hola! Esta es una muestra de mi voz. Encantado de conocerte.',
|
|
14
|
+
fr: 'Bonjour ! Voici un aperçu de ma voix. Ravi de vous rencontrer.',
|
|
15
|
+
hi: 'नमस्ते! यह मेरी आवाज़ का एक नमूना है। आपसे मिलकर खुशी हुई।',
|
|
16
|
+
id: 'Halo! Ini adalah contoh suara saya. Senang bertemu dengan Anda.',
|
|
17
|
+
it: 'Ciao! Questa è un’anteprima della mia voce. Piacere di conoscerti.',
|
|
18
|
+
ja: 'こんにちは。これは私の声のサンプルです。よろしくお願いします。',
|
|
19
|
+
ko: '안녕하세요! 제 목소리 샘플입니다. 만나서 반갑습니다.',
|
|
20
|
+
pt: 'Olá! Esta é uma amostra da minha voz. Prazer em conhecer você.',
|
|
21
|
+
ru: 'Здравствуйте! Это пример моего голоса. Приятно познакомиться.',
|
|
22
|
+
vi: 'Xin chào! Đây là bản nghe thử giọng nói của tôi. Rất vui được gặp bạn.',
|
|
23
|
+
zh: '你好!这是我的声音示例。很高兴认识你。',
|
|
24
|
+
};
|
|
25
|
+
/** Documented fallback when a restricted provider key cannot read /models. */
|
|
26
|
+
function voicePreviewLanguages(provider, model) {
|
|
27
|
+
provider = (0, model_ref_1.canonicalVoiceProvider)(provider);
|
|
28
|
+
const native = model.split('/').pop();
|
|
29
|
+
const languages = Object.keys(exports.VOICE_PREVIEW_TEXT);
|
|
30
|
+
if (provider.includes('paxalabs'))
|
|
31
|
+
return ['en', 'th'];
|
|
32
|
+
if (provider === 'elevenlabs' || provider === 'upstream:elevenlabs' || provider === 'managed:elevenlabs') {
|
|
33
|
+
if (['eleven_flash_v2', 'eleven_turbo_v2', 'eleven_monolingual_v1'].includes(native))
|
|
34
|
+
return ['en'];
|
|
35
|
+
if (['eleven_flash_v2_5', 'eleven_turbo_v2_5'].includes(native))
|
|
36
|
+
return languages.filter(language => language !== 'th');
|
|
37
|
+
if (native === 'eleven_multilingual_v2')
|
|
38
|
+
return languages.filter(language => !['th', 'vi'].includes(language));
|
|
39
|
+
}
|
|
40
|
+
return languages;
|
|
41
|
+
}
|
|
42
|
+
const errors_1 = require("./errors");
|
|
43
|
+
function voicePreviewError(error) { return (0, errors_1.describeVoiceError)(error).message; }
|
|
44
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/voice/preview.ts"],"names":[],"mappings":";;;AAqBA,sDAWC;AAGD,8CAAuG;AAnCvG,qDAA+D;AAC/D,+EAA+E;AAClE,QAAA,kBAAkB,GAA2B;IACxD,EAAE,EAAE,uCAAuC;IAC3C,EAAE,EAAE,oDAAoD;IACxD,EAAE,EAAE,yCAAyC;IAC7C,EAAE,EAAE,0EAA0E;IAC9E,EAAE,EAAE,+DAA+D;IACnE,EAAE,EAAE,gEAAgE;IACpE,EAAE,EAAE,4DAA4D;IAChE,EAAE,EAAE,iEAAiE;IACrE,EAAE,EAAE,oEAAoE;IACxE,EAAE,EAAE,iCAAiC;IACrC,EAAE,EAAE,gCAAgC;IACpC,EAAE,EAAE,gEAAgE;IACpE,EAAE,EAAE,+DAA+D;IACnE,EAAE,EAAE,wEAAwE;IAC5E,EAAE,EAAE,qBAAqB;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,SAAgB,qBAAqB,CAAC,QAAgB,EAAE,KAAa;IACnE,QAAQ,GAAG,IAAA,kCAAsB,EAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,qBAAqB,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACzG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpG,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACxH,IAAI,MAAM,KAAK,wBAAwB;YAAE,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qCAA8C;AAC9C,SAAgB,iBAAiB,CAAC,KAAc,IAAY,OAAO,IAAA,2BAAkB,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface VoiceFrame {
|
|
2
|
+
generation: string;
|
|
3
|
+
epoch: number;
|
|
4
|
+
sequence: number;
|
|
5
|
+
segmentId: string;
|
|
6
|
+
audio: Uint8Array;
|
|
7
|
+
}
|
|
8
|
+
export declare function encodeVoiceFrame(frame: VoiceFrame): Buffer;
|
|
9
|
+
export declare function decodeVoiceFrame(bytes: Buffer): VoiceFrame;
|
|
10
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/voice/protocol.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;CAAE;AAC1H,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAM1D;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAG1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeVoiceFrame = encodeVoiceFrame;
|
|
4
|
+
exports.decodeVoiceFrame = decodeVoiceFrame;
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const HEADER_BYTES = 44;
|
|
7
|
+
function uuidBytes(value) {
|
|
8
|
+
if (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(value))
|
|
9
|
+
throw new types_1.VoiceError('INVALID_FRAME_ID');
|
|
10
|
+
return Buffer.from(value.replace(/-/g, ''), 'hex');
|
|
11
|
+
}
|
|
12
|
+
function uuid(buffer) { const h = buffer.toString('hex'); return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`; }
|
|
13
|
+
function encodeVoiceFrame(frame) {
|
|
14
|
+
if (!Number.isInteger(frame.epoch) || frame.epoch < 0 || frame.epoch > 0xffffffff || !Number.isInteger(frame.sequence) || frame.sequence < 0 || frame.sequence > 0xffffffff)
|
|
15
|
+
throw new types_1.VoiceError('INVALID_FRAME_SEQUENCE');
|
|
16
|
+
const result = Buffer.alloc(HEADER_BYTES + frame.audio.length);
|
|
17
|
+
result.write('CGV1');
|
|
18
|
+
uuidBytes(frame.generation).copy(result, 4);
|
|
19
|
+
result.writeUInt32BE(frame.epoch, 20);
|
|
20
|
+
result.writeUInt32BE(frame.sequence, 24);
|
|
21
|
+
uuidBytes(frame.segmentId).copy(result, 28);
|
|
22
|
+
Buffer.from(frame.audio).copy(result, HEADER_BYTES);
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function decodeVoiceFrame(bytes) {
|
|
26
|
+
if (bytes.length < HEADER_BYTES || bytes.length > HEADER_BYTES + 32000 || bytes.toString('ascii', 0, 4) !== 'CGV1' || (bytes.length - HEADER_BYTES) % 2)
|
|
27
|
+
throw new types_1.VoiceError('INVALID_AUDIO_FRAME');
|
|
28
|
+
return { generation: uuid(bytes.subarray(4, 20)), epoch: bytes.readUInt32BE(20), sequence: bytes.readUInt32BE(24), segmentId: uuid(bytes.subarray(28, 44)), audio: bytes.subarray(HEADER_BYTES) };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/voice/protocol.ts"],"names":[],"mappings":";;AASA,4CAMC;AACD,4CAGC;AAnBD,mCAAqC;AAErC,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,kBAAU,CAAC,kBAAkB,CAAC,CAAC;IAC7H,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,IAAI,CAAC,MAAc,IAAY,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7K,SAAgB,gBAAgB,CAAC,KAAiB;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,UAAU;QAAE,MAAM,IAAI,kBAAU,CAAC,wBAAwB,CAAC,CAAC;IAC5N,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnJ,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjG,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,kBAAU,CAAC,qBAAqB,CAAC,CAAC;IACrM,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;AACpM,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TtsProvider, TtsAudioChunk } from '../types';
|
|
2
|
+
import { SocketFactory } from './socket';
|
|
3
|
+
export declare class CartesiaTts implements TtsProvider {
|
|
4
|
+
private readonly key;
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly connect;
|
|
7
|
+
private readonly request;
|
|
8
|
+
readonly id = "cartesia";
|
|
9
|
+
readonly capabilities: {
|
|
10
|
+
textStreaming: boolean;
|
|
11
|
+
wordAlignment: boolean;
|
|
12
|
+
outputFormats: import("../types").AudioFormat[];
|
|
13
|
+
};
|
|
14
|
+
constructor(key: string, model: string, connect?: SocketFactory, request?: typeof fetch);
|
|
15
|
+
synthesizeFile(options: {
|
|
16
|
+
text: string;
|
|
17
|
+
voiceId: string;
|
|
18
|
+
signal: AbortSignal;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
bytes: Uint8Array;
|
|
21
|
+
mime: 'audio/mpeg';
|
|
22
|
+
name: string;
|
|
23
|
+
}>;
|
|
24
|
+
synthesize(options: Parameters<TtsProvider['synthesize']>[0]): AsyncIterable<TtsAudioChunk>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=cartesia-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartesia-tts.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/cartesia-tts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAE,aAAa,EAAmC,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,WAAY,YAAW,WAAW;IAGjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAsC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFhK,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,YAAY;;;;MAAyE;gBACjE,GAAG,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM,EAAmB,OAAO,GAAE,aAAkC,EAAmB,OAAO,GAAE,OAAO,KAAa;IAChL,cAAc,CAAC,OAAO,EAAE;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,WAAW,CAAA;KAAC,GAAG,OAAO,CAAC;QAAC,KAAK,EAAC,UAAU,CAAC;QAAA,IAAI,EAAC,YAAY,CAAC;QAAA,IAAI,EAAC,MAAM,CAAA;KAAC,CAAC;IAclI,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC;CA0BnG"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CartesiaTts = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
const socket_1 = require("./socket");
|
|
8
|
+
class CartesiaTts {
|
|
9
|
+
constructor(key, model, connect = socket_1.openProviderSocket, request = fetch) {
|
|
10
|
+
this.key = key;
|
|
11
|
+
this.model = model;
|
|
12
|
+
this.connect = connect;
|
|
13
|
+
this.request = request;
|
|
14
|
+
this.id = 'cartesia';
|
|
15
|
+
this.capabilities = { textStreaming: true, wordAlignment: false, outputFormats: [types_1.PCM16] };
|
|
16
|
+
}
|
|
17
|
+
async synthesizeFile(options) {
|
|
18
|
+
if (!this.key)
|
|
19
|
+
throw new types_1.VoiceError('TTS_CREDENTIALS_MISSING');
|
|
20
|
+
const response = await (0, errors_1.voiceProviderRequest)('https://api.cartesia.ai/tts/bytes', {
|
|
21
|
+
method: 'POST', headers: { Authorization: `Bearer ${this.key}`, 'Cartesia-Version': '2026-08-14', 'Content-Type': 'application/json' }, signal: options.signal,
|
|
22
|
+
body: JSON.stringify({ model_id: this.model, transcript: options.text, voice: options.voiceId, output_format: { container: 'mp3', sample_rate: 44100, bit_rate: 128000 } }),
|
|
23
|
+
}, this.request);
|
|
24
|
+
if (!response.ok)
|
|
25
|
+
throw await (0, errors_1.providerHttpError)('TTS', response);
|
|
26
|
+
if (!response.body)
|
|
27
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
28
|
+
const reader = response.body.getReader(), chunks = [];
|
|
29
|
+
let size = 0;
|
|
30
|
+
try {
|
|
31
|
+
while (true) {
|
|
32
|
+
const chunk = await reader.read();
|
|
33
|
+
if (chunk.done)
|
|
34
|
+
break;
|
|
35
|
+
size += chunk.value.length;
|
|
36
|
+
if (size > 5 * 1024 * 1024)
|
|
37
|
+
throw new types_1.VoiceError('TTS_AUDIO_TOO_LARGE');
|
|
38
|
+
chunks.push(chunk.value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await reader.cancel().catch(() => { });
|
|
43
|
+
}
|
|
44
|
+
if (!size || options.signal.aborted)
|
|
45
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
46
|
+
return { bytes: Buffer.concat(chunks), mime: 'audio/mpeg', name: 'reply.mp3' };
|
|
47
|
+
}
|
|
48
|
+
async *synthesize(options) {
|
|
49
|
+
(0, types_1.validateAudioFormat)(options.outputFormat);
|
|
50
|
+
if (options.outputFormat.sampleRate !== 16000)
|
|
51
|
+
throw new types_1.VoiceError('UNSUPPORTED_AUDIO_FORMAT');
|
|
52
|
+
if (!this.key)
|
|
53
|
+
throw new types_1.VoiceError('TTS_CREDENTIALS_MISSING');
|
|
54
|
+
const socket = await this.connect('wss://api.cartesia.ai/tts/websocket?cartesia_version=2026-08-14', { 'X-API-Key': this.key }, options.signal);
|
|
55
|
+
const contextId = (0, crypto_1.randomUUID)();
|
|
56
|
+
const request = (transcript, more) => ({ model_id: this.model, transcript, voice: options.voiceId,
|
|
57
|
+
context_id: contextId, language: options.language ?? 'en', output_format: { container: 'raw', encoding: 'pcm_s16le', sample_rate: 16000 }, continue: more });
|
|
58
|
+
let sendError, done = false;
|
|
59
|
+
const sending = (async () => {
|
|
60
|
+
for await (const text of options.text) {
|
|
61
|
+
if (options.signal.aborted)
|
|
62
|
+
return;
|
|
63
|
+
await socket.send(request(text, true));
|
|
64
|
+
}
|
|
65
|
+
await socket.send(request('', false));
|
|
66
|
+
})().catch(error => { sendError = error; socket.close(); });
|
|
67
|
+
let chunkSeq = 0;
|
|
68
|
+
try {
|
|
69
|
+
for await (const message of socket.messages) {
|
|
70
|
+
if (options.signal.aborted)
|
|
71
|
+
return;
|
|
72
|
+
if (message.context_id && message.context_id !== contextId)
|
|
73
|
+
continue;
|
|
74
|
+
if (message.type === 'error')
|
|
75
|
+
throw (0, errors_1.providerVoiceError)('TTS', undefined, message);
|
|
76
|
+
if (message.type === 'chunk' && typeof message.data === 'string')
|
|
77
|
+
yield { bytes: Buffer.from(message.data, 'base64'), format: options.outputFormat, chunkSeq: chunkSeq++ };
|
|
78
|
+
if (message.type === 'done') {
|
|
79
|
+
done = true;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await sending;
|
|
84
|
+
if (sendError)
|
|
85
|
+
throw sendError;
|
|
86
|
+
if (!done && !options.signal.aborted)
|
|
87
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
socket.close();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.CartesiaTts = CartesiaTts;
|
|
95
|
+
//# sourceMappingURL=cartesia-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartesia-tts.js","sourceRoot":"","sources":["../../../src/voice/providers/cartesia-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SttProvider, SttSession, AudioFormat } from '../types';
|
|
2
|
+
import { SocketFactory } from './socket';
|
|
3
|
+
export declare class DeepgramStt implements SttProvider {
|
|
4
|
+
private readonly key;
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly connect;
|
|
7
|
+
readonly id = "deepgram";
|
|
8
|
+
readonly capabilities: {
|
|
9
|
+
partials: boolean;
|
|
10
|
+
manualCommit: boolean;
|
|
11
|
+
speechActivityEvents: boolean;
|
|
12
|
+
};
|
|
13
|
+
constructor(key: string, model: string, connect?: SocketFactory);
|
|
14
|
+
open(options: {
|
|
15
|
+
format: AudioFormat;
|
|
16
|
+
language?: string;
|
|
17
|
+
signal: AbortSignal;
|
|
18
|
+
}): Promise<SttSession>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=deepgram-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepgram-stt.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/deepgram-stt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAY,WAAW,EAAmC,MAAM,UAAU,CAAC;AAE3G,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,WAAY,YAAW,WAAW;IAGjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFlG,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,YAAY;;;;MAAsE;gBAC9D,GAAG,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM,EAAmB,OAAO,GAAE,aAAkC;IAChI,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CA8B1G"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeepgramStt = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const queue_1 = require("../queue");
|
|
7
|
+
const socket_1 = require("./socket");
|
|
8
|
+
class DeepgramStt {
|
|
9
|
+
constructor(key, model, connect = socket_1.openProviderSocket) {
|
|
10
|
+
this.key = key;
|
|
11
|
+
this.model = model;
|
|
12
|
+
this.connect = connect;
|
|
13
|
+
this.id = 'deepgram';
|
|
14
|
+
this.capabilities = { partials: true, manualCommit: true, speechActivityEvents: true };
|
|
15
|
+
}
|
|
16
|
+
async open(options) {
|
|
17
|
+
(0, types_1.validateAudioFormat)(options.format);
|
|
18
|
+
if (!this.key)
|
|
19
|
+
throw new types_1.VoiceError('STT_CREDENTIALS_MISSING');
|
|
20
|
+
const url = new URL('wss://api.deepgram.com/v1/listen');
|
|
21
|
+
for (const [key, value] of Object.entries({ model: this.model, encoding: 'linear16', sample_rate: String(options.format.sampleRate), channels: '1', interim_results: 'true', vad_events: 'true' }))
|
|
22
|
+
url.searchParams.set(key, value);
|
|
23
|
+
if (options.language)
|
|
24
|
+
url.searchParams.set('language', options.language);
|
|
25
|
+
const socket = await this.connect(url.toString(), { Authorization: `Token ${this.key}` }, options.signal);
|
|
26
|
+
const events = new queue_1.BoundedQueue(65536, e => JSON.stringify(e).length);
|
|
27
|
+
let commitId, closed = false;
|
|
28
|
+
void (async () => {
|
|
29
|
+
try {
|
|
30
|
+
for await (const message of socket.messages) {
|
|
31
|
+
if (closed)
|
|
32
|
+
break;
|
|
33
|
+
if (message.type === 'Results') {
|
|
34
|
+
const text = String(message.channel?.alternatives?.[0]?.transcript ?? '');
|
|
35
|
+
if (text)
|
|
36
|
+
events.push({ type: message.is_final ? 'segment_final' : 'partial', segmentId: String(message.start), text });
|
|
37
|
+
// Silence/speech_final is not the explicit flush acknowledgment.
|
|
38
|
+
if (message.from_finalize && commitId) {
|
|
39
|
+
events.push({ type: 'commit_done', commitId });
|
|
40
|
+
commitId = undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (message.type === 'SpeechStarted')
|
|
44
|
+
events.push({ type: 'speech_start', atMs: Number(message.timestamp) * 1000 });
|
|
45
|
+
else if (message.type === 'UtteranceEnd')
|
|
46
|
+
events.push({ type: 'speech_end', atMs: Number(message.last_word_end) * 1000 });
|
|
47
|
+
else if (message.type === 'Error')
|
|
48
|
+
throw (0, errors_1.providerVoiceError)('STT', undefined, message);
|
|
49
|
+
}
|
|
50
|
+
if (!closed)
|
|
51
|
+
events.push({ type: 'error', code: 'STT_CONNECTION_CLOSED', retryable: true });
|
|
52
|
+
events.close();
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
events.close(error instanceof types_1.VoiceError ? error : new types_1.VoiceError('STT_PROVIDER_ERROR'));
|
|
56
|
+
socket.close();
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
return { events, pushAudio: frame => socket.audio(frame),
|
|
60
|
+
commitSegment: async (id) => { if (commitId)
|
|
61
|
+
throw new types_1.VoiceError('COMMIT_IN_PROGRESS'); commitId = id; await socket.send({ type: 'Finalize' }); },
|
|
62
|
+
close: async () => { closed = true; socket.close(); events.close(); } };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.DeepgramStt = DeepgramStt;
|
|
66
|
+
//# sourceMappingURL=deepgram-stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepgram-stt.js","sourceRoot":"","sources":["../../../src/voice/providers/deepgram-stt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SttProvider, SttSession, AudioFormat } from '../types';
|
|
2
|
+
import { SocketFactory } from './socket';
|
|
3
|
+
export declare class ElevenLabsStt implements SttProvider {
|
|
4
|
+
private readonly key;
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly connect;
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly capabilities: {
|
|
9
|
+
partials: boolean;
|
|
10
|
+
manualCommit: boolean;
|
|
11
|
+
speechActivityEvents: boolean;
|
|
12
|
+
};
|
|
13
|
+
constructor(key: string, model?: string, connect?: SocketFactory, id?: string);
|
|
14
|
+
open(options: {
|
|
15
|
+
format: AudioFormat;
|
|
16
|
+
language?: string;
|
|
17
|
+
signal: AbortSignal;
|
|
18
|
+
}): Promise<SttSession>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=elevenlabs-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-stt.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/elevenlabs-stt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAY,UAAU,EAAE,WAAW,EAAmC,MAAM,UAAU,CAAC;AAE3G,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,aAAc,YAAW,WAAW;IAEnC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAyB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAsC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAD1K,QAAQ,CAAC,YAAY;;;;MAAuE;gBAC/D,GAAG,EAAE,MAAM,EAAmB,KAAK,SAAuB,EAAmB,OAAO,GAAE,aAAkC,EAAW,EAAE,GAAE,MAAqB;IACnL,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAkD1G"}
|