@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.
Files changed (804) hide show
  1. package/.env.example +31 -0
  2. package/README.md +111 -0
  3. package/dist/scripts/dev-runner.js +37 -0
  4. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  5. package/dist/scripts/supervisor-entrypoint.js +141 -0
  6. package/dist/scripts/supervisor-log-config.js +31 -0
  7. package/dist/scripts/supervisor.js +252 -0
  8. package/dist/server/executable-resolution/executable-resolution.d.ts +10 -0
  9. package/dist/server/executable-resolution/executable-resolution.js +118 -0
  10. package/dist/server/executable-resolution/windows.d.ts +18 -0
  11. package/dist/server/executable-resolution/windows.js +65 -0
  12. package/dist/server/extensions/daemon-backend.d.ts +11 -0
  13. package/dist/server/extensions/daemon-backend.js +146 -0
  14. package/dist/server/extensions/extension-host-manager.d.ts +48 -0
  15. package/dist/server/extensions/extension-host-manager.js +141 -0
  16. package/dist/server/extensions/extension-loader.d.ts +11 -0
  17. package/dist/server/extensions/extension-loader.js +47 -0
  18. package/dist/server/extensions/extension-service.d.ts +17 -0
  19. package/dist/server/extensions/extension-service.js +76 -0
  20. package/dist/server/server/agent/activity-curator.d.ts +28 -0
  21. package/dist/server/server/agent/activity-curator.js +227 -0
  22. package/dist/server/server/agent/agent-archive.d.ts +11 -0
  23. package/dist/server/server/agent/agent-archive.js +16 -0
  24. package/dist/server/server/agent/agent-loading.d.ts +12 -0
  25. package/dist/server/server/agent/agent-loading.js +55 -0
  26. package/dist/server/server/agent/agent-manager.d.ts +462 -0
  27. package/dist/server/server/agent/agent-manager.js +2955 -0
  28. package/dist/server/server/agent/agent-projections.d.ts +26 -0
  29. package/dist/server/server/agent/agent-projections.js +404 -0
  30. package/dist/server/server/agent/agent-prompt.d.ts +76 -0
  31. package/dist/server/server/agent/agent-prompt.js +230 -0
  32. package/dist/server/server/agent/agent-response-loop.d.ts +67 -0
  33. package/dist/server/server/agent/agent-response-loop.js +326 -0
  34. package/dist/server/server/agent/agent-routes.d.ts +18 -0
  35. package/dist/server/server/agent/agent-routes.js +107 -0
  36. package/dist/server/server/agent/agent-sdk-types.d.ts +677 -0
  37. package/dist/server/server/agent/agent-sdk-types.js +22 -0
  38. package/dist/server/server/agent/agent-storage.d.ts +152 -0
  39. package/dist/server/server/agent/agent-storage.js +342 -0
  40. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  41. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  42. package/dist/server/server/agent/agent-timeline-store-types.d.ts +50 -0
  43. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  44. package/dist/server/server/agent/agent-timeline-store.d.ts +27 -0
  45. package/dist/server/server/agent/agent-timeline-store.js +230 -0
  46. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  47. package/dist/server/server/agent/audio-utils.js +19 -0
  48. package/dist/server/server/agent/create-agent/create.d.ts +83 -0
  49. package/dist/server/server/agent/create-agent/create.js +289 -0
  50. package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +54 -0
  51. package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +152 -0
  52. package/dist/server/server/agent/create-agent-mode.d.ts +13 -0
  53. package/dist/server/server/agent/create-agent-mode.js +62 -0
  54. package/dist/server/server/agent/create-agent-title.d.ts +10 -0
  55. package/dist/server/server/agent/create-agent-title.js +34 -0
  56. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  57. package/dist/server/server/agent/dictation-debug.js +50 -0
  58. package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
  59. package/dist/server/server/agent/foreground-run-state.js +160 -0
  60. package/dist/server/server/agent/import-sessions.d.ts +47 -0
  61. package/dist/server/server/agent/import-sessions.js +145 -0
  62. package/dist/server/server/agent/lifecycle-command.d.ts +73 -0
  63. package/dist/server/server/agent/lifecycle-command.js +92 -0
  64. package/dist/server/server/agent/mcp-server.d.ts +22 -0
  65. package/dist/server/server/agent/mcp-server.js +544 -0
  66. package/dist/server/server/agent/mcp-shared.d.ts +193 -0
  67. package/dist/server/server/agent/mcp-shared.js +197 -0
  68. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  69. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  70. package/dist/server/server/agent/permission-response.d.ts +15 -0
  71. package/dist/server/server/agent/permission-response.js +14 -0
  72. package/dist/server/server/agent/prompt-attachments.d.ts +7 -0
  73. package/dist/server/server/agent/prompt-attachments.js +90 -0
  74. package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
  75. package/dist/server/server/agent/provider-history-timestamps.js +16 -0
  76. package/dist/server/server/agent/provider-launch-config.d.ts +51 -0
  77. package/dist/server/server/agent/provider-launch-config.js +183 -0
  78. package/dist/server/server/agent/provider-notices.d.ts +3 -0
  79. package/dist/server/server/agent/provider-notices.js +5 -0
  80. package/dist/server/server/agent/provider-registry.d.ts +49 -0
  81. package/dist/server/server/agent/provider-registry.js +578 -0
  82. package/dist/server/server/agent/provider-session-import.d.ts +10 -0
  83. package/dist/server/server/agent/provider-session-import.js +49 -0
  84. package/dist/server/server/agent/provider-snapshot-manager.d.ts +137 -0
  85. package/dist/server/server/agent/provider-snapshot-manager.js +694 -0
  86. package/dist/server/server/agent/providers/acp-agent.d.ts +354 -0
  87. package/dist/server/server/agent/providers/acp-agent.js +2438 -0
  88. package/dist/server/server/agent/providers/claude/agent.d.ts +341 -0
  89. package/dist/server/server/agent/providers/claude/agent.js +4606 -0
  90. package/dist/server/server/agent/providers/claude/background-shell-kill-keys.d.ts +32 -0
  91. package/dist/server/server/agent/providers/claude/background-shell-kill-keys.js +34 -0
  92. package/dist/server/server/agent/providers/claude/background-task-tracker.d.ts +49 -0
  93. package/dist/server/server/agent/providers/claude/background-task-tracker.js +119 -0
  94. package/dist/server/server/agent/providers/claude/feature-definitions.d.ts +8 -0
  95. package/dist/server/server/agent/providers/claude/feature-definitions.js +24 -0
  96. package/dist/server/server/agent/providers/claude/hook-handler.d.ts +37 -0
  97. package/dist/server/server/agent/providers/claude/hook-handler.js +193 -0
  98. package/dist/server/server/agent/providers/claude/hooks/event-translator.d.ts +49 -0
  99. package/dist/server/server/agent/providers/claude/hooks/event-translator.js +151 -0
  100. package/dist/server/server/agent/providers/claude/image-compression.d.ts +10 -0
  101. package/dist/server/server/agent/providers/claude/image-compression.js +32 -0
  102. package/dist/server/server/agent/providers/claude/model-manifest.d.ts +104 -0
  103. package/dist/server/server/agent/providers/claude/model-manifest.js +221 -0
  104. package/dist/server/server/agent/providers/claude/models.d.ts +11 -0
  105. package/dist/server/server/agent/providers/claude/models.js +97 -0
  106. package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
  107. package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
  108. package/dist/server/server/agent/providers/claude/project-dir.d.ts +6 -0
  109. package/dist/server/server/agent/providers/claude/project-dir.js +57 -0
  110. package/dist/server/server/agent/providers/claude/pty-session-launcher.d.ts +41 -0
  111. package/dist/server/server/agent/providers/claude/pty-session-launcher.js +131 -0
  112. package/dist/server/server/agent/providers/claude/resume-source.d.ts +11 -0
  113. package/dist/server/server/agent/providers/claude/resume-source.js +37 -0
  114. package/dist/server/server/agent/providers/claude/rewind.d.ts +30 -0
  115. package/dist/server/server/agent/providers/claude/rewind.js +30 -0
  116. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +22 -0
  117. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +232 -0
  118. package/dist/server/server/agent/providers/claude/spawn-config-writer.d.ts +70 -0
  119. package/dist/server/server/agent/providers/claude/spawn-config-writer.js +229 -0
  120. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +47 -0
  121. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +292 -0
  122. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts +24 -0
  123. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js +23 -0
  124. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  125. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +130 -0
  126. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  127. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +129 -0
  128. package/dist/server/server/agent/providers/claude/transport/claude-paths.d.ts +31 -0
  129. package/dist/server/server/agent/providers/claude/transport/claude-paths.js +63 -0
  130. package/dist/server/server/agent/providers/claude/transport/continue-flag.d.ts +31 -0
  131. package/dist/server/server/agent/providers/claude/transport/continue-flag.js +42 -0
  132. package/dist/server/server/agent/providers/claude/transport/pty-query.d.ts +62 -0
  133. package/dist/server/server/agent/providers/claude/transport/pty-query.js +265 -0
  134. package/dist/server/server/agent/providers/claude/transport/pty.d.ts +50 -0
  135. package/dist/server/server/agent/providers/claude/transport/pty.js +211 -0
  136. package/dist/server/server/agent/providers/claude/transport/redact.d.ts +2 -0
  137. package/dist/server/server/agent/providers/claude/transport/redact.js +5 -0
  138. package/dist/server/server/agent/providers/claude/transport/sdk.d.ts +63 -0
  139. package/dist/server/server/agent/providers/claude/transport/sdk.js +207 -0
  140. package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.d.ts +27 -0
  141. package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.js +162 -0
  142. package/dist/server/server/agent/providers/claude/transport/transcript-tailer.d.ts +28 -0
  143. package/dist/server/server/agent/providers/claude/transport/transcript-tailer.js +166 -0
  144. package/dist/server/server/agent/providers/claude/transport/truncate-session.d.ts +41 -0
  145. package/dist/server/server/agent/providers/claude/transport/truncate-session.js +86 -0
  146. package/dist/server/server/agent/providers/claude/transport/types.d.ts +47 -0
  147. package/dist/server/server/agent/providers/claude/transport/types.js +2 -0
  148. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +90 -0
  149. package/dist/server/server/agent/providers/codex/app-server-transport.js +262 -0
  150. package/dist/server/server/agent/providers/codex/rewind.d.ts +21 -0
  151. package/dist/server/server/agent/providers/codex/rewind.js +46 -0
  152. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +36 -0
  153. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +217 -0
  154. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +12 -0
  155. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
  156. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +24 -0
  157. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +830 -0
  158. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +308 -0
  159. package/dist/server/server/agent/providers/codex-app-server-agent.js +4514 -0
  160. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
  161. package/dist/server/server/agent/providers/codex-feature-definitions.js +45 -0
  162. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +26 -0
  163. package/dist/server/server/agent/providers/copilot-acp-agent.js +187 -0
  164. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +15 -0
  165. package/dist/server/server/agent/providers/cursor-acp-agent.js +18 -0
  166. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +36 -0
  167. package/dist/server/server/agent/providers/diagnostic-utils.js +355 -0
  168. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +42 -0
  169. package/dist/server/server/agent/providers/generic-acp-agent.js +161 -0
  170. package/dist/server/server/agent/providers/kiro-acp-agent.d.ts +17 -0
  171. package/dist/server/server/agent/providers/kiro-acp-agent.js +78 -0
  172. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +85 -0
  173. package/dist/server/server/agent/providers/mock-load-test-agent.js +1010 -0
  174. package/dist/server/server/agent/providers/mock-slow-provider.d.ts +14 -0
  175. package/dist/server/server/agent/providers/mock-slow-provider.js +39 -0
  176. package/dist/server/server/agent/providers/opencode/paths.d.ts +2 -0
  177. package/dist/server/server/agent/providers/opencode/paths.js +7 -0
  178. package/dist/server/server/agent/providers/opencode/rewind.d.ts +18 -0
  179. package/dist/server/server/agent/providers/opencode/rewind.js +14 -0
  180. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +91 -0
  181. package/dist/server/server/agent/providers/opencode/server-manager.js +425 -0
  182. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +25 -0
  183. package/dist/server/server/agent/providers/opencode/test-server-manager.js +39 -0
  184. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.d.ts +92 -0
  185. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.js +268 -0
  186. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  187. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +256 -0
  188. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  189. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +53 -0
  190. package/dist/server/server/agent/providers/opencode-agent.d.ts +286 -0
  191. package/dist/server/server/agent/providers/opencode-agent.js +2857 -0
  192. package/dist/server/server/agent/providers/pi/agent.d.ts +137 -0
  193. package/dist/server/server/agent/providers/pi/agent.js +1650 -0
  194. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +21 -0
  195. package/dist/server/server/agent/providers/pi/cli-runtime.js +233 -0
  196. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +9 -0
  197. package/dist/server/server/agent/providers/pi/history-mapper.js +140 -0
  198. package/dist/server/server/agent/providers/pi/rewind.d.ts +8 -0
  199. package/dist/server/server/agent/providers/pi/rewind.js +8 -0
  200. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +208 -0
  201. package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
  202. package/dist/server/server/agent/providers/pi/runtime.d.ts +57 -0
  203. package/dist/server/server/agent/providers/pi/runtime.js +56 -0
  204. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +16 -0
  205. package/dist/server/server/agent/providers/pi/session-descriptor.js +346 -0
  206. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +83 -0
  207. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +184 -0
  208. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +112 -0
  209. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +284 -0
  210. package/dist/server/server/agent/providers/provider-image-output.d.ts +25 -0
  211. package/dist/server/server/agent/providers/provider-image-output.js +111 -0
  212. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  213. package/dist/server/server/agent/providers/provider-runner.js +81 -0
  214. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +3 -0
  215. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +60 -0
  216. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +884 -0
  217. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +778 -0
  218. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +25 -0
  219. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +208 -0
  220. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  221. package/dist/server/server/agent/recordings-debug.js +19 -0
  222. package/dist/server/server/agent/render-file-attachment.d.ts +29 -0
  223. package/dist/server/server/agent/render-file-attachment.js +41 -0
  224. package/dist/server/server/agent/resolve-resume-cwd.d.ts +14 -0
  225. package/dist/server/server/agent/resolve-resume-cwd.js +49 -0
  226. package/dist/server/server/agent/rewind/rewind.d.ts +10 -0
  227. package/dist/server/server/agent/rewind/rewind.js +29 -0
  228. package/dist/server/server/agent/rewind/test-rewind-session.d.ts +48 -0
  229. package/dist/server/server/agent/rewind/test-rewind-session.js +88 -0
  230. package/dist/server/server/agent/runtime-mcp-config.d.ts +14 -0
  231. package/dist/server/server/agent/runtime-mcp-config.js +53 -0
  232. package/dist/server/server/agent/session-digest-generator.d.ts +37 -0
  233. package/dist/server/server/agent/session-digest-generator.js +115 -0
  234. package/dist/server/server/agent/session-digest.d.ts +35 -0
  235. package/dist/server/server/agent/session-digest.js +104 -0
  236. package/dist/server/server/agent/structured-generation-providers.d.ts +29 -0
  237. package/dist/server/server/agent/structured-generation-providers.js +236 -0
  238. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  239. package/dist/server/server/agent/stt-debug.js +33 -0
  240. package/dist/server/server/agent/stt-manager.d.ts +38 -0
  241. package/dist/server/server/agent/stt-manager.js +246 -0
  242. package/dist/server/server/agent/system-prompt.d.ts +2 -0
  243. package/dist/server/server/agent/system-prompt.js +8 -0
  244. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  245. package/dist/server/server/agent/timeline-append.js +27 -0
  246. package/dist/server/server/agent/timeline-projection.d.ts +71 -0
  247. package/dist/server/server/agent/timeline-projection.js +373 -0
  248. package/dist/server/server/agent/tools/paseo-tools.d.ts +54 -0
  249. package/dist/server/server/agent/tools/paseo-tools.js +2197 -0
  250. package/dist/server/server/agent/tools/types.d.ts +36 -0
  251. package/dist/server/server/agent/tools/types.js +2 -0
  252. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  253. package/dist/server/server/agent/tts-debug.js +24 -0
  254. package/dist/server/server/agent/tts-manager.d.ts +41 -0
  255. package/dist/server/server/agent/tts-manager.js +375 -0
  256. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  257. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  258. package/dist/server/server/agent-attention-policy.d.ts +29 -0
  259. package/dist/server/server/agent-attention-policy.js +36 -0
  260. package/dist/server/server/atomic-file.d.ts +3 -0
  261. package/dist/server/server/atomic-file.js +19 -0
  262. package/dist/server/server/auth.d.ts +38 -0
  263. package/dist/server/server/auth.js +143 -0
  264. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
  265. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +92 -0
  266. package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
  267. package/dist/server/server/auto-archive-on-merge/index.js +15 -0
  268. package/dist/server/server/bootstrap.d.ts +126 -0
  269. package/dist/server/server/bootstrap.js +1193 -0
  270. package/dist/server/server/browser-tools/broker.d.ts +45 -0
  271. package/dist/server/server/browser-tools/broker.js +390 -0
  272. package/dist/server/server/browser-tools/errors.d.ts +22 -0
  273. package/dist/server/server/browser-tools/errors.js +27 -0
  274. package/dist/server/server/browser-tools/policy.d.ts +10 -0
  275. package/dist/server/server/browser-tools/policy.js +16 -0
  276. package/dist/server/server/browser-tools/tools.d.ts +16 -0
  277. package/dist/server/server/browser-tools/tools.js +845 -0
  278. package/dist/server/server/chat/chat-mentions.d.ts +47 -0
  279. package/dist/server/server/chat/chat-mentions.js +113 -0
  280. package/dist/server/server/chat/chat-service.d.ts +78 -0
  281. package/dist/server/server/chat/chat-service.js +337 -0
  282. package/dist/server/server/checkout/status-projection.d.ts +19 -0
  283. package/dist/server/server/checkout/status-projection.js +102 -0
  284. package/dist/server/server/checkout-diff-manager.d.ts +41 -0
  285. package/dist/server/server/checkout-diff-manager.js +189 -0
  286. package/dist/server/server/checkout-git-utils.d.ts +11 -0
  287. package/dist/server/server/checkout-git-utils.js +34 -0
  288. package/dist/server/server/client-message-id.d.ts +3 -0
  289. package/dist/server/server/client-message-id.js +12 -0
  290. package/dist/server/server/config.d.ts +17 -0
  291. package/dist/server/server/config.js +320 -0
  292. package/dist/server/server/connection-offer.d.ts +20 -0
  293. package/dist/server/server/connection-offer.js +59 -0
  294. package/dist/server/server/daemon-config-store.d.ts +25 -0
  295. package/dist/server/server/daemon-config-store.js +194 -0
  296. package/dist/server/server/daemon-keypair.d.ts +8 -0
  297. package/dist/server/server/daemon-keypair.js +42 -0
  298. package/dist/server/server/daemon-version.d.ts +5 -0
  299. package/dist/server/server/daemon-version.js +22 -0
  300. package/dist/server/server/daemon-worker.d.ts +2 -0
  301. package/dist/server/server/daemon-worker.js +251 -0
  302. package/dist/server/server/dictation/dictation-stream-manager.d.ts +87 -0
  303. package/dist/server/server/dictation/dictation-stream-manager.js +572 -0
  304. package/dist/server/server/editor-targets.d.ts +18 -0
  305. package/dist/server/server/editor-targets.js +109 -0
  306. package/dist/server/server/exports.d.ts +24 -0
  307. package/dist/server/server/exports.js +24 -0
  308. package/dist/server/server/file-download/token-store.d.ts +24 -0
  309. package/dist/server/server/file-download/token-store.js +40 -0
  310. package/dist/server/server/file-explorer/file-download-frames.d.ts +27 -0
  311. package/dist/server/server/file-explorer/file-download-frames.js +47 -0
  312. package/dist/server/server/file-explorer/service.d.ts +75 -0
  313. package/dist/server/server/file-explorer/service.js +308 -0
  314. package/dist/server/server/file-upload/index.d.ts +27 -0
  315. package/dist/server/server/file-upload/index.js +158 -0
  316. package/dist/server/server/hostnames.d.ts +13 -0
  317. package/dist/server/server/hostnames.js +94 -0
  318. package/dist/server/server/json-utils.d.ts +11 -0
  319. package/dist/server/server/json-utils.js +45 -0
  320. package/dist/server/server/lifecycle-reasons.d.ts +4 -0
  321. package/dist/server/server/lifecycle-reasons.js +6 -0
  322. package/dist/server/server/logger.d.ts +29 -0
  323. package/dist/server/server/logger.js +125 -0
  324. package/dist/server/server/loop-service.d.ts +234 -0
  325. package/dist/server/server/loop-service.js +769 -0
  326. package/dist/server/server/managed-processes/managed-processes.d.ts +76 -0
  327. package/dist/server/server/managed-processes/managed-processes.js +326 -0
  328. package/dist/server/server/meetings/capture-http.d.ts +3 -0
  329. package/dist/server/server/meetings/capture-http.js +71 -0
  330. package/dist/server/server/meetings/capture-orchestrator.d.ts +123 -0
  331. package/dist/server/server/meetings/capture-orchestrator.js +531 -0
  332. package/dist/server/server/meetings/capture-stream-ws.d.ts +42 -0
  333. package/dist/server/server/meetings/capture-stream-ws.js +68 -0
  334. package/dist/server/server/meetings/live-transcription.d.ts +57 -0
  335. package/dist/server/server/meetings/live-transcription.js +280 -0
  336. package/dist/server/server/meetings/meetings-http.d.ts +42 -0
  337. package/dist/server/server/meetings/meetings-http.js +266 -0
  338. package/dist/server/server/messages.d.ts +9 -0
  339. package/dist/server/server/messages.js +29 -0
  340. package/dist/server/server/migrations/backfill-workspace-id.migration.d.ts +9 -0
  341. package/dist/server/server/migrations/backfill-workspace-id.migration.js +64 -0
  342. package/dist/server/server/monitoring/telemetry.d.ts +13 -0
  343. package/dist/server/server/monitoring/telemetry.js +21 -0
  344. package/dist/server/server/package-version.d.ts +19 -0
  345. package/dist/server/server/package-version.js +60 -0
  346. package/dist/server/server/pagination/cursor.d.ts +16 -0
  347. package/dist/server/server/pagination/cursor.js +62 -0
  348. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  349. package/dist/server/server/pagination/sortable-pager.js +68 -0
  350. package/dist/server/server/pairing-offer.d.ts +18 -0
  351. package/dist/server/server/pairing-offer.js +47 -0
  352. package/dist/server/server/pairing-qr.d.ts +7 -0
  353. package/dist/server/server/pairing-qr.js +45 -0
  354. package/dist/server/server/paseo-env.d.ts +13 -0
  355. package/dist/server/server/paseo-env.js +53 -0
  356. package/dist/server/server/paseo-home.d.ts +2 -0
  357. package/dist/server/server/paseo-home.js +19 -0
  358. package/dist/server/server/paseo-worktree-service.d.ts +52 -0
  359. package/dist/server/server/paseo-worktree-service.js +294 -0
  360. package/dist/server/server/path-utils.d.ts +5 -0
  361. package/dist/server/server/path-utils.js +34 -0
  362. package/dist/server/server/persisted-config.d.ts +333 -0
  363. package/dist/server/server/persisted-config.js +402 -0
  364. package/dist/server/server/persistence-hooks.d.ts +32 -0
  365. package/dist/server/server/persistence-hooks.js +97 -0
  366. package/dist/server/server/pid-lock.d.ts +32 -0
  367. package/dist/server/server/pid-lock.js +170 -0
  368. package/dist/server/server/private-files.d.ts +6 -0
  369. package/dist/server/server/private-files.js +37 -0
  370. package/dist/server/server/process-diagnostics.d.ts +17 -0
  371. package/dist/server/server/process-diagnostics.js +22 -0
  372. package/dist/server/server/push/categories.d.ts +35 -0
  373. package/dist/server/server/push/categories.js +40 -0
  374. package/dist/server/server/push/expo-worker.d.ts +51 -0
  375. package/dist/server/server/push/expo-worker.js +149 -0
  376. package/dist/server/server/push/index.d.ts +39 -0
  377. package/dist/server/server/push/index.js +45 -0
  378. package/dist/server/server/push/notifications.d.ts +9 -0
  379. package/dist/server/server/push/notifications.js +15 -0
  380. package/dist/server/server/push/push-service.d.ts +20 -0
  381. package/dist/server/server/push/push-service.js +66 -0
  382. package/dist/server/server/push/routes.d.ts +28 -0
  383. package/dist/server/server/push/routes.js +74 -0
  384. package/dist/server/server/push/subscriptions.d.ts +42 -0
  385. package/dist/server/server/push/subscriptions.js +112 -0
  386. package/dist/server/server/push/token-store.d.ts +29 -0
  387. package/dist/server/server/push/token-store.js +78 -0
  388. package/dist/server/server/push/triggers.d.ts +68 -0
  389. package/dist/server/server/push/triggers.js +103 -0
  390. package/dist/server/server/push/vapid-keys.d.ts +15 -0
  391. package/dist/server/server/push/vapid-keys.js +52 -0
  392. package/dist/server/server/push/web-worker.d.ts +44 -0
  393. package/dist/server/server/push/web-worker.js +99 -0
  394. package/dist/server/server/relay-transport.d.ts +31 -0
  395. package/dist/server/server/relay-transport.js +514 -0
  396. package/dist/server/server/resolve-workspace-id-for-path.d.ts +3 -0
  397. package/dist/server/server/resolve-workspace-id-for-path.js +41 -0
  398. package/dist/server/server/resolve-worktree-creation-intent.d.ts +32 -0
  399. package/dist/server/server/resolve-worktree-creation-intent.js +121 -0
  400. package/dist/server/server/schedule/cron.d.ts +4 -0
  401. package/dist/server/server/schedule/cron.js +81 -0
  402. package/dist/server/server/schedule/service.d.ts +52 -0
  403. package/dist/server/server/schedule/service.js +628 -0
  404. package/dist/server/server/schedule/store.d.ts +13 -0
  405. package/dist/server/server/schedule/store.js +57 -0
  406. package/dist/server/server/script-health-monitor.d.ts +39 -0
  407. package/dist/server/server/script-health-monitor.js +159 -0
  408. package/dist/server/server/script-proxy.d.ts +3 -0
  409. package/dist/server/server/script-proxy.js +2 -0
  410. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  411. package/dist/server/server/script-route-branch-handler.js +11 -0
  412. package/dist/server/server/script-status-projection.d.ts +36 -0
  413. package/dist/server/server/script-status-projection.js +200 -0
  414. package/dist/server/server/server-id.d.ts +17 -0
  415. package/dist/server/server/server-id.js +68 -0
  416. package/dist/server/server/service-proxy.d.ts +237 -0
  417. package/dist/server/server/service-proxy.js +714 -0
  418. package/dist/server/server/session/agent-config/agent-config-session.d.ts +50 -0
  419. package/dist/server/server/session/agent-config/agent-config-session.js +98 -0
  420. package/dist/server/server/session/agent-updates/agent-updates-service.d.ts +59 -0
  421. package/dist/server/server/session/agent-updates/agent-updates-service.js +220 -0
  422. package/dist/server/server/session/chat/chat-schedule-loop-session.d.ts +120 -0
  423. package/dist/server/server/session/chat/chat-schedule-loop-session.js +489 -0
  424. package/dist/server/server/session/checkout/checkout-session.d.ts +140 -0
  425. package/dist/server/server/session/checkout/checkout-session.js +927 -0
  426. package/dist/server/server/session/checkout/git-metadata-generator.d.ts +53 -0
  427. package/dist/server/server/session/checkout/git-metadata-generator.js +159 -0
  428. package/dist/server/server/session/daemon/daemon-self-update-session-controller.d.ts +32 -0
  429. package/dist/server/server/session/daemon/daemon-self-update-session-controller.js +88 -0
  430. package/dist/server/server/session/daemon/daemon-self-updater.d.ts +32 -0
  431. package/dist/server/server/session/daemon/daemon-self-updater.js +56 -0
  432. package/dist/server/server/session/daemon/daemon-session.d.ts +76 -0
  433. package/dist/server/server/session/daemon/daemon-session.js +148 -0
  434. package/dist/server/server/session/daemon/diagnostics.d.ts +41 -0
  435. package/dist/server/server/session/daemon/diagnostics.js +431 -0
  436. package/dist/server/server/session/daemon/install-origin.d.ts +7 -0
  437. package/dist/server/server/session/daemon/install-origin.js +64 -0
  438. package/dist/server/server/session/daemon/npm-global-cli.d.ts +29 -0
  439. package/dist/server/server/session/daemon/npm-global-cli.js +98 -0
  440. package/dist/server/server/session/files/workspace-files-session.d.ts +43 -0
  441. package/dist/server/server/session/files/workspace-files-session.js +218 -0
  442. package/dist/server/server/session/git-mutation/git-mutation-service.d.ts +34 -0
  443. package/dist/server/server/session/git-mutation/git-mutation-service.js +71 -0
  444. package/dist/server/server/session/project-config/project-config-session.d.ts +34 -0
  445. package/dist/server/server/session/project-config/project-config-session.js +125 -0
  446. package/dist/server/server/session/provider/provider-catalog-session.d.ts +74 -0
  447. package/dist/server/server/session/provider/provider-catalog-session.js +343 -0
  448. package/dist/server/server/session/session-rename-route.d.ts +4 -0
  449. package/dist/server/server/session/session-rename-route.js +71 -0
  450. package/dist/server/server/session/session-rename-service.d.ts +25 -0
  451. package/dist/server/server/session/session-rename-service.js +76 -0
  452. package/dist/server/server/session/voice/voice-session.d.ts +166 -0
  453. package/dist/server/server/session/voice/voice-session.js +893 -0
  454. package/dist/server/server/session/voice/voice-turn-controller.d.ts +38 -0
  455. package/dist/server/server/session/voice/voice-turn-controller.js +393 -0
  456. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.d.ts +36 -0
  457. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.js +134 -0
  458. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.d.ts +34 -0
  459. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.js +190 -0
  460. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.d.ts +41 -0
  461. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.js +100 -0
  462. package/dist/server/server/session.d.ts +562 -0
  463. package/dist/server/server/session.js +5787 -0
  464. package/dist/server/server/speech/audio.d.ts +10 -0
  465. package/dist/server/server/speech/audio.js +101 -0
  466. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  467. package/dist/server/server/speech/provider-resolver.js +7 -0
  468. package/dist/server/server/speech/providers/local/config.d.ts +30 -0
  469. package/dist/server/server/speech/providers/local/config.js +134 -0
  470. package/dist/server/server/speech/providers/local/models.d.ts +11 -0
  471. package/dist/server/server/speech/providers/local/models.js +17 -0
  472. package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
  473. package/dist/server/server/speech/providers/local/runtime.js +135 -0
  474. package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
  475. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +56 -0
  476. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +74 -0
  477. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +15 -0
  478. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +142 -0
  479. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +49 -0
  480. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
  481. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
  482. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +107 -0
  483. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  484. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +137 -0
  485. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  486. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +133 -0
  487. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
  488. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  489. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  490. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +101 -0
  491. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
  492. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
  493. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
  494. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
  495. package/dist/server/server/speech/providers/local/worker-bytes.d.ts +4 -0
  496. package/dist/server/server/speech/providers/local/worker-bytes.js +9 -0
  497. package/dist/server/server/speech/providers/local/worker-client.d.ts +93 -0
  498. package/dist/server/server/speech/providers/local/worker-client.js +611 -0
  499. package/dist/server/server/speech/providers/local/worker-process.d.ts +2 -0
  500. package/dist/server/server/speech/providers/local/worker-process.js +270 -0
  501. package/dist/server/server/speech/providers/local/worker-protocol.d.ts +95 -0
  502. package/dist/server/server/speech/providers/local/worker-protocol.js +2 -0
  503. package/dist/server/server/speech/providers/openai/config.d.ts +19 -0
  504. package/dist/server/server/speech/providers/openai/config.js +148 -0
  505. package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
  506. package/dist/server/server/speech/providers/openai/runtime.js +102 -0
  507. package/dist/server/server/speech/providers/openai/stt.d.ts +23 -0
  508. package/dist/server/server/speech/providers/openai/stt.js +209 -0
  509. package/dist/server/server/speech/providers/openai/tts.d.ts +19 -0
  510. package/dist/server/server/speech/providers/openai/tts.js +48 -0
  511. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  512. package/dist/server/server/speech/speech-config-resolver.js +132 -0
  513. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  514. package/dist/server/server/speech/speech-provider.js +2 -0
  515. package/dist/server/server/speech/speech-runtime.d.ts +45 -0
  516. package/dist/server/server/speech/speech-runtime.js +562 -0
  517. package/dist/server/server/speech/speech-types.d.ts +22 -0
  518. package/dist/server/server/speech/speech-types.js +8 -0
  519. package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
  520. package/dist/server/server/speech/turn-detection-provider.js +2 -0
  521. package/dist/server/server/uploads/file-attachment-validation.d.ts +61 -0
  522. package/dist/server/server/uploads/file-attachment-validation.js +56 -0
  523. package/dist/server/server/uploads/staging-service.d.ts +91 -0
  524. package/dist/server/server/uploads/staging-service.js +144 -0
  525. package/dist/server/server/utils/diff-highlighter.d.ts +57 -0
  526. package/dist/server/server/utils/diff-highlighter.js +279 -0
  527. package/dist/server/server/voice/voice-turn-controller.d.ts +38 -0
  528. package/dist/server/server/voice/voice-turn-controller.js +393 -0
  529. package/dist/server/server/voice-config.d.ts +15 -0
  530. package/dist/server/server/voice-config.js +54 -0
  531. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  532. package/dist/server/server/voice-permission-policy.js +13 -0
  533. package/dist/server/server/voice-types.d.ts +12 -0
  534. package/dist/server/server/voice-types.js +2 -0
  535. package/dist/server/server/watch/composer-dictate.d.ts +42 -0
  536. package/dist/server/server/watch/composer-dictate.js +37 -0
  537. package/dist/server/server/watch/notification-action.d.ts +38 -0
  538. package/dist/server/server/watch/notification-action.js +54 -0
  539. package/dist/server/server/watch/notification-registry.d.ts +16 -0
  540. package/dist/server/server/watch/notification-registry.js +2 -0
  541. package/dist/server/server/web-ui.d.ts +10 -0
  542. package/dist/server/server/web-ui.js +205 -0
  543. package/dist/server/server/websocket/runtime-metrics.d.ts +94 -0
  544. package/dist/server/server/websocket/runtime-metrics.js +148 -0
  545. package/dist/server/server/websocket-server.d.ts +193 -0
  546. package/dist/server/server/websocket-server.js +1768 -0
  547. package/dist/server/server/workflow/workflow-feature.d.ts +2 -0
  548. package/dist/server/server/workflow/workflow-feature.js +8 -0
  549. package/dist/server/server/workflow/workflow-http-routes.d.ts +27 -0
  550. package/dist/server/server/workflow/workflow-http-routes.js +97 -0
  551. package/dist/server/server/workflow/workflow-manager.d.ts +228 -0
  552. package/dist/server/server/workflow/workflow-manager.js +444 -0
  553. package/dist/server/server/workflow/workflow-progress.d.ts +95 -0
  554. package/dist/server/server/workflow/workflow-progress.js +178 -0
  555. package/dist/server/server/workflow/workflow-storage.d.ts +36 -0
  556. package/dist/server/server/workflow/workflow-storage.js +143 -0
  557. package/dist/server/server/workspace/all-sessions-route.d.ts +32 -0
  558. package/dist/server/server/workspace/all-sessions-route.js +138 -0
  559. package/dist/server/server/workspace/session-openable.d.ts +16 -0
  560. package/dist/server/server/workspace/session-openable.js +48 -0
  561. package/dist/server/server/workspace/sessions-route.d.ts +15 -0
  562. package/dist/server/server/workspace/sessions-route.js +108 -0
  563. package/dist/server/server/workspace/sessions-search-route.d.ts +68 -0
  564. package/dist/server/server/workspace/sessions-search-route.js +203 -0
  565. package/dist/server/server/workspace-archive-service.d.ts +65 -0
  566. package/dist/server/server/workspace-archive-service.js +229 -0
  567. package/dist/server/server/workspace-auto-name.d.ts +55 -0
  568. package/dist/server/server/workspace-auto-name.js +128 -0
  569. package/dist/server/server/workspace-bootstrap-dedupe.d.ts +34 -0
  570. package/dist/server/server/workspace-bootstrap-dedupe.js +23 -0
  571. package/dist/server/server/workspace-directory.d.ts +93 -0
  572. package/dist/server/server/workspace-directory.js +422 -0
  573. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  574. package/dist/server/server/workspace-git-metadata.js +55 -0
  575. package/dist/server/server/workspace-git-service.d.ts +257 -0
  576. package/dist/server/server/workspace-git-service.js +1386 -0
  577. package/dist/server/server/workspace-reconciliation-service.d.ts +57 -0
  578. package/dist/server/server/workspace-reconciliation-service.js +278 -0
  579. package/dist/server/server/workspace-registry-bootstrap.d.ts +13 -0
  580. package/dist/server/server/workspace-registry-bootstrap.js +121 -0
  581. package/dist/server/server/workspace-registry-model.d.ts +55 -0
  582. package/dist/server/server/workspace-registry-model.js +190 -0
  583. package/dist/server/server/workspace-registry.d.ts +117 -0
  584. package/dist/server/server/workspace-registry.js +194 -0
  585. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  586. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  587. package/dist/server/server/workspace-service-env.d.ts +18 -0
  588. package/dist/server/server/workspace-service-env.js +85 -0
  589. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  590. package/dist/server/server/workspace-service-port-registry.js +59 -0
  591. package/dist/server/server/worktree/commands.d.ts +55 -0
  592. package/dist/server/server/worktree/commands.js +107 -0
  593. package/dist/server/server/worktree-bootstrap.d.ts +76 -0
  594. package/dist/server/server/worktree-bootstrap.js +720 -0
  595. package/dist/server/server/worktree-branch-name-generator.d.ts +35 -0
  596. package/dist/server/server/worktree-branch-name-generator.js +91 -0
  597. package/dist/server/server/worktree-core.d.ts +31 -0
  598. package/dist/server/server/worktree-core.js +105 -0
  599. package/dist/server/server/worktree-errors.d.ts +12 -0
  600. package/dist/server/server/worktree-errors.js +28 -0
  601. package/dist/server/server/worktree-session.d.ts +152 -0
  602. package/dist/server/server/worktree-session.js +466 -0
  603. package/dist/server/services/github-service.d.ts +337 -0
  604. package/dist/server/services/github-service.js +2101 -0
  605. package/dist/server/services/quota-fetcher/manifest.d.ts +4 -0
  606. package/dist/server/services/quota-fetcher/manifest.js +52 -0
  607. package/dist/server/services/quota-fetcher/provider.d.ts +17 -0
  608. package/dist/server/services/quota-fetcher/provider.js +2 -0
  609. package/dist/server/services/quota-fetcher/providers/claude.d.ts +26 -0
  610. package/dist/server/services/quota-fetcher/providers/claude.js +217 -0
  611. package/dist/server/services/quota-fetcher/providers/codex.d.ts +23 -0
  612. package/dist/server/services/quota-fetcher/providers/codex.js +211 -0
  613. package/dist/server/services/quota-fetcher/providers/copilot.d.ts +17 -0
  614. package/dist/server/services/quota-fetcher/providers/copilot.js +75 -0
  615. package/dist/server/services/quota-fetcher/providers/cursor.d.ts +17 -0
  616. package/dist/server/services/quota-fetcher/providers/cursor.js +123 -0
  617. package/dist/server/services/quota-fetcher/providers/grok.d.ts +18 -0
  618. package/dist/server/services/quota-fetcher/providers/grok.js +89 -0
  619. package/dist/server/services/quota-fetcher/providers/kimi.d.ts +20 -0
  620. package/dist/server/services/quota-fetcher/providers/kimi.js +89 -0
  621. package/dist/server/services/quota-fetcher/providers/minimax.d.ts +29 -0
  622. package/dist/server/services/quota-fetcher/providers/minimax.js +227 -0
  623. package/dist/server/services/quota-fetcher/providers/zai.d.ts +17 -0
  624. package/dist/server/services/quota-fetcher/providers/zai.js +58 -0
  625. package/dist/server/services/quota-fetcher/service.d.ts +28 -0
  626. package/dist/server/services/quota-fetcher/service.js +58 -0
  627. package/dist/server/services/quota-fetcher/usage.d.ts +22 -0
  628. package/dist/server/services/quota-fetcher/usage.js +49 -0
  629. package/dist/server/terminal/activity/terminal-activity-tracker.d.ts +20 -0
  630. package/dist/server/terminal/activity/terminal-activity-tracker.js +59 -0
  631. package/dist/server/terminal/agent-hooks/agent-hook-installer.d.ts +62 -0
  632. package/dist/server/terminal/agent-hooks/agent-hook-installer.js +117 -0
  633. package/dist/server/terminal/agent-hooks/claude/claude-settings.d.ts +7 -0
  634. package/dist/server/terminal/agent-hooks/claude/claude-settings.js +88 -0
  635. package/dist/server/terminal/agent-hooks/claude/claude.d.ts +4 -0
  636. package/dist/server/terminal/agent-hooks/claude/claude.js +47 -0
  637. package/dist/server/terminal/agent-hooks/codex/codex-settings.d.ts +7 -0
  638. package/dist/server/terminal/agent-hooks/codex/codex-settings.js +99 -0
  639. package/dist/server/terminal/agent-hooks/codex/codex.d.ts +4 -0
  640. package/dist/server/terminal/agent-hooks/codex/codex.js +30 -0
  641. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.d.ts +4 -0
  642. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.js +46 -0
  643. package/dist/server/terminal/agent-hooks/opencode/opencode.d.ts +3 -0
  644. package/dist/server/terminal/agent-hooks/opencode/opencode.js +23 -0
  645. package/dist/server/terminal/agent-hooks/provider-registry.d.ts +24 -0
  646. package/dist/server/terminal/agent-hooks/provider-registry.js +36 -0
  647. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.d.ts +10 -0
  648. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.js +26 -0
  649. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  650. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  651. package/dist/server/terminal/terminal-capture.d.ts +12 -0
  652. package/dist/server/terminal/terminal-capture.js +43 -0
  653. package/dist/server/terminal/terminal-manager-factory.d.ts +6 -0
  654. package/dist/server/terminal/terminal-manager-factory.js +5 -0
  655. package/dist/server/terminal/terminal-manager.d.ts +78 -0
  656. package/dist/server/terminal/terminal-manager.js +319 -0
  657. package/dist/server/terminal/terminal-output-coalescer.d.ts +34 -0
  658. package/dist/server/terminal/terminal-output-coalescer.js +73 -0
  659. package/dist/server/terminal/terminal-restore.d.ts +18 -0
  660. package/dist/server/terminal/terminal-restore.js +52 -0
  661. package/dist/server/terminal/terminal-session-controller.d.ts +85 -0
  662. package/dist/server/terminal/terminal-session-controller.js +819 -0
  663. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  664. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  665. package/dist/server/terminal/terminal-worker-process.js +304 -0
  666. package/dist/server/terminal/terminal-worker-protocol.d.ts +119 -0
  667. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  668. package/dist/server/terminal/terminal.d.ts +151 -0
  669. package/dist/server/terminal/terminal.js +1161 -0
  670. package/dist/server/terminal/worker-terminal-manager.d.ts +20 -0
  671. package/dist/server/terminal/worker-terminal-manager.js +688 -0
  672. package/dist/server/utils/build-metadata-prompt.d.ts +19 -0
  673. package/dist/server/utils/build-metadata-prompt.js +29 -0
  674. package/dist/server/utils/checkout-git.d.ts +253 -0
  675. package/dist/server/utils/checkout-git.js +2238 -0
  676. package/dist/server/utils/directory-suggestions.d.ts +26 -0
  677. package/dist/server/utils/directory-suggestions.js +830 -0
  678. package/dist/server/utils/git-rev-parse-path.d.ts +3 -0
  679. package/dist/server/utils/git-rev-parse-path.js +21 -0
  680. package/dist/server/utils/github-remote.d.ts +9 -0
  681. package/dist/server/utils/github-remote.js +62 -0
  682. package/dist/server/utils/paseo-config-file.d.ts +30 -0
  683. package/dist/server/utils/paseo-config-file.js +90 -0
  684. package/dist/server/utils/path.d.ts +18 -0
  685. package/dist/server/utils/path.js +123 -0
  686. package/dist/server/utils/project-icon.d.ts +39 -0
  687. package/dist/server/utils/project-icon.js +364 -0
  688. package/dist/server/utils/promise-timeout.d.ts +9 -0
  689. package/dist/server/utils/promise-timeout.js +25 -0
  690. package/dist/server/utils/run-git-command.d.ts +37 -0
  691. package/dist/server/utils/run-git-command.js +232 -0
  692. package/dist/server/utils/spawn.d.ts +33 -0
  693. package/dist/server/utils/spawn.js +71 -0
  694. package/dist/server/utils/string-command-shell.d.ts +10 -0
  695. package/dist/server/utils/string-command-shell.js +21 -0
  696. package/dist/server/utils/tree-kill.d.ts +18 -0
  697. package/dist/server/utils/tree-kill.js +77 -0
  698. package/dist/server/utils/windows-command.d.ts +15 -0
  699. package/dist/server/utils/windows-command.js +41 -0
  700. package/dist/server/utils/worktree-metadata.d.ts +39 -0
  701. package/dist/server/utils/worktree-metadata.js +174 -0
  702. package/dist/server/utils/worktree.d.ts +205 -0
  703. package/dist/server/utils/worktree.js +1119 -0
  704. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css +1 -0
  705. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.br +0 -0
  706. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.gz +0 -0
  707. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js +5 -0
  708. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.br +0 -0
  709. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.gz +0 -0
  710. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.map.br +0 -0
  711. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-127b8d280bb901a810b0c9fa094d4945.js.map.gz +0 -0
  712. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js +3 -0
  713. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.br +0 -0
  714. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.gz +0 -0
  715. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.map.br +0 -0
  716. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-0e6ed782245f4dda6e0a73171a133d45.js.map.gz +0 -0
  717. package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js +16533 -0
  718. package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.br +0 -0
  719. package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.gz +0 -0
  720. package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.map.br +0 -0
  721. package/dist/server/web-ui/_expo/static/js/web/index-b31c4d6fb6383454381e43410736cb89.js.map.gz +0 -0
  722. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js +3 -0
  723. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.br +0 -0
  724. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.gz +0 -0
  725. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.map.br +0 -0
  726. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-0d03551c4ea3780f5b81db6a7aebb017.js.map.gz +0 -0
  727. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js +5 -0
  728. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.br +0 -0
  729. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.gz +0 -0
  730. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.map.br +0 -0
  731. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-feda55adc8031781db083743ca73cbc3.js.map.gz +0 -0
  732. package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js +11 -0
  733. package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.br +0 -0
  734. package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.gz +0 -0
  735. package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.map.br +0 -0
  736. package/dist/server/web-ui/_expo/static/js/web/profiler-593c9481537cb12f4b6c17ef48bcba1c.js.map.gz +0 -0
  737. package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js +60 -0
  738. package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.br +0 -0
  739. package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.gz +0 -0
  740. package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.map.br +0 -0
  741. package/dist/server/web-ui/_expo/static/js/web/startRecording-533a4fe1acfc37460ac2912610062d3a.js.map.gz +0 -0
  742. package/dist/server/web-ui/apple-touch-icon.png +0 -0
  743. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png +0 -0
  744. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png +0 -0
  745. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png +0 -0
  746. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png +0 -0
  747. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png +0 -0
  748. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png +0 -0
  749. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7.png +0 -0
  750. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png +0 -0
  751. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png +0 -0
  752. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png +0 -0
  753. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png +0 -0
  754. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png +0 -0
  755. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/error.d1ea1496f9057eb392d5bbf3732a61b7.png +0 -0
  756. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/file.19eeb73b9593a38f8e9f418337fc7d10.png +0 -0
  757. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/forward.d8b800c443b8972542883e0b9de2bdc6.png +0 -0
  758. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/pkg.ab19f4cbc543357183a20571f68380a3.png +0 -0
  759. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png +0 -0
  760. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/unmatched.20e71bdf79e3a97bf55fd9e164041578.png +0 -0
  761. package/dist/server/web-ui/assets/assets/images/editor-apps/antigravity.6e91a685c33435e0b466a56db86cf141.png +0 -0
  762. package/dist/server/web-ui/assets/assets/images/editor-apps/cursor.c31d6bce4fe9aadc3fe59962f4c4fcf3.png +0 -0
  763. package/dist/server/web-ui/assets/assets/images/editor-apps/file-explorer.3e15e8f72c825c85ce336bcb0cdef776.png +0 -0
  764. package/dist/server/web-ui/assets/assets/images/editor-apps/finder.7f68fc2c475621a672e1be09309d5567.png +0 -0
  765. package/dist/server/web-ui/assets/assets/images/editor-apps/vscode.832bdb4c685d930f1c864c793703600b.png +0 -0
  766. package/dist/server/web-ui/assets/assets/images/editor-apps/webstorm.aa5dc2cd8c20cc0a155c4c5c5ab3c5f5.png +0 -0
  767. package/dist/server/web-ui/assets/assets/images/editor-apps/zed.f3a670b7f9aa226da4fe53fb86f1abbd.png +0 -0
  768. package/dist/server/web-ui/assets/assets/images/favicon-dark-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  769. package/dist/server/web-ui/assets/assets/images/favicon-dark-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  770. package/dist/server/web-ui/assets/assets/images/favicon-dark.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  771. package/dist/server/web-ui/assets/assets/images/favicon-light-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  772. package/dist/server/web-ui/assets/assets/images/favicon-light-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  773. package/dist/server/web-ui/assets/assets/images/favicon-light.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  774. package/dist/server/web-ui/assets/assets/images/notification-icon.3bf81d33ddbf380606bdd248ba83e158.png +0 -0
  775. package/dist/server/web-ui/favicon.ico +0 -0
  776. package/dist/server/web-ui/index.html +90 -0
  777. package/dist/server/web-ui/index.html.br +0 -0
  778. package/dist/server/web-ui/index.html.gz +0 -0
  779. package/dist/server/web-ui/manifest.json +27 -0
  780. package/dist/server/web-ui/manifest.json.br +0 -0
  781. package/dist/server/web-ui/manifest.json.gz +0 -0
  782. package/dist/server/web-ui/metadata.json +1 -0
  783. package/dist/server/web-ui/metadata.json.br +1 -0
  784. package/dist/server/web-ui/metadata.json.gz +0 -0
  785. package/dist/server/web-ui/pwa-icon-192.png +0 -0
  786. package/dist/server/web-ui/pwa-icon-512.png +0 -0
  787. package/dist/server/web-ui/robots.txt +2 -0
  788. package/dist/server/web-ui/service-worker.js +87 -0
  789. package/dist/server/web-ui/service-worker.js.br +0 -0
  790. package/dist/server/web-ui/service-worker.js.gz +0 -0
  791. package/dist/src/executable-resolution/executable-resolution.js +118 -0
  792. package/dist/src/executable-resolution/windows.js +65 -0
  793. package/dist/src/server/agent/provider-launch-config.js +183 -0
  794. package/dist/src/server/paseo-env.js +53 -0
  795. package/dist/src/server/paseo-home.js +19 -0
  796. package/dist/src/server/persisted-config.js +402 -0
  797. package/dist/src/server/pid-lock.js +170 -0
  798. package/dist/src/server/private-files.js +37 -0
  799. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  800. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  801. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  802. package/dist/src/utils/spawn.js +71 -0
  803. package/dist/src/utils/windows-command.js +41 -0
  804. package/package.json +143 -0
