@dawn-ai/langchain 0.8.8 → 0.8.10
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/agent-adapter.d.ts.map +1 -1
- package/dist/agent-adapter.js +3 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/openai-embedder.d.ts +7 -0
- package/dist/openai-embedder.d.ts.map +1 -0
- package/dist/openai-embedder.js +39 -0
- package/dist/tool-converter.d.ts +3 -1
- package/dist/tool-converter.d.ts.map +1 -1
- package/dist/tool-converter.js +17 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../src/agent-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,0BAA0B,CAAA;AAE7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAI1E,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAMpF,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAC3F,OAAO,EAA0B,KAAK,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACnG,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,sBAAsB,GAAG,SAAS,CAAA;AAEvF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,CACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;KAC7B,KACE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAkCD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,SAAS,cAAc,EAAE,EAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,eAAe,EAAE,CAQnB;
|
|
1
|
+
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../src/agent-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-adapter.js
CHANGED
|
@@ -49,7 +49,7 @@ async function materializeAgent(descriptor, tools, checkpointer, opts = {}) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
const { createReactAgent } = await import("@langchain/langgraph/prebuilt");
|
|
52
|
-
const langchainTools = tools.map((tool) => convertToolToLangChain(tool, opts.middlewareContext, opts.offload));
|
|
52
|
+
const langchainTools = tools.map((tool) => convertToolToLangChain(tool, opts.middlewareContext, opts.offload, opts.routeParamNames ?? []));
|
|
53
53
|
const provider = resolveProvider({
|
|
54
54
|
model: descriptor.model,
|
|
55
55
|
...(descriptor.provider !== undefined ? { provider: descriptor.provider } : {}),
|
|
@@ -279,6 +279,7 @@ export async function* streamAgent(options) {
|
|
|
279
279
|
...((resolver && hasTaskTool) || options.sandboxed ? { bypassCache: true } : {}),
|
|
280
280
|
...(options.offload ? { offload: options.offload } : {}),
|
|
281
281
|
...(options.summarization ? { summarization: options.summarization } : {}),
|
|
282
|
+
routeParamNames: options.routeParamNames,
|
|
282
283
|
});
|
|
283
284
|
const retryConfig = options.entry.retry;
|
|
284
285
|
const runnableInput = isCommandInput ? options.input : { messages };
|
|
@@ -287,7 +288,7 @@ export async function* streamAgent(options) {
|
|
|
287
288
|
}
|
|
288
289
|
// Legacy path — raw Runnable with .invoke()
|
|
289
290
|
assertAgentLike(options.entry);
|
|
290
|
-
const langchainTools = effectiveTools.map((tool) => convertToolToLangChain(tool, options.middlewareContext, options.offload));
|
|
291
|
+
const langchainTools = effectiveTools.map((tool) => convertToolToLangChain(tool, options.middlewareContext, options.offload, options.routeParamNames));
|
|
291
292
|
if (langchainTools.length > 0) {
|
|
292
293
|
config.tools = langchainTools;
|
|
293
294
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { buildOffloadFileName, OffloadStore } from "./offload/offload-store.js";
|
|
|
10
10
|
export type { OffloadToolOutputCtx } from "./offload/offload-tool-output.js";
|
|
11
11
|
export { offloadToolOutput } from "./offload/offload-tool-output.js";
|
|
12
12
|
export { buildStub } from "./offload/stub.js";
|
|
13
|
+
export { openaiEmbedder } from "./openai-embedder.js";
|
|
13
14
|
export type { RetryOptions } from "./retry.js";
|
|
14
15
|
export { isRetryableError, withRetry } from "./retry.js";
|
|
15
16
|
export { materializeStateSchema } from "./state-adapter.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,iCAAiC,EACjC,YAAY,EACZ,qBAAqB,EACrB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC/E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,YAAY,EACV,aAAa,EACb,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,iCAAiC,EACjC,YAAY,EACZ,qBAAqB,EACrB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC/E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,YAAY,EACV,aAAa,EACb,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { inferProvider, resolveProvider } from "./model-provider-resolver.js";
|
|
|
6
6
|
export { buildOffloadFileName, OffloadStore } from "./offload/offload-store.js";
|
|
7
7
|
export { offloadToolOutput } from "./offload/offload-tool-output.js";
|
|
8
8
|
export { buildStub } from "./offload/stub.js";
|
|
9
|
+
export { openaiEmbedder } from "./openai-embedder.js";
|
|
9
10
|
export { isRetryableError, withRetry } from "./retry.js";
|
|
10
11
|
export { materializeStateSchema } from "./state-adapter.js";
|
|
11
12
|
export { createSubagentStreamContext, dispatchSubagent, MAX_SUBAGENT_DEPTH, } from "./subagent-dispatcher.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Embedder } from "@dawn-ai/core";
|
|
2
|
+
/** OpenAI embedder over the shared OPENAI_BASE_URL seam (aimock-mockable). */
|
|
3
|
+
export declare function openaiEmbedder(opts?: {
|
|
4
|
+
readonly model?: string;
|
|
5
|
+
readonly importer?: (s: string) => Promise<Record<string, unknown>>;
|
|
6
|
+
}): Embedder;
|
|
7
|
+
//# sourceMappingURL=openai-embedder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-embedder.d.ts","sourceRoot":"","sources":["../src/openai-embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAO7C,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACpE,GAAG,QAAQ,CAoCX"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const DIMS = {
|
|
2
|
+
"text-embedding-3-small": 1536,
|
|
3
|
+
"text-embedding-3-large": 3072,
|
|
4
|
+
};
|
|
5
|
+
/** OpenAI embedder over the shared OPENAI_BASE_URL seam (aimock-mockable). */
|
|
6
|
+
export function openaiEmbedder(opts) {
|
|
7
|
+
const model = opts?.model ?? "text-embedding-3-small";
|
|
8
|
+
const importer = opts?.importer ?? ((s) => import(s));
|
|
9
|
+
let clientP;
|
|
10
|
+
async function client() {
|
|
11
|
+
if (!clientP) {
|
|
12
|
+
clientP = importer("@langchain/openai").then((m) => {
|
|
13
|
+
const Ctor = m.OpenAIEmbeddings;
|
|
14
|
+
const baseURL = process.env.OPENAI_BASE_URL;
|
|
15
|
+
return new Ctor({
|
|
16
|
+
model,
|
|
17
|
+
// Request float arrays explicitly. The OpenAI SDK defaults to base64
|
|
18
|
+
// encoding for embeddings; pinning "float" avoids base64 decode
|
|
19
|
+
// interop quirks (some mocks/proxies return a byte length that decodes
|
|
20
|
+
// to the wrong dimension) and yields the model's true dimensionality.
|
|
21
|
+
encodingFormat: "float",
|
|
22
|
+
...(baseURL ? { configuration: { baseURL } } : {}),
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return clientP;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
id: `openai:${model}`,
|
|
30
|
+
dims: DIMS[model] ?? 1536,
|
|
31
|
+
async embed(texts) {
|
|
32
|
+
if (texts.length === 0)
|
|
33
|
+
return [];
|
|
34
|
+
const c = await client();
|
|
35
|
+
const raw = await c.embedDocuments([...texts]);
|
|
36
|
+
return raw.map((v) => Float32Array.from(v));
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
package/dist/tool-converter.d.ts
CHANGED
|
@@ -7,11 +7,13 @@ interface DawnToolDefinition {
|
|
|
7
7
|
readonly run: (input: unknown, context: {
|
|
8
8
|
readonly middleware?: Readonly<Record<string, unknown>>;
|
|
9
9
|
readonly signal: AbortSignal;
|
|
10
|
+
readonly threadId?: string;
|
|
11
|
+
readonly params?: Readonly<Record<string, string>>;
|
|
10
12
|
}) => Promise<unknown> | unknown;
|
|
11
13
|
readonly schema?: unknown;
|
|
12
14
|
}
|
|
13
15
|
export type OffloadFn = (content: string, toolName: string, toolCallId?: string) => Promise<string>;
|
|
14
|
-
export declare function convertToolToLangChain(tool: DawnToolDefinition, middlewareContext?: Readonly<Record<string, unknown>>, offload?: OffloadFn): DynamicStructuredTool;
|
|
16
|
+
export declare function convertToolToLangChain(tool: DawnToolDefinition, middlewareContext?: Readonly<Record<string, unknown>>, offload?: OffloadFn, routeParamNames?: readonly string[]): DynamicStructuredTool;
|
|
15
17
|
export declare function jsonSchemaToZod(schema: JsonSchemaProperty): z.ZodObject<z.ZodRawShape>;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=tool-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-converter.d.ts","sourceRoot":"","sources":["../src/tool-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,CACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"tool-converter.d.ts","sourceRoot":"","sources":["../src/tool-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,CACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;QAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KACnD,KACE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEnG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,EACxB,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,SAAS,EACnB,eAAe,GAAE,SAAS,MAAM,EAAO,GACtC,qBAAqB,CAqDvB;AA6BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAEtF"}
|
package/dist/tool-converter.js
CHANGED
|
@@ -3,17 +3,33 @@ import { DynamicStructuredTool } from "@langchain/core/tools";
|
|
|
3
3
|
import { Command } from "@langchain/langgraph";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { unwrapToolResult } from "./unwrap-tool-result.js";
|
|
6
|
-
export function convertToolToLangChain(tool, middlewareContext, offload) {
|
|
6
|
+
export function convertToolToLangChain(tool, middlewareContext, offload, routeParamNames = []) {
|
|
7
7
|
const schema = toZodSchema(tool.schema);
|
|
8
|
+
const paramNameSet = new Set(routeParamNames);
|
|
8
9
|
return new DynamicStructuredTool({
|
|
9
10
|
name: tool.name,
|
|
10
11
|
description: tool.description ?? "",
|
|
11
12
|
schema,
|
|
12
13
|
func: async (input, _runManager, config) => {
|
|
13
14
|
const signal = config?.signal ?? new AbortController().signal;
|
|
15
|
+
// config.configurable carries thread_id + the route params (set by the
|
|
16
|
+
// agent-adapter's prepareAgentCall). Forward them so tools — and the
|
|
17
|
+
// argument-constraint wrapper — can read live per-call identity.
|
|
18
|
+
const configurable = (config?.configurable ?? {});
|
|
19
|
+
const threadId = typeof configurable.thread_id === "string" ? configurable.thread_id : undefined;
|
|
20
|
+
// Allowlist against the route's declared param names. A denylist would
|
|
21
|
+
// also capture LangGraph internals injected into configurable (e.g.
|
|
22
|
+
// checkpoint_ns, __pregel_task_id), which must never surface as route params.
|
|
23
|
+
const params = {};
|
|
24
|
+
for (const [key, value] of Object.entries(configurable)) {
|
|
25
|
+
if (paramNameSet.has(key) && typeof value === "string")
|
|
26
|
+
params[key] = value;
|
|
27
|
+
}
|
|
14
28
|
const rawResult = await tool.run(input, {
|
|
15
29
|
...(middlewareContext ? { middleware: middlewareContext } : {}),
|
|
16
30
|
signal,
|
|
31
|
+
...(threadId ? { threadId } : {}),
|
|
32
|
+
...(Object.keys(params).length > 0 ? { params } : {}),
|
|
17
33
|
});
|
|
18
34
|
const { content, stateUpdates } = unwrapToolResult(rawResult);
|
|
19
35
|
const toolCallId = extractToolCallId(config);
|