@alexkroman1/aai 0.8.8 → 0.9.1

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 (292) hide show
  1. package/dist/{sdk/_internal_types.d.ts → _internal-types.d.ts} +0 -3
  2. package/dist/_internal-types.js +19 -0
  3. package/dist/{sdk/_mock_ws.d.ts → _mock-ws.d.ts} +16 -5
  4. package/dist/_mock-ws.js +158 -0
  5. package/dist/{sdk/_utils.d.ts → _utils.d.ts} +1 -2
  6. package/dist/_utils.js +8 -0
  7. package/dist/{sdk/builtin_tools.d.ts → builtin-tools.d.ts} +5 -8
  8. package/dist/builtin-tools.js +270 -0
  9. package/dist/{sdk/direct_executor.d.ts → direct-executor.d.ts} +3 -7
  10. package/dist/direct-executor.js +125 -0
  11. package/dist/{sdk/mod.d.ts → index.d.ts} +0 -4
  12. package/dist/index.js +2 -0
  13. package/dist/{sdk/kv.d.ts → kv.d.ts} +23 -20
  14. package/dist/kv.js +99 -0
  15. package/dist/{sdk/protocol.d.ts → protocol.d.ts} +65 -29
  16. package/dist/protocol.js +142 -0
  17. package/dist/runtime.d.ts +18 -0
  18. package/dist/runtime.js +16 -0
  19. package/dist/s2s.d.ts +110 -0
  20. package/dist/s2s.js +242 -0
  21. package/dist/{sdk/server.d.ts → server.d.ts} +3 -23
  22. package/dist/server.js +105 -0
  23. package/dist/{sdk/session.d.ts → session.d.ts} +4 -11
  24. package/dist/session.js +312 -0
  25. package/dist/tsdown.config.d.ts +2 -0
  26. package/dist/{sdk/types.d.ts → types.d.ts} +41 -25
  27. package/dist/types.js +139 -0
  28. package/dist/{sdk/vector.d.ts → vector.d.ts} +14 -15
  29. package/dist/vector.js +56 -0
  30. package/dist/{sdk/worker_entry.d.ts → worker-entry.d.ts} +2 -5
  31. package/dist/worker-entry.js +59 -0
  32. package/dist/{sdk/ws_handler.d.ts → ws-handler.d.ts} +10 -8
  33. package/dist/ws-handler.js +155 -0
  34. package/package.json +66 -149
  35. package/README.md +0 -34
  36. package/dist/aai.js +0 -3
  37. package/dist/cli/tsconfig.tsbuildinfo +0 -1
  38. package/dist/cli.js +0 -2811
  39. package/dist/sdk/_internal_types.d.ts.map +0 -1
  40. package/dist/sdk/_internal_types.js +0 -25
  41. package/dist/sdk/_internal_types.js.map +0 -1
  42. package/dist/sdk/_mock_ws.d.ts.map +0 -1
  43. package/dist/sdk/_mock_ws.js +0 -154
  44. package/dist/sdk/_mock_ws.js.map +0 -1
  45. package/dist/sdk/_render_check.d.ts +0 -10
  46. package/dist/sdk/_render_check.d.ts.map +0 -1
  47. package/dist/sdk/_render_check.js +0 -72
  48. package/dist/sdk/_render_check.js.map +0 -1
  49. package/dist/sdk/_utils.d.ts.map +0 -1
  50. package/dist/sdk/_utils.js +0 -7
  51. package/dist/sdk/_utils.js.map +0 -1
  52. package/dist/sdk/builtin_tools.d.ts.map +0 -1
  53. package/dist/sdk/builtin_tools.js +0 -309
  54. package/dist/sdk/builtin_tools.js.map +0 -1
  55. package/dist/sdk/capnweb.d.ts +0 -102
  56. package/dist/sdk/capnweb.d.ts.map +0 -1
  57. package/dist/sdk/capnweb.js +0 -219
  58. package/dist/sdk/capnweb.js.map +0 -1
  59. package/dist/sdk/define_agent.d.ts +0 -36
  60. package/dist/sdk/define_agent.d.ts.map +0 -1
  61. package/dist/sdk/define_agent.js +0 -71
  62. package/dist/sdk/define_agent.js.map +0 -1
  63. package/dist/sdk/direct_executor.d.ts.map +0 -1
  64. package/dist/sdk/direct_executor.js +0 -145
  65. package/dist/sdk/direct_executor.js.map +0 -1
  66. package/dist/sdk/host.d.ts +0 -59
  67. package/dist/sdk/host.d.ts.map +0 -1
  68. package/dist/sdk/host.js +0 -131
  69. package/dist/sdk/host.js.map +0 -1
  70. package/dist/sdk/kv.d.ts.map +0 -1
  71. package/dist/sdk/kv.js +0 -94
  72. package/dist/sdk/kv.js.map +0 -1
  73. package/dist/sdk/memory_tools.d.ts +0 -38
  74. package/dist/sdk/memory_tools.d.ts.map +0 -1
  75. package/dist/sdk/memory_tools.js +0 -77
  76. package/dist/sdk/memory_tools.js.map +0 -1
  77. package/dist/sdk/mod.d.ts.map +0 -1
  78. package/dist/sdk/mod.js +0 -27
  79. package/dist/sdk/mod.js.map +0 -1
  80. package/dist/sdk/protocol.d.ts.map +0 -1
  81. package/dist/sdk/protocol.js +0 -133
  82. package/dist/sdk/protocol.js.map +0 -1
  83. package/dist/sdk/runtime.d.ts +0 -36
  84. package/dist/sdk/runtime.d.ts.map +0 -1
  85. package/dist/sdk/runtime.js +0 -27
  86. package/dist/sdk/runtime.js.map +0 -1
  87. package/dist/sdk/s2s.d.ts +0 -74
  88. package/dist/sdk/s2s.d.ts.map +0 -1
  89. package/dist/sdk/s2s.js +0 -218
  90. package/dist/sdk/s2s.js.map +0 -1
  91. package/dist/sdk/server.d.ts.map +0 -1
  92. package/dist/sdk/server.js +0 -144
  93. package/dist/sdk/server.js.map +0 -1
  94. package/dist/sdk/session.d.ts.map +0 -1
  95. package/dist/sdk/session.js +0 -303
  96. package/dist/sdk/session.js.map +0 -1
  97. package/dist/sdk/system_prompt.d.ts +0 -6
  98. package/dist/sdk/system_prompt.d.ts.map +0 -1
  99. package/dist/sdk/system_prompt.js +0 -35
  100. package/dist/sdk/system_prompt.js.map +0 -1
  101. package/dist/sdk/tsconfig.tsbuildinfo +0 -1
  102. package/dist/sdk/types.d.ts.map +0 -1
  103. package/dist/sdk/types.js +0 -96
  104. package/dist/sdk/types.js.map +0 -1
  105. package/dist/sdk/vector.d.ts.map +0 -1
  106. package/dist/sdk/vector.js +0 -63
  107. package/dist/sdk/vector.js.map +0 -1
  108. package/dist/sdk/winterc_server.d.ts +0 -56
  109. package/dist/sdk/winterc_server.d.ts.map +0 -1
  110. package/dist/sdk/winterc_server.js +0 -77
  111. package/dist/sdk/winterc_server.js.map +0 -1
  112. package/dist/sdk/worker_entry.d.ts.map +0 -1
  113. package/dist/sdk/worker_entry.js +0 -68
  114. package/dist/sdk/worker_entry.js.map +0 -1
  115. package/dist/sdk/worker_shim.d.ts +0 -19
  116. package/dist/sdk/worker_shim.d.ts.map +0 -1
  117. package/dist/sdk/worker_shim.js +0 -141
  118. package/dist/sdk/worker_shim.js.map +0 -1
  119. package/dist/sdk/ws_handler.d.ts.map +0 -1
  120. package/dist/sdk/ws_handler.js +0 -158
  121. package/dist/sdk/ws_handler.js.map +0 -1
  122. package/dist/ui/_cn.d.ts +0 -5
  123. package/dist/ui/_cn.d.ts.map +0 -1
  124. package/dist/ui/_cn.js +0 -22
  125. package/dist/ui/_cn.js.map +0 -1
  126. package/dist/ui/_components/app.d.ts +0 -5
  127. package/dist/ui/_components/app.d.ts.map +0 -1
  128. package/dist/ui/_components/app.js +0 -12
  129. package/dist/ui/_components/app.js.map +0 -1
  130. package/dist/ui/_components/button.d.ts +0 -11
  131. package/dist/ui/_components/button.d.ts.map +0 -1
  132. package/dist/ui/_components/button.js +0 -17
  133. package/dist/ui/_components/button.js.map +0 -1
  134. package/dist/ui/_components/chat_view.d.ts +0 -5
  135. package/dist/ui/_components/chat_view.d.ts.map +0 -1
  136. package/dist/ui/_components/chat_view.js +0 -15
  137. package/dist/ui/_components/chat_view.js.map +0 -1
  138. package/dist/ui/_components/controls.d.ts +0 -4
  139. package/dist/ui/_components/controls.d.ts.map +0 -1
  140. package/dist/ui/_components/controls.js +0 -10
  141. package/dist/ui/_components/controls.js.map +0 -1
  142. package/dist/ui/_components/error_banner.d.ts +0 -8
  143. package/dist/ui/_components/error_banner.d.ts.map +0 -1
  144. package/dist/ui/_components/error_banner.js +0 -8
  145. package/dist/ui/_components/error_banner.js.map +0 -1
  146. package/dist/ui/_components/message_bubble.d.ts +0 -7
  147. package/dist/ui/_components/message_bubble.d.ts.map +0 -1
  148. package/dist/ui/_components/message_bubble.js +0 -11
  149. package/dist/ui/_components/message_bubble.js.map +0 -1
  150. package/dist/ui/_components/message_list.d.ts +0 -4
  151. package/dist/ui/_components/message_list.d.ts.map +0 -1
  152. package/dist/ui/_components/message_list.js +0 -45
  153. package/dist/ui/_components/message_list.js.map +0 -1
  154. package/dist/ui/_components/sidebar_layout.d.ts +0 -20
  155. package/dist/ui/_components/sidebar_layout.d.ts.map +0 -1
  156. package/dist/ui/_components/sidebar_layout.js +0 -19
  157. package/dist/ui/_components/sidebar_layout.js.map +0 -1
  158. package/dist/ui/_components/start_screen.d.ts +0 -25
  159. package/dist/ui/_components/start_screen.d.ts.map +0 -1
  160. package/dist/ui/_components/start_screen.js +0 -28
  161. package/dist/ui/_components/start_screen.js.map +0 -1
  162. package/dist/ui/_components/state_indicator.d.ts +0 -8
  163. package/dist/ui/_components/state_indicator.d.ts.map +0 -1
  164. package/dist/ui/_components/state_indicator.js +0 -6
  165. package/dist/ui/_components/state_indicator.js.map +0 -1
  166. package/dist/ui/_components/thinking_indicator.d.ts +0 -5
  167. package/dist/ui/_components/thinking_indicator.d.ts.map +0 -1
  168. package/dist/ui/_components/thinking_indicator.js +0 -10
  169. package/dist/ui/_components/thinking_indicator.js.map +0 -1
  170. package/dist/ui/_components/tool_call_block.d.ts +0 -7
  171. package/dist/ui/_components/tool_call_block.d.ts.map +0 -1
  172. package/dist/ui/_components/tool_call_block.js +0 -46
  173. package/dist/ui/_components/tool_call_block.js.map +0 -1
  174. package/dist/ui/_components/tool_icons.d.ts +0 -18
  175. package/dist/ui/_components/tool_icons.d.ts.map +0 -1
  176. package/dist/ui/_components/tool_icons.js +0 -26
  177. package/dist/ui/_components/tool_icons.js.map +0 -1
  178. package/dist/ui/_components/transcript.d.ts +0 -7
  179. package/dist/ui/_components/transcript.d.ts.map +0 -1
  180. package/dist/ui/_components/transcript.js +0 -9
  181. package/dist/ui/_components/transcript.js.map +0 -1
  182. package/dist/ui/_dom_shim.d.ts +0 -7
  183. package/dist/ui/_dom_shim.d.ts.map +0 -1
  184. package/dist/ui/_dom_shim.js +0 -21
  185. package/dist/ui/_dom_shim.js.map +0 -1
  186. package/dist/ui/_hooks.d.ts +0 -21
  187. package/dist/ui/_hooks.d.ts.map +0 -1
  188. package/dist/ui/_hooks.js +0 -35
  189. package/dist/ui/_hooks.js.map +0 -1
  190. package/dist/ui/_jsdom_setup.d.ts +0 -1
  191. package/dist/ui/_jsdom_setup.d.ts.map +0 -1
  192. package/dist/ui/_jsdom_setup.js +0 -6
  193. package/dist/ui/_jsdom_setup.js.map +0 -1
  194. package/dist/ui/_render_check.d.ts +0 -10
  195. package/dist/ui/_render_check.d.ts.map +0 -1
  196. package/dist/ui/_render_check.js +0 -72
  197. package/dist/ui/_render_check.js.map +0 -1
  198. package/dist/ui/_test_utils.js +0 -272
  199. package/dist/ui/_test_utils.js.map +0 -1
  200. package/dist/ui/audio.d.ts +0 -46
  201. package/dist/ui/audio.d.ts.map +0 -1
  202. package/dist/ui/audio.js +0 -130
  203. package/dist/ui/audio.js.map +0 -1
  204. package/dist/ui/components.d.ts +0 -14
  205. package/dist/ui/components.d.ts.map +0 -1
  206. package/dist/ui/components.js +0 -15
  207. package/dist/ui/components.js.map +0 -1
  208. package/dist/ui/components_mod.d.ts +0 -34
  209. package/dist/ui/components_mod.d.ts.map +0 -1
  210. package/dist/ui/components_mod.js +0 -32
  211. package/dist/ui/components_mod.js.map +0 -1
  212. package/dist/ui/mod.d.ts +0 -23
  213. package/dist/ui/mod.d.ts.map +0 -1
  214. package/dist/ui/mod.js +0 -22
  215. package/dist/ui/mod.js.map +0 -1
  216. package/dist/ui/mount.d.ts +0 -44
  217. package/dist/ui/mount.d.ts.map +0 -1
  218. package/dist/ui/mount.js +0 -61
  219. package/dist/ui/mount.js.map +0 -1
  220. package/dist/ui/mount_context.d.ts +0 -22
  221. package/dist/ui/mount_context.d.ts.map +0 -1
  222. package/dist/ui/mount_context.js +0 -10
  223. package/dist/ui/mount_context.js.map +0 -1
  224. package/dist/ui/session.d.ts +0 -96
  225. package/dist/ui/session.d.ts.map +0 -1
  226. package/dist/ui/session.js +0 -379
  227. package/dist/ui/session.js.map +0 -1
  228. package/dist/ui/session_mod.d.ts +0 -19
  229. package/dist/ui/session_mod.d.ts.map +0 -1
  230. package/dist/ui/session_mod.js +0 -18
  231. package/dist/ui/session_mod.js.map +0 -1
  232. package/dist/ui/signals.d.ts +0 -80
  233. package/dist/ui/signals.d.ts.map +0 -1
  234. package/dist/ui/signals.js +0 -137
  235. package/dist/ui/signals.js.map +0 -1
  236. package/dist/ui/tsconfig.tsbuildinfo +0 -1
  237. package/dist/ui/types.d.ts +0 -36
  238. package/dist/ui/types.d.ts.map +0 -1
  239. package/dist/ui/types.js +0 -4
  240. package/dist/ui/types.js.map +0 -1
  241. package/dist/ui/worklets/capture-processor.d.ts +0 -3
  242. package/dist/ui/worklets/capture-processor.d.ts.map +0 -1
  243. package/dist/ui/worklets/capture-processor.js +0 -61
  244. package/dist/ui/worklets/capture-processor.js.map +0 -1
  245. package/dist/ui/worklets/playback-processor.d.ts +0 -3
  246. package/dist/ui/worklets/playback-processor.d.ts.map +0 -1
  247. package/dist/ui/worklets/playback-processor.js +0 -109
  248. package/dist/ui/worklets/playback-processor.js.map +0 -1
  249. package/templates/.env +0 -1
  250. package/templates/_shared/.env.example +0 -5
  251. package/templates/_shared/CLAUDE.md +0 -1073
  252. package/templates/_shared/biome.json +0 -32
  253. package/templates/_shared/global.d.ts +0 -1
  254. package/templates/_shared/index.html +0 -16
  255. package/templates/_shared/package.json +0 -22
  256. package/templates/_shared/tsconfig.json +0 -16
  257. package/templates/code-interpreter/agent.ts +0 -27
  258. package/templates/code-interpreter/client.tsx +0 -3
  259. package/templates/dispatch-center/agent.ts +0 -1223
  260. package/templates/dispatch-center/client.tsx +0 -505
  261. package/templates/embedded-assets/agent.ts +0 -48
  262. package/templates/embedded-assets/client.tsx +0 -3
  263. package/templates/embedded-assets/knowledge.json +0 -20
  264. package/templates/health-assistant/agent.ts +0 -160
  265. package/templates/health-assistant/client.tsx +0 -3
  266. package/templates/infocom-adventure/agent.ts +0 -164
  267. package/templates/infocom-adventure/client.tsx +0 -300
  268. package/templates/math-buddy/agent.ts +0 -21
  269. package/templates/math-buddy/client.tsx +0 -3
  270. package/templates/memory-agent/agent.ts +0 -20
  271. package/templates/memory-agent/client.tsx +0 -3
  272. package/templates/night-owl/agent.ts +0 -98
  273. package/templates/night-owl/client.tsx +0 -12
  274. package/templates/personal-finance/agent.ts +0 -26
  275. package/templates/personal-finance/client.tsx +0 -3
  276. package/templates/pizza-ordering/agent.ts +0 -214
  277. package/templates/pizza-ordering/client.tsx +0 -264
  278. package/templates/simple/agent.ts +0 -6
  279. package/templates/simple/client.tsx +0 -3
  280. package/templates/smart-research/agent.ts +0 -164
  281. package/templates/smart-research/client.tsx +0 -3
  282. package/templates/solo-rpg/agent.ts +0 -1240
  283. package/templates/solo-rpg/client.tsx +0 -698
  284. package/templates/support/README.md +0 -62
  285. package/templates/support/agent.ts +0 -19
  286. package/templates/support/client.tsx +0 -3
  287. package/templates/travel-concierge/agent.ts +0 -29
  288. package/templates/travel-concierge/client.tsx +0 -3
  289. package/templates/tsconfig.json +0 -1
  290. package/templates/web-researcher/agent.ts +0 -17
  291. package/templates/web-researcher/client.tsx +0 -3
  292. package/ui/styles.css +0 -74
