@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,102 +0,0 @@
1
- /**
2
- * capnweb integration + WebSocket bridge for sandboxed worker communication.
3
- *
4
- * Provides a custom {@linkcode WorkerPortTransport} that allows capnweb RPC
5
- * to share a Worker port with non-RPC messages (port transfers, bridge
6
- * protocol), plus WebSocket bridging over MessagePort.
7
- *
8
- * @module
9
- */
10
- import { RpcSession, type RpcSessionOptions, RpcTarget, type RpcTransport } from "capnweb";
11
- export { RpcSession, type RpcSessionOptions, RpcTarget, type RpcTransport };
12
- /** Minimal port interface for {@linkcode WorkerPortTransport}. Works with Worker, self, or MessagePort. */
13
- export type WorkerPort = {
14
- postMessage(msg: unknown, transfer?: Transferable[]): void;
15
- addEventListener(type: string, listener: (ev: MessageEvent) => void): void;
16
- };
17
- /** Callback for non-RPC messages received on the port (e.g. port transfers). */
18
- export type NonRpcHandler = (data: unknown, ports: readonly MessagePort[]) => void;
19
- /**
20
- * Custom {@linkcode RpcTransport} for capnweb RPC over Worker-like ports.
21
- *
22
- * capnweb RPC uses string messages. This transport filters incoming messages:
23
- * - Strings → queued for RPC
24
- * - `null` → peer closed, treated as error
25
- * - Anything else → forwarded to the optional `onNonRpc` callback
26
- *
27
- * This allows RPC and port-transfer messages to coexist on the same channel.
28
- */
29
- export declare class WorkerPortTransport implements RpcTransport {
30
- #private;
31
- constructor(port: WorkerPort, onNonRpc?: NonRpcHandler);
32
- send(message: string): Promise<void>;
33
- receive(): Promise<string>;
34
- abort(reason: unknown): void;
35
- }
36
- /** Options for {@linkcode createRpcSession}. */
37
- export type RpcSessionInit = {
38
- /** The Worker-like port to communicate over. */
39
- port: WorkerPort;
40
- /** Local RPC target to expose to the peer. */
41
- localMain?: RpcTarget;
42
- /** Callback for non-RPC messages (port transfers). */
43
- onTransfer?: NonRpcHandler;
44
- /** capnweb session options. */
45
- options?: RpcSessionOptions;
46
- };
47
- /**
48
- * Create a capnweb RPC session over a Worker-like port.
49
- *
50
- * Returns the remote stub for calling methods on the peer's `localMain`.
51
- * Non-RPC messages (objects, not strings) are forwarded to `onTransfer`.
52
- */
53
- export declare function createRpcSession(init: RpcSessionInit): any;
54
- /**
55
- * Transfer message format for port-transfer operations that can't go
56
- * through capnweb RPC (which only supports string serialization):
57
- *
58
- * - `{_t: "handleWs", skipGreeting: boolean}` — host→worker: new client WebSocket
59
- * - `{_t: "createWs", url: string, headers: string}` — worker→host: request S2S WebSocket
60
- */
61
- export type TransferMessage = {
62
- _t: "handleWs";
63
- skipGreeting: boolean;
64
- } | {
65
- _t: "createWs";
66
- url: string;
67
- headers: string;
68
- };
69
- /** Type guard for {@linkcode TransferMessage}. */
70
- export declare function isTransferMessage(data: unknown): data is TransferMessage;
71
- /** Send a port-transfer message with transferred MessagePorts. */
72
- export declare function sendTransfer(port: WorkerPort, msg: TransferMessage, transfer: Transferable[]): void;
73
- /**
74
- * Wraps a MessagePort as a standard WebSocket (extends EventTarget).
75
- * Used in the worker for client connections bridged from the host.
76
- */
77
- export declare class BridgedWebSocket extends EventTarget {
78
- readyState: number;
79
- private port;
80
- constructor(port: MessagePort);
81
- send(data: string | ArrayBuffer | Uint8Array): void;
82
- close(code?: number, reason?: string): void;
83
- }
84
- /** Minimal EventTarget-based WebSocket accepted by {@linkcode bridgeWebSocketToPort}. */
85
- export type BridgeableWebSocket = {
86
- readonly readyState: number;
87
- binaryType?: string;
88
- send(data: string | ArrayBuffer): void;
89
- close(code?: number, reason?: string): void;
90
- addEventListener(type: string, listener: EventListenerOrEventListenerObject): void;
91
- };
92
- /** Options for {@linkcode bridgeWebSocketToPort}. */
93
- export type BridgeOptions = {
94
- /** Optional filter for incoming binary frames. Return `false` to drop. */
95
- filterBinary?: (data: ArrayBuffer) => boolean;
96
- };
97
- /**
98
- * Bridges an EventTarget-based WebSocket to a MessagePort.
99
- * Used on the host side for both client and S2S connections.
100
- */
101
- export declare function bridgeWebSocketToPort(ws: BridgeableWebSocket, port: MessagePort, opts?: BridgeOptions): void;
102
- //# sourceMappingURL=capnweb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capnweb.d.ts","sourceRoot":"","sources":["../../sdk/capnweb.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,CAAC;AAI5E,2GAA2G;AAC3G,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;CAC5E,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,YAAW,YAAY;;gBAO1C,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,aAAa;IAoBhD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAYhC,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;CAkB7B;AAID,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG;IAC3B,gDAAgD;IAChD,IAAI,EAAE,UAAU,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,sDAAsD;IACtD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AAEH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAI1D;AAID;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,eAAe,CAOxE;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,YAAY,EAAE,GACvB,IAAI,CAEN;AA6BD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU,SAAK;IACf,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IA8B7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI;IAanD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAK5C;AAID,yFAAyF;AACzF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAAC;CACpF,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG;IAC1B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,mBAAmB,EACvB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,aAAa,GACnB,IAAI,CAuCN"}
@@ -1,219 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * capnweb integration + WebSocket bridge for sandboxed worker communication.
4
- *
5
- * Provides a custom {@linkcode WorkerPortTransport} that allows capnweb RPC
6
- * to share a Worker port with non-RPC messages (port transfers, bridge
7
- * protocol), plus WebSocket bridging over MessagePort.
8
- *
9
- * @module
10
- */
11
- import { RpcSession, RpcTarget } from "capnweb";
12
- export { RpcSession, RpcTarget };
13
- /**
14
- * Custom {@linkcode RpcTransport} for capnweb RPC over Worker-like ports.
15
- *
16
- * capnweb RPC uses string messages. This transport filters incoming messages:
17
- * - Strings → queued for RPC
18
- * - `null` → peer closed, treated as error
19
- * - Anything else → forwarded to the optional `onNonRpc` callback
20
- *
21
- * This allows RPC and port-transfer messages to coexist on the same channel.
22
- */
23
- export class WorkerPortTransport {
24
- #port;
25
- #receiveQueue = [];
26
- #receiveResolver;
27
- #receiveRejecter;
28
- #error;
29
- constructor(port, onNonRpc) {
30
- this.#port = port;
31
- port.addEventListener("message", (ev) => {
32
- if (this.#error)
33
- return;
34
- if (typeof ev.data === "string") {
35
- if (this.#receiveResolver) {
36
- this.#receiveResolver(ev.data);
37
- this.#receiveResolver = undefined;
38
- this.#receiveRejecter = undefined;
39
- }
40
- else {
41
- this.#receiveQueue.push(ev.data);
42
- }
43
- }
44
- else if (ev.data === null) {
45
- this.#receivedError(new Error("Peer closed connection."));
46
- }
47
- else {
48
- onNonRpc?.(ev.data, [...(ev.ports ?? [])]);
49
- }
50
- });
51
- }
52
- async send(message) {
53
- if (this.#error)
54
- throw this.#error;
55
- this.#port.postMessage(message);
56
- }
57
- async receive() {
58
- if (this.#receiveQueue.length > 0) {
59
- // biome-ignore lint/style/noNonNullAssertion: length check above guarantees non-empty
60
- return this.#receiveQueue.shift();
61
- }
62
- if (this.#error)
63
- throw this.#error;
64
- return new Promise((resolve, reject) => {
65
- this.#receiveResolver = resolve;
66
- this.#receiveRejecter = reject;
67
- });
68
- }
69
- abort(reason) {
70
- try {
71
- this.#port.postMessage(null);
72
- }
73
- catch { }
74
- const err = reason instanceof Error ? reason : new Error(String(reason));
75
- if (!this.#error)
76
- this.#error = err;
77
- }
78
- #receivedError(reason) {
79
- if (!this.#error) {
80
- this.#error = reason;
81
- if (this.#receiveRejecter) {
82
- this.#receiveRejecter(reason);
83
- this.#receiveResolver = undefined;
84
- this.#receiveRejecter = undefined;
85
- }
86
- }
87
- }
88
- }
89
- /**
90
- * Create a capnweb RPC session over a Worker-like port.
91
- *
92
- * Returns the remote stub for calling methods on the peer's `localMain`.
93
- * Non-RPC messages (objects, not strings) are forwarded to `onTransfer`.
94
- */
95
- // biome-ignore lint/suspicious/noExplicitAny: capnweb stubs are dynamically typed proxies
96
- export function createRpcSession(init) {
97
- const transport = new WorkerPortTransport(init.port, init.onTransfer);
98
- const session = new RpcSession(transport, init.localMain, init.options);
99
- return session.getRemoteMain();
100
- }
101
- /** Type guard for {@linkcode TransferMessage}. */
102
- export function isTransferMessage(data) {
103
- return (typeof data === "object" &&
104
- data !== null &&
105
- "_t" in data &&
106
- typeof data._t === "string");
107
- }
108
- /** Send a port-transfer message with transferred MessagePorts. */
109
- export function sendTransfer(port, msg, transfer) {
110
- port.postMessage(msg, transfer);
111
- }
112
- /** Type guard: narrows unknown data (e.g. from `ev.data`) to {@linkcode BridgeMsg}. */
113
- function isBridgeMsg(data) {
114
- return (typeof data === "object" &&
115
- data !== null &&
116
- "k" in data &&
117
- typeof data.k === "number");
118
- }
119
- // ─── BridgedWebSocket (standard EventTarget-based) ───────────────────────────
120
- /**
121
- * Wraps a MessagePort as a standard WebSocket (extends EventTarget).
122
- * Used in the worker for client connections bridged from the host.
123
- */
124
- export class BridgedWebSocket extends EventTarget {
125
- readyState = 0;
126
- port;
127
- constructor(port) {
128
- super();
129
- this.port = port;
130
- port.onmessage = (ev) => {
131
- const msg = ev.data;
132
- if (!isBridgeMsg(msg))
133
- return;
134
- switch (msg.k) {
135
- case 0:
136
- this.dispatchEvent(new MessageEvent("message", { data: msg.d }));
137
- break;
138
- case 2:
139
- this.readyState = 3;
140
- this.dispatchEvent(new CloseEvent("close", {
141
- ...(msg.code !== undefined ? { code: msg.code } : {}),
142
- ...(msg.reason !== undefined ? { reason: msg.reason } : {}),
143
- }));
144
- break;
145
- case 3:
146
- this.readyState = 1;
147
- this.dispatchEvent(new Event("open"));
148
- break;
149
- case 4:
150
- this.dispatchEvent(new ErrorEvent("error", { message: msg.m }));
151
- break;
152
- }
153
- };
154
- }
155
- send(data) {
156
- if (this.readyState !== 1)
157
- return;
158
- if (typeof data === "string") {
159
- this.port.postMessage({ k: 0, d: data });
160
- }
161
- else {
162
- const ab = data instanceof ArrayBuffer
163
- ? data
164
- : data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
165
- this.port.postMessage({ k: 0, d: ab }, [ab]);
166
- }
167
- }
168
- close(code, reason) {
169
- if (this.readyState >= 2)
170
- return;
171
- this.readyState = 2;
172
- this.port.postMessage({ k: 2, code, reason });
173
- }
174
- }
175
- /**
176
- * Bridges an EventTarget-based WebSocket to a MessagePort.
177
- * Used on the host side for both client and S2S connections.
178
- */
179
- export function bridgeWebSocketToPort(ws, port, opts) {
180
- if ("binaryType" in ws)
181
- ws.binaryType = "arraybuffer";
182
- ws.addEventListener("open", () => {
183
- port.postMessage({ k: 3 });
184
- });
185
- ws.addEventListener("message", ((ev) => {
186
- const { data } = ev;
187
- if (typeof data === "string") {
188
- port.postMessage({ k: 0, d: data });
189
- }
190
- else if (data instanceof ArrayBuffer) {
191
- if (opts?.filterBinary && !opts.filterBinary(data))
192
- return;
193
- port.postMessage({ k: 0, d: data }, [data]);
194
- }
195
- }));
196
- ws.addEventListener("close", ((ev) => {
197
- port.postMessage({ k: 2, code: ev.code, reason: ev.reason });
198
- }));
199
- ws.addEventListener("error", (ev) => {
200
- const msg = ev instanceof ErrorEvent ? ev.message : "WebSocket error";
201
- port.postMessage({ k: 4, m: msg });
202
- });
203
- // Messages from worker → real WebSocket
204
- port.onmessage = (ev) => {
205
- const msg = ev.data;
206
- if (!isBridgeMsg(msg))
207
- return;
208
- switch (msg.k) {
209
- case 0:
210
- if (ws.readyState === 1)
211
- ws.send(msg.d);
212
- break;
213
- case 2:
214
- ws.close(msg.code, msg.reason);
215
- break;
216
- }
217
- };
218
- }
219
- //# sourceMappingURL=capnweb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capnweb.js","sourceRoot":"","sources":["../../sdk/capnweb.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Agent definition factory.
3
- *
4
- * @module
5
- */
6
- import { type AgentDef, type AgentOptions } from "./types.ts";
7
- /**
8
- * Create an agent definition from the given options, applying sensible defaults.
9
- *
10
- * This is the main entry point for defining a voice agent. The returned
11
- * {@linkcode AgentDef} is consumed by the AAI server at deploy time.
12
- *
13
- * @param options Configuration for the agent including name, instructions,
14
- * tools, hooks, and other settings.
15
- * @returns A fully resolved agent definition with all defaults applied.
16
- *
17
- * @example Basic agent with a custom tool
18
- * ```ts
19
- * import { defineAgent } from "aai";
20
- * import { z } from "zod";
21
- *
22
- * export default defineAgent({
23
- * name: "greeter",
24
- * instructions: "You greet people warmly.",
25
- * tools: {
26
- * greet: {
27
- * description: "Greet a user by name",
28
- * parameters: z.object({ name: z.string() }),
29
- * execute: ({ name }) => `Hello, ${name}!`,
30
- * },
31
- * },
32
- * });
33
- * ```
34
- */
35
- export declare function defineAgent<S>(options: AgentOptions<S>): AgentDef;
36
- //# sourceMappingURL=define_agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define_agent.d.ts","sourceRoot":"","sources":["../../sdk/define_agent.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EAGlB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,CAajE"}
@@ -1,71 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * Agent definition factory.
4
- *
5
- * @module
6
- */
7
- import { DEFAULT_GREETING, DEFAULT_INSTRUCTIONS, } from "./types.js";
8
- /**
9
- * Create an agent definition from the given options, applying sensible defaults.
10
- *
11
- * This is the main entry point for defining a voice agent. The returned
12
- * {@linkcode AgentDef} is consumed by the AAI server at deploy time.
13
- *
14
- * @param options Configuration for the agent including name, instructions,
15
- * tools, hooks, and other settings.
16
- * @returns A fully resolved agent definition with all defaults applied.
17
- *
18
- * @example Basic agent with a custom tool
19
- * ```ts
20
- * import { defineAgent } from "aai";
21
- * import { z } from "zod";
22
- *
23
- * export default defineAgent({
24
- * name: "greeter",
25
- * instructions: "You greet people warmly.",
26
- * tools: {
27
- * greet: {
28
- * description: "Greet a user by name",
29
- * parameters: z.object({ name: z.string() }),
30
- * execute: ({ name }) => `Hello, ${name}!`,
31
- * },
32
- * },
33
- * });
34
- * ```
35
- */
36
- export function defineAgent(options) {
37
- // AgentDef erases the S generic (it's a runtime artifact consumed by the
38
- // server which doesn't need the compile-time state type). The cast is safe
39
- // because AgentDef's hooks/tools use the same shapes with `any`/`unknown`.
40
- const def = {
41
- name: options.name,
42
- instructions: options.instructions ?? DEFAULT_INSTRUCTIONS,
43
- greeting: options.greeting ?? DEFAULT_GREETING,
44
- maxSteps: options.maxSteps ?? 5,
45
- tools: options.tools ?? {},
46
- };
47
- copyOptionalFields(options, def);
48
- return def;
49
- }
50
- const OPTIONAL_KEYS = [
51
- "sttPrompt",
52
- "toolChoice",
53
- "builtinTools",
54
- "activeTools",
55
- "state",
56
- "onConnect",
57
- "onDisconnect",
58
- "onError",
59
- "onTurn",
60
- "onStep",
61
- "onBeforeStep",
62
- ];
63
- function copyOptionalFields(src, dst) {
64
- for (const key of OPTIONAL_KEYS) {
65
- const val = src[key];
66
- if (val !== undefined) {
67
- dst[key] = val;
68
- }
69
- }
70
- }
71
- //# sourceMappingURL=define_agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define_agent.js","sourceRoot":"","sources":["../../sdk/define_agent.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;GAIG;AAEH,OAAO,EAGL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,WAAW,CAAI,OAAwB;IACrD,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,GAAG,GAAa;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,oBAAoB;QAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB;QAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;KACf,CAAC;IACd,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,YAAY;IACZ,cAAc;IACd,aAAa;IACb,OAAO;IACP,WAAW;IACX,cAAc;IACd,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,cAAc;CACN,CAAC;AAEX,SAAS,kBAAkB,CAAI,GAAoB,EAAE,GAAa;IAChE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACrB,GAA+B,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"direct_executor.d.ts","sourceRoot":"","sources":["../../sdk/direct_executor.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAuB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9E,eAAe,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,CAAC,IAAI,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;CACb,CAAC;AAEF,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAY7D;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,cAAc,CAsIhF"}
@@ -1,145 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * Direct tool execution for self-hosted mode.
4
- *
5
- * In self-hosted mode, agent code is trusted (you're running your own code).
6
- * Tools execute directly in-process — no sandbox, no RPC.
7
- *
8
- * @module
9
- */
10
- import { agentToolsToSchemas } from "./_internal_types.js";
11
- import { getBuiltinToolDefs, getBuiltinToolSchemas } from "./builtin_tools.js";
12
- import { createMemoryKv } from "./kv.js";
13
- import { consoleLogger, DEFAULT_S2S_CONFIG, noopMetrics } from "./runtime.js";
14
- import { createS2sSession } from "./session.js";
15
- import { createMemoryVectorStore } from "./vector.js";
16
- import { executeToolCall } from "./worker_entry.js";
17
- /** Build a serializable AgentConfig from an AgentDef. */
18
- export function buildAgentConfig(agent) {
19
- const config = {
20
- name: agent.name,
21
- instructions: agent.instructions,
22
- greeting: agent.greeting,
23
- };
24
- if (agent.sttPrompt !== undefined)
25
- config.sttPrompt = agent.sttPrompt;
26
- if (typeof agent.maxSteps !== "function")
27
- config.maxSteps = agent.maxSteps;
28
- if (agent.toolChoice !== undefined)
29
- config.toolChoice = agent.toolChoice;
30
- if (agent.builtinTools)
31
- config.builtinTools = [...agent.builtinTools];
32
- if (agent.activeTools)
33
- config.activeTools = [...agent.activeTools];
34
- return config;
35
- }
36
- /** Create a direct (in-process) tool executor and hook invoker for an agent. */
37
- export function createDirectExecutor(opts) {
38
- const { agent, env, kv = createMemoryKv(), vector = createMemoryVectorStore(), vectorSearch, createWebSocket, logger = consoleLogger, metrics = noopMetrics, s2sConfig = DEFAULT_S2S_CONFIG, } = opts;
39
- const agentConfig = buildAgentConfig(agent);
40
- // Merge custom + builtin tool definitions
41
- const builtinDefs = getBuiltinToolDefs(agent.builtinTools ?? [], vectorSearch ? { vectorSearch } : undefined);
42
- const allTools = {
43
- ...builtinDefs,
44
- ...agent.tools,
45
- };
46
- // Build tool schemas for the S2S API
47
- const customSchemas = agentToolsToSchemas(agent.tools ?? {});
48
- const builtinSchemas = getBuiltinToolSchemas(agent.builtinTools ?? []);
49
- const toolSchemas = [...customSchemas, ...builtinSchemas];
50
- // Per-session mutable state
51
- const sessionState = new Map();
52
- const frozenEnv = Object.freeze({ ...env });
53
- function getState(sessionId) {
54
- if (!sessionState.has(sessionId) && agent.state) {
55
- sessionState.set(sessionId, agent.state());
56
- }
57
- return sessionState.get(sessionId) ?? {};
58
- }
59
- function makeHookContext(sessionId) {
60
- return {
61
- env: frozenEnv,
62
- state: getState(sessionId),
63
- get kv() {
64
- return kv;
65
- },
66
- get vector() {
67
- return vector;
68
- },
69
- };
70
- }
71
- const executeTool = async (name, args, sessionId, messages) => {
72
- const tool = allTools[name];
73
- if (!tool)
74
- return JSON.stringify({ error: `Unknown tool: ${name}` });
75
- return executeToolCall(name, args, {
76
- tool,
77
- env: frozenEnv,
78
- state: getState(sessionId ?? ""),
79
- kv,
80
- vector,
81
- messages,
82
- });
83
- };
84
- const hookInvoker = {
85
- async onConnect(sessionId) {
86
- await agent.onConnect?.(makeHookContext(sessionId));
87
- },
88
- async onDisconnect(sessionId) {
89
- await agent.onDisconnect?.(makeHookContext(sessionId));
90
- sessionState.delete(sessionId);
91
- },
92
- async onTurn(sessionId, text) {
93
- await agent.onTurn?.(text, makeHookContext(sessionId));
94
- },
95
- async onError(sessionId, error) {
96
- await agent.onError?.(new Error(error.message), makeHookContext(sessionId));
97
- },
98
- async onStep(sessionId, step) {
99
- await agent.onStep?.(step, makeHookContext(sessionId));
100
- },
101
- async resolveTurnConfig(sessionId) {
102
- const ctx = makeHookContext(sessionId);
103
- let maxSteps;
104
- let activeTools;
105
- if (typeof agent.maxSteps === "function") {
106
- maxSteps = (await agent.maxSteps(ctx)) ?? undefined;
107
- }
108
- if (agent.onBeforeStep) {
109
- const result = await agent.onBeforeStep(0, ctx);
110
- activeTools = result?.activeTools;
111
- }
112
- if (maxSteps === undefined && activeTools === undefined)
113
- return null;
114
- const config = {};
115
- if (maxSteps !== undefined)
116
- config.maxSteps = maxSteps;
117
- if (activeTools !== undefined)
118
- config.activeTools = activeTools;
119
- return config;
120
- },
121
- };
122
- function createSession(sessionOpts) {
123
- if (!createWebSocket) {
124
- throw new Error("createWebSocket not provided — pass it in DirectExecutorOptions");
125
- }
126
- const apiKey = frozenEnv.ASSEMBLYAI_API_KEY ?? "";
127
- return createS2sSession({
128
- id: sessionOpts.id,
129
- agent: sessionOpts.agent,
130
- client: sessionOpts.client,
131
- agentConfig,
132
- toolSchemas,
133
- apiKey,
134
- s2sConfig,
135
- executeTool,
136
- createWebSocket,
137
- hookInvoker,
138
- skipGreeting: sessionOpts.skipGreeting ?? false,
139
- logger,
140
- metrics,
141
- });
142
- }
143
- return { executeTool, hookInvoker, toolSchemas, createSession };
144
- }
145
- //# sourceMappingURL=direct_executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"direct_executor.js","sourceRoot":"","sources":["../../sdk/direct_executor.ts"],"names":[],"mappings":"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"}