@alexkroman1/aai 0.7.4 → 0.7.6
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.
- package/dist/cli.js +148 -99
- package/dist/sdk/builtin_tools.d.ts.map +1 -1
- package/dist/sdk/builtin_tools.js +7 -17
- package/dist/sdk/builtin_tools.js.map +1 -1
- package/dist/sdk/capnweb.d.ts +4 -0
- package/dist/sdk/capnweb.d.ts.map +1 -1
- package/dist/sdk/capnweb.js +39 -1
- package/dist/sdk/capnweb.js.map +1 -1
- package/dist/sdk/kv.d.ts.map +1 -1
- package/dist/sdk/kv.js +5 -2
- package/dist/sdk/kv.js.map +1 -1
- package/dist/sdk/s2s.d.ts +2 -0
- package/dist/sdk/s2s.d.ts.map +1 -1
- package/dist/sdk/s2s.js +46 -26
- package/dist/sdk/s2s.js.map +1 -1
- package/dist/sdk/session.d.ts.map +1 -1
- package/dist/sdk/session.js +56 -48
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/vector.d.ts.map +1 -1
- package/dist/sdk/vector.js +6 -4
- package/dist/sdk/vector.js.map +1 -1
- package/dist/sdk/worker_entry.d.ts.map +1 -1
- package/dist/sdk/worker_entry.js +4 -0
- package/dist/sdk/worker_entry.js.map +1 -1
- package/dist/sdk/ws_handler.d.ts.map +1 -1
- package/dist/sdk/ws_handler.js +13 -9
- package/dist/sdk/ws_handler.js.map +1 -1
- package/dist/ui/session.d.ts.map +1 -1
- package/dist/ui/session.js +14 -11
- package/dist/ui/session.js.map +1 -1
- package/dist/ui/signals.d.ts +1 -1
- package/dist/ui/signals.d.ts.map +1 -1
- package/package.json +4 -2
package/dist/cli.js
CHANGED
|
@@ -15,13 +15,13 @@ function primary(s) {
|
|
|
15
15
|
return chalk.hex("#fab283")(s);
|
|
16
16
|
}
|
|
17
17
|
function interactive(s) {
|
|
18
|
-
return chalk.hex("#
|
|
18
|
+
return chalk.hex("#56b6c2")(s);
|
|
19
19
|
}
|
|
20
20
|
function error(s) {
|
|
21
|
-
return chalk.hex("#
|
|
21
|
+
return chalk.hex("#e06c75")(s);
|
|
22
22
|
}
|
|
23
23
|
function warning(s) {
|
|
24
|
-
return chalk.hex("#
|
|
24
|
+
return chalk.hex("#f5a742")(s);
|
|
25
25
|
}
|
|
26
26
|
var init_colors = __esm({
|
|
27
27
|
"cli/_colors.ts"() {
|
|
@@ -320,9 +320,10 @@ var init_internal_types = __esm({
|
|
|
320
320
|
});
|
|
321
321
|
|
|
322
322
|
// dist/sdk/builtin_tools.js
|
|
323
|
+
import { convert } from "html-to-text";
|
|
323
324
|
import { z as z3 } from "zod";
|
|
324
325
|
function htmlToText(html) {
|
|
325
|
-
return html
|
|
326
|
+
return convert(html, { wordwrap: false });
|
|
326
327
|
}
|
|
327
328
|
function createWebSearch() {
|
|
328
329
|
return {
|
|
@@ -425,11 +426,15 @@ function createRunCode() {
|
|
|
425
426
|
error: capture,
|
|
426
427
|
debug: capture
|
|
427
428
|
};
|
|
429
|
+
const RUN_CODE_TIMEOUT = 5e3;
|
|
428
430
|
const AsyncFunction = Object.getPrototypeOf(async () => {
|
|
429
431
|
}).constructor;
|
|
430
432
|
try {
|
|
431
433
|
const fn = new AsyncFunction("console", code);
|
|
432
|
-
await
|
|
434
|
+
await Promise.race([
|
|
435
|
+
fn(fakeConsole),
|
|
436
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error("Code execution timed out")), RUN_CODE_TIMEOUT))
|
|
437
|
+
]);
|
|
433
438
|
const result = output.join("\n").trim();
|
|
434
439
|
return result || "Code ran successfully (no output)";
|
|
435
440
|
} catch (err) {
|
|
@@ -576,10 +581,13 @@ function createMemoryKv() {
|
|
|
576
581
|
store.delete(key);
|
|
577
582
|
return Promise.resolve();
|
|
578
583
|
},
|
|
579
|
-
list(prefix, options) {
|
|
584
|
+
async list(prefix, options) {
|
|
580
585
|
const now = Date.now();
|
|
581
586
|
const entries = [];
|
|
587
|
+
let i = 0;
|
|
582
588
|
for (const [key, entry] of store) {
|
|
589
|
+
if (++i % 500 === 0)
|
|
590
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
583
591
|
if (entry.expiresAt && entry.expiresAt <= now) {
|
|
584
592
|
store.delete(key);
|
|
585
593
|
continue;
|
|
@@ -588,7 +596,7 @@ function createMemoryKv() {
|
|
|
588
596
|
entries.push({ key, value: JSON.parse(entry.raw) });
|
|
589
597
|
}
|
|
590
598
|
}
|
|
591
|
-
return
|
|
599
|
+
return sortAndPaginate(entries, options);
|
|
592
600
|
}
|
|
593
601
|
};
|
|
594
602
|
}
|
|
@@ -603,20 +611,11 @@ var init_kv = __esm({
|
|
|
603
611
|
// dist/sdk/s2s.js
|
|
604
612
|
import { z as z4 } from "zod";
|
|
605
613
|
function uint8ToBase64(bytes) {
|
|
606
|
-
|
|
607
|
-
const parts = [];
|
|
608
|
-
for (let i = 0; i < bytes.length; i += CHUNK) {
|
|
609
|
-
parts.push(String.fromCharCode(...bytes.subarray(i, i + CHUNK)));
|
|
610
|
-
}
|
|
611
|
-
return btoa(parts.join(""));
|
|
614
|
+
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString("base64");
|
|
612
615
|
}
|
|
613
616
|
function base64ToUint8(base64) {
|
|
614
|
-
const
|
|
615
|
-
|
|
616
|
-
for (let i = 0; i < binary.length; i++) {
|
|
617
|
-
bytes[i] = binary.charCodeAt(i);
|
|
618
|
-
}
|
|
619
|
-
return bytes;
|
|
617
|
+
const buf = Buffer.from(base64, "base64");
|
|
618
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
620
619
|
}
|
|
621
620
|
function dispatchS2sMessage(target, msg) {
|
|
622
621
|
switch (msg.type) {
|
|
@@ -652,11 +651,7 @@ function dispatchS2sMessage(target, msg) {
|
|
|
652
651
|
detail: { reply_id: msg.reply_id }
|
|
653
652
|
}));
|
|
654
653
|
break;
|
|
655
|
-
|
|
656
|
-
const audioBytes = base64ToUint8(msg.data);
|
|
657
|
-
target.dispatchEvent(new CustomEvent("audio", { detail: { audio: audioBytes } }));
|
|
658
|
-
break;
|
|
659
|
-
}
|
|
654
|
+
// reply.audio handled on the fast path — never reaches dispatch.
|
|
660
655
|
case "transcript.agent":
|
|
661
656
|
target.dispatchEvent(new CustomEvent("agent_transcript", {
|
|
662
657
|
detail: { text: msg.text }
|
|
@@ -683,6 +678,11 @@ function dispatchS2sMessage(target, msg) {
|
|
|
683
678
|
}));
|
|
684
679
|
break;
|
|
685
680
|
}
|
|
681
|
+
case "error":
|
|
682
|
+
target.dispatchEvent(new CustomEvent("error", {
|
|
683
|
+
detail: { code: "connection", message: msg.message }
|
|
684
|
+
}));
|
|
685
|
+
break;
|
|
686
686
|
}
|
|
687
687
|
}
|
|
688
688
|
function connectS2s(opts) {
|
|
@@ -697,14 +697,22 @@ function connectS2s(opts) {
|
|
|
697
697
|
function send(msg) {
|
|
698
698
|
if (ws.readyState !== WS_OPEN)
|
|
699
699
|
return;
|
|
700
|
+
const json = JSON.stringify(msg);
|
|
700
701
|
if (msg.type !== "input.audio") {
|
|
701
|
-
log.
|
|
702
|
+
log.debug(`S2S >> ${msg.type}`);
|
|
702
703
|
}
|
|
703
|
-
ws.send(
|
|
704
|
+
ws.send(json);
|
|
704
705
|
}
|
|
705
706
|
const handle = Object.assign(target, {
|
|
706
707
|
sendAudio(audio) {
|
|
707
|
-
|
|
708
|
+
if (ws.readyState !== WS_OPEN)
|
|
709
|
+
return;
|
|
710
|
+
if (ws.sendBinary) {
|
|
711
|
+
const ab = audio.buffer.slice(audio.byteOffset, audio.byteOffset + audio.byteLength);
|
|
712
|
+
ws.sendBinary(ab);
|
|
713
|
+
} else {
|
|
714
|
+
ws.send(`{"type":"input.audio","audio":"${uint8ToBase64(audio)}"}`);
|
|
715
|
+
}
|
|
708
716
|
},
|
|
709
717
|
sendToolResult(callId, result) {
|
|
710
718
|
send({ type: "tool.result", call_id: callId, result });
|
|
@@ -725,6 +733,10 @@ function connectS2s(opts) {
|
|
|
725
733
|
log.info("S2S WebSocket open");
|
|
726
734
|
resolve(handle);
|
|
727
735
|
});
|
|
736
|
+
ws.on("audio", (data) => {
|
|
737
|
+
const ab = data;
|
|
738
|
+
target.dispatchEvent(new CustomEvent("audio", { detail: { audio: new Uint8Array(ab) } }));
|
|
739
|
+
});
|
|
728
740
|
ws.on("message", (data) => {
|
|
729
741
|
let raw;
|
|
730
742
|
try {
|
|
@@ -732,15 +744,19 @@ function connectS2s(opts) {
|
|
|
732
744
|
} catch {
|
|
733
745
|
return;
|
|
734
746
|
}
|
|
747
|
+
const obj = raw;
|
|
748
|
+
if (obj.type === "reply.audio" && typeof obj.data === "string") {
|
|
749
|
+
const audioBytes = base64ToUint8(obj.data);
|
|
750
|
+
target.dispatchEvent(new CustomEvent("audio", { detail: { audio: audioBytes } }));
|
|
751
|
+
return;
|
|
752
|
+
}
|
|
735
753
|
const parsed = S2sServerMessageSchema.safeParse(raw);
|
|
736
754
|
if (!parsed.success) {
|
|
737
|
-
log.
|
|
755
|
+
log.debug("S2S << unrecognised message type");
|
|
738
756
|
return;
|
|
739
757
|
}
|
|
740
758
|
const msg = parsed.data;
|
|
741
|
-
|
|
742
|
-
log.info(`S2S << ${JSON.stringify(msg)}`);
|
|
743
|
-
}
|
|
759
|
+
log.debug(`S2S << ${msg.type}`);
|
|
744
760
|
dispatchS2sMessage(target, msg);
|
|
745
761
|
});
|
|
746
762
|
ws.on("close", (code, reason) => {
|
|
@@ -781,7 +797,7 @@ var init_s2s = __esm({
|
|
|
781
797
|
text: z4.string()
|
|
782
798
|
}),
|
|
783
799
|
z4.object({ type: z4.literal("reply.started"), reply_id: z4.string() }),
|
|
784
|
-
|
|
800
|
+
// reply.audio is handled on the fast path before Zod — see message handler.
|
|
785
801
|
z4.object({ type: z4.literal("transcript.agent"), text: z4.string() }),
|
|
786
802
|
z4.object({
|
|
787
803
|
type: z4.literal("tool.call"),
|
|
@@ -797,6 +813,11 @@ var init_s2s = __esm({
|
|
|
797
813
|
type: z4.literal("session.error"),
|
|
798
814
|
code: z4.string(),
|
|
799
815
|
message: z4.string()
|
|
816
|
+
}),
|
|
817
|
+
// Connection-level error (bare "error" without "session." prefix).
|
|
818
|
+
z4.object({
|
|
819
|
+
type: z4.literal("error"),
|
|
820
|
+
message: z4.string()
|
|
800
821
|
})
|
|
801
822
|
]);
|
|
802
823
|
}
|
|
@@ -871,6 +892,8 @@ function createS2sSession(opts) {
|
|
|
871
892
|
let turnPromise = null;
|
|
872
893
|
let conversationMessages = [];
|
|
873
894
|
let s2sSessionId = null;
|
|
895
|
+
let connecting = false;
|
|
896
|
+
let pendingReconnect = false;
|
|
874
897
|
let pendingTools = [];
|
|
875
898
|
async function resolveTurnConfig() {
|
|
876
899
|
if (!hookInvoker)
|
|
@@ -909,6 +932,19 @@ function createS2sSession(opts) {
|
|
|
909
932
|
});
|
|
910
933
|
});
|
|
911
934
|
}
|
|
935
|
+
function checkTurnLimits(turnConfig, name) {
|
|
936
|
+
const maxSteps = turnConfig?.maxSteps ?? agentConfig.maxSteps;
|
|
937
|
+
toolCallCount++;
|
|
938
|
+
if (maxSteps !== void 0 && toolCallCount > maxSteps) {
|
|
939
|
+
log.info("maxSteps exceeded, refusing tool call", { toolCallCount, maxSteps });
|
|
940
|
+
return "Maximum tool steps reached. Please respond to the user now.";
|
|
941
|
+
}
|
|
942
|
+
if (turnConfig?.activeTools && !turnConfig.activeTools.includes(name)) {
|
|
943
|
+
log.info("Tool filtered by activeTools", { name });
|
|
944
|
+
return JSON.stringify({ error: `Tool "${name}" is not available at this step.` });
|
|
945
|
+
}
|
|
946
|
+
return null;
|
|
947
|
+
}
|
|
912
948
|
async function handleToolCall(detail) {
|
|
913
949
|
const { call_id, name, args: parsedArgs } = detail;
|
|
914
950
|
client.event({
|
|
@@ -918,31 +954,10 @@ function createS2sSession(opts) {
|
|
|
918
954
|
args: parsedArgs
|
|
919
955
|
});
|
|
920
956
|
const turnConfig = await resolveTurnConfig();
|
|
921
|
-
const
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
toolCallCount,
|
|
926
|
-
maxSteps
|
|
927
|
-
});
|
|
928
|
-
pendingTools.push({
|
|
929
|
-
call_id,
|
|
930
|
-
result: "Maximum tool steps reached. Please respond to the user now."
|
|
931
|
-
});
|
|
932
|
-
client.event({ type: "tool_call_done", toolCallId: call_id, result: "" });
|
|
933
|
-
return;
|
|
934
|
-
}
|
|
935
|
-
if (turnConfig?.activeTools && !turnConfig.activeTools.includes(name)) {
|
|
936
|
-
log.info("Tool filtered by activeTools", { name });
|
|
937
|
-
const errResult = JSON.stringify({
|
|
938
|
-
error: `Tool "${name}" is not available at this step.`
|
|
939
|
-
});
|
|
940
|
-
pendingTools.push({ call_id, result: errResult });
|
|
941
|
-
client.event({
|
|
942
|
-
type: "tool_call_done",
|
|
943
|
-
toolCallId: call_id,
|
|
944
|
-
result: errResult
|
|
945
|
-
});
|
|
957
|
+
const refused = checkTurnLimits(turnConfig, name);
|
|
958
|
+
if (refused !== null) {
|
|
959
|
+
pendingTools.push({ call_id, result: refused });
|
|
960
|
+
client.event({ type: "tool_call_done", toolCallId: call_id, result: refused });
|
|
946
961
|
return;
|
|
947
962
|
}
|
|
948
963
|
invokeHook("onStep", {
|
|
@@ -971,6 +986,11 @@ function createS2sSession(opts) {
|
|
|
971
986
|
target.addEventListener(event, handler);
|
|
972
987
|
}
|
|
973
988
|
async function connectAndSetup() {
|
|
989
|
+
if (connecting) {
|
|
990
|
+
pendingReconnect = true;
|
|
991
|
+
return;
|
|
992
|
+
}
|
|
993
|
+
connecting = true;
|
|
974
994
|
try {
|
|
975
995
|
const handle = await _internals3.connectS2s({
|
|
976
996
|
apiKey,
|
|
@@ -978,18 +998,6 @@ function createS2sSession(opts) {
|
|
|
978
998
|
createWebSocket,
|
|
979
999
|
logger: log
|
|
980
1000
|
});
|
|
981
|
-
if (s2sSessionId) {
|
|
982
|
-
log.info("Attempting S2S session resume", {
|
|
983
|
-
session_id: s2sSessionId
|
|
984
|
-
});
|
|
985
|
-
handle.resumeSession(s2sSessionId);
|
|
986
|
-
} else {
|
|
987
|
-
handle.updateSession({
|
|
988
|
-
system_prompt: systemPrompt,
|
|
989
|
-
tools: s2sTools,
|
|
990
|
-
...agentConfig.greeting ? { greeting: agentConfig.greeting } : {}
|
|
991
|
-
});
|
|
992
|
-
}
|
|
993
1001
|
on(handle, "ready", (e) => {
|
|
994
1002
|
s2sSessionId = e.detail.session_id;
|
|
995
1003
|
log.info("S2S session ready", { session_id: s2sSessionId });
|
|
@@ -1037,10 +1045,7 @@ function createS2sSession(opts) {
|
|
|
1037
1045
|
err: err instanceof Error ? err.message : String(err)
|
|
1038
1046
|
});
|
|
1039
1047
|
});
|
|
1040
|
-
|
|
1041
|
-
turnPromise = (prev ?? Promise.resolve()).then(() => p).finally(() => {
|
|
1042
|
-
turnPromise = null;
|
|
1043
|
-
});
|
|
1048
|
+
turnPromise = (turnPromise ?? Promise.resolve()).then(() => p);
|
|
1044
1049
|
});
|
|
1045
1050
|
on(handle, "reply_done", (e) => {
|
|
1046
1051
|
if (e.detail.status === "interrupted") {
|
|
@@ -1079,11 +1084,32 @@ function createS2sSession(opts) {
|
|
|
1079
1084
|
});
|
|
1080
1085
|
}
|
|
1081
1086
|
});
|
|
1087
|
+
if (s2sSessionId) {
|
|
1088
|
+
log.info("Attempting S2S session resume", {
|
|
1089
|
+
session_id: s2sSessionId
|
|
1090
|
+
});
|
|
1091
|
+
handle.resumeSession(s2sSessionId);
|
|
1092
|
+
} else {
|
|
1093
|
+
handle.updateSession({
|
|
1094
|
+
system_prompt: systemPrompt,
|
|
1095
|
+
tools: s2sTools,
|
|
1096
|
+
...agentConfig.greeting ? { greeting: agentConfig.greeting } : {}
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1082
1099
|
s2s = handle;
|
|
1083
1100
|
} catch (err) {
|
|
1084
1101
|
const msg = err instanceof Error ? err.message : String(err);
|
|
1085
1102
|
log.error("S2S connect failed", { error: msg });
|
|
1086
1103
|
client.event({ type: "error", code: "internal", message: msg });
|
|
1104
|
+
} finally {
|
|
1105
|
+
connecting = false;
|
|
1106
|
+
if (pendingReconnect && !sessionAbort.signal.aborted) {
|
|
1107
|
+
pendingReconnect = false;
|
|
1108
|
+
connectAndSetup().catch((err) => {
|
|
1109
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1110
|
+
log.error("S2S deferred reconnect failed", { error: msg });
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1087
1113
|
}
|
|
1088
1114
|
}
|
|
1089
1115
|
return {
|
|
@@ -1117,6 +1143,7 @@ function createS2sSession(opts) {
|
|
|
1117
1143
|
onReset() {
|
|
1118
1144
|
conversationMessages = [];
|
|
1119
1145
|
toolCallCount = 0;
|
|
1146
|
+
turnPromise = null;
|
|
1120
1147
|
pendingTools = [];
|
|
1121
1148
|
s2sSessionId = null;
|
|
1122
1149
|
s2s?.close();
|
|
@@ -1154,13 +1181,16 @@ function createMemoryVectorStore() {
|
|
|
1154
1181
|
store.set(id, { data, metadata });
|
|
1155
1182
|
return Promise.resolve();
|
|
1156
1183
|
},
|
|
1157
|
-
query(text, options) {
|
|
1184
|
+
async query(text, options) {
|
|
1158
1185
|
const topK = options?.topK ?? 10;
|
|
1159
1186
|
const query = text.toLowerCase();
|
|
1187
|
+
const words = query.split(/\s+/).filter(Boolean);
|
|
1160
1188
|
const results = [];
|
|
1189
|
+
let i = 0;
|
|
1161
1190
|
for (const [id, entry] of store) {
|
|
1191
|
+
if (++i % 500 === 0)
|
|
1192
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
1162
1193
|
const data = entry.data.toLowerCase();
|
|
1163
|
-
const words = query.split(/\s+/).filter(Boolean);
|
|
1164
1194
|
const matches = words.filter((w) => data.includes(w)).length;
|
|
1165
1195
|
if (matches > 0) {
|
|
1166
1196
|
results.push({
|
|
@@ -1172,7 +1202,7 @@ function createMemoryVectorStore() {
|
|
|
1172
1202
|
}
|
|
1173
1203
|
}
|
|
1174
1204
|
results.sort((a, b) => b.score - a.score);
|
|
1175
|
-
return
|
|
1205
|
+
return results.slice(0, topK);
|
|
1176
1206
|
},
|
|
1177
1207
|
remove(ids) {
|
|
1178
1208
|
const idArray = Array.isArray(ids) ? ids : [ids];
|
|
@@ -1220,7 +1250,9 @@ async function executeToolCall(name, args, options) {
|
|
|
1220
1250
|
}
|
|
1221
1251
|
try {
|
|
1222
1252
|
const ctx = buildToolContext(options);
|
|
1253
|
+
await yieldTick();
|
|
1223
1254
|
const result = await Promise.resolve(tool.execute(parsed.data, ctx));
|
|
1255
|
+
await yieldTick();
|
|
1224
1256
|
if (result == null)
|
|
1225
1257
|
return "null";
|
|
1226
1258
|
return typeof result === "string" ? result : JSON.stringify(result);
|
|
@@ -1233,11 +1265,12 @@ async function executeToolCall(name, args, options) {
|
|
|
1233
1265
|
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
1234
1266
|
}
|
|
1235
1267
|
}
|
|
1236
|
-
var TOOL_HANDLER_TIMEOUT;
|
|
1268
|
+
var yieldTick, TOOL_HANDLER_TIMEOUT;
|
|
1237
1269
|
var init_worker_entry = __esm({
|
|
1238
1270
|
"dist/sdk/worker_entry.js"() {
|
|
1239
1271
|
"use strict";
|
|
1240
1272
|
init_internal_types();
|
|
1273
|
+
yieldTick = () => new Promise((r) => setTimeout(r, 0));
|
|
1241
1274
|
TOOL_HANDLER_TIMEOUT = 3e4;
|
|
1242
1275
|
}
|
|
1243
1276
|
});
|
|
@@ -1387,24 +1420,25 @@ function isValidAudioChunk(data) {
|
|
|
1387
1420
|
return data.byteLength > 0 && data.byteLength <= MAX_AUDIO_CHUNK_BYTES && data.byteLength % 2 === 0;
|
|
1388
1421
|
}
|
|
1389
1422
|
function createClientSink(ws) {
|
|
1423
|
+
function safeSend(data) {
|
|
1424
|
+
try {
|
|
1425
|
+
if (ws.readyState === 1)
|
|
1426
|
+
ws.send(data);
|
|
1427
|
+
} catch {
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1390
1430
|
return {
|
|
1391
1431
|
get open() {
|
|
1392
1432
|
return ws.readyState === 1;
|
|
1393
1433
|
},
|
|
1394
1434
|
event(e) {
|
|
1395
|
-
|
|
1396
|
-
ws.send(JSON.stringify(e));
|
|
1397
|
-
}
|
|
1435
|
+
safeSend(JSON.stringify(e));
|
|
1398
1436
|
},
|
|
1399
1437
|
playAudioChunk(chunk) {
|
|
1400
|
-
|
|
1401
|
-
ws.send(chunk);
|
|
1402
|
-
}
|
|
1438
|
+
safeSend(chunk);
|
|
1403
1439
|
},
|
|
1404
1440
|
playAudioDone() {
|
|
1405
|
-
|
|
1406
|
-
ws.send(JSON.stringify({ type: "audio_done" }));
|
|
1407
|
-
}
|
|
1441
|
+
safeSend(JSON.stringify({ type: "audio_done" }));
|
|
1408
1442
|
}
|
|
1409
1443
|
};
|
|
1410
1444
|
}
|
|
@@ -2050,9 +2084,9 @@ import React, { useRef, useState } from "react";
|
|
|
2050
2084
|
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
2051
2085
|
var PAD2 = 9;
|
|
2052
2086
|
var PRIMARY = "#fab283";
|
|
2053
|
-
var INTERACTIVE = "#
|
|
2054
|
-
var ERROR_COLOR = "#
|
|
2055
|
-
var WARNING_COLOR = "#
|
|
2087
|
+
var INTERACTIVE = "#56b6c2";
|
|
2088
|
+
var ERROR_COLOR = "#e06c75";
|
|
2089
|
+
var WARNING_COLOR = "#f5a742";
|
|
2056
2090
|
function Step({ action, msg }) {
|
|
2057
2091
|
return /* @__PURE__ */ jsxs2(Text2, { children: [
|
|
2058
2092
|
/* @__PURE__ */ jsx2(Text2, { bold: true, color: PRIMARY, children: action.padStart(PAD2) }),
|
|
@@ -2223,15 +2257,15 @@ var DEFAULT_STYLES_CSS = `@import url("https://fonts.googleapis.com/css2?family=
|
|
|
2223
2257
|
--color-aai-text-secondary: rgba(255, 255, 255, 0.618);
|
|
2224
2258
|
--color-aai-text-muted: rgba(255, 255, 255, 0.284);
|
|
2225
2259
|
--color-aai-text-dim: rgba(255, 255, 255, 0.422);
|
|
2226
|
-
--color-aai-error: #
|
|
2227
|
-
--color-aai-ring: #
|
|
2260
|
+
--color-aai-error: #e06c75;
|
|
2261
|
+
--color-aai-ring: #56b6c2;
|
|
2228
2262
|
--color-aai-state-disconnected: rgba(255, 255, 255, 0.422);
|
|
2229
2263
|
--color-aai-state-connecting: rgba(255, 255, 255, 0.422);
|
|
2230
|
-
--color-aai-state-ready: #
|
|
2231
|
-
--color-aai-state-listening: #
|
|
2232
|
-
--color-aai-state-thinking: #
|
|
2233
|
-
--color-aai-state-speaking: #
|
|
2234
|
-
--color-aai-state-error: #
|
|
2264
|
+
--color-aai-state-ready: #7fd88f;
|
|
2265
|
+
--color-aai-state-listening: #56b6c2;
|
|
2266
|
+
--color-aai-state-thinking: #f5a742;
|
|
2267
|
+
--color-aai-state-speaking: #e06c75;
|
|
2268
|
+
--color-aai-state-error: #e06c75;
|
|
2235
2269
|
--radius-aai: 6px;
|
|
2236
2270
|
--font-aai: "Inter", system-ui, -apple-system, sans-serif;
|
|
2237
2271
|
--font-aai-mono: "IBM Plex Mono", monospace;
|
|
@@ -2396,6 +2430,7 @@ init_colors();
|
|
|
2396
2430
|
import fs5 from "node:fs/promises";
|
|
2397
2431
|
import path5 from "node:path";
|
|
2398
2432
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
2433
|
+
import chalk4 from "chalk";
|
|
2399
2434
|
import minimist from "minimist";
|
|
2400
2435
|
init_new();
|
|
2401
2436
|
var newCommandDef = {
|
|
@@ -2437,7 +2472,7 @@ async function selectTemplate(available) {
|
|
|
2437
2472
|
}));
|
|
2438
2473
|
return await askSelect("Which template?", choices);
|
|
2439
2474
|
}
|
|
2440
|
-
async function runNewCommand(args, version) {
|
|
2475
|
+
async function runNewCommand(args, version, opts) {
|
|
2441
2476
|
const parsed = minimist(args, {
|
|
2442
2477
|
string: ["template"],
|
|
2443
2478
|
boolean: ["force", "help", "yes"],
|
|
@@ -2482,6 +2517,20 @@ async function runNewCommand(args, version) {
|
|
|
2482
2517
|
await ensureClaudeMd(cwd);
|
|
2483
2518
|
await ensureDependencies(cwd);
|
|
2484
2519
|
});
|
|
2520
|
+
if (!opts?.quiet) {
|
|
2521
|
+
const cdNeeded = dir != null;
|
|
2522
|
+
console.log();
|
|
2523
|
+
console.log(chalk4.bold("Next steps:"));
|
|
2524
|
+
if (cdNeeded) {
|
|
2525
|
+
console.log(` ${chalk4.dim("$")} ${primary(`cd ${path5.relative(process.cwd(), cwd)}`)}`);
|
|
2526
|
+
}
|
|
2527
|
+
console.log(
|
|
2528
|
+
` ${chalk4.dim("$")} ${primary("aai dev")} ${chalk4.dim("Start local dev server")}`
|
|
2529
|
+
);
|
|
2530
|
+
console.log(
|
|
2531
|
+
` ${chalk4.dim("$")} ${primary("aai deploy")} ${chalk4.dim("Deploy to production")}`
|
|
2532
|
+
);
|
|
2533
|
+
}
|
|
2485
2534
|
return cwd;
|
|
2486
2535
|
}
|
|
2487
2536
|
|
|
@@ -2515,7 +2564,7 @@ async function runDeployCommand(args, version) {
|
|
|
2515
2564
|
}
|
|
2516
2565
|
const cwd = process.env.INIT_CWD || process.cwd();
|
|
2517
2566
|
if (!await fileExists(path6.join(cwd, "agent.ts"))) {
|
|
2518
|
-
await runNewCommand(parsed.yes ? ["-y"] : [], version);
|
|
2567
|
+
await runNewCommand(parsed.yes ? ["-y"] : [], version, { quiet: true });
|
|
2519
2568
|
}
|
|
2520
2569
|
const local = parsed.local;
|
|
2521
2570
|
const serverUrl = local !== void 0 ? typeof local === "string" && local !== "" ? local : "http://localhost:3100" : parsed.server || (isDevMode() ? "http://localhost:3100" : DEFAULT_SERVER);
|
|
@@ -2653,7 +2702,7 @@ async function runDevCommand(args, version) {
|
|
|
2653
2702
|
const cwd = process.env.INIT_CWD || process.cwd();
|
|
2654
2703
|
const port = Number.parseInt(parsed.port ?? "3000", 10);
|
|
2655
2704
|
if (!await fileExists(path8.join(cwd, "agent.ts"))) {
|
|
2656
|
-
await runNewCommand(parsed.yes ? ["-y"] : [], version);
|
|
2705
|
+
await runNewCommand(parsed.yes ? ["-y"] : [], version, { quiet: true });
|
|
2657
2706
|
}
|
|
2658
2707
|
await getApiKey();
|
|
2659
2708
|
await runWithInk("Bundling...", async (log) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin_tools.d.ts","sourceRoot":"","sources":["../../sdk/builtin_tools.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"builtin_tools.d.ts","sourceRoot":"","sources":["../../sdk/builtin_tools.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAqM1C,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAgB9E,sDAAsD;AACtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,sEAAsE;AACtE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,CAAC,EAAE,kBAAkB,GACxB,aAAa,CAwBf;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,EAAE,CAa5E"}
|
|
@@ -7,26 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
+
import { convert } from "html-to-text";
|
|
10
11
|
import { z } from "zod";
|
|
11
12
|
import { EMPTY_PARAMS } from "./_internal_types.js";
|
|
12
13
|
// ─── HTML to text ──────────────────────────────────────────────────────────
|
|
13
14
|
function htmlToText(html) {
|
|
14
|
-
return html
|
|
15
|
-
.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
|
|
16
|
-
.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
|
|
17
|
-
.replace(/<(br|hr)\s*\/?>/gi, "\n")
|
|
18
|
-
.replace(/<\/(p|div|li|h[1-6]|tr|blockquote)>/gi, "\n")
|
|
19
|
-
.replace(/<[^>]+>/g, " ")
|
|
20
|
-
.replace(/ /g, " ")
|
|
21
|
-
.replace(/&/g, "&")
|
|
22
|
-
.replace(/</g, "<")
|
|
23
|
-
.replace(/>/g, ">")
|
|
24
|
-
.replace(/"/g, '"')
|
|
25
|
-
.replace(/�?39;/g, "'")
|
|
26
|
-
.replace(/[ \t]+/g, " ")
|
|
27
|
-
.replace(/\n /g, "\n")
|
|
28
|
-
.replace(/\n{3,}/g, "\n\n")
|
|
29
|
-
.trim();
|
|
15
|
+
return convert(html, { wordwrap: false });
|
|
30
16
|
}
|
|
31
17
|
// ─── web_search ────────────────────────────────────────────────────────────
|
|
32
18
|
const webSearchParams = z.object({
|
|
@@ -165,10 +151,14 @@ function createRunCode() {
|
|
|
165
151
|
error: capture,
|
|
166
152
|
debug: capture,
|
|
167
153
|
};
|
|
154
|
+
const RUN_CODE_TIMEOUT = 5_000;
|
|
168
155
|
const AsyncFunction = Object.getPrototypeOf(async () => { }).constructor;
|
|
169
156
|
try {
|
|
170
157
|
const fn = new AsyncFunction("console", code);
|
|
171
|
-
await
|
|
158
|
+
await Promise.race([
|
|
159
|
+
fn(fakeConsole),
|
|
160
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error("Code execution timed out")), RUN_CODE_TIMEOUT)),
|
|
161
|
+
]);
|
|
172
162
|
const result = output.join("\n").trim();
|
|
173
163
|
return result || "Code ran successfully (no output)";
|
|
174
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin_tools.js","sourceRoot":"","sources":["../../sdk/builtin_tools.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAGrE,8EAA8E;AAE9E,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"builtin_tools.js","sourceRoot":"","sources":["../../sdk/builtin_tools.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/capnweb.d.ts
CHANGED
|
@@ -64,6 +64,10 @@ export declare function bridgeWebSocketToPort(ws: WebSocket, port: MessagePort):
|
|
|
64
64
|
/**
|
|
65
65
|
* Bridges a ws-style {@linkcode S2sWebSocket} to a MessagePort.
|
|
66
66
|
* Used on the host side for S2S connections to AssemblyAI.
|
|
67
|
+
*
|
|
68
|
+
* Audio is fast-pathed as binary transfers in both directions:
|
|
69
|
+
* - S2S → worker: reply.audio JSON is decoded on the host and sent as k:1 binary (zero-copy transfer).
|
|
70
|
+
* - Worker → host: raw PCM arrives as k:1 binary, host wraps it as input.audio JSON for the S2S API.
|
|
67
71
|
*/
|
|
68
72
|
export declare function bridgeS2sWebSocketToPort(ws: S2sWebSocket, port: MessagePort): void;
|
|
69
73
|
//# sourceMappingURL=capnweb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capnweb.d.ts","sourceRoot":"","sources":["../../sdk/capnweb.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsC7C,kGAAkG;AAClG,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,SAAS,WAAW,EAAE,KAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAGX;IACJ,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IAK7B,6EAA6E;IAC7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAIjD,oDAAoD;IACpD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlF,4EAA4E;IAC5E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI;IAIxE,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,SAAS;CAwClB;AA+BD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU,SAAK;IACf,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IAiC7B,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;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"capnweb.d.ts","sourceRoot":"","sources":["../../sdk/capnweb.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsC7C,kGAAkG;AAClG,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,SAAS,WAAW,EAAE,KAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAGX;IACJ,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IAK7B,6EAA6E;IAC7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAIjD,oDAAoD;IACpD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlF,4EAA4E;IAC5E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI;IAIxE,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,SAAS;CAwClB;AA+BD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU,SAAK;IACf,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IAiC7B,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;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAuDzE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAyC5E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA6DlF"}
|