poe-code 15.0.21 → 15.0.22

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 (114) hide show
  1. package/dist/metafile.json +1 -1
  2. package/package.json +1 -1
  3. package/packages/safe-bash/dist/chunks/{chunk-UO33SQJU.js → chunk-2PQ3XOCQ.js} +239 -2
  4. package/packages/safe-bash/dist/chunks/chunk-2PQ3XOCQ.js.map +7 -0
  5. package/packages/safe-bash/dist/chunks/{chunk-WISNTI7E.js → chunk-3Y5PKSHX.js} +7 -11
  6. package/packages/safe-bash/dist/chunks/{chunk-WISNTI7E.js.map → chunk-3Y5PKSHX.js.map} +1 -1
  7. package/packages/safe-bash/dist/chunks/{chunk-VY5N6O6I.js → chunk-BXVGCJXW.js} +108 -21
  8. package/packages/safe-bash/dist/chunks/chunk-BXVGCJXW.js.map +7 -0
  9. package/packages/safe-bash/dist/chunks/chunk-C7QNJ3D4.js +13 -0
  10. package/packages/safe-bash/dist/chunks/chunk-C7QNJ3D4.js.map +7 -0
  11. package/packages/safe-bash/dist/chunks/{chunk-AWP6Z3RR.js → chunk-E3NZKSTA.js} +8 -12
  12. package/packages/safe-bash/dist/chunks/{chunk-AWP6Z3RR.js.map → chunk-E3NZKSTA.js.map} +1 -1
  13. package/packages/safe-bash/dist/chunks/{chunk-WXUZXY35.js → chunk-FMTBJ7SG.js} +3 -3
  14. package/packages/safe-bash/dist/chunks/{chunk-QX2X5EC5.js → chunk-H6E6F5KJ.js} +7 -11
  15. package/packages/safe-bash/dist/chunks/{chunk-QX2X5EC5.js.map → chunk-H6E6F5KJ.js.map} +1 -1
  16. package/packages/safe-bash/dist/chunks/{chunk-IDJQT32M.js → chunk-HQCBEAFK.js} +7 -11
  17. package/packages/safe-bash/dist/chunks/{chunk-IDJQT32M.js.map → chunk-HQCBEAFK.js.map} +1 -1
  18. package/packages/safe-bash/dist/chunks/{chunk-4V3NGZAG.js → chunk-IYFB6VED.js} +6 -10
  19. package/packages/safe-bash/dist/chunks/{chunk-4V3NGZAG.js.map → chunk-IYFB6VED.js.map} +1 -1
  20. package/packages/safe-bash/dist/chunks/chunk-KJYVSFGF.js +284 -0
  21. package/packages/safe-bash/dist/chunks/chunk-KJYVSFGF.js.map +7 -0
  22. package/packages/safe-bash/dist/chunks/{chunk-O7BRWSKX.js → chunk-LHKAA57T.js} +60 -17
  23. package/packages/safe-bash/dist/chunks/chunk-LHKAA57T.js.map +7 -0
  24. package/packages/safe-bash/dist/chunks/chunk-LR32SJ3D.js +915 -0
  25. package/packages/safe-bash/dist/chunks/chunk-LR32SJ3D.js.map +7 -0
  26. package/packages/safe-bash/dist/chunks/{chunk-EUNOVYVT.js → chunk-OECKXHVJ.js} +2 -2
  27. package/packages/safe-bash/dist/chunks/{chunk-DKT746UJ.js → chunk-PE5NZIA2.js} +5 -9
  28. package/packages/safe-bash/dist/chunks/{chunk-DKT746UJ.js.map → chunk-PE5NZIA2.js.map} +1 -1
  29. package/packages/safe-bash/dist/chunks/{chunk-4JW32W4B.js → chunk-PMBBUNNN.js} +7 -11
  30. package/packages/safe-bash/dist/chunks/{chunk-4JW32W4B.js.map → chunk-PMBBUNNN.js.map} +1 -1
  31. package/packages/safe-bash/dist/chunks/{chunk-YFFFBLBC.js → chunk-TJVKGNKA.js} +6 -10
  32. package/packages/safe-bash/dist/chunks/{chunk-YFFFBLBC.js.map → chunk-TJVKGNKA.js.map} +1 -1
  33. package/packages/safe-bash/dist/chunks/{chunk-FIY2BMTU.js → chunk-W3TLNFDB.js} +8 -12
  34. package/packages/safe-bash/dist/chunks/{chunk-FIY2BMTU.js.map → chunk-W3TLNFDB.js.map} +1 -1
  35. package/packages/safe-bash/dist/chunks/{chunk-PPFWG34Y.js → chunk-XBLVOMEJ.js} +2 -2
  36. package/packages/safe-bash/dist/chunks/{chunk-WJWYJDQE.js → chunk-XYVCXUGM.js} +7 -11
  37. package/packages/safe-bash/dist/chunks/{chunk-WJWYJDQE.js.map → chunk-XYVCXUGM.js.map} +1 -1
  38. package/packages/safe-bash/dist/commands/csplit/index.browser.js +4 -6
  39. package/packages/safe-bash/dist/commands/factor/index.browser.js +3 -5
  40. package/packages/safe-bash/dist/commands/getopt/index.browser.js +3 -5
  41. package/packages/safe-bash/dist/commands/hexdump/index.browser.js +3 -5
  42. package/packages/safe-bash/dist/commands/iconv/index.browser.js +3 -5
  43. package/packages/safe-bash/dist/commands/line-endings/index.browser.js +4 -6
  44. package/packages/safe-bash/dist/commands/llm/command.d.ts +3 -2
  45. package/packages/safe-bash/dist/commands/llm/command.d.ts.map +1 -1
  46. package/packages/safe-bash/dist/commands/llm/command.js +260 -181
  47. package/packages/safe-bash/dist/commands/llm/command.js.map +1 -1
  48. package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.d.ts +3 -0
  49. package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.d.ts.map +1 -0
  50. package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.js +118 -0
  51. package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.js.map +1 -0
  52. package/packages/safe-bash/dist/commands/llm/elevenlabs.d.ts +16 -0
  53. package/packages/safe-bash/dist/commands/llm/elevenlabs.d.ts.map +1 -0
  54. package/packages/safe-bash/dist/commands/llm/elevenlabs.js +120 -0
  55. package/packages/safe-bash/dist/commands/llm/elevenlabs.js.map +1 -0
  56. package/packages/safe-bash/dist/commands/llm/index.browser.js +10 -4
  57. package/packages/safe-bash/dist/commands/llm/index.d.ts +5 -5
  58. package/packages/safe-bash/dist/commands/llm/index.d.ts.map +1 -1
  59. package/packages/safe-bash/dist/commands/llm/index.js +3 -11
  60. package/packages/safe-bash/dist/commands/llm/index.js.map +1 -1
  61. package/packages/safe-bash/dist/commands/llm/mime.d.ts +2 -1
  62. package/packages/safe-bash/dist/commands/llm/mime.d.ts.map +1 -1
  63. package/packages/safe-bash/dist/commands/llm/mime.js +125 -21
  64. package/packages/safe-bash/dist/commands/llm/mime.js.map +1 -1
  65. package/packages/safe-bash/dist/commands/llm/openai-http.d.ts +9 -0
  66. package/packages/safe-bash/dist/commands/llm/openai-http.d.ts.map +1 -0
  67. package/packages/safe-bash/dist/commands/llm/openai-http.js +144 -0
  68. package/packages/safe-bash/dist/commands/llm/openai-http.js.map +1 -0
  69. package/packages/safe-bash/dist/commands/llm/openai-sse.d.ts +3 -0
  70. package/packages/safe-bash/dist/commands/llm/openai-sse.d.ts.map +1 -0
  71. package/packages/safe-bash/dist/commands/llm/openai-sse.js +67 -0
  72. package/packages/safe-bash/dist/commands/llm/openai-sse.js.map +1 -0
  73. package/packages/safe-bash/dist/commands/llm/openai.d.ts +15 -0
  74. package/packages/safe-bash/dist/commands/llm/openai.d.ts.map +1 -0
  75. package/packages/safe-bash/dist/commands/llm/openai.js +203 -0
  76. package/packages/safe-bash/dist/commands/llm/openai.js.map +1 -0
  77. package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.d.ts +1 -15
  78. package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.d.ts.map +1 -1
  79. package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.js +1 -50
  80. package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.js.map +1 -1
  81. package/packages/safe-bash/dist/commands/llm/providers/index.browser.js +2 -4
  82. package/packages/safe-bash/dist/commands/llm/providers/openai.d.ts +1 -14
  83. package/packages/safe-bash/dist/commands/llm/providers/openai.d.ts.map +1 -1
  84. package/packages/safe-bash/dist/commands/llm/providers/openai.js +1 -77
  85. package/packages/safe-bash/dist/commands/llm/providers/openai.js.map +1 -1
  86. package/packages/safe-bash/dist/commands/llm/providers/shared.d.ts +4 -14
  87. package/packages/safe-bash/dist/commands/llm/providers/shared.d.ts.map +1 -1
  88. package/packages/safe-bash/dist/commands/llm/providers/shared.js +3 -156
  89. package/packages/safe-bash/dist/commands/llm/providers/shared.js.map +1 -1
  90. package/packages/safe-bash/dist/commands/network/index.browser.js +8 -13
  91. package/packages/safe-bash/dist/commands/pr/index.browser.js +3 -5
  92. package/packages/safe-bash/dist/commands/tsort/index.browser.js +3 -5
  93. package/packages/safe-bash/dist/commands/xml/index.browser.js +4 -7
  94. package/packages/safe-bash/dist/commands/yq/index.browser.js +5 -8
  95. package/packages/safe-bash/dist/core.browser.js +36 -43
  96. package/packages/safe-bash/dist/core.browser.js.map +1 -1
  97. package/packages/safe-bash/dist/chunks/chunk-BZUQJTOZ.js +0 -322
  98. package/packages/safe-bash/dist/chunks/chunk-BZUQJTOZ.js.map +0 -7
  99. package/packages/safe-bash/dist/chunks/chunk-EUTSYRNM.js +0 -111
  100. package/packages/safe-bash/dist/chunks/chunk-EUTSYRNM.js.map +0 -7
  101. package/packages/safe-bash/dist/chunks/chunk-F5AOPLRZ.js +0 -355
  102. package/packages/safe-bash/dist/chunks/chunk-F5AOPLRZ.js.map +0 -7
  103. package/packages/safe-bash/dist/chunks/chunk-FDGESHPB.js +0 -224
  104. package/packages/safe-bash/dist/chunks/chunk-FDGESHPB.js.map +0 -7
  105. package/packages/safe-bash/dist/chunks/chunk-KYU6MXVK.js +0 -58
  106. package/packages/safe-bash/dist/chunks/chunk-KYU6MXVK.js.map +0 -7
  107. package/packages/safe-bash/dist/chunks/chunk-O7BRWSKX.js.map +0 -7
  108. package/packages/safe-bash/dist/chunks/chunk-TTTOMUAY.js +0 -33
  109. package/packages/safe-bash/dist/chunks/chunk-TTTOMUAY.js.map +0 -7
  110. package/packages/safe-bash/dist/chunks/chunk-UO33SQJU.js.map +0 -7
  111. package/packages/safe-bash/dist/chunks/chunk-VY5N6O6I.js.map +0 -7
  112. /package/packages/safe-bash/dist/chunks/{chunk-WXUZXY35.js.map → chunk-FMTBJ7SG.js.map} +0 -0
  113. /package/packages/safe-bash/dist/chunks/{chunk-EUNOVYVT.js.map → chunk-OECKXHVJ.js.map} +0 -0
  114. /package/packages/safe-bash/dist/chunks/{chunk-PPFWG34Y.js.map → chunk-XBLVOMEJ.js.map} +0 -0
