@pentoshi/clai 4.10.2 → 4.11.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 (208) hide show
  1. package/README.md +40 -7
  2. package/dist/agent/runner.js +114 -25
  3. package/dist/agent/runner.js.map +1 -1
  4. package/dist/agent/task-evidence.js +0 -63
  5. package/dist/agent/task-evidence.js.map +1 -1
  6. package/dist/app/adapters/current-store-adapter.js +8 -2
  7. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  8. package/dist/app/commands/catalog.js +19 -2
  9. package/dist/app/commands/catalog.js.map +1 -1
  10. package/dist/app/controllers/session-controller.d.ts +4 -2
  11. package/dist/app/controllers/session-controller.js +26 -38
  12. package/dist/app/controllers/session-controller.js.map +1 -1
  13. package/dist/app/controllers/session-loop-recovery.d.ts +13 -0
  14. package/dist/app/controllers/session-loop-recovery.js +43 -0
  15. package/dist/app/controllers/session-loop-recovery.js.map +1 -0
  16. package/dist/app/ports/persistence-port.d.ts +3 -1
  17. package/dist/classic/bootstrap/start-classic.d.ts +1 -0
  18. package/dist/classic/bootstrap/start-classic.js +12 -4
  19. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  20. package/dist/commands/providers.js +2 -0
  21. package/dist/commands/providers.js.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/llm/capabilities.js +13 -0
  25. package/dist/llm/capabilities.js.map +1 -1
  26. package/dist/llm/free-default-model.d.ts +6 -0
  27. package/dist/llm/free-default-model.js +32 -0
  28. package/dist/llm/free-default-model.js.map +1 -0
  29. package/dist/llm/free.js +39 -0
  30. package/dist/llm/free.js.map +1 -1
  31. package/dist/llm/merge-gateway.d.ts +6 -0
  32. package/dist/llm/merge-gateway.js +157 -0
  33. package/dist/llm/merge-gateway.js.map +1 -0
  34. package/dist/llm/meta.d.ts +1 -2
  35. package/dist/llm/meta.js +31 -1140
  36. package/dist/llm/meta.js.map +1 -1
  37. package/dist/llm/provider-model-layers.js +6 -0
  38. package/dist/llm/provider-model-layers.js.map +1 -1
  39. package/dist/llm/provider-profile-layers.js +21 -0
  40. package/dist/llm/provider-profile-layers.js.map +1 -1
  41. package/dist/llm/provider.js +68 -0
  42. package/dist/llm/provider.js.map +1 -1
  43. package/dist/llm/reasoning-capability.js +8 -0
  44. package/dist/llm/reasoning-capability.js.map +1 -1
  45. package/dist/llm/responses-complete.d.ts +4 -0
  46. package/dist/llm/responses-complete.js +28 -0
  47. package/dist/llm/responses-complete.js.map +1 -0
  48. package/dist/llm/responses-config.d.ts +22 -0
  49. package/dist/llm/responses-config.js +19 -0
  50. package/dist/llm/responses-config.js.map +1 -0
  51. package/dist/llm/responses-dialect.d.ts +6 -0
  52. package/dist/llm/responses-dialect.js +6 -0
  53. package/dist/llm/responses-dialect.js.map +1 -0
  54. package/dist/llm/responses-http.d.ts +13 -0
  55. package/dist/llm/responses-http.js +88 -0
  56. package/dist/llm/responses-http.js.map +1 -0
  57. package/dist/llm/responses-parse.d.ts +42 -0
  58. package/dist/llm/responses-parse.js +242 -0
  59. package/dist/llm/responses-parse.js.map +1 -0
  60. package/dist/llm/responses-request.d.ts +15 -0
  61. package/dist/llm/responses-request.js +209 -0
  62. package/dist/llm/responses-request.js.map +1 -0
  63. package/dist/llm/responses-stream-accumulator.d.ts +38 -0
  64. package/dist/llm/responses-stream-accumulator.js +102 -0
  65. package/dist/llm/responses-stream-accumulator.js.map +1 -0
  66. package/dist/llm/responses-stream-events.d.ts +6 -0
  67. package/dist/llm/responses-stream-events.js +398 -0
  68. package/dist/llm/responses-stream-events.js.map +1 -0
  69. package/dist/llm/responses-stream-watchdog.d.ts +14 -0
  70. package/dist/llm/responses-stream-watchdog.js +64 -0
  71. package/dist/llm/responses-stream-watchdog.js.map +1 -0
  72. package/dist/llm/responses-stream.d.ts +4 -0
  73. package/dist/llm/responses-stream.js +264 -0
  74. package/dist/llm/responses-stream.js.map +1 -0
  75. package/dist/llm/router.js +3 -0
  76. package/dist/llm/router.js.map +1 -1
  77. package/dist/llm/tool-protocol.js +35 -3
  78. package/dist/llm/tool-protocol.js.map +1 -1
  79. package/dist/mcp/auth/host-credentials.d.ts +11 -0
  80. package/dist/mcp/auth/host-credentials.js +54 -0
  81. package/dist/mcp/auth/host-credentials.js.map +1 -0
  82. package/dist/mcp/auth/loopback.d.ts +16 -0
  83. package/dist/mcp/auth/loopback.js +126 -0
  84. package/dist/mcp/auth/loopback.js.map +1 -0
  85. package/dist/mcp/auth/metadata.d.ts +9 -0
  86. package/dist/mcp/auth/metadata.js +102 -0
  87. package/dist/mcp/auth/metadata.js.map +1 -0
  88. package/dist/mcp/auth/pkce.d.ts +3 -0
  89. package/dist/mcp/auth/pkce.js +17 -0
  90. package/dist/mcp/auth/pkce.js.map +1 -0
  91. package/dist/mcp/auth/provider.d.ts +24 -0
  92. package/dist/mcp/auth/provider.js +372 -0
  93. package/dist/mcp/auth/provider.js.map +1 -0
  94. package/dist/mcp/auth/registration.d.ts +12 -0
  95. package/dist/mcp/auth/registration.js +38 -0
  96. package/dist/mcp/auth/registration.js.map +1 -0
  97. package/dist/mcp/auth/security.d.ts +2 -0
  98. package/dist/mcp/auth/security.js +29 -0
  99. package/dist/mcp/auth/security.js.map +1 -0
  100. package/dist/mcp/auth/token-exchange.d.ts +24 -0
  101. package/dist/mcp/auth/token-exchange.js +66 -0
  102. package/dist/mcp/auth/token-exchange.js.map +1 -0
  103. package/dist/mcp/auth/token-store.d.ts +3 -0
  104. package/dist/mcp/auth/token-store.js +170 -0
  105. package/dist/mcp/auth/token-store.js.map +1 -0
  106. package/dist/mcp/auth/types.d.ts +62 -0
  107. package/dist/mcp/auth/types.js +2 -0
  108. package/dist/mcp/auth/types.js.map +1 -0
  109. package/dist/mcp/auth/www-authenticate.d.ts +2 -0
  110. package/dist/mcp/auth/www-authenticate.js +42 -0
  111. package/dist/mcp/auth/www-authenticate.js.map +1 -0
  112. package/dist/mcp/discovery.js +48 -1
  113. package/dist/mcp/discovery.js.map +1 -1
  114. package/dist/mcp/manager.d.ts +19 -0
  115. package/dist/mcp/manager.js +102 -10
  116. package/dist/mcp/manager.js.map +1 -1
  117. package/dist/mcp/mentions.js +2 -2
  118. package/dist/mcp/mentions.js.map +1 -1
  119. package/dist/mcp/runtime.d.ts +12 -0
  120. package/dist/mcp/runtime.js +146 -8
  121. package/dist/mcp/runtime.js.map +1 -1
  122. package/dist/mcp/transport-http.d.ts +12 -1
  123. package/dist/mcp/transport-http.js +160 -45
  124. package/dist/mcp/transport-http.js.map +1 -1
  125. package/dist/mcp/types.d.ts +18 -0
  126. package/dist/mcp/types.js.map +1 -1
  127. package/dist/mcp/validation.d.ts +10 -1
  128. package/dist/mcp/validation.js +111 -1
  129. package/dist/mcp/validation.js.map +1 -1
  130. package/dist/noninteractive/cancellation.d.ts +15 -0
  131. package/dist/noninteractive/cancellation.js +49 -0
  132. package/dist/noninteractive/cancellation.js.map +1 -0
  133. package/dist/noninteractive/readline-prompts.d.ts +1 -0
  134. package/dist/noninteractive/readline-prompts.js +14 -0
  135. package/dist/noninteractive/readline-prompts.js.map +1 -1
  136. package/dist/noninteractive/start-noninteractive.js +11 -10
  137. package/dist/noninteractive/start-noninteractive.js.map +1 -1
  138. package/dist/os/screen-sequences.d.ts +4 -0
  139. package/dist/os/screen-sequences.js +9 -0
  140. package/dist/os/screen-sequences.js.map +1 -1
  141. package/dist/os/terminal-rescue.js +2 -2
  142. package/dist/os/terminal-rescue.js.map +1 -1
  143. package/dist/os/terminal-write.d.ts +5 -0
  144. package/dist/os/terminal-write.js +45 -0
  145. package/dist/os/terminal-write.js.map +1 -0
  146. package/dist/safety/classifier.js +7 -2
  147. package/dist/safety/classifier.js.map +1 -1
  148. package/dist/session-runtime/alt-screen.js +2 -1
  149. package/dist/session-runtime/alt-screen.js.map +1 -1
  150. package/dist/session-runtime/child-bridge.d.ts +1 -1
  151. package/dist/session-runtime/child-bridge.js +7 -2
  152. package/dist/session-runtime/child-bridge.js.map +1 -1
  153. package/dist/session-runtime/client.js +13 -5
  154. package/dist/session-runtime/client.js.map +1 -1
  155. package/dist/session-runtime/host.d.ts +2 -0
  156. package/dist/session-runtime/host.js +19 -2
  157. package/dist/session-runtime/host.js.map +1 -1
  158. package/dist/session-runtime/reaper.d.ts +4 -0
  159. package/dist/session-runtime/reaper.js +64 -0
  160. package/dist/session-runtime/reaper.js.map +1 -0
  161. package/dist/session-runtime/terminal-modes.d.ts +8 -0
  162. package/dist/session-runtime/terminal-modes.js +51 -0
  163. package/dist/session-runtime/terminal-modes.js.map +1 -0
  164. package/dist/session-runtime/types.d.ts +2 -0
  165. package/dist/store/config.js +1 -0
  166. package/dist/store/config.js.map +1 -1
  167. package/dist/store/history.d.ts +9 -3
  168. package/dist/store/history.js +39 -8
  169. package/dist/store/history.js.map +1 -1
  170. package/dist/store/session-model.d.ts +28 -0
  171. package/dist/store/session-model.js +212 -0
  172. package/dist/store/session-model.js.map +1 -0
  173. package/dist/tools/definitions.d.ts +2 -0
  174. package/dist/tools/definitions.js +54 -0
  175. package/dist/tools/definitions.js.map +1 -1
  176. package/dist/tui-v2/bootstrap/renderer-handle.d.ts +2 -1
  177. package/dist/tui-v2/bootstrap/renderer-handle.js +2 -1
  178. package/dist/tui-v2/bootstrap/renderer-handle.js.map +1 -1
  179. package/dist/tui-v2/bootstrap/resize-repaint.d.ts +3 -1
  180. package/dist/tui-v2/bootstrap/resize-repaint.js +18 -2
  181. package/dist/tui-v2/bootstrap/resize-repaint.js.map +1 -1
  182. package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +1 -0
  183. package/dist/tui-v2/bootstrap/start-tui-v2.js +20 -17
  184. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  185. package/dist/tui-v2/components/transcript/intro-card.js +2 -2
  186. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  187. package/dist/tui-v2/composer/composer-editor.js +4 -2
  188. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  189. package/dist/types.d.ts +1 -1
  190. package/dist/types.js +1 -0
  191. package/dist/types.js.map +1 -1
  192. package/dist/ui-core/bootstrap/composition-root.d.ts +2 -2
  193. package/dist/ui-core/bootstrap/composition-root.js +3 -1
  194. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  195. package/dist/ui-core/bootstrap/exit-epilogue.d.ts +2 -2
  196. package/dist/ui-core/bootstrap/exit-epilogue.js +1 -1
  197. package/dist/ui-core/bootstrap/exit-epilogue.js.map +1 -1
  198. package/dist/ui-core/bootstrap/session-resume.js +10 -0
  199. package/dist/ui-core/bootstrap/session-resume.js.map +1 -1
  200. package/dist/ui-core/commands/mcp-commands.js +182 -70
  201. package/dist/ui-core/commands/mcp-commands.js.map +1 -1
  202. package/dist/ui-core/commands/picker-commands.js +10 -8
  203. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  204. package/dist/ui-core/commands/session-commands.js +41 -8
  205. package/dist/ui-core/commands/session-commands.js.map +1 -1
  206. package/dist/version.generated.d.ts +2 -2
  207. package/dist/version.generated.js +2 -2
  208. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ import type { CompletionRequest } from "../types.js";
