@genesislcap/foundation-ai 14.489.0 → 14.489.1-alpha-559fa0f.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dts/ai-provider.d.ts.map +1 -1
- package/dist/dts/transports/anthropic-transport.d.ts +20 -0
- package/dist/dts/transports/anthropic-transport.d.ts.map +1 -1
- package/dist/dts/transports/gemini-transport.d.ts.map +1 -1
- package/dist/dts/types/chat.types.d.ts +2 -1
- package/dist/dts/types/chat.types.d.ts.map +1 -1
- package/dist/dts/types/config.types.d.ts +6 -0
- package/dist/dts/types/config.types.d.ts.map +1 -1
- package/dist/dts/utils/abort-reason.d.ts +11 -0
- package/dist/dts/utils/abort-reason.d.ts.map +1 -0
- package/dist/dts/utils/abortable-delay.d.ts +9 -0
- package/dist/dts/utils/abortable-delay.d.ts.map +1 -0
- package/dist/esm/ai-provider.js +1 -0
- package/dist/esm/transports/anthropic-transport.js +139 -23
- package/dist/esm/transports/gemini-transport.js +26 -29
- package/dist/esm/utils/abort-reason.js +19 -0
- package/dist/esm/utils/abortable-delay.js +25 -0
- package/dist/foundation-ai.api.json +1 -1
- package/dist/foundation-ai.d.ts +28 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAU/D,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAIb,KAAK,4BAA4B,EAIlC,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI3F;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB,CAAC,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAEvC;;;OAGG;IACH,eAAe,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExE;;;OAGG;IACH,IAAI,CAAC,CACH,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,CACT,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,aAAa,CAAC,eAAe,CAAC,CAAC;CACnC;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"ai-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@ export interface AnthropicTransportConfig {
|
|
|
8
8
|
*/
|
|
9
9
|
model?: AnthropicModelId;
|
|
10
10
|
timeout?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Inactivity window (ms) on the server-proxied heartbeat path: once the framed
|
|
13
|
+
* body starts streaming, the request aborts when no frame/chunk arrives for this
|
|
14
|
+
* long. Ignored on direct API calls and legacy JSON responses. Defaults to 30_000.
|
|
15
|
+
*/
|
|
16
|
+
stallTimeout?: number;
|
|
11
17
|
/**
|
|
12
18
|
* API key for direct calls to the Anthropic API.
|
|
13
19
|
* Must be provided explicitly; callers are responsible for reading it from
|
|
@@ -89,6 +95,7 @@ export declare class ResponseTruncatedError extends Error {
|
|
|
89
95
|
export declare class AnthropicTransport implements AITransport, ChatTransport, CostReportingTransport {
|
|
90
96
|
private readonly model;
|
|
91
97
|
private readonly timeout;
|
|
98
|
+
private readonly stallTimeout;
|
|
92
99
|
private readonly apiKey;
|
|
93
100
|
private readonly serverEndpoint;
|
|
94
101
|
private readonly maxTokens;
|
|
@@ -168,6 +175,19 @@ export declare class AnthropicTransport implements AITransport, ChatTransport, C
|
|
|
168
175
|
private static readonly OVERLOADED_STATUS;
|
|
169
176
|
private static readonly RETRYABLE_STATUSES;
|
|
170
177
|
private static readonly BACKOFF_BASE_MS;
|
|
178
|
+
/** Cap on how much of a malformed proxy frame is quoted in the error message. */
|
|
179
|
+
private static readonly MALFORMED_FRAME_PREVIEW_CHARS;
|
|
171
180
|
private post;
|
|
181
|
+
/** Exponential backoff between retry attempts: 1s, 2s, 4s, 8s, 16s.
|
|
182
|
+
* Abortable so a caller cancel mid-wait unwinds immediately. */
|
|
183
|
+
private static backoff;
|
|
184
|
+
/**
|
|
185
|
+
* Read an NDJSON heartbeat body to its terminal frame. Buffers partial lines
|
|
186
|
+
* across chunks, tolerates blank lines, and skips unknown frame types — pings
|
|
187
|
+
* matter only as activity, which `onChunk` reports to the stall timer. An
|
|
188
|
+
* abort (stall timer or caller signal) rejects the pending `read()` with the
|
|
189
|
+
* abort reason, which propagates to the caller's finally cleanup.
|
|
190
|
+
*/
|
|
191
|
+
private readFramedBody;
|
|
172
192
|
}
|
|
173
193
|
//# sourceMappingURL=anthropic-transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/anthropic-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAGV,WAAW,EACX,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/anthropic-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/gemini-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAEV,WAAW,EACX,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/gemini-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAEV,WAAW,EACX,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;AA4I7B,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA0CD;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM;gBAAtB,aAAa,CAAC,EAAE,MAAM;CAI5C;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAgB,YAAW,WAAW,EAAE,aAAa,EAAE,sBAAsB;IACxF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAK;gBAEnB,MAAM,GAAE,qBAA0B;IAc9C,SAAS,IAAI;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAQ/E,iGAAiG;IACjG,eAAe,IAAI,MAAM;IAIzB,mGAAmG;IACnG,kBAAkB,IAAI,MAAM;IAI5B,+FAA+F;IAC/F,iBAAiB,IAAI,IAAI;IAOnB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBvE,eAAe,CACnB,OAAO,EAAE,WAAW,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAsEvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAa;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IAEhD;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,gBAAgB;IAmFxB,OAAO,CAAC,kBAAkB;IAsJ1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAO;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAO;IACzD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAO;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAIxC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;YAEjC,IAAI;IAoElB,OAAO,CAAC,eAAe;CAexB"}
|
|
@@ -422,7 +422,8 @@ export interface InteractionRequestOptions {
|
|
|
422
422
|
* - `unknown_tool_limit` — the model repeatedly called tools that aren't
|
|
423
423
|
* available to it.
|
|
424
424
|
* - `timeout` — the sub-agent did not finish within
|
|
425
|
-
* {@link SubAgentRequestOptions.timeoutMs}
|
|
425
|
+
* {@link SubAgentRequestOptions.timeoutMs} (its run was aborted), or a
|
|
426
|
+
* transport request timed out inside the child's own run.
|
|
426
427
|
* - `response_truncated` — a turn stopped at the provider's output-token cap with
|
|
427
428
|
* an incomplete tool call; deterministic, so it is not retried.
|
|
428
429
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.types.d.ts","sourceRoot":"","sources":["../../../src/types/chat.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat.types.d.ts","sourceRoot":"","sources":["../../../src/types/chat.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,12 @@ export declare const SUPPORTED_ANTHROPIC_MODEL_IDS: readonly AnthropicModelId[];
|
|
|
32
32
|
export interface AIProviderConfig {
|
|
33
33
|
model?: string;
|
|
34
34
|
timeout?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Inactivity window (ms) between streamed frames before a request is treated
|
|
37
|
+
* as stalled. Only meaningful for server-proxied transports with heartbeat
|
|
38
|
+
* framing (the Anthropic NDJSON proxy path); direct API calls ignore it.
|
|
39
|
+
*/
|
|
40
|
+
stallTimeout?: number;
|
|
35
41
|
/** Optional override for criteria interpretation capability. */
|
|
36
42
|
criteriaInstructions?: string;
|
|
37
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,uBAAuB,GAEvB,wBAAwB,CAAC;AAE7B,YAAY;AACZ,eAAO,MAAM,0BAA0B,EAAE,SAAS,aAAa,EAOrD,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,2BAA2B,CAAC;AAEhC,YAAY;AACZ,eAAO,MAAM,6BAA6B,EAAE,SAAS,gBAAgB,EAK3D,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,YAAY,EAAE,QAAQ,CAAC;IACvB,4GAA4G;IAC5G,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,YAAY,EAAE,WAAW,CAAC;IAC1B,mHAAmH;IACnH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,uBAAuB,GAEvB,wBAAwB,CAAC;AAE7B,YAAY;AACZ,eAAO,MAAM,0BAA0B,EAAE,SAAS,aAAa,EAOrD,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,2BAA2B,CAAC;AAEhC,YAAY;AACZ,eAAO,MAAM,6BAA6B,EAAE,SAAS,gBAAgB,EAK3D,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,YAAY,EAAE,QAAQ,CAAC;IACvB,4GAA4G;IAC5G,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,YAAY,EAAE,WAAW,CAAC;IAC1B,mHAAmH;IACnH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the authoritative reason behind an abort-shaped rejection.
|
|
3
|
+
*
|
|
4
|
+
* Chromium/Firefox reject an aborted fetch/body read with the signal's
|
|
5
|
+
* `reason`, but older WebKit rejects with a generic `AbortError` — which would
|
|
6
|
+
* send a transport timeout down a caller's user-cancel path. When `error` is
|
|
7
|
+
* abort-shaped, prefer the timeout signal's reason (the tagged TimeoutError),
|
|
8
|
+
* then the caller signal's; anything else passes through untouched.
|
|
9
|
+
*/
|
|
10
|
+
export declare function authoritativeAbortReason(error: unknown, timeoutSignal: AbortSignal, callerSignal?: AbortSignal): unknown;
|
|
11
|
+
//# sourceMappingURL=abort-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-reason.d.ts","sourceRoot":"","sources":["../../../src/utils/abort-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,WAAW,EAC1B,YAAY,CAAC,EAAE,WAAW,GACzB,OAAO,CAOT"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `setTimeout`-based delay that rejects as soon as `signal` aborts, with the
|
|
3
|
+
* signal's reason — so retry backoffs unwind immediately on a caller cancel or
|
|
4
|
+
* dispose instead of waiting out the full wait. Resolves normally when `ms`
|
|
5
|
+
* elapses first (the abort listener is detached, so a long-lived signal reused
|
|
6
|
+
* across many delays does not accumulate dead listeners).
|
|
7
|
+
*/
|
|
8
|
+
export declare function abortableDelay(ms: number, signal?: AbortSignal): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=abortable-delay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abortable-delay.d.ts","sourceRoot":"","sources":["../../../src/utils/abortable-delay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9E"}
|
package/dist/esm/ai-provider.js
CHANGED
|
@@ -57,6 +57,7 @@ export function createAIProvider(config) {
|
|
|
57
57
|
const transport = new AnthropicTransport({
|
|
58
58
|
model: config.model,
|
|
59
59
|
timeout: config.timeout,
|
|
60
|
+
stallTimeout: config.stallTimeout,
|
|
60
61
|
serverEndpoint: config.serverEndpoint,
|
|
61
62
|
apiKey: config.apiKey,
|
|
62
63
|
maxTokens: config.maxTokens,
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { SUPPORTED_ANTHROPIC_MODEL_IDS, } from '../types';
|
|
3
|
+
import { authoritativeAbortReason } from '../utils/abort-reason';
|
|
4
|
+
import { abortableDelay } from '../utils/abortable-delay';
|
|
3
5
|
import { combineSignals } from '../utils/combine-signals';
|
|
4
6
|
import { logger } from '../utils/logger';
|
|
5
7
|
import { scaleTemperature } from '../utils/temperature';
|
|
6
8
|
const ANTHROPIC_DIRECT_URL = 'https://api.anthropic.com/v1/messages';
|
|
7
9
|
const ANTHROPIC_API_VERSION = '2023-06-01';
|
|
8
10
|
const DEFAULT_MODEL = 'claude-haiku-4-5-20251001';
|
|
9
|
-
const DEFAULT_TIMEOUT =
|
|
11
|
+
const DEFAULT_TIMEOUT = 300000; // healthy >200s generations observed at 128k max_tokens; wall clock is a last resort
|
|
12
|
+
const DEFAULT_STALL_TIMEOUT = 30000; // inactivity window on the framed proxy path; pings arrive every 5s
|
|
10
13
|
const DEFAULT_MAX_TOKENS = 4096;
|
|
11
14
|
/** Anthropic's native default + ceiling temperature — https://docs.claude.com/en/api/messages */
|
|
12
15
|
const ANTHROPIC_DEFAULT_TEMPERATURE = 1;
|
|
@@ -154,7 +157,7 @@ export class ResponseTruncatedError extends Error {
|
|
|
154
157
|
*/
|
|
155
158
|
export class AnthropicTransport {
|
|
156
159
|
constructor(config = {}) {
|
|
157
|
-
var _a, _b, _c;
|
|
160
|
+
var _a, _b, _c, _d;
|
|
158
161
|
/**
|
|
159
162
|
* Estimated USD cost accumulated across every successful request on this
|
|
160
163
|
* transport instance. Convenience accessor for non-chat consumers
|
|
@@ -181,9 +184,10 @@ export class AnthropicTransport {
|
|
|
181
184
|
logger.warn('AnthropicTransport: using claude-opus-4-7 — significantly higher cost; reserve for tasks where Sonnet reliability is insufficient.');
|
|
182
185
|
}
|
|
183
186
|
this.timeout = (_b = config.timeout) !== null && _b !== void 0 ? _b : DEFAULT_TIMEOUT;
|
|
187
|
+
this.stallTimeout = (_c = config.stallTimeout) !== null && _c !== void 0 ? _c : DEFAULT_STALL_TIMEOUT;
|
|
184
188
|
this.apiKey = config.apiKey;
|
|
185
189
|
this.serverEndpoint = config.serverEndpoint;
|
|
186
|
-
this.maxTokens = (
|
|
190
|
+
this.maxTokens = (_d = config.maxTokens) !== null && _d !== void 0 ? _d : DEFAULT_MAX_TOKENS;
|
|
187
191
|
}
|
|
188
192
|
getConfig() {
|
|
189
193
|
return {
|
|
@@ -570,7 +574,9 @@ export class AnthropicTransport {
|
|
|
570
574
|
if (this.serverEndpoint) {
|
|
571
575
|
return {
|
|
572
576
|
url: this.serverEndpoint,
|
|
573
|
-
|
|
577
|
+
// Opt in to the proxy's NDJSON heartbeat framing. An old proxy ignores
|
|
578
|
+
// this and returns plain JSON — see the Content-Type branch in `post`.
|
|
579
|
+
headers: { 'Content-Type': 'application/json', Accept: 'application/x-ndjson' },
|
|
574
580
|
credentials: 'include',
|
|
575
581
|
};
|
|
576
582
|
}
|
|
@@ -579,12 +585,23 @@ export class AnthropicTransport {
|
|
|
579
585
|
}
|
|
580
586
|
post(body, signal) {
|
|
581
587
|
return __awaiter(this, void 0, void 0, function* () {
|
|
588
|
+
var _a, _b, _c, _d;
|
|
582
589
|
const { url, headers, credentials } = this.buildEndpoint();
|
|
583
590
|
// Sequential retries are intentional — each attempt depends on the previous response.
|
|
584
591
|
/* oxlint-disable no-await-in-loop */
|
|
585
592
|
for (let attempt = 0; attempt <= AnthropicTransport.MAX_RETRIES; attempt += 1) {
|
|
586
593
|
const timeoutController = new AbortController();
|
|
587
|
-
|
|
594
|
+
// Wall clock for connect/headers (and the whole body on the legacy JSON
|
|
595
|
+
// path). The framed path swaps it for the inactivity timer below once the
|
|
596
|
+
// heartbeat body starts streaming.
|
|
597
|
+
let timeoutId = setTimeout(() => timeoutController.abort(new DOMException('Anthropic request timed out', 'TimeoutError')), this.timeout);
|
|
598
|
+
// Re-armed on every received chunk. With proxy pings every 5s it only fires
|
|
599
|
+
// when the proxy/network actually dies — a framed body that keeps streaming
|
|
600
|
+
// has no wall cap (max_tokens bounds generation; the proxy watches upstream).
|
|
601
|
+
const rearmStallTimer = () => {
|
|
602
|
+
clearTimeout(timeoutId);
|
|
603
|
+
timeoutId = setTimeout(() => timeoutController.abort(new DOMException(`Anthropic request stalled (no data for ${this.stallTimeout}ms)`, 'TimeoutError')), this.stallTimeout);
|
|
604
|
+
};
|
|
588
605
|
// Combine so BOTH the local timeout and an optional caller signal can
|
|
589
606
|
// abort the fetch. A plain `signal ?? timeoutController.signal` would
|
|
590
607
|
// silently disarm the timeout whenever a caller signal was supplied.
|
|
@@ -594,41 +611,138 @@ export class AnthropicTransport {
|
|
|
594
611
|
signal,
|
|
595
612
|
timeoutController.signal,
|
|
596
613
|
]);
|
|
597
|
-
|
|
614
|
+
// The finally guards the WHOLE attempt — body reads included. Disarming on
|
|
615
|
+
// headers alone left `response.json()` with no deadline and no caller abort.
|
|
598
616
|
try {
|
|
599
|
-
response = yield fetch(url, {
|
|
617
|
+
const response = yield fetch(url, {
|
|
600
618
|
method: 'POST',
|
|
601
619
|
headers,
|
|
602
620
|
body: JSON.stringify(body),
|
|
603
621
|
signal: combinedSignal,
|
|
604
622
|
credentials,
|
|
605
623
|
});
|
|
624
|
+
if (AnthropicTransport.RETRYABLE_STATUSES.includes(response.status) &&
|
|
625
|
+
attempt < AnthropicTransport.MAX_RETRIES) {
|
|
626
|
+
logger.warn(`AnthropicTransport: retryable status ${response.status}, retrying (attempt ${attempt + 1}/${AnthropicTransport.MAX_RETRIES})`);
|
|
627
|
+
clearTimeout(timeoutId); // this attempt is over — don't let its timer tick through the backoff
|
|
628
|
+
yield AnthropicTransport.backoff(attempt, signal);
|
|
629
|
+
continue;
|
|
630
|
+
}
|
|
631
|
+
if (!response.ok) {
|
|
632
|
+
const err = yield response.text();
|
|
633
|
+
throw new Error(`Anthropic request error ${response.status}: ${err}`);
|
|
634
|
+
}
|
|
635
|
+
// The proxy streams NDJSON heartbeat frames when it supports them; an old
|
|
636
|
+
// proxy ignores our Accept header and returns plain JSON, so branch on
|
|
637
|
+
// what actually came back.
|
|
638
|
+
if (((_b = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type')) === null || _b === void 0 ? void 0 : _b.includes('application/x-ndjson')) &&
|
|
639
|
+
response.body) {
|
|
640
|
+
rearmStallTimer();
|
|
641
|
+
const frame = yield this.readFramedBody(response.body, rearmStallTimer);
|
|
642
|
+
if (frame.t === 'ok')
|
|
643
|
+
return frame.body;
|
|
644
|
+
// An in-band retryable status joins the same attempt/backoff ladder as
|
|
645
|
+
// its HTTP-status equivalent (shared attempt counter).
|
|
646
|
+
if (AnthropicTransport.RETRYABLE_STATUSES.includes(frame.status) &&
|
|
647
|
+
attempt < AnthropicTransport.MAX_RETRIES) {
|
|
648
|
+
logger.warn(`AnthropicTransport: retryable status ${frame.status} (err frame), retrying (attempt ${attempt + 1}/${AnthropicTransport.MAX_RETRIES})`);
|
|
649
|
+
clearTimeout(timeoutId); // disarm the stall timer — the stream is done, only the backoff remains
|
|
650
|
+
yield AnthropicTransport.backoff(attempt, signal);
|
|
651
|
+
continue;
|
|
652
|
+
}
|
|
653
|
+
if (frame.code === 'UPSTREAM_STALLED') {
|
|
654
|
+
// The proxy watchdog saw no upstream data — same tagged shape as a
|
|
655
|
+
// local stall, so the driver's TimeoutError branch handles both.
|
|
656
|
+
throw new DOMException(`Anthropic request stalled: ${(_c = frame.error) !== null && _c !== void 0 ? _c : 'no upstream data'}`, 'TimeoutError');
|
|
657
|
+
}
|
|
658
|
+
throw new Error(`Anthropic request error ${frame.status}: ${(_d = frame.error) !== null && _d !== void 0 ? _d : JSON.stringify(frame.details)}`);
|
|
659
|
+
}
|
|
660
|
+
return (yield response.json());
|
|
606
661
|
}
|
|
607
662
|
catch (e) {
|
|
663
|
+
// Some engines reject an aborted read with a generic AbortError instead
|
|
664
|
+
// of the signal's reason — rethrow the authoritative one so a timeout
|
|
665
|
+
// stays a tagged TimeoutError rather than looking like a user cancel.
|
|
666
|
+
throw authoritativeAbortReason(e, timeoutController.signal, signal);
|
|
667
|
+
}
|
|
668
|
+
finally {
|
|
608
669
|
clearTimeout(timeoutId);
|
|
609
670
|
dispose();
|
|
610
|
-
throw e;
|
|
611
|
-
}
|
|
612
|
-
clearTimeout(timeoutId);
|
|
613
|
-
dispose();
|
|
614
|
-
if (AnthropicTransport.RETRYABLE_STATUSES.includes(response.status) &&
|
|
615
|
-
attempt < AnthropicTransport.MAX_RETRIES) {
|
|
616
|
-
// Exponential backoff: 1s, 2s, 4s, 8s, 16s
|
|
617
|
-
yield new Promise((resolve) => {
|
|
618
|
-
setTimeout(resolve, AnthropicTransport.BACKOFF_BASE_MS * (1 << attempt));
|
|
619
|
-
});
|
|
620
|
-
continue;
|
|
621
|
-
}
|
|
622
|
-
if (!response.ok) {
|
|
623
|
-
const err = yield response.text();
|
|
624
|
-
throw new Error(`Anthropic request error ${response.status}: ${err}`);
|
|
625
671
|
}
|
|
626
|
-
return (yield response.json());
|
|
627
672
|
}
|
|
628
673
|
/* oxlint-enable no-await-in-loop */
|
|
629
674
|
throw new Error('Anthropic request failed: max retries exceeded');
|
|
630
675
|
});
|
|
631
676
|
}
|
|
677
|
+
/** Exponential backoff between retry attempts: 1s, 2s, 4s, 8s, 16s.
|
|
678
|
+
* Abortable so a caller cancel mid-wait unwinds immediately. */
|
|
679
|
+
static backoff(attempt, signal) {
|
|
680
|
+
return abortableDelay(AnthropicTransport.BACKOFF_BASE_MS * (1 << attempt), signal);
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Read an NDJSON heartbeat body to its terminal frame. Buffers partial lines
|
|
684
|
+
* across chunks, tolerates blank lines, and skips unknown frame types — pings
|
|
685
|
+
* matter only as activity, which `onChunk` reports to the stall timer. An
|
|
686
|
+
* abort (stall timer or caller signal) rejects the pending `read()` with the
|
|
687
|
+
* abort reason, which propagates to the caller's finally cleanup.
|
|
688
|
+
*/
|
|
689
|
+
readFramedBody(stream, onChunk) {
|
|
690
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
691
|
+
const reader = stream.getReader();
|
|
692
|
+
const decoder = new TextDecoder();
|
|
693
|
+
let buffer = '';
|
|
694
|
+
const parseLine = (line) => {
|
|
695
|
+
if (!line)
|
|
696
|
+
return undefined;
|
|
697
|
+
let frame;
|
|
698
|
+
try {
|
|
699
|
+
frame = JSON.parse(line);
|
|
700
|
+
}
|
|
701
|
+
catch (_a) {
|
|
702
|
+
throw new Error(`Anthropic proxy sent a malformed frame: ${line.slice(0, AnthropicTransport.MALFORMED_FRAME_PREVIEW_CHARS)}`);
|
|
703
|
+
}
|
|
704
|
+
if (frame.t === 'ok') {
|
|
705
|
+
if (frame.body == null) {
|
|
706
|
+
throw new Error('Anthropic proxy sent an ok frame without a body');
|
|
707
|
+
}
|
|
708
|
+
return frame;
|
|
709
|
+
}
|
|
710
|
+
if (frame.t === 'err') {
|
|
711
|
+
return frame;
|
|
712
|
+
}
|
|
713
|
+
return undefined; // ping / unknown frame types (forward compat)
|
|
714
|
+
};
|
|
715
|
+
try {
|
|
716
|
+
for (;;) {
|
|
717
|
+
// oxlint-disable-next-line no-await-in-loop -- sequential stream reads
|
|
718
|
+
const { done, value } = yield reader.read();
|
|
719
|
+
if (done)
|
|
720
|
+
break;
|
|
721
|
+
onChunk();
|
|
722
|
+
buffer += decoder.decode(value, { stream: true });
|
|
723
|
+
let newline = buffer.indexOf('\n');
|
|
724
|
+
while (newline !== -1) {
|
|
725
|
+
const line = buffer.slice(0, newline).trim();
|
|
726
|
+
buffer = buffer.slice(newline + 1);
|
|
727
|
+
const frame = parseLine(line);
|
|
728
|
+
if (frame)
|
|
729
|
+
return frame;
|
|
730
|
+
newline = buffer.indexOf('\n');
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
// Tolerate a final terminal frame missing its LF.
|
|
734
|
+
const frame = parseLine((buffer + decoder.decode()).trim());
|
|
735
|
+
if (frame)
|
|
736
|
+
return frame;
|
|
737
|
+
throw new Error('Anthropic proxy stream ended without a terminal frame');
|
|
738
|
+
}
|
|
739
|
+
finally {
|
|
740
|
+
// Stop the stream on early return, error, or abort; cancel rejects on an
|
|
741
|
+
// already-errored stream, which is fine to ignore.
|
|
742
|
+
void reader.cancel().catch(() => { });
|
|
743
|
+
}
|
|
744
|
+
});
|
|
745
|
+
}
|
|
632
746
|
}
|
|
633
747
|
// ── Private helpers ────────────────────────────────────────────────────
|
|
634
748
|
AnthropicTransport.TOKENS_PER_MILLION = 1000000;
|
|
@@ -643,3 +757,5 @@ AnthropicTransport.RETRYABLE_STATUSES = [
|
|
|
643
757
|
AnthropicTransport.OVERLOADED_STATUS,
|
|
644
758
|
];
|
|
645
759
|
AnthropicTransport.BACKOFF_BASE_MS = 1000;
|
|
760
|
+
/** Cap on how much of a malformed proxy frame is quoted in the error message. */
|
|
761
|
+
AnthropicTransport.MALFORMED_FRAME_PREVIEW_CHARS = 120;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { SUPPORTED_GEMINI_MODEL_IDS, } from '../types';
|
|
3
|
+
import { authoritativeAbortReason } from '../utils/abort-reason';
|
|
4
|
+
import { abortableDelay } from '../utils/abortable-delay';
|
|
3
5
|
import { combineSignals } from '../utils/combine-signals';
|
|
4
6
|
import { logger } from '../utils/logger';
|
|
5
7
|
import { scaleTemperature } from '../utils/temperature';
|
|
@@ -7,7 +9,7 @@ import { ResponseTruncatedError } from './anthropic-transport';
|
|
|
7
9
|
import { repairMalformedFunctionCall } from './gemini-malformed-call';
|
|
8
10
|
const GEMINI_DIRECT_URL = (model) => `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent`;
|
|
9
11
|
const DEFAULT_MODEL = 'gemini-2.5-flash-lite';
|
|
10
|
-
const DEFAULT_TIMEOUT =
|
|
12
|
+
const DEFAULT_TIMEOUT = 300000; // healthy >200s generations observed at 128k max_tokens; wall clock is a last resort
|
|
11
13
|
/**
|
|
12
14
|
* Maximum input context window (tokens) per supported Gemini model.
|
|
13
15
|
* Source: https://ai.google.dev/gemini-api/docs/models
|
|
@@ -578,46 +580,41 @@ export class GeminiTransport {
|
|
|
578
580
|
signal,
|
|
579
581
|
timeoutController.signal,
|
|
580
582
|
]);
|
|
581
|
-
|
|
583
|
+
// The finally guards the WHOLE attempt — body reads included. Disarming on
|
|
584
|
+
// headers alone left `response.json()` with no deadline and no caller abort.
|
|
582
585
|
try {
|
|
583
|
-
response = yield fetch(url, {
|
|
586
|
+
const response = yield fetch(url, {
|
|
584
587
|
method: 'POST',
|
|
585
588
|
headers: { 'Content-Type': 'application/json' },
|
|
586
589
|
body: JSON.stringify(payload),
|
|
587
590
|
signal: combinedSignal,
|
|
588
591
|
credentials,
|
|
589
592
|
});
|
|
593
|
+
if (GeminiTransport.RETRYABLE_STATUSES.includes(response.status) &&
|
|
594
|
+
attempt < GeminiTransport.MAX_RETRIES) {
|
|
595
|
+
logger.warn(`GeminiTransport: retryable status ${response.status}, retrying (attempt ${attempt + 1}/${GeminiTransport.MAX_RETRIES})`);
|
|
596
|
+
// Exponential backoff: 1s, 2s, 4s, 8s, 16s — abortable, so a caller cancel
|
|
597
|
+
// mid-wait rejects promptly instead of being ignored until the next fetch.
|
|
598
|
+
clearTimeout(timeoutId); // this attempt is over — don't let its timer tick through the backoff
|
|
599
|
+
yield abortableDelay(GeminiTransport.BACKOFF_BASE_MS * (1 << attempt), signal);
|
|
600
|
+
continue;
|
|
601
|
+
}
|
|
602
|
+
if (!response.ok) {
|
|
603
|
+
const err = yield response.text();
|
|
604
|
+
throw new Error(`Gemini request error ${response.status}: ${err}`);
|
|
605
|
+
}
|
|
606
|
+
return (yield response.json());
|
|
590
607
|
}
|
|
591
608
|
catch (e) {
|
|
609
|
+
// Some engines reject an aborted read with a generic AbortError instead
|
|
610
|
+
// of the signal's reason — rethrow the authoritative one so a timeout
|
|
611
|
+
// stays a tagged TimeoutError rather than looking like a user cancel.
|
|
612
|
+
throw authoritativeAbortReason(e, timeoutController.signal, signal);
|
|
613
|
+
}
|
|
614
|
+
finally {
|
|
592
615
|
clearTimeout(timeoutId);
|
|
593
616
|
dispose();
|
|
594
|
-
throw e;
|
|
595
|
-
}
|
|
596
|
-
clearTimeout(timeoutId);
|
|
597
|
-
dispose();
|
|
598
|
-
if (GeminiTransport.RETRYABLE_STATUSES.includes(response.status) &&
|
|
599
|
-
attempt < GeminiTransport.MAX_RETRIES) {
|
|
600
|
-
// Exponential backoff: 1s, 2s, 4s, 8s, 16s — abortable, so a caller cancel
|
|
601
|
-
// mid-wait rejects promptly instead of being ignored until the next fetch.
|
|
602
|
-
yield new Promise((resolve, reject) => {
|
|
603
|
-
const timer = setTimeout(resolve, GeminiTransport.BACKOFF_BASE_MS * (1 << attempt));
|
|
604
|
-
const onAbort = () => {
|
|
605
|
-
var _a;
|
|
606
|
-
clearTimeout(timer);
|
|
607
|
-
reject((_a = signal === null || signal === void 0 ? void 0 : signal.reason) !== null && _a !== void 0 ? _a : new DOMException('The operation was aborted.', 'AbortError'));
|
|
608
|
-
};
|
|
609
|
-
if (signal === null || signal === void 0 ? void 0 : signal.aborted)
|
|
610
|
-
onAbort();
|
|
611
|
-
else
|
|
612
|
-
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort, { once: true });
|
|
613
|
-
});
|
|
614
|
-
continue;
|
|
615
|
-
}
|
|
616
|
-
if (!response.ok) {
|
|
617
|
-
const err = yield response.text();
|
|
618
|
-
throw new Error(`Gemini request error ${response.status}: ${err}`);
|
|
619
617
|
}
|
|
620
|
-
return (yield response.json());
|
|
621
618
|
}
|
|
622
619
|
/* oxlint-enable no-await-in-loop */
|
|
623
620
|
throw new Error('Gemini request failed: max retries exceeded');
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the authoritative reason behind an abort-shaped rejection.
|
|
3
|
+
*
|
|
4
|
+
* Chromium/Firefox reject an aborted fetch/body read with the signal's
|
|
5
|
+
* `reason`, but older WebKit rejects with a generic `AbortError` — which would
|
|
6
|
+
* send a transport timeout down a caller's user-cancel path. When `error` is
|
|
7
|
+
* abort-shaped, prefer the timeout signal's reason (the tagged TimeoutError),
|
|
8
|
+
* then the caller signal's; anything else passes through untouched.
|
|
9
|
+
*/
|
|
10
|
+
export function authoritativeAbortReason(error, timeoutSignal, callerSignal) {
|
|
11
|
+
const abortShaped = error instanceof DOMException && (error.name === 'AbortError' || error.name === 'TimeoutError');
|
|
12
|
+
if (!abortShaped)
|
|
13
|
+
return error;
|
|
14
|
+
if (timeoutSignal.aborted)
|
|
15
|
+
return timeoutSignal.reason;
|
|
16
|
+
if (callerSignal === null || callerSignal === void 0 ? void 0 : callerSignal.aborted)
|
|
17
|
+
return callerSignal.reason;
|
|
18
|
+
return error;
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `setTimeout`-based delay that rejects as soon as `signal` aborts, with the
|
|
3
|
+
* signal's reason — so retry backoffs unwind immediately on a caller cancel or
|
|
4
|
+
* dispose instead of waiting out the full wait. Resolves normally when `ms`
|
|
5
|
+
* elapses first (the abort listener is detached, so a long-lived signal reused
|
|
6
|
+
* across many delays does not accumulate dead listeners).
|
|
7
|
+
*/
|
|
8
|
+
export function abortableDelay(ms, signal) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const abortReason = () => { var _a; return (_a = signal === null || signal === void 0 ? void 0 : signal.reason) !== null && _a !== void 0 ? _a : new DOMException('The operation was aborted.', 'AbortError'); };
|
|
11
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
12
|
+
reject(abortReason());
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const onAbort = () => {
|
|
16
|
+
clearTimeout(timer);
|
|
17
|
+
reject(abortReason());
|
|
18
|
+
};
|
|
19
|
+
const timer = setTimeout(() => {
|
|
20
|
+
signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
|
|
21
|
+
resolve();
|
|
22
|
+
}, ms);
|
|
23
|
+
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort, { once: true });
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -9171,7 +9171,7 @@
|
|
|
9171
9171
|
{
|
|
9172
9172
|
"kind": "TypeAlias",
|
|
9173
9173
|
"canonicalReference": "@genesislcap/foundation-ai!SubAgentFailureReason:type",
|
|
9174
|
-
"docComment": "/**\n * Why a sub-agent run ended without producing a structured result via `completeSubAgent`. Surfaced on the `{ ok: false }` branch of `requestSubAgent` so the parent tool handler can decide how to recover.\n *\n * - `max_iterations` — the sub-agent's tool loop ended without calling its completion tool (hit the iteration cap, or — defensively — a provider ignored forced tool use and returned a free-text turn). - `malformed_tool_call` — the provider repeatedly returned an unparseable tool call (e.g. Gemini `MALFORMED_FUNCTION_CALL`) after retries. - `empty_response` — the model repeatedly returned an empty response after retries. - `unknown_tool_limit` — the model repeatedly called tools that aren't available to it. - `timeout` — the sub-agent did not finish within {@link SubAgentRequestOptions.timeoutMs}
|
|
9174
|
+
"docComment": "/**\n * Why a sub-agent run ended without producing a structured result via `completeSubAgent`. Surfaced on the `{ ok: false }` branch of `requestSubAgent` so the parent tool handler can decide how to recover.\n *\n * - `max_iterations` — the sub-agent's tool loop ended without calling its completion tool (hit the iteration cap, or — defensively — a provider ignored forced tool use and returned a free-text turn). - `malformed_tool_call` — the provider repeatedly returned an unparseable tool call (e.g. Gemini `MALFORMED_FUNCTION_CALL`) after retries. - `empty_response` — the model repeatedly returned an empty response after retries. - `unknown_tool_limit` — the model repeatedly called tools that aren't available to it. - `timeout` — the sub-agent did not finish within {@link SubAgentRequestOptions.timeoutMs} (its run was aborted), or a transport request timed out inside the child's own run. - `response_truncated` — a turn stopped at the provider's output-token cap with an incomplete tool call; deterministic, so it is not retried.\n *\n * @beta\n */\n",
|
|
9175
9175
|
"excerptTokens": [
|
|
9176
9176
|
{
|
|
9177
9177
|
"kind": "Content",
|
package/dist/foundation-ai.d.ts
CHANGED
|
@@ -82,6 +82,12 @@ export declare interface AIProvider {
|
|
|
82
82
|
declare interface AIProviderConfig {
|
|
83
83
|
model?: string;
|
|
84
84
|
timeout?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Inactivity window (ms) between streamed frames before a request is treated
|
|
87
|
+
* as stalled. Only meaningful for server-proxied transports with heartbeat
|
|
88
|
+
* framing (the Anthropic NDJSON proxy path); direct API calls ignore it.
|
|
89
|
+
*/
|
|
90
|
+
stallTimeout?: number;
|
|
85
91
|
/** Optional override for criteria interpretation capability. */
|
|
86
92
|
criteriaInstructions?: string;
|
|
87
93
|
}
|
|
@@ -256,6 +262,7 @@ declare interface AnthropicProviderConfig {
|
|
|
256
262
|
export declare class AnthropicTransport implements AITransport, ChatTransport, CostReportingTransport {
|
|
257
263
|
private readonly model;
|
|
258
264
|
private readonly timeout;
|
|
265
|
+
private readonly stallTimeout;
|
|
259
266
|
private readonly apiKey;
|
|
260
267
|
private readonly serverEndpoint;
|
|
261
268
|
private readonly maxTokens;
|
|
@@ -335,7 +342,20 @@ export declare class AnthropicTransport implements AITransport, ChatTransport, C
|
|
|
335
342
|
private static readonly OVERLOADED_STATUS;
|
|
336
343
|
private static readonly RETRYABLE_STATUSES;
|
|
337
344
|
private static readonly BACKOFF_BASE_MS;
|
|
345
|
+
/** Cap on how much of a malformed proxy frame is quoted in the error message. */
|
|
346
|
+
private static readonly MALFORMED_FRAME_PREVIEW_CHARS;
|
|
338
347
|
private post;
|
|
348
|
+
/** Exponential backoff between retry attempts: 1s, 2s, 4s, 8s, 16s.
|
|
349
|
+
* Abortable so a caller cancel mid-wait unwinds immediately. */
|
|
350
|
+
private static backoff;
|
|
351
|
+
/**
|
|
352
|
+
* Read an NDJSON heartbeat body to its terminal frame. Buffers partial lines
|
|
353
|
+
* across chunks, tolerates blank lines, and skips unknown frame types — pings
|
|
354
|
+
* matter only as activity, which `onChunk` reports to the stall timer. An
|
|
355
|
+
* abort (stall timer or caller signal) rejects the pending `read()` with the
|
|
356
|
+
* abort reason, which propagates to the caller's finally cleanup.
|
|
357
|
+
*/
|
|
358
|
+
private readFramedBody;
|
|
339
359
|
}
|
|
340
360
|
|
|
341
361
|
declare interface AnthropicTransportConfig {
|
|
@@ -345,6 +365,12 @@ declare interface AnthropicTransportConfig {
|
|
|
345
365
|
*/
|
|
346
366
|
model?: AnthropicModelId;
|
|
347
367
|
timeout?: number;
|
|
368
|
+
/**
|
|
369
|
+
* Inactivity window (ms) on the server-proxied heartbeat path: once the framed
|
|
370
|
+
* body starts streaming, the request aborts when no frame/chunk arrives for this
|
|
371
|
+
* long. Ignored on direct API calls and legacy JSON responses. Defaults to 30_000.
|
|
372
|
+
*/
|
|
373
|
+
stallTimeout?: number;
|
|
348
374
|
/**
|
|
349
375
|
* API key for direct calls to the Anthropic API.
|
|
350
376
|
* Must be provided explicitly; callers are responsible for reading it from
|
|
@@ -1996,7 +2022,8 @@ declare interface StructuredPromptOptions {
|
|
|
1996
2022
|
* - `unknown_tool_limit` — the model repeatedly called tools that aren't
|
|
1997
2023
|
* available to it.
|
|
1998
2024
|
* - `timeout` — the sub-agent did not finish within
|
|
1999
|
-
* {@link SubAgentRequestOptions.timeoutMs}
|
|
2025
|
+
* {@link SubAgentRequestOptions.timeoutMs} (its run was aborted), or a
|
|
2026
|
+
* transport request timed out inside the child's own run.
|
|
2000
2027
|
* - `response_truncated` — a turn stopped at the provider's output-token cap with
|
|
2001
2028
|
* an incomplete tool call; deterministic, so it is not retried.
|
|
2002
2029
|
*
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-ai",
|
|
3
3
|
"description": "Genesis Foundation AI - Provider-agnostic AI configuration and shared utilities",
|
|
4
|
-
"version": "14.489.0",
|
|
4
|
+
"version": "14.489.1-alpha-559fa0f.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
|
7
7
|
"main": "dist/esm/index.js",
|
|
@@ -52,17 +52,17 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@genesislcap/foundation-testing": "14.489.0",
|
|
56
|
-
"@genesislcap/genx": "14.489.0",
|
|
57
|
-
"@genesislcap/rollup-builder": "14.489.0",
|
|
58
|
-
"@genesislcap/ts-builder": "14.489.0",
|
|
59
|
-
"@genesislcap/uvu-playwright-builder": "14.489.0",
|
|
60
|
-
"@genesislcap/vite-builder": "14.489.0",
|
|
61
|
-
"@genesislcap/webpack-builder": "14.489.0"
|
|
55
|
+
"@genesislcap/foundation-testing": "14.489.1-alpha-559fa0f.0",
|
|
56
|
+
"@genesislcap/genx": "14.489.1-alpha-559fa0f.0",
|
|
57
|
+
"@genesislcap/rollup-builder": "14.489.1-alpha-559fa0f.0",
|
|
58
|
+
"@genesislcap/ts-builder": "14.489.1-alpha-559fa0f.0",
|
|
59
|
+
"@genesislcap/uvu-playwright-builder": "14.489.1-alpha-559fa0f.0",
|
|
60
|
+
"@genesislcap/vite-builder": "14.489.1-alpha-559fa0f.0",
|
|
61
|
+
"@genesislcap/webpack-builder": "14.489.1-alpha-559fa0f.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@genesislcap/foundation-logger": "14.489.0",
|
|
65
|
-
"@genesislcap/foundation-utils": "14.489.0",
|
|
64
|
+
"@genesislcap/foundation-logger": "14.489.1-alpha-559fa0f.0",
|
|
65
|
+
"@genesislcap/foundation-utils": "14.489.1-alpha-559fa0f.0",
|
|
66
66
|
"@microsoft/fast-foundation": "2.50.0"
|
|
67
67
|
},
|
|
68
68
|
"repository": {
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"publishConfig": {
|
|
74
74
|
"access": "public"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "cee812f898f7fcd2a2ca68be2880bbf55a45acf2"
|
|
77
77
|
}
|