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.
Files changed (186) hide show
  1. package/README.md +20 -1
  2. package/dist/{agent-routing-CnkaHb-v.d.ts → agent-routing-DE5zmCQ8.d.ts} +1038 -394
  3. package/dist/agent-routing.d.ts +1 -1
  4. package/dist/agent-tool-types.d.ts +26 -26
  5. package/dist/{agent-tools-C0XJqWzB.d.ts → agent-tools-DtXMTDGM.d.ts} +7 -7
  6. package/dist/agent-tools.d.ts +21 -21
  7. package/dist/browser/ai.js +4 -1
  8. package/dist/browser/ai.js.map +1 -1
  9. package/dist/browser/tanstack-ai.js.map +1 -1
  10. package/dist/callable-decorator-DP__HhBA.d.ts +72 -0
  11. package/dist/callable-decorator.d.ts +18 -0
  12. package/dist/callable-decorator.js +71 -0
  13. package/dist/callable-decorator.js.map +1 -0
  14. package/dist/capability-BjSKYpzg.js.map +1 -1
  15. package/dist/capability-runner-Be_-PLR1.d.ts +459 -0
  16. package/dist/channel-Bnm4S7T2.d.ts +491 -0
  17. package/dist/channels/ai-sdk.d.ts +46 -0
  18. package/dist/channels/ai-sdk.js +120 -0
  19. package/dist/channels/ai-sdk.js.map +1 -0
  20. package/dist/channels/email.d.ts +95 -0
  21. package/dist/channels/email.js +323 -0
  22. package/dist/channels/email.js.map +1 -0
  23. package/dist/channels/index.d.ts +233 -0
  24. package/dist/channels/index.js +608 -0
  25. package/dist/channels/index.js.map +1 -0
  26. package/dist/channels/slack.d.ts +140 -0
  27. package/dist/channels/slack.js +614 -0
  28. package/dist/channels/slack.js.map +1 -0
  29. package/dist/channels/tanstack-ai.d.ts +39 -0
  30. package/dist/channels/tanstack-ai.js +17 -0
  31. package/dist/channels/tanstack-ai.js.map +1 -0
  32. package/dist/channels/telegram.d.ts +106 -0
  33. package/dist/channels/telegram.js +427 -0
  34. package/dist/channels/telegram.js.map +1 -0
  35. package/dist/channels/voice.d.ts +45 -0
  36. package/dist/channels/voice.js +122 -0
  37. package/dist/channels/voice.js.map +1 -0
  38. package/dist/chat/index.d.ts +2325 -2019
  39. package/dist/chat/index.js +888 -518
  40. package/dist/chat/index.js.map +1 -1
  41. package/dist/chat-sdk/index.d.ts +7 -7
  42. package/dist/chat-sdk/index.js +1 -1
  43. package/dist/client.d.ts +1 -1
  44. package/dist/context/index.d.ts +216 -0
  45. package/dist/context/index.js +454 -0
  46. package/dist/context/index.js.map +1 -0
  47. package/dist/{current-agent-CuMErtly.d.ts → current-agent-Da_C9a3b.d.ts} +90 -107
  48. package/dist/current-agent-DhoDkSnH.js.map +1 -1
  49. package/dist/{diagnostics-CaBjfz4J.js → diagnostics-BzvaX2UT.js} +5 -1
  50. package/dist/diagnostics-BzvaX2UT.js.map +1 -0
  51. package/dist/diagnostics-C4jcz3VK.js +360 -0
  52. package/dist/diagnostics-C4jcz3VK.js.map +1 -0
  53. package/dist/index-BB0kqhIz.d.ts +101 -0
  54. package/dist/index-BVVgDSdq.d.ts +1 -0
  55. package/dist/index-XDkuQ7zm.d.ts +89 -0
  56. package/dist/{index-DcSAZKsB.d.ts → index-YSKgfgg9.d.ts} +3 -1
  57. package/dist/index.d.ts +91 -82
  58. package/dist/index.js +3 -2
  59. package/dist/ingress-BfetZbMO.js +83 -0
  60. package/dist/ingress-BfetZbMO.js.map +1 -0
  61. package/dist/internal-CYlgHl1l.js +59 -0
  62. package/dist/internal-CYlgHl1l.js.map +1 -0
  63. package/dist/internal_context.d.ts +1 -1
  64. package/dist/lifecycle/index.d.ts +35 -17
  65. package/dist/lifecycle/index.js +1 -1
  66. package/dist/lifecycle-CMRGjZdw.js +1299 -0
  67. package/dist/lifecycle-CMRGjZdw.js.map +1 -0
  68. package/dist/mcp/client/index.d.ts +20 -20
  69. package/dist/mcp/index.d.ts +35 -35
  70. package/dist/mcp/index.js +1 -1
  71. package/dist/observability/index.d.ts +1 -1
  72. package/dist/observability/index.js +1 -1
  73. package/dist/react.d.ts +4 -4
  74. package/dist/{retries-CAvxtG9d.d.ts → retries-D9Ds-1lz.d.ts} +17 -6
  75. package/dist/retries.d.ts +8 -6
  76. package/dist/retries.js +13 -1
  77. package/dist/retries.js.map +1 -1
  78. package/dist/routing/index.d.ts +137 -0
  79. package/dist/routing/index.js +244 -0
  80. package/dist/routing/index.js.map +1 -0
  81. package/dist/sanitize-D9TujEK8.js +79 -0
  82. package/dist/sanitize-D9TujEK8.js.map +1 -0
  83. package/dist/scheduler-DD9NdYbF.js +665 -0
  84. package/dist/scheduler-DD9NdYbF.js.map +1 -0
  85. package/dist/{scheduler-DQoTGoAW.d.ts → scheduler-Dwh85ZGl.d.ts} +21 -22
  86. package/dist/schedules/index.d.ts +1 -1
  87. package/dist/schedules/index.js +1 -1
  88. package/dist/sentence-chunker-BAidJ4DA.d.ts +68 -0
  89. package/dist/serializable.d.ts +1 -1
  90. package/dist/sessions/index.d.ts +441 -0
  91. package/dist/sessions/index.js +2063 -0
  92. package/dist/sessions/index.js.map +1 -0
  93. package/dist/skills/index.d.ts +99 -0
  94. package/dist/skills/index.js +254 -5
  95. package/dist/skills/index.js.map +1 -1
  96. package/dist/{src-5W6JNKVb.js → src-DlSHshb2.js} +1460 -1110
  97. package/dist/src-DlSHshb2.js.map +1 -0
  98. package/dist/streams/index.d.ts +120 -0
  99. package/dist/streams/index.js +107 -0
  100. package/dist/streams/index.js.map +1 -0
  101. package/dist/streams-D6tJ0NN9.d.ts +370 -0
  102. package/dist/streams-DZKgAj9b.js +709 -0
  103. package/dist/streams-DZKgAj9b.js.map +1 -0
  104. package/dist/sub-routing.d.ts +12 -12
  105. package/dist/surface-bZZJqBka.js +17 -0
  106. package/dist/surface-bZZJqBka.js.map +1 -0
  107. package/dist/tasks/index.d.ts +64 -0
  108. package/dist/tasks/index.js +2 -0
  109. package/dist/tasks-BRJ5zgya.d.ts +517 -0
  110. package/dist/tasks-ylZgBjhj.js +1656 -0
  111. package/dist/tasks-ylZgBjhj.js.map +1 -0
  112. package/dist/text-segment-joiner-BtAFQSA_.js +57 -0
  113. package/dist/text-segment-joiner-BtAFQSA_.js.map +1 -0
  114. package/dist/text-stream-CpdiKrJB.js +272 -0
  115. package/dist/text-stream-CpdiKrJB.js.map +1 -0
  116. package/dist/tokens-nHAKcN6M.js +52 -0
  117. package/dist/tokens-nHAKcN6M.js.map +1 -0
  118. package/dist/tool-schema-CBjGPrsQ.js +31 -0
  119. package/dist/tool-schema-CBjGPrsQ.js.map +1 -0
  120. package/dist/types-B7LojTe4.d.ts +202 -0
  121. package/dist/types-_Faxb570.d.ts +439 -0
  122. package/dist/voice/client.d.ts +226 -0
  123. package/dist/voice/client.js +932 -0
  124. package/dist/voice/client.js.map +1 -0
  125. package/dist/voice/errors.d.ts +43 -0
  126. package/dist/voice/errors.js +41 -0
  127. package/dist/voice/errors.js.map +1 -0
  128. package/dist/voice/index.d.ts +271 -0
  129. package/dist/voice/index.js +1812 -0
  130. package/dist/voice/index.js.map +1 -0
  131. package/dist/voice/react.d.ts +167 -0
  132. package/dist/voice/react.js +234 -0
  133. package/dist/voice/react.js.map +1 -0
  134. package/dist/voice/sfu.d.ts +71 -0
  135. package/dist/voice/sfu.js +157 -0
  136. package/dist/voice/sfu.js.map +1 -0
  137. package/dist/voice/text.d.ts +6 -0
  138. package/dist/voice/text.js +2 -0
  139. package/dist/voice/types.d.ts +58 -0
  140. package/dist/voice/types.js +18 -0
  141. package/dist/voice/types.js.map +1 -0
  142. package/dist/voice/workers-ai.d.ts +136 -0
  143. package/dist/voice/workers-ai.js +568 -0
  144. package/dist/voice/workers-ai.js.map +1 -0
  145. package/dist/websockets/index.d.ts +192 -0
  146. package/dist/websockets/index.js +2 -0
  147. package/dist/websockets-DUfRHPRq.js +502 -0
  148. package/dist/websockets-DUfRHPRq.js.map +1 -0
  149. package/dist/workflow-types.d.ts +25 -25
  150. package/dist/workflows.d.ts +21 -21
  151. package/dist/workflows.js +1 -1
  152. package/docs/agent-class.md +2 -2
  153. package/docs/agent-tools.md +2 -1
  154. package/docs/channels.md +323 -0
  155. package/docs/chat-agents.md +6 -13
  156. package/docs/context.md +131 -0
  157. package/docs/index.md +15 -12
  158. package/docs/lifecycle.md +102 -55
  159. package/docs/long-running-agents.md +2 -2
  160. package/docs/mcp-servers.md +5 -1
  161. package/docs/resumable-streaming.md +1 -1
  162. package/docs/routing.md +105 -0
  163. package/docs/sessions.md +237 -871
  164. package/docs/streams.md +213 -0
  165. package/docs/sub-agents.md +184 -124
  166. package/docs/tasks.md +246 -0
  167. package/docs/voice.md +745 -0
  168. package/package.json +115 -13
  169. package/dist/capability-runner-CvHGZqUu.d.ts +0 -150
  170. package/dist/compaction-helpers-iiKMr2TQ.js +0 -340
  171. package/dist/compaction-helpers-iiKMr2TQ.js.map +0 -1
  172. package/dist/compaction-helpers-wUz6M3us.d.ts +0 -621
  173. package/dist/diagnostics-CaBjfz4J.js.map +0 -1
  174. package/dist/durable-object-lifecycle-D6nNQJJd.js +0 -862
  175. package/dist/durable-object-lifecycle-D6nNQJJd.js.map +0 -1
  176. package/dist/experimental/memory/session/index.d.ts +0 -671
  177. package/dist/experimental/memory/session/index.js +0 -2379
  178. package/dist/experimental/memory/session/index.js.map +0 -1
  179. package/dist/experimental/memory/utils/index.d.ts +0 -96
  180. package/dist/experimental/memory/utils/index.js +0 -79
  181. package/dist/experimental/memory/utils/index.js.map +0 -1
  182. package/dist/scheduler-CR9RHGos.js +0 -857
  183. package/dist/scheduler-CR9RHGos.js.map +0 -1
  184. package/dist/src-5W6JNKVb.js.map +0 -1
  185. package/dist/tool-output-truncation-CNnnGZQ3.js +0 -98
  186. 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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"}