@holokai/holo-sdk 1.6.0 → 1.10.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.
Files changed (106) hide show
  1. package/dist/client/builder.d.ts +36 -3
  2. package/dist/client/builder.d.ts.map +1 -1
  3. package/dist/client/builder.js +57 -10
  4. package/dist/client/builder.js.map +1 -1
  5. package/dist/client/client.d.ts +15 -3
  6. package/dist/client/client.d.ts.map +1 -1
  7. package/dist/client/client.js +63 -25
  8. package/dist/client/client.js.map +1 -1
  9. package/dist/client/errors.d.ts +10 -2
  10. package/dist/client/errors.d.ts.map +1 -1
  11. package/dist/client/errors.js +15 -3
  12. package/dist/client/errors.js.map +1 -1
  13. package/dist/client/index.d.ts +2 -2
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +1 -1
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/client/merge.d.ts +5 -0
  18. package/dist/client/merge.d.ts.map +1 -1
  19. package/dist/client/merge.js +13 -0
  20. package/dist/client/merge.js.map +1 -1
  21. package/dist/client/runner.d.ts +5 -1
  22. package/dist/client/runner.d.ts.map +1 -1
  23. package/dist/client/runner.js.map +1 -1
  24. package/dist/client/sse.d.ts.map +1 -1
  25. package/dist/client/sse.js +4 -0
  26. package/dist/client/sse.js.map +1 -1
  27. package/dist/client/stream.d.ts +13 -8
  28. package/dist/client/stream.d.ts.map +1 -1
  29. package/dist/client/stream.js +124 -12
  30. package/dist/client/stream.js.map +1 -1
  31. package/dist/client/transport.d.ts +11 -0
  32. package/dist/client/transport.d.ts.map +1 -1
  33. package/dist/client/transport.js +25 -9
  34. package/dist/client/transport.js.map +1 -1
  35. package/dist/client/types.d.ts +47 -1
  36. package/dist/client/types.d.ts.map +1 -1
  37. package/dist/core/index.d.ts +2 -1
  38. package/dist/core/index.d.ts.map +1 -1
  39. package/dist/core/index.js +2 -1
  40. package/dist/core/index.js.map +1 -1
  41. package/dist/core/json-output.d.ts +36 -0
  42. package/dist/core/json-output.d.ts.map +1 -0
  43. package/dist/core/json-output.js +108 -0
  44. package/dist/core/json-output.js.map +1 -0
  45. package/dist/core/redact-binary.d.ts +6 -0
  46. package/dist/core/redact-binary.d.ts.map +1 -0
  47. package/dist/core/redact-binary.js +23 -0
  48. package/dist/core/redact-binary.js.map +1 -0
  49. package/dist/core/version.d.ts +1 -1
  50. package/dist/core/version.d.ts.map +1 -1
  51. package/dist/core/version.js +1 -1
  52. package/dist/core/version.js.map +1 -1
  53. package/dist/plugin/base.d.ts +7 -10
  54. package/dist/plugin/base.d.ts.map +1 -1
  55. package/dist/plugin/base.js +11 -24
  56. package/dist/plugin/base.js.map +1 -1
  57. package/dist/plugin/index.d.ts +1 -0
  58. package/dist/plugin/index.d.ts.map +1 -1
  59. package/dist/plugin/index.js +1 -0
  60. package/dist/plugin/index.js.map +1 -1
  61. package/dist/plugin/pricing.d.ts +13 -0
  62. package/dist/plugin/pricing.d.ts.map +1 -0
  63. package/dist/plugin/pricing.js +70 -0
  64. package/dist/plugin/pricing.js.map +1 -0
  65. package/dist/provider/auditor/base.d.ts +10 -5
  66. package/dist/provider/auditor/base.d.ts.map +1 -1
  67. package/dist/provider/auditor/base.js +69 -16
  68. package/dist/provider/auditor/base.js.map +1 -1
  69. package/dist/provider/auditor/index.d.ts +2 -0
  70. package/dist/provider/auditor/index.d.ts.map +1 -1
  71. package/dist/provider/auditor/index.js +2 -0
  72. package/dist/provider/auditor/index.js.map +1 -1
  73. package/dist/provider/auditor/payload-shape.d.ts +2 -0
  74. package/dist/provider/auditor/payload-shape.d.ts.map +1 -0
  75. package/dist/provider/auditor/payload-shape.js +19 -0
  76. package/dist/provider/auditor/payload-shape.js.map +1 -0
  77. package/dist/provider/auditor/token-breakdown.d.ts +14 -0
  78. package/dist/provider/auditor/token-breakdown.d.ts.map +1 -0
  79. package/dist/provider/auditor/token-breakdown.js +50 -0
  80. package/dist/provider/auditor/token-breakdown.js.map +1 -0
  81. package/dist/provider/base.d.ts.map +1 -1
  82. package/dist/provider/base.js +39 -15
  83. package/dist/provider/base.js.map +1 -1
  84. package/dist/provider/index.d.ts +2 -0
  85. package/dist/provider/index.d.ts.map +1 -1
  86. package/dist/provider/index.js +2 -0
  87. package/dist/provider/index.js.map +1 -1
  88. package/dist/provider/json-output.d.ts +22 -0
  89. package/dist/provider/json-output.d.ts.map +1 -0
  90. package/dist/provider/json-output.js +88 -0
  91. package/dist/provider/json-output.js.map +1 -0
  92. package/dist/provider/thinking.d.ts +79 -0
  93. package/dist/provider/thinking.d.ts.map +1 -0
  94. package/dist/provider/thinking.js +173 -0
  95. package/dist/provider/thinking.js.map +1 -0
  96. package/dist/provider/translator/translate-provider-events.d.ts.map +1 -1
  97. package/dist/provider/translator/translate-provider-events.js +11 -3
  98. package/dist/provider/translator/translate-provider-events.js.map +1 -1
  99. package/dist/provider/wire/holo.wire.adapter.d.ts +2 -6
  100. package/dist/provider/wire/holo.wire.adapter.d.ts.map +1 -1
  101. package/dist/provider/wire/holo.wire.adapter.js.map +1 -1
  102. package/package.json +2 -3
  103. package/dist/core/tokenizer.d.ts +0 -2
  104. package/dist/core/tokenizer.d.ts.map +0 -1
  105. package/dist/core/tokenizer.js +0 -12
  106. package/dist/core/tokenizer.js.map +0 -1
