@hyperdrive.bot/paseo-server 0.2.6
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/.env.example +31 -0
- package/README.md +111 -0
- package/dist/scripts/dev-runner.js +37 -0
- package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
- package/dist/scripts/supervisor-entrypoint.js +141 -0
- package/dist/scripts/supervisor-log-config.js +31 -0
- package/dist/scripts/supervisor.js +252 -0
- package/dist/server/executable-resolution/executable-resolution.d.ts +10 -0
- package/dist/server/executable-resolution/executable-resolution.js +118 -0
- package/dist/server/executable-resolution/windows.d.ts +18 -0
- package/dist/server/executable-resolution/windows.js +65 -0
- package/dist/server/extensions/daemon-backend.d.ts +11 -0
- package/dist/server/extensions/daemon-backend.js +146 -0
- package/dist/server/extensions/extension-host-manager.d.ts +48 -0
- package/dist/server/extensions/extension-host-manager.js +141 -0
- package/dist/server/extensions/extension-loader.d.ts +11 -0
- package/dist/server/extensions/extension-loader.js +47 -0
- package/dist/server/extensions/extension-service.d.ts +17 -0
- package/dist/server/extensions/extension-service.js +76 -0
- package/dist/server/server/agent/activity-curator.d.ts +28 -0
- package/dist/server/server/agent/activity-curator.js +227 -0
- package/dist/server/server/agent/agent-archive.d.ts +11 -0
- package/dist/server/server/agent/agent-archive.js +16 -0
- package/dist/server/server/agent/agent-loading.d.ts +12 -0
- package/dist/server/server/agent/agent-loading.js +55 -0
- package/dist/server/server/agent/agent-manager.d.ts +462 -0
- package/dist/server/server/agent/agent-manager.js +2955 -0
- package/dist/server/server/agent/agent-projections.d.ts +26 -0
- package/dist/server/server/agent/agent-projections.js +404 -0
- package/dist/server/server/agent/agent-prompt.d.ts +76 -0
- package/dist/server/server/agent/agent-prompt.js +230 -0
- package/dist/server/server/agent/agent-response-loop.d.ts +67 -0
- package/dist/server/server/agent/agent-response-loop.js +326 -0
- package/dist/server/server/agent/agent-routes.d.ts +18 -0
- package/dist/server/server/agent/agent-routes.js +107 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts +677 -0
- package/dist/server/server/agent/agent-sdk-types.js +22 -0
- package/dist/server/server/agent/agent-storage.d.ts +152 -0
- package/dist/server/server/agent/agent-storage.js +342 -0
- package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
- package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
- package/dist/server/server/agent/agent-timeline-store-types.d.ts +50 -0
- package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
- package/dist/server/server/agent/agent-timeline-store.d.ts +27 -0
- package/dist/server/server/agent/agent-timeline-store.js +230 -0
- package/dist/server/server/agent/audio-utils.d.ts +3 -0
- package/dist/server/server/agent/audio-utils.js +19 -0
- package/dist/server/server/agent/create-agent/create.d.ts +83 -0
- package/dist/server/server/agent/create-agent/create.js +289 -0
- package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +54 -0
- package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +152 -0
- package/dist/server/server/agent/create-agent-mode.d.ts +13 -0
- package/dist/server/server/agent/create-agent-mode.js +62 -0
- package/dist/server/server/agent/create-agent-title.d.ts +10 -0
- package/dist/server/server/agent/create-agent-title.js +34 -0
- package/dist/server/server/agent/dictation-debug.d.ts +13 -0
- package/dist/server/server/agent/dictation-debug.js +50 -0
- package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
- package/dist/server/server/agent/foreground-run-state.js +160 -0
- package/dist/server/server/agent/import-sessions.d.ts +47 -0
- package/dist/server/server/agent/import-sessions.js +145 -0
- package/dist/server/server/agent/lifecycle-command.d.ts +73 -0
- package/dist/server/server/agent/lifecycle-command.js +92 -0
- package/dist/server/server/agent/mcp-server.d.ts +22 -0
- package/dist/server/server/agent/mcp-server.js +544 -0
- package/dist/server/server/agent/mcp-shared.d.ts +193 -0
- package/dist/server/server/agent/mcp-shared.js +197 -0
- package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
- package/dist/server/server/agent/pcm16-resampler.js +63 -0
- package/dist/server/server/agent/permission-response.d.ts +15 -0
- package/dist/server/server/agent/permission-response.js +14 -0
- package/dist/server/server/agent/prompt-attachments.d.ts +7 -0
- package/dist/server/server/agent/prompt-attachments.js +90 -0
- package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
- package/dist/server/server/agent/provider-history-timestamps.js +16 -0
- package/dist/server/server/agent/provider-launch-config.d.ts +51 -0
- package/dist/server/server/agent/provider-launch-config.js +183 -0
- package/dist/server/server/agent/provider-notices.d.ts +3 -0
- package/dist/server/server/agent/provider-notices.js +5 -0
- package/dist/server/server/agent/provider-registry.d.ts +49 -0
- package/dist/server/server/agent/provider-registry.js +578 -0
- package/dist/server/server/agent/provider-session-import.d.ts +10 -0
- package/dist/server/server/agent/provider-session-import.js +49 -0
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +137 -0
- package/dist/server/server/agent/provider-snapshot-manager.js +694 -0
- package/dist/server/server/agent/providers/acp-agent.d.ts +354 -0
- package/dist/server/server/agent/providers/acp-agent.js +2438 -0
- package/dist/server/server/agent/providers/claude/agent.d.ts +341 -0
- package/dist/server/server/agent/providers/claude/agent.js +4606 -0
- package/dist/server/server/agent/providers/claude/background-shell-kill-keys.d.ts +32 -0
- package/dist/server/server/agent/providers/claude/background-shell-kill-keys.js +34 -0
- package/dist/server/server/agent/providers/claude/background-task-tracker.d.ts +49 -0
- package/dist/server/server/agent/providers/claude/background-task-tracker.js +119 -0
- package/dist/server/server/agent/providers/claude/feature-definitions.d.ts +8 -0
- package/dist/server/server/agent/providers/claude/feature-definitions.js +24 -0
- package/dist/server/server/agent/providers/claude/hook-handler.d.ts +37 -0
- package/dist/server/server/agent/providers/claude/hook-handler.js +193 -0
- package/dist/server/server/agent/providers/claude/hooks/event-translator.d.ts +49 -0
- package/dist/server/server/agent/providers/claude/hooks/event-translator.js +151 -0
- package/dist/server/server/agent/providers/claude/image-compression.d.ts +10 -0
- package/dist/server/server/agent/providers/claude/image-compression.js +32 -0
- package/dist/server/server/agent/providers/claude/model-manifest.d.ts +104 -0
- package/dist/server/server/agent/providers/claude/model-manifest.js +221 -0
- package/dist/server/server/agent/providers/claude/models.d.ts +11 -0
- package/dist/server/server/agent/providers/claude/models.js +97 -0
- package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
- package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
- package/dist/server/server/agent/providers/claude/project-dir.d.ts +6 -0
- package/dist/server/server/agent/providers/claude/project-dir.js +57 -0
- package/dist/server/server/agent/providers/claude/pty-session-launcher.d.ts +41 -0
- package/dist/server/server/agent/providers/claude/pty-session-launcher.js +131 -0
- package/dist/server/server/agent/providers/claude/resume-source.d.ts +11 -0
- package/dist/server/server/agent/providers/claude/resume-source.js +37 -0
- package/dist/server/server/agent/providers/claude/rewind.d.ts +30 -0
- package/dist/server/server/agent/providers/claude/rewind.js +30 -0
- package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +22 -0
- package/dist/server/server/agent/providers/claude/sidechain-tracker.js +232 -0
- package/dist/server/server/agent/providers/claude/spawn-config-writer.d.ts +70 -0
- package/dist/server/server/agent/providers/claude/spawn-config-writer.js +229 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +47 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +292 -0
- package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts +24 -0
- package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js +23 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +130 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.js +129 -0
- package/dist/server/server/agent/providers/claude/transport/claude-paths.d.ts +31 -0
- package/dist/server/server/agent/providers/claude/transport/claude-paths.js +63 -0
- package/dist/server/server/agent/providers/claude/transport/continue-flag.d.ts +31 -0
- package/dist/server/server/agent/providers/claude/transport/continue-flag.js +42 -0
- package/dist/server/server/agent/providers/claude/transport/pty-query.d.ts +62 -0
- package/dist/server/server/agent/providers/claude/transport/pty-query.js +265 -0
- package/dist/server/server/agent/providers/claude/transport/pty.d.ts +50 -0
- package/dist/server/server/agent/providers/claude/transport/pty.js +211 -0
- package/dist/server/server/agent/providers/claude/transport/redact.d.ts +2 -0
- package/dist/server/server/agent/providers/claude/transport/redact.js +5 -0
- package/dist/server/server/agent/providers/claude/transport/sdk.d.ts +63 -0
- package/dist/server/server/agent/providers/claude/transport/sdk.js +207 -0
- package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.d.ts +27 -0
- package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.js +162 -0
- package/dist/server/server/agent/providers/claude/transport/transcript-tailer.d.ts +28 -0
- package/dist/server/server/agent/providers/claude/transport/transcript-tailer.js +166 -0
- package/dist/server/server/agent/providers/claude/transport/truncate-session.d.ts +41 -0
- package/dist/server/server/agent/providers/claude/transport/truncate-session.js +86 -0
- package/dist/server/server/agent/providers/claude/transport/types.d.ts +47 -0
- package/dist/server/server/agent/providers/claude/transport/types.js +2 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +90 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js +262 -0
- package/dist/server/server/agent/providers/codex/rewind.d.ts +21 -0
- package/dist/server/server/agent/providers/codex/rewind.js +46 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +36 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +217 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +12 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +24 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js +830 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +308 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.js +4514 -0
- package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
- package/dist/server/server/agent/providers/codex-feature-definitions.js +45 -0
- package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +26 -0
- package/dist/server/server/agent/providers/copilot-acp-agent.js +187 -0
- package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +15 -0
- package/dist/server/server/agent/providers/cursor-acp-agent.js +18 -0
- package/dist/server/server/agent/providers/diagnostic-utils.d.ts +36 -0
- package/dist/server/server/agent/providers/diagnostic-utils.js +355 -0
- package/dist/server/server/agent/providers/generic-acp-agent.d.ts +42 -0
- package/dist/server/server/agent/providers/generic-acp-agent.js +161 -0
- package/dist/server/server/agent/providers/kiro-acp-agent.d.ts +17 -0
- package/dist/server/server/agent/providers/kiro-acp-agent.js +78 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +85 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.js +1010 -0
- package/dist/server/server/agent/providers/mock-slow-provider.d.ts +14 -0
- package/dist/server/server/agent/providers/mock-slow-provider.js +39 -0
- package/dist/server/server/agent/providers/opencode/paths.d.ts +2 -0
- package/dist/server/server/agent/providers/opencode/paths.js +7 -0
- package/dist/server/server/agent/providers/opencode/rewind.d.ts +18 -0
- package/dist/server/server/agent/providers/opencode/rewind.js +14 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts +91 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js +425 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +25 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js +39 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.d.ts +92 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.js +268 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +256 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +53 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +286 -0
- package/dist/server/server/agent/providers/opencode-agent.js +2857 -0
- package/dist/server/server/agent/providers/pi/agent.d.ts +137 -0
- package/dist/server/server/agent/providers/pi/agent.js +1650 -0
- package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +21 -0
- package/dist/server/server/agent/providers/pi/cli-runtime.js +233 -0
- package/dist/server/server/agent/providers/pi/history-mapper.d.ts +9 -0
- package/dist/server/server/agent/providers/pi/history-mapper.js +140 -0
- package/dist/server/server/agent/providers/pi/rewind.d.ts +8 -0
- package/dist/server/server/agent/providers/pi/rewind.js +8 -0
- package/dist/server/server/agent/providers/pi/rpc-types.d.ts +208 -0
- package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
- package/dist/server/server/agent/providers/pi/runtime.d.ts +57 -0
- package/dist/server/server/agent/providers/pi/runtime.js +56 -0
- package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +16 -0
- package/dist/server/server/agent/providers/pi/session-descriptor.js +346 -0
- package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +83 -0
- package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +184 -0
- package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +112 -0
- package/dist/server/server/agent/providers/pi/tool-call-mapper.js +284 -0
- package/dist/server/server/agent/providers/provider-image-output.d.ts +25 -0
- package/dist/server/server/agent/providers/provider-image-output.js +111 -0
- package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
- package/dist/server/server/agent/providers/provider-runner.js +81 -0
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +3 -0
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +60 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +884 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.js +778 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +25 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.js +208 -0
- package/dist/server/server/agent/recordings-debug.d.ts +3 -0
- package/dist/server/server/agent/recordings-debug.js +19 -0
- package/dist/server/server/agent/render-file-attachment.d.ts +29 -0
- package/dist/server/server/agent/render-file-attachment.js +41 -0
- package/dist/server/server/agent/resolve-resume-cwd.d.ts +14 -0
- package/dist/server/server/agent/resolve-resume-cwd.js +49 -0
- package/dist/server/server/agent/rewind/rewind.d.ts +10 -0
- package/dist/server/server/agent/rewind/rewind.js +29 -0
- package/dist/server/server/agent/rewind/test-rewind-session.d.ts +48 -0
- package/dist/server/server/agent/rewind/test-rewind-session.js +88 -0
- package/dist/server/server/agent/runtime-mcp-config.d.ts +14 -0
- package/dist/server/server/agent/runtime-mcp-config.js +53 -0
- package/dist/server/server/agent/session-digest-generator.d.ts +37 -0
- package/dist/server/server/agent/session-digest-generator.js +115 -0
- package/dist/server/server/agent/session-digest.d.ts +35 -0
- package/dist/server/server/agent/session-digest.js +104 -0
- package/dist/server/server/agent/structured-generation-providers.d.ts +29 -0
- package/dist/server/server/agent/structured-generation-providers.js +236 -0
- package/dist/server/server/agent/stt-debug.d.ts +10 -0
- package/dist/server/server/agent/stt-debug.js +33 -0
- package/dist/server/server/agent/stt-manager.d.ts +38 -0
- package/dist/server/server/agent/stt-manager.js +246 -0
- package/dist/server/server/agent/system-prompt.d.ts +2 -0
- package/dist/server/server/agent/system-prompt.js +8 -0
- package/dist/server/server/agent/timeline-append.d.ts +10 -0
- package/dist/server/server/agent/timeline-append.js +27 -0
- package/dist/server/server/agent/timeline-projection.d.ts +71 -0
- package/dist/server/server/agent/timeline-projection.js +373 -0
- package/dist/server/server/agent/tools/paseo-tools.d.ts +54 -0
- package/dist/server/server/agent/tools/paseo-tools.js +2197 -0
- package/dist/server/server/agent/tools/types.d.ts +36 -0
- package/dist/server/server/agent/tools/types.js +2 -0
- package/dist/server/server/agent/tts-debug.d.ts +8 -0
- package/dist/server/server/agent/tts-debug.js +24 -0
- package/dist/server/server/agent/tts-manager.d.ts +41 -0
- package/dist/server/server/agent/tts-manager.js +375 -0
- package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
- package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
- package/dist/server/server/agent-attention-policy.d.ts +29 -0
- package/dist/server/server/agent-attention-policy.js +36 -0
- package/dist/server/server/atomic-file.d.ts +3 -0
- package/dist/server/server/atomic-file.js +19 -0
- package/dist/server/server/auth.d.ts +38 -0
- package/dist/server/server/auth.js +143 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +92 -0
- package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
- package/dist/server/server/auto-archive-on-merge/index.js +15 -0
- package/dist/server/server/bootstrap.d.ts +126 -0
- package/dist/server/server/bootstrap.js +1193 -0
- package/dist/server/server/browser-tools/broker.d.ts +45 -0
- package/dist/server/server/browser-tools/broker.js +390 -0
- package/dist/server/server/browser-tools/errors.d.ts +22 -0
- package/dist/server/server/browser-tools/errors.js +27 -0
- package/dist/server/server/browser-tools/policy.d.ts +10 -0
- package/dist/server/server/browser-tools/policy.js +16 -0
- package/dist/server/server/browser-tools/tools.d.ts +16 -0
- package/dist/server/server/browser-tools/tools.js +845 -0
- package/dist/server/server/chat/chat-mentions.d.ts +47 -0
- package/dist/server/server/chat/chat-mentions.js +113 -0
- package/dist/server/server/chat/chat-service.d.ts +78 -0
- package/dist/server/server/chat/chat-service.js +337 -0
- package/dist/server/server/checkout/status-projection.d.ts +19 -0
- package/dist/server/server/checkout/status-projection.js +102 -0
- package/dist/server/server/checkout-diff-manager.d.ts +41 -0
- package/dist/server/server/checkout-diff-manager.js +189 -0
- package/dist/server/server/checkout-git-utils.d.ts +11 -0
- package/dist/server/server/checkout-git-utils.js +34 -0
- package/dist/server/server/client-message-id.d.ts +3 -0
- package/dist/server/server/client-message-id.js +12 -0
- package/dist/server/server/config.d.ts +17 -0
- package/dist/server/server/config.js +320 -0
- package/dist/server/server/connection-offer.d.ts +20 -0
- package/dist/server/server/connection-offer.js +59 -0
- package/dist/server/server/daemon-config-store.d.ts +25 -0
- package/dist/server/server/daemon-config-store.js +194 -0
- package/dist/server/server/daemon-keypair.d.ts +8 -0
- package/dist/server/server/daemon-keypair.js +42 -0
- package/dist/server/server/daemon-version.d.ts +5 -0
- package/dist/server/server/daemon-version.js +22 -0
- package/dist/server/server/daemon-worker.d.ts +2 -0
- package/dist/server/server/daemon-worker.js +251 -0
- package/dist/server/server/dictation/dictation-stream-manager.d.ts +87 -0
- package/dist/server/server/dictation/dictation-stream-manager.js +572 -0
- package/dist/server/server/editor-targets.d.ts +18 -0
- package/dist/server/server/editor-targets.js +109 -0
- package/dist/server/server/exports.d.ts +24 -0
- package/dist/server/server/exports.js +24 -0
- package/dist/server/server/file-download/token-store.d.ts +24 -0
- package/dist/server/server/file-download/token-store.js +40 -0
- package/dist/server/server/file-explorer/file-download-frames.d.ts +27 -0
- package/dist/server/server/file-explorer/file-download-frames.js +47 -0
- package/dist/server/server/file-explorer/service.d.ts +75 -0
- package/dist/server/server/file-explorer/service.js +308 -0
- package/dist/server/server/file-upload/index.d.ts +27 -0
- package/dist/server/server/file-upload/index.js +158 -0
- package/dist/server/server/hostnames.d.ts +13 -0
- package/dist/server/server/hostnames.js +94 -0
- package/dist/server/server/json-utils.d.ts +11 -0
- package/dist/server/server/json-utils.js +45 -0
- package/dist/server/server/lifecycle-reasons.d.ts +4 -0
- package/dist/server/server/lifecycle-reasons.js +6 -0
- package/dist/server/server/logger.d.ts +29 -0
- package/dist/server/server/logger.js +125 -0
- package/dist/server/server/loop-service.d.ts +234 -0
- package/dist/server/server/loop-service.js +769 -0
- package/dist/server/server/managed-processes/managed-processes.d.ts +76 -0
- package/dist/server/server/managed-processes/managed-processes.js +326 -0
- package/dist/server/server/meetings/capture-http.d.ts +3 -0
- package/dist/server/server/meetings/capture-http.js +71 -0
- package/dist/server/server/meetings/capture-orchestrator.d.ts +123 -0
- package/dist/server/server/meetings/capture-orchestrator.js +531 -0
- package/dist/server/server/meetings/capture-stream-ws.d.ts +42 -0
- package/dist/server/server/meetings/capture-stream-ws.js +68 -0
- package/dist/server/server/meetings/live-transcription.d.ts +57 -0
- package/dist/server/server/meetings/live-transcription.js +280 -0
- package/dist/server/server/meetings/meetings-http.d.ts +42 -0
- package/dist/server/server/meetings/meetings-http.js +266 -0
- package/dist/server/server/messages.d.ts +9 -0
- package/dist/server/server/messages.js +29 -0
- package/dist/server/server/migrations/backfill-workspace-id.migration.d.ts +9 -0
- package/dist/server/server/migrations/backfill-workspace-id.migration.js +64 -0
- package/dist/server/server/monitoring/telemetry.d.ts +13 -0
- package/dist/server/server/monitoring/telemetry.js +21 -0
- package/dist/server/server/package-version.d.ts +19 -0
- package/dist/server/server/package-version.js +60 -0
- package/dist/server/server/pagination/cursor.d.ts +16 -0
- package/dist/server/server/pagination/cursor.js +62 -0
- package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
- package/dist/server/server/pagination/sortable-pager.js +68 -0
- package/dist/server/server/pairing-offer.d.ts +18 -0
- package/dist/server/server/pairing-offer.js +47 -0
- package/dist/server/server/pairing-qr.d.ts +7 -0
- package/dist/server/server/pairing-qr.js +45 -0
- package/dist/server/server/paseo-env.d.ts +13 -0
- package/dist/server/server/paseo-env.js +53 -0
- package/dist/server/server/paseo-home.d.ts +2 -0
- package/dist/server/server/paseo-home.js +19 -0
- package/dist/server/server/paseo-worktree-service.d.ts +52 -0
- package/dist/server/server/paseo-worktree-service.js +294 -0
- package/dist/server/server/path-utils.d.ts +5 -0
- package/dist/server/server/path-utils.js +34 -0
- package/dist/server/server/persisted-config.d.ts +333 -0
- package/dist/server/server/persisted-config.js +402 -0
- package/dist/server/server/persistence-hooks.d.ts +32 -0
- package/dist/server/server/persistence-hooks.js +97 -0
- package/dist/server/server/pid-lock.d.ts +32 -0
- package/dist/server/server/pid-lock.js +170 -0
- package/dist/server/server/private-files.d.ts +6 -0
- package/dist/server/server/private-files.js +37 -0
- package/dist/server/server/process-diagnostics.d.ts +17 -0
- package/dist/server/server/process-diagnostics.js +22 -0
- package/dist/server/server/push/categories.d.ts +35 -0
- package/dist/server/server/push/categories.js +40 -0
- package/dist/server/server/push/expo-worker.d.ts +51 -0
- package/dist/server/server/push/expo-worker.js +149 -0
- package/dist/server/server/push/index.d.ts +39 -0
- package/dist/server/server/push/index.js +45 -0
- package/dist/server/server/push/notifications.d.ts +9 -0
- package/dist/server/server/push/notifications.js +15 -0
- package/dist/server/server/push/push-service.d.ts +20 -0
- package/dist/server/server/push/push-service.js +66 -0
- package/dist/server/server/push/routes.d.ts +28 -0
- package/dist/server/server/push/routes.js +74 -0
- package/dist/server/server/push/subscriptions.d.ts +42 -0
- package/dist/server/server/push/subscriptions.js +112 -0
- package/dist/server/server/push/token-store.d.ts +29 -0
- package/dist/server/server/push/token-store.js +78 -0
- package/dist/server/server/push/triggers.d.ts +68 -0
- package/dist/server/server/push/triggers.js +103 -0
- package/dist/server/server/push/vapid-keys.d.ts +15 -0
- package/dist/server/server/push/vapid-keys.js +52 -0
- package/dist/server/server/push/web-worker.d.ts +44 -0
- package/dist/server/server/push/web-worker.js +99 -0
- package/dist/server/server/relay-transport.d.ts +31 -0
- package/dist/server/server/relay-transport.js +514 -0
- package/dist/server/server/resolve-workspace-id-for-path.d.ts +3 -0
- package/dist/server/server/resolve-workspace-id-for-path.js +41 -0
- package/dist/server/server/resolve-worktree-creation-intent.d.ts +32 -0
- package/dist/server/server/resolve-worktree-creation-intent.js +121 -0
- package/dist/server/server/schedule/cron.d.ts +4 -0
- package/dist/server/server/schedule/cron.js +81 -0
- package/dist/server/server/schedule/service.d.ts +52 -0
- package/dist/server/server/schedule/service.js +628 -0
- package/dist/server/server/schedule/store.d.ts +13 -0
- package/dist/server/server/schedule/store.js +57 -0
- package/dist/server/server/script-health-monitor.d.ts +39 -0
- package/dist/server/server/script-health-monitor.js +159 -0
- package/dist/server/server/script-proxy.d.ts +3 -0
- package/dist/server/server/script-proxy.js +2 -0
- package/dist/server/server/script-route-branch-handler.d.ts +10 -0
- package/dist/server/server/script-route-branch-handler.js +11 -0
- package/dist/server/server/script-status-projection.d.ts +36 -0
- package/dist/server/server/script-status-projection.js +200 -0
- package/dist/server/server/server-id.d.ts +17 -0
- package/dist/server/server/server-id.js +68 -0
- package/dist/server/server/service-proxy.d.ts +237 -0
- package/dist/server/server/service-proxy.js +714 -0
- package/dist/server/server/session/agent-config/agent-config-session.d.ts +50 -0
- package/dist/server/server/session/agent-config/agent-config-session.js +98 -0
- package/dist/server/server/session/agent-updates/agent-updates-service.d.ts +59 -0
- package/dist/server/server/session/agent-updates/agent-updates-service.js +220 -0
- package/dist/server/server/session/chat/chat-schedule-loop-session.d.ts +120 -0
- package/dist/server/server/session/chat/chat-schedule-loop-session.js +489 -0
- package/dist/server/server/session/checkout/checkout-session.d.ts +140 -0
- package/dist/server/server/session/checkout/checkout-session.js +927 -0
- package/dist/server/server/session/checkout/git-metadata-generator.d.ts +53 -0
- package/dist/server/server/session/checkout/git-metadata-generator.js +159 -0
- package/dist/server/server/session/daemon/daemon-self-update-session-controller.d.ts +32 -0
- package/dist/server/server/session/daemon/daemon-self-update-session-controller.js +88 -0
- package/dist/server/server/session/daemon/daemon-self-updater.d.ts +32 -0
- package/dist/server/server/session/daemon/daemon-self-updater.js +56 -0
- package/dist/server/server/session/daemon/daemon-session.d.ts +76 -0
- package/dist/server/server/session/daemon/daemon-session.js +148 -0
- package/dist/server/server/session/daemon/diagnostics.d.ts +41 -0
- package/dist/server/server/session/daemon/diagnostics.js +431 -0
- package/dist/server/server/session/daemon/install-origin.d.ts +7 -0
- package/dist/server/server/session/daemon/install-origin.js +64 -0
- package/dist/server/server/session/daemon/npm-global-cli.d.ts +29 -0
- package/dist/server/server/session/daemon/npm-global-cli.js +98 -0
- package/dist/server/server/session/files/workspace-files-session.d.ts +43 -0
- package/dist/server/server/session/files/workspace-files-session.js +218 -0
- package/dist/server/server/session/git-mutation/git-mutation-service.d.ts +34 -0
- package/dist/server/server/session/git-mutation/git-mutation-service.js +71 -0
- package/dist/server/server/session/project-config/project-config-session.d.ts +34 -0
- package/dist/server/server/session/project-config/project-config-session.js +125 -0
- package/dist/server/server/session/provider/provider-catalog-session.d.ts +74 -0
- package/dist/server/server/session/provider/provider-catalog-session.js +343 -0
- package/dist/server/server/session/session-rename-route.d.ts +4 -0
- package/dist/server/server/session/session-rename-route.js +71 -0
- package/dist/server/server/session/session-rename-service.d.ts +25 -0
- package/dist/server/server/session/session-rename-service.js +76 -0
- package/dist/server/server/session/voice/voice-session.d.ts +166 -0
- package/dist/server/server/session/voice/voice-session.js +893 -0
- package/dist/server/server/session/voice/voice-turn-controller.d.ts +38 -0
- package/dist/server/server/session/voice/voice-turn-controller.js +393 -0
- package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.d.ts +36 -0
- package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.js +134 -0
- package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.d.ts +34 -0
- package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.js +190 -0
- package/dist/server/server/session/workspace-scripts/workspace-scripts-service.d.ts +41 -0
- package/dist/server/server/session/workspace-scripts/workspace-scripts-service.js +100 -0
- package/dist/server/server/session.d.ts +562 -0
- package/dist/server/server/session.js +5787 -0
- package/dist/server/server/speech/audio.d.ts +10 -0
- package/dist/server/server/speech/audio.js +101 -0
- package/dist/server/server/speech/provider-resolver.d.ts +3 -0
- package/dist/server/server/speech/provider-resolver.js +7 -0
- package/dist/server/server/speech/providers/local/config.d.ts +30 -0
- package/dist/server/server/speech/providers/local/config.js +134 -0
- package/dist/server/server/speech/providers/local/models.d.ts +11 -0
- package/dist/server/server/speech/providers/local/models.js +17 -0
- package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
- package/dist/server/server/speech/providers/local/runtime.js +135 -0
- package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +56 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +74 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +15 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +142 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +49 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +107 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +137 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +133 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +101 -0
- package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
- package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
- package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
- package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
- package/dist/server/server/speech/providers/local/worker-bytes.d.ts +4 -0
- package/dist/server/server/speech/providers/local/worker-bytes.js +9 -0
- package/dist/server/server/speech/providers/local/worker-client.d.ts +93 -0
- package/dist/server/server/speech/providers/local/worker-client.js +611 -0
- package/dist/server/server/speech/providers/local/worker-process.d.ts +2 -0
- package/dist/server/server/speech/providers/local/worker-process.js +270 -0
- package/dist/server/server/speech/providers/local/worker-protocol.d.ts +95 -0
- package/dist/server/server/speech/providers/local/worker-protocol.js +2 -0
- package/dist/server/server/speech/providers/openai/config.d.ts +19 -0
- package/dist/server/server/speech/providers/openai/config.js +148 -0
- package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
- package/dist/server/server/speech/providers/openai/runtime.js +102 -0
- package/dist/server/server/speech/providers/openai/stt.d.ts +23 -0
- package/dist/server/server/speech/providers/openai/stt.js +209 -0
- package/dist/server/server/speech/providers/openai/tts.d.ts +19 -0
- package/dist/server/server/speech/providers/openai/tts.js +48 -0
- package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
- package/dist/server/server/speech/speech-config-resolver.js +132 -0
- package/dist/server/server/speech/speech-provider.d.ts +59 -0
- package/dist/server/server/speech/speech-provider.js +2 -0
- package/dist/server/server/speech/speech-runtime.d.ts +45 -0
- package/dist/server/server/speech/speech-runtime.js +562 -0
- package/dist/server/server/speech/speech-types.d.ts +22 -0
- package/dist/server/server/speech/speech-types.js +8 -0
- package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
- package/dist/server/server/speech/turn-detection-provider.js +2 -0
- package/dist/server/server/uploads/file-attachment-validation.d.ts +61 -0
- package/dist/server/server/uploads/file-attachment-validation.js +56 -0
- package/dist/server/server/uploads/staging-service.d.ts +91 -0
- package/dist/server/server/uploads/staging-service.js +144 -0
- package/dist/server/server/utils/diff-highlighter.d.ts +57 -0
- package/dist/server/server/utils/diff-highlighter.js +279 -0
- package/dist/server/server/voice/voice-turn-controller.d.ts +38 -0
- package/dist/server/server/voice/voice-turn-controller.js +393 -0
- package/dist/server/server/voice-config.d.ts +15 -0
- package/dist/server/server/voice-config.js +54 -0
- package/dist/server/server/voice-permission-policy.d.ts +4 -0
- package/dist/server/server/voice-permission-policy.js +13 -0
- package/dist/server/server/voice-types.d.ts +12 -0
- package/dist/server/server/voice-types.js +2 -0
- package/dist/server/server/watch/composer-dictate.d.ts +42 -0
- package/dist/server/server/watch/composer-dictate.js +37 -0
- package/dist/server/server/watch/notification-action.d.ts +38 -0
- package/dist/server/server/watch/notification-action.js +54 -0
- package/dist/server/server/watch/notification-registry.d.ts +16 -0
- package/dist/server/server/watch/notification-registry.js +2 -0
- package/dist/server/server/web-ui.d.ts +10 -0
- package/dist/server/server/web-ui.js +205 -0
- package/dist/server/server/websocket/runtime-metrics.d.ts +94 -0
- package/dist/server/server/websocket/runtime-metrics.js +148 -0
- package/dist/server/server/websocket-server.d.ts +193 -0
- package/dist/server/server/websocket-server.js +1768 -0
- package/dist/server/server/workflow/workflow-feature.d.ts +2 -0
- package/dist/server/server/workflow/workflow-feature.js +8 -0
- package/dist/server/server/workflow/workflow-http-routes.d.ts +27 -0
- package/dist/server/server/workflow/workflow-http-routes.js +97 -0
- package/dist/server/server/workflow/workflow-manager.d.ts +228 -0
- package/dist/server/server/workflow/workflow-manager.js +444 -0
- package/dist/server/server/workflow/workflow-progress.d.ts +95 -0
- package/dist/server/server/workflow/workflow-progress.js +178 -0
- package/dist/server/server/workflow/workflow-storage.d.ts +36 -0
- package/dist/server/server/workflow/workflow-storage.js +143 -0
- package/dist/server/server/workspace/all-sessions-route.d.ts +32 -0
- package/dist/server/server/workspace/all-sessions-route.js +138 -0
- package/dist/server/server/workspace/session-openable.d.ts +16 -0
- package/dist/server/server/workspace/session-openable.js +48 -0
- package/dist/server/server/workspace/sessions-route.d.ts +15 -0
- package/dist/server/server/workspace/sessions-route.js +108 -0
- package/dist/server/server/workspace/sessions-search-route.d.ts +68 -0
- package/dist/server/server/workspace/sessions-search-route.js +203 -0
- package/dist/server/server/workspace-archive-service.d.ts +65 -0
- package/dist/server/server/workspace-archive-service.js +229 -0
- package/dist/server/server/workspace-auto-name.d.ts +55 -0
- package/dist/server/server/workspace-auto-name.js +128 -0
- package/dist/server/server/workspace-bootstrap-dedupe.d.ts +34 -0
- package/dist/server/server/workspace-bootstrap-dedupe.js +23 -0
- package/dist/server/server/workspace-directory.d.ts +93 -0
- package/dist/server/server/workspace-directory.js +422 -0
- package/dist/server/server/workspace-git-metadata.d.ts +24 -0
- package/dist/server/server/workspace-git-metadata.js +55 -0
- package/dist/server/server/workspace-git-service.d.ts +257 -0
- package/dist/server/server/workspace-git-service.js +1386 -0
- package/dist/server/server/workspace-reconciliation-service.d.ts +57 -0
- package/dist/server/server/workspace-reconciliation-service.js +278 -0
- package/dist/server/server/workspace-registry-bootstrap.d.ts +13 -0
- package/dist/server/server/workspace-registry-bootstrap.js +121 -0
- package/dist/server/server/workspace-registry-model.d.ts +55 -0
- package/dist/server/server/workspace-registry-model.js +190 -0
- package/dist/server/server/workspace-registry.d.ts +117 -0
- package/dist/server/server/workspace-registry.js +194 -0
- package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
- package/dist/server/server/workspace-script-runtime-store.js +78 -0
- package/dist/server/server/workspace-service-env.d.ts +18 -0
- package/dist/server/server/workspace-service-env.js +85 -0
- package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
- package/dist/server/server/workspace-service-port-registry.js +59 -0
- package/dist/server/server/worktree/commands.d.ts +55 -0
- package/dist/server/server/worktree/commands.js +107 -0
- package/dist/server/server/worktree-bootstrap.d.ts +76 -0
- package/dist/server/server/worktree-bootstrap.js +720 -0
- package/dist/server/server/worktree-branch-name-generator.d.ts +35 -0
- package/dist/server/server/worktree-branch-name-generator.js +91 -0
- package/dist/server/server/worktree-core.d.ts +31 -0
- package/dist/server/server/worktree-core.js +105 -0
- package/dist/server/server/worktree-errors.d.ts +12 -0
- package/dist/server/server/worktree-errors.js +28 -0
- package/dist/server/server/worktree-session.d.ts +152 -0
- package/dist/server/server/worktree-session.js +466 -0
- package/dist/server/services/github-service.d.ts +337 -0
- package/dist/server/services/github-service.js +2101 -0
- package/dist/server/services/quota-fetcher/manifest.d.ts +4 -0
- package/dist/server/services/quota-fetcher/manifest.js +52 -0
- package/dist/server/services/quota-fetcher/provider.d.ts +17 -0
- package/dist/server/services/quota-fetcher/provider.js +2 -0
- package/dist/server/services/quota-fetcher/providers/claude.d.ts +26 -0
- package/dist/server/services/quota-fetcher/providers/claude.js +217 -0
- package/dist/server/services/quota-fetcher/providers/codex.d.ts +23 -0
- package/dist/server/services/quota-fetcher/providers/codex.js +211 -0
- package/dist/server/services/quota-fetcher/providers/copilot.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/copilot.js +75 -0
- package/dist/server/services/quota-fetcher/providers/cursor.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/cursor.js +123 -0
- package/dist/server/services/quota-fetcher/providers/grok.d.ts +18 -0
- package/dist/server/services/quota-fetcher/providers/grok.js +89 -0
- package/dist/server/services/quota-fetcher/providers/kimi.d.ts +20 -0
- package/dist/server/services/quota-fetcher/providers/kimi.js +89 -0
- package/dist/server/services/quota-fetcher/providers/minimax.d.ts +29 -0
- package/dist/server/services/quota-fetcher/providers/minimax.js +227 -0
- package/dist/server/services/quota-fetcher/providers/zai.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/zai.js +58 -0
- package/dist/server/services/quota-fetcher/service.d.ts +28 -0
- package/dist/server/services/quota-fetcher/service.js +58 -0
- package/dist/server/services/quota-fetcher/usage.d.ts +22 -0
- package/dist/server/services/quota-fetcher/usage.js +49 -0
- package/dist/server/terminal/activity/terminal-activity-tracker.d.ts +20 -0
- package/dist/server/terminal/activity/terminal-activity-tracker.js +59 -0
- package/dist/server/terminal/agent-hooks/agent-hook-installer.d.ts +62 -0
- package/dist/server/terminal/agent-hooks/agent-hook-installer.js +117 -0
- package/dist/server/terminal/agent-hooks/claude/claude-settings.d.ts +7 -0
- package/dist/server/terminal/agent-hooks/claude/claude-settings.js +88 -0
- package/dist/server/terminal/agent-hooks/claude/claude.d.ts +4 -0
- package/dist/server/terminal/agent-hooks/claude/claude.js +47 -0
- package/dist/server/terminal/agent-hooks/codex/codex-settings.d.ts +7 -0
- package/dist/server/terminal/agent-hooks/codex/codex-settings.js +99 -0
- package/dist/server/terminal/agent-hooks/codex/codex.d.ts +4 -0
- package/dist/server/terminal/agent-hooks/codex/codex.js +30 -0
- package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.d.ts +4 -0
- package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.js +46 -0
- package/dist/server/terminal/agent-hooks/opencode/opencode.d.ts +3 -0
- package/dist/server/terminal/agent-hooks/opencode/opencode.js +23 -0
- package/dist/server/terminal/agent-hooks/provider-registry.d.ts +24 -0
- package/dist/server/terminal/agent-hooks/provider-registry.js +36 -0
- package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.d.ts +10 -0
- package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.js +26 -0
- package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
- package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
- package/dist/server/terminal/terminal-capture.d.ts +12 -0
- package/dist/server/terminal/terminal-capture.js +43 -0
- package/dist/server/terminal/terminal-manager-factory.d.ts +6 -0
- package/dist/server/terminal/terminal-manager-factory.js +5 -0
- package/dist/server/terminal/terminal-manager.d.ts +78 -0
- package/dist/server/terminal/terminal-manager.js +319 -0
- package/dist/server/terminal/terminal-output-coalescer.d.ts +34 -0
- package/dist/server/terminal/terminal-output-coalescer.js +73 -0
- package/dist/server/terminal/terminal-restore.d.ts +18 -0
- package/dist/server/terminal/terminal-restore.js +52 -0
- package/dist/server/terminal/terminal-session-controller.d.ts +85 -0
- package/dist/server/terminal/terminal-session-controller.js +819 -0
- package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
- package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
- package/dist/server/terminal/terminal-worker-process.js +304 -0
- package/dist/server/terminal/terminal-worker-protocol.d.ts +119 -0
- package/dist/server/terminal/terminal-worker-protocol.js +2 -0
- package/dist/server/terminal/terminal.d.ts +151 -0
- package/dist/server/terminal/terminal.js +1161 -0
- package/dist/server/terminal/worker-terminal-manager.d.ts +20 -0
- package/dist/server/terminal/worker-terminal-manager.js +688 -0
- package/dist/server/utils/build-metadata-prompt.d.ts +19 -0
- package/dist/server/utils/build-metadata-prompt.js +29 -0
- package/dist/server/utils/checkout-git.d.ts +253 -0
- package/dist/server/utils/checkout-git.js +2238 -0
- package/dist/server/utils/directory-suggestions.d.ts +26 -0
- package/dist/server/utils/directory-suggestions.js +830 -0
- package/dist/server/utils/git-rev-parse-path.d.ts +3 -0
- package/dist/server/utils/git-rev-parse-path.js +21 -0
- package/dist/server/utils/github-remote.d.ts +9 -0
- package/dist/server/utils/github-remote.js +62 -0
- package/dist/server/utils/paseo-config-file.d.ts +30 -0
- package/dist/server/utils/paseo-config-file.js +90 -0
- package/dist/server/utils/path.d.ts +18 -0
- package/dist/server/utils/path.js +123 -0
- package/dist/server/utils/project-icon.d.ts +39 -0
- package/dist/server/utils/project-icon.js +364 -0
- package/dist/server/utils/promise-timeout.d.ts +9 -0
- package/dist/server/utils/promise-timeout.js +25 -0
- package/dist/server/utils/run-git-command.d.ts +37 -0
- package/dist/server/utils/run-git-command.js +232 -0
- package/dist/server/utils/spawn.d.ts +33 -0
- package/dist/server/utils/spawn.js +71 -0
- package/dist/server/utils/string-command-shell.d.ts +10 -0
- package/dist/server/utils/string-command-shell.js +21 -0
- package/dist/server/utils/tree-kill.d.ts +18 -0
- package/dist/server/utils/tree-kill.js +77 -0
- package/dist/server/utils/windows-command.d.ts +15 -0
- package/dist/server/utils/windows-command.js +41 -0
- package/dist/server/utils/worktree-metadata.d.ts +39 -0
- package/dist/server/utils/worktree-metadata.js +174 -0
- package/dist/server/utils/worktree.d.ts +205 -0
- package/dist/server/utils/worktree.js +1119 -0
- package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css +1 -0
- package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.br +0 -0
- package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js +5 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js +3 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js +16533 -0
- package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js +3 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js +5 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js +11 -0
- package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.map.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js +60 -0
- package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.map.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.map.gz +0 -0
- package/dist/server/web-ui/apple-touch-icon.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/error.d1ea1496f9057eb392d5bbf3732a61b7.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/file.19eeb73b9593a38f8e9f418337fc7d10.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/forward.d8b800c443b8972542883e0b9de2bdc6.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/pkg.ab19f4cbc543357183a20571f68380a3.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png +0 -0
- package/dist/server/web-ui/assets/__node_modules/expo-router/assets/unmatched.20e71bdf79e3a97bf55fd9e164041578.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/antigravity.6e91a685c33435e0b466a56db86cf141.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/cursor.c31d6bce4fe9aadc3fe59962f4c4fcf3.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/file-explorer.3e15e8f72c825c85ce336bcb0cdef776.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/finder.7f68fc2c475621a672e1be09309d5567.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/vscode.832bdb4c685d930f1c864c793703600b.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/webstorm.aa5dc2cd8c20cc0a155c4c5c5ab3c5f5.png +0 -0
- package/dist/server/web-ui/assets/assets/images/editor-apps/zed.f3a670b7f9aa226da4fe53fb86f1abbd.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-dark-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-dark-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-dark.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-light-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-light-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
- package/dist/server/web-ui/assets/assets/images/favicon-light.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
- package/dist/server/web-ui/assets/assets/images/notification-icon.3bf81d33ddbf380606bdd248ba83e158.png +0 -0
- package/dist/server/web-ui/favicon.ico +0 -0
- package/dist/server/web-ui/index.html +90 -0
- package/dist/server/web-ui/index.html.br +0 -0
- package/dist/server/web-ui/index.html.gz +0 -0
- package/dist/server/web-ui/manifest.json +27 -0
- package/dist/server/web-ui/manifest.json.br +0 -0
- package/dist/server/web-ui/manifest.json.gz +0 -0
- package/dist/server/web-ui/metadata.json +1 -0
- package/dist/server/web-ui/metadata.json.br +1 -0
- package/dist/server/web-ui/metadata.json.gz +0 -0
- package/dist/server/web-ui/pwa-icon-192.png +0 -0
- package/dist/server/web-ui/pwa-icon-512.png +0 -0
- package/dist/server/web-ui/robots.txt +2 -0
- package/dist/server/web-ui/service-worker.js +87 -0
- package/dist/server/web-ui/service-worker.js.br +0 -0
- package/dist/server/web-ui/service-worker.js.gz +0 -0
- package/dist/src/executable-resolution/executable-resolution.js +118 -0
- package/dist/src/executable-resolution/windows.js +65 -0
- package/dist/src/server/agent/provider-launch-config.js +183 -0
- package/dist/src/server/paseo-env.js +53 -0
- package/dist/src/server/paseo-home.js +19 -0
- package/dist/src/server/persisted-config.js +402 -0
- package/dist/src/server/pid-lock.js +170 -0
- package/dist/src/server/private-files.js +37 -0
- package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
- package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
- package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
- package/dist/src/utils/spawn.js +71 -0
- package/dist/src/utils/windows-command.js +41 -0
- package/package.json +143 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import type { SherpaOfflineRecognizerEngine } from "../speech/providers/local/sherpa/sherpa-offline-recognizer.js";
|
|
3
|
+
import { type SherpaSileroVadSessionConfig } from "../speech/providers/local/sherpa/silero-vad-session.js";
|
|
4
|
+
export interface LiveTranscriptionHeader {
|
|
5
|
+
sampleRate: number;
|
|
6
|
+
channels: number;
|
|
7
|
+
format: "f32le";
|
|
8
|
+
track: string;
|
|
9
|
+
}
|
|
10
|
+
export type LiveTranscriptEvent = {
|
|
11
|
+
type: "partial";
|
|
12
|
+
segmentId: string;
|
|
13
|
+
text: string;
|
|
14
|
+
atSeconds: number;
|
|
15
|
+
} | {
|
|
16
|
+
type: "final";
|
|
17
|
+
segmentId: string;
|
|
18
|
+
text: string;
|
|
19
|
+
atSeconds: number;
|
|
20
|
+
} | {
|
|
21
|
+
type: "error";
|
|
22
|
+
error: Error;
|
|
23
|
+
};
|
|
24
|
+
interface DebugLogger {
|
|
25
|
+
debug: (...args: unknown[]) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface CreateLiveTranscriptionParams {
|
|
28
|
+
/** Readable carrying the framed f32le protocol (header line + length-prefixed blocks). */
|
|
29
|
+
stream: Readable;
|
|
30
|
+
/** Shared 16000-Hz offline recognizer the realtime session decodes against. */
|
|
31
|
+
engine: SherpaOfflineRecognizerEngine;
|
|
32
|
+
/** Injected event sink - a plain function, no WebSocket/orchestrator here. */
|
|
33
|
+
sink: (event: LiveTranscriptEvent) => void;
|
|
34
|
+
logger?: DebugLogger;
|
|
35
|
+
/** Realtime decode throttle; defaults to 350ms (preserved from the realtime session default). */
|
|
36
|
+
minDecodeIntervalMs?: number;
|
|
37
|
+
vadConfig?: SherpaSileroVadSessionConfig;
|
|
38
|
+
maxQueuedFrames?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface LiveTranscriptionHandle {
|
|
41
|
+
/** The parsed header - resolves once the header line has been read off the stream. */
|
|
42
|
+
readonly header: Promise<LiveTranscriptionHeader>;
|
|
43
|
+
/** Force a final on the realtime session (orchestrator stop hook). Does not tear down. */
|
|
44
|
+
commit: () => void;
|
|
45
|
+
/** Flush + force a final + tear down both sessions. Idempotent. */
|
|
46
|
+
close: () => Promise<void>;
|
|
47
|
+
/** Resolves when the stream ends (or errors) and the final has been flushed. */
|
|
48
|
+
readonly done: Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Wire a live f32le capture stream into the on-device realtime STT stack and forward
|
|
52
|
+
* partial/final transcript events to `sink`. Returns a handle exposing the header, a `commit()`
|
|
53
|
+
* stop hook, `close()`, and a `done` promise that settles when the stream ends.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createLiveTranscription(params: CreateLiveTranscriptionParams): Promise<LiveTranscriptionHandle>;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=live-transcription.d.ts.map
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
// LIVE-TRANSCRIPT INGEST SEAM (Story 2.1, ported from the earlier Story 3.1). Turns a live f32le
|
|
2
|
+
// capture stream (from `meetcap capture --emit pcm`) into realtime partial/final transcript
|
|
3
|
+
// events, without any WebSocket, orchestrator, or persistence - those live in the orchestrator +
|
|
4
|
+
// capture-stream WS. The seam is a plain function with an injected sink; its `commit()`/`close()`
|
|
5
|
+
// are exposed hooks for the orchestrator to force a final on stop.
|
|
6
|
+
//
|
|
7
|
+
// Conversion chain (explicit, one direction):
|
|
8
|
+
// f32le @ header.sampleRate -> float32ToPcm16le -> pcm16le
|
|
9
|
+
// -> Pcm16MonoResampler(->16000) ONLY when header.sampleRate !== 16000, else passthrough
|
|
10
|
+
// -> SherpaSileroVadSession.appendPcm16 (VAD gate; tracks in-speech)
|
|
11
|
+
// -> SherpaParakeetRealtimeTranscriptionSession.appendPcm16 ONLY while in-speech.
|
|
12
|
+
// Both the realtime and VAD sessions run at 16000 mono; the realtime session is built against a
|
|
13
|
+
// caller-supplied shared SherpaOfflineRecognizerEngine (sampleRate === 16000).
|
|
14
|
+
//
|
|
15
|
+
// Wire protocol consumed (matches the native emitter): one single-line UTF-8 JSON header
|
|
16
|
+
// terminated by `\n` - {"sampleRate","channels","format":"f32le","track"} - then repeated
|
|
17
|
+
// `[uint32 LE byteLength][byteLength bytes of f32le]` blocks. Explicit lengths mean a partial
|
|
18
|
+
// socket read never desyncs f32le sample boundaries; the reader buffers across chunks until a
|
|
19
|
+
// whole length-prefixed block is available.
|
|
20
|
+
import { once } from "node:events";
|
|
21
|
+
import { Pcm16MonoResampler } from "../agent/pcm16-resampler.js";
|
|
22
|
+
import { float32ToPcm16le } from "../speech/audio.js";
|
|
23
|
+
import { SherpaParakeetRealtimeTranscriptionSession } from "../speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js";
|
|
24
|
+
import { SherpaSileroVadSession, } from "../speech/providers/local/sherpa/silero-vad-session.js";
|
|
25
|
+
const TARGET_SAMPLE_RATE = 16000;
|
|
26
|
+
const DEFAULT_MIN_DECODE_INTERVAL_MS = 350;
|
|
27
|
+
// Drop-oldest ring bound. The decode path is synchronous per frame and the realtime decode is
|
|
28
|
+
// throttled + async, so this never fills in practice - it is a guard so a slow consumer can
|
|
29
|
+
// never apply pipe backpressure that would stall the stdout reader (and thus `meetcap`).
|
|
30
|
+
const DEFAULT_MAX_QUEUED_FRAMES = 512;
|
|
31
|
+
// Safety cap on how long `finalize()` waits for the forced-final decode to land. The realtime
|
|
32
|
+
// session emits `committed` right after its decode resolves, so this is only insurance against a
|
|
33
|
+
// wedged native decode - not a timing dependency the happy path relies on.
|
|
34
|
+
const FINALIZE_TIMEOUT_MS = 5000;
|
|
35
|
+
function toError(value) {
|
|
36
|
+
return value instanceof Error ? value : new Error(String(value));
|
|
37
|
+
}
|
|
38
|
+
function parseHeaderLine(line) {
|
|
39
|
+
let parsed;
|
|
40
|
+
try {
|
|
41
|
+
parsed = JSON.parse(line);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw new Error(`live-transcription: malformed header line: ${JSON.stringify(line)}`);
|
|
45
|
+
}
|
|
46
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
47
|
+
throw new Error("live-transcription: header is not a JSON object");
|
|
48
|
+
}
|
|
49
|
+
const header = parsed;
|
|
50
|
+
if (header.format !== "f32le") {
|
|
51
|
+
throw new Error(`live-transcription: unsupported format ${String(header.format)} (want f32le)`);
|
|
52
|
+
}
|
|
53
|
+
const { sampleRate, channels } = header;
|
|
54
|
+
if (typeof sampleRate !== "number" || !Number.isInteger(sampleRate) || sampleRate <= 0) {
|
|
55
|
+
throw new Error(`live-transcription: invalid sampleRate ${String(sampleRate)}`);
|
|
56
|
+
}
|
|
57
|
+
if (typeof channels !== "number" || !Number.isInteger(channels) || channels <= 0) {
|
|
58
|
+
throw new Error(`live-transcription: invalid channels ${String(channels)}`);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
sampleRate,
|
|
62
|
+
channels,
|
|
63
|
+
format: "f32le",
|
|
64
|
+
track: typeof header.track === "string" ? header.track : "near",
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Copy f32le bytes -> Float32Array. `readFloatLE` sidesteps Buffer byteOffset alignment. */
|
|
68
|
+
function f32leToFloat32(block) {
|
|
69
|
+
if (block.length % 4 !== 0) {
|
|
70
|
+
throw new Error(`live-transcription: f32le block byteLength must be a multiple of 4, got ${block.length}`);
|
|
71
|
+
}
|
|
72
|
+
const out = new Float32Array(block.length / 4);
|
|
73
|
+
for (let i = 0; i < out.length; i += 1) {
|
|
74
|
+
out[i] = block.readFloatLE(i * 4);
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wire a live f32le capture stream into the on-device realtime STT stack and forward
|
|
80
|
+
* partial/final transcript events to `sink`. Returns a handle exposing the header, a `commit()`
|
|
81
|
+
* stop hook, `close()`, and a `done` promise that settles when the stream ends.
|
|
82
|
+
*/
|
|
83
|
+
export async function createLiveTranscription(params) {
|
|
84
|
+
const { stream, engine, sink } = params;
|
|
85
|
+
const logger = params.logger ?? { debug: () => { } };
|
|
86
|
+
const minDecodeIntervalMs = params.minDecodeIntervalMs ?? DEFAULT_MIN_DECODE_INTERVAL_MS;
|
|
87
|
+
const maxQueuedFrames = params.maxQueuedFrames ?? DEFAULT_MAX_QUEUED_FRAMES;
|
|
88
|
+
const vad = new SherpaSileroVadSession({ logger, config: params.vadConfig });
|
|
89
|
+
const realtime = new SherpaParakeetRealtimeTranscriptionSession({ engine, minDecodeIntervalMs });
|
|
90
|
+
await vad.connect();
|
|
91
|
+
await realtime.connect();
|
|
92
|
+
// atSeconds is the cumulative resampled-audio clock (all frames, in-speech or not) / 16000.
|
|
93
|
+
let totalResampledSamples = 0;
|
|
94
|
+
const atSeconds = () => totalResampledSamples / TARGET_SAMPLE_RATE;
|
|
95
|
+
let inSpeech = false;
|
|
96
|
+
vad.on("speech_started", () => {
|
|
97
|
+
inSpeech = true;
|
|
98
|
+
});
|
|
99
|
+
vad.on("speech_stopped", () => {
|
|
100
|
+
inSpeech = false;
|
|
101
|
+
});
|
|
102
|
+
vad.on("error", (err) => sink({ type: "error", error: toError(err) }));
|
|
103
|
+
realtime.on("transcript", (payload) => {
|
|
104
|
+
sink({
|
|
105
|
+
type: payload.isFinal ? "final" : "partial",
|
|
106
|
+
segmentId: payload.segmentId,
|
|
107
|
+
text: payload.transcript,
|
|
108
|
+
atSeconds: atSeconds(),
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
// `committed` is the final-boundary signal; the `transcript` (isFinal) emitted right after it
|
|
112
|
+
// carries the text, so the sink is driven from `transcript` above. Hook kept explicit per spec.
|
|
113
|
+
realtime.on("committed", () => { });
|
|
114
|
+
realtime.on("error", (err) => sink({ type: "error", error: toError(err) }));
|
|
115
|
+
let header = null;
|
|
116
|
+
let resampler = null;
|
|
117
|
+
let residual = Buffer.alloc(0);
|
|
118
|
+
let headerResolve;
|
|
119
|
+
let headerReject;
|
|
120
|
+
const headerPromise = new Promise((resolve, reject) => {
|
|
121
|
+
headerResolve = resolve;
|
|
122
|
+
headerReject = reject;
|
|
123
|
+
});
|
|
124
|
+
// Suppress unhandled-rejection noise when a caller never awaits `.header` (e.g. a malformed
|
|
125
|
+
// header settles via the sink `error` + `done` instead). Awaiters still observe the rejection.
|
|
126
|
+
void headerPromise.catch(() => { });
|
|
127
|
+
// Bounded drop-oldest ring of decoded 16k pcm16 frames, drained off the data-handler stack so
|
|
128
|
+
// the stream reader never awaits decode work (AC 7).
|
|
129
|
+
const ring = [];
|
|
130
|
+
let droppedFrames = 0;
|
|
131
|
+
let drainScheduled = false;
|
|
132
|
+
function drain() {
|
|
133
|
+
drainScheduled = false;
|
|
134
|
+
while (ring.length > 0) {
|
|
135
|
+
const frame = ring.shift();
|
|
136
|
+
totalResampledSamples += frame.length / 2;
|
|
137
|
+
vad.appendPcm16(frame); // may flip `inSpeech` synchronously via its events
|
|
138
|
+
if (inSpeech) {
|
|
139
|
+
realtime.appendPcm16(frame);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function enqueue(frame16k) {
|
|
144
|
+
if (frame16k.length === 0) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (ring.length >= maxQueuedFrames) {
|
|
148
|
+
ring.shift();
|
|
149
|
+
droppedFrames += 1;
|
|
150
|
+
}
|
|
151
|
+
ring.push(frame16k);
|
|
152
|
+
if (!drainScheduled) {
|
|
153
|
+
drainScheduled = true;
|
|
154
|
+
queueMicrotask(drain);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function handleBlock(block) {
|
|
158
|
+
const floats = f32leToFloat32(block);
|
|
159
|
+
const pcm16 = float32ToPcm16le(floats);
|
|
160
|
+
const frame16k = resampler ? resampler.processChunk(pcm16) : pcm16;
|
|
161
|
+
enqueue(frame16k);
|
|
162
|
+
}
|
|
163
|
+
function extractFrames() {
|
|
164
|
+
if (!header) {
|
|
165
|
+
const newline = residual.indexOf(0x0a);
|
|
166
|
+
if (newline < 0) {
|
|
167
|
+
return; // header line not fully received yet
|
|
168
|
+
}
|
|
169
|
+
const line = residual.subarray(0, newline).toString("utf8");
|
|
170
|
+
header = parseHeaderLine(line);
|
|
171
|
+
resampler =
|
|
172
|
+
header.sampleRate !== TARGET_SAMPLE_RATE
|
|
173
|
+
? new Pcm16MonoResampler({ inputRate: header.sampleRate, outputRate: TARGET_SAMPLE_RATE })
|
|
174
|
+
: null;
|
|
175
|
+
residual = residual.subarray(newline + 1);
|
|
176
|
+
logger.debug({ header, resampling: resampler !== null }, "[live-transcription] header parsed");
|
|
177
|
+
headerResolve(header);
|
|
178
|
+
}
|
|
179
|
+
for (;;) {
|
|
180
|
+
if (residual.length < 4) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const byteLength = residual.readUInt32LE(0);
|
|
184
|
+
if (residual.length < 4 + byteLength) {
|
|
185
|
+
return; // whole block not yet available - buffer across reads
|
|
186
|
+
}
|
|
187
|
+
const block = residual.subarray(4, 4 + byteLength);
|
|
188
|
+
residual = residual.subarray(4 + byteLength);
|
|
189
|
+
handleBlock(block);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
let doneResolve;
|
|
193
|
+
const done = new Promise((resolve) => {
|
|
194
|
+
doneResolve = resolve;
|
|
195
|
+
});
|
|
196
|
+
let finalized = false;
|
|
197
|
+
let failure = null;
|
|
198
|
+
async function finalize() {
|
|
199
|
+
if (finalized) {
|
|
200
|
+
await done;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
finalized = true;
|
|
204
|
+
drain(); // flush any queued frames before closing the turn
|
|
205
|
+
try {
|
|
206
|
+
vad.flush(); // force-closes a trailing in-speech span (payload-less speech_stopped)
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
sink({ type: "error", error: toError(err) });
|
|
210
|
+
}
|
|
211
|
+
// Wait for the forced-final decode to land - the realtime session emits `committed` right
|
|
212
|
+
// after it - with a safety timeout so a wedged native decode can't hang the stream forever.
|
|
213
|
+
const abort = new AbortController();
|
|
214
|
+
const committed = once(realtime, "committed", { signal: abort.signal });
|
|
215
|
+
const timer = setTimeout(() => abort.abort(), FINALIZE_TIMEOUT_MS);
|
|
216
|
+
realtime.commit();
|
|
217
|
+
try {
|
|
218
|
+
await committed;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
// aborted by the safety timeout - proceed to teardown regardless
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
clearTimeout(timer);
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
vad.close();
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// ignore native cleanup failures
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
realtime.close();
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
// ignore native cleanup failures
|
|
237
|
+
}
|
|
238
|
+
if (droppedFrames > 0) {
|
|
239
|
+
logger.debug({ droppedFrames }, "[live-transcription] dropped frames under backpressure");
|
|
240
|
+
}
|
|
241
|
+
doneResolve();
|
|
242
|
+
}
|
|
243
|
+
function fail(err) {
|
|
244
|
+
if (failure) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
failure = err;
|
|
248
|
+
sink({ type: "error", error: err });
|
|
249
|
+
if (!header) {
|
|
250
|
+
headerReject(err);
|
|
251
|
+
}
|
|
252
|
+
stream.destroy(err);
|
|
253
|
+
void finalize();
|
|
254
|
+
}
|
|
255
|
+
stream.on("data", (chunk) => {
|
|
256
|
+
if (finalized) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
residual = residual.length === 0 ? chunk : Buffer.concat([residual, chunk]);
|
|
261
|
+
extractFrames();
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
fail(toError(err));
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
stream.on("end", () => {
|
|
268
|
+
void finalize();
|
|
269
|
+
});
|
|
270
|
+
stream.on("error", (err) => {
|
|
271
|
+
fail(toError(err));
|
|
272
|
+
});
|
|
273
|
+
return {
|
|
274
|
+
header: headerPromise,
|
|
275
|
+
commit: () => realtime.commit(),
|
|
276
|
+
close: () => finalize(),
|
|
277
|
+
done,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=live-transcription.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Express } from "express";
|
|
2
|
+
export declare function ensureWorkdir(meetingId: string): string;
|
|
3
|
+
export declare function deriveStatus(unidentified: number, turnCount: number): string;
|
|
4
|
+
export interface IngestedParticipant {
|
|
5
|
+
id: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
voiceLabel: string;
|
|
8
|
+
email: string;
|
|
9
|
+
identified: boolean;
|
|
10
|
+
talkSeconds: number;
|
|
11
|
+
sampleClips: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface IngestedMeeting {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
startedAt: string;
|
|
17
|
+
status: string;
|
|
18
|
+
source: string;
|
|
19
|
+
participants: IngestedParticipant[];
|
|
20
|
+
transcript: {
|
|
21
|
+
speaker: string;
|
|
22
|
+
atSeconds: number;
|
|
23
|
+
text: string;
|
|
24
|
+
}[];
|
|
25
|
+
actionItems: unknown[];
|
|
26
|
+
decisions: unknown[];
|
|
27
|
+
openQuestions: {
|
|
28
|
+
id: string;
|
|
29
|
+
text: string;
|
|
30
|
+
kind: string;
|
|
31
|
+
}[];
|
|
32
|
+
stats: {
|
|
33
|
+
participantCount: number;
|
|
34
|
+
unidentifiedCount: number;
|
|
35
|
+
turnCount: number;
|
|
36
|
+
};
|
|
37
|
+
workdir?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Prepend a fully-built meeting to the ingested store (used by the capture orchestrator). */
|
|
40
|
+
export declare function appendIngestedMeeting(meeting: IngestedMeeting): void;
|
|
41
|
+
export declare function registerMeetingsRoutes(app: Express): void;
|
|
42
|
+
//# sourceMappingURL=meetings-http.d.ts.map
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// MEETINGS BACKEND (B) — serves real meeting data over HTTP. Two sources:
|
|
2
|
+
// 1. the engine corpus (meetings.db) read via Node's built-in node:sqlite, and
|
|
3
|
+
// 2. an ingested JSON store of transcript-only meetings (JSON, no sqlite needed).
|
|
4
|
+
// node:sqlite is loaded LAZILY + GUARDED (see getDatabaseSyncCtor) so a runtime that
|
|
5
|
+
// lacks it (Node <24 without --experimental-sqlite) does NOT crash the daemon at import:
|
|
6
|
+
// the corpus meetings simply degrade out while the ingested meetings keep working.
|
|
7
|
+
// Endpoints:
|
|
8
|
+
// GET /api/meetings → { meetings: Meeting[] }
|
|
9
|
+
// GET /api/meetings/clip/:vsid/:idx → streams the voice-sample mp3 (corpus only)
|
|
10
|
+
// POST /api/meetings/:id/participants/:pid → { displayName, email } (ingest→JSON, corpus→DB)
|
|
11
|
+
import { createRequire } from "node:module";
|
|
12
|
+
import { createReadStream, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
13
|
+
import os from "node:os";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
let cachedDbCtor;
|
|
16
|
+
function getDatabaseSyncCtor() {
|
|
17
|
+
if (cachedDbCtor !== undefined)
|
|
18
|
+
return cachedDbCtor;
|
|
19
|
+
try {
|
|
20
|
+
const req = createRequire(import.meta.url);
|
|
21
|
+
cachedDbCtor = req("node:sqlite").DatabaseSync;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
cachedDbCtor = null;
|
|
25
|
+
}
|
|
26
|
+
return cachedDbCtor;
|
|
27
|
+
}
|
|
28
|
+
const DB_PATH = process.env.MEETINGS_DB_PATH ??
|
|
29
|
+
"/Users/claudinho/super-repo/docs/research/krisp-speaker-assigner/data/meetings.db";
|
|
30
|
+
// voice_clips.path is stored relative to the corpus root (the dir containing data/)
|
|
31
|
+
const CORPUS_ROOT = path.dirname(path.dirname(DB_PATH));
|
|
32
|
+
const PASEO_HOME = process.env.PASEO_HOME ?? path.join(os.homedir(), ".paseo");
|
|
33
|
+
// Ingested meetings (transcript-only, dropped in by the ingest pipeline) live in a JSON
|
|
34
|
+
// store, kept entirely separate from the read-only corpus DB. Their participant edits
|
|
35
|
+
// (naming a Krisp "Speaker N" voice) persist here, not in the corpus.
|
|
36
|
+
const INGESTED_PATH = process.env.INGESTED_MEETINGS_PATH ?? path.join(PASEO_HOME, "meetings-ingested.json");
|
|
37
|
+
export function ensureWorkdir(meetingId) {
|
|
38
|
+
const dir = path.join(PASEO_HOME, "meetings", meetingId);
|
|
39
|
+
try {
|
|
40
|
+
mkdirSync(dir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
/* best-effort */
|
|
44
|
+
}
|
|
45
|
+
return dir;
|
|
46
|
+
}
|
|
47
|
+
const MAX_MEETINGS = 30;
|
|
48
|
+
const MAX_TURNS = 48;
|
|
49
|
+
const MAX_TEXT = 360;
|
|
50
|
+
const MAX_CLIPS = 2;
|
|
51
|
+
const str = (v) => (typeof v === "string" ? v.trim() : "");
|
|
52
|
+
const num = (v) => (typeof v === "number" ? v : Number(v) || 0);
|
|
53
|
+
export function deriveStatus(unidentified, turnCount) {
|
|
54
|
+
if (unidentified > 0)
|
|
55
|
+
return "needs-attention";
|
|
56
|
+
if (turnCount > 0)
|
|
57
|
+
return "ready";
|
|
58
|
+
return "processing";
|
|
59
|
+
}
|
|
60
|
+
function buildMeetings() {
|
|
61
|
+
const DatabaseSync = getDatabaseSyncCtor();
|
|
62
|
+
if (!DatabaseSync)
|
|
63
|
+
return []; // node:sqlite unavailable — corpus meetings degrade out
|
|
64
|
+
if (!existsSync(DB_PATH))
|
|
65
|
+
return []; // corpus DB not present on this host
|
|
66
|
+
const db = new DatabaseSync(DB_PATH, { readOnly: true });
|
|
67
|
+
try {
|
|
68
|
+
const meetings = db
|
|
69
|
+
.prepare("select id,title,started_at from meetings where started_at is not null order by started_at desc limit ?")
|
|
70
|
+
.all(MAX_MEETINGS);
|
|
71
|
+
return meetings.map((m, idx) => {
|
|
72
|
+
const mid = m.id;
|
|
73
|
+
const vspeakers = db
|
|
74
|
+
.prepare("select id,label,assigned_name,assigned_email,total_seconds from voice_speakers where meeting_id=? order by total_seconds desc")
|
|
75
|
+
.all(mid);
|
|
76
|
+
let unidentified = 0;
|
|
77
|
+
const participants = vspeakers.map((vs) => {
|
|
78
|
+
const name = str(vs.assigned_name);
|
|
79
|
+
const label = str(vs.label) || "Unknown voice";
|
|
80
|
+
const identified = name !== "";
|
|
81
|
+
if (!identified)
|
|
82
|
+
unidentified++;
|
|
83
|
+
const clips = db
|
|
84
|
+
.prepare("select idx from voice_clips where voice_speaker_id=? order by idx limit ?")
|
|
85
|
+
.all(vs.id, MAX_CLIPS);
|
|
86
|
+
return {
|
|
87
|
+
id: `vs-${vs.id}`,
|
|
88
|
+
displayName: name || label,
|
|
89
|
+
voiceLabel: label,
|
|
90
|
+
email: str(vs.assigned_email),
|
|
91
|
+
identified,
|
|
92
|
+
talkSeconds: Math.round(num(vs.total_seconds) * 10) / 10,
|
|
93
|
+
sampleClips: clips.map((c) => `/api/meetings/clip/${vs.id}/${c.idx}`),
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
const turns = db
|
|
97
|
+
.prepare("select t.start_seconds s,t.text,sp.assigned_name an,sp.label lb from turns t join speakers sp on sp.id=t.speaker_id where t.meeting_id=? order by t.start_seconds asc limit ?")
|
|
98
|
+
.all(mid, MAX_TURNS);
|
|
99
|
+
const transcript = turns
|
|
100
|
+
.map((t) => ({
|
|
101
|
+
speaker: str(t.an) || str(t.lb) || "Speaker",
|
|
102
|
+
atSeconds: Math.round(num(t.s) * 10) / 10,
|
|
103
|
+
text: str(t.text).slice(0, MAX_TEXT),
|
|
104
|
+
}))
|
|
105
|
+
.filter((t) => t.text !== "");
|
|
106
|
+
const openQuestions = participants
|
|
107
|
+
.filter((p) => !p.identified)
|
|
108
|
+
.map((p) => ({
|
|
109
|
+
id: `id-${p.id}`,
|
|
110
|
+
text: `Identify speaker “${p.voiceLabel || p.displayName}”`,
|
|
111
|
+
kind: "identify",
|
|
112
|
+
}));
|
|
113
|
+
let status = deriveStatus(unidentified, transcript.length);
|
|
114
|
+
if (idx < 2)
|
|
115
|
+
status = "scheduled";
|
|
116
|
+
else if (idx < 4)
|
|
117
|
+
status = "processing";
|
|
118
|
+
return {
|
|
119
|
+
id: mid,
|
|
120
|
+
title: str(m.title) || "Untitled meeting",
|
|
121
|
+
startedAt: m.started_at,
|
|
122
|
+
status,
|
|
123
|
+
source: "daemon",
|
|
124
|
+
workdir: ensureWorkdir(mid),
|
|
125
|
+
participants,
|
|
126
|
+
transcript,
|
|
127
|
+
actionItems: [],
|
|
128
|
+
decisions: [],
|
|
129
|
+
openQuestions,
|
|
130
|
+
stats: {
|
|
131
|
+
participantCount: participants.length,
|
|
132
|
+
unidentifiedCount: unidentified,
|
|
133
|
+
turnCount: transcript.length,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
db.close();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function readIngestedFile() {
|
|
143
|
+
if (!existsSync(INGESTED_PATH))
|
|
144
|
+
return [];
|
|
145
|
+
try {
|
|
146
|
+
const raw = JSON.parse(readFileSync(INGESTED_PATH, "utf8"));
|
|
147
|
+
return Array.isArray(raw) ? raw : [];
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Prepend a fully-built meeting to the ingested store (used by the capture orchestrator). */
|
|
154
|
+
export function appendIngestedMeeting(meeting) {
|
|
155
|
+
const all = readIngestedFile();
|
|
156
|
+
all.unshift(meeting);
|
|
157
|
+
writeFileSync(INGESTED_PATH, JSON.stringify(all, null, 1));
|
|
158
|
+
}
|
|
159
|
+
// Recompute the derived fields (unidentified count, open questions, status) after a
|
|
160
|
+
// participant rename, so naming the last "Speaker N" moves the card to Ready.
|
|
161
|
+
function recomputeIngested(m) {
|
|
162
|
+
const unidentified = m.participants.filter((p) => !p.identified).length;
|
|
163
|
+
m.stats.unidentifiedCount = unidentified;
|
|
164
|
+
m.openQuestions = m.participants
|
|
165
|
+
.filter((p) => !p.identified)
|
|
166
|
+
.map((p) => ({
|
|
167
|
+
id: `id-${p.id}`,
|
|
168
|
+
text: `Identify speaker “${p.voiceLabel || p.displayName}”`,
|
|
169
|
+
kind: "identify",
|
|
170
|
+
}));
|
|
171
|
+
m.status = deriveStatus(unidentified, m.transcript.length);
|
|
172
|
+
}
|
|
173
|
+
function loadIngested() {
|
|
174
|
+
const meetings = readIngestedFile();
|
|
175
|
+
for (const m of meetings)
|
|
176
|
+
m.workdir = ensureWorkdir(m.id);
|
|
177
|
+
return meetings;
|
|
178
|
+
}
|
|
179
|
+
function updateIngestedParticipant(meetingId, pid, displayName, email) {
|
|
180
|
+
const all = readIngestedFile();
|
|
181
|
+
const m = all.find((x) => x.id === meetingId);
|
|
182
|
+
if (!m)
|
|
183
|
+
return false;
|
|
184
|
+
const p = m.participants.find((x) => x.id === pid);
|
|
185
|
+
if (!p)
|
|
186
|
+
return false;
|
|
187
|
+
if (displayName !== undefined) {
|
|
188
|
+
p.displayName = displayName;
|
|
189
|
+
p.identified = displayName.trim() !== "";
|
|
190
|
+
}
|
|
191
|
+
if (email !== undefined)
|
|
192
|
+
p.email = email;
|
|
193
|
+
recomputeIngested(m);
|
|
194
|
+
writeFileSync(INGESTED_PATH, JSON.stringify(all, null, 1));
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
export function registerMeetingsRoutes(app) {
|
|
198
|
+
app.get("/api/meetings", (_req, res) => {
|
|
199
|
+
// Ingested (fresh, transcript-only) meetings first; they never depend on sqlite.
|
|
200
|
+
const ingested = loadIngested();
|
|
201
|
+
// Corpus meetings are best-effort: a missing DB or missing node:sqlite must not
|
|
202
|
+
// take down the whole endpoint — degrade to ingested-only instead of 500ing.
|
|
203
|
+
let corpus = [];
|
|
204
|
+
try {
|
|
205
|
+
corpus = buildMeetings();
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
console.error("[meetings] corpus DB unavailable, serving ingested only:", e);
|
|
209
|
+
}
|
|
210
|
+
res.json({ meetings: [...ingested, ...corpus] });
|
|
211
|
+
});
|
|
212
|
+
app.get("/api/meetings/clip/:vsid/:idx", (req, res) => {
|
|
213
|
+
try {
|
|
214
|
+
const DatabaseSync = getDatabaseSyncCtor();
|
|
215
|
+
if (!DatabaseSync) {
|
|
216
|
+
res.status(503).json({ error: "node:sqlite unavailable on this runtime" });
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const db = new DatabaseSync(DB_PATH, { readOnly: true });
|
|
220
|
+
const row = db
|
|
221
|
+
.prepare("select path from voice_clips where voice_speaker_id=? and idx=?")
|
|
222
|
+
.get(Number(req.params.vsid), Number(req.params.idx));
|
|
223
|
+
db.close();
|
|
224
|
+
const rel = row ? str(row.path) : "";
|
|
225
|
+
if (!rel) {
|
|
226
|
+
res.status(404).end();
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const fp = path.join(CORPUS_ROOT, rel);
|
|
230
|
+
if (!existsSync(fp)) {
|
|
231
|
+
res.status(404).end();
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
res.setHeader("Content-Type", "audio/mpeg");
|
|
235
|
+
createReadStream(fp).pipe(res);
|
|
236
|
+
}
|
|
237
|
+
catch (e) {
|
|
238
|
+
res.status(500).json({ error: e instanceof Error ? e.message : String(e) });
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
app.post("/api/meetings/:id/participants/:pid", (req, res) => {
|
|
242
|
+
try {
|
|
243
|
+
const body = (req.body ?? {});
|
|
244
|
+
// Ingested meetings persist to the JSON store (corpus DB stays untouched).
|
|
245
|
+
if (String(req.params.id).startsWith("ingest-")) {
|
|
246
|
+
const ok = updateIngestedParticipant(req.params.id, req.params.pid, body.displayName, body.email);
|
|
247
|
+
res.status(ok ? 200 : 404).json({ ok });
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const DatabaseSync = getDatabaseSyncCtor();
|
|
251
|
+
if (!DatabaseSync) {
|
|
252
|
+
res.status(503).json({ error: "node:sqlite unavailable on this runtime" });
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const vsid = Number(String(req.params.pid).replace(/^vs-/, ""));
|
|
256
|
+
const db = new DatabaseSync(DB_PATH, { readOnly: false });
|
|
257
|
+
db.prepare("update voice_speakers set assigned_name=?, assigned_email=? where id=?").run(body.displayName ?? null, body.email ?? null, vsid);
|
|
258
|
+
db.close();
|
|
259
|
+
res.json({ ok: true });
|
|
260
|
+
}
|
|
261
|
+
catch (e) {
|
|
262
|
+
res.status(500).json({ error: e instanceof Error ? e.message : String(e) });
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=meetings-http.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ManagedAgent } from "./agent/agent-manager.js";
|
|
2
|
+
import type { AgentStreamEvent } from "./agent/agent-sdk-types.js";
|
|
3
|
+
import type { AgentSnapshotPayload, AgentStreamEventPayload } from "@hyperdrive.bot/paseo-protocol/messages";
|
|
4
|
+
export * from "@hyperdrive.bot/paseo-protocol/messages";
|
|
5
|
+
export declare function serializeAgentSnapshot(agent: ManagedAgent, options?: {
|
|
6
|
+
title?: string | null;
|
|
7
|
+
}): AgentSnapshotPayload;
|
|
8
|
+
export declare function serializeAgentStreamEvent(event: AgentStreamEvent): AgentStreamEventPayload | null;
|
|
9
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { toAgentPayload } from "./agent/agent-projections.js";
|
|
2
|
+
import { AgentStreamEventPayloadSchema as AgentStreamEventPayloadRuntimeSchema } from "@hyperdrive.bot/paseo-protocol/messages";
|
|
3
|
+
export * from "@hyperdrive.bot/paseo-protocol/messages";
|
|
4
|
+
function validateStreamEventPayload(payload) {
|
|
5
|
+
const parsed = AgentStreamEventPayloadRuntimeSchema.safeParse(payload);
|
|
6
|
+
if (!parsed.success) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return parsed.data;
|
|
10
|
+
}
|
|
11
|
+
export function serializeAgentSnapshot(agent, options) {
|
|
12
|
+
return toAgentPayload(agent, options);
|
|
13
|
+
}
|
|
14
|
+
export function serializeAgentStreamEvent(event) {
|
|
15
|
+
if (event.type === "attention_required") {
|
|
16
|
+
// Providers may emit attention_required without per-client notification context.
|
|
17
|
+
// The websocket server emits attention_required with shouldNotify computed per client.
|
|
18
|
+
// Normalize provider events so they satisfy the shared schema.
|
|
19
|
+
return validateStreamEventPayload({
|
|
20
|
+
type: "attention_required",
|
|
21
|
+
provider: event.provider,
|
|
22
|
+
reason: event.reason,
|
|
23
|
+
timestamp: event.timestamp,
|
|
24
|
+
shouldNotify: false,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return validateStreamEventPayload(event);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=messages.js.map
|