@anvia/core 0.26.0 → 1.0.0-rc.2
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 +303 -94
- package/dist/agent/index.d.ts +36 -70
- package/dist/agent/index.js +25 -18
- package/dist/agent-yBG8e9Jj.d.ts +153 -0
- package/dist/chunk-4WI3VGZK.js +127 -0
- package/dist/chunk-4WI3VGZK.js.map +1 -0
- package/dist/chunk-77AIYARB.js +654 -0
- package/dist/chunk-77AIYARB.js.map +1 -0
- package/dist/chunk-AI5JMUW7.js +45 -0
- package/dist/chunk-AI5JMUW7.js.map +1 -0
- package/dist/chunk-BEYBU7VJ.js +53 -0
- package/dist/chunk-BEYBU7VJ.js.map +1 -0
- package/dist/chunk-CWM7B2OO.js +315 -0
- package/dist/chunk-CWM7B2OO.js.map +1 -0
- package/dist/chunk-D37WMSP6.js +131 -0
- package/dist/chunk-D37WMSP6.js.map +1 -0
- package/dist/chunk-DBSCKTUL.js +3793 -0
- package/dist/chunk-DBSCKTUL.js.map +1 -0
- package/dist/chunk-EINTGEGY.js +629 -0
- package/dist/chunk-EINTGEGY.js.map +1 -0
- package/dist/chunk-FMHLROPQ.js +351 -0
- package/dist/chunk-FMHLROPQ.js.map +1 -0
- package/dist/chunk-FN7HLLAZ.js +211 -0
- package/dist/chunk-FN7HLLAZ.js.map +1 -0
- package/dist/chunk-GKDERULJ.js +50 -0
- package/dist/chunk-GKDERULJ.js.map +1 -0
- package/dist/{chunk-CWUJUSOS.js → chunk-KIDGIJM7.js} +26 -5
- package/dist/chunk-KIDGIJM7.js.map +1 -0
- package/dist/chunk-KR3RCCHJ.js +500 -0
- package/dist/chunk-KR3RCCHJ.js.map +1 -0
- package/dist/chunk-MGNTXGTX.js +37 -0
- package/dist/chunk-MGNTXGTX.js.map +1 -0
- package/dist/{chunk-MRQLEK2B.js → chunk-OJH6HWHX.js} +63 -51
- package/dist/chunk-OJH6HWHX.js.map +1 -0
- package/dist/chunk-QOUPWOGW.js +29 -0
- package/dist/chunk-QOUPWOGW.js.map +1 -0
- package/dist/chunk-TIZYTPJO.js +208 -0
- package/dist/chunk-TIZYTPJO.js.map +1 -0
- package/dist/{chunk-NCPN4SJR.js → chunk-XKYYBABH.js} +13 -13
- package/dist/chunk-XKYYBABH.js.map +1 -0
- package/dist/client-B8DT1vUG.d.ts +83 -0
- package/dist/completion/index.d.ts +6 -36
- package/dist/completion/index.js +25 -29
- package/dist/dynamic-tools-KwEGRbHp.d.ts +45 -0
- package/dist/embeddings/index.d.ts +11 -9
- package/dist/embeddings/index.js +2 -4
- package/dist/evals/index.d.ts +47 -20
- package/dist/evals/index.js +104 -65
- package/dist/evals/index.js.map +1 -1
- package/dist/extractor/index.d.ts +27 -42
- package/dist/extractor/index.js +7 -22
- package/dist/guardrails/index.d.ts +3 -2
- package/dist/guardrails/index.js +1 -1
- package/dist/image-generation/index.d.ts +23 -23
- package/dist/image-generation/index.js +5 -39
- package/dist/image-generation/index.js.map +1 -1
- package/dist/index.d.ts +25 -20
- package/dist/index.js +60 -63
- package/dist/internal/agent.d.ts +163 -9
- package/dist/internal/agent.js +25 -18
- package/dist/loaders/index.d.ts +6 -10
- package/dist/loaders/index.js.map +1 -1
- package/dist/mcp/index.d.ts +19 -13
- package/dist/mcp/index.js +13 -348
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory/index.d.ts +20 -6
- package/dist/memory/index.js +9 -10
- package/dist/message-schema-Cn7ezRfJ.d.ts +52 -0
- package/dist/middleware-C7PdmKF7.d.ts +56 -0
- package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
- package/dist/model-listing/index.d.ts +3 -1
- package/dist/observability/index.d.ts +20 -3
- package/dist/observability/index.js +8 -5
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/index.d.ts +114 -72
- package/dist/pipeline/index.js +478 -286
- package/dist/pipeline/index.js.map +1 -1
- package/dist/retry-CjvSlKGW.d.ts +16 -0
- package/dist/skills/index.d.ts +5 -4
- package/dist/skills/index.js +7 -8
- package/dist/speech-generation/index.d.ts +37 -0
- package/dist/speech-generation/index.js +8 -0
- package/dist/streaming/index.js +37 -3
- package/dist/streaming/index.js.map +1 -1
- package/dist/{think-tool-DfCMuO8e.d.ts → think-tool-6H2QNQzQ.d.ts} +5 -5
- package/dist/tool/index.d.ts +10 -6
- package/dist/tool/index.js +15 -21
- package/dist/tool--Mz4v1eL.d.ts +57 -0
- package/dist/transcription/index.d.ts +29 -22
- package/dist/transcription/index.js +5 -57
- package/dist/transcription/index.js.map +1 -1
- package/dist/type-utils-CtHVDRn_.d.ts +6 -0
- package/dist/types-3x3mOLHU.d.ts +379 -0
- package/dist/types-BVzM4RsC.d.ts +155 -0
- package/dist/types-CQ_ioXWK.d.ts +319 -0
- package/dist/types-Cr4uiYo5.d.ts +99 -0
- package/dist/{types-04LqWrmy.d.ts → types-DiJqJejp.d.ts} +1 -1
- package/dist/types-Dld1TpWj.d.ts +130 -0
- package/dist/vector-store/index.d.ts +33 -34
- package/dist/vector-store/index.js +6 -6
- package/package.json +6 -18
- package/dist/agent-x3YTyv5i.d.ts +0 -222
- package/dist/audio-generation/index.d.ts +0 -33
- package/dist/audio-generation/index.js +0 -42
- package/dist/audio-generation/index.js.map +0 -1
- package/dist/chunk-2ODTMRHP.js +0 -54
- package/dist/chunk-2ODTMRHP.js.map +0 -1
- package/dist/chunk-ADH7NNCS.js +0 -512
- package/dist/chunk-ADH7NNCS.js.map +0 -1
- package/dist/chunk-BALBBVI3.js +0 -2732
- package/dist/chunk-BALBBVI3.js.map +0 -1
- package/dist/chunk-CWUJUSOS.js.map +0 -1
- package/dist/chunk-DALYP4PX.js +0 -225
- package/dist/chunk-DALYP4PX.js.map +0 -1
- package/dist/chunk-HYUYZEAJ.js +0 -223
- package/dist/chunk-HYUYZEAJ.js.map +0 -1
- package/dist/chunk-I6XOQ4LK.js +0 -466
- package/dist/chunk-I6XOQ4LK.js.map +0 -1
- package/dist/chunk-JI5YZWNT.js +0 -220
- package/dist/chunk-JI5YZWNT.js.map +0 -1
- package/dist/chunk-MC3CCKEB.js +0 -221
- package/dist/chunk-MC3CCKEB.js.map +0 -1
- package/dist/chunk-MELYDKWQ.js +0 -337
- package/dist/chunk-MELYDKWQ.js.map +0 -1
- package/dist/chunk-MNWK2USR.js +0 -243
- package/dist/chunk-MNWK2USR.js.map +0 -1
- package/dist/chunk-MRQLEK2B.js.map +0 -1
- package/dist/chunk-NCPN4SJR.js.map +0 -1
- package/dist/chunk-OIMLU4SF.js +0 -20
- package/dist/chunk-OIMLU4SF.js.map +0 -1
- package/dist/chunk-Q25IWLBT.js +0 -138
- package/dist/chunk-Q25IWLBT.js.map +0 -1
- package/dist/chunk-UQX6EXWG.js +0 -33
- package/dist/chunk-UQX6EXWG.js.map +0 -1
- package/dist/chunk-WQKHFADH.js +0 -12
- package/dist/chunk-WQKHFADH.js.map +0 -1
- package/dist/chunk-XUUY2L2D.js +0 -42
- package/dist/chunk-XUUY2L2D.js.map +0 -1
- package/dist/chunk-XWUC7CIT.js +0 -1
- package/dist/chunk-XWUC7CIT.js.map +0 -1
- package/dist/chunk-YLMDBQO4.js +0 -141
- package/dist/chunk-YLMDBQO4.js.map +0 -1
- package/dist/errors-2moLDuuN.d.ts +0 -17
- package/dist/hooks/index.d.ts +0 -12
- package/dist/hooks/index.js +0 -17
- package/dist/index-BxSbmOMr.d.ts +0 -257
- package/dist/json-BVPssigK.d.ts +0 -39
- package/dist/middleware-Dp3d_pxi.d.ts +0 -90
- package/dist/request/index.d.ts +0 -28
- package/dist/request/index.js +0 -25
- package/dist/request/index.js.map +0 -1
- package/dist/tool-Cohdv5GC.d.ts +0 -65
- package/dist/types-BCTRUGex.d.ts +0 -47
- package/dist/types-BrLbKnEz.d.ts +0 -119
- package/dist/types-D9JpeAPF.d.ts +0 -114
- package/dist/types-G12i56s2.d.ts +0 -354
- package/dist/types-JJCxRnaZ.d.ts +0 -70
- package/dist/types-O-abTIin.d.ts +0 -79
- package/dist/ui/index.d.ts +0 -107
- package/dist/ui/index.js +0 -10
- package/dist/ui/index.js.map +0 -1
- /package/dist/{hooks → speech-generation}/index.js.map +0 -0
package/dist/chunk-DALYP4PX.js
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PromptRequest
|
|
3
|
-
} from "./chunk-BALBBVI3.js";
|
|
4
|
-
import {
|
|
5
|
-
isSkillTool
|
|
6
|
-
} from "./chunk-YK4WAAS4.js";
|
|
7
|
-
import {
|
|
8
|
-
ToolSet
|
|
9
|
-
} from "./chunk-HYUYZEAJ.js";
|
|
10
|
-
import {
|
|
11
|
-
createTool
|
|
12
|
-
} from "./chunk-MELYDKWQ.js";
|
|
13
|
-
import {
|
|
14
|
-
isStreamingCompletionModel
|
|
15
|
-
} from "./chunk-MC3CCKEB.js";
|
|
16
|
-
import {
|
|
17
|
-
getAssistantGenerationMetadata
|
|
18
|
-
} from "./chunk-ADH7NNCS.js";
|
|
19
|
-
|
|
20
|
-
// src/agent/agent.ts
|
|
21
|
-
import { z } from "zod";
|
|
22
|
-
|
|
23
|
-
// src/agent/ids.ts
|
|
24
|
-
function normalizeAgentId(id) {
|
|
25
|
-
if (typeof id !== "string") {
|
|
26
|
-
throw new TypeError("Agent id must be a string.");
|
|
27
|
-
}
|
|
28
|
-
const normalized = id.trim();
|
|
29
|
-
if (normalized.length === 0) {
|
|
30
|
-
throw new TypeError("Agent id must be a non-empty string.");
|
|
31
|
-
}
|
|
32
|
-
return normalized;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// src/agent/agent.ts
|
|
36
|
-
var DEFAULT_MAX_TURNS = 20;
|
|
37
|
-
var Agent = class {
|
|
38
|
-
id;
|
|
39
|
-
name;
|
|
40
|
-
description;
|
|
41
|
-
model;
|
|
42
|
-
instructions;
|
|
43
|
-
staticContext;
|
|
44
|
-
temperature;
|
|
45
|
-
maxTokens;
|
|
46
|
-
additionalParams;
|
|
47
|
-
toolSet;
|
|
48
|
-
providerTools;
|
|
49
|
-
toolChoice;
|
|
50
|
-
defaultMaxTurns;
|
|
51
|
-
hook;
|
|
52
|
-
outputSchema;
|
|
53
|
-
observers;
|
|
54
|
-
approvals;
|
|
55
|
-
guardrails;
|
|
56
|
-
dynamicContexts;
|
|
57
|
-
dynamicTools;
|
|
58
|
-
middlewares;
|
|
59
|
-
memory;
|
|
60
|
-
eventStore;
|
|
61
|
-
constructor(options) {
|
|
62
|
-
this.id = normalizeAgentId(options.id);
|
|
63
|
-
this.name = options.name;
|
|
64
|
-
this.description = options.description;
|
|
65
|
-
this.model = options.model;
|
|
66
|
-
this.instructions = options.instructions;
|
|
67
|
-
this.staticContext = [...options.staticContext ?? []];
|
|
68
|
-
this.temperature = options.temperature;
|
|
69
|
-
this.maxTokens = options.maxTokens;
|
|
70
|
-
this.additionalParams = options.additionalParams;
|
|
71
|
-
this.toolSet = options.toolSet ?? new ToolSet();
|
|
72
|
-
this.providerTools = [...options.providerTools ?? []];
|
|
73
|
-
this.toolChoice = options.toolChoice;
|
|
74
|
-
this.defaultMaxTurns = options.defaultMaxTurns ?? DEFAULT_MAX_TURNS;
|
|
75
|
-
this.hook = options.hook;
|
|
76
|
-
this.outputSchema = options.outputSchema;
|
|
77
|
-
this.observers = [...options.observers ?? []];
|
|
78
|
-
this.approvals = options.approvals;
|
|
79
|
-
this.guardrails = [...options.guardrails ?? []];
|
|
80
|
-
this.dynamicContexts = [...options.dynamicContexts ?? []];
|
|
81
|
-
this.dynamicTools = [...options.dynamicTools ?? []];
|
|
82
|
-
this.middlewares = [...options.middlewares ?? []];
|
|
83
|
-
this.memory = options.memory;
|
|
84
|
-
this.eventStore = options.eventStore;
|
|
85
|
-
}
|
|
86
|
-
prompt(prompt) {
|
|
87
|
-
return PromptRequest.fromAgent(this, prompt);
|
|
88
|
-
}
|
|
89
|
-
session(sessionId, options = {}) {
|
|
90
|
-
if (this.memory === void 0) {
|
|
91
|
-
throw new Error(`Agent "${this.id}" has no memory store configured.`);
|
|
92
|
-
}
|
|
93
|
-
const normalized = sessionId.trim();
|
|
94
|
-
if (normalized.length === 0) {
|
|
95
|
-
throw new TypeError("Session id must be a non-empty string.");
|
|
96
|
-
}
|
|
97
|
-
const context = {
|
|
98
|
-
sessionId: normalized
|
|
99
|
-
};
|
|
100
|
-
if (options.userId !== void 0) {
|
|
101
|
-
context.userId = options.userId;
|
|
102
|
-
}
|
|
103
|
-
if (options.metadata !== void 0) {
|
|
104
|
-
context.metadata = options.metadata;
|
|
105
|
-
}
|
|
106
|
-
return new AgentSession(this, context);
|
|
107
|
-
}
|
|
108
|
-
asTool(options) {
|
|
109
|
-
const description = options.description ?? this.description ?? `Prompt the ${options.name} agent.`;
|
|
110
|
-
return createTool({
|
|
111
|
-
name: options.name,
|
|
112
|
-
description,
|
|
113
|
-
input: z.object({
|
|
114
|
-
prompt: z.string().describe("The prompt to send to the agent.")
|
|
115
|
-
}),
|
|
116
|
-
output: z.string(),
|
|
117
|
-
execute: async ({ prompt }, context) => {
|
|
118
|
-
const request = this.prompt(prompt);
|
|
119
|
-
const childRequest = options.maxTurns === void 0 ? request : request.maxTurns(options.maxTurns);
|
|
120
|
-
if (options.stream === true && context.emitStreamEvent !== void 0 && this.model.capabilities.streaming && isStreamingCompletionModel(this.model)) {
|
|
121
|
-
let output = "";
|
|
122
|
-
const childStream = context.includeToolCallDeltas === false ? childRequest.stream({ includeToolCallDeltas: false }) : childRequest.stream();
|
|
123
|
-
for await (const event of childStream) {
|
|
124
|
-
const streamEvent = {
|
|
125
|
-
agentId: this.id,
|
|
126
|
-
event
|
|
127
|
-
};
|
|
128
|
-
if (this.name !== void 0) {
|
|
129
|
-
streamEvent.agentName = this.name;
|
|
130
|
-
}
|
|
131
|
-
await context.emitStreamEvent(streamEvent);
|
|
132
|
-
if (event.type === "final") {
|
|
133
|
-
output = event.output;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return output;
|
|
137
|
-
}
|
|
138
|
-
const response = await childRequest.send();
|
|
139
|
-
return response.output;
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
getTool(toolName) {
|
|
144
|
-
const staticTool = this.toolSet.get(toolName);
|
|
145
|
-
if (staticTool !== void 0) {
|
|
146
|
-
return staticTool;
|
|
147
|
-
}
|
|
148
|
-
for (const registration of this.dynamicTools) {
|
|
149
|
-
const dynamicTool = dynamicToolSetFromIndex(registration.index)?.get(toolName);
|
|
150
|
-
if (dynamicTool !== void 0) {
|
|
151
|
-
return dynamicTool;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return void 0;
|
|
155
|
-
}
|
|
156
|
-
async callTool(toolName, args, context) {
|
|
157
|
-
if (this.toolSet.contains(toolName)) {
|
|
158
|
-
return this.toolSet.call(toolName, args, context);
|
|
159
|
-
}
|
|
160
|
-
for (const registration of this.dynamicTools) {
|
|
161
|
-
const toolSet = dynamicToolSetFromIndex(registration.index);
|
|
162
|
-
if (toolSet?.contains(toolName)) {
|
|
163
|
-
return toolSet.call(toolName, args, context);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return this.toolSet.call(toolName, args, context);
|
|
167
|
-
}
|
|
168
|
-
shouldApplyToolMiddleware(toolName) {
|
|
169
|
-
return !isSkillTool(this.getTool(toolName));
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
var AgentSession = class {
|
|
173
|
-
constructor(agent, context) {
|
|
174
|
-
this.agent = agent;
|
|
175
|
-
this.context = context;
|
|
176
|
-
}
|
|
177
|
-
agent;
|
|
178
|
-
context;
|
|
179
|
-
prompt(prompt) {
|
|
180
|
-
if (Array.isArray(prompt)) {
|
|
181
|
-
throw new TypeError("AgentSession.prompt does not accept Message[] transcripts.");
|
|
182
|
-
}
|
|
183
|
-
return PromptRequest.fromAgent(this.agent, prompt, { memoryContext: this.context });
|
|
184
|
-
}
|
|
185
|
-
async messages() {
|
|
186
|
-
const memory = this.agent.memory;
|
|
187
|
-
if (memory === void 0) {
|
|
188
|
-
throw new Error(`Agent "${this.agent.id}" has no memory store configured.`);
|
|
189
|
-
}
|
|
190
|
-
return memory.store.load(this.context);
|
|
191
|
-
}
|
|
192
|
-
async contextUsage() {
|
|
193
|
-
const messages = await this.messages();
|
|
194
|
-
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
195
|
-
const message = messages[index];
|
|
196
|
-
if (message === void 0) {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
const generation = getAssistantGenerationMetadata(message);
|
|
200
|
-
if (generation !== void 0) {
|
|
201
|
-
return generation.contextUsage;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
return void 0;
|
|
205
|
-
}
|
|
206
|
-
async clear() {
|
|
207
|
-
const memory = this.agent.memory;
|
|
208
|
-
if (memory === void 0) {
|
|
209
|
-
throw new Error(`Agent "${this.agent.id}" has no memory store configured.`);
|
|
210
|
-
}
|
|
211
|
-
await memory.store.clear(this.context);
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
function dynamicToolSetFromIndex(index) {
|
|
215
|
-
const maybeIndex = index;
|
|
216
|
-
return maybeIndex.toolSet instanceof ToolSet ? maybeIndex.toolSet : void 0;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export {
|
|
220
|
-
normalizeAgentId,
|
|
221
|
-
DEFAULT_MAX_TURNS,
|
|
222
|
-
Agent,
|
|
223
|
-
AgentSession
|
|
224
|
-
};
|
|
225
|
-
//# sourceMappingURL=chunk-DALYP4PX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/agent/agent.ts","../src/agent/ids.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { isStreamingCompletionModel } from \"../completion/create-completion\";\nimport type {\n CompletionModel,\n ContextUsage,\n Document,\n JsonObject,\n JsonValue,\n Message as MessageType,\n ProviderTool,\n ToolChoice,\n} from \"../completion/index\";\nimport { getAssistantGenerationMetadata } from \"../completion/types\";\nimport type { GuardrailPolicy } from \"../guardrails\";\nimport type { PromptHook } from \"../hooks\";\nimport type { MemoryContext, MemoryRegistration, SessionOptions } from \"../memory/types\";\nimport type { AgentObserverRegistration } from \"../observability\";\nimport { PromptRequest } from \"../request\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { ToolSearchDocument } from \"../tool/dynamic-tools\";\nimport type { AgentMiddleware } from \"../tool/middleware\";\nimport { isSkillTool } from \"../tool/skill-tool-marker\";\nimport type {\n AnyTool,\n NormalizedToolOutput,\n Tool,\n ToolApprovalsOptions,\n ToolCallContext,\n ToolCallStreamEvent,\n} from \"../tool/tool\";\nimport { ToolSet } from \"../tool/tool-set\";\nimport type { VectorSearchIndex } from \"../vector-store\";\nimport { normalizeAgentId } from \"./ids\";\nimport type {\n AgentEventStoreRegistration,\n AgentOptions,\n AgentToolOptions,\n DynamicContextRegistration,\n DynamicToolRegistration,\n} from \"./types\";\n\nexport const DEFAULT_MAX_TURNS = 20;\n\nexport class Agent<M extends CompletionModel = CompletionModel> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly model: M;\n readonly instructions: string | undefined;\n readonly staticContext: Document[];\n readonly temperature: number | undefined;\n readonly maxTokens: number | undefined;\n readonly additionalParams: JsonValue | undefined;\n readonly toolSet: ToolSet;\n readonly providerTools: ProviderTool[];\n readonly toolChoice: ToolChoice | undefined;\n readonly defaultMaxTurns: number | undefined;\n readonly hook: PromptHook | undefined;\n readonly outputSchema: JsonObject | undefined;\n readonly observers: AgentObserverRegistration[];\n readonly approvals: ToolApprovalsOptions | undefined;\n readonly guardrails: GuardrailPolicy[];\n readonly dynamicContexts: DynamicContextRegistration[];\n readonly dynamicTools: DynamicToolRegistration[];\n readonly middlewares: AgentMiddleware[];\n readonly memory: MemoryRegistration | undefined;\n readonly eventStore: AgentEventStoreRegistration | undefined;\n\n constructor(options: AgentOptions<M>) {\n this.id = normalizeAgentId(options.id);\n this.name = options.name;\n this.description = options.description;\n this.model = options.model;\n this.instructions = options.instructions;\n this.staticContext = [...(options.staticContext ?? [])];\n this.temperature = options.temperature;\n this.maxTokens = options.maxTokens;\n this.additionalParams = options.additionalParams;\n this.toolSet = options.toolSet ?? new ToolSet();\n this.providerTools = [...(options.providerTools ?? [])];\n this.toolChoice = options.toolChoice;\n this.defaultMaxTurns = options.defaultMaxTurns ?? DEFAULT_MAX_TURNS;\n this.hook = options.hook;\n this.outputSchema = options.outputSchema;\n this.observers = [...(options.observers ?? [])];\n this.approvals = options.approvals;\n this.guardrails = [...(options.guardrails ?? [])];\n this.dynamicContexts = [...(options.dynamicContexts ?? [])];\n this.dynamicTools = [...(options.dynamicTools ?? [])];\n this.middlewares = [...(options.middlewares ?? [])];\n this.memory = options.memory;\n this.eventStore = options.eventStore;\n }\n\n prompt(prompt: string | MessageType | MessageType[]): PromptRequest<M> {\n return PromptRequest.fromAgent(this, prompt);\n }\n\n session(sessionId: string, options: SessionOptions = {}): AgentSession<M> {\n if (this.memory === undefined) {\n throw new Error(`Agent \"${this.id}\" has no memory store configured.`);\n }\n const normalized = sessionId.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Session id must be a non-empty string.\");\n }\n const context: MemoryContext = {\n sessionId: normalized,\n };\n if (options.userId !== undefined) {\n context.userId = options.userId;\n }\n if (options.metadata !== undefined) {\n context.metadata = options.metadata;\n }\n return new AgentSession(this, context);\n }\n\n asTool(options: AgentToolOptions): Tool<{ prompt: string }, string> {\n const description =\n options.description ?? this.description ?? `Prompt the ${options.name} agent.`;\n\n return createTool({\n name: options.name,\n description,\n input: z.object({\n prompt: z.string().describe(\"The prompt to send to the agent.\"),\n }),\n output: z.string(),\n execute: async ({ prompt }, context: ToolCallContext) => {\n const request = this.prompt(prompt);\n const childRequest =\n options.maxTurns === undefined ? request : request.maxTurns(options.maxTurns);\n if (\n options.stream === true &&\n context.emitStreamEvent !== undefined &&\n this.model.capabilities.streaming &&\n isStreamingCompletionModel(this.model)\n ) {\n let output = \"\";\n const childStream =\n context.includeToolCallDeltas === false\n ? childRequest.stream({ includeToolCallDeltas: false })\n : childRequest.stream();\n for await (const event of childStream) {\n const streamEvent: ToolCallStreamEvent = {\n agentId: this.id,\n event,\n };\n if (this.name !== undefined) {\n streamEvent.agentName = this.name;\n }\n await context.emitStreamEvent(streamEvent);\n if (event.type === \"final\") {\n output = event.output;\n }\n }\n return output;\n }\n const response = await childRequest.send();\n return response.output;\n },\n });\n }\n\n getTool(toolName: string): AnyTool | undefined {\n const staticTool = this.toolSet.get(toolName);\n if (staticTool !== undefined) {\n return staticTool;\n }\n\n for (const registration of this.dynamicTools) {\n const dynamicTool = dynamicToolSetFromIndex(registration.index)?.get(toolName);\n if (dynamicTool !== undefined) {\n return dynamicTool;\n }\n }\n\n return undefined;\n }\n\n async callTool(\n toolName: string,\n args: string,\n context?: ToolCallContext,\n ): Promise<NormalizedToolOutput> {\n if (this.toolSet.contains(toolName)) {\n return this.toolSet.call(toolName, args, context);\n }\n\n for (const registration of this.dynamicTools) {\n const toolSet = dynamicToolSetFromIndex(registration.index);\n if (toolSet?.contains(toolName)) {\n return toolSet.call(toolName, args, context);\n }\n }\n\n return this.toolSet.call(toolName, args, context);\n }\n\n shouldApplyToolMiddleware(toolName: string): boolean {\n return !isSkillTool(this.getTool(toolName));\n }\n}\n\nexport class AgentSession<M extends CompletionModel = CompletionModel> {\n constructor(\n private readonly agent: Agent<M>,\n private readonly context: {\n sessionId: string;\n userId?: string | undefined;\n metadata?: JsonObject | undefined;\n },\n ) {}\n\n prompt(prompt: string | MessageType): PromptRequest<M> {\n if (Array.isArray(prompt)) {\n throw new TypeError(\"AgentSession.prompt does not accept Message[] transcripts.\");\n }\n return PromptRequest.fromAgent(this.agent, prompt, { memoryContext: this.context });\n }\n\n async messages(): Promise<MessageType[]> {\n const memory = this.agent.memory;\n if (memory === undefined) {\n throw new Error(`Agent \"${this.agent.id}\" has no memory store configured.`);\n }\n return memory.store.load(this.context);\n }\n\n async contextUsage(): Promise<ContextUsage | undefined> {\n const messages = await this.messages();\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message === undefined) {\n continue;\n }\n const generation = getAssistantGenerationMetadata(message);\n if (generation !== undefined) {\n return generation.contextUsage;\n }\n }\n return undefined;\n }\n\n async clear(): Promise<void> {\n const memory = this.agent.memory;\n if (memory === undefined) {\n throw new Error(`Agent \"${this.agent.id}\" has no memory store configured.`);\n }\n await memory.store.clear(this.context);\n }\n}\n\nfunction dynamicToolSetFromIndex(\n index: VectorSearchIndex<ToolSearchDocument>,\n): ToolSet | undefined {\n const maybeIndex = index as { toolSet?: unknown };\n return maybeIndex.toolSet instanceof ToolSet ? maybeIndex.toolSet : undefined;\n}\n","export function normalizeAgentId(id: string): string {\n if (typeof id !== \"string\") {\n throw new TypeError(\"Agent id must be a string.\");\n }\n\n const normalized = id.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Agent id must be a non-empty string.\");\n }\n\n return normalized;\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-HYUYZEAJ.js
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
InMemoryVectorStore,
|
|
3
|
-
createTool
|
|
4
|
-
} from "./chunk-MELYDKWQ.js";
|
|
5
|
-
import {
|
|
6
|
-
embedDocuments
|
|
7
|
-
} from "./chunk-MNWK2USR.js";
|
|
8
|
-
import {
|
|
9
|
-
isToolResultContentArray,
|
|
10
|
-
serializeToolResultOutput
|
|
11
|
-
} from "./chunk-ADH7NNCS.js";
|
|
12
|
-
|
|
13
|
-
// src/tool/errors.ts
|
|
14
|
-
var ToolCallError = class extends Error {
|
|
15
|
-
constructor(message, cause) {
|
|
16
|
-
super(message);
|
|
17
|
-
this.cause = cause;
|
|
18
|
-
this.name = "ToolCallError";
|
|
19
|
-
}
|
|
20
|
-
cause;
|
|
21
|
-
};
|
|
22
|
-
var ToolNotFoundError = class extends Error {
|
|
23
|
-
constructor(toolName) {
|
|
24
|
-
super(`Tool not found: ${toolName}`);
|
|
25
|
-
this.toolName = toolName;
|
|
26
|
-
this.name = "ToolNotFoundError";
|
|
27
|
-
}
|
|
28
|
-
toolName;
|
|
29
|
-
};
|
|
30
|
-
var ToolJsonError = class extends Error {
|
|
31
|
-
constructor(message, cause) {
|
|
32
|
-
super(message);
|
|
33
|
-
this.cause = cause;
|
|
34
|
-
this.name = "ToolJsonError";
|
|
35
|
-
}
|
|
36
|
-
cause;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// src/tool/tool.ts
|
|
40
|
-
var ToolOutput = {
|
|
41
|
-
content(content) {
|
|
42
|
-
return content;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
function normalizeToolResultOutput(output) {
|
|
46
|
-
return isToolResultContentArray(output) ? output : serializeToolResultOutput(output);
|
|
47
|
-
}
|
|
48
|
-
function toolResultContentToText(content) {
|
|
49
|
-
return content.map((item) => item.type === "text" ? item.text : `[image:${item.mediaType ?? "image/png"}]`).join("\n");
|
|
50
|
-
}
|
|
51
|
-
function parseToolArgs(args) {
|
|
52
|
-
if (args.trim() === "") {
|
|
53
|
-
return {};
|
|
54
|
-
}
|
|
55
|
-
return JSON.parse(args);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// src/tool/tool-set.ts
|
|
59
|
-
var ToolSet = class _ToolSet {
|
|
60
|
-
tools = /* @__PURE__ */ new Map();
|
|
61
|
-
static fromTools(tools) {
|
|
62
|
-
const toolSet = new _ToolSet();
|
|
63
|
-
for (const tool of tools) {
|
|
64
|
-
toolSet.addTool(tool);
|
|
65
|
-
}
|
|
66
|
-
return toolSet;
|
|
67
|
-
}
|
|
68
|
-
addTool(tool) {
|
|
69
|
-
this.tools.set(tool.name, tool);
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
addTools(tools) {
|
|
73
|
-
const values = Array.isArray(tools) ? tools : tools.values();
|
|
74
|
-
for (const tool of values) {
|
|
75
|
-
this.addTool(tool);
|
|
76
|
-
}
|
|
77
|
-
return this;
|
|
78
|
-
}
|
|
79
|
-
deleteTool(toolName) {
|
|
80
|
-
return this.tools.delete(toolName);
|
|
81
|
-
}
|
|
82
|
-
contains(toolName) {
|
|
83
|
-
return this.tools.has(toolName);
|
|
84
|
-
}
|
|
85
|
-
get(toolName) {
|
|
86
|
-
return this.tools.get(toolName);
|
|
87
|
-
}
|
|
88
|
-
values() {
|
|
89
|
-
return [...this.tools.values()];
|
|
90
|
-
}
|
|
91
|
-
async getToolDefinitions(prompt = "") {
|
|
92
|
-
const defs = [];
|
|
93
|
-
for (const tool of this.tools.values()) {
|
|
94
|
-
defs.push(await tool.definition(prompt));
|
|
95
|
-
}
|
|
96
|
-
return defs;
|
|
97
|
-
}
|
|
98
|
-
async call(toolName, args, context) {
|
|
99
|
-
const tool = this.tools.get(toolName);
|
|
100
|
-
if (tool === void 0) {
|
|
101
|
-
throw new ToolNotFoundError(toolName);
|
|
102
|
-
}
|
|
103
|
-
let parsedArgs;
|
|
104
|
-
try {
|
|
105
|
-
parsedArgs = parseToolArgs(args);
|
|
106
|
-
} catch (error) {
|
|
107
|
-
throw new ToolJsonError(`Invalid JSON arguments for tool ${toolName}`, error);
|
|
108
|
-
}
|
|
109
|
-
try {
|
|
110
|
-
const output = await tool.call(parsedArgs, context);
|
|
111
|
-
return normalizeToolResultOutput(output);
|
|
112
|
-
} catch (error) {
|
|
113
|
-
if (error instanceof Error) {
|
|
114
|
-
throw new ToolCallError(error.message, error);
|
|
115
|
-
}
|
|
116
|
-
throw new ToolCallError(`Tool ${toolName} failed`, error);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
// src/tool/dynamic-tools.ts
|
|
122
|
-
async function embedTools(model, tools, options = {}) {
|
|
123
|
-
const toolList = Array.isArray(tools) ? tools : tools.values();
|
|
124
|
-
const definitions = await Promise.all(
|
|
125
|
-
toolList.map(async (tool) => ({ tool, definition: await tool.definition("") }))
|
|
126
|
-
);
|
|
127
|
-
const documents = definitions.map(({ tool, definition }) => {
|
|
128
|
-
const content = options.content?.(tool, definition) ?? defaultToolEmbeddingText(definition);
|
|
129
|
-
const texts = Array.isArray(content) ? content : [content];
|
|
130
|
-
const metadata = options.metadata?.(tool, definition);
|
|
131
|
-
const document = {
|
|
132
|
-
toolName: tool.name,
|
|
133
|
-
definition,
|
|
134
|
-
text: texts.join("\n")
|
|
135
|
-
};
|
|
136
|
-
if (metadata !== void 0) {
|
|
137
|
-
document.metadata = metadata;
|
|
138
|
-
}
|
|
139
|
-
return { tool, document, texts, metadata };
|
|
140
|
-
});
|
|
141
|
-
return embedDocuments(model, documents, {
|
|
142
|
-
id: (item) => item.tool.name,
|
|
143
|
-
content: (item) => item.texts,
|
|
144
|
-
metadata: (item) => item.metadata,
|
|
145
|
-
concurrency: options.concurrency
|
|
146
|
-
}).then(
|
|
147
|
-
(embedded) => embedded.map((item) => ({
|
|
148
|
-
...item,
|
|
149
|
-
document: item.document.document
|
|
150
|
-
}))
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
async function createToolIndex(model, tools, options = {}) {
|
|
154
|
-
const toolSet = Array.isArray(tools) ? ToolSet.fromTools(tools) : tools;
|
|
155
|
-
const embedded = await embedTools(model, toolSet, options);
|
|
156
|
-
const index = InMemoryVectorStore.fromDocuments(embedded).index(model);
|
|
157
|
-
return new DynamicToolSearchIndex(index, toolSet);
|
|
158
|
-
}
|
|
159
|
-
function isDynamicToolIndex(value) {
|
|
160
|
-
return typeof value === "object" && value !== null && "toolSet" in value && value.toolSet instanceof ToolSet;
|
|
161
|
-
}
|
|
162
|
-
var DynamicToolSearchIndex = class {
|
|
163
|
-
constructor(index, toolSet) {
|
|
164
|
-
this.index = index;
|
|
165
|
-
this.toolSet = toolSet;
|
|
166
|
-
if (index.inspect !== void 0) {
|
|
167
|
-
this.inspect = (request) => index.inspect?.(request);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
index;
|
|
171
|
-
toolSet;
|
|
172
|
-
inspect;
|
|
173
|
-
search(request) {
|
|
174
|
-
return this.index.search(request);
|
|
175
|
-
}
|
|
176
|
-
searchIds(request) {
|
|
177
|
-
return this.index.searchIds(request);
|
|
178
|
-
}
|
|
179
|
-
asTool(options) {
|
|
180
|
-
return this.index.asTool(options);
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
function defaultToolEmbeddingText(definition) {
|
|
184
|
-
return [definition.name, definition.description, JSON.stringify(definition.parameters)];
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// src/tool/middleware.ts
|
|
188
|
-
function createMiddleware(middleware) {
|
|
189
|
-
return middleware;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// src/tool/think-tool.ts
|
|
193
|
-
import { z } from "zod";
|
|
194
|
-
var defaultThinkToolDescription = "Use this tool to record a thought while reasoning through a complex task. It does not retrieve information, store memory, or change external state.";
|
|
195
|
-
var thinkToolInput = z.object({
|
|
196
|
-
thought: z.string().describe("A thought to record while reasoning through a task.")
|
|
197
|
-
});
|
|
198
|
-
function createThinkTool(options = {}) {
|
|
199
|
-
return createTool({
|
|
200
|
-
name: options.name ?? "think",
|
|
201
|
-
description: options.description ?? defaultThinkToolDescription,
|
|
202
|
-
input: thinkToolInput,
|
|
203
|
-
output: z.string(),
|
|
204
|
-
execute: (args) => args.thought
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export {
|
|
209
|
-
ToolCallError,
|
|
210
|
-
ToolNotFoundError,
|
|
211
|
-
ToolJsonError,
|
|
212
|
-
ToolOutput,
|
|
213
|
-
normalizeToolResultOutput,
|
|
214
|
-
toolResultContentToText,
|
|
215
|
-
parseToolArgs,
|
|
216
|
-
ToolSet,
|
|
217
|
-
embedTools,
|
|
218
|
-
createToolIndex,
|
|
219
|
-
isDynamicToolIndex,
|
|
220
|
-
createMiddleware,
|
|
221
|
-
createThinkTool
|
|
222
|
-
};
|
|
223
|
-
//# sourceMappingURL=chunk-HYUYZEAJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tool/errors.ts","../src/tool/tool.ts","../src/tool/tool-set.ts","../src/tool/dynamic-tools.ts","../src/tool/middleware.ts","../src/tool/think-tool.ts"],"sourcesContent":["export class ToolCallError extends Error {\n constructor(\n message: string,\n readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"ToolCallError\";\n }\n}\n\nexport class ToolNotFoundError extends Error {\n constructor(readonly toolName: string) {\n super(`Tool not found: ${toolName}`);\n this.name = \"ToolNotFoundError\";\n }\n}\n\nexport class ToolJsonError extends Error {\n constructor(\n message: string,\n readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"ToolJsonError\";\n }\n}\n","import type { JsonObject, JsonValue, ToolDefinition, ToolResultContent } from \"../completion/types\";\nimport {\n isToolResultContentArray,\n serializeToolResultOutput as serializeToolOutput,\n} from \"../completion/types\";\n\nexport type ToolApprovalRunContext = {\n agentId: string;\n runId: string;\n sessionId?: string;\n metadata?: JsonObject;\n};\n\nexport type ToolApprovalContext<Args = unknown> = {\n toolName: string;\n args: Args;\n rawArgs: string;\n toolCallId?: string;\n internalCallId: string;\n run: ToolApprovalRunContext;\n};\n\nexport type ToolApprovalPolicy<Args = unknown> = {\n when(ctx: ToolApprovalContext<Args>): boolean | Promise<boolean>;\n reason?: string | ((ctx: ToolApprovalContext<Args>) => string | Promise<string>);\n rejectMessage?: string | ((ctx: ToolApprovalContext<Args>) => string | Promise<string>);\n};\n\nexport type ToolApprovalRequest<Args = unknown> = ToolApprovalContext<Args> & {\n reason?: string;\n rejectMessage?: string;\n};\n\nexport type ToolApprovalDecision =\n | boolean\n | { approved: true; reason?: string }\n | { approved: false; reason?: string; rejectMessage?: string };\n\nexport type ToolApprovalsOptions = {\n handler(request: ToolApprovalRequest): ToolApprovalDecision | Promise<ToolApprovalDecision>;\n};\n\nexport type ToolCallStreamEvent = {\n agentId: string;\n agentName?: string | undefined;\n event: unknown;\n};\n\nexport type ToolCallContext = {\n emitStreamEvent?(event: ToolCallStreamEvent): void | Promise<void>;\n includeToolCallDeltas?: boolean;\n};\n\nexport interface Tool<Args = unknown, Output = unknown> {\n readonly name: string;\n readonly approval?: ToolApprovalPolicy<Args>;\n definition(prompt: string): ToolDefinition | Promise<ToolDefinition>;\n call(args: Args, context?: ToolCallContext): Output | Promise<Output>;\n parseApprovalArgs?(args: unknown): Args;\n}\n\nexport type AnyTool = Omit<Tool<unknown, unknown>, \"approval\"> & {\n readonly approval?: unknown;\n};\n\nexport type NormalizedToolOutput = string | ToolResultContent[];\n\nexport const ToolOutput = {\n content(content: ToolResultContent[]): ToolResultContent[] {\n return content;\n },\n};\n\nexport { isToolResultContentArray, serializeToolOutput };\n\nexport function normalizeToolResultOutput(output: unknown): NormalizedToolOutput {\n return isToolResultContentArray(output) ? output : serializeToolOutput(output);\n}\n\nexport function toolResultContentToText(content: ToolResultContent[]): string {\n return content\n .map((item) => (item.type === \"text\" ? item.text : `[image:${item.mediaType ?? \"image/png\"}]`))\n .join(\"\\n\");\n}\n\nexport function parseToolArgs(args: string): JsonValue {\n if (args.trim() === \"\") {\n return {};\n }\n\n return JSON.parse(args) as JsonValue;\n}\n","import type { ToolDefinition } from \"../completion/types\";\nimport { ToolCallError, ToolJsonError, ToolNotFoundError } from \"./errors\";\nimport {\n type AnyTool,\n type NormalizedToolOutput,\n normalizeToolResultOutput,\n parseToolArgs,\n type ToolCallContext,\n} from \"./tool\";\n\nexport class ToolSet {\n private readonly tools = new Map<string, AnyTool>();\n\n static fromTools(tools: AnyTool[]): ToolSet {\n const toolSet = new ToolSet();\n for (const tool of tools) {\n toolSet.addTool(tool);\n }\n return toolSet;\n }\n\n addTool(tool: AnyTool): this {\n this.tools.set(tool.name, tool);\n return this;\n }\n\n addTools(tools: AnyTool[] | ToolSet): this {\n const values = Array.isArray(tools) ? tools : tools.values();\n for (const tool of values) {\n this.addTool(tool);\n }\n return this;\n }\n\n deleteTool(toolName: string): boolean {\n return this.tools.delete(toolName);\n }\n\n contains(toolName: string): boolean {\n return this.tools.has(toolName);\n }\n\n get(toolName: string): AnyTool | undefined {\n return this.tools.get(toolName);\n }\n\n values(): AnyTool[] {\n return [...this.tools.values()];\n }\n\n async getToolDefinitions(prompt = \"\"): Promise<ToolDefinition[]> {\n const defs: ToolDefinition[] = [];\n for (const tool of this.tools.values()) {\n defs.push(await tool.definition(prompt));\n }\n return defs;\n }\n\n async call(\n toolName: string,\n args: string,\n context?: ToolCallContext,\n ): Promise<NormalizedToolOutput> {\n const tool = this.tools.get(toolName);\n if (tool === undefined) {\n throw new ToolNotFoundError(toolName);\n }\n\n let parsedArgs: unknown;\n try {\n parsedArgs = parseToolArgs(args);\n } catch (error) {\n throw new ToolJsonError(`Invalid JSON arguments for tool ${toolName}`, error);\n }\n\n try {\n const output = await tool.call(parsedArgs, context);\n return normalizeToolResultOutput(output);\n } catch (error) {\n if (error instanceof Error) {\n throw new ToolCallError(error.message, error);\n }\n throw new ToolCallError(`Tool ${toolName} failed`, error);\n }\n }\n}\n","import type { ToolDefinition } from \"../completion\";\nimport type { EmbeddedDocument, EmbeddingModel, VectorMetadata } from \"../embeddings\";\nimport { embedDocuments } from \"../embeddings\";\nimport type {\n VectorInspectPage,\n VectorInspectRequest,\n VectorSearchResult,\n VectorSearchToolOptions,\n} from \"../vector-store\";\nimport {\n InMemoryVectorStore,\n type VectorSearchIndex,\n type VectorSearchRequest,\n} from \"../vector-store\";\nimport type { AnyTool, Tool } from \"./tool\";\nimport { ToolSet } from \"./tool-set\";\n\nexport type ToolSearchDocument<Metadata extends VectorMetadata = VectorMetadata> = {\n toolName: string;\n definition: ToolDefinition;\n text: string;\n metadata?: Metadata | undefined;\n};\n\nexport type EmbedToolsOptions<Metadata extends VectorMetadata = VectorMetadata> = {\n content?: ((tool: AnyTool, definition: ToolDefinition) => string | string[]) | undefined;\n metadata?: ((tool: AnyTool, definition: ToolDefinition) => Metadata | undefined) | undefined;\n concurrency?: number | undefined;\n};\n\nexport interface DynamicToolIndex<Metadata extends VectorMetadata = VectorMetadata>\n extends VectorSearchIndex<ToolSearchDocument<Metadata>, Metadata> {\n readonly toolSet: ToolSet;\n}\n\nexport async function embedTools<Metadata extends VectorMetadata = VectorMetadata>(\n model: EmbeddingModel,\n tools: AnyTool[] | ToolSet,\n options: EmbedToolsOptions<Metadata> = {},\n): Promise<Array<EmbeddedDocument<ToolSearchDocument<Metadata>, Metadata>>> {\n const toolList = Array.isArray(tools) ? tools : tools.values();\n const definitions = await Promise.all(\n toolList.map(async (tool) => ({ tool, definition: await tool.definition(\"\") })),\n );\n const documents = definitions.map(({ tool, definition }) => {\n const content = options.content?.(tool, definition) ?? defaultToolEmbeddingText(definition);\n const texts = Array.isArray(content) ? content : [content];\n const metadata = options.metadata?.(tool, definition);\n const document: ToolSearchDocument<Metadata> = {\n toolName: tool.name,\n definition,\n text: texts.join(\"\\n\"),\n };\n if (metadata !== undefined) {\n document.metadata = metadata;\n }\n return { tool, document, texts, metadata };\n });\n\n return embedDocuments(model, documents, {\n id: (item) => item.tool.name,\n content: (item) => item.texts,\n metadata: (item) => item.metadata,\n concurrency: options.concurrency,\n }).then((embedded) =>\n embedded.map((item) => ({\n ...item,\n document: item.document.document,\n })),\n );\n}\n\nexport async function createToolIndex<Metadata extends VectorMetadata = VectorMetadata>(\n model: EmbeddingModel,\n tools: AnyTool[] | ToolSet,\n options: EmbedToolsOptions<Metadata> = {},\n): Promise<DynamicToolIndex<Metadata>> {\n const toolSet = Array.isArray(tools) ? ToolSet.fromTools(tools) : tools;\n const embedded = await embedTools(model, toolSet, options);\n const index = InMemoryVectorStore.fromDocuments(embedded).index(model);\n return new DynamicToolSearchIndex(index, toolSet);\n}\n\nexport function isDynamicToolIndex(value: unknown): value is DynamicToolIndex {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"toolSet\" in value &&\n (value as { toolSet?: unknown }).toolSet instanceof ToolSet\n );\n}\n\nclass DynamicToolSearchIndex<Metadata extends VectorMetadata>\n implements DynamicToolIndex<Metadata>\n{\n readonly inspect?: (\n request: VectorInspectRequest,\n ) => Promise<VectorInspectPage<ToolSearchDocument<Metadata>, Metadata>>;\n\n constructor(\n private readonly index: VectorSearchIndex<ToolSearchDocument<Metadata>, Metadata>,\n readonly toolSet: ToolSet,\n ) {\n if (index.inspect !== undefined) {\n this.inspect = (request) =>\n index.inspect?.(request) as Promise<\n VectorInspectPage<ToolSearchDocument<Metadata>, Metadata>\n >;\n }\n }\n\n search(\n request: VectorSearchRequest,\n ): Promise<Array<VectorSearchResult<ToolSearchDocument<Metadata>, Metadata>>> {\n return this.index.search(request);\n }\n\n searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>> {\n return this.index.searchIds(request);\n }\n\n asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown> {\n return this.index.asTool(options);\n }\n}\n\nfunction defaultToolEmbeddingText(definition: ToolDefinition): string[] {\n return [definition.name, definition.description, JSON.stringify(definition.parameters)];\n}\n","import type {\n CompletionRequest,\n CompletionResponse,\n JsonValue,\n ToolResultContent,\n} from \"../completion\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type CompletionRequestMiddlewareArgs = {\n turn: number;\n request: CompletionRequest;\n originalRequest: CompletionRequest;\n};\n\nexport type CompletionRequestMiddlewareResult =\n | {\n request: CompletionRequest;\n }\n | undefined;\n\nexport type CompletionResponseMiddlewareArgs<RawResponse = unknown> = {\n turn: number;\n request: CompletionRequest;\n response: CompletionResponse<RawResponse>;\n originalResponse: CompletionResponse<RawResponse>;\n};\n\nexport type CompletionResponseMiddlewareResult<RawResponse = unknown> =\n | {\n response: CompletionResponse<RawResponse>;\n }\n | undefined;\n\nexport type ToolInputMiddlewareArgs = {\n toolName: string;\n args: string;\n originalArgs: string;\n turn: number;\n toolCallId?: string | undefined;\n internalCallId: string;\n};\n\nexport type ToolInputMiddlewareResult =\n | {\n args: JsonValue | string;\n }\n | undefined;\n\nexport type ToolResultMiddlewareArgs = {\n toolName: string;\n args: string;\n result: string;\n originalResult: string;\n structuredResult?: ToolResultContent[] | undefined;\n originalStructuredResult?: ToolResultContent[] | undefined;\n turn: number;\n toolCallId?: string | undefined;\n internalCallId: string;\n};\n\nexport type ToolOutputMiddlewareArgs = ToolResultMiddlewareArgs;\n\nexport type ToolOutputMiddlewareResult =\n | string\n | {\n result?: string | undefined;\n structuredResult?: ToolResultContent[] | undefined;\n }\n | undefined;\n\nexport interface AgentMiddleware<RawResponse = unknown> {\n onCompletionRequest?(\n args: CompletionRequestMiddlewareArgs,\n ): MaybePromise<CompletionRequestMiddlewareResult>;\n onCompletionResponse?(\n args: CompletionResponseMiddlewareArgs<RawResponse>,\n ): MaybePromise<CompletionResponseMiddlewareResult<RawResponse>>;\n onToolInput?(args: ToolInputMiddlewareArgs): MaybePromise<ToolInputMiddlewareResult>;\n onToolOutput?(args: ToolOutputMiddlewareArgs): MaybePromise<ToolOutputMiddlewareResult>;\n}\n\nexport function createMiddleware<RawResponse = unknown>(\n middleware: AgentMiddleware<RawResponse>,\n): AgentMiddleware<RawResponse> {\n return middleware;\n}\n","import { z } from \"zod\";\nimport { createTool } from \"./create-tool\";\n\nconst defaultThinkToolDescription =\n \"Use this tool to record a thought while reasoning through a complex task. It does not retrieve information, store memory, or change external state.\";\n\nconst thinkToolInput = z.object({\n thought: z.string().describe(\"A thought to record while reasoning through a task.\"),\n});\n\nexport type CreateThinkToolOptions = {\n name?: string;\n description?: string;\n};\n\nexport function createThinkTool(options: CreateThinkToolOptions = {}) {\n return createTool({\n name: options.name ?? \"think\",\n description: options.description ?? defaultThinkToolDescription,\n input: thinkToolInput,\n output: z.string(),\n execute: (args) => args.thought,\n });\n}\n"],"mappings":"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","names":[]}
|