@@ -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, HoloStreamDeltaHandlers, 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;AACzE,OAAO,EACH,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,GAC7B,MAAM,UAAU,CAAC;AAClB,YAAY,EACR,iBAAiB,EACjB,cAAc,EACd,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"}
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,uBAAuB,EACvB,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"}
@@ -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
@@ -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;AACzE,OAAO,EACH,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,GAC7B,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"}
@@ -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;AAElC;;;;;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;IAE9C,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAwDlC,4EAA4E;IAC5E,UAAU,IAAI,YAAY;IAyD1B,8DAA8D;IAC9D,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,cAAc;CAYzB"}
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"}
@@ -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])) {
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/client/merge.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { HoloContent, HoloMessage, HoloResponse, HoloTool, HoloToolChoice } from '@holokai/holo-types/holo';
2
2
  import type { HoloStream } from './stream.js';
3
- import type { HoloChatParams } from './types.js';
3
+ import type { HoloChatParams, HoloStreamDeltaHandlers } from './types.js';
4
4
  /** Default cap on tool-call round-trips before the runner returns the last response. */
5
5
  export declare const DEFAULT_MAX_TOOL_ITERATIONS = 50;
6
6
  /** Extracted tool call information passed to the user's tool handler. */
@@ -50,6 +50,10 @@ 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;
55
+ /** Delta handlers applied to every stream the runner opens — see {@link HoloStreamOptions.on}. */
56
+ on?: HoloStreamDeltaHandlers;
53
57
  }
