@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,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElevenLabsStt = 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 ElevenLabsStt {
|
|
9
|
+
constructor(key, model = 'scribe_v2_realtime', connect = socket_1.openProviderSocket, id = 'elevenlabs') {
|
|
10
|
+
this.key = key;
|
|
11
|
+
this.model = model;
|
|
12
|
+
this.connect = connect;
|
|
13
|
+
this.id = id;
|
|
14
|
+
this.capabilities = { partials: true, manualCommit: true, speechActivityEvents: false };
|
|
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.elevenlabs.io/v1/speech-to-text/realtime');
|
|
21
|
+
url.searchParams.set('model_id', this.model);
|
|
22
|
+
url.searchParams.set('audio_format', `pcm_${options.format.sampleRate}`);
|
|
23
|
+
url.searchParams.set('commit_strategy', 'manual');
|
|
24
|
+
url.searchParams.set('include_timestamps', 'false');
|
|
25
|
+
if (options.language)
|
|
26
|
+
url.searchParams.set('language_code', options.language);
|
|
27
|
+
const socket = await this.connect(url.toString(), { 'xi-api-key': this.key }, options.signal);
|
|
28
|
+
const events = new queue_1.BoundedQueue(65536, e => JSON.stringify(e).length);
|
|
29
|
+
let commitId, segment = 0, closed = false;
|
|
30
|
+
let lastAudioAt = Date.now();
|
|
31
|
+
const sendAudio = async (frame) => {
|
|
32
|
+
lastAudioAt = Date.now();
|
|
33
|
+
await socket.send({ message_type: 'input_audio_chunk', audio_base_64: Buffer.from(frame).toString('base64'), sample_rate: options.format.sampleRate });
|
|
34
|
+
};
|
|
35
|
+
// The browser gates uplink during silence. A small silent audio chunk keeps
|
|
36
|
+
// the recognizer alive while the worker runs; it never commits an input.
|
|
37
|
+
const keepAlive = setInterval(() => {
|
|
38
|
+
if (closed || options.signal.aborted || commitId || Date.now() - lastAudioAt < 5000)
|
|
39
|
+
return;
|
|
40
|
+
void sendAudio(Buffer.alloc(options.format.sampleRate / 10 * 2)).catch(() => {
|
|
41
|
+
if (!closed) {
|
|
42
|
+
events.close(new types_1.VoiceError('STT_CONNECTION_CLOSED'));
|
|
43
|
+
socket.close();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}, 5000);
|
|
47
|
+
keepAlive.unref();
|
|
48
|
+
void (async () => {
|
|
49
|
+
try {
|
|
50
|
+
for await (const message of socket.messages) {
|
|
51
|
+
if (closed)
|
|
52
|
+
break;
|
|
53
|
+
if (message.message_type === 'partial_transcript')
|
|
54
|
+
events.push({ type: 'partial', segmentId: String(segment), text: String(message.text ?? '') });
|
|
55
|
+
else if (message.message_type === 'committed_transcript') {
|
|
56
|
+
events.push({ type: 'segment_final', segmentId: String(segment++), text: String(message.text ?? '') });
|
|
57
|
+
if (commitId) {
|
|
58
|
+
events.push({ type: 'commit_done', commitId });
|
|
59
|
+
commitId = undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (message.error)
|
|
63
|
+
throw (0, errors_1.providerVoiceError)('STT', undefined, message);
|
|
64
|
+
}
|
|
65
|
+
if (!closed)
|
|
66
|
+
events.push({ type: 'error', code: 'STT_CONNECTION_CLOSED', retryable: true });
|
|
67
|
+
events.close();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
events.close(error instanceof types_1.VoiceError ? error : new types_1.VoiceError('STT_PROVIDER_ERROR'));
|
|
71
|
+
socket.close();
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
closed = true;
|
|
75
|
+
clearInterval(keepAlive);
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
78
|
+
return {
|
|
79
|
+
events,
|
|
80
|
+
pushAudio: sendAudio,
|
|
81
|
+
commitSegment: async (id) => {
|
|
82
|
+
if (commitId)
|
|
83
|
+
throw new types_1.VoiceError('COMMIT_IN_PROGRESS');
|
|
84
|
+
commitId = id;
|
|
85
|
+
await socket.send({ message_type: 'input_audio_chunk', audio_base_64: '', commit: true, sample_rate: options.format.sampleRate });
|
|
86
|
+
},
|
|
87
|
+
close: async () => { closed = true; clearInterval(keepAlive); socket.close(); events.close(); },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.ElevenLabsStt = ElevenLabsStt;
|
|
92
|
+
//# sourceMappingURL=elevenlabs-stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-stt.js","sourceRoot":"","sources":["../../../src/voice/providers/elevenlabs-stt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TtsProvider, TtsAudioChunk } from '../types';
|
|
2
|
+
import { SocketFactory } from './socket';
|
|
3
|
+
export declare class ElevenLabsTts implements TtsProvider {
|
|
4
|
+
private readonly key;
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly connect;
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly capabilities: {
|
|
9
|
+
textStreaming: boolean;
|
|
10
|
+
wordAlignment: boolean;
|
|
11
|
+
outputFormats: import("../types").AudioFormat[];
|
|
12
|
+
};
|
|
13
|
+
constructor(key: string, model?: string, connect?: SocketFactory, id?: string);
|
|
14
|
+
synthesize(options: Parameters<TtsProvider['synthesize']>[0]): AsyncIterable<TtsAudioChunk>;
|
|
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
|
+
private audio;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=elevenlabs-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-tts.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/elevenlabs-tts.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,WAAW,EAAc,aAAa,EAAuB,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,aAAc,YAAW,WAAW;IAEnC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA+B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAsC,QAAQ,CAAC,EAAE,EAAE,MAAM;IADhL,QAAQ,CAAC,YAAY;;;;MAAyE;gBACjE,GAAG,EAAE,MAAM,EAAmB,KAAK,SAA6B,EAAmB,OAAO,GAAE,aAAkC,EAAW,EAAE,GAAE,MAAqB;IACxL,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC;IAM5F,cAAc,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;YASxI,KAAK;CA6BrB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElevenLabsTts = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const socket_1 = require("./socket");
|
|
7
|
+
class ElevenLabsTts {
|
|
8
|
+
constructor(key, model = 'eleven_v3_conversational', connect = socket_1.openProviderSocket, id = 'elevenlabs') {
|
|
9
|
+
this.key = key;
|
|
10
|
+
this.model = model;
|
|
11
|
+
this.connect = connect;
|
|
12
|
+
this.id = id;
|
|
13
|
+
this.capabilities = { textStreaming: true, wordAlignment: false, outputFormats: [types_1.PCM16] };
|
|
14
|
+
}
|
|
15
|
+
async *synthesize(options) {
|
|
16
|
+
(0, types_1.validateAudioFormat)(options.outputFormat);
|
|
17
|
+
if (options.outputFormat.sampleRate !== 16000)
|
|
18
|
+
throw new types_1.VoiceError('UNSUPPORTED_AUDIO_FORMAT');
|
|
19
|
+
let chunkSeq = 0;
|
|
20
|
+
for await (const bytes of this.audio(options, 'pcm_16000'))
|
|
21
|
+
yield { bytes, format: options.outputFormat, chunkSeq: chunkSeq++ };
|
|
22
|
+
}
|
|
23
|
+
async synthesizeFile(options) {
|
|
24
|
+
const chunks = [];
|
|
25
|
+
let size = 0;
|
|
26
|
+
for await (const bytes of this.audio({ ...options, text: (async function* () { yield options.text; })() }, 'mp3_44100_128')) {
|
|
27
|
+
size += bytes.length;
|
|
28
|
+
if (size > 5 * 1024 * 1024)
|
|
29
|
+
throw new types_1.VoiceError('TTS_AUDIO_TOO_LARGE');
|
|
30
|
+
chunks.push(bytes);
|
|
31
|
+
}
|
|
32
|
+
if (!size || options.signal.aborted)
|
|
33
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
34
|
+
return { bytes: Buffer.concat(chunks), mime: 'audio/mpeg', name: 'reply.mp3' };
|
|
35
|
+
}
|
|
36
|
+
async *audio(options, format) {
|
|
37
|
+
if (!this.key)
|
|
38
|
+
throw new types_1.VoiceError('TTS_CREDENTIALS_MISSING');
|
|
39
|
+
const dialogue = this.model === 'eleven_v3_conversational' || this.model === 'eleven_v3';
|
|
40
|
+
const url = new URL(dialogue ? 'wss://api.elevenlabs.io/v1/text-to-dialogue/stream-input' : `wss://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(options.voiceId)}/stream-input`);
|
|
41
|
+
url.searchParams.set('seed', '42');
|
|
42
|
+
url.searchParams.set('model_id', this.model);
|
|
43
|
+
url.searchParams.set('output_format', format);
|
|
44
|
+
if (options.language)
|
|
45
|
+
url.searchParams.set('language_code', options.language);
|
|
46
|
+
const socket = await this.connect(url.toString(), { 'xi-api-key': this.key }, options.signal);
|
|
47
|
+
let sendError, finished = false;
|
|
48
|
+
const sending = (async () => {
|
|
49
|
+
await socket.send(dialogue ? { voices: [options.voiceId], voice_settings: { stability: 1 } } : { text: ' ', voice_settings: { stability: 0.5 }, generation_config: { chunk_length_schedule: [50, 120, 160, 290] } });
|
|
50
|
+
for await (const text of options.text) {
|
|
51
|
+
if (options.signal.aborted)
|
|
52
|
+
return;
|
|
53
|
+
await socket.send(dialogue ? { inputs: [{ text, voice_id: options.voiceId }] } : { text, try_trigger_generation: true });
|
|
54
|
+
}
|
|
55
|
+
await socket.send(dialogue ? { close_socket: true } : { text: '' });
|
|
56
|
+
})().catch(error => { sendError = error; socket.close(); });
|
|
57
|
+
try {
|
|
58
|
+
for await (const message of socket.messages) {
|
|
59
|
+
if (options.signal.aborted)
|
|
60
|
+
return;
|
|
61
|
+
if (message.error)
|
|
62
|
+
throw (0, errors_1.providerVoiceError)('TTS', undefined, message);
|
|
63
|
+
if (typeof message.audio === 'string')
|
|
64
|
+
yield Buffer.from(message.audio, 'base64');
|
|
65
|
+
if (message.is_final === true || message.isFinal === true) {
|
|
66
|
+
finished = true;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
await sending;
|
|
71
|
+
if (sendError)
|
|
72
|
+
throw sendError;
|
|
73
|
+
if (!finished && !options.signal.aborted)
|
|
74
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
socket.close();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ElevenLabsTts = ElevenLabsTts;
|
|
82
|
+
//# sourceMappingURL=elevenlabs-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs-tts.js","sourceRoot":"","sources":["../../../src/voice/providers/elevenlabs-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TtsProvider } from '../types';
|
|
2
|
+
/** Shared bounded MP3-to-PCM streaming for encoded-audio TTS providers. */
|
|
3
|
+
export declare abstract class EncodedAudioTts implements TtsProvider {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
abstract readonly capabilities: TtsProvider['capabilities'];
|
|
6
|
+
constructor(id: string);
|
|
7
|
+
protected get pcmSampleRate(): number | undefined;
|
|
8
|
+
private get inputArgs();
|
|
9
|
+
synthesize(options: Parameters<TtsProvider['synthesize']>[0]): AsyncGenerator<{
|
|
10
|
+
bytes: Buffer<ArrayBuffer>;
|
|
11
|
+
format: import("../types").AudioFormat;
|
|
12
|
+
chunkSeq: number;
|
|
13
|
+
}, void, unknown>;
|
|
14
|
+
synthesizeFile(options: Parameters<NonNullable<TtsProvider['synthesizeFile']>>[0]): Promise<{
|
|
15
|
+
bytes: Buffer<ArrayBufferLike>;
|
|
16
|
+
mime: "audio/mpeg";
|
|
17
|
+
name: string;
|
|
18
|
+
}>;
|
|
19
|
+
protected abstract audio(options: Pick<Parameters<TtsProvider['synthesize']>[0], 'text' | 'voiceId' | 'signal'>): AsyncIterable<Buffer>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=encoded-audio-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoded-audio-tts.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/encoded-audio-tts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAmC,MAAM,UAAU,CAAC;AAE/E,2EAA2E;AAC3E,8BAAsB,eAAgB,YAAW,WAAW;IAE9C,QAAQ,CAAC,EAAE,EAAE,MAAM;IAD/B,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACvC,EAAE,EAAE,MAAM;IAC/B,SAAS,KAAK,aAAa,IAAI,MAAM,GAAG,SAAS,CAEhD;IACD,OAAO,KAAK,SAAS,GAIpB;IACM,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;IAwF7D,cAAc,CAClB,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;IAoEpE,SAAS,CAAC,QAAQ,CAAC,KAAK,CACtB,OAAO,EAAE,IAAI,CACX,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EACxC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAC9B,GACA,aAAa,CAAC,MAAM,CAAC;CACzB"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EncodedAudioTts = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const events_1 = require("events");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
/** Shared bounded MP3-to-PCM streaming for encoded-audio TTS providers. */
|
|
8
|
+
class EncodedAudioTts {
|
|
9
|
+
constructor(id) {
|
|
10
|
+
this.id = id;
|
|
11
|
+
}
|
|
12
|
+
get pcmSampleRate() {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
get inputArgs() {
|
|
16
|
+
return this.pcmSampleRate
|
|
17
|
+
? ['-f', 's16le', '-ar', String(this.pcmSampleRate), '-ac', '1']
|
|
18
|
+
: ['-f', 'mp3'];
|
|
19
|
+
}
|
|
20
|
+
async *synthesize(options) {
|
|
21
|
+
(0, types_1.validateAudioFormat)(options.outputFormat);
|
|
22
|
+
if (options.outputFormat.sampleRate !== 16000)
|
|
23
|
+
throw new types_1.VoiceError('UNSUPPORTED_AUDIO_FORMAT');
|
|
24
|
+
// Normalize the provider audio to the voice transport format.
|
|
25
|
+
const abort = new AbortController();
|
|
26
|
+
const signal = AbortSignal.any([options.signal, abort.signal]);
|
|
27
|
+
const decoder = (0, child_process_1.spawn)('ffmpeg', [
|
|
28
|
+
'-nostdin',
|
|
29
|
+
'-hide_banner',
|
|
30
|
+
'-loglevel',
|
|
31
|
+
'error',
|
|
32
|
+
'-probesize',
|
|
33
|
+
'32768',
|
|
34
|
+
'-analyzeduration',
|
|
35
|
+
'0',
|
|
36
|
+
...this.inputArgs,
|
|
37
|
+
'-i',
|
|
38
|
+
'pipe:0',
|
|
39
|
+
'-f',
|
|
40
|
+
's16le',
|
|
41
|
+
'-ac',
|
|
42
|
+
'1',
|
|
43
|
+
'-ar',
|
|
44
|
+
'16000',
|
|
45
|
+
'pipe:1',
|
|
46
|
+
], { stdio: ['pipe', 'pipe', 'ignore'] });
|
|
47
|
+
let failure;
|
|
48
|
+
decoder.on('error', () => {
|
|
49
|
+
failure = new types_1.VoiceError('TTS_DECODER_UNAVAILABLE');
|
|
50
|
+
abort.abort();
|
|
51
|
+
});
|
|
52
|
+
decoder.stdin.on('error', () => {
|
|
53
|
+
failure ?? (failure = new types_1.VoiceError('TTS_DECODE_FAILED'));
|
|
54
|
+
abort.abort();
|
|
55
|
+
});
|
|
56
|
+
const exited = new Promise((resolve) => decoder.once('close', (code) => {
|
|
57
|
+
if (code && !options.signal.aborted)
|
|
58
|
+
failure ?? (failure = new types_1.VoiceError('TTS_DECODE_FAILED'));
|
|
59
|
+
resolve();
|
|
60
|
+
}));
|
|
61
|
+
const stop = () => {
|
|
62
|
+
decoder.kill('SIGKILL');
|
|
63
|
+
};
|
|
64
|
+
signal.addEventListener('abort', stop, { once: true });
|
|
65
|
+
const feeding = (async () => {
|
|
66
|
+
for await (const bytes of this.audio({ ...options, signal })) {
|
|
67
|
+
if (!decoder.stdin.write(bytes))
|
|
68
|
+
await (0, events_1.once)(decoder.stdin, 'drain', { signal });
|
|
69
|
+
}
|
|
70
|
+
decoder.stdin.end();
|
|
71
|
+
})().catch((error) => {
|
|
72
|
+
failure ?? (failure = error);
|
|
73
|
+
abort.abort();
|
|
74
|
+
});
|
|
75
|
+
let chunkSeq = 0, pending = Buffer.alloc(0);
|
|
76
|
+
try {
|
|
77
|
+
for await (const chunk of decoder.stdout) {
|
|
78
|
+
const bytes = Buffer.concat([pending, chunk]);
|
|
79
|
+
const length = bytes.length - (bytes.length % 2);
|
|
80
|
+
pending = bytes.subarray(length);
|
|
81
|
+
if (length)
|
|
82
|
+
yield {
|
|
83
|
+
bytes: bytes.subarray(0, length),
|
|
84
|
+
format: options.outputFormat,
|
|
85
|
+
chunkSeq: chunkSeq++,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
await feeding;
|
|
89
|
+
await exited;
|
|
90
|
+
if (failure)
|
|
91
|
+
throw failure;
|
|
92
|
+
if (!chunkSeq && !options.signal.aborted)
|
|
93
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
abort.abort();
|
|
97
|
+
signal.removeEventListener('abort', stop);
|
|
98
|
+
decoder.kill('SIGKILL');
|
|
99
|
+
await feeding;
|
|
100
|
+
await exited;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async synthesizeFile(options) {
|
|
104
|
+
const chunks = [];
|
|
105
|
+
let size = 0;
|
|
106
|
+
for await (const chunk of this.audio({
|
|
107
|
+
...options,
|
|
108
|
+
text: (async function* () {
|
|
109
|
+
yield options.text;
|
|
110
|
+
})(),
|
|
111
|
+
})) {
|
|
112
|
+
size += chunk.length;
|
|
113
|
+
if (size > 5 * 1024 * 1024)
|
|
114
|
+
throw new types_1.VoiceError('TTS_AUDIO_TOO_LARGE');
|
|
115
|
+
chunks.push(chunk);
|
|
116
|
+
}
|
|
117
|
+
if (!size || options.signal.aborted)
|
|
118
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
119
|
+
let bytes = Buffer.concat(chunks);
|
|
120
|
+
if (this.pcmSampleRate) {
|
|
121
|
+
if (bytes.length % 2)
|
|
122
|
+
throw new types_1.VoiceError('TTS_INCOMPLETE');
|
|
123
|
+
bytes = await new Promise((resolve, reject) => {
|
|
124
|
+
const encoder = (0, child_process_1.spawn)('ffmpeg', [
|
|
125
|
+
'-nostdin',
|
|
126
|
+
'-hide_banner',
|
|
127
|
+
'-loglevel',
|
|
128
|
+
'error',
|
|
129
|
+
...this.inputArgs,
|
|
130
|
+
'-i',
|
|
131
|
+
'pipe:0',
|
|
132
|
+
'-f',
|
|
133
|
+
'mp3',
|
|
134
|
+
'pipe:1',
|
|
135
|
+
], { stdio: ['pipe', 'pipe', 'ignore'] });
|
|
136
|
+
const stop = () => {
|
|
137
|
+
encoder.kill('SIGKILL');
|
|
138
|
+
};
|
|
139
|
+
const output = [];
|
|
140
|
+
let length = 0, failure;
|
|
141
|
+
options.signal.addEventListener('abort', stop, { once: true });
|
|
142
|
+
encoder.on('error', () => {
|
|
143
|
+
failure = new types_1.VoiceError('TTS_DECODER_UNAVAILABLE');
|
|
144
|
+
});
|
|
145
|
+
encoder.stdin.on('error', () => {
|
|
146
|
+
failure ?? (failure = new types_1.VoiceError('TTS_DECODE_FAILED'));
|
|
147
|
+
stop();
|
|
148
|
+
});
|
|
149
|
+
encoder.stdout.on('data', (chunk) => {
|
|
150
|
+
length += chunk.length;
|
|
151
|
+
if (length > 5 * 1024 * 1024) {
|
|
152
|
+
failure = new types_1.VoiceError('TTS_AUDIO_TOO_LARGE');
|
|
153
|
+
stop();
|
|
154
|
+
}
|
|
155
|
+
else
|
|
156
|
+
output.push(chunk);
|
|
157
|
+
});
|
|
158
|
+
encoder.once('close', (code) => {
|
|
159
|
+
options.signal.removeEventListener('abort', stop);
|
|
160
|
+
if (failure || code || options.signal.aborted)
|
|
161
|
+
reject(failure ?? new types_1.VoiceError('TTS_INCOMPLETE'));
|
|
162
|
+
else
|
|
163
|
+
resolve(Buffer.concat(output));
|
|
164
|
+
});
|
|
165
|
+
if (options.signal.aborted)
|
|
166
|
+
stop();
|
|
167
|
+
else
|
|
168
|
+
encoder.stdin.end(bytes);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return { bytes, mime: 'audio/mpeg', name: 'reply.mp3' };
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.EncodedAudioTts = EncodedAudioTts;
|
|
175
|
+
//# sourceMappingURL=encoded-audio-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoded-audio-tts.js","sourceRoot":"","sources":["../../../src/voice/providers/encoded-audio-tts.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AACtC,mCAA8B;AAC9B,oCAA+E;AAE/E,2EAA2E;AAC3E,MAAsB,eAAe;IAEnC,YAAqB,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IACnC,IAAc,aAAa;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,aAAa;YACvB,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC;YAChE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,CAAC,UAAU,CAAC,OAAiD;QACjE,IAAA,2BAAmB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,KAAK,KAAK;YAC3C,MAAM,IAAI,kBAAU,CAAC,0BAA0B,CAAC,CAAC;QACnD,8DAA8D;QAC9D,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAA,qBAAK,EACnB,QAAQ,EACR;YACE,UAAU;YACV,cAAc;YACd,WAAW;YACX,OAAO;YACP,YAAY;YACZ,OAAO;YACP,kBAAkB;YAClB,GAAG;YACH,GAAG,IAAI,CAAC,SAAS;YACjB,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,KAAK;YACL,GAAG;YACH,KAAK;YACL,OAAO;YACP,QAAQ;SACT,EACD,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CACtC,CAAC;QACF,IAAI,OAAgB,CAAC;QACrB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,OAAO,GAAG,IAAI,kBAAU,CAAC,yBAAyB,CAAC,CAAC;YACpD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,OAAO,KAAP,OAAO,GAAK,IAAI,kBAAU,CAAC,mBAAmB,CAAC,EAAC;YAChD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC3C,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBACjC,OAAO,KAAP,OAAO,GAAK,IAAI,kBAAU,CAAC,mBAAmB,CAAC,EAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CACH,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC7B,MAAM,IAAA,aAAI,EAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,OAAO,KAAP,OAAO,GAAK,KAAK,EAAC;YAClB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,GAAG,CAAC,EACd,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjD,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,MAAM;oBACR,MAAM;wBACJ,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;wBAChC,MAAM,EAAE,OAAO,CAAC,YAAY;wBAC5B,QAAQ,EAAE,QAAQ,EAAE;qBACrB,CAAC;YACN,CAAC;YACD,MAAM,OAAO,CAAC;YACd,MAAM,MAAM,CAAC;YACb,IAAI,OAAO;gBAAE,MAAM,OAAO,CAAC;YAC3B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBACtC,MAAM,IAAI,kBAAU,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,OAAO,CAAC;YACd,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IACD,KAAK,CAAC,cAAc,CAClB,OAAkE;QAElE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;YACnC,GAAG,OAAO;YACV,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;gBACpB,MAAM,OAAO,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,EAAE;SACL,CAAC,EAAE,CAAC;YACH,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;gBAAE,MAAM,IAAI,kBAAU,CAAC,qBAAqB,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,kBAAU,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,KAAK,GAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,kBAAU,CAAC,gBAAgB,CAAC,CAAC;YAC7D,KAAK,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpD,MAAM,OAAO,GAAG,IAAA,qBAAK,EACnB,QAAQ,EACR;oBACE,UAAU;oBACV,cAAc;oBACd,WAAW;oBACX,OAAO;oBACP,GAAG,IAAI,CAAC,SAAS;oBACjB,IAAI;oBACJ,QAAQ;oBACR,IAAI;oBACJ,KAAK;oBACL,QAAQ;iBACT,EACD,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CACtC,CAAC;gBACF,MAAM,IAAI,GAAG,GAAG,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC,CAAC;gBACF,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,IAAI,MAAM,GAAG,CAAC,EACZ,OAAgB,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACvB,OAAO,GAAG,IAAI,kBAAU,CAAC,yBAAyB,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBAC7B,OAAO,KAAP,OAAO,GAAK,IAAI,kBAAU,CAAC,mBAAmB,CAAC,EAAC;oBAChD,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;oBACvB,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;wBAC7B,OAAO,GAAG,IAAI,kBAAU,CAAC,qBAAqB,CAAC,CAAC;wBAChD,IAAI,EAAE,CAAC;oBACT,CAAC;;wBAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAClD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;wBAC3C,MAAM,CAAC,OAAO,IAAI,IAAI,kBAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;;wBACjD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;oBAAE,IAAI,EAAE,CAAC;;oBAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAqB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACnE,CAAC;CAOF;AA9KD,0CA8KC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AudioFormat, SttEvent, SttProvider, SttSession, TtsProvider } from '../types';
|
|
2
|
+
import { BoundedQueue } from '../queue';
|
|
3
|
+
export declare class FakeSttSession implements SttSession {
|
|
4
|
+
readonly events: BoundedQueue<SttEvent>;
|
|
5
|
+
readonly frames: Uint8Array[];
|
|
6
|
+
commitId?: string;
|
|
7
|
+
pushAudio(frame: Uint8Array): Promise<void>;
|
|
8
|
+
commitSegment(commitId: string): Promise<void>;
|
|
9
|
+
emit(event: SttEvent): void;
|
|
10
|
+
close(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare class FakeSttProvider implements SttProvider {
|
|
13
|
+
readonly id = "fake";
|
|
14
|
+
readonly capabilities: {
|
|
15
|
+
partials: boolean;
|
|
16
|
+
manualCommit: boolean;
|
|
17
|
+
speechActivityEvents: boolean;
|
|
18
|
+
};
|
|
19
|
+
readonly sessions: FakeSttSession[];
|
|
20
|
+
open(): Promise<FakeSttSession>;
|
|
21
|
+
}
|
|
22
|
+
export declare class FakeTtsProvider implements TtsProvider {
|
|
23
|
+
readonly id = "fake";
|
|
24
|
+
readonly capabilities: {
|
|
25
|
+
textStreaming: boolean;
|
|
26
|
+
wordAlignment: boolean;
|
|
27
|
+
outputFormats: AudioFormat[];
|
|
28
|
+
};
|
|
29
|
+
synthesize(options: {
|
|
30
|
+
text: AsyncIterable<string>;
|
|
31
|
+
outputFormat: AudioFormat;
|
|
32
|
+
signal: AbortSignal;
|
|
33
|
+
}): AsyncGenerator<{
|
|
34
|
+
bytes: Uint8Array<ArrayBuffer>;
|
|
35
|
+
format: AudioFormat;
|
|
36
|
+
chunkSeq: number;
|
|
37
|
+
}, void, unknown>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=fake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/fake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,MAAM,yBAA0E;IACzF,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7B;AACD,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,YAAY;;;;MAAsE;IAC3F,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAM;IACnC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;CACtC;AACD,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,YAAY;;;;MAAyE;IACvF,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE;;;;;CAO3G"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FakeTtsProvider = exports.FakeSttProvider = exports.FakeSttSession = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const queue_1 = require("../queue");
|
|
6
|
+
class FakeSttSession {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.events = new queue_1.BoundedQueue(65536, item => JSON.stringify(item).length);
|
|
9
|
+
this.frames = [];
|
|
10
|
+
}
|
|
11
|
+
async pushAudio(frame) { this.frames.push(frame.slice()); }
|
|
12
|
+
async commitSegment(commitId) { this.commitId = commitId; }
|
|
13
|
+
emit(event) { this.events.push(event); }
|
|
14
|
+
async close() { this.events.close(); }
|
|
15
|
+
}
|
|
16
|
+
exports.FakeSttSession = FakeSttSession;
|
|
17
|
+
class FakeSttProvider {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.id = 'fake';
|
|
20
|
+
this.capabilities = { partials: true, manualCommit: true, speechActivityEvents: true };
|
|
21
|
+
this.sessions = [];
|
|
22
|
+
}
|
|
23
|
+
async open() { const session = new FakeSttSession(); this.sessions.push(session); return session; }
|
|
24
|
+
}
|
|
25
|
+
exports.FakeSttProvider = FakeSttProvider;
|
|
26
|
+
class FakeTtsProvider {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.id = 'fake';
|
|
29
|
+
this.capabilities = { textStreaming: true, wordAlignment: false, outputFormats: [types_1.PCM16] };
|
|
30
|
+
}
|
|
31
|
+
async *synthesize(options) {
|
|
32
|
+
let chunkSeq = 0;
|
|
33
|
+
for await (const _text of options.text) {
|
|
34
|
+
if (options.signal.aborted)
|
|
35
|
+
return;
|
|
36
|
+
yield { bytes: new Uint8Array(640), format: options.outputFormat, chunkSeq: chunkSeq++ };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.FakeTtsProvider = FakeTtsProvider;
|
|
41
|
+
//# sourceMappingURL=fake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../../../src/voice/providers/fake.ts"],"names":[],"mappings":";;;AAAA,oCAA8F;AAC9F,oCAAwC;AAExC,MAAa,cAAc;IAA3B;QACW,WAAM,GAAG,IAAI,oBAAY,CAAW,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QAChF,WAAM,GAAiB,EAAE,CAAC;IAMrC,CAAC;IAJC,KAAK,CAAC,SAAS,CAAC,KAAiB,IAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,aAAa,CAAC,QAAgB,IAAmB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,KAAe,IAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,KAAK,KAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACtD;AARD,wCAQC;AACD,MAAa,eAAe;IAA5B;QACW,OAAE,GAAG,MAAM,CAAC;QACZ,iBAAY,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QAClF,aAAQ,GAAqB,EAAE,CAAC;IAE3C,CAAC;IADC,KAAK,CAAC,IAAI,KAA8B,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;CAC7H;AALD,0CAKC;AACD,MAAa,eAAe;IAA5B;QACW,OAAE,GAAG,MAAM,CAAC;QACZ,iBAAY,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,aAAK,CAAC,EAAE,CAAC;IAQhG,CAAC;IAPC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAwF;QACxG,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACnC,MAAM,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;CACF;AAVD,0CAUC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SttProvider, SttSession, AudioFormat } from '../types';
|
|
2
|
+
import { SocketFactory } from './socket';
|
|
3
|
+
/** Dedicated transcription, not Gemini's audio-to-audio agent. */
|
|
4
|
+
export declare class GeminiLiveStt implements SttProvider {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
private readonly model;
|
|
7
|
+
private readonly connect;
|
|
8
|
+
readonly capabilities: {
|
|
9
|
+
partials: boolean;
|
|
10
|
+
manualCommit: boolean;
|
|
11
|
+
speechActivityEvents: boolean;
|
|
12
|
+
mode: "realtime";
|
|
13
|
+
};
|
|
14
|
+
constructor(id: string, model: string, connect?: SocketFactory);
|
|
15
|
+
open(options: {
|
|
16
|
+
format: AudioFormat;
|
|
17
|
+
language?: string;
|
|
18
|
+
signal: AbortSignal;
|
|
19
|
+
}): Promise<SttSession>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=gemini-live-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-live-stt.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/gemini-live-stt.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,UAAU,EAEV,WAAW,EAEZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,kEAAkE;AAClE,qBAAa,aAAc,YAAW,WAAW;IAQ7C,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,QAAQ,CAAC,YAAY;;;;;MAKnB;gBAES,EAAE,EAAE,MAAM,EACF,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkC;IAExD,IAAI,CAAC,OAAO,EAAE;QAClB,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,UAAU,CAAC;CA8IxB"}
|