@anvia/core 1.0.0-rc.5 → 1.0.0-rc.8
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 +42 -9
- package/dist/agent/index.d.ts +20 -14
- package/dist/agent/index.js +15 -15
- package/dist/agent/interactions/index.d.ts +1 -1
- package/dist/agent/interactions/index.js +2 -2
- package/dist/{agent-LlCD_2UQ.d.ts → agent-XPQBM4rX.d.ts} +10 -10
- package/dist/{chunk-UBE4WH6G.js → chunk-3RWESPUG.js} +122 -3
- package/dist/chunk-3RWESPUG.js.map +1 -0
- package/dist/{chunk-BAEFBTOW.js → chunk-3SKZ2BKP.js} +7 -5
- package/dist/chunk-3SKZ2BKP.js.map +1 -0
- package/dist/{chunk-SROQA7I7.js → chunk-3XQGVDU5.js} +2 -2
- package/dist/chunk-3XQGVDU5.js.map +1 -0
- package/dist/{chunk-DNQNOHD5.js → chunk-5C6B6ZRH.js} +2 -2
- package/dist/{chunk-E5J4OY4K.js → chunk-6BBOCFHV.js} +2 -2
- package/dist/{chunk-7YAH2F3J.js → chunk-76JLMBVT.js} +24 -12
- package/dist/chunk-76JLMBVT.js.map +1 -0
- package/dist/chunk-7JLAIN6E.js +15 -0
- package/dist/chunk-7JLAIN6E.js.map +1 -0
- package/dist/chunk-7PHMK7W4.js +1516 -0
- package/dist/chunk-7PHMK7W4.js.map +1 -0
- package/dist/{chunk-MGNTXGTX.js → chunk-D4PACGPA.js} +1 -1
- package/dist/{chunk-7OCVDT2X.js → chunk-EFLT7XZD.js} +9 -3
- package/dist/chunk-EFLT7XZD.js.map +1 -0
- package/dist/{chunk-RZDI7B6Z.js → chunk-EMZKPRE6.js} +9 -8
- package/dist/chunk-EMZKPRE6.js.map +1 -0
- package/dist/{chunk-HVHTVGPP.js → chunk-I3Q7XSBB.js} +9 -3
- package/dist/chunk-I3Q7XSBB.js.map +1 -0
- package/dist/{chunk-YDJA4R37.js → chunk-LTXABCOO.js} +4 -4
- package/dist/{chunk-BEU6FCTN.js → chunk-OJBFDBLG.js} +2 -2
- package/dist/{chunk-G5OACQEI.js → chunk-QGX73TSQ.js} +2 -2
- package/dist/{chunk-JXZTTNCR.js → chunk-SJMSS5SI.js} +3 -3
- package/dist/{chunk-JXZTTNCR.js.map → chunk-SJMSS5SI.js.map} +1 -1
- package/dist/{chunk-YXLDR2O4.js → chunk-T2C3CGDQ.js} +9 -3
- package/dist/chunk-T2C3CGDQ.js.map +1 -0
- package/dist/{chunk-TEV3OB7N.js → chunk-X4LK4ODN.js} +10 -3
- package/dist/chunk-X4LK4ODN.js.map +1 -0
- package/dist/{chunk-FCANRQ5Q.js → chunk-YA2655FX.js} +308 -448
- package/dist/chunk-YA2655FX.js.map +1 -0
- package/dist/{chunk-H7BI3BSP.js → chunk-ZA564323.js} +2 -2
- package/dist/{client-DvUatElp.d.ts → client-DTPl0hZv.d.ts} +2 -2
- package/dist/completion/index.d.ts +3 -3
- package/dist/completion/index.js +12 -5
- package/dist/{dynamic-tools-AEBOTgu1.d.ts → dynamic-tools-aIZlg5x1.d.ts} +3 -3
- package/dist/embeddings/index.js +2 -2
- package/dist/evals/index.d.ts +6 -6
- package/dist/evals/index.js +51 -19
- package/dist/evals/index.js.map +1 -1
- package/dist/extractor/index.d.ts +1 -1
- package/dist/extractor/index.js +7 -6
- package/dist/guardrails/index.d.ts +4 -4
- package/dist/image-generation/index.d.ts +1 -1
- package/dist/image-generation/index.js +4 -2
- package/dist/index.d.ts +14 -14
- package/dist/index.js +25 -19
- package/dist/internal/agent.d.ts +11 -11
- package/dist/internal/agent.js +15 -15
- package/dist/mcp/index.d.ts +4 -4
- package/dist/mcp/index.js +10 -8
- package/dist/memory/index.d.ts +3 -3
- package/dist/memory/index.js +6 -5
- package/dist/{middleware-BqtLB_Xt.d.ts → middleware-kcF8AusP.d.ts} +8 -5
- package/dist/observability/index.d.ts +6 -6
- package/dist/observability/index.js +7 -6
- package/dist/pipeline/index.d.ts +11 -11
- package/dist/pipeline/index.js +8 -7
- package/dist/pipeline/index.js.map +1 -1
- package/dist/provider-output-error-BEwDgVv3.d.ts +99 -0
- package/dist/skills/index.d.ts +4 -4
- package/dist/skills/index.js +7 -8
- package/dist/speech-generation/index.d.ts +1 -1
- package/dist/speech-generation/index.js +4 -2
- package/dist/{text-C_6eKrbC.d.ts → text-ZLECpQE7.d.ts} +1 -1
- package/dist/{think-tool-Cz3QYNPX.d.ts → think-tool-BwCsJ365.d.ts} +1 -1
- package/dist/tool/index.d.ts +6 -6
- package/dist/tool/index.js +6 -6
- package/dist/{tool-r62gf3QY.d.ts → tool-BpqpoRSE.d.ts} +1 -1
- package/dist/transcription/index.d.ts +1 -1
- package/dist/transcription/index.js +4 -2
- package/dist/{types-C3gv9EX6.d.ts → types-CXNE592e.d.ts} +1 -1
- package/dist/{types-RT3cuyRk.d.ts → types-DC1U1XwW.d.ts} +1 -1
- package/dist/{types-DbolvLtZ.d.ts → types-DKOXVTcq.d.ts} +1 -1
- package/dist/{types-D9rKQ_as.d.ts → types-DgvozfPc.d.ts} +11 -3
- package/dist/{types-CIPaIbZo.d.ts → types-DhkodEft.d.ts} +1 -1
- package/dist/{types-1KpjDfoN.d.ts → types-Sue2hb_L.d.ts} +7 -5
- package/dist/vector-store/index.d.ts +4 -4
- package/dist/vector-store/index.js +5 -5
- package/package.json +1 -1
- package/dist/chunk-7OCVDT2X.js.map +0 -1
- package/dist/chunk-7YAH2F3J.js.map +0 -1
- package/dist/chunk-BAEFBTOW.js.map +0 -1
- package/dist/chunk-CQNNSZPG.js +0 -9
- package/dist/chunk-CQNNSZPG.js.map +0 -1
- package/dist/chunk-FCANRQ5Q.js.map +0 -1
- package/dist/chunk-HSA6NL2E.js +0 -517
- package/dist/chunk-HSA6NL2E.js.map +0 -1
- package/dist/chunk-HVHTVGPP.js.map +0 -1
- package/dist/chunk-RZDI7B6Z.js.map +0 -1
- package/dist/chunk-SROQA7I7.js.map +0 -1
- package/dist/chunk-TEV3OB7N.js.map +0 -1
- package/dist/chunk-UBE4WH6G.js.map +0 -1
- package/dist/chunk-YXLDR2O4.js.map +0 -1
- package/dist/message-schema-B2M7AYzR.d.ts +0 -52
- /package/dist/{chunk-DNQNOHD5.js.map → chunk-5C6B6ZRH.js.map} +0 -0
- /package/dist/{chunk-E5J4OY4K.js.map → chunk-6BBOCFHV.js.map} +0 -0
- /package/dist/{chunk-MGNTXGTX.js.map → chunk-D4PACGPA.js.map} +0 -0
- /package/dist/{chunk-YDJA4R37.js.map → chunk-LTXABCOO.js.map} +0 -0
- /package/dist/{chunk-BEU6FCTN.js.map → chunk-OJBFDBLG.js.map} +0 -0
- /package/dist/{chunk-G5OACQEI.js.map → chunk-QGX73TSQ.js.map} +0 -0
- /package/dist/{chunk-H7BI3BSP.js.map → chunk-ZA564323.js.map} +0 -0
package/README.md
CHANGED
|
@@ -126,7 +126,18 @@ console.log(result.output.priority); // fully typed
|
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
`CompletionResult` consistently contains `output`, the original `text`, normalized `content`,
|
|
129
|
-
`usage`, and `rawResponse`, plus optional message, context, source,
|
|
129
|
+
`usage`, and `rawResponse`, plus optional message, context, source, provider-tool, and finish-reason
|
|
130
|
+
metadata. First-party adapters normalize provider termination into `finishReason` (`stop`, `length`,
|
|
131
|
+
`content-filter`, `tool-calls`, or `other`) while preserving the provider value separately as
|
|
132
|
+
`providerFinishReason`.
|
|
133
|
+
|
|
134
|
+
Schema-backed completion checks termination before JSON parsing. `finishReason: "length"` throws
|
|
135
|
+
`CompletionStructuredOutputError` with `phase: "truncated"`; `finishReason: "content-filter"`
|
|
136
|
+
throws it with `phase: "content-filter"` and is not retried by the default policy. Ordinary text
|
|
137
|
+
completion remains intentional: partial text is returned unchanged with its finish reason so the
|
|
138
|
+
application decides whether to display, continue, or discard it. A direct structured stream can
|
|
139
|
+
similarly end with one typed error event after any already-emitted deltas; it does not silently
|
|
140
|
+
retract public stream progress.
|
|
130
141
|
|
|
131
142
|
Use `streamCompletion` for the streaming form:
|
|
132
143
|
|
|
@@ -183,9 +194,11 @@ const result = await generateCompletion({
|
|
|
183
194
|
});
|
|
184
195
|
```
|
|
185
196
|
|
|
186
|
-
`providerOptions` contains strict JSON passed to an adapter.
|
|
187
|
-
|
|
188
|
-
|
|
197
|
+
`providerOptions` contains a strict JSON object passed to an adapter. Runtime values such as
|
|
198
|
+
`undefined`, non-finite numbers, cycles, a top-level array, and class instances are rejected rather
|
|
199
|
+
than coerced. Nested arrays are valid JSON. Canonical Anvia fields such as model, input,
|
|
200
|
+
temperature, tools, dimensions, text, and voice take precedence over conflicting provider keys.
|
|
201
|
+
Cancellation is forwarded to provider SDK calls and is never retried.
|
|
189
202
|
|
|
190
203
|
## Agents
|
|
191
204
|
|
|
@@ -210,18 +223,38 @@ await agent.generate({
|
|
|
210
223
|
});
|
|
211
224
|
```
|
|
212
225
|
|
|
213
|
-
When an Agent has `outputSchema`, JSON parsing and schema-validation failures use the
|
|
214
|
-
budget when retries are explicitly enabled.
|
|
215
|
-
|
|
226
|
+
When an Agent has `outputSchema`, truncation, JSON parsing, and schema-validation failures use the
|
|
227
|
+
same retry budget when retries are explicitly enabled. Each retry starts from the original request
|
|
228
|
+
rather than recursively accumulating failed attempts. Truncated output and reasoning are omitted;
|
|
229
|
+
parse and schema repairs include only a bounded, text-only preview of the latest failed response.
|
|
230
|
+
The correction asks for shorter raw JSON matching the schema, without Markdown or commentary.
|
|
216
231
|
Transport failures and structured-output failures therefore cannot exceed `maxAttempts` in total.
|
|
232
|
+
Completed Agent results expose the last generation's `finishReason` and `providerFinishReason`, and
|
|
233
|
+
the same fields remain attached to each assistant message's Anvia generation metadata.
|
|
234
|
+
|
|
235
|
+
Malformed, incomplete, or non-JSON provider tool arguments fail with
|
|
236
|
+
`CompletionProviderOutputError`. The default policy retries only explicitly retry-safe provider
|
|
237
|
+
output failures when retries are enabled; it does not make arbitrary `SyntaxError` instances
|
|
238
|
+
retryable. Tool calls are validated as a complete set before any tool executes, and filtered tool
|
|
239
|
+
calls are never retried by default. Raw provider arguments are not retained in the error or retry
|
|
240
|
+
metadata. A no-argument tool call must still contain the JSON value `{}`; blank argument text is
|
|
241
|
+
malformed provider output and is never replaced with invented input.
|
|
242
|
+
|
|
243
|
+
Streaming attempts are retried only before any provider event has been exposed. Once progress has
|
|
244
|
+
been emitted, Anvia returns the failure without starting another provider attempt, because replaying
|
|
245
|
+
the stream could duplicate text, tool-call deltas, or other observable events. Applications that
|
|
246
|
+
want post-progress recovery must buffer attempts and define their own reset or resume protocol.
|
|
217
247
|
|
|
218
248
|
Structured output remains strict: Core trims surrounding whitespace, parses JSON, and validates the
|
|
219
249
|
result with the configured Zod schema. As a compatibility fallback for OpenAI-compatible providers
|
|
220
250
|
that violate strict JSON mode, Core also accepts a response consisting entirely of one lowercase
|
|
221
251
|
`json` Markdown fence or one unlabeled Markdown fence. It does not search prose for JSON, accept
|
|
222
252
|
content before or after a fence, or bypass schema validation. `AgentStructuredOutputError` reports
|
|
223
|
-
the `
|
|
224
|
-
usage, and the original `cause
|
|
253
|
+
the `truncated`, `content-filter`, `parse`, or `schema` phase, attempt counts, output length/format
|
|
254
|
+
metadata, per-attempt and cumulative usage, finish reasons, and the original `cause` when one
|
|
255
|
+
exists; its message never contains the rejected model response. The `completion.retry` observer
|
|
256
|
+
event records the same safe diagnostics and whether failed output was omitted or previewed, never
|
|
257
|
+
the model output itself.
|
|
225
258
|
|
|
226
259
|
Agent results are discriminated by `status`. Completed results include typed `output` and `text`;
|
|
227
260
|
guardrail blocks return `status: "blocked"`, `stage`, and `text`; tool approvals and first-class
|
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
export { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
|
|
2
2
|
export { R as RetryContext, a as RetryOptions, b as RetrySetting } from '../retry-CjvSlKGW.js';
|
|
3
|
-
export { A as Agent, a as AgentContextInput, b as AgentMemory, c as AgentMemoryOptions, d as AgentOptions, e as AgentToolInput, f as AgentToolOptions, C as CreateHybridVectorContextOptions, g as CreateVectorContextOptions, V as VectorContext, h as VectorContextBaseOptions, i as createVectorContext, j as isVectorContext } from '../agent-
|
|
4
|
-
import { M as Message, U as Usage } from '../types-
|
|
5
|
-
import { A as AgentBlockedResult, t as AgentSuspendedResult } from '../types-
|
|
6
|
-
export { a as AgentChildStreamEvent, b as AgentDeltaEvent, c as AgentErrorEvent, d as AgentErrorStreamEvent, e as AgentFinishEvent, f as AgentInput, g as AgentLifecycle, h as AgentMemoryCompactionEvent, i as AgentPrompt, j as AgentResponse, k as AgentResult, l as AgentRunOptions, m as AgentRunSettings, n as AgentStartEvent, o as AgentSteerInput, p as AgentSteerReceipt, q as AgentStepFinishEvent, r as AgentStream, s as AgentStreamEvent, u as AgentToolCallDeltaEvent, v as AgentToolFinishEvent, w as AgentToolStartEvent } from '../types-
|
|
3
|
+
export { A as Agent, a as AgentContextInput, b as AgentMemory, c as AgentMemoryOptions, d as AgentOptions, e as AgentToolInput, f as AgentToolOptions, C as CreateHybridVectorContextOptions, g as CreateVectorContextOptions, V as VectorContext, h as VectorContextBaseOptions, i as createVectorContext, j as isVectorContext } from '../agent-XPQBM4rX.js';
|
|
4
|
+
import { M as Message, U as Usage, C as CompletionFinishReason } from '../types-DgvozfPc.js';
|
|
5
|
+
import { A as AgentBlockedResult, t as AgentSuspendedResult } from '../types-Sue2hb_L.js';
|
|
6
|
+
export { a as AgentChildStreamEvent, b as AgentDeltaEvent, c as AgentErrorEvent, d as AgentErrorStreamEvent, e as AgentFinishEvent, f as AgentInput, g as AgentLifecycle, h as AgentMemoryCompactionEvent, i as AgentPrompt, j as AgentResponse, k as AgentResult, l as AgentRunOptions, m as AgentRunSettings, n as AgentStartEvent, o as AgentSteerInput, p as AgentSteerReceipt, q as AgentStepFinishEvent, r as AgentStream, s as AgentStreamEvent, u as AgentToolCallDeltaEvent, v as AgentToolFinishEvent, w as AgentToolStartEvent } from '../types-Sue2hb_L.js';
|
|
7
7
|
import '../zod-schema-C7F4clpm.js';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../types-
|
|
9
|
+
import '../types-DhkodEft.js';
|
|
10
10
|
import '../type-utils-CtHVDRn_.js';
|
|
11
|
-
import '../client-
|
|
11
|
+
import '../client-DTPl0hZv.js';
|
|
12
12
|
import 'node:child_process';
|
|
13
13
|
import 'node:stream';
|
|
14
14
|
import '@modelcontextprotocol/sdk/client/auth.js';
|
|
15
15
|
import '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
16
16
|
import '@modelcontextprotocol/sdk/shared/transport.js';
|
|
17
|
-
import '../tool-
|
|
18
|
-
import '../middleware-
|
|
19
|
-
import '../types-
|
|
20
|
-
import '../types-
|
|
21
|
-
import '../dynamic-tools-
|
|
17
|
+
import '../tool-BpqpoRSE.js';
|
|
18
|
+
import '../middleware-kcF8AusP.js';
|
|
19
|
+
import '../types-DKOXVTcq.js';
|
|
20
|
+
import '../types-DC1U1XwW.js';
|
|
21
|
+
import '../dynamic-tools-aIZlg5x1.js';
|
|
22
22
|
import '../types-Cr4uiYo5.js';
|
|
23
|
-
import '../types-
|
|
23
|
+
import '../types-CXNE592e.js';
|
|
24
24
|
import './interactions/index.js';
|
|
25
25
|
|
|
26
|
-
type AgentStructuredOutputPhase = "parse" | "schema";
|
|
26
|
+
type AgentStructuredOutputPhase = "truncated" | "content-filter" | "parse" | "schema";
|
|
27
27
|
type AgentStructuredOutputFormat = "raw" | "json-fence" | "unlabeled-fence";
|
|
28
28
|
declare class AgentStructuredOutputError extends Error {
|
|
29
29
|
readonly phase: AgentStructuredOutputPhase;
|
|
@@ -32,7 +32,10 @@ declare class AgentStructuredOutputError extends Error {
|
|
|
32
32
|
readonly outputLength: number;
|
|
33
33
|
readonly normalizedLength: number;
|
|
34
34
|
readonly outputFormat: AgentStructuredOutputFormat;
|
|
35
|
+
readonly attemptUsage: Usage;
|
|
35
36
|
readonly usage: Usage;
|
|
37
|
+
readonly finishReason: CompletionFinishReason | undefined;
|
|
38
|
+
readonly providerFinishReason: string | undefined;
|
|
36
39
|
constructor(options: {
|
|
37
40
|
phase: AgentStructuredOutputPhase;
|
|
38
41
|
attempt: number;
|
|
@@ -40,8 +43,11 @@ declare class AgentStructuredOutputError extends Error {
|
|
|
40
43
|
outputLength: number;
|
|
41
44
|
normalizedLength: number;
|
|
42
45
|
outputFormat: AgentStructuredOutputFormat;
|
|
46
|
+
attemptUsage: Usage;
|
|
43
47
|
usage: Usage;
|
|
44
|
-
|
|
48
|
+
finishReason?: CompletionFinishReason | undefined;
|
|
49
|
+
providerFinishReason?: string | undefined;
|
|
50
|
+
cause?: unknown;
|
|
45
51
|
});
|
|
46
52
|
}
|
|
47
53
|
declare class MaxTurnsError extends Error {
|
package/dist/agent/index.js
CHANGED
|
@@ -2,15 +2,14 @@ import {
|
|
|
2
2
|
Agent,
|
|
3
3
|
createVectorContext,
|
|
4
4
|
isVectorContext
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-YA2655FX.js";
|
|
6
|
+
import "../chunk-OJBFDBLG.js";
|
|
7
|
+
import "../chunk-76JLMBVT.js";
|
|
8
|
+
import "../chunk-5C6B6ZRH.js";
|
|
9
|
+
import "../chunk-6BBOCFHV.js";
|
|
10
10
|
import "../chunk-YK4WAAS4.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-RZDI7B6Z.js";
|
|
11
|
+
import "../chunk-SJMSS5SI.js";
|
|
12
|
+
import "../chunk-EMZKPRE6.js";
|
|
14
13
|
import {
|
|
15
14
|
AgentRunBlockedError,
|
|
16
15
|
AgentRunCancelledError,
|
|
@@ -18,14 +17,15 @@ import {
|
|
|
18
17
|
AgentStructuredOutputError,
|
|
19
18
|
AgentToolSuspensionError,
|
|
20
19
|
MaxTurnsError
|
|
21
|
-
} from "../chunk-
|
|
22
|
-
import "../chunk-
|
|
20
|
+
} from "../chunk-X4LK4ODN.js";
|
|
21
|
+
import "../chunk-ZA564323.js";
|
|
23
22
|
import "../chunk-3RM57ZT2.js";
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-D4PACGPA.js";
|
|
24
|
+
import "../chunk-7PHMK7W4.js";
|
|
25
|
+
import "../chunk-7JLAIN6E.js";
|
|
26
|
+
import "../chunk-QGX73TSQ.js";
|
|
27
|
+
import "../chunk-3XQGVDU5.js";
|
|
28
|
+
import "../chunk-3RWESPUG.js";
|
|
29
29
|
import "../chunk-AZB6N7P4.js";
|
|
30
30
|
export {
|
|
31
31
|
Agent,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { p as JsonValue, J as JsonObject, $ as ToolQuestionAnswer } from '../../types-DgvozfPc.js';
|
|
3
3
|
import '../../model-call-options-CZkSw_xN.js';
|
|
4
4
|
|
|
5
5
|
type AgentQuestionChoice = Readonly<{
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
parseAgentContinuation,
|
|
7
7
|
parseAgentInteractionRequest,
|
|
8
8
|
parseAgentInteractionResponse
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
9
|
+
} from "../../chunk-OJBFDBLG.js";
|
|
10
|
+
import "../../chunk-3XQGVDU5.js";
|
|
11
11
|
export {
|
|
12
12
|
agentContinuationSchema,
|
|
13
13
|
agentInteractionRequestSchema,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { b as RetrySetting } from './retry-CjvSlKGW.js';
|
|
2
|
-
import { D as Document,
|
|
2
|
+
import { D as Document, c as CompletionModel, P as ProviderTool, J as JsonObject, v as ToolChoice } from './types-DgvozfPc.js';
|
|
3
3
|
import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
|
|
4
|
-
import { d as GuardrailPolicyInput, c as GuardrailPolicy } from './types-
|
|
5
|
-
import { a as McpServer } from './client-
|
|
6
|
-
import { g as AgentLifecycle, E as AgentObservabilityOptions, l as AgentRunOptions, k as AgentResult, r as AgentStream, s as AgentStreamEvent } from './types-
|
|
7
|
-
import { A as AgentMiddleware } from './middleware-
|
|
8
|
-
import { A as AnyTool, T as Tool, c as ToolCallContext, N as NormalizedToolOutput } from './tool-
|
|
9
|
-
import { D as MemoryStore, y as MemorySavePolicy, m as MemoryCompactor, d as MemoryCompactionConflictRetryOptions, x as MemoryOptions } from './types-
|
|
10
|
-
import { a as SkillSet } from './types-
|
|
11
|
-
import { T as ToolIndex } from './dynamic-tools-
|
|
4
|
+
import { d as GuardrailPolicyInput, c as GuardrailPolicy } from './types-DhkodEft.js';
|
|
5
|
+
import { a as McpServer } from './client-DTPl0hZv.js';
|
|
6
|
+
import { g as AgentLifecycle, E as AgentObservabilityOptions, l as AgentRunOptions, k as AgentResult, r as AgentStream, s as AgentStreamEvent } from './types-Sue2hb_L.js';
|
|
7
|
+
import { A as AgentMiddleware } from './middleware-kcF8AusP.js';
|
|
8
|
+
import { A as AnyTool, T as Tool, c as ToolCallContext, N as NormalizedToolOutput } from './tool-BpqpoRSE.js';
|
|
9
|
+
import { D as MemoryStore, y as MemorySavePolicy, m as MemoryCompactor, d as MemoryCompactionConflictRetryOptions, x as MemoryOptions } from './types-DKOXVTcq.js';
|
|
10
|
+
import { a as SkillSet } from './types-DC1U1XwW.js';
|
|
11
|
+
import { T as ToolIndex } from './dynamic-tools-aIZlg5x1.js';
|
|
12
12
|
import { E as EmbeddingModel, c as SparseEmbeddingModel } from './types-Cr4uiYo5.js';
|
|
13
|
-
import { V as VectorFilter, a as VectorSearchResult, d as VectorStore, H as HybridVectorStore, e as VectorFusion } from './types-
|
|
13
|
+
import { V as VectorFilter, a as VectorSearchResult, d as VectorStore, H as HybridVectorStore, e as VectorFusion } from './types-CXNE592e.js';
|
|
14
14
|
|
|
15
15
|
type VectorContextBaseOptions<T = unknown> = {
|
|
16
16
|
topK: number;
|
|
@@ -54,11 +54,33 @@ var MAX_TIMER_DELAY_MS = 2147483647;
|
|
|
54
54
|
var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([408, 409, 425, 429]);
|
|
55
55
|
var RETRYABLE_NUMERIC_ERROR_CODES = /* @__PURE__ */ new Set([4, 8, 14]);
|
|
56
56
|
var RETRYABLE_ERROR_NAMES = /* @__PURE__ */ new Set([
|
|
57
|
-
"AgentStructuredOutputError",
|
|
58
57
|
"APIConnectionError",
|
|
59
58
|
"APIConnectionTimeoutError",
|
|
60
59
|
"TimeoutError"
|
|
61
60
|
]);
|
|
61
|
+
var RETRYABLE_STRUCTURED_OUTPUT_PHASES = /* @__PURE__ */ new Set(["truncated", "parse", "schema"]);
|
|
62
|
+
var RETRYABLE_PROVIDER_OUTPUT_KINDS = /* @__PURE__ */ new Set([
|
|
63
|
+
"malformed-tool-arguments",
|
|
64
|
+
"invalid-tool-arguments",
|
|
65
|
+
"invalid-stream-event",
|
|
66
|
+
"incomplete-stream",
|
|
67
|
+
"incomplete-tool-call",
|
|
68
|
+
"invalid-tool-call",
|
|
69
|
+
"truncated-tool-call"
|
|
70
|
+
]);
|
|
71
|
+
var PROVIDER_OUTPUT_KINDS = /* @__PURE__ */ new Set([
|
|
72
|
+
...RETRYABLE_PROVIDER_OUTPUT_KINDS,
|
|
73
|
+
"filtered-tool-call",
|
|
74
|
+
"invalid-response"
|
|
75
|
+
]);
|
|
76
|
+
var PROVIDER_OUTPUT_FINISH_REASONS = /* @__PURE__ */ new Set([
|
|
77
|
+
"stop",
|
|
78
|
+
"length",
|
|
79
|
+
"content-filter",
|
|
80
|
+
"tool-calls",
|
|
81
|
+
"other"
|
|
82
|
+
]);
|
|
83
|
+
var COMPLETION_PROVIDER_OUTPUT_ERROR_CODE = "ANVIA_COMPLETION_PROVIDER_OUTPUT";
|
|
62
84
|
var RETRYABLE_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
63
85
|
"DEADLINE_EXCEEDED",
|
|
64
86
|
"EAI_AGAIN",
|
|
@@ -107,7 +129,28 @@ function retryErrorAttributes(error) {
|
|
|
107
129
|
const errorName = errors.map((candidate) => stringProperty(candidate, "name")).find((value) => value !== void 0);
|
|
108
130
|
const statusCode = firstStatusCode(errors);
|
|
109
131
|
const errorCode = errors.map((candidate) => errorCodeProperty(candidate)).find((value) => value !== void 0);
|
|
110
|
-
|
|
132
|
+
const attributes = {};
|
|
133
|
+
if (errorName !== void 0) attributes.errorName = errorName;
|
|
134
|
+
if (statusCode !== void 0) attributes.statusCode = statusCode;
|
|
135
|
+
if (errorCode !== void 0) attributes.errorCode = errorCode;
|
|
136
|
+
const providerOutputError = errors.find(isCompletionProviderOutputErrorRecord);
|
|
137
|
+
if (providerOutputError !== void 0) {
|
|
138
|
+
const kind = stringProperty(providerOutputError, "kind");
|
|
139
|
+
if (kind !== void 0) attributes.providerOutputKind = kind;
|
|
140
|
+
const finishReason = stringProperty(providerOutputError, "finishReason");
|
|
141
|
+
if (finishReason !== void 0) attributes.finishReason = finishReason;
|
|
142
|
+
const usage = usageProperty(providerOutputError);
|
|
143
|
+
if (usage !== void 0) attributes.attemptUsage = usageEventValue(usage);
|
|
144
|
+
}
|
|
145
|
+
return attributes;
|
|
146
|
+
}
|
|
147
|
+
function completionProviderOutputErrorUsage(error) {
|
|
148
|
+
for (const candidate of errorChain(error)) {
|
|
149
|
+
if (!isCompletionProviderOutputErrorRecord(candidate)) continue;
|
|
150
|
+
const usage = usageProperty(candidate);
|
|
151
|
+
if (usage !== void 0) return usage;
|
|
152
|
+
}
|
|
153
|
+
return void 0;
|
|
111
154
|
}
|
|
112
155
|
async function waitForRetry(delayMs, abortSignal) {
|
|
113
156
|
await waitForAbortableDelay(delayMs, abortSignal);
|
|
@@ -136,6 +179,19 @@ async function runWithRetries(operation, options, context) {
|
|
|
136
179
|
function defaultShouldRetry(context) {
|
|
137
180
|
const errors = errorChain(context.error);
|
|
138
181
|
if (isAbortError(context.error)) return false;
|
|
182
|
+
const providerOutputErrorMarker = errors.find(isCompletionProviderOutputErrorMarker);
|
|
183
|
+
if (providerOutputErrorMarker !== void 0) {
|
|
184
|
+
if (!isCompletionProviderOutputErrorRecord(providerOutputErrorMarker)) return false;
|
|
185
|
+
const kind = stringProperty(providerOutputErrorMarker, "kind");
|
|
186
|
+
return kind !== void 0 && RETRYABLE_PROVIDER_OUTPUT_KINDS.has(kind);
|
|
187
|
+
}
|
|
188
|
+
const structuredOutputError = errors.find(
|
|
189
|
+
(error) => stringProperty(error, "name") === "AgentStructuredOutputError"
|
|
190
|
+
);
|
|
191
|
+
if (structuredOutputError !== void 0) {
|
|
192
|
+
const phase = stringProperty(structuredOutputError, "phase");
|
|
193
|
+
return phase !== void 0 && RETRYABLE_STRUCTURED_OUTPUT_PHASES.has(phase);
|
|
194
|
+
}
|
|
139
195
|
const statusCode = firstStatusCode(errors);
|
|
140
196
|
if (statusCode !== void 0) {
|
|
141
197
|
return RETRYABLE_STATUS_CODES.has(statusCode) || statusCode >= 500 && statusCode <= 599;
|
|
@@ -149,6 +205,64 @@ function defaultShouldRetry(context) {
|
|
|
149
205
|
return numericCode !== void 0 && RETRYABLE_NUMERIC_ERROR_CODES.has(numericCode);
|
|
150
206
|
});
|
|
151
207
|
}
|
|
208
|
+
function isCompletionProviderOutputErrorRecord(error) {
|
|
209
|
+
const kind = stringProperty(error, "kind");
|
|
210
|
+
return isCompletionProviderOutputErrorMarker(error) && kind !== void 0 && PROVIDER_OUTPUT_KINDS.has(kind) && hasConsistentProviderOutputFinish(error, kind);
|
|
211
|
+
}
|
|
212
|
+
function isCompletionProviderOutputErrorMarker(error) {
|
|
213
|
+
return stringProperty(error, "name") === "CompletionProviderOutputError" && stringProperty(error, "code") === COMPLETION_PROVIDER_OUTPUT_ERROR_CODE;
|
|
214
|
+
}
|
|
215
|
+
function hasConsistentProviderOutputFinish(error, kind) {
|
|
216
|
+
const rawFinishReason = property(error, "finishReason");
|
|
217
|
+
if (rawFinishReason !== void 0 && (typeof rawFinishReason !== "string" || !PROVIDER_OUTPUT_FINISH_REASONS.has(rawFinishReason))) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
const finishReason = rawFinishReason;
|
|
221
|
+
if (kind === "truncated-tool-call") return finishReason === "length";
|
|
222
|
+
if (kind === "filtered-tool-call") return finishReason === "content-filter";
|
|
223
|
+
return finishReason !== "length" && finishReason !== "content-filter";
|
|
224
|
+
}
|
|
225
|
+
function usageProperty(value) {
|
|
226
|
+
const usage = property(value, "usage");
|
|
227
|
+
if (!isObject(usage)) return void 0;
|
|
228
|
+
const inputTokens = nonnegativeNumberProperty(usage, "inputTokens");
|
|
229
|
+
const outputTokens = nonnegativeNumberProperty(usage, "outputTokens");
|
|
230
|
+
const totalTokens = nonnegativeNumberProperty(usage, "totalTokens");
|
|
231
|
+
const cachedInputTokens = nonnegativeNumberProperty(usage, "cachedInputTokens");
|
|
232
|
+
const cacheCreationInputTokens = nonnegativeNumberProperty(usage, "cacheCreationInputTokens");
|
|
233
|
+
if (inputTokens === void 0 || outputTokens === void 0 || totalTokens === void 0 || cachedInputTokens === void 0 || cacheCreationInputTokens === void 0) {
|
|
234
|
+
return void 0;
|
|
235
|
+
}
|
|
236
|
+
const result = {
|
|
237
|
+
inputTokens,
|
|
238
|
+
outputTokens,
|
|
239
|
+
totalTokens,
|
|
240
|
+
cachedInputTokens,
|
|
241
|
+
cacheCreationInputTokens
|
|
242
|
+
};
|
|
243
|
+
const details = property(usage, "details");
|
|
244
|
+
if (details !== void 0) {
|
|
245
|
+
if (!isObject(details)) return void 0;
|
|
246
|
+
const copiedDetails = {};
|
|
247
|
+
for (const [key, detail] of Object.entries(details)) {
|
|
248
|
+
if (typeof detail !== "number" || !Number.isFinite(detail) || detail < 0) return void 0;
|
|
249
|
+
copiedDetails[key] = detail;
|
|
250
|
+
}
|
|
251
|
+
result.details = copiedDetails;
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
function usageEventValue(usage) {
|
|
256
|
+
const value = {
|
|
257
|
+
inputTokens: usage.inputTokens,
|
|
258
|
+
outputTokens: usage.outputTokens,
|
|
259
|
+
totalTokens: usage.totalTokens,
|
|
260
|
+
cachedInputTokens: usage.cachedInputTokens,
|
|
261
|
+
cacheCreationInputTokens: usage.cacheCreationInputTokens
|
|
262
|
+
};
|
|
263
|
+
if (usage.details !== void 0) value.details = { ...usage.details };
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
152
266
|
function firstStatusCode(errors) {
|
|
153
267
|
for (const error of errors) {
|
|
154
268
|
const status = numberProperty(error, "status");
|
|
@@ -180,6 +294,10 @@ function numberProperty(value, name) {
|
|
|
180
294
|
const candidate = property(value, name);
|
|
181
295
|
return typeof candidate === "number" && Number.isFinite(candidate) ? candidate : void 0;
|
|
182
296
|
}
|
|
297
|
+
function nonnegativeNumberProperty(value, name) {
|
|
298
|
+
const candidate = numberProperty(value, name);
|
|
299
|
+
return candidate !== void 0 && candidate >= 0 ? candidate : void 0;
|
|
300
|
+
}
|
|
183
301
|
function stringProperty(value, name) {
|
|
184
302
|
const candidate = property(value, name);
|
|
185
303
|
return typeof candidate === "string" && candidate.length > 0 ? candidate : void 0;
|
|
@@ -205,8 +323,9 @@ export {
|
|
|
205
323
|
resolveRetryOptions,
|
|
206
324
|
retryDelayMs,
|
|
207
325
|
retryErrorAttributes,
|
|
326
|
+
completionProviderOutputErrorUsage,
|
|
208
327
|
waitForRetry,
|
|
209
328
|
retryOptionsForFailure,
|
|
210
329
|
runWithRetries
|
|
211
330
|
};
|
|
212
|
-
//# sourceMappingURL=chunk-
|
|
331
|
+
//# sourceMappingURL=chunk-3RWESPUG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/abort.ts","../src/retry.ts"],"sourcesContent":["export function throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted === true) {\n throw abortError(signal.reason);\n }\n}\n\nexport function abortError(reason?: unknown): Error {\n if (isAbortError(reason)) {\n return reason;\n }\n\n const error = new Error(\n \"The operation was aborted.\",\n reason === undefined ? undefined : { cause: reason },\n );\n error.name = \"AbortError\";\n return error;\n}\n\nexport function isAbortError(error: unknown): error is Error {\n const seen = new Set<object>();\n let current = error;\n while (typeof current === \"object\" && current !== null && !seen.has(current)) {\n seen.add(current);\n if (\"name\" in current && current.name === \"AbortError\") {\n return true;\n }\n current = \"cause\" in current ? current.cause : undefined;\n }\n return false;\n}\n\nexport function waitForAbortableDelay(\n delayMs: number,\n signal: AbortSignal | undefined,\n): Promise<void> {\n throwIfAborted(signal);\n if (delayMs === 0) return Promise.resolve();\n if (signal === undefined) {\n return new Promise<void>((resolve) => setTimeout(resolve, delayMs));\n }\n\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delayMs);\n const onAbort = () => {\n clearTimeout(timer);\n reject(abortError(signal.reason));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n","import type { JsonObject, Usage } from \"./completion/types\";\nimport { abortError, isAbortError, waitForAbortableDelay } from \"./internal/abort\";\n\nexport type RetryContext = {\n error: unknown;\n attempt: number;\n maxAttempts: number;\n streaming: boolean;\n turn?: number | undefined;\n};\n\nexport type RetryOptions = {\n maxAttempts?: number | undefined;\n initialDelayMs?: number | undefined;\n maxDelayMs?: number | undefined;\n shouldRetry?: ((context: RetryContext) => boolean) | undefined;\n};\n\nexport type RetrySetting = RetryOptions | false;\n\nexport type ResolvedRetryOptions = {\n maxAttempts: number;\n initialDelayMs: number;\n maxDelayMs: number;\n shouldRetry: (context: RetryContext) => boolean;\n};\n\nconst DEFAULT_MAX_ATTEMPTS = 3;\nconst DEFAULT_INITIAL_DELAY_MS = 100;\nconst DEFAULT_MAX_DELAY_MS = 1_000;\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nconst RETRYABLE_STATUS_CODES = new Set([408, 409, 425, 429]);\nconst RETRYABLE_NUMERIC_ERROR_CODES = new Set([4, 8, 14]);\nconst RETRYABLE_ERROR_NAMES = new Set([\n \"APIConnectionError\",\n \"APIConnectionTimeoutError\",\n \"TimeoutError\",\n]);\nconst RETRYABLE_STRUCTURED_OUTPUT_PHASES = new Set([\"truncated\", \"parse\", \"schema\"]);\nconst RETRYABLE_PROVIDER_OUTPUT_KINDS = new Set([\n \"malformed-tool-arguments\",\n \"invalid-tool-arguments\",\n \"invalid-stream-event\",\n \"incomplete-stream\",\n \"incomplete-tool-call\",\n \"invalid-tool-call\",\n \"truncated-tool-call\",\n]);\nconst PROVIDER_OUTPUT_KINDS = new Set([\n ...RETRYABLE_PROVIDER_OUTPUT_KINDS,\n \"filtered-tool-call\",\n \"invalid-response\",\n]);\nconst PROVIDER_OUTPUT_FINISH_REASONS = new Set([\n \"stop\",\n \"length\",\n \"content-filter\",\n \"tool-calls\",\n \"other\",\n]);\nconst COMPLETION_PROVIDER_OUTPUT_ERROR_CODE = \"ANVIA_COMPLETION_PROVIDER_OUTPUT\";\nconst RETRYABLE_ERROR_CODES = new Set([\n \"DEADLINE_EXCEEDED\",\n \"EAI_AGAIN\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"EHOSTUNREACH\",\n \"ENETDOWN\",\n \"ENETUNREACH\",\n \"EPIPE\",\n \"ETIMEDOUT\",\n \"RESOURCE_EXHAUSTED\",\n \"UNAVAILABLE\",\n \"UND_ERR_CONNECT_TIMEOUT\",\n \"UND_ERR_HEADERS_TIMEOUT\",\n \"UND_ERR_SOCKET\",\n]);\n\nexport function resolveRetryOptions(options: RetryOptions): ResolvedRetryOptions {\n const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n const initialDelayMs = options.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;\n const maxDelayMs = options.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;\n\n if (!Number.isSafeInteger(maxAttempts) || maxAttempts < 1) {\n throw new RangeError(\"Retry maxAttempts must be a positive integer.\");\n }\n assertDelay(initialDelayMs, \"initialDelayMs\");\n assertDelay(maxDelayMs, \"maxDelayMs\");\n if (maxDelayMs < initialDelayMs) {\n throw new RangeError(\"Retry maxDelayMs must be greater than or equal to initialDelayMs.\");\n }\n if (options.shouldRetry !== undefined && typeof options.shouldRetry !== \"function\") {\n throw new TypeError(\"Retry shouldRetry must be a function.\");\n }\n\n return {\n maxAttempts,\n initialDelayMs,\n maxDelayMs,\n shouldRetry: options.shouldRetry ?? defaultShouldRetry,\n };\n}\n\nexport function retryDelayMs(options: ResolvedRetryOptions, failedAttempt: number): number {\n const exponentialDelay = options.initialDelayMs * 2 ** (failedAttempt - 1);\n const cappedDelay = Math.min(options.maxDelayMs, exponentialDelay);\n return Math.random() * cappedDelay;\n}\n\nexport function retryErrorAttributes(error: unknown): JsonObject {\n const errors = errorChain(error);\n const errorName = errors\n .map((candidate) => stringProperty(candidate, \"name\"))\n .find((value) => value !== undefined);\n const statusCode = firstStatusCode(errors);\n const errorCode = errors\n .map((candidate) => errorCodeProperty(candidate))\n .find((value) => value !== undefined);\n\n const attributes: JsonObject = {};\n if (errorName !== undefined) attributes.errorName = errorName;\n if (statusCode !== undefined) attributes.statusCode = statusCode;\n if (errorCode !== undefined) attributes.errorCode = errorCode;\n const providerOutputError = errors.find(isCompletionProviderOutputErrorRecord);\n if (providerOutputError !== undefined) {\n const kind = stringProperty(providerOutputError, \"kind\");\n if (kind !== undefined) attributes.providerOutputKind = kind;\n const finishReason = stringProperty(providerOutputError, \"finishReason\");\n if (finishReason !== undefined) attributes.finishReason = finishReason;\n const usage = usageProperty(providerOutputError);\n if (usage !== undefined) attributes.attemptUsage = usageEventValue(usage);\n }\n return attributes;\n}\n\nexport function completionProviderOutputErrorUsage(error: unknown): Usage | undefined {\n for (const candidate of errorChain(error)) {\n if (!isCompletionProviderOutputErrorRecord(candidate)) continue;\n const usage = usageProperty(candidate);\n if (usage !== undefined) return usage;\n }\n return undefined;\n}\n\nexport async function waitForRetry(\n delayMs: number,\n abortSignal?: AbortSignal | undefined,\n): Promise<void> {\n await waitForAbortableDelay(delayMs, abortSignal);\n}\n\nexport function retryOptionsForFailure(\n options: ResolvedRetryOptions | undefined,\n context: Omit<RetryContext, \"maxAttempts\">,\n): ResolvedRetryOptions | undefined {\n if (isAbortError(context.error)) return undefined;\n if (options === undefined || context.attempt >= options.maxAttempts) return undefined;\n return options.shouldRetry({ ...context, maxAttempts: options.maxAttempts })\n ? options\n : undefined;\n}\n\nexport async function runWithRetries<T>(\n operation: () => Promise<T>,\n options: ResolvedRetryOptions | undefined,\n context: {\n streaming: boolean;\n turn?: number | undefined;\n abortSignal?: AbortSignal | undefined;\n },\n): Promise<T> {\n let attempt = 1;\n while (true) {\n try {\n return await operation();\n } catch (error) {\n if (context.abortSignal?.aborted === true) {\n throw abortError(context.abortSignal.reason);\n }\n const retryOptions = retryOptionsForFailure(options, { error, attempt, ...context });\n if (retryOptions === undefined) throw error;\n await waitForRetry(retryDelayMs(retryOptions, attempt), context.abortSignal);\n attempt += 1;\n }\n }\n}\n\nfunction defaultShouldRetry(context: RetryContext): boolean {\n const errors = errorChain(context.error);\n if (isAbortError(context.error)) return false;\n\n const providerOutputErrorMarker = errors.find(isCompletionProviderOutputErrorMarker);\n if (providerOutputErrorMarker !== undefined) {\n if (!isCompletionProviderOutputErrorRecord(providerOutputErrorMarker)) return false;\n const kind = stringProperty(providerOutputErrorMarker, \"kind\");\n return kind !== undefined && RETRYABLE_PROVIDER_OUTPUT_KINDS.has(kind);\n }\n\n const structuredOutputError = errors.find(\n (error) => stringProperty(error, \"name\") === \"AgentStructuredOutputError\",\n );\n if (structuredOutputError !== undefined) {\n const phase = stringProperty(structuredOutputError, \"phase\");\n return phase !== undefined && RETRYABLE_STRUCTURED_OUTPUT_PHASES.has(phase);\n }\n\n const statusCode = firstStatusCode(errors);\n if (statusCode !== undefined) {\n return RETRYABLE_STATUS_CODES.has(statusCode) || (statusCode >= 500 && statusCode <= 599);\n }\n\n return errors.some((error) => {\n const name = stringProperty(error, \"name\");\n if (name !== undefined && RETRYABLE_ERROR_NAMES.has(name)) return true;\n const code = stringProperty(error, \"code\")?.toUpperCase();\n if (code !== undefined && RETRYABLE_ERROR_CODES.has(code)) return true;\n const numericCode = numberProperty(error, \"code\");\n return numericCode !== undefined && RETRYABLE_NUMERIC_ERROR_CODES.has(numericCode);\n });\n}\n\nfunction isCompletionProviderOutputErrorRecord(error: Record<string, unknown>): boolean {\n const kind = stringProperty(error, \"kind\");\n return (\n isCompletionProviderOutputErrorMarker(error) &&\n kind !== undefined &&\n PROVIDER_OUTPUT_KINDS.has(kind) &&\n hasConsistentProviderOutputFinish(error, kind)\n );\n}\n\nfunction isCompletionProviderOutputErrorMarker(error: Record<string, unknown>): boolean {\n return (\n stringProperty(error, \"name\") === \"CompletionProviderOutputError\" &&\n stringProperty(error, \"code\") === COMPLETION_PROVIDER_OUTPUT_ERROR_CODE\n );\n}\n\nfunction hasConsistentProviderOutputFinish(error: Record<string, unknown>, kind: string): boolean {\n const rawFinishReason = property(error, \"finishReason\");\n if (\n rawFinishReason !== undefined &&\n (typeof rawFinishReason !== \"string\" || !PROVIDER_OUTPUT_FINISH_REASONS.has(rawFinishReason))\n ) {\n return false;\n }\n const finishReason = rawFinishReason as string | undefined;\n if (kind === \"truncated-tool-call\") return finishReason === \"length\";\n if (kind === \"filtered-tool-call\") return finishReason === \"content-filter\";\n return finishReason !== \"length\" && finishReason !== \"content-filter\";\n}\n\nfunction usageProperty(value: Record<string, unknown>): Usage | undefined {\n const usage = property(value, \"usage\");\n if (!isObject(usage)) return undefined;\n const inputTokens = nonnegativeNumberProperty(usage, \"inputTokens\");\n const outputTokens = nonnegativeNumberProperty(usage, \"outputTokens\");\n const totalTokens = nonnegativeNumberProperty(usage, \"totalTokens\");\n const cachedInputTokens = nonnegativeNumberProperty(usage, \"cachedInputTokens\");\n const cacheCreationInputTokens = nonnegativeNumberProperty(usage, \"cacheCreationInputTokens\");\n if (\n inputTokens === undefined ||\n outputTokens === undefined ||\n totalTokens === undefined ||\n cachedInputTokens === undefined ||\n cacheCreationInputTokens === undefined\n ) {\n return undefined;\n }\n const result: Usage = {\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n };\n const details = property(usage, \"details\");\n if (details !== undefined) {\n if (!isObject(details)) return undefined;\n const copiedDetails: Record<string, number> = {};\n for (const [key, detail] of Object.entries(details)) {\n if (typeof detail !== \"number\" || !Number.isFinite(detail) || detail < 0) return undefined;\n copiedDetails[key] = detail;\n }\n result.details = copiedDetails;\n }\n return result;\n}\n\nfunction usageEventValue(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) value.details = { ...usage.details };\n return value;\n}\n\nfunction firstStatusCode(errors: Record<string, unknown>[]): number | undefined {\n for (const error of errors) {\n const status = numberProperty(error, \"status\");\n if (status !== undefined && status >= 100 && status <= 599) return status;\n const statusCode = numberProperty(error, \"statusCode\");\n if (statusCode !== undefined && statusCode >= 100 && statusCode <= 599) return statusCode;\n const code = numberProperty(error, \"code\");\n if (code !== undefined && code >= 100 && code <= 599) return code;\n }\n return undefined;\n}\n\nfunction errorChain(error: unknown): Record<string, unknown>[] {\n const errors: Record<string, unknown>[] = [];\n const seen = new Set<object>();\n let current = error;\n while (isObject(current) && !seen.has(current)) {\n seen.add(current);\n errors.push(current);\n current = property(current, \"cause\");\n }\n return errors;\n}\n\nfunction assertDelay(value: number, name: string): void {\n if (!Number.isFinite(value) || value < 0 || value > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`Retry ${name} must be between 0 and ${MAX_TIMER_DELAY_MS} milliseconds.`);\n }\n}\n\nfunction numberProperty(value: Record<string, unknown>, name: string): number | undefined {\n const candidate = property(value, name);\n return typeof candidate === \"number\" && Number.isFinite(candidate) ? candidate : undefined;\n}\n\nfunction nonnegativeNumberProperty(\n value: Record<string, unknown>,\n name: string,\n): number | undefined {\n const candidate = numberProperty(value, name);\n return candidate !== undefined && candidate >= 0 ? candidate : undefined;\n}\n\nfunction stringProperty(value: Record<string, unknown>, name: string): string | undefined {\n const candidate = property(value, name);\n return typeof candidate === \"string\" && candidate.length > 0 ? candidate : undefined;\n}\n\nfunction errorCodeProperty(value: Record<string, unknown>): string | number | undefined {\n return stringProperty(value, \"code\") ?? numberProperty(value, \"code\");\n}\n\nfunction property(value: Record<string, unknown>, name: string): unknown {\n try {\n return value[name];\n } catch {\n return undefined;\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":";AAAO,SAAS,eAAe,QAAuC;AACpE,MAAI,QAAQ,YAAY,MAAM;AAC5B,UAAM,WAAW,OAAO,MAAM;AAAA,EAChC;AACF;AAEO,SAAS,WAAW,QAAyB;AAClD,MAAI,aAAa,MAAM,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA,WAAW,SAAY,SAAY,EAAE,OAAO,OAAO;AAAA,EACrD;AACA,QAAM,OAAO;AACb,SAAO;AACT;AAEO,SAAS,aAAa,OAAgC;AAC3D,QAAM,OAAO,oBAAI,IAAY;AAC7B,MAAI,UAAU;AACd,SAAO,OAAO,YAAY,YAAY,YAAY,QAAQ,CAAC,KAAK,IAAI,OAAO,GAAG;AAC5E,SAAK,IAAI,OAAO;AAChB,QAAI,UAAU,WAAW,QAAQ,SAAS,cAAc;AACtD,aAAO;AAAA,IACT;AACA,cAAU,WAAW,UAAU,QAAQ,QAAQ;AAAA,EACjD;AACA,SAAO;AACT;AAEO,SAAS,sBACd,SACA,QACe;AACf,iBAAe,MAAM;AACrB,MAAI,YAAY,EAAG,QAAO,QAAQ,QAAQ;AAC1C,MAAI,WAAW,QAAW;AACxB,WAAO,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,OAAO,CAAC;AAAA,EACpE;AAEA,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAM,QAAQ,WAAW,MAAM;AAC7B,aAAO,oBAAoB,SAAS,OAAO;AAC3C,cAAQ;AAAA,IACV,GAAG,OAAO;AACV,UAAM,UAAU,MAAM;AACpB,mBAAa,KAAK;AAClB,aAAO,WAAW,OAAO,MAAM,CAAC;AAAA,IAClC;AACA,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EAC1D,CAAC;AACH;;;AC1BA,IAAM,uBAAuB;AAC7B,IAAM,2BAA2B;AACjC,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAE3B,IAAM,yBAAyB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AAC3D,IAAM,gCAAgC,oBAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACxD,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,qCAAqC,oBAAI,IAAI,CAAC,aAAa,SAAS,QAAQ,CAAC;AACnF,IAAM,kCAAkC,oBAAI,IAAI;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC,GAAG;AAAA,EACH;AAAA,EACA;AACF,CAAC;AACD,IAAM,iCAAiC,oBAAI,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wCAAwC;AAC9C,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,oBAAoB,SAA6C;AAC/E,QAAM,cAAc,QAAQ,eAAe;AAC3C,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,aAAa,QAAQ,cAAc;AAEzC,MAAI,CAAC,OAAO,cAAc,WAAW,KAAK,cAAc,GAAG;AACzD,UAAM,IAAI,WAAW,+CAA+C;AAAA,EACtE;AACA,cAAY,gBAAgB,gBAAgB;AAC5C,cAAY,YAAY,YAAY;AACpC,MAAI,aAAa,gBAAgB;AAC/B,UAAM,IAAI,WAAW,mEAAmE;AAAA,EAC1F;AACA,MAAI,QAAQ,gBAAgB,UAAa,OAAO,QAAQ,gBAAgB,YAAY;AAClF,UAAM,IAAI,UAAU,uCAAuC;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,QAAQ,eAAe;AAAA,EACtC;AACF;AAEO,SAAS,aAAa,SAA+B,eAA+B;AACzF,QAAM,mBAAmB,QAAQ,iBAAiB,MAAM,gBAAgB;AACxE,QAAM,cAAc,KAAK,IAAI,QAAQ,YAAY,gBAAgB;AACjE,SAAO,KAAK,OAAO,IAAI;AACzB;AAEO,SAAS,qBAAqB,OAA4B;AAC/D,QAAM,SAAS,WAAW,KAAK;AAC/B,QAAM,YAAY,OACf,IAAI,CAAC,cAAc,eAAe,WAAW,MAAM,CAAC,EACpD,KAAK,CAAC,UAAU,UAAU,MAAS;AACtC,QAAM,aAAa,gBAAgB,MAAM;AACzC,QAAM,YAAY,OACf,IAAI,CAAC,cAAc,kBAAkB,SAAS,CAAC,EAC/C,KAAK,CAAC,UAAU,UAAU,MAAS;AAEtC,QAAM,aAAyB,CAAC;AAChC,MAAI,cAAc,OAAW,YAAW,YAAY;AACpD,MAAI,eAAe,OAAW,YAAW,aAAa;AACtD,MAAI,cAAc,OAAW,YAAW,YAAY;AACpD,QAAM,sBAAsB,OAAO,KAAK,qCAAqC;AAC7E,MAAI,wBAAwB,QAAW;AACrC,UAAM,OAAO,eAAe,qBAAqB,MAAM;AACvD,QAAI,SAAS,OAAW,YAAW,qBAAqB;AACxD,UAAM,eAAe,eAAe,qBAAqB,cAAc;AACvE,QAAI,iBAAiB,OAAW,YAAW,eAAe;AAC1D,UAAM,QAAQ,cAAc,mBAAmB;AAC/C,QAAI,UAAU,OAAW,YAAW,eAAe,gBAAgB,KAAK;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,SAAS,mCAAmC,OAAmC;AACpF,aAAW,aAAa,WAAW,KAAK,GAAG;AACzC,QAAI,CAAC,sCAAsC,SAAS,EAAG;AACvD,UAAM,QAAQ,cAAc,SAAS;AACrC,QAAI,UAAU,OAAW,QAAO;AAAA,EAClC;AACA,SAAO;AACT;AAEA,eAAsB,aACpB,SACA,aACe;AACf,QAAM,sBAAsB,SAAS,WAAW;AAClD;AAEO,SAAS,uBACd,SACA,SACkC;AAClC,MAAI,aAAa,QAAQ,KAAK,EAAG,QAAO;AACxC,MAAI,YAAY,UAAa,QAAQ,WAAW,QAAQ,YAAa,QAAO;AAC5E,SAAO,QAAQ,YAAY,EAAE,GAAG,SAAS,aAAa,QAAQ,YAAY,CAAC,IACvE,UACA;AACN;AAEA,eAAsB,eACpB,WACA,SACA,SAKY;AACZ,MAAI,UAAU;AACd,SAAO,MAAM;AACX,QAAI;AACF,aAAO,MAAM,UAAU;AAAA,IACzB,SAAS,OAAO;AACd,UAAI,QAAQ,aAAa,YAAY,MAAM;AACzC,cAAM,WAAW,QAAQ,YAAY,MAAM;AAAA,MAC7C;AACA,YAAM,eAAe,uBAAuB,SAAS,EAAE,OAAO,SAAS,GAAG,QAAQ,CAAC;AACnF,UAAI,iBAAiB,OAAW,OAAM;AACtC,YAAM,aAAa,aAAa,cAAc,OAAO,GAAG,QAAQ,WAAW;AAC3E,iBAAW;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,SAAgC;AAC1D,QAAM,SAAS,WAAW,QAAQ,KAAK;AACvC,MAAI,aAAa,QAAQ,KAAK,EAAG,QAAO;AAExC,QAAM,4BAA4B,OAAO,KAAK,qCAAqC;AACnF,MAAI,8BAA8B,QAAW;AAC3C,QAAI,CAAC,sCAAsC,yBAAyB,EAAG,QAAO;AAC9E,UAAM,OAAO,eAAe,2BAA2B,MAAM;AAC7D,WAAO,SAAS,UAAa,gCAAgC,IAAI,IAAI;AAAA,EACvE;AAEA,QAAM,wBAAwB,OAAO;AAAA,IACnC,CAAC,UAAU,eAAe,OAAO,MAAM,MAAM;AAAA,EAC/C;AACA,MAAI,0BAA0B,QAAW;AACvC,UAAM,QAAQ,eAAe,uBAAuB,OAAO;AAC3D,WAAO,UAAU,UAAa,mCAAmC,IAAI,KAAK;AAAA,EAC5E;AAEA,QAAM,aAAa,gBAAgB,MAAM;AACzC,MAAI,eAAe,QAAW;AAC5B,WAAO,uBAAuB,IAAI,UAAU,KAAM,cAAc,OAAO,cAAc;AAAA,EACvF;AAEA,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,UAAM,OAAO,eAAe,OAAO,MAAM;AACzC,QAAI,SAAS,UAAa,sBAAsB,IAAI,IAAI,EAAG,QAAO;AAClE,UAAM,OAAO,eAAe,OAAO,MAAM,GAAG,YAAY;AACxD,QAAI,SAAS,UAAa,sBAAsB,IAAI,IAAI,EAAG,QAAO;AAClE,UAAM,cAAc,eAAe,OAAO,MAAM;AAChD,WAAO,gBAAgB,UAAa,8BAA8B,IAAI,WAAW;AAAA,EACnF,CAAC;AACH;AAEA,SAAS,sCAAsC,OAAyC;AACtF,QAAM,OAAO,eAAe,OAAO,MAAM;AACzC,SACE,sCAAsC,KAAK,KAC3C,SAAS,UACT,sBAAsB,IAAI,IAAI,KAC9B,kCAAkC,OAAO,IAAI;AAEjD;AAEA,SAAS,sCAAsC,OAAyC;AACtF,SACE,eAAe,OAAO,MAAM,MAAM,mCAClC,eAAe,OAAO,MAAM,MAAM;AAEtC;AAEA,SAAS,kCAAkC,OAAgC,MAAuB;AAChG,QAAM,kBAAkB,SAAS,OAAO,cAAc;AACtD,MACE,oBAAoB,WACnB,OAAO,oBAAoB,YAAY,CAAC,+BAA+B,IAAI,eAAe,IAC3F;AACA,WAAO;AAAA,EACT;AACA,QAAM,eAAe;AACrB,MAAI,SAAS,sBAAuB,QAAO,iBAAiB;AAC5D,MAAI,SAAS,qBAAsB,QAAO,iBAAiB;AAC3D,SAAO,iBAAiB,YAAY,iBAAiB;AACvD;AAEA,SAAS,cAAc,OAAmD;AACxE,QAAM,QAAQ,SAAS,OAAO,OAAO;AACrC,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,cAAc,0BAA0B,OAAO,aAAa;AAClE,QAAM,eAAe,0BAA0B,OAAO,cAAc;AACpE,QAAM,cAAc,0BAA0B,OAAO,aAAa;AAClE,QAAM,oBAAoB,0BAA0B,OAAO,mBAAmB;AAC9E,QAAM,2BAA2B,0BAA0B,OAAO,0BAA0B;AAC5F,MACE,gBAAgB,UAChB,iBAAiB,UACjB,gBAAgB,UAChB,sBAAsB,UACtB,6BAA6B,QAC7B;AACA,WAAO;AAAA,EACT;AACA,QAAM,SAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,SAAS,OAAO,SAAS;AACzC,MAAI,YAAY,QAAW;AACzB,QAAI,CAAC,SAAS,OAAO,EAAG,QAAO;AAC/B,UAAM,gBAAwC,CAAC;AAC/C,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAI,OAAO,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,KAAK,SAAS,EAAG,QAAO;AACjF,oBAAc,GAAG,IAAI;AAAA,IACvB;AACA,WAAO,UAAU;AAAA,EACnB;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAA0B;AACjD,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,OAAW,OAAM,UAAU,EAAE,GAAG,MAAM,QAAQ;AACpE,SAAO;AACT;AAEA,SAAS,gBAAgB,QAAuD;AAC9E,aAAW,SAAS,QAAQ;AAC1B,UAAM,SAAS,eAAe,OAAO,QAAQ;AAC7C,QAAI,WAAW,UAAa,UAAU,OAAO,UAAU,IAAK,QAAO;AACnE,UAAM,aAAa,eAAe,OAAO,YAAY;AACrD,QAAI,eAAe,UAAa,cAAc,OAAO,cAAc,IAAK,QAAO;AAC/E,UAAM,OAAO,eAAe,OAAO,MAAM;AACzC,QAAI,SAAS,UAAa,QAAQ,OAAO,QAAQ,IAAK,QAAO;AAAA,EAC/D;AACA,SAAO;AACT;AAEA,SAAS,WAAW,OAA2C;AAC7D,QAAM,SAAoC,CAAC;AAC3C,QAAM,OAAO,oBAAI,IAAY;AAC7B,MAAI,UAAU;AACd,SAAO,SAAS,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,GAAG;AAC9C,SAAK,IAAI,OAAO;AAChB,WAAO,KAAK,OAAO;AACnB,cAAU,SAAS,SAAS,OAAO;AAAA,EACrC;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAe,MAAoB;AACtD,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,KAAK,QAAQ,oBAAoB;AACtE,UAAM,IAAI,WAAW,SAAS,IAAI,0BAA0B,kBAAkB,gBAAgB;AAAA,EAChG;AACF;AAEA,SAAS,eAAe,OAAgC,MAAkC;AACxF,QAAM,YAAY,SAAS,OAAO,IAAI;AACtC,SAAO,OAAO,cAAc,YAAY,OAAO,SAAS,SAAS,IAAI,YAAY;AACnF;AAEA,SAAS,0BACP,OACA,MACoB;AACpB,QAAM,YAAY,eAAe,OAAO,IAAI;AAC5C,SAAO,cAAc,UAAa,aAAa,IAAI,YAAY;AACjE;AAEA,SAAS,eAAe,OAAgC,MAAkC;AACxF,QAAM,YAAY,SAAS,OAAO,IAAI;AACtC,SAAO,OAAO,cAAc,YAAY,UAAU,SAAS,IAAI,YAAY;AAC7E;AAEA,SAAS,kBAAkB,OAA6D;AACtF,SAAO,eAAe,OAAO,MAAM,KAAK,eAAe,OAAO,MAAM;AACtE;AAEA,SAAS,SAAS,OAAgC,MAAuB;AACvE,MAAI;AACF,WAAO,MAAM,IAAI;AAAA,EACnB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;","names":[]}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
markSkillTool
|
|
3
3
|
} from "./chunk-YK4WAAS4.js";
|
|
4
|
-
import {
|
|
5
|
-
isRecord
|
|
6
|
-
} from "./chunk-CQNNSZPG.js";
|
|
7
4
|
import {
|
|
8
5
|
createTool
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EMZKPRE6.js";
|
|
10
7
|
|
|
11
8
|
// src/skills/instructions.ts
|
|
12
9
|
function skillInstructions(skills) {
|
|
@@ -239,6 +236,11 @@ import { readdir, readFile as readFile2, stat } from "fs/promises";
|
|
|
239
236
|
import { basename, join, relative as relative2, resolve as resolve2, sep } from "path";
|
|
240
237
|
import { parse as parseYaml } from "yaml";
|
|
241
238
|
|
|
239
|
+
// src/internal/record.ts
|
|
240
|
+
function isRecord(value) {
|
|
241
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
242
|
+
}
|
|
243
|
+
|
|
242
244
|
// src/skills/types.ts
|
|
243
245
|
var SkillValidationError = class extends Error {
|
|
244
246
|
issues;
|
|
@@ -395,4 +397,4 @@ export {
|
|
|
395
397
|
SkillValidationError,
|
|
396
398
|
skill
|
|
397
399
|
};
|
|
398
|
-
//# sourceMappingURL=chunk-
|
|
400
|
+
//# sourceMappingURL=chunk-3SKZ2BKP.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/internal/record.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 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 }) =>\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/record\";\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","export function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\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"]}
|
|
@@ -15,7 +15,7 @@ function isJsonValueWithAncestors(value, ancestors) {
|
|
|
15
15
|
ancestors.add(value);
|
|
16
16
|
try {
|
|
17
17
|
if (Array.isArray(value)) {
|
|
18
|
-
if (!hasOnlyDenseArrayProperties(value)) {
|
|
18
|
+
if (Object.getPrototypeOf(value) !== Array.prototype || !hasOnlyDenseArrayProperties(value)) {
|
|
19
19
|
return false;
|
|
20
20
|
}
|
|
21
21
|
for (let index = 0; index < value.length; index += 1) {
|
|
@@ -66,4 +66,4 @@ function hasOnlyDenseArrayProperties(value) {
|
|
|
66
66
|
export {
|
|
67
67
|
isJsonValue
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-3XQGVDU5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/completion/json.ts"],"sourcesContent":["import type { JsonValue } from \"./types\";\n\nexport function isJsonValue(value: unknown): value is JsonValue {\n return isJsonValueWithAncestors(value, new WeakSet<object>());\n}\n\nfunction isJsonValueWithAncestors(value: unknown, ancestors: WeakSet<object>): value is JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") {\n return true;\n }\n if (typeof value === \"number\") {\n return Number.isFinite(value);\n }\n if (typeof value !== \"object\" || ancestors.has(value)) {\n return false;\n }\n\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n if (Object.getPrototypeOf(value) !== Array.prototype || !hasOnlyDenseArrayProperties(value)) {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n if (!isJsonValueWithAncestors(value[index], ancestors)) {\n return false;\n }\n }\n return true;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return false;\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n return false;\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (\n descriptor === undefined ||\n !descriptor.enumerable ||\n !(\"value\" in descriptor) ||\n !isJsonValueWithAncestors(descriptor.value, ancestors)\n ) {\n return false;\n }\n }\n return true;\n } catch {\n return false;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction hasOnlyDenseArrayProperties(value: unknown[]): boolean {\n const keys = Reflect.ownKeys(value);\n if (keys.length !== value.length + 1 || keys.at(-1) !== \"length\") {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n const key = String(index);\n if (keys[index] !== key) {\n return false;\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !(\"value\" in descriptor)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";AAEO,SAAS,YAAY,OAAoC;AAC9D,SAAO,yBAAyB,OAAO,oBAAI,QAAgB,CAAC;AAC9D;AAEA,SAAS,yBAAyB,OAAgB,WAAgD;AAChG,MAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAC7E,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,OAAO,SAAS,KAAK;AAAA,EAC9B;AACA,MAAI,OAAO,UAAU,YAAY,UAAU,IAAI,KAAK,GAAG;AACrD,WAAO;AAAA,EACT;AAEA,YAAU,IAAI,KAAK;AACnB,MAAI;AACF,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAI,OAAO,eAAe,KAAK,MAAM,MAAM,aAAa,CAAC,4BAA4B,KAAK,GAAG;AAC3F,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,YAAI,CAAC,yBAAyB,MAAM,KAAK,GAAG,SAAS,GAAG;AACtD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,OAAO,eAAe,KAAK;AAC7C,QAAI,cAAc,OAAO,aAAa,cAAc,MAAM;AACxD,aAAO;AAAA,IACT;AACA,eAAW,OAAO,QAAQ,QAAQ,KAAK,GAAG;AACxC,UAAI,OAAO,QAAQ,UAAU;AAC3B,eAAO;AAAA,MACT;AACA,YAAM,aAAa,OAAO,yBAAyB,OAAO,GAAG;AAC7D,UACE,eAAe,UACf,CAAC,WAAW,cACZ,EAAE,WAAW,eACb,CAAC,yBAAyB,WAAW,OAAO,SAAS,GACrD;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT,UAAE;AACA,cAAU,OAAO,KAAK;AAAA,EACxB;AACF;AAEA,SAAS,4BAA4B,OAA2B;AAC9D,QAAM,OAAO,QAAQ,QAAQ,KAAK;AAClC,MAAI,KAAK,WAAW,MAAM,SAAS,KAAK,KAAK,GAAG,EAAE,MAAM,UAAU;AAChE,WAAO;AAAA,EACT;AACA,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,MAAM,OAAO,KAAK;AACxB,QAAI,KAAK,KAAK,MAAM,KAAK;AACvB,aAAO;AAAA,IACT;AACA,UAAM,aAAa,OAAO,yBAAyB,OAAO,GAAG;AAC7D,QAAI,eAAe,UAAa,CAAC,WAAW,cAAc,EAAE,WAAW,aAAa;AAClF,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateCompletion
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7PHMK7W4.js";
|
|
4
4
|
|
|
5
5
|
// src/memory/errors.ts
|
|
6
6
|
var MemoryCompactionError = class extends Error {
|
|
@@ -235,4 +235,4 @@ export {
|
|
|
235
235
|
createMemoryCompactionSummary,
|
|
236
236
|
cumulativeCompactedMessageCount
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-5C6B6ZRH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Usage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7PHMK7W4.js";
|
|
4
4
|
|
|
5
5
|
// src/observability/snapshot.ts
|
|
6
6
|
function observerSnapshot(value) {
|
|
@@ -320,4 +320,4 @@ export {
|
|
|
320
320
|
AgentObserverDispatchError,
|
|
321
321
|
startAgentRunObservers
|
|
322
322
|
};
|
|
323
|
-
//# sourceMappingURL=chunk-
|
|
323
|
+
//# sourceMappingURL=chunk-6BBOCFHV.js.map
|