54
58
  type EventHandler<T> = (data: T) => void;
55
59
  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,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAGrE,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;IACvB,kGAAkG;IAClG,EAAE,CAAC,EAAE,uBAAuB,CAAC;CAChC;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":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/client/runner.ts"],"names":[],"mappings":"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"}
@@ -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,CAmCjC"}
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"}
@@ -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
  }
@@ -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":"AAEA,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACjC,IAAgC,EAChC,MAAoB;IAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAE3B,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,IAAI;gBAAE,MAAM;YAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;YAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;YAAS,CAAC;QACP,sFAAsF;QACtF,uFAAuF;QACvF,wCAAwC;QACxC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,EAAE,CAAC;IACzB,CAAC;AACL,CAAC;AAOD,SAAS,aAAa,CAAC,MAAc;IACjC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,MAAM,CAAC;IAEvB,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,aAAa,KAAK,CAAC,CAAC;YAAE,MAAM;QAEhC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAChD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IAED,OAAO,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAChC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -1,10 +1,6 @@
1
- import type { HoloResponse, HoloStreamEvent } from '@holokai/holo-types/holo';
1
+ import type { HoloResponse, HoloStreamEvent, HoloToolCallDelta } from '@holokai/holo-types/holo';
2
+ import type { HoloStreamOptions, HoloStreamProgress } from './types.js';
2
3
  type EventHandler<T> = (data: T) => void;
3
- interface ToolCallDelta {
4
- id?: string;
5
- name?: string;
6
- arguments_delta?: string;
7
- }
8
4
  /**
9
5
  * Async-iterable stream of {@link HoloStreamEvent} objects from a streaming chat request.
10
6
  *
@@ -35,15 +31,21 @@ interface ToolCallDelta {
35
31
  export declare class HoloStream implements AsyncIterable<HoloStreamEvent> {
36
32
  private readonly events;
37
33
  private readonly abortController;
34
+ private readonly signal;
38
35
  private readonly accumulator;
39
36
  private completedResponse?;
37
+ private completed;
40
38
  private failedError?;
39
+ private abortError?;
41
40
  private iterationStarted;
42
41
  private eventHandlers;
43
- constructor(events: AsyncGenerator<HoloStreamEvent>, abortController: AbortController);
42
+ private readonly idleTimeoutMs?;
43
+ constructor(events: AsyncGenerator<HoloStreamEvent>, abortController: AbortController, options?: HoloStreamOptions);
44
+ /** Running size of what has arrived so far. */
45
+ get progress(): HoloStreamProgress;
44
46
  [Symbol.asyncIterator](): AsyncIterator<HoloStreamEvent>;
45
47
  on(event: 'response.output_text.delta', fn: EventHandler<string>): this;
46
- on(event: 'response.tool_call.delta', fn: EventHandler<ToolCallDelta>): this;
48
+ on(event: 'response.tool_call.delta', fn: EventHandler<HoloToolCallDelta>): this;
47
49
  on(event: 'response.reasoning.delta', fn: EventHandler<string>): this;
48
50
  on(event: 'response.completed', fn: EventHandler<HoloResponse>): this;
49
51
  on(event: 'response.failed', fn: EventHandler<Error>): this;
@@ -53,8 +55,11 @@ export declare class HoloStream implements AsyncIterable<HoloStreamEvent> {
53
55
  finalResponse(): Promise<HoloResponse>;
54
56
  /** Cancel the in-flight stream. */
55
57
  abort(): void;
58
+ private throwIfTerminated;
56
59
  private consume;
60
+ private nextEvent;
57
61
  private dispatchEvent;
62
+ private dispatchTo;
58
63
  }
59
64
  export {};
60
65
  //# 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;AAI5E,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,WAAW,CAA+B;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAe;IACzC,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAA+C;gBAExD,MAAM,EAAE,cAAc,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,eAAe;IAKrF,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC;IA4BxD,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;YAIC,OAAO;IAQrB,OAAO,CAAC,aAAa;CAsBxB"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAG/F,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAEnE,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;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;IAyBnC,+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,iBAAiB,CAAC,GAAG,IAAI;IAChF,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"}