@@ -0,0 +1,67 @@
1
+ import { openAiBytes, openAiError, openAiRecord } from "./openai-http.js";
2
+ async function* events(source, signal, limit, responseLimit) {
3
+ const decoder = new TextDecoder("utf-8", { fatal: true });
4
+ let line = "", data = [], size = 0, afterCarriageReturn = false;
5
+ for await (const chunk of openAiBytes(source, signal, responseLimit)) {
6
+ const text = decoder.decode(chunk, { stream: true });
7
+ for (const character of text) {
8
+ if (afterCarriageReturn && character === "\n") {
9
+ afterCarriageReturn = false;
10
+ continue;
11
+ }
12
+ afterCarriageReturn = character === "\r";
13
+ const codePoint = character.codePointAt(0);
14
+ size += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : codePoint < 0x10000 ? 3 : 4;
15
+ if (size > limit)
16
+ throw new Error("OpenAI SSE event exceeds buffer limit: event byte limit exceeded");
17
+ if (character !== "\n" && character !== "\r") {
18
+ line += character;
19
+ continue;
20
+ }
21
+ if (line === "") {
22
+ if (data.length > 0)
23
+ yield data.join("\n");
24
+ data = [];
25
+ size = 0;
26
+ }
27
+ else if (line === "data" || line.startsWith("data:")) {
28
+ const value = line.slice(5);
29
+ data.push(value.startsWith(" ") ? value.slice(1) : value);
30
+ }
31
+ line = "";
32
+ }
33
+ }
34
+ decoder.decode();
35
+ throw new Error("OpenAI chat stream ended before [DONE]");
36
+ }
37
+ export async function* openAiChat(source, signal, limit = 1024 * 1024, responseLimit = 64 * 1024 * 1024) {
38
+ for await (const data of events(source, signal, limit, responseLimit)) {
39
+ signal.throwIfAborted();
40
+ if (data.trim() === "[DONE]")
41
+ return;
42
+ let parsed;
43
+ try {
44
+ parsed = JSON.parse(data);
45
+ }
46
+ catch {
47
+ throw new Error("OpenAI returned malformed SSE JSON");
48
+ }
49
+ if (!openAiRecord(parsed))
50
+ throw new Error("OpenAI returned a non-object SSE event");
51
+ if (parsed.error != null)
52
+ throw new Error(`OpenAI: ${openAiError(parsed.error) ?? "stream failed"}`);
53
+ if (!Array.isArray(parsed.choices))
54
+ throw new Error("OpenAI SSE event has no choices");
55
+ for (const choice of parsed.choices) {
56
+ signal.throwIfAborted();
57
+ if (!openAiRecord(choice) || !openAiRecord(choice.delta))
58
+ throw new Error("OpenAI SSE event has a malformed delta");
59
+ const content = choice.delta.content;
60
+ if (content != null && typeof content !== "string")
61
+ throw new Error("OpenAI SSE delta.content is not text");
62
+ if (typeof content === "string" && content.length > 0)
63
+ yield content;
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=openai-sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-sse.js","sourceRoot":"","sources":["../../../src/commands/llm/openai-sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { HttpTransport } from "../network/types.js";
2
+ import type { LlmModel, LlmProvider } from "./types.js";
3
+ import { type LlmProviderLimits } from "./providers/shared.js";
4
+ export interface OpenAiModel extends LlmModel {
5
+ readonly endpoint: "chat" | "images" | "videos";
6
+ }
7
+ export interface OpenAiProviderOptions {
8
+ readonly transport: HttpTransport;
9
+ readonly apiKey: string;
10
+ readonly baseUrl?: string;
11
+ readonly models: readonly OpenAiModel[];
12
+ readonly limits?: Partial<LlmProviderLimits>;
13
+ }
14
+ export declare function createOpenAiProvider(options: OpenAiProviderOptions): LlmProvider;
15
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/commands/llm/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAIpE,OAAO,EAAmD,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9C;AAoED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAsGhF"}
@@ -0,0 +1,203 @@
1
+ import { openAiBytes, openAiError, openAiJson, openAiRecord, openAiResponse } from "./openai-http.js";
2
+ import { openAiChat } from "./openai-sse.js";
3
+ import { acceptsMimeType } from "./mime.js";
4
+ import { credential, providerLimits, jsonBody, multipart } from "./providers/shared.js";
5
+ const numericOptions = {
6
+ chat: new Map([
7
+ ["temperature", "number"], ["top_p", "number"],
8
+ ["frequency_penalty", "number"], ["presence_penalty", "number"],
9
+ ["max_tokens", "integer"], ["max_completion_tokens", "integer"],
10
+ ["n", "integer"], ["seed", "integer"], ["top_logprobs", "integer"],
11
+ ]),
12
+ images: new Map([
13
+ ["n", "integer"], ["output_compression", "integer"], ["partial_images", "integer"],
14
+ ]),
15
+ };
16
+ function jsonOptions(options, endpoint) {
17
+ return Object.fromEntries(Object.entries(options).map(([key, value]) => {
18
+ if ((endpoint === "chat" ? ["store", "parallel_tool_calls", "logprobs"] : ["stream"]).includes(key)) {
19
+ if (value !== "true" && value !== "false")
20
+ throw new Error(`Invalid OpenAI option ${key}: expected boolean`);
21
+ return [key, value === "true"];
22
+ }
23
+ const type = numericOptions[endpoint].get(key);
24
+ if (!type)
25
+ return [key, value];
26
+ const number = value.trim() ? Number(value) : NaN;
27
+ if (!Number.isFinite(number) || type === "integer" && !Number.isSafeInteger(number)) {
28
+ throw new Error(`Invalid OpenAI option ${key}: expected a finite ${type === "integer" ? "safe integer" : "number"}`);
29
+ }
30
+ return [key, number];
31
+ }));
32
+ }
33
+ function base64(bytes) {
34
+ let binary = "";
35
+ for (let offset = 0; offset < bytes.length; offset += 8192) {
36
+ binary += String.fromCharCode(...bytes.subarray(offset, offset + 8192));
37
+ }
38
+ return btoa(binary);
39
+ }
40
+ function imageBytes(value) {
41
+ if (typeof value !== "string" || value.length === 0)
42
+ throw new Error("OpenAI image response has no b64_json");
43
+ let decoded;
44
+ try {
45
+ decoded = atob(value);
46
+ }
47
+ catch {
48
+ throw new Error("OpenAI image response contains invalid base64");
49
+ }
50
+ if (btoa(decoded) !== value)
51
+ throw new Error("OpenAI image response contains non-canonical base64");
52
+ return Uint8Array.from(decoded, character => character.charCodeAt(0));
53
+ }
54
+ function waitForPoll(signal, interval) {
55
+ signal.throwIfAborted();
56
+ return new Promise((resolve, reject) => {
57
+ const abort = () => { clearTimeout(timer); signal.removeEventListener("abort", abort); reject(signal.reason); };
58
+ const timer = setTimeout(() => { signal.removeEventListener("abort", abort); resolve(); }, interval);
59
+ signal.addEventListener("abort", abort, { once: true });
60
+ if (signal.aborted)
61
+ abort();
62
+ });
63
+ }
64
+ function job(value, expectedId) {
65
+ if (value.error != null)
66
+ throw new Error(`OpenAI video failed: ${openAiError(value.error) ?? "unknown error"}`);
67
+ if (typeof value.id !== "string" || value.id.length === 0 || value.id === "." || value.id === ".." || (expectedId !== undefined && value.id !== expectedId)) {
68
+ throw new Error("OpenAI video response has an invalid job id");
69
+ }
70
+ if (value.status !== "queued" && value.status !== "in_progress" && value.status !== "completed") {
71
+ throw new Error(`OpenAI video failed: ${typeof value.status === "string" ? value.status : "invalid status"}`);
72
+ }
73
+ return { id: value.id, status: value.status };
74
+ }
75
+ export function createOpenAiProvider(options) {
76
+ const { transport, apiKey } = options;
77
+ const limits = providerLimits(options.limits);
78
+ if (typeof transport !== "function")
79
+ throw new TypeError("OpenAI requires an injected HTTP transport");
80
+ if (typeof apiKey !== "string" || !apiKey.trim() || apiKey.includes("\r") || apiKey.includes("\n"))
81
+ throw new TypeError("OpenAI requires a valid API key");
82
+ credential(apiKey);
83
+ const base = new URL(options.baseUrl ?? "https://api.openai.com/v1");
84
+ if ((base.protocol !== "https:" && base.protocol !== "http:") || base.username || base.password || base.search || base.hash) {
85
+ throw new TypeError("OpenAI baseUrl must be an HTTP(S) URL without credentials, query or fragment");
86
+ }
87
+ const baseUrl = base.href.endsWith("/") ? base.href.slice(0, -1) : base.href;
88
+ const configured = options.models.map(model => Object.freeze({
89
+ ...model,
90
+ ...(model.aliases === undefined ? {} : { aliases: Object.freeze([...model.aliases]) }),
91
+ ...(model.attachmentTypes === undefined ? {} : { attachmentTypes: Object.freeze([...model.attachmentTypes]) }),
92
+ }));
93
+ const byId = new Map();
94
+ for (const model of configured) {
95
+ if (!model.id || byId.has(model.id))
96
+ throw new TypeError(`OpenAI duplicate or empty model id: ${model.id}`);
97
+ if (!["chat", "images", "videos"].includes(model.endpoint))
98
+ throw new TypeError(`OpenAI invalid endpoint for model: ${model.id}`);
99
+ if (model.endpoint === "images" && !acceptsMimeType(["image/png", "image/jpeg", "image/webp"], model.outputType ?? ""))
100
+ throw new TypeError("Image models require outputType image/png, image/jpeg or image/webp");
101
+ if (model.endpoint === "videos" && !acceptsMimeType(["video/mp4"], model.outputType ?? ""))
102
+ throw new TypeError("Video models require outputType video/mp4");
103
+ if (model.endpoint === "chat" && model.outputType !== undefined && !acceptsMimeType(["text/*"], model.outputType))
104
+ throw new TypeError("Chat models require a text outputType");
105
+ byId.set(model.id, model);
106
+ }
107
+ return {
108
+ name: "openai", models: Object.freeze(configured),
109
+ async *complete(request) {
110
+ request.signal.throwIfAborted();
111
+ const model = byId.get(request.model);
112
+ if (!model)
113
+ throw new Error(`Unknown model: ${request.model}`);
114
+ if (request.attachments.some(attachment => !acceptsMimeType(["image/*"], attachment.mimeType))) {
115
+ throw new Error(`OpenAI ${model.endpoint} endpoint only supports image attachments`);
116
+ }
117
+ if (model.endpoint === "videos" && request.attachments.length > 1)
118
+ throw new Error("OpenAI videos accepts only one input_reference image");
119
+ if (request.attachments.reduce((size, file) => size + file.bytes.byteLength, 0) > limits.maxRequestBytes)
120
+ throw new RangeError("Provider request byte limit exceeded");
121
+ if (model.endpoint !== "chat" && request.system !== undefined)
122
+ throw new TypeError("System prompts are supported only by chat models");
123
+ const reserved = model.endpoint === "chat" ? ["model", "messages", "stream"]
124
+ : model.endpoint === "images" ? ["model", "prompt", "image", "image[]"] : ["model", "prompt", "input_reference"];
125
+ for (const key of Object.keys(request.options)) {
126
+ if (reserved.includes(key))
127
+ throw new Error(`OpenAI option ${key} is controlled by the provider`);
128
+ }
129
+ const send = (path, method, body) => openAiResponse(transport, {
130
+ url: `${baseUrl}${path}`, method, signal: request.signal,
131
+ ...body, headers: [["authorization", `Bearer ${apiKey}`], ...(body?.headers ?? [])],
132
+ });
133
+ if (model.endpoint === "chat") {
134
+ const messages = [];
135
+ if (request.system !== undefined)
136
+ messages.push({ role: "system", content: request.system });
137
+ messages.push({ role: "user", content: request.attachments.length === 0 ? request.prompt : [
138
+ { type: "text", text: request.prompt },
139
+ ...request.attachments.map(attachment => ({ type: "image_url", image_url: { url: `data:${attachment.mimeType};base64,${base64(attachment.bytes)}` } })),
140
+ ] });
141
+ for await (const response of send("/chat/completions", "POST", jsonBody({ ...jsonOptions(request.options, "chat"), model: request.model, messages, stream: true }, limits.maxRequestBytes))) {
142
+ yield* openAiChat(response.body, request.signal, limits.maxEventBytes, limits.maxResponseBytes);
143
+ }
144
+ }
145
+ else if (model.endpoint === "images") {
146
+ const editing = request.attachments.length > 0;
147
+ const outputFormat = model.outputType.split(";", 1)[0].trim().toLowerCase().slice("image/".length);
148
+ if (request.options.output_format !== undefined && request.options.output_format !== outputFormat)
149
+ throw new TypeError("output_format conflicts with model outputType");
150
+ const values = { ...jsonOptions(request.options, "images"), output_format: outputFormat, model: request.model, prompt: request.prompt };
151
+ if (values.stream === true)
152
+ throw new TypeError("Image event streaming is not supported by this reference provider");
153
+ const body = editing ? multipart({ ...values, ...request.options }, request.attachments.map(file => ({ ...file, field: "image[]" })), limits.maxRequestBytes) : jsonBody(values, limits.maxRequestBytes);
154
+ for await (const response of send(editing ? "/images/edits" : "/images/generations", "POST", body)) {
155
+ const value = await openAiJson(response, request.signal, limits.maxResponseBytes);
156
+ if (value.error != null)
157
+ throw new Error(`OpenAI: ${openAiError(value.error) ?? "image generation failed"}`);
158
+ if (!Array.isArray(value.data) || value.data.length === 0)
159
+ throw new Error("OpenAI image response has no images");
160
+ for (const item of value.data) {
161
+ request.signal.throwIfAborted();
162
+ if (!openAiRecord(item))
163
+ throw new Error("OpenAI image response contains a malformed image");
164
+ yield imageBytes(item.b64_json);
165
+ }
166
+ }
167
+ }
168
+ else {
169
+ let current;
170
+ for await (const response of send("/videos", "POST", multipart({ ...request.options, model: request.model, prompt: request.prompt }, request.attachments.map(file => ({ ...file, field: "input_reference" })), limits.maxRequestBytes))) {
171
+ current = job(await openAiJson(response, request.signal, limits.maxResponseBytes));
172
+ }
173
+ if (!current)
174
+ throw new Error("OpenAI video creation returned no job");
175
+ const path = `/videos/${encodeURIComponent(current.id)}`;
176
+ let polls = 0;
177
+ while (current.status !== "completed") {
178
+ if (polls++ >= limits.maxPolls)
179
+ throw new RangeError("Provider video polling limit exceeded");
180
+ await waitForPoll(request.signal, limits.pollIntervalMs);
181
+ for await (const response of send(path, "GET"))
182
+ current = job(await openAiJson(response, request.signal, limits.maxResponseBytes), current.id);
183
+ }
184
+ for await (const response of send(`${path}/content`, "GET")) {
185
+ const contentType = response.headers.find(([name]) => name.toLowerCase() === "content-type")?.[1].split(";")[0]?.trim().toLowerCase();
186
+ if (contentType && contentType !== "application/octet-stream" && !contentType.startsWith("video/")) {
187
+ throw new Error(`OpenAI video download has unexpected content type: ${contentType}`);
188
+ }
189
+ let received = false;
190
+ for await (const chunk of openAiBytes(response.body, request.signal, limits.maxResponseBytes)) {
191
+ if (chunk.byteLength === 0)
192
+ continue;
193
+ received = true;
194
+ yield chunk;
195
+ }
196
+ if (!received)
197
+ throw new Error("OpenAI video download is empty");
198
+ }
199
+ }
200
+ },
201
+ };
202
+ }
203
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/commands/llm/openai.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,2 @@
1
- import type { LlmModel, LlmProvider } from "../types.js";
2
- import type { HttpTransport } from "../../network/types.js";
3
- import { type LlmProviderLimits } from "./shared.js";
4
- export interface ElevenLabsModel extends LlmModel {
5
- readonly endpoint: "tts" | "music";
6
- readonly defaultVoiceId?: string;
7
- }
8
- export interface ElevenLabsProviderOptions {
9
- readonly transport: HttpTransport;
10
- readonly apiKey: string;
11
- readonly baseUrl?: string;
12
- readonly models: readonly ElevenLabsModel[];
13
- readonly limits?: Partial<LlmProviderLimits>;
14
- }
15
- export declare function createElevenLabsProvider(options: ElevenLabsProviderOptions): LlmProvider;
1
+ export { createElevenLabsProvider, type ElevenLabsProviderOptions, type ElevenLabsModel } from "../elevenlabs.js";
16
2
  //# sourceMappingURL=elevenlabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAwE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAI3H,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,WAAW,CAqCxF"}
1
+ {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,51 +1,2 @@
1
- import { baseUrl, credential, providerLimits, fields, jsonBody, responseBytes } from "./shared.js";
2
- const audioFormats = { "audio/mpeg": "mp3_44100_128", "audio/wav": "wav_44100", "audio/pcm": "pcm_44100", "audio/ogg": "opus_48000_128", "audio/basic": "ulaw_8000" };
3
- export function createElevenLabsProvider(options) {
4
- const origin = baseUrl(options.baseUrl ?? "https://api.elevenlabs.io");
5
- const headers = [["xi-api-key", credential(options.apiKey)]];
6
- const transport = options.transport;
7
- const limits = providerLimits(options.limits);
8
- const models = options.models.map(model => Object.freeze({ ...model, ...(model.aliases ? { aliases: Object.freeze([...model.aliases]) } : {}), ...(model.attachmentTypes ? { attachmentTypes: Object.freeze([...model.attachmentTypes]) } : {}) }));
9
- if (typeof transport !== "function")
10
- throw new TypeError("Provider transport is required");
11
- for (const model of models) {
12
- if (!["tts", "music"].includes(model.endpoint))
13
- throw new TypeError("Invalid ElevenLabs endpoint");
14
- if (!Object.hasOwn(audioFormats, model.outputType ?? "") || (model.endpoint === "music" && model.outputType === "audio/wav"))
15
- throw new TypeError("Unsupported ElevenLabs model outputType");
16
- }
17
- return {
18
- name: "elevenlabs", models: Object.freeze(models),
19
- async *complete(request) {
20
- request.signal.throwIfAborted();
21
- const model = models.find(candidate => candidate.id === request.model);
22
- if (!model)
23
- throw new Error(`Unknown model: ${request.model}`);
24
- if (request.attachments.length)
25
- throw new TypeError("ElevenLabs reference endpoints do not accept attachments");
26
- if (request.system !== undefined)
27
- throw new TypeError("ElevenLabs reference endpoints do not accept system prompts");
28
- const format = audioFormats[model.outputType];
29
- const { output_format: requestedFormat, ...requestOptions } = request.options;
30
- if (requestedFormat !== undefined && requestedFormat !== format)
31
- throw new TypeError("output_format conflicts with model outputType");
32
- let path, body;
33
- if (model.endpoint === "tts") {
34
- const { voice_id: selectedVoice, ...settings } = requestOptions;
35
- const voice = selectedVoice ?? model.defaultVoiceId;
36
- if (!voice)
37
- throw new TypeError("ElevenLabs TTS requires voice_id or defaultVoiceId");
38
- path = `/v1/text-to-speech/${encodeURIComponent(voice)}`;
39
- body = { text: request.prompt, model_id: model.id, voice_settings: fields(settings, ["stability", "similarity_boost", "style", "speed"], ["use_speaker_boost"]) };
40
- }
41
- else {
42
- path = "/v1/music";
43
- body = { ...fields(requestOptions, ["music_length_ms", "seed"], ["force_instrumental", "respect_sections_durations"]), prompt: request.prompt, model_id: model.id };
44
- if (body.music_length_ms !== undefined && !Number.isInteger(body.music_length_ms))
45
- throw new TypeError("Invalid music_length_ms: expected integer");
46
- }
47
- yield* responseBytes(transport, `${origin}${path}?output_format=${format}`, headers, request.signal, limits.maxResponseBytes, jsonBody(body, limits.maxRequestBytes));
48
- },
49
- };
50
- }
1
+ export { createElevenLabsProvider } from "../elevenlabs.js";
51
2
  //# sourceMappingURL=elevenlabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../../../src/commands/llm/providers/elevenlabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../../../src/commands/llm/providers/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAwD,MAAM,kBAAkB,CAAC"}
@@ -1,10 +1,8 @@
1
+ import "../../../chunks/chunk-C7QNJ3D4.js";
1
2
  import {
2
3
  createElevenLabsProvider,
3
4
  createOpenAiProvider
4
- } from "../../../chunks/chunk-BZUQJTOZ.js";
5
- import "../../../chunks/chunk-EUTSYRNM.js";
6
- import "../../../chunks/chunk-KYU6MXVK.js";
7
- import "../../../chunks/chunk-FDGESHPB.js";
5
+ } from "../../../chunks/chunk-LR32SJ3D.js";
8
6
  import "../../../chunks/chunk-2KL6W6NB.js";
9
7
  export {
10
8
  createElevenLabsProvider,
@@ -1,15 +1,2 @@
1
- import type { LlmModel, LlmProvider } from "../types.js";
2
- import type { HttpTransport } from "../../network/types.js";
3
- import { type LlmProviderLimits } from "./shared.js";
4
- export interface OpenAiModel extends LlmModel {
5
- readonly endpoint: "chat" | "images" | "videos";
6
- }
7
- export interface OpenAiProviderOptions {
8
- readonly transport: HttpTransport;
9
- readonly apiKey: string;
10
- readonly baseUrl?: string;
11
- readonly models: readonly OpenAiModel[];
12
- readonly limits?: Partial<LlmProviderLimits>;
13
- }
14
- export declare function createOpenAiProvider(options: OpenAiProviderOptions): LlmProvider;
1
+ export { createOpenAiProvider, type OpenAiProviderOptions, type OpenAiModel } from "../openai.js";
15
2
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAmI,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEtL,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAyDhF"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -1,78 +1,2 @@
1
- import { delay } from "../../network/shared.js";
2
- import { baseUrl, credential, providerLimits, fields, jsonBody, multipart, toBase64, fromBase64, responseBytes, responseJson, chatEvents } from "./shared.js";
3
- export function createOpenAiProvider(options) {
4
- const origin = baseUrl(options.baseUrl ?? "https://api.openai.com/v1");
5
- const headers = [["Authorization", `Bearer ${credential(options.apiKey)}`]];
6
- const transport = options.transport;
7
- const limits = providerLimits(options.limits);
8
- const models = options.models.map(model => Object.freeze({ ...model, ...(model.aliases ? { aliases: Object.freeze([...model.aliases]) } : {}), ...(model.attachmentTypes ? { attachmentTypes: Object.freeze([...model.attachmentTypes]) } : {}) }));
9
- if (typeof transport !== "function")
10
- throw new TypeError("Provider transport is required");
11
- for (const model of models) {
12
- if (!["chat", "images", "videos"].includes(model.endpoint))
13
- throw new TypeError("Invalid OpenAI endpoint");
14
- if (model.endpoint === "images" && !["image/png", "image/jpeg", "image/webp"].includes(model.outputType ?? ""))
15
- throw new TypeError("Image models require outputType image/png, image/jpeg or image/webp");
16
- if (model.endpoint === "videos" && model.outputType !== "video/mp4")
17
- throw new TypeError("Video models require outputType video/mp4");
18
- if (model.endpoint === "chat" && model.outputType !== undefined && !model.outputType.startsWith("text/"))
19
- throw new TypeError("Chat models require a text outputType");
20
- }
21
- return {
22
- name: "openai", models: Object.freeze(models),
23
- async *complete(request) {
24
- request.signal.throwIfAborted();
25
- const model = models.find(candidate => candidate.id === request.model);
26
- if (!model)
27
- throw new Error(`Unknown model: ${request.model}`);
28
- if (request.attachments.some(attachment => !attachment.mimeType.startsWith("image/")))
29
- throw new TypeError("OpenAI reference endpoints accept only image attachments");
30
- if (request.attachments.reduce((size, file) => size + file.bytes.length, 0) > limits.maxRequestBytes)
31
- throw new RangeError("Provider request byte limit exceeded");
32
- const send = (path, payload) => responseBytes(transport, `${origin}${path}`, headers, request.signal, limits.maxResponseBytes, payload);
33
- if (model.endpoint === "chat") {
34
- const content = request.attachments.length ? [{ type: "text", text: request.prompt }, ...request.attachments.map(attachment => ({ type: "image_url", image_url: { url: `data:${attachment.mimeType};base64,${toBase64(attachment.bytes, limits.maxRequestBytes)}` } }))] : request.prompt;
35
- const messages = [...(request.system === undefined ? [] : [{ role: "system", content: request.system }]), { role: "user", content }];
36
- const body = jsonBody({ ...fields(request.options, ["temperature", "top_p", "max_tokens", "max_completion_tokens", "frequency_penalty", "presence_penalty", "seed", "n", "top_logprobs"], ["store", "parallel_tool_calls", "logprobs"]), model: model.id, messages, stream: true }, limits.maxRequestBytes);
37
- yield* chatEvents(send("/chat/completions", body), limits.maxEventBytes, request.signal);
38
- return;
39
- }
40
- if (request.system !== undefined)
41
- throw new TypeError("System prompts are supported only by chat models");
42
- if (model.endpoint === "images") {
43
- const outputFormat = model.outputType === "image/jpeg" ? "jpeg" : model.outputType === "image/webp" ? "webp" : "png";
44
- if (request.options.output_format !== undefined && request.options.output_format !== outputFormat)
45
- throw new TypeError("output_format conflicts with model outputType");
46
- const values = { ...fields(request.options, ["n", "output_compression", "partial_images"], ["stream"]), output_format: outputFormat, model: model.id, prompt: request.prompt };
47
- if (values.stream === true)
48
- throw new TypeError("Image event streaming is not supported by this reference provider");
49
- const payload = request.attachments.length ? multipart(values, request.attachments.map(file => ({ ...file, field: "image[]" })), limits.maxRequestBytes) : jsonBody(values, limits.maxRequestBytes);
50
- const result = await responseJson(send(request.attachments.length ? "/images/edits" : "/images/generations", payload), limits.maxResponseBytes, request.signal);
51
- if (!Array.isArray(result.data) || result.data.length !== 1)
52
- throw new TypeError("Expected one generated image");
53
- yield fromBase64(result.data[0]?.b64_json, limits.maxResponseBytes);
54
- return;
55
- }
56
- if (request.attachments.length > 1)
57
- throw new TypeError("Videos accept one input_reference attachment");
58
- const payload = multipart({ ...request.options, model: model.id, prompt: request.prompt }, request.attachments.map(file => ({ ...file, field: "input_reference" })), limits.maxRequestBytes);
59
- let job = await responseJson(send("/videos", payload), limits.maxResponseBytes, request.signal);
60
- if (typeof job.id !== "string" || !job.id)
61
- throw new TypeError("Invalid video job id");
62
- const path = `/videos/${encodeURIComponent(job.id)}`;
63
- let polls = 0;
64
- while (job.status !== "completed") {
65
- if (job.status === "failed")
66
- throw new Error("Provider video generation failed");
67
- if (job.status !== "queued" && job.status !== "in_progress")
68
- throw new TypeError("Invalid video job status");
69
- if (polls++ >= limits.maxPolls)
70
- throw new RangeError("Provider video polling limit exceeded");
71
- await delay(limits.pollIntervalMs, request.signal);
72
- job = await responseJson(send(path), limits.maxResponseBytes, request.signal);
73
- }
74
- yield* send(`${path}/content`);
75
- },
76
- };
77
- }
1
+ export { createOpenAiProvider } from "../openai.js";
78
2
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../src/commands/llm/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../src/commands/llm/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAgD,MAAM,cAAc,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type ByteSource } from "../../../contracts/io.js";
2
- import type { HttpHeaders, HttpTransport } from "../../network/types.js";
1
+ import type { ByteSource } from "../../../contracts/io.js";
2
+ import type { HttpHeaders } from "../../network/types.js";
3
3
  export interface LlmProviderLimits {
4
4
  readonly maxRequestBytes: number;
5
5
  readonly maxResponseBytes: number;
@@ -8,27 +8,17 @@ export interface LlmProviderLimits {
8
8
  readonly pollIntervalMs: number;
9
9
  }
10
10
  export declare function providerLimits(input?: Partial<LlmProviderLimits>): LlmProviderLimits;
11
- export declare function baseUrl(value: string): string;
12
11
  export declare function credential(value: string): string;
13
- export declare function fields(options: Readonly<Record<string, string>>, numbers: readonly string[], booleans: readonly string[]): Record<string, unknown>;
14
12
  export declare function jsonBody(value: unknown, limit: number): {
15
13
  body: ByteSource;
16
- contentType: string;
14
+ headers: HttpHeaders;
17
15
  };
18
- export declare function toBase64(bytes: Uint8Array, limit: number): string;
19
- export declare function fromBase64(value: unknown, limit: number): Uint8Array;
20
16
  export declare function multipart(options: Record<string, unknown>, files: readonly {
21
17
  field: string;
22
18
  mimeType: string;
23
19
  bytes: Uint8Array;
24
20
  }[], limit: number): {
25
21
  body: ByteSource;
26
- contentType: string;
22
+ headers: HttpHeaders;
27
23
  };
28
- export declare function responseBytes(transport: HttpTransport, url: string, headers: HttpHeaders, signal: AbortSignal, limit: number, payload?: {
29
- body: ByteSource;
30
- contentType: string;
31
- }): AsyncGenerator<Uint8Array>;
32
- export declare function responseJson(source: ByteSource, limit: number, signal: AbortSignal): Promise<Record<string, unknown>>;
33
- export declare function chatEvents(source: ByteSource, limit: number, signal: AbortSignal): AsyncGenerator<string>;
34
24
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAgB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CAMxF;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAclJ;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAMjG;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAKpE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAkC9L;AAED,wBAAuB,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAkCrN;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAK3H;AAED,wBAAuB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAmChH"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/providers/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CAMxF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAMlG;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAkC/L"}