@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,303 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- /**
3
- * S2S session — relays audio between the client and AssemblyAI's
4
- * Speech-to-Speech API, intercepting only tool calls for local execution.
5
- *
6
- * Cross-runtime: accepts Logger, Metrics, and a WebSocket factory via
7
- * dependency injection.
8
- *
9
- * @module
10
- */
11
- import { errorMessage } from "./_utils.js";
12
- import { HOOK_TIMEOUT_MS } from "./protocol.js";
13
- import { consoleLogger, noopMetrics } from "./runtime.js";
14
- import { connectS2s, } from "./s2s.js";
15
- import { DEFAULT_INSTRUCTIONS } from "./types.js";
16
- export const _internals = {
17
- connectS2s,
18
- };
19
- /** Create an S2S-backed session with the same interface as the STT+LLM+TTS session. */
20
- export function createS2sSession(opts) {
21
- const { id, agent, client, toolSchemas, apiKey, s2sConfig, executeTool, createWebSocket, hookInvoker, logger: log = consoleLogger, metrics = noopMetrics, } = opts;
22
- const agentLabel = { agent };
23
- const agentConfig = opts.skipGreeting ? { ...opts.agentConfig, greeting: "" } : opts.agentConfig;
24
- // Build system prompt
25
- const hasTools = toolSchemas.length > 0 || (agentConfig.builtinTools?.length ?? 0) > 0;
26
- const systemPrompt = buildSystemPrompt(agentConfig, {
27
- hasTools,
28
- voice: true,
29
- });
30
- // toolSchemas already includes both agent-defined and builtin tools
31
- const s2sTools = toolSchemas.map((ts) => ({
32
- type: "function",
33
- name: ts.name,
34
- description: ts.description,
35
- parameters: ts.parameters,
36
- }));
37
- let s2s = null;
38
- const sessionAbort = new AbortController();
39
- let toolCallCount = 0;
40
- let turnPromise = null;
41
- let conversationMessages = [];
42
- let pendingTools = [];
43
- async function resolveTurnConfig() {
44
- if (!hookInvoker)
45
- return null;
46
- try {
47
- return await hookInvoker.resolveTurnConfig(id, HOOK_TIMEOUT_MS);
48
- }
49
- catch (err) {
50
- log.warn("resolveTurnConfig hook failed", { err: errorMessage(err) });
51
- return null;
52
- }
53
- }
54
- function invokeHook(hook, arg) {
55
- if (!hookInvoker)
56
- return;
57
- try {
58
- // biome-ignore lint/complexity/noBannedTypes: dynamic hook dispatch
59
- const h = hookInvoker[hook];
60
- Promise.resolve(h.call(hookInvoker, id, arg, HOOK_TIMEOUT_MS)).catch((err) => {
61
- log.warn(`${hook} hook failed`, { err: errorMessage(err) });
62
- });
63
- }
64
- catch (err) {
65
- log.warn(`${hook} hook failed`, { err: errorMessage(err) });
66
- }
67
- }
68
- /** Check if a tool call should be refused due to turn config limits. Returns a result string to short-circuit, or null. */
69
- function checkTurnLimits(turnConfig, name) {
70
- const maxSteps = turnConfig?.maxSteps ?? agentConfig.maxSteps;
71
- toolCallCount++;
72
- if (maxSteps !== undefined && toolCallCount > maxSteps) {
73
- log.info("maxSteps exceeded, refusing tool call", { toolCallCount, maxSteps });
74
- return "Maximum tool steps reached. Please respond to the user now.";
75
- }
76
- if (turnConfig?.activeTools && !turnConfig.activeTools.includes(name)) {
77
- log.info("Tool filtered by activeTools", { name });
78
- return JSON.stringify({ error: `Tool "${name}" is not available at this step.` });
79
- }
80
- return null;
81
- }
82
- async function handleToolCall(detail) {
83
- const { call_id, name, args: parsedArgs } = detail;
84
- // Emit tool_call_start to client
85
- client.event({
86
- type: "tool_call_start",
87
- toolCallId: call_id,
88
- toolName: name,
89
- args: parsedArgs,
90
- });
91
- // Resolve turn config for maxSteps / activeTools
92
- const turnConfig = await resolveTurnConfig();
93
- const refused = checkTurnLimits(turnConfig, name);
94
- if (refused !== null) {
95
- pendingTools.push({ call_id, result: refused });
96
- client.event({ type: "tool_call_done", toolCallId: call_id, result: refused });
97
- return;
98
- }
99
- // Fire onStep hook
100
- invokeHook("onStep", {
101
- stepNumber: toolCallCount - 1,
102
- toolCalls: [{ toolName: name, args: parsedArgs }],
103
- text: "",
104
- });
105
- log.info("S2S tool call", { tool: name, call_id, args: parsedArgs, agent });
106
- // Execute — all tools (custom + builtin) run via the executor
107
- let result;
108
- try {
109
- result = await executeTool(name, parsedArgs, id, conversationMessages);
110
- }
111
- catch (err) {
112
- const msg = errorMessage(err);
113
- log.error("Tool execution failed", { tool: name, error: msg });
114
- result = JSON.stringify({ error: msg });
115
- }
116
- log.info("S2S tool result", {
117
- tool: name,
118
- call_id,
119
- resultLength: result.length,
120
- });
121
- // Accumulate — don't send yet. Results are sent after reply.done.
122
- pendingTools.push({ call_id, result });
123
- client.event({ type: "tool_call_done", toolCallId: call_id, result });
124
- }
125
- /** Register a typed CustomEvent listener, consolidating the EventListener cast. */
126
- function on(target, event, handler) {
127
- target.addEventListener(event, handler);
128
- }
129
- /** Wire all S2S events to the client sink, hooks, and session state. */
130
- function setupListeners(handle) {
131
- on(handle, "ready", (e) => {
132
- log.info("S2S session ready", { session_id: e.detail.session_id });
133
- });
134
- on(handle, "session_expired", () => {
135
- log.info("S2S session expired");
136
- handle.close();
137
- });
138
- // Simple event forwarding
139
- for (const type of ["speech_started", "speech_stopped"]) {
140
- handle.addEventListener(type, () => client.event({ type }));
141
- }
142
- on(handle, "user_transcript_delta", (e) => {
143
- client.event({ type: "transcript", text: e.detail.text, isFinal: false });
144
- });
145
- on(handle, "user_transcript", (e) => {
146
- const { text } = e.detail;
147
- log.info("S2S user transcript", { text });
148
- client.event({ type: "transcript", text, isFinal: true });
149
- client.event({ type: "turn", text });
150
- conversationMessages.push({ role: "user", content: text });
151
- invokeHook("onTurn", text);
152
- });
153
- handle.addEventListener("reply_started", () => {
154
- toolCallCount = 0;
155
- });
156
- on(handle, "audio", (e) => {
157
- client.playAudioChunk(e.detail.audio);
158
- });
159
- on(handle, "agent_transcript_delta", (e) => {
160
- client.event({ type: "chat_delta", text: e.detail.text });
161
- });
162
- on(handle, "agent_transcript", (e) => {
163
- const { text } = e.detail;
164
- client.event({ type: "chat", text });
165
- conversationMessages.push({ role: "assistant", content: text });
166
- });
167
- on(handle, "tool_call", (e) => {
168
- const p = handleToolCall(e.detail).catch((err) => {
169
- log.error("Tool call handler failed", { err: errorMessage(err) });
170
- });
171
- turnPromise = (turnPromise ?? Promise.resolve()).then(() => p);
172
- });
173
- on(handle, "reply_done", (e) => {
174
- if (e.detail.status === "interrupted") {
175
- log.info("S2S reply interrupted (barge-in)");
176
- pendingTools = [];
177
- client.event({ type: "cancelled" });
178
- }
179
- else if (pendingTools.length > 0) {
180
- for (const tool of pendingTools)
181
- s2s?.sendToolResult(tool.call_id, tool.result);
182
- pendingTools = [];
183
- }
184
- else {
185
- client.playAudioDone();
186
- client.event({ type: "tts_done" });
187
- }
188
- });
189
- on(handle, "error", (e) => {
190
- log.error("S2S error", { code: e.detail.code, message: e.detail.message });
191
- client.event({ type: "error", code: "internal", message: e.detail.message });
192
- handle.close();
193
- });
194
- handle.addEventListener("close", () => {
195
- log.info("S2S closed");
196
- s2s = null;
197
- });
198
- }
199
- async function connectAndSetup() {
200
- try {
201
- const handle = await _internals.connectS2s({
202
- apiKey,
203
- config: s2sConfig,
204
- createWebSocket,
205
- logger: log,
206
- });
207
- // Register all listeners BEFORE sending messages to avoid races.
208
- setupListeners(handle);
209
- handle.updateSession({
210
- system_prompt: systemPrompt,
211
- tools: s2sTools,
212
- ...(agentConfig.greeting ? { greeting: agentConfig.greeting } : {}),
213
- });
214
- s2s = handle;
215
- }
216
- catch (err) {
217
- const msg = errorMessage(err);
218
- log.error("S2S connect failed", { error: msg });
219
- client.event({ type: "error", code: "internal", message: msg });
220
- }
221
- }
222
- return {
223
- async start() {
224
- metrics.sessionsTotal.inc(agentLabel);
225
- metrics.sessionsActive.inc(agentLabel);
226
- invokeHook("onConnect");
227
- await connectAndSetup();
228
- },
229
- async stop() {
230
- if (sessionAbort.signal.aborted)
231
- return;
232
- sessionAbort.abort();
233
- metrics.sessionsActive.dec(agentLabel);
234
- if (turnPromise)
235
- await turnPromise;
236
- s2s?.close();
237
- invokeHook("onDisconnect");
238
- },
239
- onAudio(data) {
240
- s2s?.sendAudio(data);
241
- },
242
- onAudioReady() {
243
- // S2S mode: greeting audio comes from S2S automatically. No-op.
244
- },
245
- onCancel() {
246
- // S2S handles barge-in natively.
247
- client.event({ type: "cancelled" });
248
- },
249
- onReset() {
250
- conversationMessages = [];
251
- toolCallCount = 0;
252
- turnPromise = null;
253
- pendingTools = [];
254
- s2s?.close();
255
- client.event({ type: "reset" });
256
- connectAndSetup().catch((err) => {
257
- log.error("S2S reset reconnect failed", { error: errorMessage(err) });
258
- });
259
- },
260
- onHistory(incoming) {
261
- for (const msg of incoming) {
262
- conversationMessages.push({ role: msg.role, content: msg.text });
263
- }
264
- },
265
- waitForTurn() {
266
- return turnPromise ?? Promise.resolve();
267
- },
268
- };
269
- }
270
- // ─── System prompt builder ──────────────────────────────────────────────────
271
- const VOICE_RULES = "\n\nCRITICAL OUTPUT RULES — you MUST follow these for EVERY response:\n" +
272
- "Your response will be spoken aloud by a TTS system and displayed as plain text.\n" +
273
- "- NEVER use markdown: no **, no *, no _, no #, no `, no [](), no ---\n" +
274
- "- NEVER use bullet points (-, *, •) or numbered lists (1., 2.)\n" +
275
- "- NEVER use code blocks or inline code\n" +
276
- "- NEVER mention tools, search, APIs, or technical failures to the user. " +
277
- "If a tool returns no results, just answer naturally without explaining why.\n" +
278
- "- Write exactly as you would say it out loud to a friend\n" +
279
- '- Use short conversational sentences. To list things, say "First," "Next," "Finally,"\n' +
280
- "- Keep responses concise — 1 to 3 sentences max";
281
- export function buildSystemPrompt(config, opts) {
282
- const { hasTools } = opts;
283
- const agentInstructions = config.instructions && config.instructions !== DEFAULT_INSTRUCTIONS
284
- ? `\n\nAgent-Specific Instructions:\n${config.instructions}`
285
- : "";
286
- const toolPreamble = hasTools
287
- ? "\n\nWhen you decide to use a tool, ALWAYS say a brief natural phrase BEFORE the tool call " +
288
- '(e.g. "Let me look that up" or "One moment while I check"). ' +
289
- "This fills silence while the tool executes. Keep preambles to one short sentence."
290
- : "";
291
- const today = new Date().toLocaleDateString("en-US", {
292
- weekday: "long",
293
- year: "numeric",
294
- month: "long",
295
- day: "numeric",
296
- });
297
- return (DEFAULT_INSTRUCTIONS +
298
- `\n\nToday's date is ${today}.` +
299
- agentInstructions +
300
- toolPreamble +
301
- (opts.voice ? VOICE_RULES : ""));
302
- }
303
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../sdk/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { AgentConfig } from "./_internal_types.ts";
2
- export declare function buildSystemPrompt(config: AgentConfig, opts: {
3
- hasTools: boolean;
4
- voice?: boolean;
5
- }): string;
6
- //# sourceMappingURL=system_prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system_prompt.d.ts","sourceRoot":"","sources":["../../sdk/system_prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,MAAM,CA2BR"}
@@ -1,35 +0,0 @@
1
- // Copyright 2025 the AAI authors. MIT license.
2
- import { DEFAULT_INSTRUCTIONS } from "./types.js";
3
- const VOICE_RULES = "\n\nCRITICAL OUTPUT RULES — you MUST follow these for EVERY response:\n" +
4
- "Your response will be spoken aloud by a TTS system and displayed as plain text.\n" +
5
- "- NEVER use markdown: no **, no *, no _, no #, no `, no [](), no ---\n" +
6
- "- NEVER use bullet points (-, *, •) or numbered lists (1., 2.)\n" +
7
- "- NEVER use code blocks or inline code\n" +
8
- "- NEVER mention tools, search, APIs, or technical failures to the user. " +
9
- "If a tool returns no results, just answer naturally without explaining why.\n" +
10
- "- Write exactly as you would say it out loud to a friend\n" +
11
- '- Use short conversational sentences. To list things, say "First," "Next," "Finally,"\n' +
12
- "- Keep responses concise — 1 to 3 sentences max";
13
- export function buildSystemPrompt(config, opts) {
14
- const { hasTools } = opts;
15
- const agentInstructions = config.instructions && config.instructions !== DEFAULT_INSTRUCTIONS
16
- ? `\n\nAgent-Specific Instructions:\n${config.instructions}`
17
- : "";
18
- const toolPreamble = hasTools
19
- ? "\n\nWhen you decide to use a tool, ALWAYS say a brief natural phrase BEFORE the tool call " +
20
- '(e.g. "Let me look that up" or "One moment while I check"). ' +
21
- "This fills silence while the tool executes. Keep preambles to one short sentence."
22
- : "";
23
- const today = new Date().toLocaleDateString("en-US", {
24
- weekday: "long",
25
- year: "numeric",
26
- month: "long",
27
- day: "numeric",
28
- });
29
- return (DEFAULT_INSTRUCTIONS +
30
- `\n\nToday's date is ${today}.` +
31
- agentInstructions +
32
- toolPreamble +
33
- (opts?.voice ? VOICE_RULES : ""));
34
- }
35
- //# sourceMappingURL=system_prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system_prompt.js","sourceRoot":"","sources":["../../sdk/system_prompt.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,GACf,yEAAyE;IACzE,mFAAmF;IACnF,wEAAwE;IACxE,kEAAkE;IAClE,0CAA0C;IAC1C,0EAA0E;IAC1E,+EAA+E;IAC/E,4DAA4D;IAC5D,yFAAyF;IACzF,iDAAiD,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,IAA4C;IAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,MAAM,iBAAiB,GACrB,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,oBAAoB;QACjE,CAAC,CAAC,qCAAqC,MAAM,CAAC,YAAY,EAAE;QAC5D,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,4FAA4F;YAC5F,8DAA8D;YAC9D,mFAAmF;QACrF,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnD,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IAEH,OAAO,CACL,oBAAoB;QACpB,uBAAuB,KAAK,GAAG;QAC/B,iBAAiB;QACjB,YAAY;QACZ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CACjC,CAAC;AACJ,CAAC"}