@@ -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,43 @@ 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
- constructor(events, abortController) {
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
+ const handlers = options.on;
55
+ if (handlers?.['response.output_text.delta']) {
56
+ this.on('response.output_text.delta', handlers['response.output_text.delta']);
57
+ }
58
+ if (handlers?.['response.reasoning.delta']) {
59
+ this.on('response.reasoning.delta', handlers['response.reasoning.delta']);
60
+ }
61
+ if (handlers?.['response.tool_call.delta']) {
62
+ this.on('response.tool_call.delta', handlers['response.tool_call.delta']);
63
+ }
64
+ if (this.signal.aborted)
65
+ this.abort();
66
+ }
67
+ /** Running size of what has arrived so far. */
68
+ get progress() {
69
+ return this.accumulator.progress;
41
70
  }
42
71
  [Symbol.asyncIterator]() {
43
72
  if (this.iterationStarted) {
@@ -47,20 +76,33 @@ export class HoloStream {
47
76
  const self = this;
48
77
  return {
49
78
  async next() {
50
- const result = await self.events.next();
51
- if (result.done)
79
+ const result = await self.nextEvent();
80
+ // Cancellation is decided here, not by whether the source noticed it:
81
+ // a reader that yields once more after the signal fires still stops.
82
+ if (self.signal.aborted)
83
+ self.abortError ??= new HoloAbortError();
84
+ if (result.done || self.abortError) {
85
+ if (self.abortError)
86
+ throw self.abortError;
52
87
  return { done: true, value: undefined };
88
+ }
53
89
  const event = result.value;
54
90
  self.accumulator.push(event);
55
91
  self.dispatchEvent(event);
56
- if (event.type === 'response.completed' && event.response) {
57
- self.completedResponse = event.response;
92
+ if (event.type === 'response.completed') {
93
+ self.completed = true;
94
+ if (event.response)
95
+ self.completedResponse = event.response;
58
96
  }
59
97
  if (event.type === 'response.failed') {
60
98
  self.failedError = new HoloStreamError(event.error?.message ?? 'Stream failed', event);
61
99
  }
62
100
  return { done: false, value: event };
63
101
  },
102
+ async return() {
103
+ await self.events.return(undefined);
104
+ return { done: true, value: undefined };
105
+ },
64
106
  };
65
107
  }
66
108
  /** Register an event handler. Handlers fire during iteration (either explicit or via terminal methods). */
@@ -73,15 +115,13 @@ export class HoloStream {
73
115
  /** Consume the entire stream and return the concatenated text output. */
74
116
  async text() {
75
117
  await this.consume();
76
- if (this.failedError)
77
- throw this.failedError;
118
+ this.throwIfTerminated();
78
119
  return this.accumulator.getText();
79
120
  }
80
121
  /** Consume the entire stream and return the assembled {@link HoloResponse}. */
81
122
  async finalResponse() {
82
123
  await this.consume();
83
- if (this.failedError)
84
- throw this.failedError;
124
+ this.throwIfTerminated();
85
125
  const accumulated = this.accumulator.toResponse();
86
126
  // If the server says tool_calls but the completedResponse is missing them, use accumulator
87
127
  if (this.completedResponse?.finish_reason === 'tool_calls') {
@@ -98,19 +138,91 @@ export class HoloStream {
98
138
  }
99
139
  /** Cancel the in-flight stream. */
100
140
  abort() {
141
+ this.abortError ??= new HoloAbortError();
101
142
  this.abortController.abort();
102
143
  }
144
+ throwIfTerminated() {
145
+ if (this.abortError)
146
+ throw this.abortError;
147
+ if (this.failedError)
148
+ throw this.failedError;
149
+ }
103
150
  async consume() {
104
- if (this.completedResponse || this.failedError)
151
+ if (this.completed || this.failedError || this.abortError)
105
152
  return;
106
153
  for await (const _event of this) {
107
- // iteration handles accumulation via [Symbol.asyncIterator]
154
+ if (this.completed || this.failedError)
155
+ break;
156
+ }
157
+ }
158
+ async nextEvent() {
159
+ const idleTimeoutMs = this.idleTimeoutMs;
160
+ let timer;
161
+ const idle = idleTimeoutMs === undefined
162
+ ? undefined
163
+ : new Promise((resolve, reject) => {
164
+ timer = setTimeout(() => {
165
+ if (this.completed) {
166
+ resolve({ done: true, value: undefined });
167
+ return;
168
+ }
169
+ const error = new HoloTimeoutError(idleTimeoutMs, 'idle');
170
+ // `??=`: an abort already in flight keeps its own error. A cancelled
171
+ // stream that then goes quiet is cancelled, not timed out.
172
+ this.abortError ??= error;
173
+ this.abortController.abort();
174
+ for (const h of this.eventHandlers.get('response.failed') ?? [])
175
+ h(error);
176
+ reject(error);
177
+ }, idleTimeoutMs);
178
+ });
179
+ // An abort leg, because the source is not required to reject its pending read when the
180
+ // signal fires: a custom `fetch` or a non-undici body can leave `next()` pending
181
+ // forever, and then `abort()` would never settle the caller's `text()`.
182
+ let onAbort;
183
+ const aborted = new Promise((_, reject) => {
184
+ const fail = () => reject((this.abortError ??= new HoloAbortError()));
185
+ if (this.signal.aborted) {
186
+ fail();
187
+ return;
188
+ }
189
+ onAbort = fail;
190
+ this.signal.addEventListener('abort', fail, { once: true });
191
+ });
192
+ try {
193
+ const legs = [this.events.next(), aborted];
194
+ if (idle)
195
+ legs.push(idle);
196
+ return await Promise.race(legs);
197
+ }
198
+ catch (e) {
199
+ if (this.abortError)
200
+ throw this.abortError;
201
+ if (this.signal.aborted) {
202
+ throw (this.abortError ??= new HoloAbortError());
203
+ }
204
+ throw e;
205
+ }
206
+ finally {
207
+ clearTimeout(timer);
208
+ if (onAbort)
209
+ this.signal.removeEventListener('abort', onAbort);
108
210
  }
109
211
  }
110
212
  dispatchEvent(event) {
111
213
  const handlers = this.eventHandlers.get(event.type);
112
214
  if (!handlers?.length)
113
215
  return;
216
+ try {
217
+ this.dispatchTo(handlers, event);
218
+ }
219
+ catch (e) {
220
+ this.abortError ??= e instanceof Error ? e : new Error(String(e));
221
+ this.abortController.abort();
222
+ throw e;
223
+ }
224
+ }
225
+ dispatchTo(handlers, event) {
114
226
  switch (event.type) {
115
227
  case 'response.output_text.delta':
116
228
  for (const h of handlers)
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"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"}
@@ -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;CAChD;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;YAgCtE,mBAAmB;IA0BjC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,kBAAkB;CAa7B;AAED,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,YAAY,EAAC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAC,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"}
@@ -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
- const effectiveSignal = this.applyTimeout(options.signal);
62
- if (effectiveSignal)
63
- init.signal = effectiveSignal;
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
- throw this.classifyAbortError(e, options.signal);
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
- classifyAbortError(e, externalSignal) {
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 (this.timeout)
116
- return new HoloTimeoutError(this.timeout);
131
+ if (timeoutMs)
132
+ return new HoloTimeoutError(timeoutMs);
117
133
  }
118
134
  if (e instanceof DOMException && e.name === 'TimeoutError') {
119
- if (this.timeout)
120
- return new HoloTimeoutError(this.timeout);
135
+ if (timeoutMs)
136
+ return new HoloTimeoutError(timeoutMs);
121
137
  }
122
138
  return e;
123
139
  }