@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,88 @@
1
+ import { ProviderError, readJson } from "./http.js";
2
+ import { generationFetch } from "./operation-usage.js";
3
+ import { isOperationPolicyError } from "./operation-ledger.js";
4
+ import { buildResponsesBody } from "./responses-request.js";
5
+ export function readWithAbort(reader, signal) {
6
+ if (signal.aborted) {
7
+ return Promise.reject(signal.reason ?? new Error("Stream aborted"));
8
+ }
9
+ return new Promise((resolve, reject) => {
10
+ let settled = false;
11
+ const cleanup = () => signal.removeEventListener("abort", abort);
12
+ const succeed = (value) => {
13
+ if (settled)
14
+ return;
15
+ settled = true;
16
+ cleanup();
17
+ resolve(value);
18
+ };
19
+ const fail = (error) => {
20
+ if (settled)
21
+ return;
22
+ settled = true;
23
+ cleanup();
24
+ reject(error);
25
+ };
26
+ const abort = () => {
27
+ fail(signal.reason ?? new Error("Stream aborted"));
28
+ };
29
+ signal.addEventListener("abort", abort, { once: true });
30
+ try {
31
+ void reader.read().then(succeed, fail);
32
+ }
33
+ catch (error) {
34
+ fail(error);
35
+ }
36
+ });
37
+ }
38
+ export function responsesPrivateReasoningNote(config, request, reasoningTokens) {
39
+ const payload = config.reasoningPayload(request.thinking);
40
+ const effort = payload ? payload.effort : undefined;
41
+ const effortText = effort ? ` at ${effort} effort` : "";
42
+ return `Reasoning is private on ${config.displayName}: the model reasoned${effortText} and used ${reasoningTokens.toLocaleString("en-US")} reasoning tokens, but the API returns no reasoning text to display.`;
43
+ }
44
+ export async function postResponses(config, auth, body, signal, accept) {
45
+ try {
46
+ return await generationFetch(`${config.baseUrl}/responses`, {
47
+ method: "POST",
48
+ signal,
49
+ headers: config.buildHeaders(auth, accept),
50
+ body,
51
+ verbose: process.env.CLAI_VERBOSE === "true",
52
+ });
53
+ }
54
+ catch (error) {
55
+ if (error instanceof Error && error.name === "AbortError")
56
+ throw error;
57
+ if (isOperationPolicyError(error))
58
+ throw error;
59
+ const msg = error instanceof Error ? error.message : String(error);
60
+ throw new ProviderError(`${config.displayName} request could not be sent (${msg}). Check connectivity to ${config.baseUrl}.`);
61
+ }
62
+ }
63
+ export async function readResponsesJson(config, model, response, signal) {
64
+ try {
65
+ return await readJson(response, signal);
66
+ }
67
+ catch (error) {
68
+ if (error instanceof ProviderError) {
69
+ throw new ProviderError(`${config.displayName} (model=${model}): ${error.message}`, error.status, error.body, error.retryAfterSeconds);
70
+ }
71
+ throw error;
72
+ }
73
+ }
74
+ export function buildResponsesRequestBody(config, request, model, stream) {
75
+ return buildResponsesBody(config, {
76
+ model,
77
+ messages: request.messages,
78
+ maxTokens: request.maxTokens,
79
+ temperature: request.temperature,
80
+ stream,
81
+ reasoning: request.thinking,
82
+ tools: request.tools,
83
+ parallelToolCalls: request.parallelToolCalls,
84
+ purpose: request.purpose,
85
+ reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
86
+ });
87
+ }
88
+ //# sourceMappingURL=responses-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-http.js","sourceRoot":"","sources":["../../src/llm/responses-http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CompletionResult, NativeToolCall } from "../types.js";
2
+ import type { TokenUsage } from "./token-usage.js";
3
+ import type { ResponsesDialectConfig } from "./responses-config.js";
4
+ export interface ToolCallAccumulator {
5
+ id?: string;
6
+ name?: string;
7
+ arguments: string;
8
+ callId?: string;
9
+ }
10
+ export interface ResponsesReasoningItemPosition {
11
+ readonly sequence: number;
12
+ readonly toolCallIndex?: number | undefined;
13
+ }
14
+ export interface ParsedResponsesOutput {
15
+ text: string;
16
+ toolCalls: NativeToolCall[];
17
+ usage?: TokenUsage | undefined;
18
+ reasoningSummary: string;
19
+ reasoningItems: Array<Record<string, unknown>>;
20
+ reasoningItemPositions: ResponsesReasoningItemPosition[];
21
+ }
22
+ export declare function parseResponsesUsage(raw: unknown): TokenUsage | undefined;
23
+ declare function extractReasoningSummary(item: unknown): string;
24
+ export declare function parseResponsesOutput(data: {
25
+ output?: unknown;
26
+ usage?: unknown;
27
+ id?: string;
28
+ }): ParsedResponsesOutput;
29
+ export declare function responsesReasoningArtifacts(config: ResponsesDialectConfig, model: string, items: readonly Record<string, unknown>[], positions: readonly ResponsesReasoningItemPosition[]): import("../types.js").ReasoningArtifact[] | undefined;
30
+ export declare function collectDoneToolCalls(toolCallState: Map<string, ToolCallAccumulator>): NativeToolCall[];
31
+ export declare function collectEofToolCalls(toolCallState: Map<string, ToolCallAccumulator>): NativeToolCall[];
32
+ export declare function isOutputBudgetIncomplete(data: Record<string, unknown>): boolean;
33
+ export interface CompletionAssembly {
34
+ config: ResponsesDialectConfig;
35
+ model: string;
36
+ parsed: ParsedResponsesOutput;
37
+ usage: TokenUsage | undefined;
38
+ reasoningArtifacts: ReturnType<typeof responsesReasoningArtifacts>;
39
+ outputBudgetIncomplete: boolean;
40
+ }
41
+ export declare function assembleCompletionResult(input: CompletionAssembly): CompletionResult;
42
+ export { extractReasoningSummary };
@@ -0,0 +1,242 @@
1
+ import { fromWireName, parseToolArguments } from "./tool-protocol.js";
2
+ import { normalizeTokenUsage } from "./token-usage.js";
3
+ import { createReasoningArtifact, createReasoningArtifactProvenance, } from "./reasoning-artifacts.js";
4
+ export function parseResponsesUsage(raw) {
5
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
6
+ return undefined;
7
+ const u = raw;
8
+ const inputTokens = u.input_tokens ??
9
+ u.prompt_tokens ??
10
+ u.inputTokens;
11
+ const outputTokens = u.output_tokens ??
12
+ u.completion_tokens ??
13
+ u.outputTokens;
14
+ const totalTokens = u.total_tokens ??
15
+ u.totalTokens;
16
+ const inputDetails = u.input_tokens_details;
17
+ const promptDetails = u.prompt_tokens_details;
18
+ const outputDetails = u.output_tokens_details;
19
+ const completionDetails = u.completion_tokens_details;
20
+ const cached = inputDetails?.cached_tokens ?? promptDetails?.cached_tokens;
21
+ const cacheCreation = inputDetails?.cache_creation_tokens ??
22
+ promptDetails?.cache_creation_tokens ??
23
+ u.cache_creation_input_tokens;
24
+ const uncached = inputDetails?.uncached_tokens ??
25
+ promptDetails?.uncached_tokens ??
26
+ u.prompt_cache_miss_tokens;
27
+ const reasoning = outputDetails?.reasoning_tokens ?? completionDetails?.reasoning_tokens;
28
+ return normalizeTokenUsage({
29
+ promptTokens: inputTokens,
30
+ completionTokens: outputTokens,
31
+ totalTokens,
32
+ cachedPromptTokens: typeof cached === "number" ? cached : undefined,
33
+ cacheCreationTokens: typeof cacheCreation === "number" ? cacheCreation : undefined,
34
+ uncachedPromptTokens: typeof uncached === "number" ? uncached : undefined,
35
+ reasoningTokens: typeof reasoning === "number" ? reasoning : undefined,
36
+ exact: true,
37
+ });
38
+ }
39
+ function extractReasoningSummary(item) {
40
+ if (!item || typeof item !== "object")
41
+ return "";
42
+ const obj = item;
43
+ const summary = obj.summary;
44
+ if (!Array.isArray(summary))
45
+ return "";
46
+ let out = "";
47
+ for (const s of summary) {
48
+ if (s &&
49
+ typeof s === "object" &&
50
+ typeof s.text === "string") {
51
+ out += s.text;
52
+ }
53
+ }
54
+ return out;
55
+ }
56
+ function parseStreamToolArgs(raw) {
57
+ try {
58
+ const parsed = JSON.parse(raw);
59
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
60
+ return parsed;
61
+ }
62
+ return {};
63
+ }
64
+ catch {
65
+ return parseToolArguments(raw);
66
+ }
67
+ }
68
+ function parseResponsesFunctionCall(obj, index) {
69
+ const callId = typeof obj.call_id === "string"
70
+ ? obj.call_id
71
+ : typeof obj.id === "string"
72
+ ? obj.id
73
+ : `call_${index}`;
74
+ const nameWire = typeof obj.name === "string" ? obj.name : "";
75
+ const canonical = fromWireName(nameWire) ?? nameWire;
76
+ const rawArgs = typeof obj.arguments === "string"
77
+ ? obj.arguments
78
+ : JSON.stringify(obj.arguments ?? {});
79
+ return {
80
+ id: callId,
81
+ name: canonical,
82
+ args: parseStreamToolArgs(rawArgs),
83
+ rawArguments: rawArgs,
84
+ };
85
+ }
86
+ function appendAssistantMessageText(obj, current) {
87
+ const content = obj.content;
88
+ if (!Array.isArray(content))
89
+ return current;
90
+ let text = current;
91
+ for (const block of content) {
92
+ if (block && typeof block === "object") {
93
+ const b = block;
94
+ if (b.type === "output_text" && typeof b.text === "string") {
95
+ text += b.text;
96
+ }
97
+ }
98
+ }
99
+ return text;
100
+ }
101
+ export function parseResponsesOutput(data) {
102
+ const output = Array.isArray(data.output) ? data.output : [];
103
+ let text = "";
104
+ let reasoningSummary = "";
105
+ const toolCalls = [];
106
+ const reasoningItems = [];
107
+ const reasoningItemSequences = [];
108
+ const toolCallSequences = [];
109
+ for (const [sequence, item] of output.entries()) {
110
+ if (!item || typeof item !== "object")
111
+ continue;
112
+ const obj = item;
113
+ if (obj.type === "message" && obj.role === "assistant") {
114
+ text = appendAssistantMessageText(obj, text);
115
+ }
116
+ else if (obj.type === "reasoning") {
117
+ const s = extractReasoningSummary(obj);
118
+ if (s)
119
+ reasoningSummary += s;
120
+ if (typeof obj.encrypted_content === "string" && obj.encrypted_content) {
121
+ reasoningItems.push({ ...obj });
122
+ reasoningItemSequences.push(sequence);
123
+ }
124
+ }
125
+ else if (obj.type === "function_call") {
126
+ toolCallSequences.push({ sequence, toolCallIndex: toolCalls.length });
127
+ toolCalls.push(parseResponsesFunctionCall(obj, toolCalls.length));
128
+ }
129
+ }
130
+ const reasoningItemPositions = reasoningItemSequences.map((sequence) => {
131
+ const followingTool = toolCallSequences.find((toolCall) => toolCall.sequence > sequence);
132
+ return followingTool
133
+ ? { sequence, toolCallIndex: followingTool.toolCallIndex }
134
+ : { sequence };
135
+ });
136
+ return {
137
+ text,
138
+ toolCalls,
139
+ usage: parseResponsesUsage(data.usage),
140
+ reasoningSummary,
141
+ reasoningItems,
142
+ reasoningItemPositions,
143
+ };
144
+ }
145
+ export function responsesReasoningArtifacts(config, model, items, positions) {
146
+ const provenance = createReasoningArtifactProvenance({
147
+ provider: config.providerId,
148
+ model,
149
+ dialect: config.artifactDialect,
150
+ endpoint: config.baseUrl,
151
+ });
152
+ const artifacts = items.map((item, index) => {
153
+ const position = positions[index] ?? { sequence: index };
154
+ const replayable = position.toolCallIndex !== undefined;
155
+ return createReasoningArtifact({
156
+ kind: "encrypted",
157
+ raw: item,
158
+ provenance,
159
+ replay: replayable
160
+ ? { scope: "tool-turn", persistence: "tool-turn" }
161
+ : { scope: "none", persistence: "never" },
162
+ position: {
163
+ sequence: position.sequence,
164
+ placement: replayable ? "before-tool-call" : "assistant",
165
+ ...(replayable ? { toolCallIndex: position.toolCallIndex } : {}),
166
+ },
167
+ });
168
+ });
169
+ return artifacts.length ? artifacts : undefined;
170
+ }
171
+ export function collectDoneToolCalls(toolCallState) {
172
+ const toolCalls = [];
173
+ for (const [, state] of toolCallState) {
174
+ if (!state.name)
175
+ continue;
176
+ const canonical = state.name
177
+ ? fromWireName(state.name) ?? state.name
178
+ : state.name ?? "";
179
+ const raw = state.arguments;
180
+ toolCalls.push({
181
+ id: state.callId ?? state.id ?? `call_${toolCalls.length}`,
182
+ name: canonical,
183
+ args: parseStreamToolArgs(raw),
184
+ rawArguments: raw,
185
+ });
186
+ }
187
+ return toolCalls;
188
+ }
189
+ export function collectEofToolCalls(toolCallState) {
190
+ const toolCalls = [];
191
+ for (const [, state] of toolCallState) {
192
+ if (!state.name && !state.arguments)
193
+ continue;
194
+ const name = state.name || "";
195
+ const canonical = name ? fromWireName(name) ?? name : "";
196
+ if (!canonical)
197
+ continue;
198
+ const raw = state.arguments;
199
+ toolCalls.push({
200
+ id: state.callId ?? state.id ?? `call_${toolCalls.length}`,
201
+ name: canonical,
202
+ args: parseStreamToolArgs(raw || "{}"),
203
+ rawArguments: raw,
204
+ });
205
+ }
206
+ return toolCalls;
207
+ }
208
+ function completionFinishReason(parsed, outputBudgetIncomplete) {
209
+ if (parsed.toolCalls.length)
210
+ return "tool_calls";
211
+ return outputBudgetIncomplete ? "length" : "stop";
212
+ }
213
+ function reasoningResultFields(parsed) {
214
+ if (parsed.reasoningItems.length) {
215
+ return {
216
+ reasoningBlock: { text: parsed.reasoningSummary, items: parsed.reasoningItems },
217
+ };
218
+ }
219
+ if (parsed.reasoningSummary) {
220
+ return { reasoningBlock: { text: parsed.reasoningSummary } };
221
+ }
222
+ return {};
223
+ }
224
+ export function isOutputBudgetIncomplete(data) {
225
+ const details = data.incomplete_details;
226
+ return data.status === "incomplete" && details?.reason === "max_output_tokens";
227
+ }
228
+ export function assembleCompletionResult(input) {
229
+ const { config, model, parsed, usage, reasoningArtifacts, outputBudgetIncomplete } = input;
230
+ return {
231
+ text: parsed.text,
232
+ provider: config.providerId,
233
+ model,
234
+ ...(parsed.toolCalls.length ? { toolCalls: parsed.toolCalls } : {}),
235
+ finishReason: completionFinishReason(parsed, outputBudgetIncomplete),
236
+ ...(usage ? { usage } : {}),
237
+ ...reasoningResultFields(parsed),
238
+ ...(reasoningArtifacts ? { reasoningArtifacts } : {}),
239
+ };
240
+ }
241
+ export { extractReasoningSummary };
242
+ //# sourceMappingURL=responses-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-parse.js","sourceRoot":"","sources":["../../src/llm/responses-parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ChatMessage, CompletionRequestPurpose, ReasoningArtifactReplayObserver, ReasoningPreference, ToolDefinition } from "../types.js";
2
+ import type { ResponsesDialectConfig } from "./responses-config.js";
3
+ export interface BuildResponsesBodyOptions {
4
+ model: string;
5
+ messages: ChatMessage[];
6
+ maxTokens?: number | undefined;
7
+ temperature?: number | undefined;
8
+ stream: boolean;
9
+ reasoning?: ReasoningPreference | undefined;
10
+ tools?: ToolDefinition[] | undefined;
11
+ parallelToolCalls?: boolean | undefined;
12
+ purpose?: CompletionRequestPurpose | undefined;
13
+ reasoningArtifactReplayObserver?: ReasoningArtifactReplayObserver | undefined;
14
+ }
15
+ export declare function buildResponsesBody(config: ResponsesDialectConfig, options: BuildResponsesBodyOptions): string;
@@ -0,0 +1,209 @@
1
+ import { toWireName } from "./tool-protocol.js";
2
+ import { reasoningArtifactItems, reasoningArtifactsForMessage, selectReasoningArtifactsForReplay, } from "./reasoning-artifacts.js";
3
+ import { compileRequestPlan } from "./request-plan.js";
4
+ function responsesReplayArtifacts(message, replay) {
5
+ return selectReasoningArtifactsForReplay({
6
+ artifacts: reasoningArtifactsForMessage(message),
7
+ target: replay.target,
8
+ context: { hasToolCalls: Boolean(message.toolCalls?.length) },
9
+ observe: replay.observe,
10
+ })
11
+ .filter((artifact) => artifact.kind === "encrypted")
12
+ .sort((left, right) => left.position.sequence - right.position.sequence)
13
+ .map((artifact) => {
14
+ const byId = artifact.position.toolCallId
15
+ ? message.toolCalls?.findIndex((toolCall) => toolCall.id === artifact.position.toolCallId)
16
+ : undefined;
17
+ const toolCallIndex = artifact.position.toolCallIndex ??
18
+ (byId !== undefined && byId >= 0 ? byId : undefined);
19
+ return {
20
+ items: reasoningArtifactItems(artifact),
21
+ ...(toolCallIndex === undefined ? {} : { toolCallIndex }),
22
+ };
23
+ });
24
+ }
25
+ function appendReplayItems(input, entries) {
26
+ for (const entry of entries)
27
+ input.push(...entry.items);
28
+ }
29
+ function systemInputItem(message) {
30
+ return {
31
+ type: "message",
32
+ role: "system",
33
+ content: [{ type: "input_text", text: message.content }],
34
+ };
35
+ }
36
+ function toolInputItem(message) {
37
+ return {
38
+ type: "function_call_output",
39
+ call_id: message.toolCallId ?? `call_${Date.now()}`,
40
+ output: message.content,
41
+ };
42
+ }
43
+ function appendUserImageBlock(blocks, img) {
44
+ const mt = (img.mediaType || "").toLowerCase();
45
+ const dataUrl = `data:${img.mediaType};base64,${img.dataBase64}`;
46
+ if (mt === "application/pdf") {
47
+ const filename = img.path
48
+ ? img.path.split("/").pop() || "document.pdf"
49
+ : "document.pdf";
50
+ blocks.push({ type: "input_file", filename, file_data: dataUrl });
51
+ return;
52
+ }
53
+ if (mt.startsWith("video/")) {
54
+ blocks.push({ type: "input_video", video_url: dataUrl });
55
+ return;
56
+ }
57
+ if (mt.startsWith("audio/")) {
58
+ blocks.push({
59
+ type: "input_audio",
60
+ input_audio: {
61
+ data: img.dataBase64,
62
+ format: mt.includes("wav") ? "wav" : "mp3",
63
+ },
64
+ });
65
+ return;
66
+ }
67
+ blocks.push({ type: "input_image", image_url: dataUrl, detail: "high" });
68
+ }
69
+ function appendUserInput(input, message, supportsVision) {
70
+ const blocks = [];
71
+ if (message.content)
72
+ blocks.push({ type: "input_text", text: message.content });
73
+ if (supportsVision && message.images && message.images.length > 0) {
74
+ for (const img of message.images)
75
+ appendUserImageBlock(blocks, img);
76
+ }
77
+ if (blocks.length === 0)
78
+ blocks.push({ type: "input_text", text: "" });
79
+ input.push({ type: "message", role: "user", content: blocks });
80
+ }
81
+ function groupArtifactsByTool(replayArtifacts) {
82
+ const artifactsByTool = new Map();
83
+ for (const artifact of replayArtifacts) {
84
+ if (artifact.toolCallIndex === undefined)
85
+ continue;
86
+ const current = artifactsByTool.get(artifact.toolCallIndex) ?? [];
87
+ current.push(artifact);
88
+ artifactsByTool.set(artifact.toolCallIndex, current);
89
+ }
90
+ return artifactsByTool;
91
+ }
92
+ function appendAssistantToolTurn(input, message, replayArtifacts) {
93
+ const leadingArtifacts = replayArtifacts.filter((artifact) => artifact.toolCallIndex === undefined);
94
+ const artifactsByTool = groupArtifactsByTool(replayArtifacts);
95
+ appendReplayItems(input, leadingArtifacts);
96
+ if (message.content && message.content.trim()) {
97
+ input.push({
98
+ type: "message",
99
+ role: "assistant",
100
+ phase: "commentary",
101
+ content: [{ type: "output_text", text: message.content }],
102
+ });
103
+ }
104
+ for (const [toolCallIndex, tc] of message.toolCalls.entries()) {
105
+ appendReplayItems(input, artifactsByTool.get(toolCallIndex) ?? []);
106
+ input.push({
107
+ type: "function_call",
108
+ call_id: tc.id,
109
+ name: toWireName(tc.name),
110
+ arguments: tc.rawArguments ?? JSON.stringify(tc.args ?? {}),
111
+ });
112
+ }
113
+ }
114
+ function appendAssistantInput(input, message, replay) {
115
+ const replayArtifacts = responsesReplayArtifacts(message, replay);
116
+ if (message.toolCalls && message.toolCalls.length > 0) {
117
+ appendAssistantToolTurn(input, message, replayArtifacts);
118
+ return;
119
+ }
120
+ appendReplayItems(input, replayArtifacts);
121
+ if (message.content !== undefined && message.content !== null) {
122
+ input.push({
123
+ type: "message",
124
+ role: "assistant",
125
+ content: [{ type: "output_text", text: message.content }],
126
+ });
127
+ }
128
+ }
129
+ function toResponsesInput(messages, supportsVision, replay) {
130
+ const input = [];
131
+ for (const message of messages) {
132
+ if (message.role === "system") {
133
+ input.push(systemInputItem(message));
134
+ }
135
+ else if (message.role === "user") {
136
+ appendUserInput(input, message, supportsVision);
137
+ }
138
+ else if (message.role === "assistant") {
139
+ appendAssistantInput(input, message, replay);
140
+ }
141
+ else if (message.role === "tool") {
142
+ input.push(toolInputItem(message));
143
+ }
144
+ }
145
+ return input;
146
+ }
147
+ function toResponsesTools(tools) {
148
+ if (!tools || tools.length === 0)
149
+ return undefined;
150
+ return tools.map((t) => ({
151
+ type: "function",
152
+ name: t.wireName,
153
+ description: t.description,
154
+ parameters: t.parameters,
155
+ }));
156
+ }
157
+ function responsesMaxOutputTokens(plan) {
158
+ const reasoningOn = Boolean(plan.controls.reasoning?.enabled);
159
+ const defaultMax = reasoningOn ? 8192 : 4096;
160
+ const requestedMax = Math.max(16, plan.controls.requestedMaxTokens ?? defaultMax);
161
+ return plan.policy.limits.outputTokens === undefined
162
+ ? requestedMax
163
+ : Math.min(requestedMax, plan.policy.limits.outputTokens);
164
+ }
165
+ function applyResponsesTools(body, tools, parallelToolCalls) {
166
+ if (!tools)
167
+ return;
168
+ body.tools = tools;
169
+ body.tool_choice = "auto";
170
+ body.parallel_tool_calls = parallelToolCalls === false ? false : true;
171
+ }
172
+ export function buildResponsesBody(config, options) {
173
+ const plan = compileRequestPlan({
174
+ provider: config.providerId,
175
+ model: options.model,
176
+ messages: options.messages,
177
+ stream: options.stream,
178
+ endpoint: config.baseUrl,
179
+ reasoning: options.reasoning,
180
+ tools: options.tools,
181
+ parallelToolCalls: options.parallelToolCalls,
182
+ temperature: options.temperature,
183
+ maxTokens: options.maxTokens,
184
+ });
185
+ const reasoning = config.reasoningPayload(plan.controls.reasoning);
186
+ const input = toResponsesInput([...plan.timeline.messages], plan.images.visionAccepted, {
187
+ target: plan.replay.target,
188
+ observe: options.reasoningArtifactReplayObserver,
189
+ });
190
+ const tools = toResponsesTools(plan.tools.definitions.length ? [...plan.tools.definitions] : undefined);
191
+ const body = { model: options.model, input };
192
+ Object.assign(body, config.bodyExtras({
193
+ model: options.model,
194
+ messages: options.messages,
195
+ purpose: options.purpose,
196
+ reasoningEnabled: Boolean(plan.controls.reasoning?.enabled),
197
+ }));
198
+ body.max_output_tokens = responsesMaxOutputTokens(plan);
199
+ body.temperature = plan.controls.temperature;
200
+ if (plan.controls.topP !== undefined)
201
+ body.top_p = plan.controls.topP;
202
+ if (reasoning)
203
+ body.reasoning = reasoning;
204
+ if (options.stream)
205
+ body.stream = true;
206
+ applyResponsesTools(body, tools, options.parallelToolCalls);
207
+ return JSON.stringify(body);
208
+ }
209
+ //# sourceMappingURL=responses-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-request.js","sourceRoot":"","sources":["../../src/llm/responses-request.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,iCAAiC,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA2BvD,SAAS,wBAAwB,CAC/B,OAAoB,EACpB,MAA8B;IAE9B,OAAO,iCAAiC,CAAC;QACvC,SAAS,EAAE,4BAA4B,CAAC,OAAO,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QAC7D,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;SACC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;SACnD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU;YACvC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAC1B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAC3D;YACH,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,aAAa,GACjB,QAAQ,CAAC,QAAQ,CAAC,aAAa;YAC/B,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC;YACvC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAqC,EACrC,OAA6D;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,OAAoB;IAC3C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAoB;IACzC,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAsC,EACtC,GAA+C;IAE/C,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,SAAS,WAAW,GAAG,CAAC,UAAU,EAAE,CAAC;IACjE,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI;YACvB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc;YAC7C,CAAC,CAAC,cAAc,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;aAC3C;SACoC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CACtB,KAAqC,EACrC,OAAoB,EACpB,cAAuB;IAEvB,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,IAAI,cAAc,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM;YAAE,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAC3B,eAA+C;IAE/C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAiC,CAAC;IACjE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS;YAAE,SAAS;QACnD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAqC,EACrC,OAAoB,EACpB,eAA+C;IAE/C,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CACnD,CAAC;IACF,MAAM,eAAe,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC9D,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,SAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,EAAE,CAAC,EAAE;YACd,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;YACzB,SAAS,EAAE,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAqC,EACrC,OAAoB,EACpB,MAA8B;IAE9B,MAAM,eAAe,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAuB,EACvB,cAAuB,EACvB,MAA8B;IAE9B,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACxC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAmC;IAEnC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,CAAC,QAAQ;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAmB;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,UAAU,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;QAClD,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA6B,EAC7B,KAAiD,EACjD,iBAAsC;IAEtC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA8B,EAC9B,OAAkC;IAElC,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,MAAM,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;QACtF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;QAC1B,OAAO,EAAE,OAAO,CAAC,+BAA+B;KACjD,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,gBAAgB,CAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CACxE,CAAC;IACF,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;IACtE,MAAM,CAAC,MAAM,CACX,IAAI,EACJ,MAAM,CAAC,UAAU,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;KAC5D,CAAC,CACH,CAAC;IACF,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtE,IAAI,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}