@anvia/core 0.6.1 → 0.6.3
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/index.d.ts +8 -8
- package/dist/agent/index.js +8 -6
- package/dist/{agent-MQdfhE7y.d.ts → agent-CFMdNB6O.d.ts} +11 -4
- package/dist/audio-generation/index.d.ts +1 -1
- package/dist/{chunk-AER5FGPK.js → chunk-5OGAUWM5.js} +14 -30
- package/dist/chunk-5OGAUWM5.js.map +1 -0
- package/dist/{chunk-I47EHI45.js → chunk-66IJDP6L.js} +8 -6
- package/dist/chunk-66IJDP6L.js.map +1 -0
- package/dist/{chunk-2SSND6H4.js → chunk-AYR3BJWH.js} +10 -11
- package/dist/chunk-AYR3BJWH.js.map +1 -0
- package/dist/{chunk-EFGX3EX5.js → chunk-FTO3W4UP.js} +2 -2
- package/dist/chunk-FTO3W4UP.js.map +1 -0
- package/dist/{chunk-YLN6QF5S.js → chunk-GBBMMU5E.js} +120 -65
- package/dist/chunk-GBBMMU5E.js.map +1 -0
- package/dist/chunk-MMHG7WAM.js +19 -0
- package/dist/chunk-MMHG7WAM.js.map +1 -0
- package/dist/chunk-S5IGJ4RB.js +224 -0
- package/dist/chunk-S5IGJ4RB.js.map +1 -0
- package/dist/{chunk-GNNNJZ2P.js → chunk-SYMAVW5T.js} +3 -3
- package/dist/{chunk-ZQQYFVO5.js → chunk-WJO6NVE2.js} +4 -217
- package/dist/chunk-WJO6NVE2.js.map +1 -0
- package/dist/{chunk-SHHSMV7O.js → chunk-ZT2YH2GA.js} +5 -5
- package/dist/chunk-ZT2YH2GA.js.map +1 -0
- package/dist/completion/index.d.ts +3 -3
- package/dist/completion/index.js +15 -7
- package/dist/{create-completion-B7-k4LsF.d.ts → create-completion-BEbtU5pX.d.ts} +3 -2
- package/dist/embeddings/index.js +1 -1
- package/dist/evals/index.d.ts +4 -4
- package/dist/evals/index.js +30 -26
- package/dist/evals/index.js.map +1 -1
- package/dist/extractor/index.d.ts +4 -4
- package/dist/extractor/index.js +9 -7
- package/dist/image-generation/index.d.ts +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +14 -11
- package/dist/internal/agent.d.ts +4 -4
- package/dist/internal/agent.js +7 -5
- package/dist/loaders/index.d.ts +1 -1
- package/dist/mcp/index.d.ts +4 -4
- package/dist/mcp/index.js +5 -4
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory/index.d.ts +1 -1
- package/dist/{middleware-D6Wu0AcC.d.ts → middleware-C0eXGwoh.d.ts} +2 -2
- package/dist/observability/index.d.ts +2 -2
- package/dist/pipeline/index.d.ts +4 -4
- package/dist/pipeline/index.js +17 -12
- package/dist/pipeline/index.js.map +1 -1
- package/dist/skills/index.d.ts +4 -4
- package/dist/skills/index.js +6 -4
- package/dist/{think-tool-DTDGH1Q1.d.ts → think-tool-DQw-Oz9J.d.ts} +1 -1
- package/dist/tool/index.d.ts +4 -4
- package/dist/tool/index.js +9 -6
- package/dist/{tool-OU7OZS0t.d.ts → tool-Bwj_zoTx.d.ts} +3 -4
- package/dist/transcription/index.d.ts +1 -1
- package/dist/{types-DXkaLs4s.d.ts → types-BLyF-Tub.d.ts} +2 -2
- package/dist/{types-Bpjngcxq.d.ts → types-BfEFm6zu.d.ts} +1 -1
- package/dist/{types-_boSLqrx.d.ts → types-C8loR4il.d.ts} +3 -1
- package/dist/vector-store/index.d.ts +2 -2
- package/dist/vector-store/index.js +3 -2
- package/package.json +1 -1
- package/dist/chunk-2SSND6H4.js.map +0 -1
- package/dist/chunk-AER5FGPK.js.map +0 -1
- package/dist/chunk-EFGX3EX5.js.map +0 -1
- package/dist/chunk-I47EHI45.js.map +0 -1
- package/dist/chunk-SHHSMV7O.js.map +0 -1
- package/dist/chunk-YLN6QF5S.js.map +0 -1
- package/dist/chunk-ZQQYFVO5.js.map +0 -1
- /package/dist/{chunk-GNNNJZ2P.js.map → chunk-SYMAVW5T.js.map} +0 -0
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
toProviderJsonSchema
|
|
3
|
-
} from "./chunk-WQKHFADH.js";
|
|
4
|
-
|
|
5
1
|
// src/completion/types.ts
|
|
6
2
|
var UserContent = {
|
|
7
3
|
text(text) {
|
|
@@ -222,226 +218,17 @@ function requestHasFileDocumentInput(request) {
|
|
|
222
218
|
);
|
|
223
219
|
}
|
|
224
220
|
|
|
225
|
-
// src/completion/create-completion.ts
|
|
226
|
-
function createCompletion(model, options) {
|
|
227
|
-
return sendCompletion(model, options);
|
|
228
|
-
}
|
|
229
|
-
function createCompletionStream(model, options) {
|
|
230
|
-
const request = toCompletionRequest(options);
|
|
231
|
-
if (!isStreamingCompletionModel(model) || !model.capabilities.streaming) {
|
|
232
|
-
throw new Error("This completion model does not support streaming");
|
|
233
|
-
}
|
|
234
|
-
assertCompletionRequestSupported(model, request, { streaming: true });
|
|
235
|
-
return model.streamCompletion(request);
|
|
236
|
-
}
|
|
237
|
-
async function createParsedCompletion(model, options) {
|
|
238
|
-
const { schema, ...completionOptions } = options;
|
|
239
|
-
const request = toCompletionRequest(
|
|
240
|
-
{
|
|
241
|
-
...completionOptions,
|
|
242
|
-
outputSchema: toProviderJsonSchema(schema)
|
|
243
|
-
},
|
|
244
|
-
"createParsedCompletion"
|
|
245
|
-
);
|
|
246
|
-
assertCompletionRequestSupported(model, request);
|
|
247
|
-
const response = await model.completion(request);
|
|
248
|
-
const text = textFromAssistantContent(response.choice);
|
|
249
|
-
return {
|
|
250
|
-
data: parseCompletionData(text, schema),
|
|
251
|
-
text,
|
|
252
|
-
content: response.choice,
|
|
253
|
-
usage: response.usage,
|
|
254
|
-
response
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
async function sendCompletion(model, options) {
|
|
258
|
-
const request = toCompletionRequest(options);
|
|
259
|
-
assertCompletionRequestSupported(model, request);
|
|
260
|
-
const response = await model.completion(request);
|
|
261
|
-
return {
|
|
262
|
-
text: textFromAssistantContent(response.choice),
|
|
263
|
-
content: response.choice,
|
|
264
|
-
usage: response.usage,
|
|
265
|
-
response
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
function toCompletionRequest(options, helperName = "createCompletion") {
|
|
269
|
-
const chatHistory = [...options.messages ?? [], ...messagesFromInput(options.input)];
|
|
270
|
-
if (chatHistory.length === 0) {
|
|
271
|
-
throw new Error(`${helperName} requires input or messages.`);
|
|
272
|
-
}
|
|
273
|
-
const request = {
|
|
274
|
-
chatHistory,
|
|
275
|
-
documents: [...options.documents ?? []],
|
|
276
|
-
tools: [...options.tools ?? []]
|
|
277
|
-
};
|
|
278
|
-
if (options.instructions !== void 0 && options.instructions.length > 0) {
|
|
279
|
-
request.instructions = options.instructions;
|
|
280
|
-
}
|
|
281
|
-
if (options.temperature !== void 0) request.temperature = options.temperature;
|
|
282
|
-
if (options.maxTokens !== void 0) request.maxTokens = options.maxTokens;
|
|
283
|
-
if (options.toolChoice !== void 0) request.toolChoice = options.toolChoice;
|
|
284
|
-
if (options.outputSchema !== void 0) request.outputSchema = options.outputSchema;
|
|
285
|
-
if (options.params !== void 0) request.additionalParams = options.params;
|
|
286
|
-
return request;
|
|
287
|
-
}
|
|
288
|
-
function messagesFromInput(input) {
|
|
289
|
-
if (input === void 0) {
|
|
290
|
-
return [];
|
|
291
|
-
}
|
|
292
|
-
if (typeof input === "string") {
|
|
293
|
-
return [Message.user(input)];
|
|
294
|
-
}
|
|
295
|
-
return Array.isArray(input) ? [...input] : [input];
|
|
296
|
-
}
|
|
297
|
-
function isStreamingCompletionModel(model) {
|
|
298
|
-
return typeof model.streamCompletion === "function";
|
|
299
|
-
}
|
|
300
|
-
function parseCompletionData(text, schema) {
|
|
301
|
-
let json;
|
|
302
|
-
try {
|
|
303
|
-
json = JSON.parse(text);
|
|
304
|
-
} catch (error) {
|
|
305
|
-
throw new Error("createParsedCompletion expected the model response to be valid JSON.", {
|
|
306
|
-
cause: error
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
return schema.parse(json);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// src/completion/documents.ts
|
|
313
|
-
function normalizeDocuments(documents) {
|
|
314
|
-
if (documents.length === 0) {
|
|
315
|
-
return void 0;
|
|
316
|
-
}
|
|
317
|
-
return Message.user(documents.map(formatDocument).join("\n"));
|
|
318
|
-
}
|
|
319
|
-
function formatDocument(document) {
|
|
320
|
-
return `<file id: ${document.id}>
|
|
321
|
-
${formatDocumentBody(document)}
|
|
322
|
-
</file>
|
|
323
|
-
`;
|
|
324
|
-
}
|
|
325
|
-
function formatDocumentBody(document) {
|
|
326
|
-
const metadata = formatMetadata(document.additionalProps);
|
|
327
|
-
return metadata === void 0 ? document.text : `${metadata}
|
|
328
|
-
${document.text}`;
|
|
329
|
-
}
|
|
330
|
-
function formatMetadata(additionalProps) {
|
|
331
|
-
if (additionalProps === void 0) {
|
|
332
|
-
return void 0;
|
|
333
|
-
}
|
|
334
|
-
const entries = Object.entries(additionalProps).sort(
|
|
335
|
-
([left], [right]) => left.localeCompare(right)
|
|
336
|
-
);
|
|
337
|
-
if (entries.length === 0) {
|
|
338
|
-
return void 0;
|
|
339
|
-
}
|
|
340
|
-
const metadata = entries.map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(" ");
|
|
341
|
-
return `<metadata ${metadata} />`;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// src/completion/request.ts
|
|
345
|
-
var CompletionRequestBuilder = class {
|
|
346
|
-
constructor(model, promptMessage) {
|
|
347
|
-
this.model = model;
|
|
348
|
-
this.promptMessage = promptMessage;
|
|
349
|
-
}
|
|
350
|
-
model;
|
|
351
|
-
promptMessage;
|
|
352
|
-
requestModel;
|
|
353
|
-
instructionBlocks = [];
|
|
354
|
-
history = [];
|
|
355
|
-
docs = [];
|
|
356
|
-
toolDefs = [];
|
|
357
|
-
temp;
|
|
358
|
-
maxTokenCount;
|
|
359
|
-
choice;
|
|
360
|
-
params;
|
|
361
|
-
schema;
|
|
362
|
-
modelOverride(model) {
|
|
363
|
-
this.requestModel = model;
|
|
364
|
-
return this;
|
|
365
|
-
}
|
|
366
|
-
instructions(instructions) {
|
|
367
|
-
if (instructions !== void 0 && instructions.length > 0) {
|
|
368
|
-
this.instructionBlocks.push(instructions);
|
|
369
|
-
}
|
|
370
|
-
return this;
|
|
371
|
-
}
|
|
372
|
-
messages(messages) {
|
|
373
|
-
this.history.push(...messages);
|
|
374
|
-
return this;
|
|
375
|
-
}
|
|
376
|
-
documents(documents) {
|
|
377
|
-
this.docs.push(...documents);
|
|
378
|
-
return this;
|
|
379
|
-
}
|
|
380
|
-
tools(tools) {
|
|
381
|
-
this.toolDefs.push(...tools);
|
|
382
|
-
return this;
|
|
383
|
-
}
|
|
384
|
-
temperature(temperature) {
|
|
385
|
-
this.temp = temperature;
|
|
386
|
-
return this;
|
|
387
|
-
}
|
|
388
|
-
maxTokens(maxTokens) {
|
|
389
|
-
this.maxTokenCount = maxTokens;
|
|
390
|
-
return this;
|
|
391
|
-
}
|
|
392
|
-
toolChoice(toolChoice) {
|
|
393
|
-
this.choice = toolChoice;
|
|
394
|
-
return this;
|
|
395
|
-
}
|
|
396
|
-
additionalParams(additionalParams) {
|
|
397
|
-
this.params = additionalParams;
|
|
398
|
-
return this;
|
|
399
|
-
}
|
|
400
|
-
outputSchema(outputSchema) {
|
|
401
|
-
this.schema = outputSchema;
|
|
402
|
-
return this;
|
|
403
|
-
}
|
|
404
|
-
build() {
|
|
405
|
-
const instructions = this.buildInstructions();
|
|
406
|
-
const request = {
|
|
407
|
-
chatHistory: [...this.history, this.promptMessage],
|
|
408
|
-
documents: [...this.docs],
|
|
409
|
-
tools: [...this.toolDefs]
|
|
410
|
-
};
|
|
411
|
-
if (this.requestModel !== void 0) request.model = this.requestModel;
|
|
412
|
-
if (instructions !== void 0) request.instructions = instructions;
|
|
413
|
-
if (this.temp !== void 0) request.temperature = this.temp;
|
|
414
|
-
if (this.maxTokenCount !== void 0) request.maxTokens = this.maxTokenCount;
|
|
415
|
-
if (this.choice !== void 0) request.toolChoice = this.choice;
|
|
416
|
-
if (this.params !== void 0) request.additionalParams = this.params;
|
|
417
|
-
if (this.schema !== void 0) request.outputSchema = this.schema;
|
|
418
|
-
return request;
|
|
419
|
-
}
|
|
420
|
-
async send() {
|
|
421
|
-
const request = this.build();
|
|
422
|
-
assertCompletionRequestSupported(this.model, request);
|
|
423
|
-
return this.model.completion(request);
|
|
424
|
-
}
|
|
425
|
-
buildInstructions() {
|
|
426
|
-
return this.instructionBlocks.length === 0 ? void 0 : this.instructionBlocks.join("\n\n");
|
|
427
|
-
}
|
|
428
|
-
};
|
|
429
|
-
|
|
430
221
|
export {
|
|
431
222
|
UserContent,
|
|
432
223
|
ToolContent,
|
|
224
|
+
serializeToolResultOutput,
|
|
225
|
+
isToolResultContentArray,
|
|
433
226
|
AssistantContent,
|
|
434
227
|
reasoningDisplayText,
|
|
435
228
|
Message,
|
|
436
229
|
Usage,
|
|
437
230
|
CompletionCapabilityError,
|
|
438
231
|
assertCompletionRequestSupported,
|
|
439
|
-
textFromAssistantContent
|
|
440
|
-
createCompletion,
|
|
441
|
-
createCompletionStream,
|
|
442
|
-
createParsedCompletion,
|
|
443
|
-
normalizeDocuments,
|
|
444
|
-
formatDocument,
|
|
445
|
-
CompletionRequestBuilder
|
|
232
|
+
textFromAssistantContent
|
|
446
233
|
};
|
|
447
|
-
//# sourceMappingURL=chunk-
|
|
234
|
+
//# sourceMappingURL=chunk-WJO6NVE2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/completion/types.ts"],"sourcesContent":["export type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport type JsonObject = { [key: string]: JsonValue | undefined };\n\nexport type Document = {\n id: string;\n text: string;\n additionalProps?: Record<string, string>;\n};\n\nexport type Text = {\n type: \"text\";\n text: string;\n signature?: string;\n};\n\nexport type ImageDetail = \"auto\" | \"low\" | \"high\";\n\nexport type ImageContent = {\n type: \"image\";\n source:\n | {\n type: \"url\";\n url: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n };\n detail?: ImageDetail;\n};\n\nexport type DocumentContent = {\n type: \"document\";\n source:\n | {\n type: \"url\";\n url: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"text\";\n text: string;\n mediaType?: string;\n filename?: string;\n };\n};\n\nexport type Reasoning = {\n type: \"reasoning\";\n text: string;\n id?: string;\n content?: ReasoningContent[];\n};\n\nexport type ReasoningContent =\n | {\n type: \"text\";\n text: string;\n signature?: string;\n }\n | {\n type: \"summary\";\n text: string;\n }\n | {\n type: \"encrypted\";\n data: string;\n }\n | {\n type: \"redacted\";\n data: string;\n };\n\nexport type ReasoningContentType = ReasoningContent[\"type\"];\n\nexport type ToolFunction = {\n name: string;\n arguments: JsonValue;\n};\n\nexport type ToolCall = {\n type: \"tool_call\";\n id: string;\n callId?: string;\n function: ToolFunction;\n signature?: string;\n additionalParams?: JsonValue;\n};\n\nexport type ToolResultContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mediaType?: string };\n\nexport type ToolResult = {\n type: \"tool_result\";\n id: string;\n callId?: string;\n content: ToolResultContent[];\n};\n\nexport type UserContent = Text | ImageContent | DocumentContent;\nexport type AssistantContent = Text | ToolCall | Reasoning | ImageContent;\nexport type ToolContent = ToolResult;\n\nexport type SystemMessage = {\n role: \"system\";\n content: string;\n};\n\nexport type UserMessage = {\n role: \"user\";\n content: UserContent[];\n};\n\nexport type AssistantMessage = {\n role: \"assistant\";\n id?: string;\n content: AssistantContent[];\n};\n\nexport type ToolMessage = {\n role: \"tool\";\n content: ToolContent[];\n};\n\nexport type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage;\n\nexport const UserContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n documentUrl(\n url: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"url\", url, mediaType }\n : { type: \"url\", url, mediaType, filename: options.filename },\n };\n },\n documentBase64(\n data: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"base64\", data, mediaType }\n : { type: \"base64\", data, mediaType, filename: options.filename },\n };\n },\n documentText(text: string): Text {\n return { type: \"text\", text };\n },\n};\n\nexport const ToolContent = {\n toolResult(id: string, content: string | ToolResultContent[], callId?: string): ToolResult {\n const normalized =\n typeof content === \"string\" ? [{ type: \"text\" as const, text: content }] : content;\n return callId === undefined\n ? { type: \"tool_result\", id, content: normalized }\n : { type: \"tool_result\", id, callId, content: normalized };\n },\n};\n\nexport function serializeToolResultOutput(output: unknown): string {\n if (typeof output === \"string\") {\n return output;\n }\n\n try {\n const serialized = JSON.stringify(output);\n return serialized === undefined ? String(output) : serialized;\n } catch {\n return String(output);\n }\n}\n\nexport function isToolResultContentArray(value: unknown): value is ToolResultContent[] {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n value.every((item) => {\n if (typeof item !== \"object\" || item === null || !(\"type\" in item)) {\n return false;\n }\n if (item.type === \"text\") {\n return \"text\" in item && typeof item.text === \"string\";\n }\n if (item.type === \"image\") {\n return (\n \"data\" in item &&\n typeof item.data === \"string\" &&\n (!(\"mediaType\" in item) ||\n item.mediaType === undefined ||\n typeof item.mediaType === \"string\")\n );\n }\n return false;\n })\n );\n}\n\nexport const AssistantContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n reasoning(text: string, id?: string): Reasoning {\n return id === undefined ? { type: \"reasoning\", text } : { type: \"reasoning\", text, id };\n },\n reasoningFromContent(content: ReasoningContent[], id?: string): Reasoning {\n const text = reasoningDisplayText(content);\n const reasoning: Reasoning = { type: \"reasoning\", text, content };\n return id === undefined ? reasoning : { ...reasoning, id };\n },\n reasoningSummary(text: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"summary\", text }], id);\n },\n reasoningEncrypted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"encrypted\", data }], id);\n },\n reasoningRedacted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"redacted\", data }], id);\n },\n toolCall(id: string, name: string, args: JsonValue, callId?: string): ToolCall {\n const base: ToolCall = {\n type: \"tool_call\",\n id,\n function: {\n name,\n arguments: args,\n },\n };\n return callId === undefined ? base : { ...base, callId };\n },\n};\n\nexport function reasoningDisplayText(reasoning: Reasoning | ReasoningContent[]): string {\n const content = Array.isArray(reasoning) ? reasoning : reasoning.content;\n if (content === undefined) {\n return Array.isArray(reasoning) ? \"\" : reasoning.text;\n }\n return content\n .flatMap((item) => {\n if (item.type === \"text\" || item.type === \"summary\") {\n return [item.text];\n }\n return [];\n })\n .join(\"\");\n}\n\nexport const Message = {\n system(content: string): Message {\n return { role: \"system\", content };\n },\n user(content: string | UserContent[]): Message {\n return {\n role: \"user\",\n content: typeof content === \"string\" ? [UserContent.text(content)] : content,\n };\n },\n assistant(content: string | AssistantContent[], id?: string): Message {\n const normalized = typeof content === \"string\" ? [AssistantContent.text(content)] : content;\n return id === undefined\n ? { role: \"assistant\", content: normalized }\n : { role: \"assistant\", id, content: normalized };\n },\n tool(content: ToolContent | ToolContent[]): Message {\n return {\n role: \"tool\",\n content: Array.isArray(content) ? content : [content],\n };\n },\n toolResult(id: string, output: unknown, options: { callId?: string | undefined } = {}): Message {\n const content = isToolResultContentArray(output) ? output : serializeToolResultOutput(output);\n return Message.tool(ToolContent.toolResult(id, content, options.callId));\n },\n};\n\nexport type ToolChoice =\n | \"auto\"\n | \"required\"\n | \"none\"\n | {\n type: \"function\";\n name: string;\n };\n\nexport type ToolDefinition = {\n name: string;\n description: string;\n parameters: JsonObject;\n};\n\nexport type Usage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n cachedInputTokens: number;\n cacheCreationInputTokens: number;\n};\n\nexport const Usage = {\n empty(): Usage {\n return {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n cacheCreationInputTokens: 0,\n };\n },\n add(left: Usage, right: Usage): Usage {\n return {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n totalTokens: left.totalTokens + right.totalTokens,\n cachedInputTokens: left.cachedInputTokens + right.cachedInputTokens,\n cacheCreationInputTokens: left.cacheCreationInputTokens + right.cacheCreationInputTokens,\n };\n },\n};\n\nexport type CompletionRequest = {\n model?: string;\n instructions?: string;\n chatHistory: Message[];\n documents: Document[];\n tools: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n toolChoice?: ToolChoice;\n additionalParams?: JsonValue;\n outputSchema?: JsonObject;\n};\n\nexport type CompletionResponse<RawResponse = unknown> = {\n choice: AssistantContent[];\n usage: Usage;\n rawResponse: RawResponse;\n messageId?: string;\n};\n\nexport type CompletionModelCapabilities = {\n streaming: boolean;\n tools: boolean;\n toolChoice: boolean;\n imageInput: boolean;\n documentInput: boolean;\n outputSchema: boolean;\n reasoning: boolean;\n};\n\nexport interface CompletionModel<RawResponse = unknown> {\n readonly provider: string;\n readonly defaultModel: string;\n readonly capabilities: CompletionModelCapabilities;\n traceRequest?(\n request: CompletionRequest,\n options?: { stream?: boolean | undefined },\n ): JsonObject | undefined;\n completion(request: CompletionRequest): Promise<CompletionResponse<RawResponse>>;\n}\n\nexport type CompletionStreamEvent<RawResponse = unknown> =\n | {\n type: \"text_delta\";\n delta: string;\n }\n | {\n type: \"reasoning_delta\";\n delta: string;\n id?: string;\n contentType?: ReasoningContentType;\n signature?: string;\n }\n | {\n type: \"tool_call_delta\";\n id: string;\n callId?: string;\n name?: string;\n argumentsDelta?: string;\n signature?: string;\n }\n | {\n type: \"tool_call\";\n toolCall: ToolCall;\n }\n | {\n type: \"message_id\";\n id: string;\n }\n | {\n type: \"final\";\n response: CompletionResponse<RawResponse>;\n }\n | {\n type: \"error\";\n error: unknown;\n };\n\nexport interface StreamingCompletionModel<RawResponse = unknown>\n extends CompletionModel<RawResponse> {\n streamCompletion(request: CompletionRequest): AsyncIterable<CompletionStreamEvent<RawResponse>>;\n}\n\nexport class CompletionCapabilityError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CompletionCapabilityError\";\n }\n}\n\nexport function assertCompletionRequestSupported(\n model: CompletionModel,\n request: CompletionRequest,\n options: { streaming?: boolean | undefined } = {},\n): void {\n const modelLabel = `${model.provider}:${request.model ?? model.defaultModel}`;\n const capabilities = model.capabilities;\n\n if (options.streaming === true && !capabilities.streaming) {\n throw new CompletionCapabilityError(`${modelLabel} does not support streaming completions.`);\n }\n\n if (request.tools.length > 0 && !capabilities.tools) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool definitions.`);\n }\n\n if (request.toolChoice !== undefined && !capabilities.toolChoice) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool choice.`);\n }\n\n if (request.outputSchema !== undefined && !capabilities.outputSchema) {\n throw new CompletionCapabilityError(`${modelLabel} does not support output schemas.`);\n }\n\n if (!capabilities.imageInput && requestHasImageInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support image input.`);\n }\n\n if (!capabilities.documentInput && requestHasFileDocumentInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support document file input.`);\n }\n}\n\nexport function textFromAssistantContent(content: AssistantContent[]): string {\n return content.flatMap((item) => (item.type === \"text\" ? [item.text] : [])).join(\"\\n\");\n}\n\nfunction requestHasImageInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"system\" ? false : message.content.some((content) => content.type === \"image\"),\n );\n}\n\nfunction requestHasFileDocumentInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"user\"\n ? message.content.some(\n (content) => content.type === \"document\" && content.source.type !== \"text\",\n )\n : false,\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-YK4WAAS4.js";
|
|
4
4
|
import {
|
|
5
5
|
createTool
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-66IJDP6L.js";
|
|
7
|
+
import {
|
|
8
|
+
isRecord
|
|
9
|
+
} from "./chunk-MMHG7WAM.js";
|
|
7
10
|
|
|
8
11
|
// src/skills/instructions.ts
|
|
9
12
|
function skillInstructions(skills) {
|
|
@@ -386,13 +389,10 @@ async function collectFiles(root, directory, files) {
|
|
|
386
389
|
function toPortablePath(path) {
|
|
387
390
|
return sep === "/" ? path : path.split(sep).join("/");
|
|
388
391
|
}
|
|
389
|
-
function isRecord(value) {
|
|
390
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
391
|
-
}
|
|
392
392
|
|
|
393
393
|
export {
|
|
394
394
|
loadSkills,
|
|
395
395
|
SkillValidationError,
|
|
396
396
|
skill
|
|
397
397
|
};
|
|
398
|
-
//# sourceMappingURL=chunk-
|
|
398
|
+
//# sourceMappingURL=chunk-ZT2YH2GA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/skills/instructions.ts","../src/skills/tools.ts","../src/skills/load.ts","../src/skills/local.ts","../src/skills/types.ts"],"sourcesContent":["import type { Skill } from \"./types\";\n\nexport function skillInstructions(skills: Skill[]): string {\n if (skills.length === 0) {\n return \"\";\n }\n\n return [\n \"You have access to Agent Skills.\",\n \"Skills are compact capability packages. Use the skill tools to load full instructions, references, or scripts only when a skill is relevant.\",\n \"\",\n \"Available skills:\",\n ...skills.map(formatSkill),\n \"\",\n \"Skill tools:\",\n \"- get_skill_instructions: load full SKILL.md guidance for a skill.\",\n \"- get_skill_reference: read a reference file from a skill.\",\n \"- get_skill_script: read a script file from a skill.\",\n \"- run_skill_script: execute a script from a skill with arguments.\",\n ].join(\"\\n\");\n}\n\nfunction formatSkill(skill: Skill): string {\n const lines = [`- ${skill.name}: ${skill.description}`];\n if (skill.references.length > 0) {\n lines.push(` references: ${skill.references.join(\", \")}`);\n }\n if (skill.scripts.length > 0) {\n lines.push(` scripts: ${skill.scripts.join(\", \")}`);\n }\n return lines.join(\"\\n\");\n}\n","import { spawn } from \"node:child_process\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { type AnyTool, createTool } from \"../tool\";\nimport { markSkillTool } from \"../tool/skill-tool-marker\";\nimport type { Skill } from \"./types\";\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_OUTPUT_CHARS = 20_000;\n\nexport function createSkillTools(skills: Skill[]): AnyTool[] {\n const registry = new SkillRegistry(skills);\n\n return [\n markSkillTool(\n createTool({\n name: \"get_skill_instructions\",\n description: \"Load the full SKILL.md instructions for an Agent Skill.\",\n input: z.object({\n skillName: z.string().describe(\"The name of the skill to load.\"),\n }),\n output: z.string(),\n execute: ({ skillName }) => registry.get(skillName).instructions,\n }),\n ),\n markSkillTool(\n createTool({\n name: \"get_skill_reference\",\n description: \"Read a reference file from an Agent Skill.\",\n input: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n referencePath: z.string().describe(\"A path listed in the skill references.\"),\n }),\n output: z.string(),\n execute: ({ skillName, referencePath }) => registry.readReference(skillName, referencePath),\n }),\n ),\n markSkillTool(\n createTool({\n name: \"get_skill_script\",\n description: \"Read a script file from an Agent Skill.\",\n input: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n scriptPath: z.string().describe(\"A path listed in the skill scripts.\"),\n }),\n output: z.string(),\n execute: ({ skillName, scriptPath }) => registry.readScript(skillName, scriptPath),\n }),\n ),\n markSkillTool(\n createTool({\n name: \"run_skill_script\",\n description: \"Execute a script from an Agent Skill with optional arguments.\",\n input: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n scriptPath: z.string().describe(\"A path listed in the skill scripts.\"),\n args: z.array(z.string()).optional().describe(\"Arguments passed to the script.\"),\n timeoutMs: z.number().int().positive().optional().describe(\"Execution timeout in ms.\"),\n }),\n output: z.string(),\n execute: ({ skillName, scriptPath, args = [], timeoutMs = DEFAULT_TIMEOUT_MS }) =>\n registry.runScript(skillName, scriptPath, args, timeoutMs),\n }),\n ),\n ];\n}\n\nclass SkillRegistry {\n private readonly skills = new Map<string, Skill>();\n\n constructor(skills: Skill[]) {\n for (const skill of skills) {\n this.skills.set(skill.name, skill);\n }\n }\n\n get(skillName: string): Skill {\n const skill = this.skills.get(skillName);\n if (skill === undefined) {\n throw new Error(`Skill not found: ${skillName}`);\n }\n return skill;\n }\n\n async readReference(skillName: string, referencePath: string): Promise<string> {\n const skill = this.get(skillName);\n const path = this.resolveContainedPath(skill, \"references\", referencePath);\n if (!skill.references.includes(referencePath)) {\n throw new Error(`Skill reference not found: ${skillName}/${referencePath}`);\n }\n return readFile(path, \"utf8\");\n }\n\n async readScript(skillName: string, scriptPath: string): Promise<string> {\n const skill = this.get(skillName);\n const path = this.resolveContainedPath(skill, \"scripts\", scriptPath);\n if (!skill.scripts.includes(scriptPath)) {\n throw new Error(`Skill script not found: ${skillName}/${scriptPath}`);\n }\n return readFile(path, \"utf8\");\n }\n\n async runScript(\n skillName: string,\n scriptPath: string,\n args: string[],\n timeoutMs: number,\n ): Promise<string> {\n const skill = this.get(skillName);\n const script = this.resolveContainedPath(skill, \"scripts\", scriptPath);\n if (!skill.scripts.includes(scriptPath)) {\n throw new Error(`Skill script not found: ${skillName}/${scriptPath}`);\n }\n return runExecutable(script, args, skill.directory, timeoutMs);\n }\n\n private resolveContainedPath(\n skill: Skill,\n section: \"references\" | \"scripts\",\n requestedPath: string,\n ): string {\n if (requestedPath.length === 0 || isAbsolute(requestedPath)) {\n throw new Error(`Invalid skill path: ${requestedPath}`);\n }\n\n const root = resolve(skill.directory, section);\n const resolved = resolve(root, requestedPath);\n const rel = relative(root, resolved);\n if (rel === \"..\" || rel.startsWith(`..${\"/\"}`) || rel.startsWith(`..${\"\\\\\"}`)) {\n throw new Error(`Invalid skill path: ${requestedPath}`);\n }\n\n return resolved;\n }\n}\n\nfunction runExecutable(\n command: string,\n args: string[],\n cwd: string,\n timeoutMs: number,\n): Promise<string> {\n return new Promise((resolvePromise, reject) => {\n const child = spawn(command, args, {\n cwd,\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n let timedOut = false;\n const timeout = setTimeout(() => {\n timedOut = true;\n child.kill();\n }, timeoutMs);\n\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk) => {\n stdout = appendLimited(stdout, chunk);\n });\n child.stderr.on(\"data\", (chunk) => {\n stderr = appendLimited(stderr, chunk);\n });\n child.on(\"error\", (error) => {\n clearTimeout(timeout);\n reject(error);\n });\n child.on(\"close\", (code, signal) => {\n clearTimeout(timeout);\n if (timedOut) {\n reject(new Error(`Skill script timed out after ${timeoutMs}ms`));\n return;\n }\n\n const output = formatProcessOutput(stdout, stderr);\n if (code !== 0) {\n reject(new Error(`Skill script exited with code ${code ?? \"unknown\"}: ${output}`));\n return;\n }\n if (signal !== null) {\n reject(new Error(`Skill script exited with signal ${signal}: ${output}`));\n return;\n }\n\n resolvePromise(output);\n });\n });\n}\n\nfunction formatProcessOutput(stdout: string, stderr: string): string {\n const parts: string[] = [];\n if (stdout.length > 0) {\n parts.push(`stdout:\\n${stdout}`);\n }\n if (stderr.length > 0) {\n parts.push(`stderr:\\n${stderr}`);\n }\n return parts.length === 0 ? \"\" : parts.join(\"\\n\\n\");\n}\n\nfunction appendLimited(current: string, chunk: string): string {\n const next = current + chunk;\n if (next.length <= MAX_OUTPUT_CHARS) {\n return next;\n }\n return `${next.slice(0, MAX_OUTPUT_CHARS)}\\n[truncated]`;\n}\n","import { skillInstructions } from \"./instructions\";\nimport { createSkillTools } from \"./tools\";\nimport type { Skill, SkillLoader, SkillSet } from \"./types\";\n\nexport async function loadSkills(loaders: SkillLoader | SkillLoader[]): Promise<SkillSet> {\n const ordered = Array.isArray(loaders) ? loaders : [loaders];\n const byName = new Map<string, Skill>();\n\n for (const loader of ordered) {\n for (const loaded of await loader.load()) {\n byName.delete(loaded.name);\n byName.set(loaded.name, loaded);\n }\n }\n\n const skills = [...byName.values()];\n return {\n skills,\n instructions: skillInstructions(skills),\n tools: skills.length === 0 ? [] : createSkillTools(skills),\n };\n}\n","import { readdir, readFile, stat } from \"node:fs/promises\";\nimport { basename, join, relative, resolve, sep } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { isRecord } from \"../internal/compact\";\nimport type { Skill, SkillLoader, SkillValidationIssue } from \"./types\";\nimport { SkillValidationError } from \"./types\";\n\ntype SkillFrontmatter = {\n name?: unknown;\n description?: unknown;\n license?: unknown;\n metadata?: unknown;\n};\n\nconst NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nconst MAX_NAME_LENGTH = 64;\nconst MAX_DESCRIPTION_LENGTH = 1024;\n\nexport const skill = {\n local(path: string): SkillLoader {\n return {\n load: () => loadLocalSkills(path),\n };\n },\n};\n\nasync function loadLocalSkills(path: string): Promise<Skill[]> {\n const root = resolve(path);\n if (await hasSkillFile(root)) {\n return [await readSkill(root)];\n }\n\n const entries = await readdir(root, { withFileTypes: true });\n const skills: Skill[] = [];\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n const directory = join(root, entry.name);\n if (await hasSkillFile(directory)) {\n skills.push(await readSkill(directory));\n }\n }\n return skills;\n}\n\nasync function hasSkillFile(directory: string): Promise<boolean> {\n try {\n const info = await stat(join(directory, \"SKILL.md\"));\n return info.isFile();\n } catch {\n return false;\n }\n}\n\nasync function readSkill(directory: string): Promise<Skill> {\n const skillPath = join(directory, \"SKILL.md\");\n const markdown = await readFile(skillPath, \"utf8\");\n const parsed = parseSkillMarkdown(markdown, skillPath);\n validateSkillFrontmatter(parsed.frontmatter, directory, skillPath);\n\n const name = parsed.frontmatter.name as string;\n const description = parsed.frontmatter.description as string;\n const license =\n typeof parsed.frontmatter.license === \"string\" ? parsed.frontmatter.license : undefined;\n const metadata = isRecord(parsed.frontmatter.metadata) ? parsed.frontmatter.metadata : undefined;\n\n return {\n name,\n description,\n instructions: parsed.body.trim(),\n directory,\n references: await listRelativeFiles(join(directory, \"references\")),\n scripts: await listRelativeFiles(join(directory, \"scripts\")),\n license,\n metadata,\n };\n}\n\nfunction parseSkillMarkdown(\n markdown: string,\n path: string,\n): { frontmatter: SkillFrontmatter; body: string } {\n if (!markdown.startsWith(\"---\\n\") && !markdown.startsWith(\"---\\r\\n\")) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md must start with YAML frontmatter\" },\n ]);\n }\n\n const newline = markdown.startsWith(\"---\\r\\n\") ? \"\\r\\n\" : \"\\n\";\n const marker = `${newline}---${newline}`;\n const end = markdown.indexOf(marker, 3);\n if (end === -1) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md frontmatter must end with ---\" },\n ]);\n }\n\n const rawFrontmatter = markdown.slice(3 + newline.length, end);\n const body = markdown.slice(end + marker.length);\n const parsed = parseYaml(rawFrontmatter);\n if (!isRecord(parsed)) {\n throw new SkillValidationError(\"Skill validation failed\", [\n { path, message: \"SKILL.md frontmatter must be a YAML object\" },\n ]);\n }\n\n return { frontmatter: parsed, body };\n}\n\nfunction validateSkillFrontmatter(\n frontmatter: SkillFrontmatter,\n directory: string,\n path: string,\n): void {\n const issues: SkillValidationIssue[] = [];\n const name = frontmatter.name;\n const description = frontmatter.description;\n\n if (typeof name !== \"string\" || name.length === 0) {\n issues.push({ path, message: \"name is required\" });\n } else {\n if (name.length > MAX_NAME_LENGTH) {\n issues.push({ path, message: `name must be at most ${MAX_NAME_LENGTH} characters` });\n }\n if (!NAME_PATTERN.test(name)) {\n issues.push({\n path,\n message: \"name must contain lowercase letters, numbers, and hyphens only\",\n });\n }\n if (basename(directory) !== name) {\n issues.push({ path, message: \"name must match the skill directory name\" });\n }\n }\n\n if (typeof description !== \"string\" || description.length === 0) {\n issues.push({ path, message: \"description is required\" });\n } else if (description.length > MAX_DESCRIPTION_LENGTH) {\n issues.push({\n path,\n message: `description must be at most ${MAX_DESCRIPTION_LENGTH} characters`,\n });\n }\n\n if (issues.length > 0) {\n throw new SkillValidationError(\"Skill validation failed\", issues);\n }\n}\n\nasync function listRelativeFiles(directory: string): Promise<string[]> {\n try {\n const info = await stat(directory);\n if (!info.isDirectory()) {\n return [];\n }\n } catch {\n return [];\n }\n\n const files: string[] = [];\n await collectFiles(directory, directory, files);\n return files.sort();\n}\n\nasync function collectFiles(root: string, directory: string, files: string[]): Promise<void> {\n const entries = await readdir(directory, { withFileTypes: true });\n for (const entry of entries) {\n const path = join(directory, entry.name);\n if (entry.isDirectory()) {\n await collectFiles(root, path, files);\n } else if (entry.isFile()) {\n files.push(toPortablePath(relative(root, path)));\n }\n }\n}\n\nfunction toPortablePath(path: string): string {\n return sep === \"/\" ? path : path.split(sep).join(\"/\");\n}\n","import type { AnyTool } from \"../tool\";\n\nexport type Skill = {\n readonly name: string;\n readonly description: string;\n readonly instructions: string;\n readonly directory: string;\n readonly references: string[];\n readonly scripts: string[];\n readonly license?: string | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n};\n\nexport type SkillLoader = {\n load(): Promise<Skill[]>;\n};\n\nexport type SkillSet = {\n readonly skills: Skill[];\n readonly tools: AnyTool[];\n readonly instructions: string;\n};\n\nexport type SkillValidationIssue = {\n path: string;\n message: string;\n};\n\nexport class SkillValidationError extends Error {\n readonly issues: SkillValidationIssue[];\n\n constructor(message: string, issues: SkillValidationIssue[]) {\n super(message);\n this.name = \"SkillValidationError\";\n this.issues = issues;\n }\n}\n"],"mappings":"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","names":["skill","skill","readFile","relative","resolve","resolve","readFile","relative"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { C as CreateCompletionBaseOptions, a as CreateCompletionInput, b as CreateCompletionOptions, c as CreateCompletionResult, d as CreateCompletionStreamOptions, e as CreateParsedCompletionOptions, f as CreateParsedCompletionResult, g as createCompletion, h as createCompletionStream, i as createParsedCompletion } from '../create-completion-
|
|
2
|
-
import { D as Document, M as Message, C as CompletionModel, h as ToolDefinition, n as ToolChoice, e as JsonValue, J as JsonObject, b as CompletionRequest, c as CompletionResponse } from '../types-
|
|
3
|
-
export { A as AssistantContent, a as AssistantMessage,
|
|
1
|
+
export { C as CreateCompletionBaseOptions, a as CreateCompletionInput, b as CreateCompletionOptions, c as CreateCompletionResult, d as CreateCompletionStreamOptions, e as CreateParsedCompletionOptions, f as CreateParsedCompletionResult, g as createCompletion, h as createCompletionStream, i as createParsedCompletion, j as isStreamingCompletionModel } from '../create-completion-BEbtU5pX.js';
|
|
2
|
+
import { D as Document, M as Message, C as CompletionModel, h as ToolDefinition, n as ToolChoice, e as JsonValue, J as JsonObject, b as CompletionRequest, c as CompletionResponse } from '../types-C8loR4il.js';
|
|
3
|
+
export { A as AssistantContent, a as AssistantMessage, r as CompletionCapabilityError, t as CompletionModelCapabilities, p as CompletionStreamEvent, u as DocumentContent, I as ImageContent, v as ImageDetail, d as JsonPrimitive, R as Reasoning, w as ReasoningContent, x as ReasoningContentType, o as StreamingCompletionModel, S as SystemMessage, T as Text, f as ToolCall, g as ToolContent, y as ToolFunction, i as ToolMessage, j as ToolResult, k as ToolResultContent, U as Usage, l as UserContent, m as UserMessage, z as assertCompletionRequestSupported, q as isToolResultContentArray, B as reasoningDisplayText, s as serializeToolResultOutput, E as textFromAssistantContent } from '../types-C8loR4il.js';
|
|
4
4
|
import '../zod-schema-C7F4clpm.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
package/dist/completion/index.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CompletionRequestBuilder,
|
|
3
|
+
createCompletion,
|
|
4
|
+
createCompletionStream,
|
|
5
|
+
createParsedCompletion,
|
|
6
|
+
formatDocument,
|
|
7
|
+
isStreamingCompletionModel,
|
|
8
|
+
normalizeDocuments
|
|
9
|
+
} from "../chunk-S5IGJ4RB.js";
|
|
1
10
|
import {
|
|
2
11
|
AssistantContent,
|
|
3
12
|
CompletionCapabilityError,
|
|
4
|
-
CompletionRequestBuilder,
|
|
5
13
|
Message,
|
|
6
14
|
ToolContent,
|
|
7
15
|
Usage,
|
|
8
16
|
UserContent,
|
|
9
17
|
assertCompletionRequestSupported,
|
|
10
|
-
|
|
11
|
-
createCompletionStream,
|
|
12
|
-
createParsedCompletion,
|
|
13
|
-
formatDocument,
|
|
14
|
-
normalizeDocuments,
|
|
18
|
+
isToolResultContentArray,
|
|
15
19
|
reasoningDisplayText,
|
|
20
|
+
serializeToolResultOutput,
|
|
16
21
|
textFromAssistantContent
|
|
17
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-WJO6NVE2.js";
|
|
18
23
|
import "../chunk-WQKHFADH.js";
|
|
19
24
|
export {
|
|
20
25
|
AssistantContent,
|
|
@@ -29,8 +34,11 @@ export {
|
|
|
29
34
|
createCompletionStream,
|
|
30
35
|
createParsedCompletion,
|
|
31
36
|
formatDocument,
|
|
37
|
+
isStreamingCompletionModel,
|
|
38
|
+
isToolResultContentArray,
|
|
32
39
|
normalizeDocuments,
|
|
33
40
|
reasoningDisplayText,
|
|
41
|
+
serializeToolResultOutput,
|
|
34
42
|
textFromAssistantContent
|
|
35
43
|
};
|
|
36
44
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
|
|
2
|
-
import { M as Message, D as Document, h as ToolDefinition, n as ToolChoice, J as JsonObject, e as JsonValue, A as AssistantContent, U as Usage, c as CompletionResponse, C as CompletionModel, o as StreamingCompletionModel, p as CompletionStreamEvent } from './types-
|
|
2
|
+
import { M as Message, D as Document, h as ToolDefinition, n as ToolChoice, J as JsonObject, e as JsonValue, A as AssistantContent, U as Usage, c as CompletionResponse, C as CompletionModel, o as StreamingCompletionModel, p as CompletionStreamEvent } from './types-C8loR4il.js';
|
|
3
3
|
|
|
4
4
|
type CreateCompletionInput = string | Message | Message[];
|
|
5
5
|
type CreateCompletionBaseOptions = {
|
|
@@ -32,5 +32,6 @@ type RawResponseOf<Model> = Model extends CompletionModel<infer RawResponse> ? R
|
|
|
32
32
|
declare function createCompletion<Model extends CompletionModel>(model: Model, options: CreateCompletionOptions): Promise<CreateCompletionResult<RawResponseOf<Model>>>;
|
|
33
33
|
declare function createCompletionStream<Model extends StreamingCompletionModel>(model: Model, options: CreateCompletionStreamOptions): AsyncIterable<CompletionStreamEvent<RawResponseOf<Model>>>;
|
|
34
34
|
declare function createParsedCompletion<T, Model extends CompletionModel>(model: Model, options: CreateParsedCompletionOptions<T>): Promise<CreateParsedCompletionResult<T, RawResponseOf<Model>>>;
|
|
35
|
+
declare function isStreamingCompletionModel(model: CompletionModel): model is StreamingCompletionModel;
|
|
35
36
|
|
|
36
|
-
export { type CreateCompletionBaseOptions as C, type CreateCompletionInput as a, type CreateCompletionOptions as b, type CreateCompletionResult as c, type CreateCompletionStreamOptions as d, type CreateParsedCompletionOptions as e, type CreateParsedCompletionResult as f, createCompletion as g, createCompletionStream as h, createParsedCompletion as i };
|
|
37
|
+
export { type CreateCompletionBaseOptions as C, type CreateCompletionInput as a, type CreateCompletionOptions as b, type CreateCompletionResult as c, type CreateCompletionStreamOptions as d, type CreateParsedCompletionOptions as e, type CreateParsedCompletionResult as f, createCompletion as g, createCompletionStream as h, createParsedCompletion as i, isStreamingCompletionModel as j };
|
package/dist/embeddings/index.js
CHANGED
package/dist/evals/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { P as PromptResponse, e as Agent } from '../agent-
|
|
2
|
-
import { e as JsonValue, M as Message, C as CompletionModel } from '../types-
|
|
1
|
+
import { P as PromptResponse, e as Agent } from '../agent-CFMdNB6O.js';
|
|
2
|
+
import { e as JsonValue, M as Message, C as CompletionModel } from '../types-C8loR4il.js';
|
|
3
3
|
import { Z as ZodSchema } from '../zod-schema-C7F4clpm.js';
|
|
4
4
|
import { E as EmbeddingModel } from '../types-IB2e9u5M.js';
|
|
5
5
|
import '../memory/index.js';
|
|
6
6
|
import '../observability/index.js';
|
|
7
|
-
import '../tool-
|
|
8
|
-
import '../middleware-
|
|
7
|
+
import '../tool-Bwj_zoTx.js';
|
|
8
|
+
import '../middleware-C0eXGwoh.js';
|
|
9
9
|
import '../vector-store/index.js';
|
|
10
10
|
import 'zod';
|
|
11
11
|
|
package/dist/evals/index.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExtractorBuilder
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-AYR3BJWH.js";
|
|
4
|
+
import "../chunk-SYMAVW5T.js";
|
|
5
|
+
import "../chunk-GBBMMU5E.js";
|
|
6
6
|
import "../chunk-XUUY2L2D.js";
|
|
7
7
|
import "../chunk-XXT2UCAR.js";
|
|
8
8
|
import "../chunk-YK4WAAS4.js";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import
|
|
9
|
+
import "../chunk-5OGAUWM5.js";
|
|
10
|
+
import "../chunk-66IJDP6L.js";
|
|
11
|
+
import {
|
|
12
|
+
compact
|
|
13
|
+
} from "../chunk-MMHG7WAM.js";
|
|
14
|
+
import "../chunk-S5IGJ4RB.js";
|
|
15
|
+
import "../chunk-WJO6NVE2.js";
|
|
12
16
|
import "../chunk-WQKHFADH.js";
|
|
13
17
|
import {
|
|
14
18
|
cosineSimilarity,
|
|
15
19
|
embedText
|
|
16
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-FTO3W4UP.js";
|
|
17
21
|
import {
|
|
18
22
|
mapWithConcurrency
|
|
19
23
|
} from "../chunk-OIMLU4SF.js";
|
|
@@ -60,29 +64,29 @@ function errorMessage(error) {
|
|
|
60
64
|
// src/evals/outcome.ts
|
|
61
65
|
var EvalOutcome = {
|
|
62
66
|
pass(score, options = {}) {
|
|
63
|
-
return {
|
|
67
|
+
return compact({
|
|
64
68
|
outcome: "pass",
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
69
|
+
score,
|
|
70
|
+
comment: options.comment,
|
|
71
|
+
metadata: options.metadata
|
|
72
|
+
});
|
|
69
73
|
},
|
|
70
74
|
fail(score, options = {}) {
|
|
71
|
-
return {
|
|
75
|
+
return compact({
|
|
72
76
|
outcome: "fail",
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
77
|
+
score,
|
|
78
|
+
comment: options.comment,
|
|
79
|
+
metadata: options.metadata
|
|
80
|
+
});
|
|
77
81
|
},
|
|
78
82
|
invalid(reason, options = {}) {
|
|
79
|
-
return {
|
|
83
|
+
return compact({
|
|
80
84
|
outcome: "invalid",
|
|
81
85
|
reason,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
+
score: options.score,
|
|
87
|
+
comment: options.comment,
|
|
88
|
+
metadata: options.metadata
|
|
89
|
+
});
|
|
86
90
|
}
|
|
87
91
|
};
|
|
88
92
|
|
|
@@ -253,12 +257,12 @@ async function runEvalCase(options, testCase) {
|
|
|
253
257
|
});
|
|
254
258
|
metrics.push({ metricName: metric.name, outcome, reporterErrors });
|
|
255
259
|
}
|
|
256
|
-
return {
|
|
260
|
+
return compact({
|
|
257
261
|
case: testCase,
|
|
258
|
-
|
|
259
|
-
|
|
262
|
+
output,
|
|
263
|
+
targetError,
|
|
260
264
|
metrics
|
|
261
|
-
};
|
|
265
|
+
});
|
|
262
266
|
}
|
|
263
267
|
async function safeEvaluate(suiteName, testCase, output, metric) {
|
|
264
268
|
try {
|