@alexkroman1/aai 0.8.3 → 0.8.4

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 (164) hide show
  1. package/dist/cli/tsconfig.tsbuildinfo +1 -0
  2. package/dist/cli.js +1223 -1701
  3. package/dist/sdk/_mock_ws.js +2 -2
  4. package/dist/sdk/_mock_ws.js.map +1 -1
  5. package/dist/sdk/_render_check.d.ts.map +1 -1
  6. package/dist/sdk/_render_check.js +29 -2
  7. package/dist/sdk/_render_check.js.map +1 -1
  8. package/dist/sdk/_utils.d.ts +4 -0
  9. package/dist/sdk/_utils.d.ts.map +1 -0
  10. package/dist/sdk/_utils.js +7 -0
  11. package/dist/sdk/_utils.js.map +1 -0
  12. package/dist/sdk/builtin_tools.d.ts +35 -11
  13. package/dist/sdk/builtin_tools.d.ts.map +1 -1
  14. package/dist/sdk/builtin_tools.js +118 -76
  15. package/dist/sdk/builtin_tools.js.map +1 -1
  16. package/dist/sdk/capnweb.d.ts +76 -47
  17. package/dist/sdk/capnweb.d.ts.map +1 -1
  18. package/dist/sdk/capnweb.js +99 -242
  19. package/dist/sdk/capnweb.js.map +1 -1
  20. package/dist/sdk/direct_executor.d.ts.map +1 -1
  21. package/dist/sdk/direct_executor.js +0 -2
  22. package/dist/sdk/direct_executor.js.map +1 -1
  23. package/dist/sdk/host.d.ts +59 -0
  24. package/dist/sdk/host.d.ts.map +1 -0
  25. package/dist/sdk/host.js +131 -0
  26. package/dist/sdk/host.js.map +1 -0
  27. package/dist/sdk/mod.d.ts +2 -4
  28. package/dist/sdk/mod.d.ts.map +1 -1
  29. package/dist/sdk/mod.js +2 -3
  30. package/dist/sdk/mod.js.map +1 -1
  31. package/dist/sdk/protocol.d.ts +33 -135
  32. package/dist/sdk/protocol.d.ts.map +1 -1
  33. package/dist/sdk/protocol.js +49 -51
  34. package/dist/sdk/protocol.js.map +1 -1
  35. package/dist/sdk/runtime.d.ts +0 -1
  36. package/dist/sdk/runtime.d.ts.map +1 -1
  37. package/dist/sdk/runtime.js +5 -24
  38. package/dist/sdk/runtime.js.map +1 -1
  39. package/dist/sdk/s2s.d.ts +14 -3
  40. package/dist/sdk/s2s.d.ts.map +1 -1
  41. package/dist/sdk/s2s.js +72 -113
  42. package/dist/sdk/s2s.js.map +1 -1
  43. package/dist/sdk/server.d.ts +1 -1
  44. package/dist/sdk/server.d.ts.map +1 -1
  45. package/dist/sdk/server.js +26 -10
  46. package/dist/sdk/server.js.map +1 -1
  47. package/dist/sdk/session.d.ts +5 -1
  48. package/dist/sdk/session.d.ts.map +1 -1
  49. package/dist/sdk/session.js +131 -137
  50. package/dist/sdk/session.js.map +1 -1
  51. package/dist/sdk/tsconfig.tsbuildinfo +1 -0
  52. package/dist/sdk/types.d.ts +30 -3
  53. package/dist/sdk/types.d.ts.map +1 -1
  54. package/dist/sdk/types.js +37 -0
  55. package/dist/sdk/types.js.map +1 -1
  56. package/dist/sdk/winterc_server.d.ts +0 -1
  57. package/dist/sdk/winterc_server.d.ts.map +1 -1
  58. package/dist/sdk/winterc_server.js +0 -1
  59. package/dist/sdk/winterc_server.js.map +1 -1
  60. package/dist/sdk/worker_entry.d.ts +3 -11
  61. package/dist/sdk/worker_entry.d.ts.map +1 -1
  62. package/dist/sdk/worker_entry.js +8 -18
  63. package/dist/sdk/worker_entry.js.map +1 -1
  64. package/dist/sdk/worker_shim.d.ts +5 -6
  65. package/dist/sdk/worker_shim.d.ts.map +1 -1
  66. package/dist/sdk/worker_shim.js +93 -136
  67. package/dist/sdk/worker_shim.js.map +1 -1
  68. package/dist/sdk/ws_handler.d.ts +1 -3
  69. package/dist/sdk/ws_handler.d.ts.map +1 -1
  70. package/dist/sdk/ws_handler.js +14 -25
  71. package/dist/sdk/ws_handler.js.map +1 -1
  72. package/dist/ui/_cn.d.ts +5 -0
  73. package/dist/ui/_cn.d.ts.map +1 -0
  74. package/dist/ui/_cn.js +22 -0
  75. package/dist/ui/_cn.js.map +1 -0
  76. package/dist/ui/_components/app.d.ts +3 -1
  77. package/dist/ui/_components/app.d.ts.map +1 -1
  78. package/dist/ui/_components/app.js +2 -2
  79. package/dist/ui/_components/app.js.map +1 -1
  80. package/dist/ui/_components/button.d.ts +11 -0
  81. package/dist/ui/_components/button.d.ts.map +1 -0
  82. package/dist/ui/_components/button.js +17 -0
  83. package/dist/ui/_components/button.js.map +1 -0
  84. package/dist/ui/_components/chat_view.d.ts +3 -1
  85. package/dist/ui/_components/chat_view.d.ts.map +1 -1
  86. package/dist/ui/_components/chat_view.js +4 -2
  87. package/dist/ui/_components/chat_view.js.map +1 -1
  88. package/dist/ui/_components/controls.d.ts +3 -1
  89. package/dist/ui/_components/controls.d.ts.map +1 -1
  90. package/dist/ui/_components/controls.js +4 -5
  91. package/dist/ui/_components/controls.js.map +1 -1
  92. package/dist/ui/_components/error_banner.d.ts +2 -1
  93. package/dist/ui/_components/error_banner.d.ts.map +1 -1
  94. package/dist/ui/_components/error_banner.js +3 -2
  95. package/dist/ui/_components/error_banner.js.map +1 -1
  96. package/dist/ui/_components/message_bubble.d.ts +2 -1
  97. package/dist/ui/_components/message_bubble.d.ts.map +1 -1
  98. package/dist/ui/_components/message_bubble.js +5 -3
  99. package/dist/ui/_components/message_bubble.js.map +1 -1
  100. package/dist/ui/_components/message_list.d.ts +3 -1
  101. package/dist/ui/_components/message_list.d.ts.map +1 -1
  102. package/dist/ui/_components/message_list.js +7 -15
  103. package/dist/ui/_components/message_list.js.map +1 -1
  104. package/dist/ui/_components/sidebar_layout.d.ts +2 -1
  105. package/dist/ui/_components/sidebar_layout.d.ts.map +1 -1
  106. package/dist/ui/_components/sidebar_layout.js +5 -7
  107. package/dist/ui/_components/sidebar_layout.js.map +1 -1
  108. package/dist/ui/_components/start_screen.d.ts +2 -1
  109. package/dist/ui/_components/start_screen.d.ts.map +1 -1
  110. package/dist/ui/_components/start_screen.js +5 -2
  111. package/dist/ui/_components/start_screen.js.map +1 -1
  112. package/dist/ui/_components/state_indicator.d.ts +2 -1
  113. package/dist/ui/_components/state_indicator.d.ts.map +1 -1
  114. package/dist/ui/_components/state_indicator.js +3 -2
  115. package/dist/ui/_components/state_indicator.js.map +1 -1
  116. package/dist/ui/_components/thinking_indicator.d.ts +3 -1
  117. package/dist/ui/_components/thinking_indicator.d.ts.map +1 -1
  118. package/dist/ui/_components/thinking_indicator.js +4 -2
  119. package/dist/ui/_components/thinking_indicator.js.map +1 -1
  120. package/dist/ui/_components/tool_call_block.d.ts +2 -1
  121. package/dist/ui/_components/tool_call_block.d.ts.map +1 -1
  122. package/dist/ui/_components/tool_call_block.js +13 -25
  123. package/dist/ui/_components/tool_call_block.js.map +1 -1
  124. package/dist/ui/_components/transcript.d.ts +2 -1
  125. package/dist/ui/_components/transcript.d.ts.map +1 -1
  126. package/dist/ui/_components/transcript.js +3 -2
  127. package/dist/ui/_components/transcript.js.map +1 -1
  128. package/dist/ui/_jsdom_setup.d.ts +1 -0
  129. package/dist/ui/_jsdom_setup.d.ts.map +1 -0
  130. package/dist/ui/_jsdom_setup.js +6 -0
  131. package/dist/ui/_jsdom_setup.js.map +1 -0
  132. package/dist/ui/audio.d.ts.map +1 -1
  133. package/dist/ui/audio.js +4 -4
  134. package/dist/ui/audio.js.map +1 -1
  135. package/dist/ui/components.d.ts +13 -55
  136. package/dist/ui/components.d.ts.map +1 -1
  137. package/dist/ui/components.js +13 -42
  138. package/dist/ui/components.js.map +1 -1
  139. package/dist/ui/components_mod.d.ts +14 -3
  140. package/dist/ui/components_mod.d.ts.map +1 -1
  141. package/dist/ui/components_mod.js +14 -3
  142. package/dist/ui/components_mod.js.map +1 -1
  143. package/dist/ui/mod.d.ts +1 -8
  144. package/dist/ui/mod.d.ts.map +1 -1
  145. package/dist/ui/mod.js +1 -5
  146. package/dist/ui/mod.js.map +1 -1
  147. package/dist/ui/mount.d.ts +1 -1
  148. package/dist/ui/mount.d.ts.map +1 -1
  149. package/dist/ui/mount.js +1 -0
  150. package/dist/ui/mount.js.map +1 -1
  151. package/dist/ui/session.d.ts +0 -2
  152. package/dist/ui/session.d.ts.map +1 -1
  153. package/dist/ui/session.js +9 -18
  154. package/dist/ui/session.js.map +1 -1
  155. package/dist/ui/signals.d.ts +8 -3
  156. package/dist/ui/signals.d.ts.map +1 -1
  157. package/dist/ui/signals.js +22 -11
  158. package/dist/ui/signals.js.map +1 -1
  159. package/dist/ui/tsconfig.tsbuildinfo +1 -0
  160. package/dist/ui/worklets/playback-processor.js +3 -3
  161. package/package.json +37 -17
  162. package/templates/_shared/CLAUDE.md +4 -7
  163. package/templates/dispatch-center/agent.ts +85 -397
  164. package/templates/solo-rpg/agent.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"worker_entry.d.ts","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,OAAO,EAAe,OAAO,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;;;;;;;;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;AAqBrB,+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,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,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,CA0BjB"}
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"}
@@ -5,21 +5,15 @@
5
5
  * @module