@@ -1 +0,0 @@
1
- {"version":3,"file":"_hooks.d.ts","sourceRoot":"","sources":["../../ui/_hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,IAAI,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAahE"}
package/dist/ui/_hooks.js DELETED
@@ -1,35 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- import { useSignalEffect } from "@preact/signals";
3
- import { useRef } from "preact/hooks";
4
- import { useSession } from "./signals.js";
5
- /**
6
- * Auto-scroll a container to the bottom when messages, tool calls,
7
- * or utterances change. Returns a ref to attach to a sentinel `<div>`
8
- * at the bottom of the scrollable area.
9
- *
10
- * @example
11
- * ```tsx
12
- * function MyChat() {
13
- * const bottomRef = useAutoScroll();
14
- * return (
15
- * <div class="overflow-y-auto">
16
- * {messages.map((m, i) => <p key={i}>{m.text}</p>)}
17
- * <div ref={bottomRef} />
18
- * </div>
19
- * );
20
- * }
21
- * ```
22
- */
23
- export function useAutoScroll() {
24
- const { session } = useSession();
25
- const ref = useRef(null);
26
- useSignalEffect(() => {
27
- session.messages.value;
28
- session.toolCalls.value;
29
- session.userUtterance.value;
30
- session.agentUtterance.value;
31
- ref.current?.scrollIntoView({ behavior: "smooth" });
32
- });
33
- return ref;
34
- }
35
- //# sourceMappingURL=_hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_hooks.js","sourceRoot":"","sources":["../../ui/_hooks.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEhD,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;QAC7B,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=_jsdom_setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_jsdom_setup.d.ts","sourceRoot":"","sources":["../../ui/_jsdom_setup.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- // Stub APIs not implemented in jsdom.
3
- if (typeof globalThis.Element !== "undefined" && !Element.prototype.scrollIntoView) {
4
- Element.prototype.scrollIntoView = () => { };
5
- }
6
- //# sourceMappingURL=_jsdom_setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_jsdom_setup.js","sourceRoot":"","sources":["../../ui/_jsdom_setup.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACnF,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Smoke-test a client.tsx by loading it via Vite SSR in a DOM-shimmed
3
- * environment. The module's top-level `mount()` call executes as a side
4
- * effect; if it throws, the client code has a render-time bug.
5
- *
6
- * Imports linkedom dynamically so this module can be loaded even when
7
- * linkedom is not installed (the caller catches and skips).
8
- */
9
- export declare function renderCheck(clientEntry: string, cwd: string): Promise<void>;
10
- //# sourceMappingURL=_render_check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_render_check.d.ts","sourceRoot":"","sources":["../../ui/_render_check.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEjF"}
@@ -1,72 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- import path from "node:path";
3
- import preact from "@preact/preset-vite";
4
- import { createServer as createViteServer } from "vite";
5
- /**
6
- * Smoke-test a client.tsx by loading it via Vite SSR in a DOM-shimmed
7
- * environment. The module's top-level `mount()` call executes as a side
8
- * effect; if it throws, the client code has a render-time bug.
9
- *
10
- * Imports linkedom dynamically so this module can be loaded even when
11
- * linkedom is not installed (the caller catches and skips).
12
- */
13
- export async function renderCheck(clientEntry, cwd) {
14
- // Dynamic imports so esbuild doesn't bundle linkedom into the CLI dist.
15
- const { DOMParser, installDomShim } = await import("./_dom_shim.js");
16
- const { installMockWebSocket } = await import("../sdk/_mock_ws.js");
17
- installDomShim();
18
- const g = globalThis;
19
- const doc = new DOMParser().parseFromString('<!DOCTYPE html><html><head></head><body><main id="app"></main></body></html>', "text/html");
20
- const prevDoc = g.document;
21
- const prevLocation = g.location;
22
- g.document = doc;
23
- g.location = { origin: "http://localhost:3000", pathname: "/", href: "http://localhost:3000/" };
24
- // Build resolve.alias from package.json exports so templates can
25
- // self-reference `@pkg/name/ui` and resolve to local .ts source.
26
- // Vite's SSR loader doesn't support self-referencing exports (vitejs#9731),
27
- // so resolve.alias is the standard workaround for monorepo-style setups.
28
- const pkgRoot = path.resolve(import.meta.dirname ?? __dirname, "..");
29
- const fs = await import("node:fs/promises");
30
- const pkg = JSON.parse(await fs.readFile(path.join(pkgRoot, "package.json"), "utf-8"));
31
- const alias = [];
32
- for (const [key, val] of Object.entries(pkg.exports ?? {})) {
33
- const source = typeof val === "object" && val !== null && "source" in val ? val.source : null;
34
- if (typeof source === "string") {
35
- alias.push({
36
- find: `${pkg.name}${key.slice(1)}`,
37
- replacement: path.resolve(pkgRoot, source),
38
- });
39
- }
40
- }
41
- // Sort longest-first so `@pkg/name/ui` matches before `@pkg/name`.
42
- alias.sort((a, b) => b.find.length - a.find.length);
43
- const cssNoop = {
44
- name: "ssr-css-noop",
45
- enforce: "pre",
46
- resolveId: (id) => (id.endsWith(".css") ? "\0css-noop" : undefined),
47
- load: (id) => (id === "\0css-noop" ? "" : undefined),
48
- };
49
- const mock = installMockWebSocket();
50
- const vite = await createViteServer({
51
- root: cwd,
52
- logLevel: "silent",
53
- plugins: [preact(), cssNoop],
54
- resolve: { alias, dedupe: ["preact", "@preact/signals"] },
55
- ssr: { noExternal: [pkg.name] },
56
- server: { middlewareMode: true },
57
- });
58
- try {
59
- await vite.ssrLoadModule(clientEntry);
60
- const app = doc.querySelector("#app");
61
- if (!app?.innerHTML) {
62
- throw new Error("client.tsx render check failed: #app is empty after mount()");
63
- }
64
- }
65
- finally {
66
- await vite.close();
67
- mock.restore();
68
- g.document = prevDoc;
69
- g.location = prevLocation;
70
- }
71
- }
72
- //# sourceMappingURL=_render_check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_render_check.js","sourceRoot":"","sources":["../../ui/_render_check.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAc,YAAY,IAAI,gBAAgB,EAAe,MAAM,MAAM,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,GAAW;IAChE,wEAAwE;IACxE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEpE,cAAc,EAAE,CAAC;IAEjB,MAAM,CAAC,GAAG,UAAgD,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CACzC,8EAA8E,EAC9E,WAAW,CACZ,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC3B,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC;IAChC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC;IACjB,CAAC,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;IAEhG,iEAAiE;IACjE,iEAAiE;IACjE,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAClC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,IAAe,CAAC,MAAM,GAAI,CAAC,CAAC,IAAe,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAW;QACtB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KACrD,CAAC;IAEF,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;QAClC,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE;QACzD,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,IAAc,CAAC,EAAE;QACzC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,GAAG,GAAI,GAA2B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC;QACrB,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -1,272 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- import { signal } from "@preact/signals";
3
- import { render } from "preact";
4
- import { vi } from "vitest";
5
- import { DOMParser, installDomShim } from "./_dom_shim.js";
6
- import { createVoiceSession } from "./session.js";
7
- import { createSessionControls } from "./signals.js";
8
- export { installMockWebSocket, MockWebSocket } from "../sdk/_mock_ws.js";
9
- import { installMockWebSocket } from "../sdk/_mock_ws.js";
10
- export function delay(ms) {
11
- return new Promise((r) => setTimeout(r, ms));
12
- }
13
- const HTML = `<!DOCTYPE html><html><head></head><body><div id="app"></div></body></html>`;
14
- const g = globalThis;
15
- export function setupDOM() {
16
- installDomShim();
17
- const doc = new DOMParser().parseFromString(HTML, "text/html");
18
- g.document = doc;
19
- return doc;
20
- }
21
- export function getContainer() {
22
- return globalThis.document.querySelector("#app");
23
- }
24
- // Ensure document exists at import time for modules that need DOM globals.
25
- setupDOM();
26
- export function flush() {
27
- return new Promise((r) => queueMicrotask(r));
28
- }
29
- export function installMockLocation(origin = "http://localhost:3000") {
30
- const had = "location" in globalThis;
31
- if (!had)
32
- g.location = { origin };
33
- return {
34
- restore() {
35
- if (!had)
36
- delete g.location;
37
- },
38
- };
39
- }
40
- export class MockMediaStreamTrack {
41
- stopped = false;
42
- stop() {
43
- this.stopped = true;
44
- }
45
- }
46
- export class MockMediaStream {
47
- #tracks = [new MockMediaStreamTrack()];
48
- getTracks() {
49
- return this.#tracks;
50
- }
51
- }
52
- export class MockMessagePort {
53
- onmessage = null;
54
- posted = [];
55
- postMessage(data, _transfer) {
56
- this.posted.push(data);
57
- }
58
- simulateMessage(data) {
59
- this.onmessage?.(new MessageEvent("message", { data }));
60
- }
61
- }
62
- export class MockAudioWorkletNode {
63
- port = new MockMessagePort();
64
- connected = [];
65
- name;
66
- options;
67
- constructor(_ctx, name, options) {
68
- this.name = name;
69
- this.options = options;
70
- }
71
- connect(dest) {
72
- this.connected.push(dest);
73
- }
74
- disconnect() { }
75
- }
76
- export class MockAudioNode {
77
- connected = [];
78
- connect(dest) {
79
- this.connected.push(dest);
80
- }
81
- }
82
- export class MockGainNode extends MockAudioNode {
83
- gain = {
84
- value: 1,
85
- setTargetAtTime(value, _startTime, _tc) {
86
- this.value = value;
87
- },
88
- };
89
- }
90
- export class MockAudioContext {
91
- sampleRate;
92
- state = "running";
93
- currentTime = 0;
94
- destination = new MockAudioNode();
95
- audioWorklet = {
96
- modules: [],
97
- addModule(url) {
98
- this.modules.push(url);
99
- return Promise.resolve();
100
- },
101
- };
102
- closed = false;
103
- constructor(opts) {
104
- this.sampleRate = opts?.sampleRate ?? 44100;
105
- }
106
- resume() {
107
- return Promise.resolve();
108
- }
109
- createMediaStreamSource(_stream) {
110
- return new MockAudioNode();
111
- }
112
- createGain() {
113
- return new MockGainNode();
114
- }
115
- close() {
116
- this.closed = true;
117
- this.state = "closed";
118
- return Promise.resolve();
119
- }
120
- }
121
- /**
122
- * Install Web Audio API mocks on globalThis and run `fn`.
123
- * All mocks are restored after `fn` completes.
124
- */
125
- export function withAudioMocks(fn) {
126
- return async () => {
127
- const origAudioContext = globalThis.AudioContext;
128
- const origAudioWorkletNode = globalThis.AudioWorkletNode;
129
- const nav = g.navigator;
130
- const origGetUserMedia = nav?.mediaDevices?.getUserMedia;
131
- let _lastContext;
132
- const _workletNodes = [];
133
- g.AudioContext = class extends MockAudioContext {
134
- constructor(opts) {
135
- super(opts);
136
- _lastContext = this;
137
- }
138
- };
139
- g.AudioWorkletNode = class extends MockAudioWorkletNode {
140
- constructor(ctx, name, options) {
141
- super(ctx, name, options);
142
- _workletNodes.push(this);
143
- }
144
- };
145
- if (!nav.mediaDevices)
146
- nav.mediaDevices = {};
147
- nav.mediaDevices.getUserMedia = () => Promise.resolve(new MockMediaStream());
148
- try {
149
- await fn({
150
- lastContext: () => _lastContext,
151
- workletNodes: () => _workletNodes,
152
- });
153
- }
154
- finally {
155
- globalThis.AudioContext = origAudioContext;
156
- globalThis.AudioWorkletNode = origAudioWorkletNode;
157
- if (origGetUserMedia) {
158
- nav.mediaDevices.getUserMedia = origGetUserMedia;
159
- }
160
- }
161
- };
162
- }
163
- export function findWorkletNode(nodes, name) {
164
- const node = nodes.find((n) => n.name === name);
165
- if (!node)
166
- throw new Error(`No worklet node named "${name}"`);
167
- return node;
168
- }
169
- /**
170
- * Set up a DOM + FakeTime environment, run `fn`, then clean up.
171
- * Used by component tests that need a container and timer control.
172
- */
173
- export function withDOM(fn) {
174
- return async () => {
175
- vi.useFakeTimers();
176
- setupDOM();
177
- const container = getContainer();
178
- try {
179
- await fn(container);
180
- }
181
- finally {
182
- render(null, container);
183
- await vi.advanceTimersByTimeAsync(100);
184
- vi.useRealTimers();
185
- }
186
- };
187
- }
188
- /**
189
- * Set up DOM + mock WebSocket, run `fn`, then clean up.
190
- * Used by mount tests.
191
- */
192
- export function withMountEnv(fn) {
193
- return async () => {
194
- setupDOM();
195
- const mock = installMockWebSocket();
196
- try {
197
- await fn(mock);
198
- }
199
- finally {
200
- const app = globalThis.document.querySelector("#app");
201
- if (app)
202
- render(null, app);
203
- await delay(0);
204
- mock.restore();
205
- }
206
- };
207
- }
208
- /**
209
- * Set up mock WebSocket + location + session + signals, run `fn`, clean up.
210
- * Used by signals tests.
211
- */
212
- export function withSignalsEnv(fn) {
213
- return async () => {
214
- const mock = installMockWebSocket();
215
- const loc = installMockLocation();
216
- const session = createVoiceSession({
217
- platformUrl: "http://localhost:3000",
218
- });
219
- const signals = createSessionControls(session);
220
- try {
221
- await fn({
222
- mock,
223
- session,
224
- signals,
225
- async connect() {
226
- session.connect();
227
- await flush();
228
- },
229
- send(msg) {
230
- mock.lastWs.simulateMessage(JSON.stringify(msg));
231
- },
232
- });
233
- }
234
- finally {
235
- mock.restore();
236
- loc.restore();
237
- }
238
- };
239
- }
240
- export function createMockSignals(overrides) {
241
- const mockSession = {
242
- state: signal(overrides?.state ?? "disconnected"),
243
- messages: signal(overrides?.messages ?? []),
244
- toolCalls: signal([]),
245
- userUtterance: signal(overrides?.userUtterance ?? null),
246
- error: signal(overrides?.error ?? null),
247
- disconnected: signal(null),
248
- connect() { },
249
- cancel() { },
250
- resetState() { },
251
- reset() { },
252
- disconnect() { },
253
- [Symbol.dispose]() { },
254
- };
255
- const signals = {
256
- session: mockSession,
257
- started: signal(overrides?.started ?? false),
258
- running: signal(overrides?.running ?? true),
259
- dispose() { },
260
- [Symbol.dispose]() { },
261
- start() {
262
- signals.started.value = true;
263
- signals.running.value = true;
264
- },
265
- toggle() {
266
- signals.running.value = !signals.running.value;
267
- },
268
- reset() { },
269
- };
270
- return signals;
271
- }
272
- //# sourceMappingURL=_test_utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_test_utils.js","sourceRoot":"","sources":["../../ui/_test_utils.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- /** Configuration for creating a {@linkcode VoiceIO} instance. */
2
- export type VoiceIOOptions = {
3
- /** Sample rate in Hz expected by the STT engine (e.g. 16000). */
4
- sttSampleRate: number;
5
- /** Sample rate in Hz used by the TTS engine (e.g. 22050). */
6
- ttsSampleRate: number;
7
- /** Source URL or data URI for the capture AudioWorklet processor. */
8
- captureWorkletSrc: string;
9
- /** Source URL or data URI for the playback AudioWorklet processor. */
10
- playbackWorkletSrc: string;
11
- /** Callback invoked with buffered PCM16 microphone data to send to the server. */
12
- onMicData: (pcm16: ArrayBuffer) => void;
13
- /** Callback invoked with the current playback position in samples. */
14
- onPlaybackProgress?: (samplesPlayed: number) => void;
15
- };
16
- /**
17
- * Audio I/O interface for voice capture and playback.
18
- *
19
- * Manages microphone capture via an AudioWorklet, resampling to the STT
20
- * sample rate, and TTS audio playback through a second AudioWorklet. Implements
21
- * {@linkcode AsyncDisposable} for resource cleanup.
22
- */
23
- export type VoiceIO = AsyncDisposable & {
24
- /** Enqueue a PCM16 audio buffer for playback through the TTS pipeline. */
25
- enqueue(pcm16Buffer: ArrayBuffer): void;
26
- /** Signal that all TTS audio for the current turn has been enqueued.
27
- * Resolves when the worklet has finished playing all buffered audio. */
28
- done(): Promise<void>;
29
- /** Immediately stop playback and discard any buffered TTS audio. */
30
- flush(): void;
31
- /** Release all audio resources (microphone, AudioContext, worklets). */
32
- close(): Promise<void>;
33
- };
34
- /**
35
- * Create a {@linkcode VoiceIO} instance that captures microphone audio and
36
- * plays back TTS audio using the Web Audio API.
37
- *
38
- * The AudioContext runs at the TTS sample rate for playback fidelity.
39
- * Captured audio is resampled to the STT rate when the rates differ.
40
- *
41
- * @param opts - Voice I/O configuration options.
42
- * @returns A promise that resolves to a {@linkcode VoiceIO} handle.
43
- * @throws If microphone access is denied or AudioWorklet registration fails.
44
- */
45
- export declare function createVoiceIO(opts: VoiceIOOptions): Promise<VoiceIO>;
46
- //# sourceMappingURL=audio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../ui/audio.ts"],"names":[],"mappings":"AAGA,iEAAiE;AACjE,MAAM,MAAM,cAAc,GAAG;IAC3B,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG;IACtC,0EAA0E;IAC1E,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IACxC;6EACyE;IACzE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,oEAAoE;IACpE,KAAK,IAAI,IAAI,CAAC;IACd,wEAAwE;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAuH1E"}
package/dist/ui/audio.js DELETED
@@ -1,130 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- import { MIC_BUFFER_SECONDS } from "./types.js";
3
- /**
4
- * Create a {@linkcode VoiceIO} instance that captures microphone audio and
5
- * plays back TTS audio using the Web Audio API.
6
- *
7
- * The AudioContext runs at the TTS sample rate for playback fidelity.
8
- * Captured audio is resampled to the STT rate when the rates differ.
9
- *
10
- * @param opts - Voice I/O configuration options.
11
- * @returns A promise that resolves to a {@linkcode VoiceIO} handle.
12
- * @throws If microphone access is denied or AudioWorklet registration fails.
13
- */
14
- export async function createVoiceIO(opts) {
15
- const { sttSampleRate, ttsSampleRate, captureWorkletSrc, playbackWorkletSrc, onMicData } = opts;
16
- // Use TTS rate for the context — playback fidelity is more perceptible.
17
- // Capture path resamples to STT rate if they differ.
18
- const contextRate = ttsSampleRate;
19
- const ctx = new AudioContext({
20
- sampleRate: contextRate,
21
- latencyHint: "playback",
22
- });
23
- await ctx.resume();
24
- // Single AudioContext owns both capture and playback — required for AEC.
25
- const stream = await navigator.mediaDevices.getUserMedia({
26
- audio: {
27
- sampleRate: contextRate,
28
- echoCancellation: true,
29
- noiseSuppression: true,
30
- autoGainControl: true,
31
- },
32
- });
33
- try {
34
- await Promise.all([
35
- ctx.audioWorklet.addModule(captureWorkletSrc),
36
- ctx.audioWorklet.addModule(playbackWorkletSrc),
37
- ]);
38
- }
39
- catch (err) {
40
- for (const t of stream.getTracks())
41
- t.stop();
42
- await ctx.close().catch(() => { });
43
- throw err;
44
- }
45
- const mic = ctx.createMediaStreamSource(stream);
46
- const capNode = new AudioWorkletNode(ctx, "capture-processor", {
47
- channelCount: 1,
48
- channelCountMode: "explicit",
49
- processorOptions: { contextRate, sttSampleRate },
50
- });
51
- mic.connect(capNode);
52
- // Worklet outputs PCM16 at the STT rate — just batch and send.
53
- const chunkSizeBytes = Math.floor(sttSampleRate * MIC_BUFFER_SECONDS) * 2;
54
- const capBuf = new Uint8Array(chunkSizeBytes * 2);
55
- let capOffset = 0;
56
- capNode.port.postMessage({ event: "start" });
57
- capNode.port.onmessage = (e) => {
58
- if (e.data.event !== "chunk")
59
- return;
60
- const chunk = new Uint8Array(e.data.buffer);
61
- capBuf.set(chunk, capOffset);
62
- capOffset += chunk.byteLength;
63
- if (capOffset >= chunkSizeBytes) {
64
- onMicData(capBuf.slice(0, capOffset).buffer);
65
- capOffset = 0;
66
- }
67
- };
68
- let playNode = null;
69
- let onPlaybackStop = null;
70
- const lifecycle = new AbortController();
71
- const { onPlaybackProgress } = opts;
72
- function ensurePlayNode() {
73
- if (playNode)
74
- return playNode;
75
- const node = new AudioWorkletNode(ctx, "playback-processor", {
76
- processorOptions: { sampleRate: contextRate },
77
- });
78
- node.connect(ctx.destination);
79
- node.port.onmessage = (e) => {
80
- if (e.data.event === "stop") {
81
- node.disconnect();
82
- if (playNode === node)
83
- playNode = null;
84
- onPlaybackStop?.();
85
- onPlaybackStop = null;
86
- }
87
- else if (e.data.event === "progress") {
88
- onPlaybackProgress?.(e.data.readPos);
89
- }
90
- };
91
- playNode = node;
92
- return node;
93
- }
94
- const io = {
95
- enqueue(pcm16Buffer) {
96
- if (lifecycle.signal.aborted)
97
- return;
98
- if (pcm16Buffer.byteLength === 0)
99
- return;
100
- const node = ensurePlayNode();
101
- node.port.postMessage({ event: "write", buffer: new Uint8Array(pcm16Buffer) }, [pcm16Buffer]);
102
- },
103
- done() {
104
- if (!playNode)
105
- return Promise.resolve();
106
- return new Promise((resolve) => {
107
- onPlaybackStop = resolve;
108
- playNode?.port.postMessage({ event: "done" });
109
- });
110
- },
111
- flush() {
112
- if (playNode)
113
- playNode.port.postMessage({ event: "interrupt" });
114
- },
115
- async close() {
116
- if (lifecycle.signal.aborted)
117
- return;
118
- lifecycle.abort();
119
- capNode.port.postMessage({ event: "stop" });
120
- for (const t of stream.getTracks())
121
- t.stop();
122
- await ctx.close().catch(() => { });
123
- },
124
- async [Symbol.asyncDispose]() {
125
- await io.close();
126
- },
127
- };
128
- return io;
129
- }
130
- //# sourceMappingURL=audio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../ui/audio.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export { App } from "./_components/app.tsx";
2
- export { Button } from "./_components/button.tsx";
3
- export { ChatView } from "./_components/chat_view.tsx";
4
- export { Controls } from "./_components/controls.tsx";
5
- export { ErrorBanner } from "./_components/error_banner.tsx";
6
- export { MessageBubble } from "./_components/message_bubble.tsx";
7
- export { MessageList } from "./_components/message_list.tsx";
8
- export { SidebarLayout } from "./_components/sidebar_layout.tsx";
9
- export { StartScreen } from "./_components/start_screen.tsx";
10
- export { StateIndicator } from "./_components/state_indicator.tsx";
11
- export { ThinkingIndicator } from "./_components/thinking_indicator.tsx";
12
- export { ToolCallBlock } from "./_components/tool_call_block.tsx";
13
- export { Transcript } from "./_components/transcript.tsx";
14
- //# sourceMappingURL=components.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../ui/components.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC"}