@@ -0,0 +1,56 @@
1
+ import { realpathSync } from "node:fs";
2
+ import * as path from "node:path";
3
+ /**
4
+ * Validate a single staged `file` attachment against the agent's upload staging area.
5
+ *
6
+ * Pure (the caller owns the registry and passes the already-looked-up record), so this is
7
+ * trivially unit-testable against an adversarial table. Checks run in order so the most
8
+ * specific failure wins:
9
+ *
10
+ * (a) no record for the `fileId` → `unknown_file_id`
11
+ * (b) record belongs to a different agent → `cross_agent_file_id`
12
+ * (c) `realpathSync` throws (file gone) → `file_missing`
13
+ * (d) resolved path escapes the agent dir → `staging_path_escape`
14
+ * (e) otherwise → `{ ok: true, path: <realpath> }`
15
+ *
16
+ * `realpathSync` follows symlinks, so a symlink whose target lives outside the agent staging
17
+ * dir is caught by the containment check in (d) — the resolved path can never escape.
18
+ *
19
+ * @param args.paseoHome - the daemon's resolved `$PASEO_HOME`
20
+ * @param args.agentId - the client-supplied agent identifier (`msg.agentId`), the staging scope key
21
+ * @param args.record - the looked-up registry record for the attachment's `fileId`, or undefined
22
+ * @returns an accepted resolution carrying the canonical realpath, or a typed rejection
23
+ */
24
+ export function resolveStagedFileAttachment(args) {
25
+ const { paseoHome, agentId, record } = args;
26
+ if (!record) {
27
+ return { ok: false, error: "unknown_file_id" };
28
+ }
29
+ if (record.agentId !== agentId) {
30
+ return { ok: false, error: "cross_agent_file_id" };
31
+ }
32
+ let real;
33
+ try {
34
+ real = realpathSync(record.stagedPath);
35
+ }
36
+ catch {
37
+ return { ok: false, error: "file_missing" };
38
+ }
39
+ // Compare canonical-to-canonical: realpath BOTH sides. The staging root is realpath'd too so
40
+ // a symlinked $PASEO_HOME (e.g. macOS /var → /private/var) doesn't make a legitimately-staged
41
+ // file look like an escape. Containment is still strict — a symlink inside the dir whose
42
+ // target lives elsewhere resolves outside `realRoot` and is rejected. A root that cannot be
43
+ // resolved (never created) fails closed as an escape.
44
+ let realRoot;
45
+ try {
46
+ realRoot = realpathSync(path.resolve(paseoHome, "uploads", agentId));
47
+ }
48
+ catch {
49
+ return { ok: false, error: "staging_path_escape" };
50
+ }
51
+ if (!real.startsWith(realRoot + path.sep)) {
52
+ return { ok: false, error: "staging_path_escape" };
53
+ }
54
+ return { ok: true, path: real };
55
+ }
56
+ //# sourceMappingURL=file-attachment-validation.js.map
@@ -0,0 +1,91 @@
1
+ import { type WriteStream } from "node:fs";
2
+ import type { z } from "zod";
3
+ import { FileBeginMetadataSchema } from "@hyperdrive.bot/paseo-protocol/binary-frames/index";
4
+ import type { FileUploadErrorCode } from "../messages.js";
5
+ export type FileBeginMetadata = z.infer<typeof FileBeginMetadataSchema>;
6
+ /**
7
+ * Default per-file upload size cap: 100 MB.
8
+ *
9
+ * Single source of the cap literal — the `session.ts` begin/chunk handlers consume the
10
+ * RESOLVED cap via `StagingService.maxFileSizeBytes`, never this constant directly, so the
11
+ * "100 * 1024 * 1024" literal lives only here.
12
+ */
13
+ export declare const DEFAULT_MAX_UPLOAD_BYTES: number;
14
+ export interface StagingBeginArgs {
15
+ agentId: string;
16
+ uploadId: string;
17
+ requestId: string;
18
+ /**
19
+ * Client-declared original filename, if any. Optional because the Epic-1
20
+ * `files.upload.begin.request` schema carries no filename field today — when absent the
21
+ * staged suffix falls back to `upload{ext}`. NEVER participates in the path except through
22
+ * `sanitizeUploadFilename`.
23
+ */
24
+ fileName?: string;
25
+ metadata: FileBeginMetadata;
26
+ }
27
+ /**
28
+ * Result of opening a disk-backed staging target for an inbound upload.
29
+ * On success it hands back a streamed write target (never an in-memory buffer);
30
+ * on rejection it carries the protocol error code so the caller can abort.
31
+ */
32
+ export type StagingBeginResult = {
33
+ accepted: true;
34
+ writeStream: WriteStream;
35
+ stagedPath: string;
36
+ fileId: string;
37
+ } | {
38
+ accepted: false;
39
+ error: FileUploadErrorCode;
40
+ };
41
+ export interface StagingService {
42
+ /**
43
+ * Resolved per-file upload size cap in bytes (config override or `DEFAULT_MAX_UPLOAD_BYTES`).
44
+ * Single source for the `session.ts` declared-size early reject and the mid-stream
45
+ * cumulative-bytes abort — neither re-declares the cap literal.
46
+ */
47
+ readonly maxFileSizeBytes: number;
48
+ /**
49
+ * Open a streamed write target for an inbound upload.
50
+ *
51
+ * Owns sanitization + server-side path construction + containment assertion + stream open
52
+ * ONLY. It does NOT enforce the size cap — the declared-size early reject lives in the
53
+ * `session.ts` begin handler so it can refuse before registering the transfer / opening a
54
+ * stream, and the mid-stream cumulative abort lives in the `session.ts` chunk handler.
55
+ * `beginUpload` is only reached after the early-reject gate passes.
56
+ *
57
+ * @param args - agent/upload/request identity, optional client filename, declared metadata
58
+ * @returns an accepted result carrying the write stream + staged path + fileId,
59
+ * or a rejected result carrying `"write_failed"` (containment / fs failure).
60
+ */
61
+ beginUpload(args: StagingBeginArgs): Promise<StagingBeginResult>;
62
+ }
63
+ /**
64
+ * Map a small set of common mimes to a file extension for the no-filename fallback.
65
+ * Exhaustive coverage is NOT a goal — the uuid prefix already guarantees uniqueness.
66
+ */
67
+ export declare function extFromMime(mime: string): string;
68
+ /**
69
+ * Sanitize a raw client filename into a safe staging suffix. Pure (no I/O), so it is
70
+ * unit-tested directly against adversarial inputs. Rules applied in order:
71
+ *
72
+ * (a) Unicode-normalize to NFC
73
+ * (b) strip path separators `/` and `\`
74
+ * (c) strip ASCII control chars `0x00`-`0x1F` and `0x7F` (NUL included)
75
+ * (d) strip leading dots so the result is never `.`, `..`, or `.`-prefixed-only
76
+ * (e) replace any remaining character not in `[A-Za-z0-9._-]` with `_`
77
+ * (f) cap to <= 128 bytes, truncating the base and preserving a trailing extension
78
+ * (g) if the result is empty, return the literal `"file"`
79
+ */
80
+ export declare function sanitizeUploadFilename(rawName: string): string;
81
+ /**
82
+ * Real staging service (story 2.2 — replaces the 2.1 stub).
83
+ *
84
+ * Stages each upload at `${paseoHome}/uploads/${agentId}/${uuid}-${sanitizedFilename}` via a
85
+ * real `fs.WriteStream` (never buffering). The raw client filename participates in the path
86
+ * ONLY through `sanitizeUploadFilename`, and a defense-in-depth containment assert guarantees
87
+ * the resolved path can never escape the agent staging dir. The size cap is resolved ONCE
88
+ * here and exposed via `maxFileSizeBytes` for the `session.ts` cap seams.
89
+ */
90
+ export declare function createStagingService(paseoHome: string): StagingService;
91
+ //# sourceMappingURL=staging-service.d.ts.map
@@ -0,0 +1,144 @@
1
+ import { createWriteStream } from "node:fs";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { randomUUID } from "node:crypto";
4
+ import * as path from "node:path";
5
+ import { loadPersistedConfig } from "../persisted-config.js";
6
+ /**
7
+ * Default per-file upload size cap: 100 MB.
8
+ *
9
+ * Single source of the cap literal — the `session.ts` begin/chunk handlers consume the
10
+ * RESOLVED cap via `StagingService.maxFileSizeBytes`, never this constant directly, so the
11
+ * "100 * 1024 * 1024" literal lives only here.
12
+ */
13
+ export const DEFAULT_MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
14
+ /** Max staged filename length in bytes (the uuid prefix guarantees uniqueness regardless). */
15
+ const MAX_FILENAME_BYTES = 128;
16
+ const MIME_EXTENSIONS = {
17
+ "image/png": ".png",
18
+ "image/jpeg": ".jpg",
19
+ "application/pdf": ".pdf",
20
+ "text/plain": ".txt",
21
+ };
22
+ /**
23
+ * Map a small set of common mimes to a file extension for the no-filename fallback.
24
+ * Exhaustive coverage is NOT a goal — the uuid prefix already guarantees uniqueness.
25
+ */
26
+ export function extFromMime(mime) {
27
+ return MIME_EXTENSIONS[mime] ?? ".bin";
28
+ }
29
+ /**
30
+ * Truncate a filename to at most `maxBytes` UTF-8 bytes, preserving a trailing extension
31
+ * where present. The base name is truncated on character boundaries so the result is always
32
+ * valid UTF-8.
33
+ */
34
+ function capFilenameBytes(name, maxBytes) {
35
+ if (Buffer.byteLength(name, "utf8") <= maxBytes) {
36
+ return name;
37
+ }
38
+ const ext = path.extname(name);
39
+ const extBytes = Buffer.byteLength(ext, "utf8");
40
+ const base = ext.length > 0 ? name.slice(0, name.length - ext.length) : name;
41
+ const budget = Math.max(0, maxBytes - extBytes);
42
+ let truncated = "";
43
+ let bytes = 0;
44
+ for (const ch of base) {
45
+ const chBytes = Buffer.byteLength(ch, "utf8");
46
+ if (bytes + chBytes > budget) {
47
+ break;
48
+ }
49
+ truncated += ch;
50
+ bytes += chBytes;
51
+ }
52
+ return truncated + ext;
53
+ }
54
+ /**
55
+ * Sanitize a raw client filename into a safe staging suffix. Pure (no I/O), so it is
56
+ * unit-tested directly against adversarial inputs. Rules applied in order:
57
+ *
58
+ * (a) Unicode-normalize to NFC
59
+ * (b) strip path separators `/` and `\`
60
+ * (c) strip ASCII control chars `0x00`-`0x1F` and `0x7F` (NUL included)
61
+ * (d) strip leading dots so the result is never `.`, `..`, or `.`-prefixed-only
62
+ * (e) replace any remaining character not in `[A-Za-z0-9._-]` with `_`
63
+ * (f) cap to <= 128 bytes, truncating the base and preserving a trailing extension
64
+ * (g) if the result is empty, return the literal `"file"`
65
+ */
66
+ export function sanitizeUploadFilename(rawName) {
67
+ let name = rawName.normalize("NFC");
68
+ name = name.replace(/[/\\]/g, "");
69
+ // Strip ASCII control chars 0x00-0x1F and 0x7F (NUL included). Done by code-point
70
+ // filter (not a regex) so the source carries no control chars and avoids
71
+ // no-control-regex.
72
+ name = [...name]
73
+ .filter((ch) => {
74
+ const code = ch.codePointAt(0) ?? 0;
75
+ return !(code <= 0x1f || code === 0x7f);
76
+ })
77
+ .join("");
78
+ name = name.replace(/^\.+/, "");
79
+ name = name.replace(/[^A-Za-z0-9._-]/g, "_");
80
+ name = capFilenameBytes(name, MAX_FILENAME_BYTES);
81
+ if (name.length === 0) {
82
+ return "file";
83
+ }
84
+ return name;
85
+ }
86
+ /**
87
+ * Resolve the per-file upload size cap from persisted config, falling back to the default.
88
+ * Reads `daemon.uploads.maxFileSizeBytes` and only honors it when it is a positive integer;
89
+ * absent / zero / negative values yield `DEFAULT_MAX_UPLOAD_BYTES` (the positive-int guard).
90
+ */
91
+ function resolveMaxUploadBytes(paseoHome) {
92
+ const configured = loadPersistedConfig(paseoHome).daemon?.uploads?.maxFileSizeBytes;
93
+ if (typeof configured === "number" && Number.isInteger(configured) && configured > 0) {
94
+ return configured;
95
+ }
96
+ return DEFAULT_MAX_UPLOAD_BYTES;
97
+ }
98
+ /**
99
+ * Real staging service (story 2.2 — replaces the 2.1 stub).
100
+ *
101
+ * Stages each upload at `${paseoHome}/uploads/${agentId}/${uuid}-${sanitizedFilename}` via a
102
+ * real `fs.WriteStream` (never buffering). The raw client filename participates in the path
103
+ * ONLY through `sanitizeUploadFilename`, and a defense-in-depth containment assert guarantees
104
+ * the resolved path can never escape the agent staging dir. The size cap is resolved ONCE
105
+ * here and exposed via `maxFileSizeBytes` for the `session.ts` cap seams.
106
+ */
107
+ export function createStagingService(paseoHome) {
108
+ const maxFileSizeBytes = resolveMaxUploadBytes(paseoHome);
109
+ return {
110
+ maxFileSizeBytes,
111
+ async beginUpload(args) {
112
+ const { agentId, fileName, metadata } = args;
113
+ const suffix = sanitizeUploadFilename(fileName ?? `upload${extFromMime(metadata.mime)}`);
114
+ const stagedPath = path.join(paseoHome, "uploads", agentId, `${randomUUID()}-${suffix}`);
115
+ // Containment assert (defense-in-depth): the uuid prefix + sanitization make escape
116
+ // unreachable in practice, but the assert is acceptance-gating — no stream is opened
117
+ // unless the resolved path is strictly inside the agent staging dir.
118
+ const agentDir = path.resolve(paseoHome, "uploads", agentId);
119
+ if (!path.resolve(stagedPath).startsWith(agentDir + path.sep)) {
120
+ return { accepted: false, error: "write_failed" };
121
+ }
122
+ try {
123
+ await mkdir(path.dirname(stagedPath), { recursive: true });
124
+ const writeStream = createWriteStream(stagedPath);
125
+ // `createWriteStream` opens the fd ASYNCHRONOUSLY. Wait for the file to
126
+ // actually exist on disk before handing the stream back, otherwise:
127
+ // - a chunk written immediately after begin races the open (the staged
128
+ // file isn't on disk yet), and
129
+ // - an abort's `rm` can run before the open completes, deleting nothing
130
+ // and then the late open re-creates the partial AFTER cleanup.
131
+ // Awaiting `open` makes begin/chunk/abort observe a real on-disk file.
132
+ await new Promise((resolve, reject) => {
133
+ writeStream.once("open", () => resolve());
134
+ writeStream.once("error", reject);
135
+ });
136
+ return { accepted: true, writeStream, stagedPath, fileId: randomUUID() };
137
+ }
138
+ catch {
139
+ return { accepted: false, error: "write_failed" };
140
+ }
141
+ },
142
+ };
143
+ }
144
+ //# sourceMappingURL=staging-service.js.map
@@ -0,0 +1,57 @@
1
+ import { type HighlightToken } from "@hyperdrive.bot/paseo-highlight";
2
+ export interface DiffLine {
3
+ type: "add" | "remove" | "context" | "header";
4
+ content: string;
5
+ tokens?: HighlightToken[];
6
+ }
7
+ export interface DiffHunk {
8
+ oldStart: number;
9
+ oldCount: number;
10
+ newStart: number;
11
+ newCount: number;
12
+ lines: DiffLine[];
13
+ }
14
+ export interface ParsedDiffFile {
15
+ path: string;
16
+ isNew: boolean;
17
+ isDeleted: boolean;
18
+ additions: number;
19
+ deletions: number;
20
+ hunks: DiffHunk[];
21
+ status?: "ok" | "too_large" | "binary";
22
+ }
23
+ interface HighlightDiffWithFileContentOptions {
24
+ oldFileContent?: string | null;
25
+ newFileContent?: string | null;
26
+ }
27
+ interface ParseAndHighlightDiffOptions {
28
+ getOldFileContent?: (file: ParsedDiffFile) => Promise<string | null>;
29
+ getNewFileContent?: (file: ParsedDiffFile) => Promise<string | null>;
30
+ }
31
+ export declare function parseDiff(diffText: string): ParsedDiffFile[];
32
+ /**
33
+ * Reconstruct the "new" version of a file from diff hunks.
34
+ * Returns a map of new line numbers to their content.
35
+ */
36
+ export declare function reconstructNewFile(hunks: DiffHunk[]): Map<number, string>;
37
+ /**
38
+ * Reconstruct the "old" version of a file from diff hunks.
39
+ * Returns a map of old line numbers to their content.
40
+ */
41
+ export declare function reconstructOldFile(hunks: DiffHunk[]): Map<number, string>;
42
+ /**
43
+ * Apply syntax highlighting to diff hunks using reconstructed file content.
44
+ * This is the fallback when actual file content is not available.
45
+ */
46
+ export declare function highlightDiffFromHunks(file: ParsedDiffFile): ParsedDiffFile;
47
+ /**
48
+ * Apply syntax highlighting to diff hunks using actual file content.
49
+ * This provides better context for the parser.
50
+ */
51
+ export declare function highlightDiffWithFileContent(file: ParsedDiffFile, cwd: string, options?: HighlightDiffWithFileContentOptions): Promise<ParsedDiffFile>;
52
+ /**
53
+ * Parse and highlight a complete diff, using actual file content when available.
54
+ */
55
+ export declare function parseAndHighlightDiff(diffText: string, cwd: string, options?: ParseAndHighlightDiffOptions): Promise<ParsedDiffFile[]>;
56
+ export type { HighlightToken };
57
+ //# sourceMappingURL=diff-highlighter.d.ts.map
@@ -0,0 +1,279 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { highlightCode, isLanguageSupported, } from "@hyperdrive.bot/paseo-highlight";
4
+ /**
5
+ * Parse a unified diff into structured data
6
+ */
7
+ // Git's default patch headers use paired a/path and b/path prefixes, while
8
+ // diff.noprefix emits plain paths that may legitimately start with a/ or b/.
9
+ function usesDiffPathPrefixes(oldPath, newPath) {
10
+ return oldPath.startsWith("a/") && newPath.startsWith("b/");
11
+ }
12
+ function extractPathFromMetadata(lines, prefix) {
13
+ const line = lines.find((candidate) => candidate.startsWith(prefix));
14
+ if (!line) {
15
+ return null;
16
+ }
17
+ const path = line.slice(prefix.length).replace(/\t.*$/, "").trimEnd();
18
+ return path === "/dev/null" ? null : path;
19
+ }
20
+ function extractPathFromDiffHeader(lines) {
21
+ const firstLine = lines[0] ?? "";
22
+ const prefixedPathMatch = firstLine.match(/^a\/(.+) b\/(.+)$/);
23
+ if (prefixedPathMatch) {
24
+ return prefixedPathMatch[2];
25
+ }
26
+ const metadataPath = extractPathFromMetadata(lines, "+++ ") ?? extractPathFromMetadata(lines, "--- ");
27
+ if (metadataPath) {
28
+ return metadataPath;
29
+ }
30
+ const pathMatch = firstLine.match(/^(\S+)\s+(\S+)$/);
31
+ if (pathMatch) {
32
+ const [, oldPath, newPath] = pathMatch;
33
+ const path = newPath === "/dev/null" ? oldPath : newPath;
34
+ return usesDiffPathPrefixes(oldPath, newPath) ? path.slice(2) : path;
35
+ }
36
+ return "unknown";
37
+ }
38
+ function isMetadataLine(line) {
39
+ return (line.startsWith("index ") ||
40
+ line.startsWith("--- ") ||
41
+ line.startsWith("+++ ") ||
42
+ line.startsWith("new file mode") ||
43
+ line.startsWith("deleted file mode"));
44
+ }
45
+ function parseHunkHeader(line) {
46
+ const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
47
+ if (!hunkMatch)
48
+ return null;
49
+ return {
50
+ oldStart: parseInt(hunkMatch[1], 10),
51
+ oldCount: parseInt(hunkMatch[2] ?? "1", 10),
52
+ newStart: parseInt(hunkMatch[3], 10),
53
+ newCount: parseInt(hunkMatch[4] ?? "1", 10),
54
+ lines: [{ type: "header", content: line.match(/^(@@ .+? @@)/)?.[1] ?? line }],
55
+ };
56
+ }
57
+ function parseSectionBody(lines) {
58
+ const hunks = [];
59
+ let currentHunk = null;
60
+ let additions = 0;
61
+ let deletions = 0;
62
+ for (let i = 1; i < lines.length; i++) {
63
+ const line = lines[i];
64
+ if (isMetadataLine(line))
65
+ continue;
66
+ const newHunk = parseHunkHeader(line);
67
+ if (newHunk) {
68
+ if (currentHunk)
69
+ hunks.push(currentHunk);
70
+ currentHunk = newHunk;
71
+ continue;
72
+ }
73
+ if (!currentHunk)
74
+ continue;
75
+ if (line.startsWith("+")) {
76
+ currentHunk.lines.push({ type: "add", content: line.slice(1) });
77
+ additions++;
78
+ }
79
+ else if (line.startsWith("-")) {
80
+ currentHunk.lines.push({ type: "remove", content: line.slice(1) });
81
+ deletions++;
82
+ }
83
+ else if (line.startsWith(" ")) {
84
+ currentHunk.lines.push({ type: "context", content: line.slice(1) });
85
+ }
86
+ else if (line.length > 0 && !line.startsWith("\\")) {
87
+ currentHunk.lines.push({ type: "context", content: line });
88
+ }
89
+ }
90
+ if (currentHunk)
91
+ hunks.push(currentHunk);
92
+ return { hunks, additions, deletions };
93
+ }
94
+ export function parseDiff(diffText) {
95
+ if (!diffText || diffText.trim().length === 0) {
96
+ return [];
97
+ }
98
+ const files = [];
99
+ const fileSections = diffText.split(/^diff --git /m).filter(Boolean);
100
+ for (const section of fileSections) {
101
+ const lines = section.split("\n");
102
+ const isNew = section.includes("new file mode") || section.includes("--- /dev/null");
103
+ const isDeleted = section.includes("deleted file mode") || section.includes("+++ /dev/null");
104
+ const path = extractPathFromDiffHeader(lines);
105
+ const { hunks, additions, deletions } = parseSectionBody(lines);
106
+ files.push({ path, isNew, isDeleted, additions, deletions, hunks });
107
+ }
108
+ return files;
109
+ }
110
+ /**
111
+ * Reconstruct the "new" version of a file from diff hunks.
112
+ * Returns a map of new line numbers to their content.
113
+ */
114
+ export function reconstructNewFile(hunks) {
115
+ const lines = new Map();
116
+ for (const hunk of hunks) {
117
+ let newLineNum = hunk.newStart;
118
+ for (const line of hunk.lines) {
119
+ if (line.type === "header")
120
+ continue;
121
+ if (line.type === "add" || line.type === "context") {
122
+ lines.set(newLineNum, line.content);
123
+ newLineNum++;
124
+ }
125
+ }
126
+ }
127
+ return lines;
128
+ }
129
+ /**
130
+ * Reconstruct the "old" version of a file from diff hunks.
131
+ * Returns a map of old line numbers to their content.
132
+ */
133
+ export function reconstructOldFile(hunks) {
134
+ const lines = new Map();
135
+ for (const hunk of hunks) {
136
+ let oldLineNum = hunk.oldStart;
137
+ for (const line of hunk.lines) {
138
+ if (line.type === "header")
139
+ continue;
140
+ if (line.type === "remove" || line.type === "context") {
141
+ lines.set(oldLineNum, line.content);
142
+ oldLineNum++;
143
+ }
144
+ }
145
+ }
146
+ return lines;
147
+ }
148
+ function buildFileContent(lineMap) {
149
+ if (lineMap.size === 0)
150
+ return "";
151
+ const lineNumbers = Array.from(lineMap.keys()).sort((a, b) => a - b);
152
+ const minLine = lineNumbers[0];
153
+ const maxLine = lineNumbers[lineNumbers.length - 1];
154
+ const lines = [];
155
+ for (let i = minLine; i <= maxLine; i++) {
156
+ lines.push(lineMap.get(i) ?? "");
157
+ }
158
+ return lines.join("\n");
159
+ }
160
+ function buildTokenLookup(lineMap, highlighted) {
161
+ const lookup = new Map();
162
+ if (lineMap.size === 0)
163
+ return lookup;
164
+ const lineNumbers = Array.from(lineMap.keys()).sort((a, b) => a - b);
165
+ const minLine = lineNumbers[0];
166
+ for (let i = 0; i < highlighted.length; i++) {
167
+ const lineNum = minLine + i;
168
+ if (lineMap.has(lineNum)) {
169
+ lookup.set(lineNum, highlighted[i]);
170
+ }
171
+ }
172
+ return lookup;
173
+ }
174
+ function buildFullFileTokenLookup(fileContent, path) {
175
+ const lookup = new Map();
176
+ const highlighted = highlightCode(fileContent, path);
177
+ for (let i = 0; i < highlighted.length; i++) {
178
+ lookup.set(i + 1, highlighted[i]);
179
+ }
180
+ return lookup;
181
+ }
182
+ function buildReconstructedTokenLookups(file) {
183
+ const newFileLines = reconstructNewFile(file.hunks);
184
+ const oldFileLines = reconstructOldFile(file.hunks);
185
+ const newFileContent = buildFileContent(newFileLines);
186
+ const oldFileContent = buildFileContent(oldFileLines);
187
+ const newHighlighted = highlightCode(newFileContent, file.path);
188
+ const oldHighlighted = highlightCode(oldFileContent, file.path);
189
+ return {
190
+ newTokensByLine: buildTokenLookup(newFileLines, newHighlighted),
191
+ oldTokensByLine: buildTokenLookup(oldFileLines, oldHighlighted),
192
+ };
193
+ }
194
+ /**
195
+ * Apply syntax highlighting to diff hunks using reconstructed file content.
196
+ * This is the fallback when actual file content is not available.
197
+ */
198
+ export function highlightDiffFromHunks(file) {
199
+ if (!isLanguageSupported(file.path)) {
200
+ return file;
201
+ }
202
+ const { newTokensByLine, oldTokensByLine } = buildReconstructedTokenLookups(file);
203
+ return applyTokensToHunks(file, newTokensByLine, oldTokensByLine);
204
+ }
205
+ /**
206
+ * Apply syntax highlighting to diff hunks using actual file content.
207
+ * This provides better context for the parser.
208
+ */
209
+ export async function highlightDiffWithFileContent(file, cwd, options = {}) {
210
+ if (!isLanguageSupported(file.path)) {
211
+ return file;
212
+ }
213
+ const reconstructedTokens = buildReconstructedTokenLookups(file);
214
+ let newTokensByLine = reconstructedTokens.newTokensByLine;
215
+ let oldTokensByLine = reconstructedTokens.oldTokensByLine;
216
+ if (typeof options.oldFileContent === "string") {
217
+ oldTokensByLine = buildFullFileTokenLookup(options.oldFileContent, file.path);
218
+ }
219
+ if (typeof options.newFileContent === "string") {
220
+ newTokensByLine = buildFullFileTokenLookup(options.newFileContent, file.path);
221
+ return applyTokensToHunks(file, newTokensByLine, oldTokensByLine);
222
+ }
223
+ const filePath = resolve(cwd, file.path);
224
+ try {
225
+ const fileContent = await readFile(filePath, "utf-8");
226
+ newTokensByLine = buildFullFileTokenLookup(fileContent, file.path);
227
+ }
228
+ catch {
229
+ // If file read fails (deleted file, etc.), fall back to reconstructed new-side tokens.
230
+ }
231
+ return applyTokensToHunks(file, newTokensByLine, oldTokensByLine);
232
+ }
233
+ function applyTokensToHunks(file, newTokensByLine, oldTokensByLine) {
234
+ const highlightedHunks = file.hunks.map((hunk) => {
235
+ let oldLineNum = hunk.oldStart;
236
+ let newLineNum = hunk.newStart;
237
+ const highlightedLines = hunk.lines.map((line) => {
238
+ if (line.type === "header") {
239
+ return line;
240
+ }
241
+ let tokens;
242
+ if (line.type === "add") {
243
+ tokens = newTokensByLine.get(newLineNum);
244
+ newLineNum++;
245
+ }
246
+ else if (line.type === "remove") {
247
+ tokens = oldTokensByLine.get(oldLineNum);
248
+ oldLineNum++;
249
+ }
250
+ else if (line.type === "context") {
251
+ // Context lines exist in both - use new file version
252
+ tokens = newTokensByLine.get(newLineNum);
253
+ oldLineNum++;
254
+ newLineNum++;
255
+ }
256
+ return tokens ? { ...line, tokens } : line;
257
+ });
258
+ return { ...hunk, lines: highlightedLines };
259
+ });
260
+ return { ...file, hunks: highlightedHunks };
261
+ }
262
+ /**
263
+ * Parse and highlight a complete diff, using actual file content when available.
264
+ */
265
+ export async function parseAndHighlightDiff(diffText, cwd, options = {}) {
266
+ const files = parseDiff(diffText);
267
+ const highlightedFiles = await Promise.all(files.map(async (file) => {
268
+ const [oldFileContent, newFileContent] = await Promise.all([
269
+ options.getOldFileContent?.(file),
270
+ options.getNewFileContent?.(file),
271
+ ]);
272
+ return highlightDiffWithFileContent(file, cwd, {
273
+ oldFileContent: oldFileContent ?? undefined,
274
+ newFileContent: newFileContent ?? undefined,
275
+ });
276
+ }));
277
+ return highlightedFiles;
278
+ }
279
+ //# sourceMappingURL=diff-highlighter.js.map
@@ -0,0 +1,38 @@
1
+ import type { Logger } from "pino";
2
+ import type { SpeechToTextProvider } from "../speech/speech-provider.js";
3
+ import type { TurnDetectionProvider } from "../speech/turn-detection-provider.js";
4
+ export interface VoiceTurnControllerCallbacks {
5
+ onSpeechStarted(): Promise<void>;
6
+ onSpeechStopped(): Promise<void>;
7
+ onPartialTranscript(input: {
8
+ segmentId: string;
9
+ transcript: string;
10
+ }): Promise<void>;
11
+ onFinalTranscript(input: VoiceFinalTranscript): Promise<void>;
12
+ onError(error: Error): void;
13
+ }
14
+ export interface VoiceTurnController {
15
+ start(): Promise<void>;
16
+ stop(): Promise<void>;
17
+ appendClientChunk(input: {
18
+ audioBase64: string;
19
+ format: string;
20
+ }): Promise<void>;
21
+ }
22
+ interface VoiceFinalTranscript {
23
+ segmentId: string;
24
+ transcript: string;
25
+ language?: string;
26
+ avgLogprob?: number;
27
+ isLowConfidence?: boolean;
28
+ durationMs: number;
29
+ }
30
+ export declare function createVoiceTurnController(params: {
31
+ logger: Logger;
32
+ turnDetection: TurnDetectionProvider;
33
+ stt: SpeechToTextProvider;
34
+ sttLanguage?: string;
35
+ callbacks: VoiceTurnControllerCallbacks;
36
+ }): VoiceTurnController;
37
+ export {};
38
+ //# sourceMappingURL=voice-turn-controller.d.ts.map