6
6
  */
7
7
  import { EMPTY_PARAMS } from "./_internal_types.js";
8
+ import { errorMessage } from "./_utils.js";
9
+ import { TOOL_EXECUTION_TIMEOUT_MS } from "./protocol.js";
8
10
  /** Yield to the event loop so pending I/O (e.g. WebSocket frames) can be processed. */
9
11
  const yieldTick = () => new Promise((r) => setTimeout(r, 0));
10
- /**
11
- * Maximum time in milliseconds a tool handler may run before being aborted.
12
- *
13
- * If a tool's `execute` function exceeds this duration, it is cancelled via
14
- * `AbortSignal.timeout` and an error message is returned to the LLM.
15
- */
16
- export const TOOL_HANDLER_TIMEOUT = 30_000;
17
12
  function buildToolContext(opts) {
18
- const { env, sessionId, state, kv, vector, messages } = opts;
13
+ const { env, state, kv, vector, messages } = opts;
19
14
  return {
20
- sessionId: sessionId ?? "",
21
15
  env: { ...env },
22
- abortSignal: AbortSignal.timeout(TOOL_HANDLER_TIMEOUT),
16
+ abortSignal: AbortSignal.timeout(TOOL_EXECUTION_TIMEOUT_MS),
23
17
  state: state ?? {},
24
18
  get kv() {
25
19
  if (!kv)
@@ -35,12 +29,12 @@ function buildToolContext(opts) {
35
29
  };
36
30
  }
37
31
  /**
38
- * Execute a tool call with argument validation, timeout, and error handling.
32
+ * Execute a tool call with argument validation and error handling.
39
33
  *
40
34
  * Validates the provided arguments against the tool's Zod parameter schema,
41
35
  * constructs a {@linkcode ToolContext}, invokes the tool's `execute` function,
42
- * and serializes the result to a string. Errors and timeouts are caught and
43
- * returned as `"Error: ..."` strings rather than thrown.
36
+ * and serializes the result to a string. Errors are caught and returned as
37
+ * `"Error: ..."` strings rather than thrown.
44
38
  *
45
39
  * @param name - The name of the tool being invoked.
46
40
  * @param args - Raw arguments from the LLM to validate and pass to the tool.
@@ -67,12 +61,8 @@ export async function executeToolCall(name, args, options) {
67
61
  return typeof result === "string" ? result : JSON.stringify(result);
68
62
  }
69
63
  catch (err) {
70
- if (err instanceof DOMException && err.name === "TimeoutError") {
71
- console.warn(`[tool-executor] Tool execution timed out: ${name}`);
72
- return `Error: Tool "${name}" timed out after ${TOOL_HANDLER_TIMEOUT}ms`;
73
- }
74
64
  console.warn(`[tool-executor] Tool execution failed: ${name}`, err);
75
- return `Error: ${err instanceof Error ? err.message : String(err)}`;
65
+ return `Error: ${errorMessage(err)}`;
76
66
  }
77
67
  }
78
68
  //# sourceMappingURL=worker_entry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker_entry.js","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"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"}
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"}
@@ -2,9 +2,9 @@
2
2
  * Sandboxed worker entry point for platform mode.
3
3
  *
4
4
  * Called from the bundled `worker.js` inside a Deno Worker with all
5
- * permissions false. Monkeypatches `globalThis.fetch` to proxy through
6
- * capnweb RPC, creates capnweb-backed KV/vector/WebSocket, and delegates
7
- * to a {@linkcode WintercServer} for session management.
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
8
  *
9
9
  * @module
10
10
  */
@@ -12,9 +12,8 @@ import type { AgentDef } from "./types.ts";
12
12
  /**
13
13
  * Initialize a sandboxed worker with the given agent definition.
14
14
  *
15
- * Sets up capnweb RPC, monkeypatches fetch, creates capability stubs,
16
- * and waits for the host to send initialization data before creating
17
- * the WinterTC server.
15
+ * Sets up capnweb RPC, creates capability stubs backed by the host,
16
+ * and waits for initialization before creating the WinterTC server.
18
17
  */
19
18
  export declare function initWorker(agent: AgentDef): void;
20
19
  //# sourceMappingURL=worker_shim.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker_shim.d.ts","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAWH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwC3C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CA4JhD"}
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"}
@@ -3,125 +3,100 @@
3
3
  * Sandboxed worker entry point for platform mode.
4
4
  *
5
5
  * Called from the bundled `worker.js` inside a Deno Worker with all
6
- * permissions false. Monkeypatches `globalThis.fetch` to proxy through
7
- * capnweb RPC, creates capnweb-backed KV/vector/WebSocket, and delegates
8
- * to a {@linkcode WintercServer} for session management.
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
9
  *
10
10
  * @module
11
11
  */
12
- import { z } from "zod";
13
- import { BridgedWebSocket, CapnwebEndpoint, createBridgedS2sWebSocket, } from "./capnweb.js";
12
+ import { BridgedWebSocket, createRpcSession, isTransferMessage, RpcTarget, sendTransfer, } from "./capnweb.js";
14
13
  import { createWintercServer } from "./winterc_server.js";
15
- // ─── Zod schemas for RPC results ────────────────────────────────────────────
16
- const FetchResultSchema = z.object({
17
- status: z.number(),
18
- headers: z.record(z.string(), z.string()),
19
- body: z.string(),
20
- });
21
- const KvEntrySchema = z.object({
22
- key: z.string(),
23
- value: z.unknown(),
24
- });
25
- const VectorEntrySchema = z.object({
26
- id: z.string(),
27
- score: z.number(),
28
- data: z.string().optional(),
29
- metadata: z.record(z.string(), z.unknown()).optional(),
30
- });
31
- const WorkerInitArgsSchema = z.tuple([z.record(z.string(), z.string())]);
32
- const WorkerFetchArgsSchema = z.tuple([
33
- z.string(),
34
- z.string(),
35
- z.record(z.string(), z.string()),
36
- z.string().optional(),
37
- ]);
38
- const WorkerWsArgsSchema = z.tuple([z.boolean().optional()]);
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
+ }
39
65
  /**
40
66
  * Initialize a sandboxed worker with the given agent definition.
41
67
  *
42
- * Sets up capnweb RPC, monkeypatches fetch, creates capability stubs,
43
- * and waits for the host to send initialization data before creating
44
- * the WinterTC server.
68
+ * Sets up capnweb RPC, creates capability stubs backed by the host,
69
+ * and waits for initialization before creating the WinterTC server.
45
70
  */
46
71
  export function initWorker(agent) {
47
- const endpoint = new CapnwebEndpoint(self);
48
- // ─── Monkeypatch fetch to proxy through host ────────────────────────────
49
- globalThis.fetch = async (input, init) => {
50
- let url;
51
- let method = "GET";
52
- let headers = {};
53
- let body;
54
- if (typeof input === "string") {
55
- url = input;
56
- }
57
- else if (input instanceof URL) {
58
- url = input.toString();
59
- }
60
- else {
61
- url = input.url;
62
- method = input.method;
63
- headers = Object.fromEntries(input.headers);
64
- if (input.body) {
65
- body = await new Response(input.body).text();
66
- }
67
- }
68
- if (init?.method)
69
- method = init.method;
70
- if (init?.headers) {
71
- headers = Object.fromEntries(new Headers(init.headers));
72
- }
73
- if (init?.body !== undefined) {
74
- body = typeof init.body === "string" ? init.body : String(init.body);
75
- }
76
- const raw = await endpoint.call("host.fetch", [url, method, headers, body]);
77
- const result = FetchResultSchema.parse(raw);
78
- return new Response(result.body, {
79
- status: result.status,
80
- headers: result.headers,
81
- });
82
- };
72
+ // biome-ignore lint/suspicious/noExplicitAny: capnweb stubs are dynamically typed proxies
73
+ let hostStub;
83
74
  // ─── Capnweb-backed KV ─────────────────────────────────────────────────
84
75
  const kv = {
85
76
  async get(key) {
86
- const raw = await endpoint.call("host.kv", ["get", key]);
87
- if (raw === null || raw === undefined)
88
- return null;
89
- return raw;
77
+ const raw = await hostStub.kvGet(key);
78
+ return raw == null ? null : raw;
90
79
  },
91
80
  async set(key, value, options) {
92
- await endpoint.call("host.kv", ["set", key, value, options?.expireIn]);
81
+ await hostStub.kvSet(key, value, options);
93
82
  },
94
83
  async delete(key) {
95
- await endpoint.call("host.kv", ["del", key]);
84
+ await hostStub.kvDel(key);
96
85
  },
97
86
  async list(prefix, options) {
98
- const raw = await endpoint.call("host.kv", [
99
- "list",
100
- prefix,
101
- options?.limit,
102
- options?.reverse,
103
- ]);
104
- const entries = z.array(KvEntrySchema).parse(raw);
105
- return entries;
87
+ return (await hostStub.kvList(prefix, options));
106
88
  },
107
89
  };
108
90
  // ─── Capnweb-backed vector store ───────────────────────────────────────
109
91
  const vector = {
110
92
  async upsert(id, data, metadata) {
111
- await endpoint.call("host.vector", ["upsert", id, data, metadata]);
93
+ await hostStub.vecUpsert(id, data, metadata);
112
94
  },
113
95
  async query(text, options) {
114
- const raw = await endpoint.call("host.vector", [
115
- "query",
116
- text,
117
- options?.topK,
118
- options?.filter,
119
- ]);
120
- return z.array(VectorEntrySchema).parse(raw);
96
+ return (await hostStub.vecQuery(text, options));
121
97
  },
122
98
  async remove(ids) {
123
- const idArray = Array.isArray(ids) ? ids : [ids];
124
- await endpoint.call("host.vector", ["remove", idArray]);
99
+ await hostStub.vecRemove(Array.isArray(ids) ? ids : [ids]);
125
100
  },
126
101
  };
127
102
  const vectorSearch = async (query, topK) => {
@@ -133,52 +108,34 @@ export function initWorker(agent) {
133
108
  // ─── Capnweb-backed S2S WebSocket factory ──────────────────────────────
134
109
  const createWebSocket = (url, opts) => {
135
110
  const { port1, port2 } = new MessageChannel();
136
- endpoint.notify("host.createWebSocket", [url, JSON.stringify(opts.headers)], [port2]);
137
- return createBridgedS2sWebSocket(port1);
111
+ sendTransfer(self, { _t: "createWs", url, headers: JSON.stringify(opts.headers) }, [port2]);
112
+ return new BridgedWebSocket(port1);
138
113
  };
139
- // ─── RPC handlers ──────────────────────────────────────────────────────
140
- let wintercServer = null;
141
- // Handle init from host — creates the WinterTC server
142
- endpoint.handle("worker.init", (args) => {
143
- const [env] = WorkerInitArgsSchema.parse(args);
144
- wintercServer = createWintercServer({
145
- agent,
146
- env,
147
- kv,
148
- vector,
149
- vectorSearch,
150
- createWebSocket,
151
- });
152
- return "ok";
153
- });
154
- // Handle HTTP request forwarding
155
- endpoint.handle("worker.fetch", async (args) => {
156
- if (!wintercServer)
157
- throw new Error("Worker not initialized");
158
- const [url, method, headers, body] = WorkerFetchArgsSchema.parse(args);
159
- const request = new Request(url, {
160
- method,
161
- headers,
162
- ...(body ? { body } : {}),
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,
163
122
  });
164
- const response = await wintercServer.fetch(request);
165
- return {
166
- status: response.status,
167
- headers: Object.fromEntries(response.headers),
168
- body: await response.text(),
169
- };
170
- });
171
- // Handle new WebSocket client connection — port transferred from host
172
- endpoint.handle("worker.handleWebSocket", (_args, ports) => {
173
- if (!wintercServer)
174
- throw new Error("Worker not initialized");
175
- const [skipGreeting] = WorkerWsArgsSchema.parse(_args);
176
- const port = ports[0];
177
- if (!port)
178
- throw new Error("No port transferred");
179
- const ws = new BridgedWebSocket(port);
180
- wintercServer.handleWebSocket(ws, { skipGreeting: skipGreeting ?? false });
181
- return "ok";
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
+ },
182
139
  });
183
140
  }
184
141
  //# sourceMappingURL=worker_shim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker_shim.js","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker_shim.js","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * WebSocket session lifecycle handler.
3
3
  *
4
4
  * Cross-runtime: accepts a Logger parameter instead of importing `@std/log`.
5
- * Audio validation is inlined (no dependency on server-side schemas).
5
+ * Audio validation is handled at the host transport layer (see host.ts).
6
6
  *
7
7
  * @module
8
8
  */
@@ -36,8 +36,6 @@ export type WsSessionOptions = {
36
36
  onClose?: () => void;
37
37
  /** Logger instance. Defaults to console. */
38
38
  logger?: Logger;
39
- /** Persistent user ID from the client (used as sessionId for cross-reconnect identity). */
40
- uid?: string | undefined;
41
39
  };
42
40
  /**
43
41
  * Attaches session lifecycle handlers to a native WebSocket using
@@ -1 +1 @@
1
- {"version":3,"file":"ws_handler.d.ts","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,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;AAYF,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;IAChB,2FAA2F;IAC3F,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAiHF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAsDpF"}
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"}
@@ -3,18 +3,13 @@
3
3
  * WebSocket session lifecycle handler.
4
4
  *
5
5
  * Cross-runtime: accepts a Logger parameter instead of importing `@std/log`.
6
- * Audio validation is inlined (no dependency on server-side schemas).
6
+ * Audio validation is handled at the host transport layer (see host.ts).
7
7
  *
8
8
  * @module
9
9
  */
10
+ import { errorMessage } from "./_utils.js";
10
11
  import { ClientMessageSchema } from "./protocol.js";
11
12
  import { consoleLogger } from "./runtime.js";
12
- /** Max size for a single audio chunk from the browser (1 MB). */
13
- const MAX_AUDIO_CHUNK_BYTES = 1_048_576;
14
- /** Validate a PCM16 audio chunk: non-empty, within size bounds, even byte length. */
15
- function isValidAudioChunk(data) {
16
- return (data.byteLength > 0 && data.byteLength <= MAX_AUDIO_CHUNK_BYTES && data.byteLength % 2 === 0);
17
- }
18
13
  /**
19
14
  * Creates a {@linkcode ClientSink} backed by a plain WebSocket.
20
15
  *
@@ -61,20 +56,10 @@ function toUint8Array(data) {
61
56
  const buf = data;
62
57
  return new Uint8Array(buf.buffer ?? data, buf.byteOffset ?? 0, buf.byteLength);
63
58
  }
64
- function handleBinaryAudio(data, session, log, ctx, sid) {
59
+ function handleBinaryAudio(data, session) {
65
60
  if (!isBinaryData(data))
66
61
  return false;
67
- const chunk = toUint8Array(data);
68
- if (!isValidAudioChunk(chunk)) {
69
- log.warn("Invalid audio chunk, dropping", {
70
- ...ctx,
71
- sid,
72
- bytes: chunk.byteLength,
73
- aligned: chunk.byteLength % 2 === 0,
74
- });
75
- return true;
76
- }
77
- session.onAudio(chunk);
62
+ session.onAudio(toUint8Array(data));
78
63
  return true;
79
64
  }
80
65
  function handleTextMessage(data, session, log, ctx, sid) {
@@ -120,9 +105,7 @@ function handleTextMessage(data, session, log, ctx, sid) {
120
105
  */
121
106
  export function wireSessionSocket(ws, opts) {
122
107
  const { sessions, logger: log = consoleLogger } = opts;
123
- // Use the client-provided uid for persistent identity across reconnects,
124
- // falling back to a random UUID for clients that don't send one.
125
- const sessionId = opts.uid ?? crypto.randomUUID();
108
+ const sessionId = crypto.randomUUID();
126
109
  const sid = sessionId.slice(0, 8);
127
110
  const ctx = opts.logContext ?? {};
128
111
  let session = null;
@@ -134,8 +117,14 @@ export function wireSessionSocket(ws, opts) {
134
117
  sessions.set(sessionId, session);
135
118
  // Send config immediately — zero RTT
136
119
  ws.send(JSON.stringify({ type: "config", ...opts.readyConfig }));
137
- void session.start();
138
- log.info("Session ready", { ...ctx, sid });
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
+ });
139
128
  }
140
129
  // readyState 1 = OPEN — socket already open (e.g. from ws handleUpgrade)
141
130
  if (ws.readyState === 1) {
@@ -148,7 +137,7 @@ export function wireSessionSocket(ws, opts) {
148
137
  if (!session)
149
138
  return;
150
139
  const { data } = event;
151
- if (handleBinaryAudio(data, session, log, ctx, sid))
140
+ if (handleBinaryAudio(data, session))
152
141
  return;
153
142
  handleTextMessage(data, session, log, ctx, sid);
154
143
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ws_handler.js","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAe7C,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAExC,qFAAqF;AACrF,SAAS,iBAAiB,CAAC,IAAgB;IACzC,OAAO,CACL,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,CAC7F,CAAC;AACJ,CAAC;AAsBD;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,EAAoB;IAC5C,qGAAqG;IACrG,SAAS,QAAQ,CAAC,IAAuC;QACvD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC;gBAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,EAAE,CAAC,UAAU,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,CAAC;YACL,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,cAAc,CAAC,KAAK;YAClB,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,aAAa;YACX,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO,CACJ,UAA6D,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;QACrF,IAAI,YAAY,WAAW;QAC3B,IAAI,YAAY,UAAU,CAC3B,CAAC;AACJ,CAAC;AAKD,SAAS,YAAY,CAAC,IAAa;IACjC,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,IAAI,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,qCAAqC;IACrC,MAAM,GAAG,GAAG,IAAkB,CAAC;IAC/B,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,IAAK,IAAoB,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAa,EACb,OAAgB,EAChB,GAAW,EACX,GAA2B,EAC3B,GAAW;IAEX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE;YACxC,GAAG,GAAG;YACN,GAAG;YACH,KAAK,EAAE,KAAK,CAAC,UAAU;YACvB,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAa,EACb,OAAgB,EAChB,GAAW,EACX,GAA2B,EAC3B,GAAW;IAEX,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IACrC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAkB,MAAM,CAAC,IAAI,CAAC;IACvC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM;QACR,KAAK,OAAO;YACV,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,MAAM;IACV,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAoB,EAAE,IAAsB;IAC5E,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC;IACvD,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IAElC,IAAI,OAAO,GAAmB,IAAI,CAAC;IAEnC,SAAS,MAAM;QACb,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEjC,qCAAqC;QACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEjE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,yEAAyE;IACzE,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,CAAC;IACX,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAY,EAAE,EAAE;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAqB,CAAC;QAEvC,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO;QAC5D,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ws_handler.js","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,22 @@
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
@@ -0,0 +1 @@
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,3 +1,5 @@
1
1
  import type * as preact from "preact";
2
- export declare function App(): preact.JSX.Element;
2
+ export declare function App({ className }: {
3
+ className?: string;
4
+ }): preact.JSX.Element;
3
5
  //# sourceMappingURL=app.d.ts.map
@@ -1 +1 @@
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,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAQxC"}
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"}
@@ -5,8 +5,8 @@ import { StartScreen } from "./start_screen.js";
5
5
  function AnsiLogo() {
6
6
  return (_jsx("pre", { class: "font-aai-mono text-lg leading-[1.1] font-bold text-aai-primary m-0", children: "▄▀█ ▄▀█ █\n█▀█ █▀█ █" }));
7
7
  }
8
- export function App() {
8
+ export function App({ className }) {
9
9
  const { title } = useMountConfig();
10
- return (_jsx(StartScreen, { icon: title ? undefined : _jsx(AnsiLogo, {}), title: title, children: _jsx(ChatView, {}) }));
10
+ return (_jsx(StartScreen, { icon: title ? undefined : _jsx(AnsiLogo, {}), title: title, className: className, children: _jsx(ChatView, {}) }));
11
11
  }
12
12
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
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;IACjB,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,YAC/D,KAAC,QAAQ,KAAG,GACA,CACf,CAAC;AACJ,CAAC"}
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"}