2
+ import type { TokenUsage } from "./token-usage.js";
3
+ import type { StreamTerminalProof } from "./provider-profile.js";
4
+ import type { ResponsesDialectConfig } from "./responses-config.js";
5
+ import type { ToolCallAccumulator } from "./responses-parse.js";
6
+ import type { StreamIdleWatchdog } from "./responses-stream-watchdog.js";
7
+ export interface StreamAccumulator {
8
+ full: string;
9
+ visible: string;
10
+ reasoningSeen: string;
11
+ finishReason: string | undefined;
12
+ sawTerminalProof: StreamTerminalProof | undefined;
13
+ streamUsage: TokenUsage | undefined;
14
+ responseId: string | undefined;
15
+ readonly toolCallState: Map<string, ToolCallAccumulator>;
16
+ readonly outputIndexToItemId: Map<number, string>;
17
+ readonly outputIndexToToolCallIndex: Map<number, number>;
18
+ readonly reasoningItems: Array<Record<string, unknown>>;
19
+ readonly reasoningItemSequences: number[];
20
+ readonly reasoningItemToolCallIndices: Array<number | undefined>;
21
+ readonly reasoningItemIndexes: Map<string, number>;
22
+ }
23
+ export declare function newStreamAccumulator(): StreamAccumulator;
24
+ export declare function noteReasoningItem(state: StreamAccumulator, item: Record<string, unknown>, sequence?: number | undefined, toolCallIndex?: number | undefined): void;
25
+ export declare function absorbResponseOutput(state: StreamAccumulator, resp: Record<string, unknown>, emitVisible: (text: string) => void, emitReasoningDelta: (text: string) => void): void;
26
+ export declare function streamReasoningReplay(config: ResponsesDialectConfig, model: string, state: StreamAccumulator, onStreamEvent: CompletionRequest["onStreamEvent"]): Record<string, unknown>;
27
+ export declare function streamUsageResult(state: StreamAccumulator): {
28
+ usage: TokenUsage;
29
+ } | Record<string, never>;
30
+ export interface StreamEventContext {
31
+ config: ResponsesDialectConfig;
32
+ model: string;
33
+ request: CompletionRequest;
34
+ state: StreamAccumulator;
35
+ watchdog: StreamIdleWatchdog;
36
+ emitVisible: (text: string) => void;
37
+ emitReasoningDelta: (text: string) => void;
38
+ }
@@ -0,0 +1,102 @@
1
+ import { toWireName } from "./tool-protocol.js";
2
+ import { withReasoningObservation } from "./token-usage.js";
3
+ import { emitStreamReasoningArtifacts } from "./stream-events.js";
4
+ import { parseResponsesOutput, responsesReasoningArtifacts, } from "./responses-parse.js";
5
+ export function newStreamAccumulator() {
6
+ return {
7
+ full: "",
8
+ visible: "",
9
+ reasoningSeen: "",
10
+ finishReason: undefined,
11
+ sawTerminalProof: undefined,
12
+ streamUsage: undefined,
13
+ responseId: undefined,
14
+ toolCallState: new Map(),
15
+ outputIndexToItemId: new Map(),
16
+ outputIndexToToolCallIndex: new Map(),
17
+ reasoningItems: [],
18
+ reasoningItemSequences: [],
19
+ reasoningItemToolCallIndices: [],
20
+ reasoningItemIndexes: new Map(),
21
+ };
22
+ }
23
+ export function noteReasoningItem(state, item, sequence, toolCallIndex) {
24
+ const encrypted = typeof item.encrypted_content === "string" ? item.encrypted_content : "";
25
+ if (!encrypted)
26
+ return;
27
+ const id = typeof item.id === "string" ? item.id : undefined;
28
+ const key = id ?? encrypted.slice(0, 64);
29
+ const existingIndex = state.reasoningItemIndexes.get(key);
30
+ if (existingIndex !== undefined) {
31
+ state.reasoningItems[existingIndex] = { ...item };
32
+ if (sequence !== undefined)
33
+ state.reasoningItemSequences[existingIndex] = sequence;
34
+ if (toolCallIndex !== undefined) {
35
+ state.reasoningItemToolCallIndices[existingIndex] = toolCallIndex;
36
+ }
37
+ return;
38
+ }
39
+ state.reasoningItemIndexes.set(key, state.reasoningItems.length);
40
+ state.reasoningItems.push({ ...item });
41
+ state.reasoningItemSequences.push(sequence ?? Number.MAX_SAFE_INTEGER);
42
+ state.reasoningItemToolCallIndices.push(toolCallIndex);
43
+ }
44
+ function reasoningItemPositionsFor(state) {
45
+ const toolCallSequences = [...state.outputIndexToToolCallIndex.entries()]
46
+ .map(([sequence, toolCallIndex]) => ({ sequence, toolCallIndex }))
47
+ .sort((left, right) => left.sequence - right.sequence);
48
+ return state.reasoningItemSequences.map((sequence, index) => {
49
+ const storedToolCallIndex = state.reasoningItemToolCallIndices[index];
50
+ if (storedToolCallIndex !== undefined) {
51
+ return { sequence, toolCallIndex: storedToolCallIndex };
52
+ }
53
+ const followingTool = toolCallSequences.find((toolCall) => toolCall.sequence > sequence);
54
+ return followingTool
55
+ ? { sequence, toolCallIndex: followingTool.toolCallIndex }
56
+ : { sequence };
57
+ });
58
+ }
59
+ export function absorbResponseOutput(state, resp, emitVisible, emitReasoningDelta) {
60
+ if (!Array.isArray(resp.output))
61
+ return;
62
+ const out = parseResponsesOutput(resp);
63
+ for (const [index, item] of out.reasoningItems.entries()) {
64
+ const position = out.reasoningItemPositions[index];
65
+ noteReasoningItem(state, item, position?.sequence, position?.toolCallIndex);
66
+ }
67
+ if (out.reasoningSummary && !state.reasoningSeen.trim()) {
68
+ emitReasoningDelta(out.reasoningSummary);
69
+ }
70
+ if (out.text && !state.visible.trim())
71
+ emitVisible(out.text);
72
+ for (const tc of out.toolCalls) {
73
+ const exists = [...state.toolCallState.values()].some((s) => s.callId === tc.id);
74
+ if (!exists) {
75
+ state.toolCallState.set(tc.id, {
76
+ id: tc.id,
77
+ callId: tc.id,
78
+ name: toWireName(tc.name),
79
+ arguments: tc.rawArguments ?? JSON.stringify(tc.args),
80
+ });
81
+ }
82
+ }
83
+ }
84
+ export function streamReasoningReplay(config, model, state, onStreamEvent) {
85
+ if (!state.reasoningItems.length) {
86
+ return state.reasoningSeen
87
+ ? { reasoningBlock: { text: state.reasoningSeen } }
88
+ : {};
89
+ }
90
+ const positions = reasoningItemPositionsFor(state);
91
+ const reasoningArtifacts = responsesReasoningArtifacts(config, model, state.reasoningItems, positions);
92
+ emitStreamReasoningArtifacts(onStreamEvent, reasoningArtifacts);
93
+ return {
94
+ reasoningBlock: { text: state.reasoningSeen, items: state.reasoningItems },
95
+ ...(reasoningArtifacts ? { reasoningArtifacts } : {}),
96
+ };
97
+ }
98
+ export function streamUsageResult(state) {
99
+ const usage = withReasoningObservation(state.streamUsage, Boolean(state.reasoningSeen.trim()));
100
+ return usage ? { usage } : {};
101
+ }
102
+ //# sourceMappingURL=responses-stream-accumulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-stream-accumulator.js","sourceRoot":"","sources":["../../src/llm/responses-stream-accumulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CompletionResult, NativeToolCall } from "../types.js";
2
+ import type { StreamEventContext } from "./responses-stream-accumulator.js";
3
+ export declare function dispatchStreamEvent(ctx: StreamEventContext, parsed: Record<string, unknown>, payload: string): void;
4
+ export declare function finalizeStreamResult(ctx: StreamEventContext, toolCalls: NativeToolCall[]): CompletionResult;
5
+ export declare function maybeAppendPrivateReasoning(ctx: StreamEventContext): void;
6
+ export declare function processStreamPayload(ctx: StreamEventContext, payload: string): CompletionResult | undefined;
@@ -0,0 +1,398 @@
1
+ import { ProviderError } from "./http.js";
2
+ import { fromWireName } from "./tool-protocol.js";
3
+ import { emitStreamReasoningDelta } from "./stream-events.js";
4
+ import { collectDoneToolCalls, extractReasoningSummary, parseResponsesUsage, } from "./responses-parse.js";
5
+ import { responsesPrivateReasoningNote } from "./responses-http.js";
6
+ import { absorbResponseOutput, noteReasoningItem, streamReasoningReplay, streamUsageResult, } from "./responses-stream-accumulator.js";
7
+ function resolveAddedItemId(item, parsed) {
8
+ if (typeof item.id === "string")
9
+ return item.id;
10
+ if (typeof parsed.item_id === "string")
11
+ return parsed.item_id;
12
+ return undefined;
13
+ }
14
+ function handleReasoningItemAdded(ctx, item, outputIndex) {
15
+ noteReasoningItem(ctx.state, item, outputIndex);
16
+ const s = extractReasoningSummary(item);
17
+ if (s) {
18
+ ctx.watchdog.resetIdleTimer();
19
+ ctx.emitReasoningDelta(s);
20
+ }
21
+ }
22
+ function handleOutputItemAdded(ctx, parsed) {
23
+ const item = parsed.item;
24
+ if (!item)
25
+ return;
26
+ const outputIndex = typeof parsed.output_index === "number" ? parsed.output_index : undefined;
27
+ const itemId = resolveAddedItemId(item, parsed);
28
+ if (outputIndex !== undefined && itemId) {
29
+ ctx.state.outputIndexToItemId.set(outputIndex, itemId);
30
+ }
31
+ if (item.type === "function_call") {
32
+ registerFunctionCallItem(ctx, item, outputIndex, itemId);
33
+ }
34
+ else if (item.type === "reasoning") {
35
+ handleReasoningItemAdded(ctx, item, outputIndex);
36
+ }
37
+ else if (item.type === "message") {
38
+ ctx.watchdog.resetIdleTimer();
39
+ }
40
+ }
41
+ function resolveFunctionCallId(item, itemId, size) {
42
+ if (typeof item.id === "string")
43
+ return item.id;
44
+ if (typeof item.call_id === "string")
45
+ return item.call_id;
46
+ return itemId ?? `call_${size}`;
47
+ }
48
+ function emitToolCallStarted(ctx, index, callId, name, argumentsBytes) {
49
+ if (!ctx.request.onToolCallDelta)
50
+ return;
51
+ const canonical = name ? fromWireName(name) ?? name : undefined;
52
+ ctx.request.onToolCallDelta({
53
+ index,
54
+ ...(callId ? { id: callId } : {}),
55
+ ...(canonical ? { name: canonical } : {}),
56
+ argumentsBytes,
57
+ });
58
+ }
59
+ function registerFunctionCallItem(ctx, item, outputIndex, itemId) {
60
+ const id = resolveFunctionCallId(item, itemId, ctx.state.toolCallState.size);
61
+ const callId = typeof item.call_id === "string" ? item.call_id : id;
62
+ const name = typeof item.name === "string" ? item.name : "";
63
+ const args = typeof item.arguments === "string" ? item.arguments : "";
64
+ const toolCallIndex = ctx.state.toolCallState.size;
65
+ ctx.state.toolCallState.set(id, { id, callId, name, arguments: args });
66
+ if (outputIndex !== undefined) {
67
+ ctx.state.outputIndexToToolCallIndex.set(outputIndex, toolCallIndex);
68
+ }
69
+ ctx.watchdog.resetIdleTimer();
70
+ emitToolCallStarted(ctx, ctx.state.toolCallState.size - 1, callId, name, args.length);
71
+ }
72
+ function handleOutputItemDone(ctx, parsed) {
73
+ const item = parsed.item;
74
+ if (item?.type === "reasoning") {
75
+ noteReasoningItem(ctx.state, item, typeof parsed.output_index === "number" ? parsed.output_index : undefined);
76
+ }
77
+ if (item?.type === "function_call") {
78
+ mergeFunctionCallDone(ctx, parsed, item);
79
+ ctx.watchdog.resetIdleTimer();
80
+ }
81
+ if (item && typeof item.status === "string") {
82
+ ctx.state.finishReason = item.status;
83
+ }
84
+ }
85
+ function applyFunctionCallDoneFields(state, item) {
86
+ if (typeof item.arguments === "string" &&
87
+ item.arguments.length > state.arguments.length) {
88
+ state.arguments = item.arguments;
89
+ }
90
+ if (typeof item.name === "string" && !state.name)
91
+ state.name = item.name;
92
+ if (typeof item.call_id === "string" && !state.callId) {
93
+ state.callId = item.call_id;
94
+ }
95
+ }
96
+ function mergeFunctionCallDone(ctx, parsed, item) {
97
+ const id = typeof item.id === "string"
98
+ ? item.id
99
+ : typeof parsed.item_id === "string"
100
+ ? parsed.item_id
101
+ : undefined;
102
+ if (!id || !ctx.state.toolCallState.has(id))
103
+ return;
104
+ applyFunctionCallDoneFields(ctx.state.toolCallState.get(id), item);
105
+ }
106
+ function handleFunctionArgsDelta(ctx, parsed) {
107
+ const delta = typeof parsed.delta === "string" ? parsed.delta : "";
108
+ const targetId = resolveFunctionArgsTarget(ctx, parsed);
109
+ if (targetId) {
110
+ applyFunctionArgsDelta(ctx, targetId, delta);
111
+ return;
112
+ }
113
+ if (delta) {
114
+ const anyKey = [...ctx.state.toolCallState.keys()].pop();
115
+ if (anyKey) {
116
+ ctx.state.toolCallState.get(anyKey).arguments += delta;
117
+ ctx.watchdog.resetIdleTimer();
118
+ }
119
+ }
120
+ }
121
+ function resolveFunctionArgsTarget(ctx, parsed) {
122
+ const itemId = typeof parsed.item_id === "string"
123
+ ? parsed.item_id
124
+ : typeof parsed.itemId === "string"
125
+ ? parsed.itemId
126
+ : undefined;
127
+ if (itemId)
128
+ return itemId;
129
+ if (typeof parsed.output_index === "number") {
130
+ return ctx.state.outputIndexToItemId.get(parsed.output_index);
131
+ }
132
+ return undefined;
133
+ }
134
+ function applyFunctionArgsDelta(ctx, targetId, delta) {
135
+ const state = ctx.state.toolCallState.get(targetId);
136
+ if (!state) {
137
+ ctx.state.toolCallState.set(targetId, {
138
+ id: targetId,
139
+ callId: targetId,
140
+ name: "",
141
+ arguments: delta,
142
+ });
143
+ ctx.watchdog.resetIdleTimer();
144
+ return;
145
+ }
146
+ state.arguments += delta;
147
+ ctx.watchdog.resetIdleTimer();
148
+ if (ctx.request.onToolCallDelta) {
149
+ const canonical = state.name ? fromWireName(state.name) ?? state.name : undefined;
150
+ ctx.request.onToolCallDelta({
151
+ index: [...ctx.state.toolCallState.keys()].indexOf(targetId),
152
+ ...(state.callId ? { id: state.callId } : {}),
153
+ ...(canonical ? { name: canonical } : {}),
154
+ argumentsBytes: state.arguments.length,
155
+ });
156
+ }
157
+ }
158
+ function resolveArgsDoneTarget(ctx, parsed) {
159
+ if (typeof parsed.item_id === "string")
160
+ return parsed.item_id;
161
+ if (typeof parsed.output_index === "number") {
162
+ return ctx.state.outputIndexToItemId.get(parsed.output_index);
163
+ }
164
+ return undefined;
165
+ }
166
+ function assignArgsDone(ctx, targetId, args) {
167
+ if (targetId && ctx.state.toolCallState.has(targetId) && args) {
168
+ ctx.state.toolCallState.get(targetId).arguments = args;
169
+ return;
170
+ }
171
+ if (args && ctx.state.toolCallState.size > 0) {
172
+ const lastKey = [...ctx.state.toolCallState.keys()].pop();
173
+ if (!ctx.state.toolCallState.get(lastKey).arguments) {
174
+ ctx.state.toolCallState.get(lastKey).arguments = args;
175
+ }
176
+ }
177
+ }
178
+ function handleFunctionArgsDone(ctx, parsed) {
179
+ const args = typeof parsed.arguments === "string"
180
+ ? parsed.arguments
181
+ : typeof parsed.argument === "string"
182
+ ? parsed.argument
183
+ : "";
184
+ assignArgsDone(ctx, resolveArgsDoneTarget(ctx, parsed), args);
185
+ ctx.watchdog.resetIdleTimer();
186
+ }
187
+ function handleResponseCompleted(ctx, parsed) {
188
+ ctx.state.sawTerminalProof = "response-completed";
189
+ const resp = (parsed.response ?? parsed);
190
+ if (resp.usage) {
191
+ const u = parseResponsesUsage(resp.usage);
192
+ if (u)
193
+ ctx.state.streamUsage = u;
194
+ }
195
+ if (typeof resp.status === "string")
196
+ ctx.state.finishReason = resp.status;
197
+ absorbResponseOutput(ctx.state, resp, ctx.emitVisible, ctx.emitReasoningDelta);
198
+ }
199
+ function handleResponseIncomplete(ctx, parsed) {
200
+ const resp = (parsed.response ?? parsed);
201
+ const details = resp.incomplete_details;
202
+ const reason = typeof details?.reason === "string" ? details.reason : "";
203
+ if (resp.usage) {
204
+ const u = parseResponsesUsage(resp.usage);
205
+ if (u)
206
+ ctx.state.streamUsage = u;
207
+ }
208
+ absorbResponseOutput(ctx.state, resp, ctx.emitVisible, ctx.emitReasoningDelta);
209
+ ctx.state.finishReason = reason === "max_output_tokens" ? "length" : "incomplete";
210
+ ctx.state.sawTerminalProof = "response-incomplete";
211
+ }
212
+ function throwStreamPayloadError(config, errorLike, payload) {
213
+ const rawDetail = typeof errorLike === "string"
214
+ ? errorLike
215
+ : errorLike.message ??
216
+ errorLike.type ??
217
+ "unknown error";
218
+ const detail = rawDetail.trim().length <= 2 ? `${rawDetail} — ${payload.slice(0, 300)}` : rawDetail;
219
+ throw new ProviderError(`${config.displayName} stream error: ${detail}`, undefined, payload.slice(0, 1000));
220
+ }
221
+ function throwFailedResponseError(config, resp, type, payload) {
222
+ const err = resp.error;
223
+ const rawDetail = err?.message ?? err?.code ?? type;
224
+ const rawStr = String(rawDetail);
225
+ const detail = rawStr.trim().length <= 2 ? `${rawStr} — ${payload.slice(0, 300)}` : rawStr;
226
+ throw new ProviderError(`${config.displayName} stream error: ${detail}`, undefined, payload.slice(0, 1000));
227
+ }
228
+ function dispatchLifecycleEvent(ctx, type, parsed) {
229
+ if (type === "response.created" || type === "response.in_progress") {
230
+ const resp = (parsed.response ?? parsed);
231
+ if (typeof resp.id === "string")
232
+ ctx.state.responseId = resp.id;
233
+ return true;
234
+ }
235
+ if (type === "response.content_part.added" ||
236
+ type === "response.content_part.done") {
237
+ return true;
238
+ }
239
+ return false;
240
+ }
241
+ function dispatchItemEvent(ctx, type, parsed) {
242
+ if (type === "response.output_item.added") {
243
+ handleOutputItemAdded(ctx, parsed);
244
+ return true;
245
+ }
246
+ if (type === "response.output_item.done") {
247
+ handleOutputItemDone(ctx, parsed);
248
+ return true;
249
+ }
250
+ return false;
251
+ }
252
+ function dispatchContentDeltaEvent(ctx, type, parsed) {
253
+ if (type === "response.output_text.delta") {
254
+ const delta = typeof parsed.delta === "string" ? parsed.delta : "";
255
+ if (delta) {
256
+ ctx.watchdog.resetIdleTimer();
257
+ ctx.emitVisible(delta);
258
+ }
259
+ return true;
260
+ }
261
+ return dispatchReasoningEvent(ctx, type, parsed);
262
+ }
263
+ function dispatchToolEvent(ctx, type, parsed) {
264
+ if (type === "response.function_call_arguments.delta") {
265
+ handleFunctionArgsDelta(ctx, parsed);
266
+ return true;
267
+ }
268
+ if (type === "response.function_call_arguments.done") {
269
+ handleFunctionArgsDone(ctx, parsed);
270
+ return true;
271
+ }
272
+ return false;
273
+ }
274
+ function dispatchTerminalEvent(ctx, type, parsed, payload) {
275
+ if (type === "response.completed") {
276
+ handleResponseCompleted(ctx, parsed);
277
+ return true;
278
+ }
279
+ if (type === "response.failed" || type === "response.incomplete") {
280
+ if (type === "response.incomplete") {
281
+ handleResponseIncomplete(ctx, parsed);
282
+ return true;
283
+ }
284
+ const resp = (parsed.response ?? parsed);
285
+ throwFailedResponseError(ctx.config, resp, type, payload);
286
+ }
287
+ return false;
288
+ }
289
+ export function dispatchStreamEvent(ctx, parsed, payload) {
290
+ if (parsed.error) {
291
+ throwStreamPayloadError(ctx.config, parsed.error, payload);
292
+ }
293
+ const type = parsed.type;
294
+ if (dispatchLifecycleEvent(ctx, type, parsed))
295
+ return;
296
+ if (dispatchItemEvent(ctx, type, parsed))
297
+ return;
298
+ if (dispatchContentDeltaEvent(ctx, type, parsed))
299
+ return;
300
+ if (dispatchToolEvent(ctx, type, parsed))
301
+ return;
302
+ if (dispatchTerminalEvent(ctx, type, parsed, payload))
303
+ return;
304
+ absorbTrailingUsage(ctx, parsed);
305
+ }
306
+ function dispatchReasoningEvent(ctx, type, parsed) {
307
+ if (type === "response.reasoning_summary_text.delta") {
308
+ const delta = typeof parsed.delta === "string" ? parsed.delta : "";
309
+ if (delta) {
310
+ ctx.watchdog.resetIdleTimer();
311
+ ctx.emitReasoningDelta(delta);
312
+ }
313
+ return true;
314
+ }
315
+ if (type === "response.reasoning_summary_text.done") {
316
+ const textVal = typeof parsed.text === "string" ? parsed.text : "";
317
+ if (textVal && !ctx.state.reasoningSeen.includes(textVal)) {
318
+ const remaining = textVal.slice(ctx.state.reasoningSeen.length);
319
+ if (remaining) {
320
+ ctx.watchdog.resetIdleTimer();
321
+ ctx.emitReasoningDelta(remaining);
322
+ }
323
+ }
324
+ return true;
325
+ }
326
+ return false;
327
+ }
328
+ function absorbTrailingUsage(ctx, parsed) {
329
+ const usageField = parsed.usage;
330
+ if (usageField) {
331
+ const u = parseResponsesUsage(usageField);
332
+ if (u) {
333
+ ctx.state.streamUsage = u;
334
+ ctx.watchdog.resetIdleTimer();
335
+ }
336
+ }
337
+ if (parsed.choices) {
338
+ const chunkUsage = parseResponsesUsage(parsed.usage);
339
+ if (chunkUsage)
340
+ ctx.state.streamUsage = chunkUsage;
341
+ }
342
+ }
343
+ export function finalizeStreamResult(ctx, toolCalls) {
344
+ const { config, model, state, request } = ctx;
345
+ if (!state.visible.trim() && toolCalls.length === 0) {
346
+ if (state.reasoningSeen.trim() || state.finishReason === "length") {
347
+ return {
348
+ text: state.full,
349
+ provider: config.providerId,
350
+ model,
351
+ finishReason: state.finishReason ?? "stop",
352
+ ...streamUsageResult(state),
353
+ ...streamReasoningReplay(config, model, state, request.onStreamEvent),
354
+ };
355
+ }
356
+ throw new ProviderError(`${config.displayName} completed without a visible answer.`);
357
+ }
358
+ return {
359
+ text: state.full,
360
+ provider: config.providerId,
361
+ model,
362
+ ...(toolCalls.length ? { toolCalls } : {}),
363
+ ...(state.finishReason
364
+ ? { finishReason: state.finishReason }
365
+ : toolCalls.length
366
+ ? { finishReason: "tool_calls" }
367
+ : {}),
368
+ ...streamUsageResult(state),
369
+ ...streamReasoningReplay(config, model, state, request.onStreamEvent),
370
+ };
371
+ }
372
+ export function maybeAppendPrivateReasoning(ctx) {
373
+ const { state, config, request } = ctx;
374
+ if (!state.reasoningSeen.trim() &&
375
+ state.streamUsage?.reasoningTokens &&
376
+ state.streamUsage.reasoningTokens > 0 &&
377
+ (state.visible.trim() || state.toolCallState.size > 0)) {
378
+ const note = responsesPrivateReasoningNote(config, request, state.streamUsage.reasoningTokens);
379
+ state.reasoningSeen += note;
380
+ emitStreamReasoningDelta(request.onStreamEvent, note);
381
+ }
382
+ }
383
+ export function processStreamPayload(ctx, payload) {
384
+ if (payload === "[DONE]") {
385
+ maybeAppendPrivateReasoning(ctx);
386
+ return finalizeStreamResult(ctx, collectDoneToolCalls(ctx.state.toolCallState));
387
+ }
388
+ let parsed;
389
+ try {
390
+ parsed = JSON.parse(payload);
391
+ }
392
+ catch {
393
+ return undefined;
394
+ }
395
+ dispatchStreamEvent(ctx, parsed, payload);
396
+ return undefined;
397
+ }
398
+ //# sourceMappingURL=responses-stream-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-stream-events.js","sourceRoot":"","sources":["../../src/llm/responses-stream-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface StreamIdleWatchdog {
2
+ readonly controller: AbortController;
3
+ readonly noteTransportActivity: () => void;
4
+ readonly resetIdleTimer: () => void;
5
+ readonly armInitialTransport: () => void;
6
+ readonly armOutputTimer: () => void;
7
+ readonly clear: () => void;
8
+ readonly fired: () => boolean;
9
+ readonly firedWatchdog: () => "transport" | "output" | undefined;
10
+ readonly firedBudgetMs: () => number;
11
+ readonly sawTransportActivity: () => boolean;
12
+ readonly sawStreamProgress: () => boolean;
13
+ }
14
+ export declare function createStreamIdleWatchdog(): StreamIdleWatchdog;
@@ -0,0 +1,64 @@
1
+ import { THINKING_STREAM_IDLE_TIMEOUT_MS, THINKING_STREAM_INITIAL_IDLE_TIMEOUT_MS, } from "./http.js";
2
+ export function createStreamIdleWatchdog() {
3
+ const idleTimeoutMs = THINKING_STREAM_IDLE_TIMEOUT_MS;
4
+ const initialIdleTimeoutMs = THINKING_STREAM_INITIAL_IDLE_TIMEOUT_MS;
5
+ const outputIdleTimeoutMs = Math.round(Math.max(idleTimeoutMs, initialIdleTimeoutMs) * 1.5);
6
+ const controller = new AbortController();
7
+ let transportTimer;
8
+ let outputTimer;
9
+ let idleFired = false;
10
+ let firedWatchdog;
11
+ let firedBudgetMs = initialIdleTimeoutMs;
12
+ let sawTransportActivity = false;
13
+ let sawStreamProgress = false;
14
+ const fireStall = (watchdog, budgetMs) => {
15
+ if (idleFired)
16
+ return;
17
+ idleFired = true;
18
+ firedWatchdog = watchdog;
19
+ firedBudgetMs = budgetMs;
20
+ controller.abort();
21
+ };
22
+ const armTransportTimer = (budgetMs) => {
23
+ if (transportTimer)
24
+ clearTimeout(transportTimer);
25
+ transportTimer = setTimeout(() => fireStall("transport", budgetMs), budgetMs);
26
+ };
27
+ const armOutputTimer = () => {
28
+ if (outputTimer)
29
+ clearTimeout(outputTimer);
30
+ outputTimer = setTimeout(() => fireStall("output", outputIdleTimeoutMs), outputIdleTimeoutMs);
31
+ };
32
+ const noteTransportActivity = () => {
33
+ sawTransportActivity = true;
34
+ armTransportTimer(idleTimeoutMs);
35
+ };
36
+ const resetIdleTimer = () => {
37
+ sawStreamProgress = true;
38
+ noteTransportActivity();
39
+ armOutputTimer();
40
+ };
41
+ armTransportTimer(initialIdleTimeoutMs);
42
+ armOutputTimer();
43
+ return {
44
+ controller,
45
+ noteTransportActivity,
46
+ resetIdleTimer,
47
+ armInitialTransport: () => armTransportTimer(initialIdleTimeoutMs),
48
+ armOutputTimer,
49
+ clear: () => {
50
+ if (transportTimer)
51
+ clearTimeout(transportTimer);
52
+ if (outputTimer)
53
+ clearTimeout(outputTimer);
54
+ transportTimer = undefined;
55
+ outputTimer = undefined;
56
+ },
57
+ fired: () => idleFired,
58
+ firedWatchdog: () => firedWatchdog,
59
+ firedBudgetMs: () => firedBudgetMs,
60
+ sawTransportActivity: () => sawTransportActivity,
61
+ sawStreamProgress: () => sawStreamProgress,
62
+ };
63
+ }
64
+ //# sourceMappingURL=responses-stream-watchdog.js.map