@holokai/holo-sdk 1.6.0 → 1.9.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/client/builder.d.ts +36 -3
- package/dist/client/builder.d.ts.map +1 -1
- package/dist/client/builder.js +57 -10
- package/dist/client/builder.js.map +1 -1
- package/dist/client/client.d.ts +15 -3
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +60 -25
- package/dist/client/client.js.map +1 -1
- package/dist/client/errors.d.ts +10 -2
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +15 -3
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/merge.d.ts +5 -0
- package/dist/client/merge.d.ts.map +1 -1
- package/dist/client/merge.js +13 -0
- package/dist/client/merge.js.map +1 -1
- package/dist/client/runner.d.ts +2 -0
- package/dist/client/runner.d.ts.map +1 -1
- package/dist/client/runner.js.map +1 -1
- package/dist/client/sse.d.ts.map +1 -1
- package/dist/client/sse.js +4 -0
- package/dist/client/sse.js.map +1 -1
- package/dist/client/stream.d.ts +11 -1
- package/dist/client/stream.d.ts.map +1 -1
- package/dist/client/stream.js +114 -12
- package/dist/client/stream.js.map +1 -1
- package/dist/client/transport.d.ts +11 -0
- package/dist/client/transport.d.ts.map +1 -1
- package/dist/client/transport.js +25 -9
- package/dist/client/transport.js.map +1 -1
- package/dist/client/types.d.ts +35 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/json-output.d.ts +36 -0
- package/dist/core/json-output.d.ts.map +1 -0
- package/dist/core/json-output.js +108 -0
- package/dist/core/json-output.js.map +1 -0
- package/dist/core/logger.d.ts +2 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/redact-binary.d.ts +6 -0
- package/dist/core/redact-binary.d.ts.map +1 -0
- package/dist/core/redact-binary.js +23 -0
- package/dist/core/redact-binary.js.map +1 -0
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/plugin/base.d.ts +7 -10
- package/dist/plugin/base.d.ts.map +1 -1
- package/dist/plugin/base.js +11 -24
- package/dist/plugin/base.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -0
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/pricing.d.ts +13 -0
- package/dist/plugin/pricing.d.ts.map +1 -0
- package/dist/plugin/pricing.js +70 -0
- package/dist/plugin/pricing.js.map +1 -0
- package/dist/provider/auditor/base.d.ts +10 -5
- package/dist/provider/auditor/base.d.ts.map +1 -1
- package/dist/provider/auditor/base.js +69 -16
- package/dist/provider/auditor/base.js.map +1 -1
- package/dist/provider/auditor/index.d.ts +2 -0
- package/dist/provider/auditor/index.d.ts.map +1 -1
- package/dist/provider/auditor/index.js +2 -0
- package/dist/provider/auditor/index.js.map +1 -1
- package/dist/provider/auditor/payload-shape.d.ts +2 -0
- package/dist/provider/auditor/payload-shape.d.ts.map +1 -0
- package/dist/provider/auditor/payload-shape.js +19 -0
- package/dist/provider/auditor/payload-shape.js.map +1 -0
- package/dist/provider/auditor/token-breakdown.d.ts +14 -0
- package/dist/provider/auditor/token-breakdown.d.ts.map +1 -0
- package/dist/provider/auditor/token-breakdown.js +50 -0
- package/dist/provider/auditor/token-breakdown.js.map +1 -0
- package/dist/provider/base.d.ts.map +1 -1
- package/dist/provider/base.js +39 -15
- package/dist/provider/base.js.map +1 -1
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +2 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/json-output.d.ts +22 -0
- package/dist/provider/json-output.d.ts.map +1 -0
- package/dist/provider/json-output.js +88 -0
- package/dist/provider/json-output.js.map +1 -0
- package/dist/provider/thinking.d.ts +79 -0
- package/dist/provider/thinking.d.ts.map +1 -0
- package/dist/provider/thinking.js +173 -0
- package/dist/provider/thinking.js.map +1 -0
- package/dist/provider/translator/translate-provider-events.d.ts.map +1 -1
- package/dist/provider/translator/translate-provider-events.js +11 -3
- package/dist/provider/translator/translate-provider-events.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/tokenizer.d.ts +0 -2
- package/dist/core/tokenizer.d.ts.map +0 -1
- package/dist/core/tokenizer.js +0 -12
- package/dist/core/tokenizer.js.map +0 -1
package/dist/client/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export { HoloRequestBuilder } from './builder.js';
|
|
|
3
3
|
export { HoloStream } from './stream.js';
|
|
4
4
|
export { HoloStreamAccumulator } from './merge.js';
|
|
5
5
|
export { HoloToolRunner } from './runner.js';
|
|
6
|
-
export { HoloApiError, HoloStreamError, HoloTimeoutError } from './errors.js';
|
|
6
|
+
export { HoloAbortError, HoloApiError, HoloStreamError, HoloTimeoutError } from './errors.js';
|
|
7
7
|
export { HoloOutput, getMessageText, getMessageReasoning, getMessageToolCalls, getMessageInvalidToolCalls, } from './output.js';
|
|
8
|
-
export type { HoloClientOptions, HoloChatParams, HoloModelInfo, HoloApplicationInfo, ModelSurfaceInfo, HoloGenerateParams, HoloEmbedParams, HoloEmbedResponse, HoloCountTokensParams, HoloCountTokensResponse, HoloModelListParams, } from './types.js';
|
|
8
|
+
export type { HoloClientOptions, HoloChatParams, HoloStreamOptions, HoloStreamProgress, HoloModelInfo, HoloApplicationInfo, ModelSurfaceInfo, HoloGenerateParams, HoloEmbedParams, HoloEmbedResponse, HoloCountTokensParams, HoloCountTokensResponse, HoloModelListParams, } from './types.js';
|
|
9
9
|
export type { HoloToolRunnerOptions, HoloToolCallInfo, HoloToolResult } from './runner.js';
|
|
10
10
|
export type { HoloThread, HoloThreadCreateParams, HoloThreadUpdateParams, HoloThreadListParams, HoloThreadMessage, HoloThreadMessageListParams, HoloPagedResponse, } from '@holokai/holo-types/holo';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AACzF,OAAO,EACH,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,GAC7B,MAAM,UAAU,CAAC;AAClB,YAAY,EACR,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,EAAC,MAAM,UAAU,CAAC;AACtF,YAAY,EACR,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,GACpB,MAAM,0BAA0B,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -3,6 +3,6 @@ export { HoloRequestBuilder } from './builder.js';
|
|
|
3
3
|
export { HoloStream } from './stream.js';
|
|
4
4
|
export { HoloStreamAccumulator } from './merge.js';
|
|
5
5
|
export { HoloToolRunner } from './runner.js';
|
|
6
|
-
export { HoloApiError, HoloStreamError, HoloTimeoutError } from './errors.js';
|
|
6
|
+
export { HoloAbortError, HoloApiError, HoloStreamError, HoloTimeoutError } from './errors.js';
|
|
7
7
|
export { HoloOutput, getMessageText, getMessageReasoning, getMessageToolCalls, getMessageInvalidToolCalls, } from './output.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AACzF,OAAO,EACH,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,GAC7B,MAAM,UAAU,CAAC"}
|
package/dist/client/merge.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { HoloResponse, HoloStreamEvent } from '@holokai/holo-types/holo';
|
|
2
|
+
import type { HoloStreamProgress } from './types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Accumulates {@link HoloStreamEvent} deltas into a complete {@link HoloResponse}.
|
|
4
5
|
*
|
|
@@ -15,12 +16,16 @@ export declare class HoloStreamAccumulator {
|
|
|
15
16
|
private invalidToolCalls;
|
|
16
17
|
private usage?;
|
|
17
18
|
private finishReason;
|
|
19
|
+
private outputChars;
|
|
20
|
+
private reasoningChars;
|
|
18
21
|
/** Process a single stream event, merging its data into the accumulated state. */
|
|
19
22
|
push(event: HoloStreamEvent): void;
|
|
20
23
|
/** Assemble all accumulated deltas into a complete {@link HoloResponse}. */
|
|
21
24
|
toResponse(): HoloResponse;
|
|
22
25
|
/** Return the concatenated text output accumulated so far. */
|
|
23
26
|
getText(): string;
|
|
27
|
+
/** Running size of what has arrived so far. */
|
|
28
|
+
get progress(): HoloStreamProgress;
|
|
24
29
|
private buildToolCallBlocks;
|
|
25
30
|
private buildToolCallProjections;
|
|
26
31
|
private parseArguments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAQR,YAAY,EACZ,eAAe,EAGlB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAQR,YAAY,EACZ,eAAe,EAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,SAAS,CAA0E;IAC3F,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,KAAK,CAAC,CAAY;IAC1B,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAE3B,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA0DlC,4EAA4E;IAC5E,UAAU,IAAI,YAAY;IAyD1B,8DAA8D;IAC9D,OAAO,IAAI,MAAM;IAIjB,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,kBAAkB,CAOjC;IAED,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,cAAc;CAYzB"}
|
package/dist/client/merge.js
CHANGED
|
@@ -14,6 +14,8 @@ export class HoloStreamAccumulator {
|
|
|
14
14
|
invalidToolCalls = [];
|
|
15
15
|
usage;
|
|
16
16
|
finishReason = null;
|
|
17
|
+
outputChars = 0;
|
|
18
|
+
reasoningChars = 0;
|
|
17
19
|
/** Process a single stream event, merging its data into the accumulated state. */
|
|
18
20
|
push(event) {
|
|
19
21
|
switch (event.type) {
|
|
@@ -28,11 +30,13 @@ export class HoloStreamAccumulator {
|
|
|
28
30
|
case 'response.output_text.delta':
|
|
29
31
|
if (event.delta) {
|
|
30
32
|
this.textParts.push(event.delta);
|
|
33
|
+
this.outputChars += event.delta.length;
|
|
31
34
|
}
|
|
32
35
|
break;
|
|
33
36
|
case 'response.reasoning.delta':
|
|
34
37
|
if (event.delta) {
|
|
35
38
|
this.reasoningParts.push(event.delta);
|
|
39
|
+
this.reasoningChars += event.delta.length;
|
|
36
40
|
}
|
|
37
41
|
break;
|
|
38
42
|
case 'response.tool_call.delta':
|
|
@@ -123,6 +127,15 @@ export class HoloStreamAccumulator {
|
|
|
123
127
|
getText() {
|
|
124
128
|
return this.textParts.join('');
|
|
125
129
|
}
|
|
130
|
+
/** Running size of what has arrived so far. */
|
|
131
|
+
get progress() {
|
|
132
|
+
return {
|
|
133
|
+
outputChars: this.outputChars,
|
|
134
|
+
reasoningChars: this.reasoningChars,
|
|
135
|
+
estimatedOutputTokens: Math.ceil(this.outputChars / 4),
|
|
136
|
+
estimatedReasoningTokens: Math.ceil(this.reasoningChars / 4),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
126
139
|
buildToolCallBlocks() {
|
|
127
140
|
const blocks = [];
|
|
128
141
|
for (const [, tc] of [...this.toolCalls.entries()].sort((a, b) => a[0] - b[0])) {
|
package/dist/client/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"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"}
|
package/dist/client/runner.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export interface HoloToolRunnerOptions {
|
|
|
50
50
|
tool_choice?: HoloToolChoice;
|
|
51
51
|
/** Maximum number of tool-call round-trips before returning the last response (default: {@link DEFAULT_MAX_TOOL_ITERATIONS}). */
|
|
52
52
|
maxIterations?: number;
|
|
53
|
+
/** Idle bound applied to every stream the runner opens — see {@link HoloStreamOptions.idleTimeoutMs}. */
|
|
54
|
+
idleTimeoutMs?: number;
|
|
53
55
|
}
|
|
54
56
|
type EventHandler<T> = (data: T) => void;
|
|
55
57
|
type RunnerEventMap = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/client/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAC/G,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAG5C,wFAAwF;AACxF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,8FAA8F;IAC9F,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,iIAAiI;IACjI,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzC,KAAK,cAAc,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAC,CAAC;IAClD,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAC,CAAC;IACnD,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG,MAAM,cAAc,CAAC;AAE5C;;;;;;;GAOG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAyB;gBAElC,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,qBAAqB;IAKrG,6DAA6D;IAC7D,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAOlF,yDAAyD;IACzD,KAAK,IAAI,IAAI;IAMb,qGAAqG;IAC/F,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAoF5C,OAAO,CAAC,IAAI;CAWf"}
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/client/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAC/G,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAG5C,wFAAwF;AACxF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,8FAA8F;IAC9F,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,iIAAiI;IACjI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzC,KAAK,cAAc,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAC,CAAC;IAClD,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAC,CAAC;IACnD,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG,MAAM,cAAc,CAAC;AAE5C;;;;;;;GAOG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAyB;gBAElC,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,qBAAqB;IAKrG,6DAA6D;IAC7D,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAOlF,yDAAyD;IACzD,KAAK,IAAI,IAAI;IAMb,qGAAqG;IAC/F,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAoF5C,OAAO,CAAC,IAAI;CAWf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/client/runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,wFAAwF;AACxF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/client/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/client/sse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/client/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAE9D,wBAAuB,cAAc,CACjC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,GACrB,cAAc,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/client/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAE9D,wBAAuB,cAAc,CACjC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,GACrB,cAAc,CAAC,eAAe,CAAC,CAuCjC"}
|
package/dist/client/sse.js
CHANGED
|
@@ -28,6 +28,10 @@ export async function* parseSSEStream(body, signal) {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
finally {
|
|
31
|
+
// Cancel, not just release: a consumer that breaks out early (the stream completed, a
|
|
32
|
+
// handler threw, the caller aborted) otherwise leaves the response body open against a
|
|
33
|
+
// server that does not close it itself.
|
|
34
|
+
await reader.cancel().catch(() => { });
|
|
31
35
|
reader.releaseLock();
|
|
32
36
|
}
|
|
33
37
|
}
|
package/dist/client/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/client/sse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/client/sse.ts"],"names":[],"mappings":"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"}
|
package/dist/client/stream.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { HoloResponse, HoloStreamEvent } from '@holokai/holo-types/holo';
|
|
2
|
+
import type { HoloStreamOptions, HoloStreamProgress } from './types.js';
|
|
2
3
|
type EventHandler<T> = (data: T) => void;
|
|
3
4
|
interface ToolCallDelta {
|
|
4
5
|
id?: string;
|
|
@@ -35,12 +36,18 @@ interface ToolCallDelta {
|
|
|
35
36
|
export declare class HoloStream implements AsyncIterable<HoloStreamEvent> {
|
|
36
37
|
private readonly events;
|
|
37
38
|
private readonly abortController;
|
|
39
|
+
private readonly signal;
|
|
38
40
|
private readonly accumulator;
|
|
39
41
|
private completedResponse?;
|
|
42
|
+
private completed;
|
|
40
43
|
private failedError?;
|
|
44
|
+
private abortError?;
|
|
41
45
|
private iterationStarted;
|
|
42
46
|
private eventHandlers;
|
|
43
|
-
|
|
47
|
+
private readonly idleTimeoutMs?;
|
|
48
|
+
constructor(events: AsyncGenerator<HoloStreamEvent>, abortController: AbortController, options?: HoloStreamOptions);
|
|
49
|
+
/** Running size of what has arrived so far. */
|
|
50
|
+
get progress(): HoloStreamProgress;
|
|
44
51
|
[Symbol.asyncIterator](): AsyncIterator<HoloStreamEvent>;
|
|
45
52
|
on(event: 'response.output_text.delta', fn: EventHandler<string>): this;
|
|
46
53
|
on(event: 'response.tool_call.delta', fn: EventHandler<ToolCallDelta>): this;
|
|
@@ -53,8 +60,11 @@ export declare class HoloStream implements AsyncIterable<HoloStreamEvent> {
|
|
|
53
60
|
finalResponse(): Promise<HoloResponse>;
|
|
54
61
|
/** Cancel the in-flight stream. */
|
|
55
62
|
abort(): void;
|
|
63
|
+
private throwIfTerminated;
|
|
56
64
|
private consume;
|
|
65
|
+
private nextEvent;
|
|
57
66
|
private dispatchEvent;
|
|
67
|
+
private dispatchTo;
|
|
58
68
|
}
|
|
59
69
|
export {};
|
|
60
70
|
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAG5E,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAEnE,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzC,UAAU,aAAa;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,UAAW,YAAW,aAAa,CAAC,eAAe,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAe;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAGpC,MAAM,EAAE,cAAc,CAAC,eAAe,CAAC,EACvC,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE,iBAAsB;IAenC,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,kBAAkB,CAEjC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC;IAuCxD,EAAE,CAAC,KAAK,EAAE,4BAA4B,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IACvE,EAAE,CAAC,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI;IAC5E,EAAE,CAAC,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IACrE,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI;IACrE,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI;IAS3D,yEAAyE;IACnE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAM7B,+EAA+E;IACzE,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAkB5C,mCAAmC;IACnC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,iBAAiB;YAKX,OAAO;YAQP,SAAS;IAkDvB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,UAAU;CAmBrB"}
|
package/dist/client/stream.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HoloStreamAccumulator } from './merge.js';
|
|
2
|
-
import { HoloStreamError } from './errors.js';
|
|
2
|
+
import { HoloAbortError, HoloStreamError, HoloTimeoutError } from './errors.js';
|
|
3
3
|
/**
|
|
4
4
|
* Async-iterable stream of {@link HoloStreamEvent} objects from a streaming chat request.
|
|
5
5
|
*
|
|
@@ -30,14 +30,33 @@ import { HoloStreamError } from './errors.js';
|
|
|
30
30
|
export class HoloStream {
|
|
31
31
|
events;
|
|
32
32
|
abortController;
|
|
33
|
+
signal;
|
|
33
34
|
accumulator = new HoloStreamAccumulator();
|
|
34
35
|
completedResponse;
|
|
36
|
+
completed = false;
|
|
35
37
|
failedError;
|
|
38
|
+
abortError;
|
|
36
39
|
iterationStarted = false;
|
|
37
40
|
eventHandlers = new Map();
|
|
38
|
-
|
|
41
|
+
idleTimeoutMs;
|
|
42
|
+
constructor(events, abortController, options = {}) {
|
|
39
43
|
this.events = events;
|
|
40
44
|
this.abortController = abortController;
|
|
45
|
+
this.signal = options.signal
|
|
46
|
+
? AbortSignal.any([abortController.signal, options.signal])
|
|
47
|
+
: abortController.signal;
|
|
48
|
+
if (options.idleTimeoutMs !== undefined)
|
|
49
|
+
this.idleTimeoutMs = options.idleTimeoutMs;
|
|
50
|
+
if (options.onProgress) {
|
|
51
|
+
const report = () => options.onProgress?.(this.progress);
|
|
52
|
+
this.on('response.output_text.delta', report).on('response.reasoning.delta', report);
|
|
53
|
+
}
|
|
54
|
+
if (this.signal.aborted)
|
|
55
|
+
this.abort();
|
|
56
|
+
}
|
|
57
|
+
/** Running size of what has arrived so far. */
|
|
58
|
+
get progress() {
|
|
59
|
+
return this.accumulator.progress;
|
|
41
60
|
}
|
|
42
61
|
[Symbol.asyncIterator]() {
|
|
43
62
|
if (this.iterationStarted) {
|
|
@@ -47,20 +66,33 @@ export class HoloStream {
|
|
|
47
66
|
const self = this;
|
|
48
67
|
return {
|
|
49
68
|
async next() {
|
|
50
|
-
const result = await self.
|
|
51
|
-
|
|
69
|
+
const result = await self.nextEvent();
|
|
70
|
+
// Cancellation is decided here, not by whether the source noticed it:
|
|
71
|
+
// a reader that yields once more after the signal fires still stops.
|
|
72
|
+
if (self.signal.aborted)
|
|
73
|
+
self.abortError ??= new HoloAbortError();
|
|
74
|
+
if (result.done || self.abortError) {
|
|
75
|
+
if (self.abortError)
|
|
76
|
+
throw self.abortError;
|
|
52
77
|
return { done: true, value: undefined };
|
|
78
|
+
}
|
|
53
79
|
const event = result.value;
|
|
54
80
|
self.accumulator.push(event);
|
|
55
81
|
self.dispatchEvent(event);
|
|
56
|
-
if (event.type === 'response.completed'
|
|
57
|
-
self.
|
|
82
|
+
if (event.type === 'response.completed') {
|
|
83
|
+
self.completed = true;
|
|
84
|
+
if (event.response)
|
|
85
|
+
self.completedResponse = event.response;
|
|
58
86
|
}
|
|
59
87
|
if (event.type === 'response.failed') {
|
|
60
88
|
self.failedError = new HoloStreamError(event.error?.message ?? 'Stream failed', event);
|
|
61
89
|
}
|
|
62
90
|
return { done: false, value: event };
|
|
63
91
|
},
|
|
92
|
+
async return() {
|
|
93
|
+
await self.events.return(undefined);
|
|
94
|
+
return { done: true, value: undefined };
|
|
95
|
+
},
|
|
64
96
|
};
|
|
65
97
|
}
|
|
66
98
|
/** Register an event handler. Handlers fire during iteration (either explicit or via terminal methods). */
|
|
@@ -73,15 +105,13 @@ export class HoloStream {
|
|
|
73
105
|
/** Consume the entire stream and return the concatenated text output. */
|
|
74
106
|
async text() {
|
|
75
107
|
await this.consume();
|
|
76
|
-
|
|
77
|
-
throw this.failedError;
|
|
108
|
+
this.throwIfTerminated();
|
|
78
109
|
return this.accumulator.getText();
|
|
79
110
|
}
|
|
80
111
|
/** Consume the entire stream and return the assembled {@link HoloResponse}. */
|
|
81
112
|
async finalResponse() {
|
|
82
113
|
await this.consume();
|
|
83
|
-
|
|
84
|
-
throw this.failedError;
|
|
114
|
+
this.throwIfTerminated();
|
|
85
115
|
const accumulated = this.accumulator.toResponse();
|
|
86
116
|
// If the server says tool_calls but the completedResponse is missing them, use accumulator
|
|
87
117
|
if (this.completedResponse?.finish_reason === 'tool_calls') {
|
|
@@ -98,19 +128,91 @@ export class HoloStream {
|
|
|
98
128
|
}
|
|
99
129
|
/** Cancel the in-flight stream. */
|
|
100
130
|
abort() {
|
|
131
|
+
this.abortError ??= new HoloAbortError();
|
|
101
132
|
this.abortController.abort();
|
|
102
133
|
}
|
|
134
|
+
throwIfTerminated() {
|
|
135
|
+
if (this.abortError)
|
|
136
|
+
throw this.abortError;
|
|
137
|
+
if (this.failedError)
|
|
138
|
+
throw this.failedError;
|
|
139
|
+
}
|
|
103
140
|
async consume() {
|
|
104
|
-
if (this.
|
|
141
|
+
if (this.completed || this.failedError || this.abortError)
|
|
105
142
|
return;
|
|
106
143
|
for await (const _event of this) {
|
|
107
|
-
|
|
144
|
+
if (this.completed || this.failedError)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async nextEvent() {
|
|
149
|
+
const idleTimeoutMs = this.idleTimeoutMs;
|
|
150
|
+
let timer;
|
|
151
|
+
const idle = idleTimeoutMs === undefined
|
|
152
|
+
? undefined
|
|
153
|
+
: new Promise((resolve, reject) => {
|
|
154
|
+
timer = setTimeout(() => {
|
|
155
|
+
if (this.completed) {
|
|
156
|
+
resolve({ done: true, value: undefined });
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const error = new HoloTimeoutError(idleTimeoutMs, 'idle');
|
|
160
|
+
// `??=`: an abort already in flight keeps its own error. A cancelled
|
|
161
|
+
// stream that then goes quiet is cancelled, not timed out.
|
|
162
|
+
this.abortError ??= error;
|
|
163
|
+
this.abortController.abort();
|
|
164
|
+
for (const h of this.eventHandlers.get('response.failed') ?? [])
|
|
165
|
+
h(error);
|
|
166
|
+
reject(error);
|
|
167
|
+
}, idleTimeoutMs);
|
|
168
|
+
});
|
|
169
|
+
// An abort leg, because the source is not required to reject its pending read when the
|
|
170
|
+
// signal fires: a custom `fetch` or a non-undici body can leave `next()` pending
|
|
171
|
+
// forever, and then `abort()` would never settle the caller's `text()`.
|
|
172
|
+
let onAbort;
|
|
173
|
+
const aborted = new Promise((_, reject) => {
|
|
174
|
+
const fail = () => reject((this.abortError ??= new HoloAbortError()));
|
|
175
|
+
if (this.signal.aborted) {
|
|
176
|
+
fail();
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
onAbort = fail;
|
|
180
|
+
this.signal.addEventListener('abort', fail, { once: true });
|
|
181
|
+
});
|
|
182
|
+
try {
|
|
183
|
+
const legs = [this.events.next(), aborted];
|
|
184
|
+
if (idle)
|
|
185
|
+
legs.push(idle);
|
|
186
|
+
return await Promise.race(legs);
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
if (this.abortError)
|
|
190
|
+
throw this.abortError;
|
|
191
|
+
if (this.signal.aborted) {
|
|
192
|
+
throw (this.abortError ??= new HoloAbortError());
|
|
193
|
+
}
|
|
194
|
+
throw e;
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
clearTimeout(timer);
|
|
198
|
+
if (onAbort)
|
|
199
|
+
this.signal.removeEventListener('abort', onAbort);
|
|
108
200
|
}
|
|
109
201
|
}
|
|
110
202
|
dispatchEvent(event) {
|
|
111
203
|
const handlers = this.eventHandlers.get(event.type);
|
|
112
204
|
if (!handlers?.length)
|
|
113
205
|
return;
|
|
206
|
+
try {
|
|
207
|
+
this.dispatchTo(handlers, event);
|
|
208
|
+
}
|
|
209
|
+
catch (e) {
|
|
210
|
+
this.abortError ??= e instanceof Error ? e : new Error(String(e));
|
|
211
|
+
this.abortController.abort();
|
|
212
|
+
throw e;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
dispatchTo(handlers, event) {
|
|
114
216
|
switch (event.type) {
|
|
115
217
|
case 'response.output_text.delta':
|
|
116
218
|
for (const h of handlers)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAW3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,UAAU;IACF,MAAM,CAAkC;IACxC,eAAe,CAAkB;IACjC,MAAM,CAAc;IACpB,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACnD,iBAAiB,CAAgB;IACjC,SAAS,GAAG,KAAK,CAAC;IAClB,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,gBAAgB,GAAG,KAAK,CAAC;IACzB,aAAa,GAAqC,IAAI,GAAG,EAAE,CAAC;IACnD,aAAa,CAAU;IAExC,YACI,MAAuC,EACvC,eAAgC,EAChC,UAA6B,EAAE;QAE/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YACxB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;QAC7B,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QACpF,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACH,KAAK,CAAC,IAAI;gBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtC,sEAAsE;gBACtE,qEAAqE;gBACrE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,IAAI,CAAC,UAAU,KAAK,IAAI,cAAc,EAAE,CAAC;gBAClE,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjC,IAAI,IAAI,CAAC,UAAU;wBAAE,MAAM,IAAI,CAAC,UAAU,CAAC;oBAC3C,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;gBAC1C,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAE1B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,KAAK,CAAC,QAAQ;wBAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAChE,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACnC,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,CAAC,CAAC;gBAC3F,CAAC;gBAED,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YACvC,CAAC;YACD,KAAK,CAAC,MAAM;gBACR,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;YAC1C,CAAC;SACJ,CAAC;IACN,CAAC;IAOD,2GAA2G;IAC3G,EAAE,CAAC,KAAa,EAAE,EAAqB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAClD,2FAA2F;QAC3F,IAAI,IAAI,CAAC,iBAAiB,EAAE,aAAa,KAAK,YAAY,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CACpD,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,UAAU,EAAE,MAAM;gBACpB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CACvF,CAAC;YACF,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM;gBAAE,OAAO,WAAW,CAAC;QACxE,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC1E,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QAClD,OAAO,IAAI,CAAC,iBAAiB,IAAI,WAAW,CAAC;IACjD,CAAC;IAED,mCAAmC;IACnC,KAAK;QACD,IAAI,CAAC,UAAU,KAAK,IAAI,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEO,iBAAiB;QACrB,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC;QAC3C,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,OAAO;QACjB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAElE,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW;gBAAE,MAAM;QAClD,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,KAAgD,CAAC;QACrD,MAAM,IAAI,GACN,aAAa,KAAK,SAAS;YACvB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,OAAO,CAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,OAAO,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;wBACxC,OAAO;oBACX,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAC1D,qEAAqE;oBACrE,2DAA2D;oBAC3D,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;oBAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE;wBAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC1E,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,EAAE,aAAa,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACb,uFAAuF;QACvF,iFAAiF;QACjF,wEAAwE;QACxE,IAAI,OAAiC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAkC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACtB,IAAI,EAAE,CAAC;gBACP,OAAO;YACX,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACD,MAAM,IAAI,GAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YACvF,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC;YAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,cAAc,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,KAAsB;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO;QAE9B,IAAI,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,UAAU,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,QAA6B,EAAE,KAAsB;QACpE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,4BAA4B;gBAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM;YACV,KAAK,0BAA0B;gBAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM;YACV,KAAK,0BAA0B;gBAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;gBACzD,MAAM;YACV,KAAK,oBAAoB;gBACrB,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC7E,MAAM;YACV,KAAK,iBAAiB;gBAClB,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,CAAC,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjG,MAAM;QACd,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -10,6 +10,16 @@ interface TransportStreamOptions {
|
|
|
10
10
|
body: unknown;
|
|
11
11
|
signal?: AbortSignal | undefined;
|
|
12
12
|
headers?: Record<string, string> | undefined;
|
|
13
|
+
/** Bound on the wait for response headers, overriding the client-level `timeout` for this stream. */
|
|
14
|
+
timeout?: number | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Bound on the wait for response headers used ONLY when neither this stream nor the client
|
|
17
|
+
* set one. A stream's idle bound doubles as a header bound on a client that configured no
|
|
18
|
+
* `timeout`, but it must never displace a header bound the caller did configure — those are
|
|
19
|
+
* two different questions ("how long may it take to start?" vs "how long may it go quiet?")
|
|
20
|
+
* and a caller has to be able to answer them separately.
|
|
21
|
+
*/
|
|
22
|
+
headerTimeoutFallback?: number | undefined;
|
|
13
23
|
}
|
|
14
24
|
interface TransportStreamResult {
|
|
15
25
|
body: ReadableStream<Uint8Array>;
|
|
@@ -35,6 +45,7 @@ declare class FetchTransport implements HoloTransport {
|
|
|
35
45
|
streamRequest(options: TransportStreamOptions): Promise<TransportStreamResult>;
|
|
36
46
|
private handleErrorResponse;
|
|
37
47
|
private applyTimeout;
|
|
48
|
+
private headerPhaseSignal;
|
|
38
49
|
private classifyAbortError;
|
|
39
50
|
}
|
|
40
51
|
export { FetchTransport };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAGA,UAAU,uBAAuB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,UAAU,sBAAsB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAGA,UAAU,uBAAuB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,UAAU,sBAAsB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,UAAU,qBAAqB;IAC3B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;CACtB;AAKD,UAAU,aAAa;IACnB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzD,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAClF;AAMD,cAAM,cAAe,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;QAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC;IAQK,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC;IAiCxD,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YAsCtE,mBAAmB;IA0BjC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,kBAAkB;CAa7B;AAED,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,YAAY,EAAC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAC,CAAC"}
|
package/dist/client/transport.js
CHANGED
|
@@ -58,11 +58,16 @@ class FetchTransport {
|
|
|
58
58
|
...options.headers,
|
|
59
59
|
};
|
|
60
60
|
const init = { method: 'POST', headers, body: JSON.stringify(options.body) };
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
// A stream's timeout bounds the wait for HEADERS only. Putting a timeout
|
|
62
|
+
// signal on the fetch would also abort the body, cutting a generation that
|
|
63
|
+
// is still writing; the caller bounds the body with an idle timeout instead.
|
|
64
|
+
const timeoutMs = options.timeout ?? this.timeout ?? options.headerTimeoutFallback;
|
|
65
|
+
const headerPhase = this.headerPhaseSignal(options.signal, timeoutMs);
|
|
66
|
+
if (headerPhase.signal)
|
|
67
|
+
init.signal = headerPhase.signal;
|
|
64
68
|
try {
|
|
65
69
|
const response = await this._fetch(url, init);
|
|
70
|
+
headerPhase.settle();
|
|
66
71
|
if (!response.ok) {
|
|
67
72
|
await this.handleErrorResponse(response);
|
|
68
73
|
}
|
|
@@ -72,7 +77,8 @@ class FetchTransport {
|
|
|
72
77
|
return { body: response.body, response };
|
|
73
78
|
}
|
|
74
79
|
catch (e) {
|
|
75
|
-
|
|
80
|
+
headerPhase.settle();
|
|
81
|
+
throw this.classifyAbortError(e, options.signal, timeoutMs);
|
|
76
82
|
}
|
|
77
83
|
}
|
|
78
84
|
async handleErrorResponse(response) {
|
|
@@ -106,18 +112,28 @@ class FetchTransport {
|
|
|
106
112
|
return timeoutSignal;
|
|
107
113
|
return AbortSignal.any([externalSignal, timeoutSignal]);
|
|
108
114
|
}
|
|
109
|
-
|
|
115
|
+
headerPhaseSignal(externalSignal, timeoutMs) {
|
|
116
|
+
if (!timeoutMs)
|
|
117
|
+
return { signal: externalSignal, settle: () => { } };
|
|
118
|
+
const controller = new AbortController();
|
|
119
|
+
const timer = setTimeout(() => controller.abort(new DOMException(`Request timed out after ${timeoutMs}ms`, 'TimeoutError')), timeoutMs);
|
|
120
|
+
return {
|
|
121
|
+
signal: externalSignal ? AbortSignal.any([externalSignal, controller.signal]) : controller.signal,
|
|
122
|
+
settle: () => clearTimeout(timer),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
classifyAbortError(e, externalSignal, timeoutMs = this.timeout) {
|
|
110
126
|
if (e instanceof HoloApiError || e instanceof HoloTimeoutError)
|
|
111
127
|
return e;
|
|
112
128
|
if (e instanceof DOMException && e.name === 'AbortError') {
|
|
113
129
|
if (externalSignal?.aborted)
|
|
114
130
|
return e;
|
|
115
|
-
if (
|
|
116
|
-
return new HoloTimeoutError(
|
|
131
|
+
if (timeoutMs)
|
|
132
|
+
return new HoloTimeoutError(timeoutMs);
|
|
117
133
|
}
|
|
118
134
|
if (e instanceof DOMException && e.name === 'TimeoutError') {
|
|
119
|
-
if (
|
|
120
|
-
return new HoloTimeoutError(
|
|
135
|
+
if (timeoutMs)
|
|
136
|
+
return new HoloTimeoutError(timeoutMs);
|
|
121
137
|
}
|
|
122
138
|
return e;
|
|
123
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
|