@n8n/agents 0.1.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 (231) hide show
  1. package/LICENSE.md +88 -0
  2. package/dist/build.tsbuildinfo +1 -0
  3. package/dist/evals/categorization.d.ts +2 -0
  4. package/dist/evals/categorization.js +23 -0
  5. package/dist/evals/categorization.js.map +1 -0
  6. package/dist/evals/contains-keywords.d.ts +2 -0
  7. package/dist/evals/contains-keywords.js +29 -0
  8. package/dist/evals/contains-keywords.js.map +1 -0
  9. package/dist/evals/correctness.d.ts +2 -0
  10. package/dist/evals/correctness.js +28 -0
  11. package/dist/evals/correctness.js.map +1 -0
  12. package/dist/evals/helpfulness.d.ts +2 -0
  13. package/dist/evals/helpfulness.js +26 -0
  14. package/dist/evals/helpfulness.js.map +1 -0
  15. package/dist/evals/index.d.ts +7 -0
  16. package/dist/evals/index.js +18 -0
  17. package/dist/evals/index.js.map +1 -0
  18. package/dist/evals/json-validity.d.ts +2 -0
  19. package/dist/evals/json-validity.js +21 -0
  20. package/dist/evals/json-validity.js.map +1 -0
  21. package/dist/evals/parse-judge-response.d.ts +2 -0
  22. package/dist/evals/parse-judge-response.js +25 -0
  23. package/dist/evals/parse-judge-response.js.map +1 -0
  24. package/dist/evals/string-similarity.d.ts +2 -0
  25. package/dist/evals/string-similarity.js +42 -0
  26. package/dist/evals/string-similarity.js.map +1 -0
  27. package/dist/evals/tool-call-accuracy.d.ts +2 -0
  28. package/dist/evals/tool-call-accuracy.js +29 -0
  29. package/dist/evals/tool-call-accuracy.js.map +1 -0
  30. package/dist/index.d.ts +34 -0
  31. package/dist/index.js +85 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/integrations/langsmith.d.ts +13 -0
  34. package/dist/integrations/langsmith.js +77 -0
  35. package/dist/integrations/langsmith.js.map +1 -0
  36. package/dist/runtime/agent-runtime.d.ts +80 -0
  37. package/dist/runtime/agent-runtime.js +1246 -0
  38. package/dist/runtime/agent-runtime.js.map +1 -0
  39. package/dist/runtime/event-bus.d.ts +14 -0
  40. package/dist/runtime/event-bus.js +53 -0
  41. package/dist/runtime/event-bus.js.map +1 -0
  42. package/dist/runtime/logger.d.ts +22 -0
  43. package/dist/runtime/logger.js +40 -0
  44. package/dist/runtime/logger.js.map +1 -0
  45. package/dist/runtime/mcp-connection.d.ts +23 -0
  46. package/dist/runtime/mcp-connection.js +135 -0
  47. package/dist/runtime/mcp-connection.js.map +1 -0
  48. package/dist/runtime/mcp-tool-resolver.d.ts +7 -0
  49. package/dist/runtime/mcp-tool-resolver.js +64 -0
  50. package/dist/runtime/mcp-tool-resolver.js.map +1 -0
  51. package/dist/runtime/memory-store.d.ts +29 -0
  52. package/dist/runtime/memory-store.js +68 -0
  53. package/dist/runtime/memory-store.js.map +1 -0
  54. package/dist/runtime/message-list.d.ts +25 -0
  55. package/dist/runtime/message-list.js +79 -0
  56. package/dist/runtime/message-list.js.map +1 -0
  57. package/dist/runtime/messages.d.ts +8 -0
  58. package/dist/runtime/messages.js +239 -0
  59. package/dist/runtime/messages.js.map +1 -0
  60. package/dist/runtime/model-factory.d.ts +33 -0
  61. package/dist/runtime/model-factory.js +68 -0
  62. package/dist/runtime/model-factory.js.map +1 -0
  63. package/dist/runtime/run-state.d.ts +9 -0
  64. package/dist/runtime/run-state.js +49 -0
  65. package/dist/runtime/run-state.js.map +1 -0
  66. package/dist/runtime/runtime-helpers.d.ts +21 -0
  67. package/dist/runtime/runtime-helpers.js +96 -0
  68. package/dist/runtime/runtime-helpers.js.map +1 -0
  69. package/dist/runtime/stream.d.ts +15 -0
  70. package/dist/runtime/stream.js +94 -0
  71. package/dist/runtime/stream.js.map +1 -0
  72. package/dist/runtime/strip-orphaned-tool-messages.d.ts +2 -0
  73. package/dist/runtime/strip-orphaned-tool-messages.js +48 -0
  74. package/dist/runtime/strip-orphaned-tool-messages.js.map +1 -0
  75. package/dist/runtime/title-generation.d.ts +11 -0
  76. package/dist/runtime/title-generation.js +56 -0
  77. package/dist/runtime/title-generation.js.map +1 -0
  78. package/dist/runtime/tool-adapter.d.ts +23 -0
  79. package/dist/runtime/tool-adapter.js +104 -0
  80. package/dist/runtime/tool-adapter.js.map +1 -0
  81. package/dist/runtime/working-memory.d.ts +21 -0
  82. package/dist/runtime/working-memory.js +138 -0
  83. package/dist/runtime/working-memory.js.map +1 -0
  84. package/dist/sdk/agent.d.ts +88 -0
  85. package/dist/sdk/agent.js +327 -0
  86. package/dist/sdk/agent.js.map +1 -0
  87. package/dist/sdk/catalog.d.ts +31 -0
  88. package/dist/sdk/catalog.js +80 -0
  89. package/dist/sdk/catalog.js.map +1 -0
  90. package/dist/sdk/eval.d.ts +23 -0
  91. package/dist/sdk/eval.js +99 -0
  92. package/dist/sdk/eval.js.map +1 -0
  93. package/dist/sdk/evaluate.d.ts +13 -0
  94. package/dist/sdk/evaluate.js +84 -0
  95. package/dist/sdk/evaluate.js.map +1 -0
  96. package/dist/sdk/guardrail.d.ts +14 -0
  97. package/dist/sdk/guardrail.js +41 -0
  98. package/dist/sdk/guardrail.js.map +1 -0
  99. package/dist/sdk/mcp-client.d.ts +16 -0
  100. package/dist/sdk/mcp-client.js +128 -0
  101. package/dist/sdk/mcp-client.js.map +1 -0
  102. package/dist/sdk/memory.d.ts +22 -0
  103. package/dist/sdk/memory.js +101 -0
  104. package/dist/sdk/memory.js.map +1 -0
  105. package/dist/sdk/message.d.ts +4 -0
  106. package/dist/sdk/message.js +18 -0
  107. package/dist/sdk/message.js.map +1 -0
  108. package/dist/sdk/network.d.ts +20 -0
  109. package/dist/sdk/network.js +46 -0
  110. package/dist/sdk/network.js.map +1 -0
  111. package/dist/sdk/provider-tools.d.ts +18 -0
  112. package/dist/sdk/provider-tools.js +31 -0
  113. package/dist/sdk/provider-tools.js.map +1 -0
  114. package/dist/sdk/telemetry.d.ts +31 -0
  115. package/dist/sdk/telemetry.js +186 -0
  116. package/dist/sdk/telemetry.js.map +1 -0
  117. package/dist/sdk/tool.d.ts +38 -0
  118. package/dist/sdk/tool.js +143 -0
  119. package/dist/sdk/tool.js.map +1 -0
  120. package/dist/sdk/verify.d.ts +5 -0
  121. package/dist/sdk/verify.js +37 -0
  122. package/dist/sdk/verify.js.map +1 -0
  123. package/dist/storage/postgres-memory.d.ts +79 -0
  124. package/dist/storage/postgres-memory.js +411 -0
  125. package/dist/storage/postgres-memory.js.map +1 -0
  126. package/dist/storage/sqlite-memory.d.ts +60 -0
  127. package/dist/storage/sqlite-memory.js +349 -0
  128. package/dist/storage/sqlite-memory.js.map +1 -0
  129. package/dist/types/index.d.ts +13 -0
  130. package/dist/types/index.js +6 -0
  131. package/dist/types/index.js.map +1 -0
  132. package/dist/types/runtime/event.d.ts +41 -0
  133. package/dist/types/runtime/event.js +14 -0
  134. package/dist/types/runtime/event.js.map +1 -0
  135. package/dist/types/runtime/message-list.d.ts +7 -0
  136. package/dist/types/runtime/message-list.js +3 -0
  137. package/dist/types/runtime/message-list.js.map +1 -0
  138. package/dist/types/sdk/agent.d.ts +174 -0
  139. package/dist/types/sdk/agent.js +3 -0
  140. package/dist/types/sdk/agent.js.map +1 -0
  141. package/dist/types/sdk/eval.d.ts +41 -0
  142. package/dist/types/sdk/eval.js +3 -0
  143. package/dist/types/sdk/eval.js.map +1 -0
  144. package/dist/types/sdk/guardrail.d.ts +9 -0
  145. package/dist/types/sdk/guardrail.js +3 -0
  146. package/dist/types/sdk/guardrail.js.map +1 -0
  147. package/dist/types/sdk/mcp.d.ts +24 -0
  148. package/dist/types/sdk/mcp.js +3 -0
  149. package/dist/types/sdk/mcp.js.map +1 -0
  150. package/dist/types/sdk/memory.d.ts +99 -0
  151. package/dist/types/sdk/memory.js +3 -0
  152. package/dist/types/sdk/memory.js.map +1 -0
  153. package/dist/types/sdk/message.d.ts +79 -0
  154. package/dist/types/sdk/message.js +3 -0
  155. package/dist/types/sdk/message.js.map +1 -0
  156. package/dist/types/sdk/provider.d.ts +16 -0
  157. package/dist/types/sdk/provider.js +3 -0
  158. package/dist/types/sdk/provider.js.map +1 -0
  159. package/dist/types/sdk/tool.d.ts +32 -0
  160. package/dist/types/sdk/tool.js +3 -0
  161. package/dist/types/sdk/tool.js.map +1 -0
  162. package/dist/types/telemetry.d.ts +18 -0
  163. package/dist/types/telemetry.js +3 -0
  164. package/dist/types/telemetry.js.map +1 -0
  165. package/dist/types/utils/json.d.ts +5 -0
  166. package/dist/types/utils/json.js +3 -0
  167. package/dist/types/utils/json.js.map +1 -0
  168. package/dist/utils/zod.d.ts +3 -0
  169. package/dist/utils/zod.js +7 -0
  170. package/dist/utils/zod.js.map +1 -0
  171. package/dist/workspace/filesystem/base-filesystem.d.ts +40 -0
  172. package/dist/workspace/filesystem/base-filesystem.js +99 -0
  173. package/dist/workspace/filesystem/base-filesystem.js.map +1 -0
  174. package/dist/workspace/index.d.ts +8 -0
  175. package/dist/workspace/index.js +17 -0
  176. package/dist/workspace/index.js.map +1 -0
  177. package/dist/workspace/lifecycle.d.ts +13 -0
  178. package/dist/workspace/lifecycle.js +11 -0
  179. package/dist/workspace/lifecycle.js.map +1 -0
  180. package/dist/workspace/process.d.ts +36 -0
  181. package/dist/workspace/process.js +76 -0
  182. package/dist/workspace/process.js.map +1 -0
  183. package/dist/workspace/sandbox/base-sandbox.d.ts +28 -0
  184. package/dist/workspace/sandbox/base-sandbox.js +163 -0
  185. package/dist/workspace/sandbox/base-sandbox.js.map +1 -0
  186. package/dist/workspace/tools/append-file.d.ts +3 -0
  187. package/dist/workspace/tools/append-file.js +22 -0
  188. package/dist/workspace/tools/append-file.js.map +1 -0
  189. package/dist/workspace/tools/copy-file.d.ts +3 -0
  190. package/dist/workspace/tools/copy-file.js +26 -0
  191. package/dist/workspace/tools/copy-file.js.map +1 -0
  192. package/dist/workspace/tools/delete-file.d.ts +3 -0
  193. package/dist/workspace/tools/delete-file.js +26 -0
  194. package/dist/workspace/tools/delete-file.js.map +1 -0
  195. package/dist/workspace/tools/execute-command.d.ts +3 -0
  196. package/dist/workspace/tools/execute-command.js +39 -0
  197. package/dist/workspace/tools/execute-command.js.map +1 -0
  198. package/dist/workspace/tools/file-stat.d.ts +3 -0
  199. package/dist/workspace/tools/file-stat.js +33 -0
  200. package/dist/workspace/tools/file-stat.js.map +1 -0
  201. package/dist/workspace/tools/list-files.d.ts +3 -0
  202. package/dist/workspace/tools/list-files.js +28 -0
  203. package/dist/workspace/tools/list-files.js.map +1 -0
  204. package/dist/workspace/tools/mkdir.d.ts +3 -0
  205. package/dist/workspace/tools/mkdir.js +22 -0
  206. package/dist/workspace/tools/mkdir.js.map +1 -0
  207. package/dist/workspace/tools/move-file.d.ts +3 -0
  208. package/dist/workspace/tools/move-file.js +26 -0
  209. package/dist/workspace/tools/move-file.js.map +1 -0
  210. package/dist/workspace/tools/process-tools.d.ts +4 -0
  211. package/dist/workspace/tools/process-tools.js +37 -0
  212. package/dist/workspace/tools/process-tools.js.map +1 -0
  213. package/dist/workspace/tools/read-file.d.ts +3 -0
  214. package/dist/workspace/tools/read-file.js +24 -0
  215. package/dist/workspace/tools/read-file.js.map +1 -0
  216. package/dist/workspace/tools/rmdir.d.ts +3 -0
  217. package/dist/workspace/tools/rmdir.js +26 -0
  218. package/dist/workspace/tools/rmdir.js.map +1 -0
  219. package/dist/workspace/tools/workspace-tools.d.ts +8 -0
  220. package/dist/workspace/tools/workspace-tools.js +39 -0
  221. package/dist/workspace/tools/workspace-tools.js.map +1 -0
  222. package/dist/workspace/tools/write-file.d.ts +3 -0
  223. package/dist/workspace/tools/write-file.js +26 -0
  224. package/dist/workspace/tools/write-file.js.map +1 -0
  225. package/dist/workspace/types.d.ts +178 -0
  226. package/dist/workspace/types.js +7 -0
  227. package/dist/workspace/types.js.map +1 -0
  228. package/dist/workspace/workspace.d.ts +21 -0
  229. package/dist/workspace/workspace.js +131 -0
  230. package/dist/workspace/workspace.js.map +1 -0
  231. package/package.json +65 -0
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluate = evaluate;
4
+ const message_1 = require("./message");
5
+ function extractText(messages) {
6
+ return (0, message_1.filterLlmMessages)(messages)
7
+ .flatMap((m) => m.content)
8
+ .filter((c) => c.type === 'text')
9
+ .map((c) => c.text)
10
+ .join('');
11
+ }
12
+ async function evaluate(agent, config) {
13
+ const { dataset, evals } = config;
14
+ const runs = await Promise.all(dataset.map(async (row) => {
15
+ const result = await runWithInterrupts(agent, row.input, row.resumeData);
16
+ const toolCalls = result.toolCalls ?? [];
17
+ let output = extractText(result.messages);
18
+ if (!output.trim() && toolCalls.length > 0) {
19
+ const toolOutputs = toolCalls
20
+ .filter((tc) => tc.output !== undefined)
21
+ .map((tc) => `[${tc.tool}] ${JSON.stringify(tc.output)}`);
22
+ if (toolOutputs.length > 0) {
23
+ output = toolOutputs.join('\n');
24
+ }
25
+ }
26
+ const scoreEntries = await Promise.all(evals.map(async (ev) => {
27
+ const score = await ev.run({
28
+ input: row.input,
29
+ output,
30
+ expected: row.expected,
31
+ toolCalls,
32
+ });
33
+ return [ev.name, score];
34
+ }));
35
+ return {
36
+ input: row.input,
37
+ output,
38
+ expected: row.expected,
39
+ scores: Object.fromEntries(scoreEntries),
40
+ };
41
+ }));
42
+ const summary = {};
43
+ for (const ev of evals) {
44
+ const results = runs
45
+ .map((r) => r.scores[ev.name]?.pass)
46
+ .filter((p) => p !== undefined);
47
+ if (results.length > 0) {
48
+ const passed = results.filter(Boolean).length;
49
+ summary[ev.name] = {
50
+ passed,
51
+ failed: results.length - passed,
52
+ total: results.length,
53
+ };
54
+ }
55
+ }
56
+ return { runs, summary };
57
+ }
58
+ async function runWithInterrupts(agent, input, resumeOverrides) {
59
+ let result = await agent.generate(input);
60
+ const allToolCalls = [
61
+ ...(result.toolCalls ?? []),
62
+ ];
63
+ while (result.pendingSuspend && result.pendingSuspend.length > 0) {
64
+ const { runId, toolCallId, toolName } = result.pendingSuspend[0];
65
+ const override = toolName ? resumeOverrides?.[toolName] : undefined;
66
+ let data;
67
+ if (override === 'deny') {
68
+ data = { approved: false };
69
+ }
70
+ else if (override && typeof override === 'object') {
71
+ data = override;
72
+ }
73
+ else {
74
+ data = { approved: true };
75
+ }
76
+ result = await agent.resume('generate', data, { runId, toolCallId });
77
+ allToolCalls.push(...(result.toolCalls ?? []));
78
+ }
79
+ return {
80
+ ...result,
81
+ ...(allToolCalls.length > 0 ? { toolCalls: allToolCalls } : {}),
82
+ };
83
+ }
84
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/sdk/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { BuiltGuardrail, GuardrailType, GuardrailStrategy, PiiDetectionType } from '../types';
2
+ export declare class Guardrail {
3
+ private name;
4
+ private guardType?;
5
+ private strategyType?;
6
+ private detectionTypes?;
7
+ private thresholdValue?;
8
+ constructor(name: string);
9
+ type(guardType: GuardrailType): this;
10
+ strategy(strategy: GuardrailStrategy): this;
11
+ detect(types: PiiDetectionType[]): this;
12
+ threshold(value: number): this;
13
+ build(): BuiltGuardrail;
14
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Guardrail = void 0;
4
+ class Guardrail {
5
+ constructor(name) {
6
+ this.name = name;
7
+ }
8
+ type(guardType) {
9
+ this.guardType = guardType;
10
+ return this;
11
+ }
12
+ strategy(strategy) {
13
+ this.strategyType = strategy;
14
+ return this;
15
+ }
16
+ detect(types) {
17
+ this.detectionTypes = types;
18
+ return this;
19
+ }
20
+ threshold(value) {
21
+ this.thresholdValue = value;
22
+ return this;
23
+ }
24
+ build() {
25
+ if (!this.guardType)
26
+ throw new Error(`Guardrail "${this.name}" requires a type`);
27
+ if (!this.strategyType)
28
+ throw new Error(`Guardrail "${this.name}" requires a strategy`);
29
+ return {
30
+ name: this.name,
31
+ guardType: this.guardType,
32
+ strategy: this.strategyType,
33
+ _config: {
34
+ detectionTypes: this.detectionTypes,
35
+ threshold: this.thresholdValue,
36
+ },
37
+ };
38
+ }
39
+ }
40
+ exports.Guardrail = Guardrail;
41
+ //# sourceMappingURL=guardrail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail.js","sourceRoot":"","sources":["../../src/sdk/guardrail.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAWrB,YAAY,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,SAAwB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,QAAQ,CAAC,QAA2B;QACnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAyB;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,CAAC,KAAa;QACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAExF,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,OAAO,EAAE;gBACR,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS,EAAE,IAAI,CAAC,cAAc;aAC9B;SACD,CAAC;IACH,CAAC;CACD;AAjDD,8BAiDC"}
@@ -0,0 +1,16 @@
1
+ import type { McpServerConfig, McpVerifyResult } from '../types/sdk/mcp';
2
+ import type { BuiltTool } from '../types/sdk/tool';
3
+ export declare class McpClient {
4
+ private readonly configs;
5
+ private connections;
6
+ private listToolsPromise;
7
+ private closePromise;
8
+ constructor(configs: McpServerConfig[], requireToolApproval?: boolean);
9
+ connect(): Promise<void>;
10
+ listTools(): Promise<BuiltTool[]>;
11
+ close(): Promise<void>;
12
+ verify(): Promise<McpVerifyResult>;
13
+ declaresApproval(): boolean;
14
+ private doListTools;
15
+ private doClose;
16
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpClient = void 0;
4
+ const mcp_connection_1 = require("../runtime/mcp-connection");
5
+ class McpClient {
6
+ constructor(configs, requireToolApproval = false) {
7
+ for (const cfg of configs) {
8
+ if (!cfg.url && !cfg.command) {
9
+ throw new Error(`MCP server "${cfg.name}": exactly one of "url" or "command" must be provided`);
10
+ }
11
+ if (cfg.url && cfg.command) {
12
+ throw new Error(`MCP server "${cfg.name}": provide either "url" or "command", not both`);
13
+ }
14
+ }
15
+ const seen = new Set();
16
+ for (const cfg of configs) {
17
+ if (seen.has(cfg.name)) {
18
+ throw new Error(`MCP server name "${cfg.name}" is already registered`);
19
+ }
20
+ seen.add(cfg.name);
21
+ }
22
+ this.configs = configs;
23
+ this.connections = configs.map((cfg) => new mcp_connection_1.McpConnection(cfg, requireToolApproval));
24
+ }
25
+ async connect() {
26
+ await this.listTools();
27
+ }
28
+ async listTools() {
29
+ if (!this.listToolsPromise) {
30
+ const p = this.doListTools();
31
+ this.listToolsPromise = p;
32
+ p.catch(() => {
33
+ if (this.listToolsPromise === p)
34
+ this.listToolsPromise = undefined;
35
+ });
36
+ }
37
+ return await this.listToolsPromise;
38
+ }
39
+ async close() {
40
+ this.closePromise ??= this.doClose();
41
+ return await this.closePromise;
42
+ }
43
+ async verify() {
44
+ if (this.configs.length === 0) {
45
+ return { ok: true, servers: [] };
46
+ }
47
+ const results = await Promise.allSettled(this.configs.map(async (cfg) => {
48
+ const conn = new mcp_connection_1.McpConnection(cfg);
49
+ try {
50
+ await conn.connect();
51
+ const tools = await conn.listTools();
52
+ return { name: cfg.name, tools: tools.length };
53
+ }
54
+ finally {
55
+ await conn.disconnect().catch(() => { });
56
+ }
57
+ }));
58
+ const errors = [];
59
+ const servers = [];
60
+ for (let i = 0; i < results.length; i++) {
61
+ const result = results[i];
62
+ if (result.status === 'rejected') {
63
+ errors.push({
64
+ server: this.configs[i].name,
65
+ error: result.reason instanceof Error ? result.reason.message : String(result.reason),
66
+ });
67
+ }
68
+ else {
69
+ servers.push(result.value);
70
+ }
71
+ }
72
+ return errors.length > 0 ? { ok: false, errors } : { ok: true, servers };
73
+ }
74
+ declaresApproval() {
75
+ return this.connections.some((conn) => conn.declaresApproval());
76
+ }
77
+ async doListTools() {
78
+ const connectedConnections = [];
79
+ const settled = await Promise.allSettled(this.connections.map(async (conn) => {
80
+ await conn.connect();
81
+ connectedConnections.push(conn);
82
+ return await conn.listTools();
83
+ }));
84
+ const failed = settled
85
+ .map((r, i) => ({ result: r, name: this.connections[i].name }))
86
+ .filter((x) => x.result.status === 'rejected');
87
+ if (failed.length > 0) {
88
+ await Promise.allSettled(connectedConnections.map(async (c) => await c.disconnect()));
89
+ const details = failed
90
+ .map((x) => {
91
+ const reason = x.result.status === 'rejected'
92
+ ? x.result.reason instanceof Error
93
+ ? x.result.reason.message
94
+ : String(x.result.reason)
95
+ : '';
96
+ return `${x.name}: ${reason}`;
97
+ })
98
+ .join('; ');
99
+ throw new Error(`MCP connection failed — ${details}`);
100
+ }
101
+ const tools = settled.flatMap((r) => (r.status === 'fulfilled' ? r.value : []));
102
+ const seen = new Set();
103
+ const duplicates = [];
104
+ for (const tool of tools) {
105
+ if (seen.has(tool.name)) {
106
+ duplicates.push(tool.name);
107
+ }
108
+ seen.add(tool.name);
109
+ }
110
+ if (duplicates.length > 0) {
111
+ await Promise.allSettled(connectedConnections.map(async (c) => await c.disconnect()));
112
+ throw new Error(`MCP tool name collision — the following tool names resolve to duplicates: ${duplicates.join(', ')}`);
113
+ }
114
+ return tools;
115
+ }
116
+ async doClose() {
117
+ await Promise.allSettled(this.connections.map(async (conn) => {
118
+ try {
119
+ await conn.disconnect();
120
+ }
121
+ catch (error) {
122
+ console.error(`MCP disconnect error for server "${conn.name}":`, error);
123
+ }
124
+ }));
125
+ }
126
+ }
127
+ exports.McpClient = McpClient;
128
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/sdk/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { z } from 'zod';
2
+ import type { BuiltMemory, MemoryConfig, SemanticRecallConfig, TitleGenerationConfig } from '../types';
3
+ type ZodObjectSchema = z.ZodObject<z.ZodRawShape>;
4
+ export declare class Memory {
5
+ private lastMessagesValue;
6
+ private semanticRecallConfig?;
7
+ private workingMemorySchema?;
8
+ private workingMemoryTemplate?;
9
+ private workingMemoryScope;
10
+ private memoryBackend?;
11
+ private titleGenerationConfig?;
12
+ get lastMessageCount(): number;
13
+ storage(backend: 'memory' | BuiltMemory): this;
14
+ lastMessages(count: number): this;
15
+ semanticRecall(config: SemanticRecallConfig): this;
16
+ structured(schema: ZodObjectSchema): this;
17
+ freeform(template: string): this;
18
+ scope(s: 'resource' | 'thread'): this;
19
+ titleGeneration(config: boolean | TitleGenerationConfig): this;
20
+ build(): MemoryConfig;
21
+ }
22
+ export {};
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Memory = void 0;
4
+ const memory_store_1 = require("../runtime/memory-store");
5
+ const working_memory_1 = require("../runtime/working-memory");
6
+ const DEFAULT_LAST_MESSAGES = 10;
7
+ class Memory {
8
+ constructor() {
9
+ this.lastMessagesValue = DEFAULT_LAST_MESSAGES;
10
+ this.workingMemoryScope = 'resource';
11
+ }
12
+ get lastMessageCount() {
13
+ return this.lastMessagesValue;
14
+ }
15
+ storage(backend) {
16
+ if (backend === 'memory') {
17
+ this.memoryBackend = undefined;
18
+ }
19
+ else {
20
+ this.memoryBackend = backend;
21
+ }
22
+ return this;
23
+ }
24
+ lastMessages(count) {
25
+ this.lastMessagesValue = count;
26
+ return this;
27
+ }
28
+ semanticRecall(config) {
29
+ this.semanticRecallConfig = config;
30
+ return this;
31
+ }
32
+ structured(schema) {
33
+ this.workingMemorySchema = schema;
34
+ return this;
35
+ }
36
+ freeform(template) {
37
+ this.workingMemoryTemplate = template;
38
+ return this;
39
+ }
40
+ scope(s) {
41
+ this.workingMemoryScope = s;
42
+ return this;
43
+ }
44
+ titleGeneration(config) {
45
+ if (config === true) {
46
+ this.titleGenerationConfig = {};
47
+ }
48
+ else if (config === false) {
49
+ this.titleGenerationConfig = undefined;
50
+ }
51
+ else {
52
+ this.titleGenerationConfig = config;
53
+ }
54
+ return this;
55
+ }
56
+ build() {
57
+ if (this.workingMemorySchema && this.workingMemoryTemplate !== undefined) {
58
+ throw new Error('Working memory cannot use both .structured() and .freeform(). ' +
59
+ 'Choose one: .structured(zodSchema) for typed state, or .freeform(template) for free-form text.');
60
+ }
61
+ if (this.workingMemoryTemplate !== undefined && this.workingMemoryTemplate.trim() === '') {
62
+ throw new Error('Free-form working memory template cannot be empty. ' +
63
+ 'Provide a markdown template with slots for the agent to fill.');
64
+ }
65
+ const memory = this.memoryBackend ?? new memory_store_1.InMemoryMemory();
66
+ if (this.semanticRecallConfig) {
67
+ if (!memory.queryEmbeddings && !memory.search) {
68
+ throw new Error('Semantic recall requires a storage backend with queryEmbeddings() or search() support.');
69
+ }
70
+ if (!memory.search && !this.semanticRecallConfig.embedder) {
71
+ throw new Error('Semantic recall requires an embedder when using queryEmbeddings(). Add embedder to your semanticRecall config: ' +
72
+ ".semanticRecall({ topK: 5, embedder: 'openai/text-embedding-3-small' })");
73
+ }
74
+ }
75
+ let workingMemory;
76
+ if (this.workingMemorySchema) {
77
+ workingMemory = {
78
+ template: (0, working_memory_1.templateFromSchema)(this.workingMemorySchema),
79
+ structured: true,
80
+ schema: this.workingMemorySchema,
81
+ scope: this.workingMemoryScope,
82
+ };
83
+ }
84
+ else if (this.workingMemoryTemplate !== undefined) {
85
+ workingMemory = {
86
+ template: this.workingMemoryTemplate,
87
+ structured: false,
88
+ scope: this.workingMemoryScope,
89
+ };
90
+ }
91
+ return {
92
+ memory,
93
+ lastMessages: this.lastMessagesValue,
94
+ workingMemory,
95
+ semanticRecall: this.semanticRecallConfig,
96
+ titleGeneration: this.titleGenerationConfig,
97
+ };
98
+ }
99
+ }
100
+ exports.Memory = Memory;
101
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/sdk/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AgentDbMessage, AgentMessage, Message } from '../types/sdk/message';
2
+ export declare function toDbMessage(message: AgentMessage): AgentDbMessage;
3
+ export declare function isLlmMessage(message: AgentMessage): message is Message;
4
+ export declare function filterLlmMessages(messages: AgentMessage[]): Message[];
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toDbMessage = toDbMessage;
4
+ exports.isLlmMessage = isLlmMessage;
5
+ exports.filterLlmMessages = filterLlmMessages;
6
+ function toDbMessage(message) {
7
+ if ('id' in message && typeof message.id === 'string') {
8
+ return message;
9
+ }
10
+ return { ...message, id: crypto.randomUUID() };
11
+ }
12
+ function isLlmMessage(message) {
13
+ return message.type !== 'custom';
14
+ }
15
+ function filterLlmMessages(messages) {
16
+ return messages.filter(isLlmMessage);
17
+ }
18
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/sdk/message.ts"],"names":[],"mappings":";;AAMA,kCAKC;AAED,oCAEC;AAED,8CAEC;AAbD,SAAgB,WAAW,CAAC,OAAqB;IAChD,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,OAAyB,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;AAChD,CAAC;AAED,SAAgB,YAAY,CAAC,OAAqB;IACjD,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAwB;IACzD,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Agent } from './agent';
2
+ import type { GenerateResult, RunOptions } from '../types';
3
+ interface BuiltNetwork {
4
+ readonly name: string;
5
+ run(prompt: string, options?: RunOptions): Promise<GenerateResult>;
6
+ }
7
+ export declare class Network {
8
+ private networkName;
9
+ private coordinatorAgent?;
10
+ private agents;
11
+ private built?;
12
+ constructor(name: string);
13
+ coordinator(a: Agent): this;
14
+ agent(a: Agent): this;
15
+ private ensureBuilt;
16
+ get name(): string;
17
+ run(prompt: string, options?: RunOptions): Promise<GenerateResult>;
18
+ protected build(): BuiltNetwork;
19
+ }
20
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Network = void 0;
4
+ class Network {
5
+ constructor(name) {
6
+ this.agents = [];
7
+ this.networkName = name;
8
+ }
9
+ coordinator(a) {
10
+ this.coordinatorAgent = a;
11
+ return this;
12
+ }
13
+ agent(a) {
14
+ this.agents.push(a);
15
+ return this;
16
+ }
17
+ ensureBuilt() {
18
+ this.built ??= this.build();
19
+ return this.built;
20
+ }
21
+ get name() {
22
+ return this.networkName;
23
+ }
24
+ async run(prompt, options) {
25
+ return await this.ensureBuilt().run(prompt, options);
26
+ }
27
+ build() {
28
+ if (!this.coordinatorAgent) {
29
+ throw new Error(`Network "${this.networkName}" requires a coordinator`);
30
+ }
31
+ if (this.agents.length === 0) {
32
+ throw new Error(`Network "${this.networkName}" requires at least one agent`);
33
+ }
34
+ const coordinator = this.coordinatorAgent;
35
+ const name = this.networkName;
36
+ return {
37
+ name,
38
+ async run(prompt, options) {
39
+ const messages = [{ role: 'user', content: [{ type: 'text', text: prompt }] }];
40
+ return await coordinator.generate(messages, options);
41
+ },
42
+ };
43
+ }
44
+ }
45
+ exports.Network = Network;
46
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sdk/network.ts"],"names":[],"mappings":";;;AAsBA,MAAa,OAAO;IASnB,YAAY,IAAY;QAJhB,WAAM,GAAY,EAAE,CAAC;QAK5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAGD,WAAW,CAAC,CAAQ;QACnB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,KAAK,CAAC,CAAQ;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAGO,WAAW;QAClB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAGD,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,OAAoB;QAC7C,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAGS,KAAK;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,0BAA0B,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,+BAA+B,CAAC,CAAC;QAC9E,CAAC;QAOD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAE9B,OAAO;YACN,IAAI;YAEJ,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,OAAoB;gBAC7C,MAAM,QAAQ,GAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1F,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;SACD,CAAC;IACH,CAAC;CACD;AAnED,0BAmEC"}
@@ -0,0 +1,18 @@
1
+ import type { BuiltProviderTool } from '../types';
2
+ interface WebSearchConfig {
3
+ maxUses?: number;
4
+ allowedDomains?: string[];
5
+ blockedDomains?: string[];
6
+ userLocation?: {
7
+ type: 'approximate';
8
+ city?: string;
9
+ region?: string;
10
+ country?: string;
11
+ timezone?: string;
12
+ };
13
+ }
14
+ export declare const providerTools: {
15
+ anthropicWebSearch(config?: WebSearchConfig): BuiltProviderTool;
16
+ openaiImageGeneration(): BuiltProviderTool;
17
+ };
18
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.providerTools = void 0;
4
+ exports.providerTools = {
5
+ anthropicWebSearch(config) {
6
+ const args = {};
7
+ if (config?.maxUses !== undefined) {
8
+ args.maxUses = config.maxUses;
9
+ }
10
+ if (config?.allowedDomains) {
11
+ args.allowedDomains = config.allowedDomains;
12
+ }
13
+ if (config?.blockedDomains) {
14
+ args.blockedDomains = config.blockedDomains;
15
+ }
16
+ if (config?.userLocation) {
17
+ args.userLocation = config.userLocation;
18
+ }
19
+ return {
20
+ name: 'anthropic.web_search_20250305',
21
+ args,
22
+ };
23
+ },
24
+ openaiImageGeneration() {
25
+ return {
26
+ name: 'openai.image_generation',
27
+ args: {},
28
+ };
29
+ },
30
+ };
31
+ //# sourceMappingURL=provider-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-tools.js","sourceRoot":"","sources":["../../src/sdk/provider-tools.ts"],"names":[],"mappings":";;;AAsBa,QAAA,aAAa,GAAG;IAgB5B,kBAAkB,CAAC,MAAwB;QAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACzC,CAAC;QAED,OAAO;YACN,IAAI,EAAE,+BAA+B;YACrC,IAAI;SACJ,CAAC;IACH,CAAC;IAED,qBAAqB;QACpB,OAAO;YACN,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,EAAE;SACR,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { TelemetryIntegration } from 'ai';
2
+ import type { AttributeValue, BuiltTelemetry, OpaqueTracer } from '../types/telemetry';
3
+ type RedactFn = (data: Record<string, unknown>) => Record<string, unknown>;
4
+ export declare class Telemetry {
5
+ protected enabledValue: boolean;
6
+ protected functionIdValue?: string;
7
+ protected metadataValue?: Record<string, AttributeValue>;
8
+ protected recordInputsValue: boolean;
9
+ protected recordOutputsValue: boolean;
10
+ protected redactFn?: RedactFn;
11
+ protected integrationsList: TelemetryIntegration[];
12
+ protected tracerValue?: OpaqueTracer;
13
+ protected otlpEndpointValue?: string;
14
+ protected credentialNameValue?: string;
15
+ credential(name: string): this;
16
+ get declaredCredential(): string | undefined;
17
+ protected resolvedKey?: string;
18
+ set resolvedApiKey(key: string);
19
+ enabled(value: boolean): this;
20
+ functionId(value: string): this;
21
+ metadata(value: Record<string, AttributeValue>): this;
22
+ recordInputs(value: boolean): this;
23
+ recordOutputs(value: boolean): this;
24
+ redact(fn: RedactFn): this;
25
+ integration(value: TelemetryIntegration): this;
26
+ tracer(value: OpaqueTracer): this;
27
+ otlpEndpoint(value: string): this;
28
+ build(): Promise<BuiltTelemetry>;
29
+ static shutdown(telemetry: BuiltTelemetry): Promise<void>;
30
+ }
31
+ export {};