@alexkroman1/aai 0.8.8 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,56 +0,0 @@
1
- /**
2
- * WinterTC-compatible server factory.
3
- *
4
- * Creates a server with `fetch(Request): Response` and `handleWebSocket(ws)`
5
- * that can run both in-process (self-hosted) and inside a sandboxed Worker
6
- * (platform). This is the shared core for both modes.
7
- *
8
- * @module
9
- */
10
- import type { Kv } from "./kv.ts";
11
- import type { Logger, Metrics, S2SConfig } from "./runtime.ts";
12
- import type { CreateS2sWebSocket } from "./s2s.ts";
13
- import type { AgentDef } from "./types.ts";
14
- import type { VectorStore } from "./vector.ts";
15
- import { type SessionWebSocket } from "./ws_handler.ts";
16
- export type WintercServerOptions = {
17
- /** The agent definition returned by `defineAgent()`. */
18
- agent: AgentDef;
19
- /** Environment variables. */
20
- env: Record<string, string>;
21
- /** KV store. Defaults to in-memory. */
22
- kv?: Kv;
23
- /** Vector store. Defaults to in-memory. */
24
- vector?: VectorStore;
25
- /** Vector search function (legacy, used by builtin tool). */
26
- vectorSearch?: ((query: string, topK: number) => Promise<string>) | undefined;
27
- /** WebSocket factory for S2S connections. */
28
- createWebSocket: CreateS2sWebSocket;
29
- /** HTML to serve at `GET /`. */
30
- clientHtml?: string;
31
- /** Logger. Defaults to console. */
32
- logger?: Logger;
33
- /** Metrics collector. Defaults to noop. */
34
- metrics?: Metrics;
35
- /** S2S configuration. Defaults to AssemblyAI production. */
36
- s2sConfig?: S2SConfig;
37
- };
38
- export type WintercServer = {
39
- /** Standard fetch handler for HTTP routes. */
40
- fetch(request: Request): Promise<Response>;
41
- /** Attach a WebSocket to a new session. */
42
- handleWebSocket(ws: SessionWebSocket, opts?: {
43
- skipGreeting?: boolean;
44
- }): void;
45
- /** Stop all active sessions. */
46
- close(): Promise<void>;
47
- };
48
- /**
49
- * Create a WinterTC-compatible server from an agent definition.
50
- *
51
- * The returned object has a standard `fetch` handler and a `handleWebSocket`
52
- * method. Self-hosted mode calls these directly; platform mode calls them
53
- * from inside a sandboxed Worker via capnweb RPC.
54
- */
55
- export declare function createWintercServer(options: WintercServerOptions): WintercServer;
56
- //# sourceMappingURL=winterc_server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"winterc_server.d.ts","sourceRoot":"","sources":["../../sdk/winterc_server.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,wDAAwD;IACxD,KAAK,EAAE,QAAQ,CAAC;IAChB,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,uCAAuC;IACvC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9E,6CAA6C;IAC7C,eAAe,EAAE,kBAAkB,CAAC;IACpC,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,8CAA8C;IAC9C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,2CAA2C;IAC3C,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/E,gCAAgC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAyEhF"}
@@ -1,77 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * WinterTC-compatible server factory.
4
- *
5
- * Creates a server with `fetch(Request): Response` and `handleWebSocket(ws)`
6
- * that can run both in-process (self-hosted) and inside a sandboxed Worker
7
- * (platform). This is the shared core for both modes.
8
- *
9
- * @module
10
- */
11
- import { Hono } from "hono";
12
- import { createDirectExecutor } from "./direct_executor.js";
13
- import { createMemoryKv } from "./kv.js";
14
- import { AUDIO_FORMAT } from "./protocol.js";
15
- import { consoleLogger, DEFAULT_S2S_CONFIG, noopMetrics } from "./runtime.js";
16
- import { createMemoryVectorStore } from "./vector.js";
17
- import { wireSessionSocket } from "./ws_handler.js";
18
- /**
19
- * Create a WinterTC-compatible server from an agent definition.
20
- *
21
- * The returned object has a standard `fetch` handler and a `handleWebSocket`
22
- * method. Self-hosted mode calls these directly; platform mode calls them
23
- * from inside a sandboxed Worker via capnweb RPC.
24
- */
25
- export function createWintercServer(options) {
26
- const { agent, env, kv = createMemoryKv(), vector = createMemoryVectorStore(), vectorSearch, clientHtml, logger = consoleLogger, metrics = noopMetrics, s2sConfig = DEFAULT_S2S_CONFIG, } = options;
27
- const executor = createDirectExecutor({
28
- agent,
29
- env,
30
- kv,
31
- vector,
32
- ...(vectorSearch ? { vectorSearch } : {}),
33
- createWebSocket: options.createWebSocket,
34
- logger,
35
- metrics,
36
- s2sConfig,
37
- });
38
- const sessions = new Map();
39
- const readyConfig = {
40
- audioFormat: AUDIO_FORMAT,
41
- sampleRate: s2sConfig.inputSampleRate,
42
- ttsSampleRate: s2sConfig.outputSampleRate,
43
- };
44
- const app = new Hono();
45
- app.get("/health", (c) => c.json({ status: "ok", name: agent.name }));
46
- app.get("/", (c) => {
47
- if (clientHtml) {
48
- return c.html(clientHtml);
49
- }
50
- return c.html(`<!DOCTYPE html><html><body><h1>${agent.name}</h1><p>Agent server running.</p></body></html>`);
51
- });
52
- return {
53
- async fetch(request) {
54
- return app.fetch(request);
55
- },
56
- handleWebSocket(ws, wsOpts) {
57
- wireSessionSocket(ws, {
58
- sessions,
59
- createSession: (sid, client) => executor.createSession({
60
- id: sid,
61
- agent: agent.name,
62
- client,
63
- skipGreeting: wsOpts?.skipGreeting ?? false,
64
- }),
65
- readyConfig,
66
- logger,
67
- });
68
- },
69
- async close() {
70
- for (const session of sessions.values()) {
71
- await session.stop();
72
- }
73
- sessions.clear();
74
- },
75
- };
76
- }
77
- //# sourceMappingURL=winterc_server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"winterc_server.js","sourceRoot":"","sources":["../../sdk/winterc_server.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAyB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAkC3E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EACJ,KAAK,EACL,GAAG,EACH,EAAE,GAAG,cAAc,EAAE,EACrB,MAAM,GAAG,uBAAuB,EAAE,EAClC,YAAY,EACZ,UAAU,EACV,MAAM,GAAG,aAAa,EACtB,OAAO,GAAG,WAAW,EACrB,SAAS,GAAG,kBAAkB,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,KAAK;QACL,GAAG;QACH,EAAE;QACF,MAAM;QACN,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM;QACN,OAAO;QACP,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE5C,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,SAAS,CAAC,eAAe;QACrC,aAAa,EAAE,SAAS,CAAC,gBAAgB;KAC1C,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CACX,kCAAkC,KAAK,CAAC,IAAI,iDAAiD,CAC9F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAgB;YAC1B,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,eAAe,CAAC,EAAoB,EAAE,MAAmC;YACvE,iBAAiB,CAAC,EAAE,EAAE;gBACpB,QAAQ;gBACR,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC7B,QAAQ,CAAC,aAAa,CAAC;oBACrB,EAAE,EAAE,GAAG;oBACP,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,MAAM;oBACN,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,KAAK;iBAC5C,CAAC;gBACJ,WAAW;gBACX,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK;YACT,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker_entry.d.ts","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAe,OAAO,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AAoBrB,+CAA+C;AAC/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -1,68 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * Worker entry point — shared tool execution logic.
4
- *
5
- * @module
6
- */
7
- import { EMPTY_PARAMS } from "./_internal_types.js";
8
- import { errorMessage } from "./_utils.js";
9
- import { TOOL_EXECUTION_TIMEOUT_MS } from "./protocol.js";
10
- /** Yield to the event loop so pending I/O (e.g. WebSocket frames) can be processed. */
11
- const yieldTick = () => new Promise((r) => setTimeout(r, 0));
12
- function buildToolContext(opts) {
13
- const { env, state, kv, vector, messages } = opts;
14
- return {
15
- env: { ...env },
16
- abortSignal: AbortSignal.timeout(TOOL_EXECUTION_TIMEOUT_MS),
17
- state: state ?? {},
18
- get kv() {
19
- if (!kv)
20
- throw new Error("KV not available");
21
- return kv;
22
- },
23
- get vector() {
24
- if (!vector)
25
- throw new Error("Vector store not available");
26
- return vector;
27
- },
28
- messages: messages ?? [],
29
- };
30
- }
31
- /**
32
- * Execute a tool call with argument validation and error handling.
33
- *
34
- * Validates the provided arguments against the tool's Zod parameter schema,
35
- * constructs a {@linkcode ToolContext}, invokes the tool's `execute` function,
36
- * and serializes the result to a string. Errors are caught and returned as
37
- * `"Error: ..."` strings rather than thrown.
38
- *
39
- * @param name - The name of the tool being invoked.
40
- * @param args - Raw arguments from the LLM to validate and pass to the tool.
41
- * @param options - Tool definition, environment, and optional context.
42
- * @returns The tool's result serialized as a string, or an error message.
43
- */
44
- export async function executeToolCall(name, args, options) {
45
- const { tool } = options;
46
- const schema = tool.parameters ?? EMPTY_PARAMS;
47
- const parsed = schema.safeParse(args);
48
- if (!parsed.success) {
49
- const issues = (parsed.error?.issues ?? [])
50
- .map((i) => `${i.path.map(String).join(".")}: ${i.message}`)
51
- .join(", ");
52
- return `Error: Invalid arguments for tool "${name}": ${issues}`;
53
- }
54
- try {
55
- const ctx = buildToolContext(options);
56
- await yieldTick();
57
- const result = await Promise.resolve(tool.execute(parsed.data, ctx));
58
- await yieldTick();
59
- if (result == null)
60
- return "null";
61
- return typeof result === "string" ? result : JSON.stringify(result);
62
- }
63
- catch (err) {
64
- console.warn(`[tool-executor] Tool execution failed: ${name}`, err);
65
- return `Error: ${errorMessage(err)}`;
66
- }
67
- }
68
- //# sourceMappingURL=worker_entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker_entry.js","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAI1D,uFAAuF;AACvF,MAAM,SAAS,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAkB5E,SAAS,gBAAgB,CAAC,IAA4B;IACpD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAClD,OAAO;QACL,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE;QACf,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAC3D,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,EAAE;YACJ,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,MAAM;YACR,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,EAAE,QAAQ,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAuC,EACvC,OAA+B;IAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;aACxC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,sCAAsC,IAAI,MAAM,MAAM,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,EAAE,CAAC;QAClB,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,0CAA0C,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,UAAU,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Sandboxed worker entry point for platform mode.
3
- *
4
- * Called from the bundled `worker.js` inside a Deno Worker with all
5
- * permissions false. Sets up capnweb RPC to proxy capabilities through
6
- * the host, and delegates to a {@linkcode WintercServer} for session
7
- * management.
8
- *
9
- * @module
10
- */
11
- import type { AgentDef } from "./types.ts";
12
- /**
13
- * Initialize a sandboxed worker with the given agent definition.
14
- *
15
- * Sets up capnweb RPC, creates capability stubs backed by the host,
16
- * and waits for initialization before creating the WinterTC server.
17
- */
18
- export declare function initWorker(agent: AgentDef): void;
19
- //# sourceMappingURL=worker_shim.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker_shim.d.ts","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuE3C;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAsFhD"}
@@ -1,141 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * Sandboxed worker entry point for platform mode.
4
- *
5
- * Called from the bundled `worker.js` inside a Deno Worker with all
6
- * permissions false. Sets up capnweb RPC to proxy capabilities through
7
- * the host, and delegates to a {@linkcode WintercServer} for session
8
- * management.
9
- *
10
- * @module
11
- */
12
- import { BridgedWebSocket, createRpcSession, isTransferMessage, RpcTarget, sendTransfer, } from "./capnweb.js";
13
- import { createWintercServer } from "./winterc_server.js";
14
- /**
15
- * RPC service exposed by the worker to the host.
16
- * Methods are callable via capnweb RPC stubs.
17
- */
18
- class WorkerService extends RpcTarget {
19
- #agent;
20
- #kv;
21
- #vector;
22
- #vectorSearch;
23
- #createWebSocket;
24
- #wintercServer = null;
25
- constructor(agent, kv, vector, vectorSearch, createWebSocket) {
26
- super();
27
- this.#agent = agent;
28
- this.#kv = kv;
29
- this.#vector = vector;
30
- this.#vectorSearch = vectorSearch;
31
- this.#createWebSocket = createWebSocket;
32
- }
33
- /** Initialize the worker with environment variables. Creates the WinterTC server. */
34
- init(env) {
35
- this.#wintercServer = createWintercServer({
36
- agent: this.#agent,
37
- env,
38
- kv: this.#kv,
39
- vector: this.#vector,
40
- vectorSearch: this.#vectorSearch,
41
- createWebSocket: this.#createWebSocket,
42
- });
43
- return "ok";
44
- }
45
- /** Handle an HTTP request forwarded from the host. */
46
- async workerFetch(url, method, headers, body) {
47
- if (!this.#wintercServer)
48
- throw new Error("Worker not initialized");
49
- const request = new Request(url, { method, headers, ...(body ? { body } : {}) });
50
- const response = await this.#wintercServer.fetch(request);
51
- return {
52
- status: response.status,
53
- headers: Object.fromEntries(response.headers),
54
- body: await response.text(),
55
- };
56
- }
57
- /** Handle a new WebSocket client connection (called via port transfer, not RPC). */
58
- handleWebSocket(port, skipGreeting) {
59
- if (!this.#wintercServer)
60
- throw new Error("Worker not initialized");
61
- const ws = new BridgedWebSocket(port);
62
- this.#wintercServer.handleWebSocket(ws, { skipGreeting });
63
- }
64
- }
65
- /**
66
- * Initialize a sandboxed worker with the given agent definition.
67
- *
68
- * Sets up capnweb RPC, creates capability stubs backed by the host,
69
- * and waits for initialization before creating the WinterTC server.
70
- */
71
- export function initWorker(agent) {
72
- // biome-ignore lint/suspicious/noExplicitAny: capnweb stubs are dynamically typed proxies
73
- let hostStub;
74
- // ─── Capnweb-backed KV ─────────────────────────────────────────────────
75
- const kv = {
76
- async get(key) {
77
- const raw = await hostStub.kvGet(key);
78
- return raw == null ? null : raw;
79
- },
80
- async set(key, value, options) {
81
- await hostStub.kvSet(key, value, options);
82
- },
83
- async delete(key) {
84
- await hostStub.kvDel(key);
85
- },
86
- async list(prefix, options) {
87
- return (await hostStub.kvList(prefix, options));
88
- },
89
- };
90
- // ─── Capnweb-backed vector store ───────────────────────────────────────
91
- const vector = {
92
- async upsert(id, data, metadata) {
93
- await hostStub.vecUpsert(id, data, metadata);
94
- },
95
- async query(text, options) {
96
- return (await hostStub.vecQuery(text, options));
97
- },
98
- async remove(ids) {
99
- await hostStub.vecRemove(Array.isArray(ids) ? ids : [ids]);
100
- },
101
- };
102
- const vectorSearch = async (query, topK) => {
103
- const results = await vector.query(query, { topK });
104
- if (results.length === 0)
105
- return "No relevant results found.";
106
- return JSON.stringify(results.map((r) => ({ score: r.score, text: r.data, metadata: r.metadata })));
107
- };
108
- // ─── Capnweb-backed S2S WebSocket factory ──────────────────────────────
109
- const createWebSocket = (url, opts) => {
110
- const { port1, port2 } = new MessageChannel();
111
- sendTransfer(self, { _t: "createWs", url, headers: JSON.stringify(opts.headers) }, [port2]);
112
- return new BridgedWebSocket(port1);
113
- };
114
- // ─── Monkeypatch fetch to proxy through host ──────────────────────────
115
- globalThis.fetch = async (input, init) => {
116
- const request = new Request(input, init);
117
- const body = request.body ? await request.text() : undefined;
118
- const result = await hostStub.hostFetch(request.url, request.method, Object.fromEntries(request.headers), body);
119
- return new Response(result.body, {
120
- status: result.status,
121
- headers: result.headers,
122
- });
123
- };
124
- // ─── Create worker service and RPC session ────────────────────────────
125
- const workerService = new WorkerService(agent, kv, vector, vectorSearch, createWebSocket);
126
- hostStub = createRpcSession({
127
- port: self,
128
- localMain: workerService,
129
- onTransfer(data, ports) {
130
- if (!isTransferMessage(data))
131
- return;
132
- if (data._t === "handleWs") {
133
- const transferPort = ports[0];
134
- if (!transferPort)
135
- throw new Error("No port transferred for WebSocket");
136
- workerService.handleWebSocket(transferPort, data.skipGreeting);
137
- }
138
- },
139
- });
140
- }
141
- //# sourceMappingURL=worker_shim.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker_shim.js","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws_handler.d.ts","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAiB,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAAC;CACpF,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2EAA2E;IAC3E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IAClE,iEAAiE;IACjE,WAAW,EAAE,WAAW,CAAC;IACzB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAiGF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA0DpF"}
@@ -1,158 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * WebSocket session lifecycle handler.
4
- *
5
- * Cross-runtime: accepts a Logger parameter instead of importing `@std/log`.
6
- * Audio validation is handled at the host transport layer (see host.ts).
7
- *
8
- * @module
9
- */
10
- import { errorMessage } from "./_utils.js";
11
- import { ClientMessageSchema } from "./protocol.js";
12
- import { consoleLogger } from "./runtime.js";
13
- /**
14
- * Creates a {@linkcode ClientSink} backed by a plain WebSocket.
15
- *
16
- * Text events are sent as JSON text frames; audio chunks are sent as
17
- * binary frames (zero-copy).
18
- */
19
- function createClientSink(ws) {
20
- /** Send data over ws, tolerating races where the socket closes between readyState check and send. */
21
- function safeSend(data) {
22
- try {
23
- if (ws.readyState === 1)
24
- ws.send(data);
25
- }
26
- catch {
27
- /* socket closed between check and send */
28
- }
29
- }
30
- return {
31
- get open() {
32
- return ws.readyState === 1;
33
- },
34
- event(e) {
35
- safeSend(JSON.stringify(e));
36
- },
37
- playAudioChunk(chunk) {
38
- safeSend(chunk);
39
- },
40
- playAudioDone() {
41
- safeSend(JSON.stringify({ type: "audio_done" }));
42
- },
43
- };
44
- }
45
- function isBinaryData(data) {
46
- return (globalThis.Buffer?.isBuffer(data) ||
47
- data instanceof ArrayBuffer ||
48
- data instanceof Uint8Array);
49
- }
50
- function toUint8Array(data) {
51
- if (data instanceof Uint8Array)
52
- return data;
53
- if (data instanceof ArrayBuffer)
54
- return new Uint8Array(data);
55
- // Node.js Buffer or ArrayBuffer-like
56
- const buf = data;
57
- return new Uint8Array(buf.buffer ?? data, buf.byteOffset ?? 0, buf.byteLength);
58
- }
59
- function handleBinaryAudio(data, session) {
60
- if (!isBinaryData(data))
61
- return false;
62
- session.onAudio(toUint8Array(data));
63
- return true;
64
- }
65
- function handleTextMessage(data, session, log, ctx, sid) {
66
- if (typeof data !== "string")
67
- return;
68
- let json;
69
- try {
70
- json = JSON.parse(data);
71
- }
72
- catch {
73
- log.warn("Invalid JSON from client", { ...ctx, sid });
74
- return;
75
- }
76
- const parsed = ClientMessageSchema.safeParse(json);
77
- if (!parsed.success) {
78
- log.warn("Invalid client message", { ...ctx, sid, error: parsed.error.message });
79
- return;
80
- }
81
- const msg = parsed.data;
82
- switch (msg.type) {
83
- case "audio_ready":
84
- session.onAudioReady();
85
- break;
86
- case "cancel":
87
- session.onCancel();
88
- break;
89
- case "reset":
90
- session.onReset();
91
- break;
92
- case "history":
93
- session.onHistory(msg.messages);
94
- break;
95
- }
96
- }
97
- /**
98
- * Attaches session lifecycle handlers to a native WebSocket using
99
- * plain JSON text frames and binary audio frames.
100
- *
101
- * Connection flow:
102
- * 1. WebSocket opens → server sends `{ type: "config", ...ReadyConfig }`
103
- * 2. Client sets up audio → sends `{ type: "audio_ready" }`
104
- * 3. If reconnecting → client sends `{ type: "history", messages: [...] }`
105
- */
106
- export function wireSessionSocket(ws, opts) {
107
- const { sessions, logger: log = consoleLogger } = opts;
108
- const sessionId = crypto.randomUUID();
109
- const sid = sessionId.slice(0, 8);
110
- const ctx = opts.logContext ?? {};
111
- let session = null;
112
- function onOpen() {
113
- opts.onOpen?.();
114
- log.info("Session connected", { ...ctx, sid });
115
- const client = createClientSink(ws);
116
- session = opts.createSession(sessionId, client);
117
- sessions.set(sessionId, session);
118
- // Send config immediately — zero RTT
119
- ws.send(JSON.stringify({ type: "config", ...opts.readyConfig }));
120
- session
121
- .start()
122
- .then(() => {
123
- log.info("Session ready", { ...ctx, sid });
124
- })
125
- .catch((err) => {
126
- log.error("Session start failed", { ...ctx, sid, error: errorMessage(err) });
127
- });
128
- }
129
- // readyState 1 = OPEN — socket already open (e.g. from ws handleUpgrade)
130
- if (ws.readyState === 1) {
131
- onOpen();
132
- }
133
- else {
134
- ws.addEventListener("open", onOpen);
135
- }
136
- ws.addEventListener("message", (event) => {
137
- if (!session)
138
- return;
139
- const { data } = event;
140
- if (handleBinaryAudio(data, session))
141
- return;
142
- handleTextMessage(data, session, log, ctx, sid);
143
- });
144
- ws.addEventListener("close", () => {
145
- log.info("Session disconnected", { ...ctx, sid });
146
- if (session) {
147
- void session.stop().finally(() => {
148
- sessions.delete(sessionId);
149
- });
150
- }
151
- opts.onClose?.();
152
- });
153
- ws.addEventListener("error", (event) => {
154
- const msg = event instanceof ErrorEvent ? event.message : "WebSocket error";
155
- log.error("WebSocket error", { ...ctx, sid, error: msg });
156
- });
157
- }
158
- //# sourceMappingURL=ws_handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws_handler.js","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"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"}
package/dist/ui/_cn.d.ts DELETED
@@ -1,5 +0,0 @@
1
- type ClassValue = string | number | boolean | undefined | null | ClassValue[];
2
- /** Tiny clsx-style class name joiner. Falsy values are ignored. */
3
- export declare function cn(...inputs: ClassValue[]): string;
4
- export {};
5
- //# sourceMappingURL=_cn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_cn.d.ts","sourceRoot":"","sources":["../../ui/_cn.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,EAAE,CAAC;AAE9E,mEAAmE;AACnE,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAclD"}
package/dist/ui/_cn.js DELETED
@@ -1,22 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /** Tiny clsx-style class name joiner. Falsy values are ignored. */
3
- export function cn(...inputs) {
4
- const classes = [];
5
- for (const input of inputs) {
6
- if (!input)
7
- continue;
8
- if (typeof input === "string") {
9
- classes.push(input);
10
- }
11
- else if (typeof input === "number") {
12
- classes.push(String(input));
13
- }
14
- else if (Array.isArray(input)) {
15
- const inner = cn(...input);
16
- if (inner)
17
- classes.push(inner);
18
- }
19
- }
20
- return classes.join(" ");
21
- }
22
- //# sourceMappingURL=_cn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_cn.js","sourceRoot":"","sources":["../../ui/_cn.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAI/C,mEAAmE;AACnE,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3B,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -1,5 +0,0 @@
1
- import type * as preact from "preact";
2
- export declare function App({ className }: {
3
- className?: string;
4
- }): preact.JSX.Element;
5
- //# sourceMappingURL=app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../ui/_components/app.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAatC,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAQ7E"}
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx } from "preact/jsx-runtime";
2
- import { useMountConfig } from "../mount_context.js";
3
- import { ChatView } from "./chat_view.js";
4
- import { StartScreen } from "./start_screen.js";
5
- function AnsiLogo() {
6
- return (_jsx("pre", { class: "font-aai-mono text-lg leading-[1.1] font-bold text-aai-primary m-0", children: "▄▀█ ▄▀█ █\n█▀█ █▀█ █" }));
7
- }
8
- export function App({ className }) {
9
- const { title } = useMountConfig();
10
- return (_jsx(StartScreen, { icon: title ? undefined : _jsx(AnsiLogo, {}), title: title, className: className, children: _jsx(ChatView, {}) }));
11
- }
12
- //# sourceMappingURL=app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../ui/_components/app.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAoB,CAAC;AAEjD,SAAS,QAAQ;IACf,OAAO,CACL,cAAK,KAAK,EAAC,oEAAoE,YAC5E,sBAAsB,GACnB,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAA0B;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,YACrF,KAAC,QAAQ,KAAG,GACA,CACf,CAAC;AACJ,CAAC"}
@@ -1,11 +0,0 @@
1
- import type * as preact from "preact";
2
- type ButtonVariant = "default" | "secondary" | "ghost";
3
- type ButtonSize = "default" | "lg";
4
- export declare function Button({ variant, size, className, children, ...rest }: {
5
- variant?: ButtonVariant;
6
- size?: ButtonSize;
7
- className?: string;
8
- children?: preact.ComponentChildren;
9
- } & Omit<preact.JSX.HTMLAttributes<HTMLButtonElement>, "className">): preact.JSX.Element;
10
- export {};
11
- //# sourceMappingURL=button.d.ts.map