agents 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/dist/{agent-routing-CnkaHb-v.d.ts → agent-routing-DE5zmCQ8.d.ts} +1038 -394
- package/dist/agent-routing.d.ts +1 -1
- package/dist/agent-tool-types.d.ts +26 -26
- package/dist/{agent-tools-C0XJqWzB.d.ts → agent-tools-DtXMTDGM.d.ts} +7 -7
- package/dist/agent-tools.d.ts +21 -21
- package/dist/browser/ai.js +4 -1
- package/dist/browser/ai.js.map +1 -1
- package/dist/browser/tanstack-ai.js.map +1 -1
- package/dist/callable-decorator-DP__HhBA.d.ts +72 -0
- package/dist/callable-decorator.d.ts +18 -0
- package/dist/callable-decorator.js +71 -0
- package/dist/callable-decorator.js.map +1 -0
- package/dist/capability-BjSKYpzg.js.map +1 -1
- package/dist/capability-runner-Be_-PLR1.d.ts +459 -0
- package/dist/channel-Bnm4S7T2.d.ts +491 -0
- package/dist/channels/ai-sdk.d.ts +46 -0
- package/dist/channels/ai-sdk.js +120 -0
- package/dist/channels/ai-sdk.js.map +1 -0
- package/dist/channels/email.d.ts +95 -0
- package/dist/channels/email.js +323 -0
- package/dist/channels/email.js.map +1 -0
- package/dist/channels/index.d.ts +233 -0
- package/dist/channels/index.js +608 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/slack.d.ts +140 -0
- package/dist/channels/slack.js +614 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/tanstack-ai.d.ts +39 -0
- package/dist/channels/tanstack-ai.js +17 -0
- package/dist/channels/tanstack-ai.js.map +1 -0
- package/dist/channels/telegram.d.ts +106 -0
- package/dist/channels/telegram.js +427 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/voice.d.ts +45 -0
- package/dist/channels/voice.js +122 -0
- package/dist/channels/voice.js.map +1 -0
- package/dist/chat/index.d.ts +2325 -2019
- package/dist/chat/index.js +888 -518
- package/dist/chat/index.js.map +1 -1
- package/dist/chat-sdk/index.d.ts +7 -7
- package/dist/chat-sdk/index.js +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/context/index.d.ts +216 -0
- package/dist/context/index.js +454 -0
- package/dist/context/index.js.map +1 -0
- package/dist/{current-agent-CuMErtly.d.ts → current-agent-Da_C9a3b.d.ts} +90 -107
- package/dist/current-agent-DhoDkSnH.js.map +1 -1
- package/dist/{diagnostics-CaBjfz4J.js → diagnostics-BzvaX2UT.js} +5 -1
- package/dist/diagnostics-BzvaX2UT.js.map +1 -0
- package/dist/diagnostics-C4jcz3VK.js +360 -0
- package/dist/diagnostics-C4jcz3VK.js.map +1 -0
- package/dist/index-BB0kqhIz.d.ts +101 -0
- package/dist/index-BVVgDSdq.d.ts +1 -0
- package/dist/index-XDkuQ7zm.d.ts +89 -0
- package/dist/{index-DcSAZKsB.d.ts → index-YSKgfgg9.d.ts} +3 -1
- package/dist/index.d.ts +91 -82
- package/dist/index.js +3 -2
- package/dist/ingress-BfetZbMO.js +83 -0
- package/dist/ingress-BfetZbMO.js.map +1 -0
- package/dist/internal-CYlgHl1l.js +59 -0
- package/dist/internal-CYlgHl1l.js.map +1 -0
- package/dist/internal_context.d.ts +1 -1
- package/dist/lifecycle/index.d.ts +35 -17
- package/dist/lifecycle/index.js +1 -1
- package/dist/lifecycle-CMRGjZdw.js +1299 -0
- package/dist/lifecycle-CMRGjZdw.js.map +1 -0
- package/dist/mcp/client/index.d.ts +20 -20
- package/dist/mcp/index.d.ts +35 -35
- package/dist/mcp/index.js +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.js +1 -1
- package/dist/react.d.ts +4 -4
- package/dist/{retries-CAvxtG9d.d.ts → retries-D9Ds-1lz.d.ts} +17 -6
- package/dist/retries.d.ts +8 -6
- package/dist/retries.js +13 -1
- package/dist/retries.js.map +1 -1
- package/dist/routing/index.d.ts +137 -0
- package/dist/routing/index.js +244 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/sanitize-D9TujEK8.js +79 -0
- package/dist/sanitize-D9TujEK8.js.map +1 -0
- package/dist/scheduler-DD9NdYbF.js +665 -0
- package/dist/scheduler-DD9NdYbF.js.map +1 -0
- package/dist/{scheduler-DQoTGoAW.d.ts → scheduler-Dwh85ZGl.d.ts} +21 -22
- package/dist/schedules/index.d.ts +1 -1
- package/dist/schedules/index.js +1 -1
- package/dist/sentence-chunker-BAidJ4DA.d.ts +68 -0
- package/dist/serializable.d.ts +1 -1
- package/dist/sessions/index.d.ts +441 -0
- package/dist/sessions/index.js +2063 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/skills/index.d.ts +99 -0
- package/dist/skills/index.js +254 -5
- package/dist/skills/index.js.map +1 -1
- package/dist/{src-5W6JNKVb.js → src-DlSHshb2.js} +1460 -1110
- package/dist/src-DlSHshb2.js.map +1 -0
- package/dist/streams/index.d.ts +120 -0
- package/dist/streams/index.js +107 -0
- package/dist/streams/index.js.map +1 -0
- package/dist/streams-D6tJ0NN9.d.ts +370 -0
- package/dist/streams-DZKgAj9b.js +709 -0
- package/dist/streams-DZKgAj9b.js.map +1 -0
- package/dist/sub-routing.d.ts +12 -12
- package/dist/surface-bZZJqBka.js +17 -0
- package/dist/surface-bZZJqBka.js.map +1 -0
- package/dist/tasks/index.d.ts +64 -0
- package/dist/tasks/index.js +2 -0
- package/dist/tasks-BRJ5zgya.d.ts +517 -0
- package/dist/tasks-ylZgBjhj.js +1656 -0
- package/dist/tasks-ylZgBjhj.js.map +1 -0
- package/dist/text-segment-joiner-BtAFQSA_.js +57 -0
- package/dist/text-segment-joiner-BtAFQSA_.js.map +1 -0
- package/dist/text-stream-CpdiKrJB.js +272 -0
- package/dist/text-stream-CpdiKrJB.js.map +1 -0
- package/dist/tokens-nHAKcN6M.js +52 -0
- package/dist/tokens-nHAKcN6M.js.map +1 -0
- package/dist/tool-schema-CBjGPrsQ.js +31 -0
- package/dist/tool-schema-CBjGPrsQ.js.map +1 -0
- package/dist/types-B7LojTe4.d.ts +202 -0
- package/dist/types-_Faxb570.d.ts +439 -0
- package/dist/voice/client.d.ts +226 -0
- package/dist/voice/client.js +932 -0
- package/dist/voice/client.js.map +1 -0
- package/dist/voice/errors.d.ts +43 -0
- package/dist/voice/errors.js +41 -0
- package/dist/voice/errors.js.map +1 -0
- package/dist/voice/index.d.ts +271 -0
- package/dist/voice/index.js +1812 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/react.d.ts +167 -0
- package/dist/voice/react.js +234 -0
- package/dist/voice/react.js.map +1 -0
- package/dist/voice/sfu.d.ts +71 -0
- package/dist/voice/sfu.js +157 -0
- package/dist/voice/sfu.js.map +1 -0
- package/dist/voice/text.d.ts +6 -0
- package/dist/voice/text.js +2 -0
- package/dist/voice/types.d.ts +58 -0
- package/dist/voice/types.js +18 -0
- package/dist/voice/types.js.map +1 -0
- package/dist/voice/workers-ai.d.ts +136 -0
- package/dist/voice/workers-ai.js +568 -0
- package/dist/voice/workers-ai.js.map +1 -0
- package/dist/websockets/index.d.ts +192 -0
- package/dist/websockets/index.js +2 -0
- package/dist/websockets-DUfRHPRq.js +502 -0
- package/dist/websockets-DUfRHPRq.js.map +1 -0
- package/dist/workflow-types.d.ts +25 -25
- package/dist/workflows.d.ts +21 -21
- package/dist/workflows.js +1 -1
- package/docs/agent-class.md +2 -2
- package/docs/agent-tools.md +2 -1
- package/docs/channels.md +323 -0
- package/docs/chat-agents.md +6 -13
- package/docs/context.md +131 -0
- package/docs/index.md +15 -12
- package/docs/lifecycle.md +102 -55
- package/docs/long-running-agents.md +2 -2
- package/docs/mcp-servers.md +5 -1
- package/docs/resumable-streaming.md +1 -1
- package/docs/routing.md +105 -0
- package/docs/sessions.md +237 -871
- package/docs/streams.md +213 -0
- package/docs/sub-agents.md +184 -124
- package/docs/tasks.md +246 -0
- package/docs/voice.md +745 -0
- package/package.json +115 -13
- package/dist/capability-runner-CvHGZqUu.d.ts +0 -150
- package/dist/compaction-helpers-iiKMr2TQ.js +0 -340
- package/dist/compaction-helpers-iiKMr2TQ.js.map +0 -1
- package/dist/compaction-helpers-wUz6M3us.d.ts +0 -621
- package/dist/diagnostics-CaBjfz4J.js.map +0 -1
- package/dist/durable-object-lifecycle-D6nNQJJd.js +0 -862
- package/dist/durable-object-lifecycle-D6nNQJJd.js.map +0 -1
- package/dist/experimental/memory/session/index.d.ts +0 -671
- package/dist/experimental/memory/session/index.js +0 -2379
- package/dist/experimental/memory/session/index.js.map +0 -1
- package/dist/experimental/memory/utils/index.d.ts +0 -96
- package/dist/experimental/memory/utils/index.js +0 -79
- package/dist/experimental/memory/utils/index.js.map +0 -1
- package/dist/scheduler-CR9RHGos.js +0 -857
- package/dist/scheduler-CR9RHGos.js.map +0 -1
- package/dist/src-5W6JNKVb.js.map +0 -1
- package/dist/tool-output-truncation-CNnnGZQ3.js +0 -98
- package/dist/tool-output-truncation-CNnnGZQ3.js.map +0 -1
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
//#region src/chat/tool-output-truncation.ts
|
|
2
|
-
const DEFAULT_MAX_DEPTH = 8;
|
|
3
|
-
const TRUNCATED_FLAG = "__truncated";
|
|
4
|
-
const TRUNCATED_CHARS = "__truncatedChars";
|
|
5
|
-
function truncateToolOutput(output, maxChars) {
|
|
6
|
-
const original = stringifyForLength(output);
|
|
7
|
-
if (original.length <= maxChars) return {
|
|
8
|
-
output,
|
|
9
|
-
truncated: false,
|
|
10
|
-
originalLength: original.length
|
|
11
|
-
};
|
|
12
|
-
return {
|
|
13
|
-
output: truncateValue(output, maxChars, original.length, 0),
|
|
14
|
-
truncated: true,
|
|
15
|
-
originalLength: original.length
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
function truncatedSuffix(originalLength) {
|
|
19
|
-
return `... [truncated ${originalLength} chars]`;
|
|
20
|
-
}
|
|
21
|
-
function truncateValue(value, maxChars, originalLength, depth) {
|
|
22
|
-
if (typeof value === "string") return truncateString(value, maxChars, value.length);
|
|
23
|
-
if (value === null || typeof value !== "object") return value;
|
|
24
|
-
if (depth >= DEFAULT_MAX_DEPTH) return `[Nested output omitted ${truncatedSuffix(originalLength)}]`;
|
|
25
|
-
if (Array.isArray(value)) return truncateArray(value, maxChars, originalLength, depth);
|
|
26
|
-
return truncateObject(value, maxChars, originalLength, depth);
|
|
27
|
-
}
|
|
28
|
-
function truncateArray(value, maxChars, originalLength, depth) {
|
|
29
|
-
const childBudget = childMaxChars(maxChars, value.length);
|
|
30
|
-
const result = value.map((item) => truncateValue(item, childBudget, stringifyForLength(item).length, depth + 1));
|
|
31
|
-
while (result.length > 1 && stringifyForLength(result).length > maxChars) result.pop();
|
|
32
|
-
if (result.length < value.length) result.push(`Array output truncated ${truncatedSuffix(originalLength)}`);
|
|
33
|
-
if (stringifyForLength(result).length > maxChars) return compactArrayMarker(maxChars, originalLength);
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
function truncateObject(value, maxChars, originalLength, depth) {
|
|
37
|
-
const entries = Object.entries(value);
|
|
38
|
-
const childBudget = childMaxChars(maxChars, entries.length);
|
|
39
|
-
const result = {};
|
|
40
|
-
for (const [key, entryValue] of entries) result[key] = truncateValue(entryValue, childBudget, stringifyForLength(entryValue).length, depth + 1);
|
|
41
|
-
const resultLength = stringifyForLength(result).length;
|
|
42
|
-
if (resultLength <= maxChars) return result;
|
|
43
|
-
shrinkStringFields(result, maxChars);
|
|
44
|
-
if (stringifyForLength(result).length > maxChars) {
|
|
45
|
-
result[TRUNCATED_FLAG] = true;
|
|
46
|
-
result[TRUNCATED_CHARS] = resultLength;
|
|
47
|
-
}
|
|
48
|
-
if (stringifyForLength(result).length > maxChars) return compactObjectMarker(maxChars, originalLength);
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
function shrinkStringFields(value, maxChars) {
|
|
52
|
-
const stringEntries = Object.entries(value).filter((entry) => typeof entry[1] === "string").sort((a, b) => b[1].length - a[1].length);
|
|
53
|
-
for (const [key, str] of stringEntries) {
|
|
54
|
-
if (stringifyForLength(value).length <= maxChars) return;
|
|
55
|
-
value[key] = truncateString(str, Math.max(0, Math.floor(maxChars / 4)), str.length);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function truncateString(value, maxChars, originalLength) {
|
|
59
|
-
if (value.length <= maxChars) return value;
|
|
60
|
-
const suffix = truncatedSuffix(originalLength);
|
|
61
|
-
if (maxChars <= suffix.length) return suffix.slice(0, maxChars);
|
|
62
|
-
return `${value.slice(0, maxChars - suffix.length)}${suffix}`;
|
|
63
|
-
}
|
|
64
|
-
function compactObjectMarker(maxChars, originalLength) {
|
|
65
|
-
const marker = {
|
|
66
|
-
[TRUNCATED_FLAG]: true,
|
|
67
|
-
[TRUNCATED_CHARS]: originalLength,
|
|
68
|
-
note: "Tool output omitted because it was too large to preserve structurally."
|
|
69
|
-
};
|
|
70
|
-
if (stringifyForLength(marker).length <= maxChars) return marker;
|
|
71
|
-
return {
|
|
72
|
-
[TRUNCATED_FLAG]: true,
|
|
73
|
-
[TRUNCATED_CHARS]: originalLength
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
function compactArrayMarker(maxChars, originalLength) {
|
|
77
|
-
const structuredMarker = compactObjectMarker(maxChars, originalLength);
|
|
78
|
-
if (stringifyForLength([structuredMarker]).length <= maxChars) return [structuredMarker];
|
|
79
|
-
const marker = [`Array output omitted because it was too large to preserve structurally ${truncatedSuffix(originalLength)}`];
|
|
80
|
-
if (stringifyForLength(marker).length <= maxChars) return marker;
|
|
81
|
-
return [truncatedSuffix(originalLength).slice(0, maxChars)];
|
|
82
|
-
}
|
|
83
|
-
function childMaxChars(maxChars, childCount) {
|
|
84
|
-
if (childCount <= 1) return maxChars;
|
|
85
|
-
return Math.max(80, Math.floor(maxChars / Math.min(childCount, 10)));
|
|
86
|
-
}
|
|
87
|
-
function stringifyForLength(value) {
|
|
88
|
-
try {
|
|
89
|
-
if (typeof value === "string") return value;
|
|
90
|
-
return JSON.stringify(value) ?? String(value);
|
|
91
|
-
} catch {
|
|
92
|
-
return String(value);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//#endregion
|
|
96
|
-
export { truncateToolOutput as t };
|
|
97
|
-
|
|
98
|
-
//# sourceMappingURL=tool-output-truncation-CNnnGZQ3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-output-truncation-CNnnGZQ3.js","names":[],"sources":["../src/chat/tool-output-truncation.ts"],"sourcesContent":["export interface TruncatedToolOutput {\n output: unknown;\n truncated: boolean;\n originalLength: number;\n}\n\nconst DEFAULT_MAX_DEPTH = 8;\nconst TRUNCATED_FLAG = \"__truncated\";\nconst TRUNCATED_CHARS = \"__truncatedChars\";\n\nexport function truncateToolOutput(\n output: unknown,\n maxChars: number\n): TruncatedToolOutput {\n const original = stringifyForLength(output);\n if (original.length <= maxChars) {\n return { output, truncated: false, originalLength: original.length };\n }\n\n return {\n output: truncateValue(output, maxChars, original.length, 0),\n truncated: true,\n originalLength: original.length\n };\n}\n\nexport function truncatedSuffix(originalLength: number): string {\n return `... [truncated ${originalLength} chars]`;\n}\n\nfunction truncateValue(\n value: unknown,\n maxChars: number,\n originalLength: number,\n depth: number\n): unknown {\n if (typeof value === \"string\") {\n return truncateString(value, maxChars, value.length);\n }\n\n if (value === null || typeof value !== \"object\") {\n return value;\n }\n\n if (depth >= DEFAULT_MAX_DEPTH) {\n return `[Nested output omitted ${truncatedSuffix(originalLength)}]`;\n }\n\n if (Array.isArray(value)) {\n return truncateArray(value, maxChars, originalLength, depth);\n }\n\n return truncateObject(\n value as Record<string, unknown>,\n maxChars,\n originalLength,\n depth\n );\n}\n\nfunction truncateArray(\n value: unknown[],\n maxChars: number,\n originalLength: number,\n depth: number\n): unknown[] {\n const childBudget = childMaxChars(maxChars, value.length);\n const result = value.map((item) =>\n truncateValue(item, childBudget, stringifyForLength(item).length, depth + 1)\n );\n\n while (result.length > 1 && stringifyForLength(result).length > maxChars) {\n result.pop();\n }\n\n if (result.length < value.length) {\n result.push(`Array output truncated ${truncatedSuffix(originalLength)}`);\n }\n\n if (stringifyForLength(result).length > maxChars) {\n return compactArrayMarker(maxChars, originalLength);\n }\n\n return result;\n}\n\nfunction truncateObject(\n value: Record<string, unknown>,\n maxChars: number,\n originalLength: number,\n depth: number\n): Record<string, unknown> {\n const entries = Object.entries(value);\n const childBudget = childMaxChars(maxChars, entries.length);\n const result: Record<string, unknown> = {};\n\n for (const [key, entryValue] of entries) {\n result[key] = truncateValue(\n entryValue,\n childBudget,\n stringifyForLength(entryValue).length,\n depth + 1\n );\n }\n\n const resultLength = stringifyForLength(result).length;\n if (resultLength <= maxChars) {\n return result;\n }\n\n shrinkStringFields(result, maxChars);\n const shrunkLength = stringifyForLength(result).length;\n if (shrunkLength > maxChars) {\n result[TRUNCATED_FLAG] = true;\n result[TRUNCATED_CHARS] = resultLength;\n }\n\n if (stringifyForLength(result).length > maxChars) {\n return compactObjectMarker(maxChars, originalLength);\n }\n\n return result;\n}\n\nfunction shrinkStringFields(\n value: Record<string, unknown>,\n maxChars: number\n): void {\n const stringEntries = Object.entries(value)\n .filter((entry): entry is [string, string] => typeof entry[1] === \"string\")\n .sort((a, b) => b[1].length - a[1].length);\n\n for (const [key, str] of stringEntries) {\n if (stringifyForLength(value).length <= maxChars) {\n return;\n }\n\n value[key] = truncateString(\n str,\n Math.max(0, Math.floor(maxChars / 4)),\n str.length\n );\n }\n}\n\nfunction truncateString(\n value: string,\n maxChars: number,\n originalLength: number\n): string {\n if (value.length <= maxChars) {\n return value;\n }\n\n const suffix = truncatedSuffix(originalLength);\n if (maxChars <= suffix.length) {\n return suffix.slice(0, maxChars);\n }\n\n return `${value.slice(0, maxChars - suffix.length)}${suffix}`;\n}\n\nfunction compactObjectMarker(\n maxChars: number,\n originalLength: number\n): Record<string, unknown> {\n const marker = {\n [TRUNCATED_FLAG]: true,\n [TRUNCATED_CHARS]: originalLength,\n note: \"Tool output omitted because it was too large to preserve structurally.\"\n };\n\n if (stringifyForLength(marker).length <= maxChars) {\n return marker;\n }\n\n return {\n [TRUNCATED_FLAG]: true,\n [TRUNCATED_CHARS]: originalLength\n };\n}\n\nfunction compactArrayMarker(\n maxChars: number,\n originalLength: number\n): unknown[] {\n const structuredMarker = compactObjectMarker(maxChars, originalLength);\n if (stringifyForLength([structuredMarker]).length <= maxChars) {\n return [structuredMarker];\n }\n\n const marker = [\n `Array output omitted because it was too large to preserve structurally ${truncatedSuffix(originalLength)}`\n ];\n\n if (stringifyForLength(marker).length <= maxChars) {\n return marker;\n }\n\n return [truncatedSuffix(originalLength).slice(0, maxChars)];\n}\n\nfunction childMaxChars(maxChars: number, childCount: number): number {\n if (childCount <= 1) {\n return maxChars;\n }\n\n return Math.max(80, Math.floor(maxChars / Math.min(childCount, 10)));\n}\n\nfunction stringifyForLength(value: unknown): string {\n try {\n if (typeof value === \"string\") {\n return value;\n }\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n"],"mappings":"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"}
|