@anvia/core 1.5.1 → 1.6.1
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 +32 -1073
- package/dist/agent/agent-tool.js +4 -4
- package/dist/agent/agent.js +17 -17
- package/dist/agent/index.js +20 -20
- package/dist/agent/resolve-options.js +6 -6
- package/dist/agent/resolved-agent.js +18 -18
- package/dist/agent/team/agent-team.js +20 -20
- package/dist/agent/team/index.js +20 -20
- package/dist/agent/tool-catalog.js +6 -6
- package/dist/{chunk-QHGYCYV6.js → chunk-3FIX7GLM.js} +2 -2
- package/dist/{chunk-SIXS4CCU.js → chunk-4IOC4SP6.js} +4 -4
- package/dist/chunk-4IOC4SP6.js.map +1 -0
- package/dist/{chunk-JMMZICU7.js → chunk-4OSA3MMA.js} +39 -5
- package/dist/chunk-4OSA3MMA.js.map +1 -0
- package/dist/{chunk-YOLOFTAY.js → chunk-57AUTEQ6.js} +57 -5
- package/dist/chunk-57AUTEQ6.js.map +1 -0
- package/dist/{chunk-4VDDYI6P.js → chunk-5CQRCTIN.js} +2 -2
- package/dist/{chunk-F4BOW76L.js → chunk-5TGVDMGM.js} +4 -4
- package/dist/{chunk-TK2VXQVZ.js → chunk-7G3YQQVE.js} +3 -3
- package/dist/{chunk-NDAGW32C.js → chunk-7OHHMYRO.js} +2 -2
- package/dist/{chunk-3SUEXGRA.js → chunk-7V3DKQTI.js} +4 -4
- package/dist/{chunk-DXW37JLZ.js → chunk-AMPQJMDG.js} +5 -5
- package/dist/{chunk-ZQC6M22O.js → chunk-AQ47TF5K.js} +2 -2
- package/dist/{chunk-PZ7ATNR6.js → chunk-BI3T62GL.js} +9 -9
- package/dist/chunk-BI3T62GL.js.map +1 -0
- package/dist/{chunk-HAAGSIZH.js → chunk-CB2L2NIQ.js} +2 -2
- package/dist/{chunk-KX2TRKO2.js → chunk-GNBPXJC6.js} +2 -2
- package/dist/{chunk-YMTBHHLQ.js → chunk-HG6ASDNI.js} +3 -3
- package/dist/{chunk-JMNIWUFV.js → chunk-HILMAFZK.js} +2 -2
- package/dist/{chunk-PWWKX2HA.js → chunk-LGMH6PCB.js} +7 -7
- package/dist/{chunk-PPMK7CG4.js → chunk-LW6F3IGP.js} +2 -2
- package/dist/{chunk-UYODZ7OE.js → chunk-LWF6AHDG.js} +2 -2
- package/dist/{chunk-2JZV4LUS.js → chunk-MKY7KTZY.js} +3 -13
- package/dist/chunk-MKY7KTZY.js.map +1 -0
- package/dist/{chunk-RFFOL6ON.js → chunk-MWG2PMTE.js} +18 -5
- package/dist/chunk-MWG2PMTE.js.map +1 -0
- package/dist/{chunk-AJC6YRVB.js → chunk-O7NN7PF4.js} +3 -3
- package/dist/{chunk-GDY2Z2SZ.js → chunk-PFJN5OIQ.js} +2 -2
- package/dist/{chunk-XAVSWLX5.js → chunk-PV6KJWYO.js} +2 -2
- package/dist/chunk-PZC5UHIN.js +190 -0
- package/dist/chunk-PZC5UHIN.js.map +1 -0
- package/dist/{chunk-V5DWNXVH.js → chunk-W2XPREWL.js} +135 -26
- package/dist/chunk-W2XPREWL.js.map +1 -0
- package/dist/chunk-W6V63YPY.js +96 -0
- package/dist/chunk-W6V63YPY.js.map +1 -0
- package/dist/{chunk-LJGQ6VQB.js → chunk-XJ5X3NI4.js} +89 -30
- package/dist/chunk-XJ5X3NI4.js.map +1 -0
- package/dist/{chunk-HHMLE3TZ.js → chunk-YCTXTOOQ.js} +7 -16
- package/dist/chunk-YCTXTOOQ.js.map +1 -0
- package/dist/{chunk-7TUAAGVR.js → chunk-YKWUFYXT.js} +2 -2
- package/dist/{chunk-5SJBSCG2.js → chunk-YSR6KLCS.js} +8 -2
- package/dist/chunk-YSR6KLCS.js.map +1 -0
- package/dist/completion/generate-completion.js +3 -3
- package/dist/completion/index.js +3 -3
- package/dist/completion/stream-accumulator.js +1 -1
- package/dist/embeddings/embed.js +1 -1
- package/dist/embeddings/index.js +1 -1
- package/dist/evals/advanced-metrics.js +6 -6
- package/dist/evals/agent-target.js +2 -1
- package/dist/evals/cli.js +6 -6
- package/dist/evals/execution.js +3 -1
- package/dist/evals/index.js +12 -12
- package/dist/evals/judge.js +5 -5
- package/dist/evals/metrics.js +6 -6
- package/dist/evals/runner.js +5 -5
- package/dist/extractor/extractor.js +4 -4
- package/dist/extractor/index.js +4 -4
- package/dist/index.js +23 -23
- package/dist/internal/agent-runtime/agent-run.js +13 -13
- package/dist/internal/agent-runtime/continuation-state.js +3 -3
- package/dist/internal/agent-runtime/interaction-suspension.js +3 -3
- package/dist/internal/agent-runtime/memory.js +5 -5
- package/dist/internal/agent-runtime/retrieval.js +5 -5
- package/dist/internal/agent-runtime/tool-execution.js +8 -8
- package/dist/internal/agent.js +18 -18
- package/dist/internal/team-runtime/member.js +3 -3
- package/dist/internal/team-runtime/run.js +19 -19
- package/dist/memory/compaction.js +4 -4
- package/dist/memory/index.js +4 -4
- package/dist/observability/group.js +3 -3
- package/dist/observability/index.js +3 -3
- package/dist/pipeline/index.js +6 -6
- package/dist/pipeline/pipeline.js +6 -6
- package/dist/schema/standard-json-schema.js +1 -1
- package/dist/skills/index.js +7 -7
- package/dist/skills/load.js +7 -7
- package/dist/skills/tools.js +6 -6
- package/dist/streaming/index.d.ts +2 -1
- package/dist/streaming/index.js +2 -1
- package/dist/streaming/readable-stream.js +2 -1
- package/dist/tool/dynamic-tools.js +5 -5
- package/dist/tool/index.js +5 -5
- package/dist/vector-store/index.js +4 -4
- package/dist/vector-store/ingest.js +2 -2
- package/dist/vector-store/retrieve.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-2JZV4LUS.js.map +0 -1
- package/dist/chunk-54ZZJRP2.js +0 -57
- package/dist/chunk-54ZZJRP2.js.map +0 -1
- package/dist/chunk-5SJBSCG2.js.map +0 -1
- package/dist/chunk-HHMLE3TZ.js.map +0 -1
- package/dist/chunk-JMMZICU7.js.map +0 -1
- package/dist/chunk-LJGQ6VQB.js.map +0 -1
- package/dist/chunk-NNEKBZSM.js +0 -66
- package/dist/chunk-NNEKBZSM.js.map +0 -1
- package/dist/chunk-PZ7ATNR6.js.map +0 -1
- package/dist/chunk-RFFOL6ON.js.map +0 -1
- package/dist/chunk-SIXS4CCU.js.map +0 -1
- package/dist/chunk-V5DWNXVH.js.map +0 -1
- package/dist/chunk-YOLOFTAY.js.map +0 -1
- /package/dist/{chunk-QHGYCYV6.js.map → chunk-3FIX7GLM.js.map} +0 -0
- /package/dist/{chunk-4VDDYI6P.js.map → chunk-5CQRCTIN.js.map} +0 -0
- /package/dist/{chunk-F4BOW76L.js.map → chunk-5TGVDMGM.js.map} +0 -0
- /package/dist/{chunk-TK2VXQVZ.js.map → chunk-7G3YQQVE.js.map} +0 -0
- /package/dist/{chunk-NDAGW32C.js.map → chunk-7OHHMYRO.js.map} +0 -0
- /package/dist/{chunk-3SUEXGRA.js.map → chunk-7V3DKQTI.js.map} +0 -0
- /package/dist/{chunk-DXW37JLZ.js.map → chunk-AMPQJMDG.js.map} +0 -0
- /package/dist/{chunk-ZQC6M22O.js.map → chunk-AQ47TF5K.js.map} +0 -0
- /package/dist/{chunk-HAAGSIZH.js.map → chunk-CB2L2NIQ.js.map} +0 -0
- /package/dist/{chunk-KX2TRKO2.js.map → chunk-GNBPXJC6.js.map} +0 -0
- /package/dist/{chunk-YMTBHHLQ.js.map → chunk-HG6ASDNI.js.map} +0 -0
- /package/dist/{chunk-JMNIWUFV.js.map → chunk-HILMAFZK.js.map} +0 -0
- /package/dist/{chunk-PWWKX2HA.js.map → chunk-LGMH6PCB.js.map} +0 -0
- /package/dist/{chunk-PPMK7CG4.js.map → chunk-LW6F3IGP.js.map} +0 -0
- /package/dist/{chunk-UYODZ7OE.js.map → chunk-LWF6AHDG.js.map} +0 -0
- /package/dist/{chunk-AJC6YRVB.js.map → chunk-O7NN7PF4.js.map} +0 -0
- /package/dist/{chunk-GDY2Z2SZ.js.map → chunk-PFJN5OIQ.js.map} +0 -0
- /package/dist/{chunk-XAVSWLX5.js.map → chunk-PV6KJWYO.js.map} +0 -0
- /package/dist/{chunk-7TUAAGVR.js.map → chunk-YKWUFYXT.js.map} +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
abortable,
|
|
3
|
+
composeEvalSignals
|
|
4
|
+
} from "./chunk-4OSA3MMA.js";
|
|
5
|
+
import {
|
|
6
|
+
AgentRunBlockedError
|
|
7
|
+
} from "./chunk-WN6AVBO4.js";
|
|
8
|
+
|
|
9
|
+
// src/evals/agent-target.ts
|
|
10
|
+
var AgentEvalSuspensionError = class extends Error {
|
|
11
|
+
constructor(result, message = "Agent eval target suspended without an interaction responder.") {
|
|
12
|
+
super(message);
|
|
13
|
+
this.result = result;
|
|
14
|
+
this.name = "AgentEvalSuspensionError";
|
|
15
|
+
}
|
|
16
|
+
result;
|
|
17
|
+
};
|
|
18
|
+
function agentEvalTarget(options) {
|
|
19
|
+
return async (input, testCase, context) => {
|
|
20
|
+
context?.signal.throwIfAborted();
|
|
21
|
+
const maxResponses = options.interactions?.maxResponses ?? 10;
|
|
22
|
+
if (!Number.isSafeInteger(maxResponses) || maxResponses < 1) {
|
|
23
|
+
throw new TypeError("Agent eval interactions.maxResponses must be a positive integer.");
|
|
24
|
+
}
|
|
25
|
+
const request = await abortable(
|
|
26
|
+
context?.signal,
|
|
27
|
+
Promise.resolve(options.request({ input, testCase }))
|
|
28
|
+
);
|
|
29
|
+
context?.signal.throwIfAborted();
|
|
30
|
+
const invocation = composeEvalSignals(context?.signal, request.abortSignal);
|
|
31
|
+
const { signal } = invocation;
|
|
32
|
+
try {
|
|
33
|
+
signal?.throwIfAborted();
|
|
34
|
+
const ownedRequest = { ...request, abortSignal: signal };
|
|
35
|
+
const runSettings = agentRunSettings(ownedRequest);
|
|
36
|
+
let response = await abortable(signal, options.agent.generate(ownedRequest));
|
|
37
|
+
signal?.throwIfAborted();
|
|
38
|
+
let phase = 0;
|
|
39
|
+
while (response.type === "interaction") {
|
|
40
|
+
if (options.interactions === void 0) {
|
|
41
|
+
throw new AgentEvalSuspensionError(response);
|
|
42
|
+
}
|
|
43
|
+
if (phase >= maxResponses) {
|
|
44
|
+
throw new AgentEvalSuspensionError(
|
|
45
|
+
response,
|
|
46
|
+
`Agent eval target exceeded the interaction response limit of ${maxResponses}.`
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
phase += 1;
|
|
50
|
+
const interactionResponse = await abortable(
|
|
51
|
+
signal,
|
|
52
|
+
Promise.resolve(
|
|
53
|
+
options.interactions.respond({
|
|
54
|
+
interaction: response.interaction,
|
|
55
|
+
testCase,
|
|
56
|
+
phase
|
|
57
|
+
})
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
signal?.throwIfAborted();
|
|
61
|
+
response = await abortable(
|
|
62
|
+
signal,
|
|
63
|
+
options.agent.generate({
|
|
64
|
+
continuation: response.continuation,
|
|
65
|
+
response: interactionResponse,
|
|
66
|
+
...runSettings
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
signal?.throwIfAborted();
|
|
70
|
+
}
|
|
71
|
+
if (response.type === "blocked") throw new AgentRunBlockedError(response);
|
|
72
|
+
const output = options.output === void 0 ? response : await abortable(signal, Promise.resolve(options.output({ response, testCase })));
|
|
73
|
+
signal?.throwIfAborted();
|
|
74
|
+
return output;
|
|
75
|
+
} finally {
|
|
76
|
+
invocation.dispose();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function agentRunSettings(request) {
|
|
81
|
+
const {
|
|
82
|
+
prompt: _prompt,
|
|
83
|
+
messages: _messages,
|
|
84
|
+
session: _session,
|
|
85
|
+
continuation: _continuation,
|
|
86
|
+
response: _response,
|
|
87
|
+
...settings
|
|
88
|
+
} = request;
|
|
89
|
+
return settings;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export {
|
|
93
|
+
AgentEvalSuspensionError,
|
|
94
|
+
agentEvalTarget
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=chunk-W6V63YPY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/evals/agent-target.ts"],"sourcesContent":["import { AgentRunBlockedError } from \"../agent/errors\";\nimport type { AgentInteractionRequest, AgentInteractionResponse } from \"../agent/interactions\";\nimport type {\n AgentInteractionOutcome,\n AgentOutcome,\n AgentResponse,\n AgentRunOptions,\n AgentRunSettings,\n} from \"../agent/run-types\";\nimport { abortable, composeEvalSignals } from \"./execution\";\nimport type { EvalCase, EvalTarget } from \"./types\";\n\ntype EvaluableAgent<Output> = {\n generate(input: AgentRunOptions<Output>): Promise<AgentOutcome<Output>>;\n};\n\ntype IsAny<Value> = 0 extends 1 & Value ? true : false;\ntype IsExactly<Left, Right> =\n IsAny<Left> extends true\n ? false\n : [Left] extends [Right]\n ? [Right] extends [Left]\n ? true\n : false\n : false;\n\nexport type AgentEvalTargetOptions<\n Input,\n AgentOutput = string,\n Output = AgentResponse<AgentOutput>,\n Expected = unknown,\n> = {\n agent: EvaluableAgent<AgentOutput>;\n request(args: {\n input: Input;\n testCase: EvalCase<Input, Expected>;\n }): AgentRunOptions<AgentOutput> | Promise<AgentRunOptions<AgentOutput>>;\n interactions?:\n | {\n maxResponses?: number | undefined;\n respond(args: {\n interaction: AgentInteractionRequest;\n testCase: EvalCase<Input, Expected>;\n phase: number;\n }): AgentInteractionResponse | Promise<AgentInteractionResponse>;\n }\n | undefined;\n} & (IsExactly<Output, AgentResponse<AgentOutput>> extends true\n ? {\n output?(args: {\n response: AgentResponse<AgentOutput>;\n testCase: EvalCase<Input, Expected>;\n }): Output | Promise<Output>;\n }\n : {\n output(args: {\n response: AgentResponse<AgentOutput>;\n testCase: EvalCase<Input, Expected>;\n }): Output | Promise<Output>;\n });\n\nexport class AgentEvalSuspensionError extends Error {\n constructor(\n readonly result: AgentInteractionOutcome,\n message = \"Agent eval target suspended without an interaction responder.\",\n ) {\n super(message);\n this.name = \"AgentEvalSuspensionError\";\n }\n}\n\nexport function agentEvalTarget<\n Input,\n AgentOutput = string,\n Output = AgentResponse<AgentOutput>,\n Expected = unknown,\n>(\n options: AgentEvalTargetOptions<Input, AgentOutput, Output, Expected>,\n): EvalTarget<Input, Output, Expected> {\n return async (input, testCase, context) => {\n context?.signal.throwIfAborted();\n const maxResponses = options.interactions?.maxResponses ?? 10;\n if (!Number.isSafeInteger(maxResponses) || maxResponses < 1) {\n throw new TypeError(\"Agent eval interactions.maxResponses must be a positive integer.\");\n }\n const request = await abortable(\n context?.signal,\n Promise.resolve(options.request({ input, testCase })),\n );\n context?.signal.throwIfAborted();\n const invocation = composeEvalSignals(context?.signal, request.abortSignal);\n const { signal } = invocation;\n try {\n signal?.throwIfAborted();\n const ownedRequest = { ...request, abortSignal: signal };\n const runSettings = agentRunSettings(ownedRequest);\n let response = await abortable(signal, options.agent.generate(ownedRequest));\n signal?.throwIfAborted();\n let phase = 0;\n while (response.type === \"interaction\") {\n if (options.interactions === undefined) {\n throw new AgentEvalSuspensionError(response);\n }\n if (phase >= maxResponses) {\n throw new AgentEvalSuspensionError(\n response,\n `Agent eval target exceeded the interaction response limit of ${maxResponses}.`,\n );\n }\n phase += 1;\n const interactionResponse = await abortable(\n signal,\n Promise.resolve(\n options.interactions.respond({\n interaction: response.interaction,\n testCase,\n phase,\n }),\n ),\n );\n signal?.throwIfAborted();\n response = await abortable(\n signal,\n options.agent.generate({\n continuation: response.continuation,\n response: interactionResponse,\n ...runSettings,\n }),\n );\n signal?.throwIfAborted();\n }\n if (response.type === \"blocked\") throw new AgentRunBlockedError(response);\n const output =\n options.output === undefined\n ? (response as Output)\n : await abortable(signal, Promise.resolve(options.output({ response, testCase })));\n signal?.throwIfAborted();\n return output;\n } finally {\n invocation.dispose();\n }\n };\n}\n\nfunction agentRunSettings<Output>(request: AgentRunOptions<Output>): AgentRunSettings<Output> {\n const {\n prompt: _prompt,\n messages: _messages,\n session: _session,\n continuation: _continuation,\n response: _response,\n ...settings\n } = request;\n return settings;\n}\n"],"mappings":";;;;;;;;;AA6DO,IAAM,2BAAN,cAAuC,MAAM;AAAA,EAClD,YACW,QACT,UAAU,iEACV;AACA,UAAM,OAAO;AAHJ;AAIT,SAAK,OAAO;AAAA,EACd;AAAA,EALW;AAMb;AAEO,SAAS,gBAMd,SACqC;AACrC,SAAO,OAAO,OAAO,UAAU,YAAY;AACzC,aAAS,OAAO,eAAe;AAC/B,UAAM,eAAe,QAAQ,cAAc,gBAAgB;AAC3D,QAAI,CAAC,OAAO,cAAc,YAAY,KAAK,eAAe,GAAG;AAC3D,YAAM,IAAI,UAAU,kEAAkE;AAAA,IACxF;AACA,UAAM,UAAU,MAAM;AAAA,MACpB,SAAS;AAAA,MACT,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,OAAO,SAAS,CAAC,CAAC;AAAA,IACtD;AACA,aAAS,OAAO,eAAe;AAC/B,UAAM,aAAa,mBAAmB,SAAS,QAAQ,QAAQ,WAAW;AAC1E,UAAM,EAAE,OAAO,IAAI;AACnB,QAAI;AACF,cAAQ,eAAe;AACvB,YAAM,eAAe,EAAE,GAAG,SAAS,aAAa,OAAO;AACvD,YAAM,cAAc,iBAAiB,YAAY;AACjD,UAAI,WAAW,MAAM,UAAU,QAAQ,QAAQ,MAAM,SAAS,YAAY,CAAC;AAC3E,cAAQ,eAAe;AACvB,UAAI,QAAQ;AACZ,aAAO,SAAS,SAAS,eAAe;AACtC,YAAI,QAAQ,iBAAiB,QAAW;AACtC,gBAAM,IAAI,yBAAyB,QAAQ;AAAA,QAC7C;AACA,YAAI,SAAS,cAAc;AACzB,gBAAM,IAAI;AAAA,YACR;AAAA,YACA,gEAAgE,YAAY;AAAA,UAC9E;AAAA,QACF;AACA,iBAAS;AACT,cAAM,sBAAsB,MAAM;AAAA,UAChC;AAAA,UACA,QAAQ;AAAA,YACN,QAAQ,aAAa,QAAQ;AAAA,cAC3B,aAAa,SAAS;AAAA,cACtB;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AACA,gBAAQ,eAAe;AACvB,mBAAW,MAAM;AAAA,UACf;AAAA,UACA,QAAQ,MAAM,SAAS;AAAA,YACrB,cAAc,SAAS;AAAA,YACvB,UAAU;AAAA,YACV,GAAG;AAAA,UACL,CAAC;AAAA,QACH;AACA,gBAAQ,eAAe;AAAA,MACzB;AACA,UAAI,SAAS,SAAS,UAAW,OAAM,IAAI,qBAAqB,QAAQ;AACxE,YAAM,SACJ,QAAQ,WAAW,SACd,WACD,MAAM,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,EAAE,UAAU,SAAS,CAAC,CAAC,CAAC;AACrF,cAAQ,eAAe;AACvB,aAAO;AAAA,IACT,UAAE;AACA,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF;AACF;AAEA,SAAS,iBAAyB,SAA4D;AAC5F,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU;AAAA,IACV,GAAG;AAAA,EACL,IAAI;AACJ,SAAO;AACT;","names":[]}
|
|
@@ -4,6 +4,10 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
createTool
|
|
6
6
|
} from "./chunk-Y365ABZY.js";
|
|
7
|
+
import {
|
|
8
|
+
abortError,
|
|
9
|
+
throwIfAborted
|
|
10
|
+
} from "./chunk-USRKPEQN.js";
|
|
7
11
|
|
|
8
12
|
// src/skills/tools.ts
|
|
9
13
|
import { spawn } from "child_process";
|
|
@@ -12,6 +16,8 @@ import { isAbsolute, relative, resolve } from "path";
|
|
|
12
16
|
import { z } from "zod";
|
|
13
17
|
var DEFAULT_TIMEOUT_MS = 3e4;
|
|
14
18
|
var MAX_OUTPUT_CHARS = 2e4;
|
|
19
|
+
var TERMINATION_GRACE_MS = 250;
|
|
20
|
+
var TERMINATION_WATCHDOG_MS = 1250;
|
|
15
21
|
function createSkillTools(skills) {
|
|
16
22
|
const registry = new SkillRegistry(skills);
|
|
17
23
|
return [
|
|
@@ -61,7 +67,7 @@ function createSkillTools(skills) {
|
|
|
61
67
|
timeoutMs: z.number().int().positive().optional().describe("Execution timeout in ms.")
|
|
62
68
|
}),
|
|
63
69
|
outputSchema: z.string(),
|
|
64
|
-
execute: ({ skillName, scriptPath, args = [], timeoutMs = DEFAULT_TIMEOUT_MS }) => registry.runScript(skillName, scriptPath, args, timeoutMs)
|
|
70
|
+
execute: ({ skillName, scriptPath, args = [], timeoutMs = DEFAULT_TIMEOUT_MS }, context) => registry.runScript(skillName, scriptPath, args, timeoutMs, context.abortSignal)
|
|
65
71
|
})
|
|
66
72
|
)
|
|
67
73
|
];
|
|
@@ -96,13 +102,13 @@ var SkillRegistry = class {
|
|
|
96
102
|
}
|
|
97
103
|
return readFile(path, "utf8");
|
|
98
104
|
}
|
|
99
|
-
async runScript(skillName, scriptPath, args, timeoutMs) {
|
|
105
|
+
async runScript(skillName, scriptPath, args, timeoutMs, abortSignal) {
|
|
100
106
|
const skill = this.get(skillName);
|
|
101
107
|
const script = this.resolveContainedPath(skill, "scripts", scriptPath);
|
|
102
108
|
if (!skill.scripts.includes(scriptPath)) {
|
|
103
109
|
throw new Error(`Skill script not found: ${skillName}/${scriptPath}`);
|
|
104
110
|
}
|
|
105
|
-
return runExecutable(script, args, skill.directory, timeoutMs);
|
|
111
|
+
return runExecutable(script, args, skill.directory, timeoutMs, abortSignal);
|
|
106
112
|
}
|
|
107
113
|
resolveContainedPath(skill, section, requestedPath) {
|
|
108
114
|
if (requestedPath.length === 0 || isAbsolute(requestedPath)) {
|
|
@@ -117,8 +123,9 @@ var SkillRegistry = class {
|
|
|
117
123
|
return resolved;
|
|
118
124
|
}
|
|
119
125
|
};
|
|
120
|
-
function runExecutable(command, args, cwd, timeoutMs) {
|
|
126
|
+
function runExecutable(command, args, cwd, timeoutMs, abortSignal) {
|
|
121
127
|
return new Promise((resolvePromise, reject) => {
|
|
128
|
+
throwIfAborted(abortSignal);
|
|
122
129
|
const child = spawn(command, args, {
|
|
123
130
|
cwd,
|
|
124
131
|
shell: false,
|
|
@@ -126,40 +133,92 @@ function runExecutable(command, args, cwd, timeoutMs) {
|
|
|
126
133
|
});
|
|
127
134
|
let stdout = "";
|
|
128
135
|
let stderr = "";
|
|
129
|
-
let
|
|
136
|
+
let exited = false;
|
|
137
|
+
let settled = false;
|
|
138
|
+
let firstCause;
|
|
139
|
+
let escalation;
|
|
140
|
+
let watchdog;
|
|
130
141
|
const timeout = setTimeout(() => {
|
|
131
|
-
|
|
132
|
-
child.kill();
|
|
142
|
+
beginTermination(new Error(`Skill script timed out after ${timeoutMs}ms`));
|
|
133
143
|
}, timeoutMs);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
stdout = appendLimited(stdout, chunk);
|
|
138
|
-
});
|
|
139
|
-
child.stderr.on("data", (chunk) => {
|
|
140
|
-
stderr = appendLimited(stderr, chunk);
|
|
141
|
-
});
|
|
142
|
-
child.on("error", (error) => {
|
|
144
|
+
function settle(error, output = "") {
|
|
145
|
+
if (settled) return;
|
|
146
|
+
settled = true;
|
|
143
147
|
clearTimeout(timeout);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
clearTimeout(escalation);
|
|
149
|
+
clearTimeout(watchdog);
|
|
150
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
151
|
+
child.removeListener("error", onError);
|
|
152
|
+
child.removeListener("exit", onExit);
|
|
153
|
+
child.removeListener("close", onClose);
|
|
154
|
+
child.stdout.removeListener("data", onStdout);
|
|
155
|
+
child.stderr.removeListener("data", onStderr);
|
|
156
|
+
if (error !== void 0) reject(error);
|
|
157
|
+
else resolvePromise(output);
|
|
158
|
+
}
|
|
159
|
+
function finishTermination() {
|
|
160
|
+
child.stdout.destroy();
|
|
161
|
+
child.stderr.destroy();
|
|
162
|
+
settle(firstCause);
|
|
163
|
+
}
|
|
164
|
+
function beginTermination(cause) {
|
|
165
|
+
if (settled || firstCause !== void 0) return;
|
|
166
|
+
firstCause = cause;
|
|
147
167
|
clearTimeout(timeout);
|
|
148
|
-
if (
|
|
149
|
-
|
|
168
|
+
if (exited) {
|
|
169
|
+
finishTermination();
|
|
150
170
|
return;
|
|
151
171
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
172
|
+
escalation = setTimeout(() => {
|
|
173
|
+
if (!exited) child.kill("SIGKILL");
|
|
174
|
+
}, TERMINATION_GRACE_MS);
|
|
175
|
+
watchdog = setTimeout(() => {
|
|
176
|
+
child.stdout.destroy();
|
|
177
|
+
child.stderr.destroy();
|
|
178
|
+
settle(new Error("Skill script termination could not be confirmed", { cause: firstCause }));
|
|
179
|
+
}, TERMINATION_WATCHDOG_MS);
|
|
180
|
+
child.kill("SIGTERM");
|
|
181
|
+
}
|
|
182
|
+
function onAbort() {
|
|
183
|
+
beginTermination(abortError(abortSignal?.reason));
|
|
184
|
+
}
|
|
185
|
+
function onError(error) {
|
|
186
|
+
if (child.pid === void 0) settle(error);
|
|
187
|
+
else beginTermination(error);
|
|
188
|
+
}
|
|
189
|
+
function onExit() {
|
|
190
|
+
exited = true;
|
|
191
|
+
if (firstCause !== void 0) finishTermination();
|
|
192
|
+
}
|
|
193
|
+
function onClose(code, signal) {
|
|
194
|
+
if (firstCause !== void 0) {
|
|
195
|
+
if (exited) finishTermination();
|
|
155
196
|
return;
|
|
156
197
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
198
|
+
const output = formatProcessOutput(stdout, stderr);
|
|
199
|
+
if (code !== 0) {
|
|
200
|
+
settle(new Error(`Skill script exited with code ${code ?? "unknown"}: ${output}`));
|
|
201
|
+
} else if (signal !== null) {
|
|
202
|
+
settle(new Error(`Skill script exited with signal ${signal}: ${output}`));
|
|
203
|
+
} else {
|
|
204
|
+
settle(void 0, output);
|
|
160
205
|
}
|
|
161
|
-
|
|
162
|
-
|
|
206
|
+
}
|
|
207
|
+
function onStdout(chunk) {
|
|
208
|
+
stdout = appendLimited(stdout, chunk);
|
|
209
|
+
}
|
|
210
|
+
function onStderr(chunk) {
|
|
211
|
+
stderr = appendLimited(stderr, chunk);
|
|
212
|
+
}
|
|
213
|
+
child.stdout.setEncoding("utf8");
|
|
214
|
+
child.stderr.setEncoding("utf8");
|
|
215
|
+
child.stdout.on("data", onStdout);
|
|
216
|
+
child.stderr.on("data", onStderr);
|
|
217
|
+
child.on("error", onError);
|
|
218
|
+
child.on("exit", onExit);
|
|
219
|
+
child.on("close", onClose);
|
|
220
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
221
|
+
if (abortSignal?.aborted === true) onAbort();
|
|
163
222
|
});
|
|
164
223
|
}
|
|
165
224
|
function formatProcessOutput(stdout, stderr) {
|
|
@@ -186,4 +245,4 @@ function appendLimited(current, chunk) {
|
|
|
186
245
|
export {
|
|
187
246
|
createSkillTools
|
|
188
247
|
};
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
248
|
+
//# sourceMappingURL=chunk-XJ5X3NI4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/skills/tools.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { abortError, throwIfAborted } from \"../internal/abort\";\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;\nconst TERMINATION_GRACE_MS = 250;\nconst TERMINATION_WATCHDOG_MS = 1_250;\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 inputSchema: z.object({\n skillName: z.string().describe(\"The name of the skill to load.\"),\n }),\n outputSchema: 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 inputSchema: 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 outputSchema: 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 inputSchema: 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 outputSchema: 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 inputSchema: 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 outputSchema: z.string(),\n execute: ({ skillName, scriptPath, args = [], timeoutMs = DEFAULT_TIMEOUT_MS }, context) =>\n registry.runScript(skillName, scriptPath, args, timeoutMs, context.abortSignal),\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 abortSignal?: AbortSignal,\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, abortSignal);\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 abortSignal?: AbortSignal,\n): Promise<string> {\n return new Promise((resolvePromise, reject) => {\n throwIfAborted(abortSignal);\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 exited = false;\n let settled = false;\n let firstCause: Error | undefined;\n let escalation: ReturnType<typeof setTimeout> | undefined;\n let watchdog: ReturnType<typeof setTimeout> | undefined;\n const timeout = setTimeout(() => {\n beginTermination(new Error(`Skill script timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n\n function settle(error?: Error, output = \"\"): void {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n clearTimeout(escalation);\n clearTimeout(watchdog);\n abortSignal?.removeEventListener(\"abort\", onAbort);\n child.removeListener(\"error\", onError);\n child.removeListener(\"exit\", onExit);\n child.removeListener(\"close\", onClose);\n child.stdout.removeListener(\"data\", onStdout);\n child.stderr.removeListener(\"data\", onStderr);\n if (error !== undefined) reject(error);\n else resolvePromise(output);\n }\n\n function finishTermination(): void {\n // Descendants can hold inherited pipes after the direct child has exited.\n child.stdout.destroy();\n child.stderr.destroy();\n settle(firstCause);\n }\n\n function beginTermination(cause: Error): void {\n if (settled || firstCause !== undefined) return;\n firstCause = cause;\n clearTimeout(timeout);\n if (exited) {\n finishTermination();\n return;\n }\n escalation = setTimeout(() => {\n if (!exited) child.kill(\"SIGKILL\");\n }, TERMINATION_GRACE_MS);\n watchdog = setTimeout(() => {\n child.stdout.destroy();\n child.stderr.destroy();\n settle(new Error(\"Skill script termination could not be confirmed\", { cause: firstCause }));\n }, TERMINATION_WATCHDOG_MS);\n child.kill(\"SIGTERM\");\n }\n\n function onAbort(): void {\n beginTermination(abortError(abortSignal?.reason));\n }\n\n function onError(error: Error): void {\n if (child.pid === undefined) settle(error);\n else beginTermination(error);\n }\n\n function onExit(): void {\n exited = true;\n if (firstCause !== undefined) finishTermination();\n }\n\n function onClose(code: number | null, signal: NodeJS.Signals | null): void {\n if (firstCause !== undefined) {\n if (exited) finishTermination();\n return;\n }\n const output = formatProcessOutput(stdout, stderr);\n if (code !== 0) {\n settle(new Error(`Skill script exited with code ${code ?? \"unknown\"}: ${output}`));\n } else if (signal !== null) {\n settle(new Error(`Skill script exited with signal ${signal}: ${output}`));\n } else {\n settle(undefined, output);\n }\n }\n\n function onStdout(chunk: string): void {\n stdout = appendLimited(stdout, chunk);\n }\n\n function onStderr(chunk: string): void {\n stderr = appendLimited(stderr, chunk);\n }\n\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", onStdout);\n child.stderr.on(\"data\", onStderr);\n child.on(\"error\", onError);\n child.on(\"exit\", onExit);\n child.on(\"close\", onClose);\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n if (abortSignal?.aborted === true) onAbort();\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"],"mappings":"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","names":[]}
|
|
@@ -31,11 +31,6 @@ async function embedTexts(options) {
|
|
|
31
31
|
(batch) => embedDenseBatch(options.model, batch, options)
|
|
32
32
|
);
|
|
33
33
|
const embeddings = results.flat();
|
|
34
|
-
if (embeddings.length !== options.texts.length) {
|
|
35
|
-
throw new Error(
|
|
36
|
-
`Embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
34
|
return { embeddings };
|
|
40
35
|
}
|
|
41
36
|
async function embedSparseTexts(options) {
|
|
@@ -48,11 +43,6 @@ async function embedSparseTexts(options) {
|
|
|
48
43
|
(batch) => embedSparseBatch(options.model, batch, options)
|
|
49
44
|
);
|
|
50
45
|
const embeddings = results.flat();
|
|
51
|
-
if (embeddings.length !== options.texts.length) {
|
|
52
|
-
throw new Error(
|
|
53
|
-
`Sparse embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
46
|
return { embeddings };
|
|
57
47
|
}
|
|
58
48
|
async function embedSparseQuery(options) {
|
|
@@ -84,7 +74,6 @@ async function embedDocuments(options) {
|
|
|
84
74
|
batch.map((item) => item.text),
|
|
85
75
|
options
|
|
86
76
|
);
|
|
87
|
-
assertBatchLength("Embedding", embeddings.length, batch.length);
|
|
88
77
|
return batch.map((item, index) => ({
|
|
89
78
|
documentIndex: item.documentIndex,
|
|
90
79
|
embedding: embeddings[index]
|
|
@@ -106,7 +95,6 @@ async function embedDocuments(options) {
|
|
|
106
95
|
batch.map((item) => item.text),
|
|
107
96
|
options
|
|
108
97
|
);
|
|
109
|
-
assertBatchLength("Embedding", embeddings.length, batch.length);
|
|
110
98
|
return batch.map((item, index) => ({
|
|
111
99
|
documentIndex: item.documentIndex,
|
|
112
100
|
embedding: embeddings[index]
|
|
@@ -122,7 +110,6 @@ async function embedDocuments(options) {
|
|
|
122
110
|
batch.map((item) => item.text),
|
|
123
111
|
options
|
|
124
112
|
);
|
|
125
|
-
assertBatchLength("Sparse embedding", embeddings.length, batch.length);
|
|
126
113
|
return batch.map((item, index) => ({
|
|
127
114
|
documentIndex: item.documentIndex,
|
|
128
115
|
embedding: embeddings[index]
|
|
@@ -147,6 +134,7 @@ async function embedDocuments(options) {
|
|
|
147
134
|
}
|
|
148
135
|
async function embedDenseBatch(model, texts, options) {
|
|
149
136
|
throwIfAborted(options.abortSignal);
|
|
137
|
+
const expected = texts.length;
|
|
150
138
|
const embeddings = await runWithRetries(
|
|
151
139
|
() => model.embedTexts(texts, modelCallOptions(options.abortSignal)),
|
|
152
140
|
resolveRetries(options),
|
|
@@ -156,10 +144,12 @@ async function embedDenseBatch(model, texts, options) {
|
|
|
156
144
|
for (const [index, embedding] of embeddings.entries()) {
|
|
157
145
|
validateDenseEmbedding(embedding, model.dimensions, index);
|
|
158
146
|
}
|
|
159
|
-
|
|
147
|
+
assertBatchLength("Embedding", embeddings.length, expected);
|
|
148
|
+
return embeddings.slice();
|
|
160
149
|
}
|
|
161
150
|
async function embedSparseBatch(model, texts, options) {
|
|
162
151
|
throwIfAborted(options.abortSignal);
|
|
152
|
+
const expected = texts.length;
|
|
163
153
|
const embeddings = await runWithRetries(
|
|
164
154
|
() => model.embedTexts(texts, modelCallOptions(options.abortSignal)),
|
|
165
155
|
resolveRetries(options),
|
|
@@ -167,7 +157,8 @@ async function embedSparseBatch(model, texts, options) {
|
|
|
167
157
|
);
|
|
168
158
|
throwIfAborted(options.abortSignal);
|
|
169
159
|
for (const [index, embedding] of embeddings.entries()) validateSparseEmbedding(embedding, index);
|
|
170
|
-
|
|
160
|
+
assertBatchLength("Sparse embedding", embeddings.length, expected);
|
|
161
|
+
return embeddings.slice();
|
|
171
162
|
}
|
|
172
163
|
function prepareDocuments(documents, options) {
|
|
173
164
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -280,4 +271,4 @@ export {
|
|
|
280
271
|
embedSparseQuery,
|
|
281
272
|
embedDocuments
|
|
282
273
|
};
|
|
283
|
-
//# sourceMappingURL=chunk-
|
|
274
|
+
//# sourceMappingURL=chunk-YCTXTOOQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/embeddings/embed.ts"],"sourcesContent":["import { throwIfAborted } from \"../internal/abort\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport { type ResolvedRetryOptions, resolveRetryOptions, runWithRetries } from \"../retry\";\nimport type {\n EmbedDocumentsOptions,\n EmbedDocumentsResult,\n EmbeddedDocument,\n Embedding,\n EmbeddingOperationOptions,\n EmbedHybridDocumentsOptions,\n EmbedSparseQueryOptions,\n EmbedSparseQueryResult,\n EmbedSparseTextsOptions,\n EmbedSparseTextsResult,\n EmbedTextOptions,\n EmbedTextResult,\n EmbedTextsOptions,\n EmbedTextsResult,\n SparseEmbedding,\n VectorMetadata,\n} from \"./types\";\n\nexport async function embedText(options: EmbedTextOptions): Promise<EmbedTextResult> {\n const { embeddings } = await embedTexts({\n model: options.model,\n texts: [options.text],\n retries: options.retries,\n abortSignal: options.abortSignal,\n });\n const embedding = embeddings[0];\n if (embedding === undefined) throw new Error(\"Embedding model returned no embeddings\");\n return { embedding };\n}\n\nexport async function embedTexts(options: EmbedTextsOptions): Promise<EmbedTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedDenseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n return { embeddings };\n}\n\nexport async function embedSparseTexts(\n options: EmbedSparseTextsOptions,\n): Promise<EmbedSparseTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedSparseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n return { embeddings };\n}\n\nexport async function embedSparseQuery(\n options: EmbedSparseQueryOptions,\n): Promise<EmbedSparseQueryResult> {\n throwIfAborted(options.abortSignal);\n const embedding = await runWithRetries(\n () => {\n throwIfAborted(options.abortSignal);\n return options.model.embedQuery(options.query, modelCallOptions(options.abortSignal));\n },\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n validateSparseEmbedding(embedding, \"query\");\n return { embedding };\n}\n\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport async function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata> | EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>> {\n throwIfAborted(options.abortSignal);\n const prepared = prepareDocuments(options.documents, options);\n const flatTexts = prepared.flatMap((item, documentIndex) =>\n item.texts.map((text) => ({ documentIndex, text })),\n );\n const concurrencyLimit = concurrency(options.concurrency);\n\n if (\"model\" in options && options.model !== undefined) {\n const batches = chunk(flatTexts, batchSize(options.model.maxBatchSize, flatTexts.length || 1));\n const results = await mapWithConcurrency(batches, concurrencyLimit, async (batch) => {\n const embeddings = await embedDenseBatch(\n options.model,\n batch.map((item) => item.text),\n options,\n );\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n });\n const byDocument = groupEmbeddings(results.flat());\n return {\n documents: prepared.map((item, index) => embeddedDocument(item, byDocument.get(index) ?? [])),\n };\n }\n\n const { dense, sparse } = options.models;\n const [denseResults, sparseResults] = await Promise.all([\n mapWithConcurrency(\n chunk(flatTexts, batchSize(dense.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedDenseBatch(\n dense,\n batch.map((item) => item.text),\n options,\n );\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n },\n ),\n mapWithConcurrency(\n chunk(flatTexts, batchSize(sparse.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedSparseBatch(\n sparse,\n batch.map((item) => item.text),\n options,\n );\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as SparseEmbedding,\n }));\n },\n ),\n ]);\n const denseByDocument = groupEmbeddings(denseResults.flat());\n const sparseByDocument = groupEmbeddings(sparseResults.flat());\n return {\n documents: prepared.map((item, index) => {\n const embeddings = denseByDocument.get(index) ?? [];\n const sparseEmbeddings = sparseByDocument.get(index) ?? [];\n if (embeddings.length !== sparseEmbeddings.length) {\n throw new Error(\n `Hybrid embedding produced ${embeddings.length} dense and ${sparseEmbeddings.length} sparse vectors for document ${item.id}`,\n );\n }\n return embeddedDocument(item, embeddings, sparseEmbeddings);\n }),\n };\n}\n\nasync function embedDenseBatch(\n model: EmbedTextOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<Embedding[]> {\n throwIfAborted(options.abortSignal);\n const expected = texts.length;\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) {\n validateDenseEmbedding(embedding, model.dimensions, index);\n }\n assertBatchLength(\"Embedding\", embeddings.length, expected);\n return embeddings.slice();\n}\n\nasync function embedSparseBatch(\n model: EmbedSparseTextsOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<SparseEmbedding[]> {\n throwIfAborted(options.abortSignal);\n const expected = texts.length;\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) validateSparseEmbedding(embedding, index);\n assertBatchLength(\"Sparse embedding\", embeddings.length, expected);\n return embeddings.slice();\n}\n\nfunction prepareDocuments<T, Metadata extends VectorMetadata>(\n documents: T[],\n options: Pick<EmbedDocumentsOptions<T, Metadata>, \"id\" | \"content\" | \"metadata\">,\n) {\n const ids = new Set<string>();\n return documents.map((document, index) => {\n const id = options.id?.(document, index) ?? `doc${index}`;\n if (id.length === 0) throw new TypeError(\"Embedded document ids must not be empty\");\n if (ids.has(id)) throw new TypeError(`Duplicate embedded document id: ${id}`);\n ids.add(id);\n const content = options.content(document, index);\n if (Array.isArray(content) && content.length === 0)\n throw new TypeError(`Embedded document ${id} must contain at least one text chunk`);\n return {\n id,\n document,\n metadata: options.metadata?.(document, index),\n texts: Array.isArray(content) ? content : [content],\n };\n });\n}\n\nfunction embeddedDocument<T, Metadata extends VectorMetadata>(\n item: { id: string; document: T; metadata: Metadata | undefined },\n embeddings: Embedding[],\n sparseEmbeddings?: SparseEmbedding[],\n): EmbeddedDocument<T, Metadata> {\n let result: EmbeddedDocument<T, Metadata> = {\n id: item.id,\n document: item.document,\n embeddings,\n };\n if (item.metadata !== undefined) {\n result = { ...result, metadata: item.metadata };\n }\n if (sparseEmbeddings !== undefined) {\n result = { ...result, sparseEmbeddings };\n }\n return result;\n}\n\nfunction groupEmbeddings<E>(\n items: Array<{ documentIndex: number; embedding: E }>,\n): Map<number, E[]> {\n const groups = new Map<number, E[]>();\n for (const item of items) {\n const list = groups.get(item.documentIndex) ?? [];\n list.push(item.embedding);\n groups.set(item.documentIndex, list);\n }\n return groups;\n}\n\nfunction assertBatchLength(name: string, actual: number, expected: number): void {\n if (actual !== expected)\n throw new Error(`${name} model returned ${actual} embeddings for ${expected} texts`);\n}\n\nfunction resolveRetries(options: EmbeddingOperationOptions): ResolvedRetryOptions | undefined {\n return options.retries === undefined || options.retries === false\n ? undefined\n : resolveRetryOptions(options.retries);\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nfunction chunk<T>(items: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let index = 0; index < items.length; index += size)\n chunks.push(items.slice(index, index + size));\n return chunks;\n}\n\nfunction batchSize(configured: number | undefined, fallback: number): number {\n if (configured === undefined) return fallback;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding model maxBatchSize must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction concurrency(configured: number | undefined): number {\n if (configured === undefined) return 1;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding concurrency must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction validateDenseEmbedding(\n embedding: Embedding,\n dimensions: number | undefined,\n index: number,\n): void {\n if (embedding.vector.length === 0) {\n throw new TypeError(`Embedding model returned an empty vector at index ${index}`);\n }\n if (!embedding.vector.every(Number.isFinite)) {\n throw new TypeError(`Embedding model returned a non-finite vector at index ${index}`);\n }\n if (dimensions !== undefined) {\n if (!Number.isSafeInteger(dimensions) || dimensions < 1)\n throw new TypeError(\"Embedding model dimensions must be a positive safe integer\");\n if (embedding.vector.length !== dimensions) {\n throw new Error(\n `Embedding model returned ${embedding.vector.length} dimensions at index ${index}; expected ${dimensions}`,\n );\n }\n }\n}\n\nfunction validateSparseEmbedding(embedding: SparseEmbedding, index: number | \"query\"): void {\n const { indices, values } = embedding.vector;\n if (indices.length !== values.length) {\n throw new Error(`Sparse embedding at ${index} has mismatched indices and values`);\n }\n if (!indices.every((value) => Number.isSafeInteger(value) && value >= 0)) {\n throw new TypeError(`Sparse embedding at ${index} has an invalid index`);\n }\n if (new Set(indices).size !== indices.length) {\n throw new TypeError(`Sparse embedding at ${index} has duplicate indices`);\n }\n if (!values.every(Number.isFinite)) {\n throw new TypeError(`Sparse embedding at ${index} has a non-finite value`);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateCompletion
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HG6ASDNI.js";
|
|
4
4
|
import {
|
|
5
5
|
CompletionCapabilityError,
|
|
6
6
|
Usage
|
|
@@ -128,4 +128,4 @@ export {
|
|
|
128
128
|
ExtractionError,
|
|
129
129
|
extract
|
|
130
130
|
};
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-YKWUFYXT.js.map
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
extract
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YKWUFYXT.js";
|
|
4
4
|
import {
|
|
5
5
|
Usage
|
|
6
6
|
} from "./chunk-HJ6KTQTZ.js";
|
|
7
|
+
import {
|
|
8
|
+
throwIfAborted
|
|
9
|
+
} from "./chunk-USRKPEQN.js";
|
|
7
10
|
|
|
8
11
|
// src/evals/judge.ts
|
|
9
12
|
async function runJudge(args) {
|
|
13
|
+
throwIfAborted(args.abortSignal);
|
|
10
14
|
const result = await extract({
|
|
15
|
+
abortSignal: args.abortSignal,
|
|
11
16
|
model: args.model,
|
|
12
17
|
outputSchema: args.schema,
|
|
13
18
|
instructions: args.instructions,
|
|
@@ -15,6 +20,7 @@ async function runJudge(args) {
|
|
|
15
20
|
temperature: 0,
|
|
16
21
|
retries: args.retries <= 0 ? void 0 : { maxAttempts: Math.trunc(args.retries) + 1 }
|
|
17
22
|
});
|
|
23
|
+
throwIfAborted(args.abortSignal);
|
|
18
24
|
return { data: result.output, usage: result.usage };
|
|
19
25
|
}
|
|
20
26
|
function addUsage(...values) {
|
|
@@ -46,4 +52,4 @@ export {
|
|
|
46
52
|
addUsage,
|
|
47
53
|
evaluationMetadata
|
|
48
54
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
55
|
+
//# sourceMappingURL=chunk-YSR6KLCS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/evals/judge.ts"],"sourcesContent":["import type { CompletionModel, JsonObject, Usage } from \"../completion\";\nimport { Usage as UsageValue } from \"../completion\";\nimport { extract } from \"../extractor\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport type { ZodSchema } from \"../schema\";\nimport type { EvalMetadata } from \"./types\";\n\nexport type JudgeResult<T> = {\n data: T;\n usage: Usage;\n};\n\nexport async function runJudge<T>(args: {\n model: CompletionModel;\n schema: ZodSchema<T>;\n instructions: string;\n prompt: string;\n retries: number;\n abortSignal?: AbortSignal | undefined;\n}): Promise<JudgeResult<T>> {\n throwIfAborted(args.abortSignal);\n const result = await extract({\n abortSignal: args.abortSignal,\n model: args.model,\n outputSchema: args.schema,\n instructions: args.instructions,\n text: args.prompt,\n temperature: 0,\n retries: args.retries <= 0 ? undefined : { maxAttempts: Math.trunc(args.retries) + 1 },\n });\n throwIfAborted(args.abortSignal);\n return { data: result.output, usage: result.usage };\n}\n\nexport function addUsage(...values: Usage[]): Usage {\n return values.reduce((total, usage) => UsageValue.add(total, usage), UsageValue.empty());\n}\n\nexport function evaluationMetadata(details: JsonObject, usage: Usage): EvalMetadata {\n const evaluation: JsonObject = {\n ...details,\n usage: usageToJson(usage),\n };\n return { evaluation };\n}\n\nfunction usageToJson(usage: Usage): JsonObject {\n const value: JsonObject = {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n totalTokens: usage.totalTokens,\n cachedInputTokens: usage.cachedInputTokens,\n cacheCreationInputTokens: usage.cacheCreationInputTokens,\n };\n if (usage.details !== undefined) {\n value.details = { ...usage.details };\n }\n return value;\n}\n"],"mappings":";;;;;;;;;;;AAYA,eAAsB,SAAY,MAON;AAC1B,iBAAe,KAAK,WAAW;AAC/B,QAAM,SAAS,MAAM,QAAQ;AAAA,IAC3B,aAAa,KAAK;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,cAAc,KAAK;AAAA,IACnB,cAAc,KAAK;AAAA,IACnB,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS,KAAK,WAAW,IAAI,SAAY,EAAE,aAAa,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE;AAAA,EACvF,CAAC;AACD,iBAAe,KAAK,WAAW;AAC/B,SAAO,EAAE,MAAM,OAAO,QAAQ,OAAO,OAAO,MAAM;AACpD;AAEO,SAAS,YAAY,QAAwB;AAClD,SAAO,OAAO,OAAO,CAAC,OAAO,UAAU,MAAW,IAAI,OAAO,KAAK,GAAG,MAAW,MAAM,CAAC;AACzF;AAEO,SAAS,mBAAmB,SAAqB,OAA4B;AAClF,QAAM,aAAyB;AAAA,IAC7B,GAAG;AAAA,IACH,OAAO,YAAY,KAAK;AAAA,EAC1B;AACA,SAAO,EAAE,WAAW;AACtB;AAEA,SAAS,YAAY,OAA0B;AAC7C,QAAM,QAAoB;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,mBAAmB,MAAM;AAAA,IACzB,0BAA0B,MAAM;AAAA,EAClC;AACA,MAAI,MAAM,YAAY,QAAW;AAC/B,UAAM,UAAU,EAAE,GAAG,MAAM,QAAQ;AAAA,EACrC;AACA,SAAO;AACT;","names":[]}
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
generateCompletion,
|
|
4
4
|
isStreamingCompletionModel,
|
|
5
5
|
streamCompletion
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-HG6ASDNI.js";
|
|
7
|
+
import "../chunk-57AUTEQ6.js";
|
|
8
8
|
import "../chunk-6OO5C5GW.js";
|
|
9
9
|
import "../chunk-GSVOMQEE.js";
|
|
10
10
|
import "../chunk-4ONUNWGC.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-MKY7KTZY.js";
|
|
12
12
|
import "../chunk-XQV3XNVT.js";
|
|
13
13
|
import "../chunk-HJ6KTQTZ.js";
|
|
14
14
|
import "../chunk-BONQTXRQ.js";
|
package/dist/completion/index.js
CHANGED
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
generateCompletion,
|
|
14
14
|
isStreamingCompletionModel,
|
|
15
15
|
streamCompletion
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-HG6ASDNI.js";
|
|
17
|
+
import "../chunk-57AUTEQ6.js";
|
|
18
18
|
import "../chunk-6OO5C5GW.js";
|
|
19
19
|
import "../chunk-GSVOMQEE.js";
|
|
20
20
|
import "../chunk-4ONUNWGC.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-MKY7KTZY.js";
|
|
22
22
|
import {
|
|
23
23
|
COMPLETION_PROVIDER_OUTPUT_ERROR_CODE,
|
|
24
24
|
CompletionProviderOutputError
|
package/dist/embeddings/embed.js
CHANGED
package/dist/embeddings/index.js
CHANGED
|
@@ -9,23 +9,23 @@ import {
|
|
|
9
9
|
promptAlignment,
|
|
10
10
|
summarization,
|
|
11
11
|
turnRelevancy
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-W2XPREWL.js";
|
|
13
|
+
import "../chunk-YSR6KLCS.js";
|
|
14
14
|
import "../chunk-ZPXOBQDS.js";
|
|
15
15
|
import "../chunk-3P3YVJ7V.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-YKWUFYXT.js";
|
|
17
17
|
import "../chunk-ZYXMWEL4.js";
|
|
18
18
|
import "../chunk-EJR6VVB3.js";
|
|
19
19
|
import "../chunk-TP3MCUXS.js";
|
|
20
20
|
import "../chunk-6RQYWZI3.js";
|
|
21
21
|
import "../chunk-NF6WBPFG.js";
|
|
22
22
|
import "../chunk-4FIVU53H.js";
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-HG6ASDNI.js";
|
|
24
|
+
import "../chunk-57AUTEQ6.js";
|
|
25
25
|
import "../chunk-6OO5C5GW.js";
|
|
26
26
|
import "../chunk-GSVOMQEE.js";
|
|
27
27
|
import "../chunk-4ONUNWGC.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-MKY7KTZY.js";
|
|
29
29
|
import "../chunk-XQV3XNVT.js";
|
|
30
30
|
import "../chunk-HJ6KTQTZ.js";
|
|
31
31
|
import "../chunk-BONQTXRQ.js";
|
package/dist/evals/cli.js
CHANGED
|
@@ -7,21 +7,21 @@ import {
|
|
|
7
7
|
formatEvalResult,
|
|
8
8
|
printEvalResult,
|
|
9
9
|
runEvalCli
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-GNBPXJC6.js";
|
|
11
|
+
import "../chunk-4IOC4SP6.js";
|
|
12
12
|
import "../chunk-PHLGGRHC.js";
|
|
13
13
|
import "../chunk-ZYXMWEL4.js";
|
|
14
14
|
import "../chunk-EJR6VVB3.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-4OSA3MMA.js";
|
|
16
16
|
import "../chunk-TP3MCUXS.js";
|
|
17
17
|
import "../chunk-6RQYWZI3.js";
|
|
18
18
|
import "../chunk-NF6WBPFG.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-HG6ASDNI.js";
|
|
20
|
+
import "../chunk-57AUTEQ6.js";
|
|
21
21
|
import "../chunk-6OO5C5GW.js";
|
|
22
22
|
import "../chunk-GSVOMQEE.js";
|
|
23
23
|
import "../chunk-4ONUNWGC.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-MKY7KTZY.js";
|
|
25
25
|
import "../chunk-XQV3XNVT.js";
|
|
26
26
|
import "../chunk-HJ6KTQTZ.js";
|
|
27
27
|
import "../chunk-BONQTXRQ.js";
|