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
@@ -1,194 +1,273 @@
1
- import { createOutputOperation, getCommandArguments, readBytes, resolvePath, writeBytes } from "../../contracts/index.js";
2
- import { yieldTurn } from "../../contracts/yield.js";
3
- import { attachmentMime } from "./mime.js";
1
+ import { createOutputOperation, getCommandArguments, FsError } from "../../contracts/index.js";
2
+ import { inheritYieldCheckpoint, yieldTurn } from "../../contracts/yield.js";
3
+ import { writeDiagnostic } from "../../escaping.js";
4
+ import { pathOf } from "../internal.js";
5
+ import { acceptsMimeType, sniffMimeType } from "./mime.js";
4
6
  const maxBytes = 64 * 1024 * 1024;
5
- export function createCommand(options) {
6
- const models = new Map();
7
- const declarations = [];
8
- for (const provider of options.providers) {
7
+ async function parse(length, text, step) {
8
+ const parsed = { prompt: "", options: Object.create(null), attachments: [] };
9
+ const operands = [];
10
+ let ended = false;
11
+ for (let index = 0; index < length; index++) {
12
+ await step();
13
+ const argument = text(index);
14
+ if (ended || !argument.startsWith("-") || argument === "-") {
15
+ operands.push(argument);
16
+ continue;
17
+ }
18
+ if (argument === "--") {
19
+ ended = true;
20
+ continue;
21
+ }
22
+ const equals = argument.indexOf("=");
23
+ const long = argument.startsWith("--");
24
+ const flag = long ? argument.slice(0, equals < 0 ? undefined : equals) : argument.slice(0, 2);
25
+ const attached = long ? equals < 0 ? undefined : argument.slice(equals + 1) : argument.length > 2 ? argument.slice(2) : undefined;
26
+ const take = () => {
27
+ if (++index >= length)
28
+ throw new Error(`Option ${flag} requires an argument`);
29
+ return text(index);
30
+ };
31
+ if (!["-m", "--model", "-s", "--system", "-o", "--option", "-a", "--attachment", "--at"].includes(flag))
32
+ throw new Error(`Unknown option: ${flag}`);
33
+ const value = attached ?? take();
34
+ if (flag === "-m" || flag === "--model")
35
+ parsed.model = value;
36
+ else if (flag === "-s" || flag === "--system")
37
+ parsed.system = value;
38
+ else if (flag === "-o" || flag === "--option")
39
+ parsed.options[value] = take();
40
+ else if (flag === "--at")
41
+ parsed.attachments.push({ path: value, mimeType: take() });
42
+ else
43
+ parsed.attachments.push({ path: value });
44
+ }
45
+ parsed.prompt = operands.join(" ");
46
+ return parsed;
47
+ }
48
+ function modelsFor(providers) {
49
+ const models = [], lookup = new Map();
50
+ for (const provider of providers) {
9
51
  if (!provider.name || typeof provider.complete !== "function")
10
- throw new TypeError("Invalid LLM provider");
11
- for (const source of provider.models) {
12
- const model = { ...source, ...(source.aliases ? { aliases: [...source.aliases] } : {}), ...(source.attachmentTypes ? { attachmentTypes: [...source.attachmentTypes] } : {}) };
52
+ throw new TypeError("Providers require a name and complete function");
53
+ for (const declared of provider.models) {
54
+ if (!declared.id)
55
+ throw new TypeError("Models require a nonempty id");
56
+ const model = Object.freeze({ ...declared,
57
+ ...(declared.aliases ? { aliases: Object.freeze([...declared.aliases]) } : {}),
58
+ ...(declared.attachmentTypes ? { attachmentTypes: Object.freeze([...declared.attachmentTypes]) } : {}),
59
+ });
13
60
  const entry = { provider, model };
14
- for (const name of [model.id, ...(model.aliases ?? [])]) {
61
+ for (const name of new Set([model.id, `${provider.name}/${model.id}`, ...model.aliases ?? []])) {
15
62
  if (!name)
16
- throw new TypeError("Model names must be nonempty");
17
- if (models.has(name))
18
- throw new Error(`Duplicate model: ${name}`);
19
- models.set(name, entry);
63
+ throw new TypeError("Model aliases must not be empty");
64
+ if (lookup.has(name))
65
+ throw new Error(`Duplicate model id or alias: ${name}`);
66
+ lookup.set(name, entry);
20
67
  }
21
- declarations.push(entry);
68
+ models.push(entry);
22
69
  }
23
70
  }
24
- return { name: "llm", description: "Query explicitly injected language and media models", async execute(context) {
25
- const output = createOutputOperation(context, context.stdout);
26
- const signal = output.signal;
27
- let iterator;
28
- let closed = false;
29
- let ended = false;
30
- output.registerCleanup(() => {
31
- if (closed)
32
- return;
33
- closed = true;
34
- if (!ended && iterator?.return) {
35
- const returned = Promise.resolve().then(() => iterator.return());
36
- void returned.catch(() => { });
37
- }
38
- });
39
- const wait = (pending) => new Promise((resolve, reject) => {
40
- const abort = () => reject(signal.reason);
41
- signal.addEventListener("abort", abort, { once: true });
42
- if (signal.aborted)
43
- abort();
44
- Promise.resolve(pending).then(value => {
45
- signal.removeEventListener("abort", abort);
46
- resolve(value);
47
- }, error => { signal.removeEventListener("abort", abort); reject(error); });
48
- });
49
- let inputBytes = 0;
50
- let argumentBytes = 0;
51
- let work = 0;
52
- const step = async () => {
53
- signal.throwIfAborted();
54
- if (closed)
55
- throw new Error("LLM invocation is closed");
56
- if (++work > 1_000_000)
57
- throw new Error("LLM work limit exceeded");
58
- if (work % 256 === 0)
59
- await yieldTurn(signal);
60
- };
61
- const admit = (bytes) => {
62
- context.inputBudget?.check(inputBytes + bytes);
63
- if (bytes > maxBytes - inputBytes)
64
- throw new Error("LLM input byte limit exceeded");
65
- inputBytes += bytes;
66
- };
67
- const emitText = async (text) => {
68
- for (let offset = 0; offset < text.length;) {
69
- await step();
70
- let end = Math.min(text.length, offset + 16_384);
71
- if (end < text.length && text.charCodeAt(end - 1) >= 0xd800 && text.charCodeAt(end - 1) <= 0xdbff)
72
- end--;
73
- await output.output.write(new TextEncoder().encode(text.slice(offset, end)));
74
- offset = end;
75
- }
76
- };
77
- try {
78
- const args = getCommandArguments(context);
79
- const text = (index) => {
80
- const bytes = args.bytes(index);
81
- if (!bytes)
82
- throw new Error("Missing option argument");
83
- if (bytes.length > maxBytes - argumentBytes)
84
- throw new Error("LLM argument byte limit exceeded");
85
- argumentBytes += bytes.length;
86
- return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
87
- };
88
- const positional = [];
89
- const files = [];
90
- const settings = Object.create(null);
91
- let modelName = options.defaultModel;
92
- let system;
93
- let operands = false;
94
- for (let index = 0; index < args.args.length; index++) {
95
- await step();
96
- const arg = text(index);
97
- if (!operands && arg === "--") {
98
- operands = true;
99
- continue;
100
- }
101
- if (!operands && ["-m", "--model"].includes(arg))
102
- modelName = text(++index);
103
- else if (!operands && ["-s", "--system"].includes(arg))
104
- system = text(++index);
105
- else if (!operands && ["-o", "--option"].includes(arg)) {
106
- const key = text(++index);
107
- settings[key] = text(++index);
108
- }
109
- else if (!operands && ["-a", "--attachment", "--at"].includes(arg)) {
110
- const path = text(++index);
111
- files.push(arg === "--at" ? { path, mime: text(++index) } : { path });
112
- }
113
- else if (!operands && arg.startsWith("-"))
114
- throw new Error(`Unknown option: ${arg}`);
115
- else
116
- positional.push(arg);
117
- }
118
- if (args.args[0] === "models" && positional.length === 1 && !files.length) {
119
- for (const { provider, model } of declarations) {
120
- await step();
121
- await emitText(`${provider.name}/${model.id}\taliases: ${(model.aliases ?? []).join(", ")}\tattachments: ${(model.attachmentTypes ?? []).join(", ")}\toutput: ${model.outputType ?? "text/plain"}\n`);
122
- }
123
- return { exitCode: 0 };
124
- }
125
- const selected = modelName === undefined ? undefined : models.get(modelName);
126
- if (!selected)
127
- throw new Error(`Unknown model: ${modelName ?? "(no default model)"}`);
128
- const chunks = [];
129
- let stdinBytes = 0;
130
- for await (const bytes of readBytes(context.stdin, signal)) {
131
- await step();
132
- admit(bytes.length);
133
- stdinBytes += bytes.length;
134
- chunks.push(new Uint8Array(bytes));
135
- }
136
- const stdin = new Uint8Array(stdinBytes);
137
- let offset = 0;
138
- for (const bytes of chunks) {
139
- stdin.set(bytes, offset);
140
- offset += bytes.length;
141
- }
142
- const content = new TextDecoder("utf-8", { fatal: true }).decode(stdin);
143
- const instruction = positional.join(" ");
144
- const attachments = [];
145
- for (const file of files) {
146
- await step();
147
- const path = resolvePath(context.cwd, file.path);
148
- const stat = await wait(context.fs.stat(path, { signal }));
149
- context.inputBudget?.check(inputBytes + stat.size);
150
- if (stat.size > maxBytes - inputBytes)
151
- throw new Error("LLM input byte limit exceeded");
152
- const bytes = await wait(context.fs.readFile(path, { signal, maxBytes: Math.min(maxBytes, context.inputBudget?.maxBytes ?? maxBytes) - inputBytes }));
153
- signal.throwIfAborted();
154
- admit(bytes.length);
155
- const mimeType = file.mime ?? attachmentMime(bytes, file.path);
156
- if (!selected.model.attachmentTypes?.some(type => type === mimeType || (type.endsWith("/*") && mimeType.startsWith(type.slice(0, -1)))))
157
- throw new Error(`Model ${selected.model.id} does not accept ${mimeType}`);
158
- attachments.push({ mimeType, bytes: new Uint8Array(bytes) });
159
- }
160
- const request = { model: selected.model.id, prompt: content && instruction ? `${content}\n\n${instruction}` : content || instruction, attachments, options: settings, signal, ...(system === undefined ? {} : { system }) };
161
- signal.throwIfAborted();
162
- iterator = selected.provider.complete(request)[Symbol.asyncIterator]();
163
- const binary = !(selected.model.outputType ?? "text/plain").startsWith("text/");
164
- while (true) {
165
- await step();
166
- const next = await wait(iterator.next());
167
- signal.throwIfAborted();
168
- if (next.done) {
169
- ended = true;
170
- break;
171
- }
172
- if (binary ? !(next.value instanceof Uint8Array) : typeof next.value !== "string")
173
- throw new Error("Invalid provider response: mixed text and binary chunks or wrong output type");
174
- if (typeof next.value === "string")
175
- await emitText(next.value);
176
- else
177
- await output.output.write(next.value);
178
- }
179
- if (!binary)
180
- await output.output.write(new Uint8Array([10]));
181
- return { exitCode: 0 };
71
+ return { models, lookup };
72
+ }
73
+ async function interrupted(start, signal) {
74
+ signal.throwIfAborted();
75
+ return new Promise((resolve, reject) => {
76
+ const aborted = () => reject(signal.reason);
77
+ signal.addEventListener("abort", aborted, { once: true });
78
+ Promise.resolve().then(() => { signal.throwIfAborted(); return start(); }).then(value => { signal.removeEventListener("abort", aborted); resolve(value); }, error => { signal.removeEventListener("abort", aborted); reject(error); });
79
+ });
80
+ }
81
+ async function execute(context, lookup, models, defaultModel) {
82
+ context.signal.throwIfAborted();
83
+ const controller = new AbortController();
84
+ const operation = createOutputOperation(context, context.stdout);
85
+ const signal = AbortSignal.any([operation.signal, controller.signal]);
86
+ inheritYieldCheckpoint(context.signal, signal);
87
+ let iterator;
88
+ let closed = false;
89
+ let ended = false;
90
+ operation.registerCleanup(() => {
91
+ if (closed)
92
+ return;
93
+ closed = true;
94
+ controller.abort(new Error("llm request closed"));
95
+ if (!ended && iterator) {
96
+ const resource = iterator;
97
+ void Promise.resolve().then(() => resource.return?.()).catch(() => { });
98
+ }
99
+ });
100
+ let work = 0;
101
+ const step = async () => {
102
+ signal.throwIfAborted();
103
+ if (closed)
104
+ throw new Error("LLM invocation is closed");
105
+ if (++work > 1_000_000)
106
+ throw new Error("LLM work limit exceeded");
107
+ if (work % 256 === 0)
108
+ await yieldTurn(signal);
109
+ };
110
+ let writing = false;
111
+ const write = async (chunk) => {
112
+ writing = true;
113
+ await operation.output.write(chunk);
114
+ writing = false;
115
+ };
116
+ const emitText = async (text) => {
117
+ for (let offset = 0; offset < text.length;) {
118
+ await step();
119
+ let end = Math.min(text.length, offset + 16_384);
120
+ const last = text.charCodeAt(end - 1);
121
+ if (end < text.length && last >= 0xd800 && last <= 0xdbff)
122
+ end--;
123
+ await write(new TextEncoder().encode(text.slice(offset, end)));
124
+ offset = end;
125
+ }
126
+ };
127
+ let inputBytes = 0;
128
+ let argumentBytes = 0;
129
+ const inputLimit = Math.min(maxBytes, context.inputBudget?.maxBytes ?? maxBytes);
130
+ const checkInput = (size) => {
131
+ context.inputBudget?.check(inputBytes + size);
132
+ if (size > inputLimit - inputBytes)
133
+ throw new FsError("EFBIG", { message: "llm input byte limit exceeded" });
134
+ };
135
+ const admitInput = (size) => {
136
+ checkInput(size);
137
+ inputBytes += size;
138
+ };
139
+ try {
140
+ const argumentsValue = getCommandArguments(context);
141
+ const argumentText = (index) => {
142
+ const bytes = argumentsValue.bytes(index);
143
+ if (!bytes)
144
+ throw new Error("Missing option argument");
145
+ if (bytes.byteLength > maxBytes - argumentBytes)
146
+ throw new Error("LLM argument byte limit exceeded");
147
+ argumentBytes += bytes.byteLength;
148
+ return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
149
+ };
150
+ if (argumentsValue.args.length === 1 && ["--help", "-h"].includes(argumentsValue.args[0])) {
151
+ argumentText(0);
152
+ await emitText("Usage: llm [prompt] [-m MODEL] [-s SYSTEM] [-o KEY VALUE] [-a PATH] [--at PATH MIMETYPE]\n llm models\nOptions: --model, --system, --option, --attachment; -- ends options\n");
153
+ return { exitCode: 0 };
154
+ }
155
+ const args = await parse(argumentsValue.args.length, argumentText, step);
156
+ if (argumentsValue.args[0] === "models" && args.prompt === "models" && !args.attachments.length) {
157
+ for (const { provider, model } of models) {
158
+ await step();
159
+ await emitText(`${provider.name}/${model.id} aliases: ${model.aliases?.join(", ") || "-"} attachments: ${model.attachmentTypes?.join(", ") || "-"} output: ${model.outputType ?? "text/plain"}\n`);
182
160
  }
183
- catch (error) {
184
- context.signal.throwIfAborted();
185
- signal.throwIfAborted();
186
- await writeBytes(context.stderr, new TextEncoder().encode(`llm: ${error instanceof Error ? error.message.slice(0, 4096) : "Provider failed"}\n`), context.signal);
187
- return { exitCode: 1 };
161
+ return { exitCode: 0 };
162
+ }
163
+ const selected = args.model ?? defaultModel;
164
+ if (selected === undefined)
165
+ throw new Error("No model selected; use --model or configure defaultModel");
166
+ const entry = lookup.get(selected);
167
+ if (!entry)
168
+ throw new Error(`Unknown model: ${selected}`);
169
+ const fragments = [];
170
+ const decoder = new TextDecoder("utf-8", { fatal: true });
171
+ const input = await operation.acquire(() => context.stdinInput
172
+ ? { next: () => context.stdinInput.read(Math.min(65536, inputLimit - inputBytes + 1), signal) }
173
+ : context.stdin[Symbol.asyncIterator](), async (iterator) => { await iterator.return?.(); });
174
+ while (true) {
175
+ await step();
176
+ const result = await interrupted(() => input.next(), signal);
177
+ signal.throwIfAborted();
178
+ if (result.done)
179
+ break;
180
+ const chunk = result.value;
181
+ if (!(chunk instanceof Uint8Array))
182
+ throw new TypeError("Byte sources must yield Uint8Array chunks");
183
+ admitInput(chunk.byteLength);
184
+ fragments.push(decoder.decode(chunk, { stream: true }));
185
+ }
186
+ fragments.push(decoder.decode());
187
+ const content = fragments.join("");
188
+ const attachments = [];
189
+ for (const attachment of args.attachments) {
190
+ await step();
191
+ if (attachment.path.includes("://"))
192
+ throw new Error("URL attachments are not supported");
193
+ const path = pathOf(context, attachment.path);
194
+ const stat = await interrupted(() => context.fs.stat(path, { signal }), signal);
195
+ checkInput(stat.size);
196
+ const bytes = await interrupted(() => context.fs.readFile(path, { signal, maxBytes: inputLimit - inputBytes }), signal);
197
+ signal.throwIfAborted();
198
+ if (!(bytes instanceof Uint8Array))
199
+ throw new TypeError("Attachment read must return Uint8Array");
200
+ admitInput(bytes.byteLength);
201
+ const mimeType = attachment.mimeType ?? sniffMimeType(path, bytes);
202
+ if (!acceptsMimeType(entry.model.attachmentTypes ?? [], mimeType))
203
+ throw new Error(`Model ${entry.model.id} does not accept ${mimeType}`);
204
+ attachments.push({ mimeType, bytes: new Uint8Array(bytes) });
205
+ }
206
+ const request = {
207
+ model: entry.model.id, prompt: content && args.prompt ? `${content}\n\n${args.prompt}` : content || args.prompt,
208
+ ...(args.system === undefined ? {} : { system: args.system }), attachments, options: args.options, signal,
209
+ };
210
+ signal.throwIfAborted();
211
+ iterator = entry.provider.complete(request)[Symbol.asyncIterator]();
212
+ const text = (entry.model.outputType ?? "text/plain").toLowerCase().startsWith("text/");
213
+ let pendingSurrogate = "";
214
+ while (true) {
215
+ await step();
216
+ const result = await interrupted(() => iterator.next(), signal);
217
+ signal.throwIfAborted();
218
+ if (result.done) {
219
+ ended = true;
220
+ break;
188
221
  }
189
- finally {
190
- await output.close();
222
+ if (text ? typeof result.value !== "string" : !(result.value instanceof Uint8Array))
223
+ throw new Error(`Provider ${entry.provider.name} returned a response chunk incompatible with ${entry.model.outputType ?? "text/plain"}`);
224
+ if (typeof result.value === "string") {
225
+ let chunk = pendingSurrogate + result.value;
226
+ const last = chunk.charCodeAt(chunk.length - 1);
227
+ pendingSurrogate = last >= 0xd800 && last <= 0xdbff ? chunk.slice(-1) : "";
228
+ if (pendingSurrogate)
229
+ chunk = chunk.slice(0, -1);
230
+ if (chunk)
231
+ await emitText(chunk);
191
232
  }
233
+ else
234
+ await write(result.value);
235
+ }
236
+ if (text) {
237
+ if (pendingSurrogate)
238
+ await emitText(pendingSurrogate);
239
+ await write(Uint8Array.of(10));
240
+ }
241
+ return { exitCode: 0 };
242
+ }
243
+ catch (error) {
244
+ context.signal.throwIfAborted();
245
+ operation.signal.throwIfAborted();
246
+ controller.abort(error);
247
+ if (writing)
248
+ throw error;
249
+ await operation.close();
250
+ await writeDiagnostic(context.stderr, `${error instanceof Error ? error.message.slice(0, 4096) : "llm provider failed"}\n`, context.signal);
251
+ return { exitCode: 1 };
252
+ }
253
+ finally {
254
+ controller.abort(new Error("llm request closed"));
255
+ await operation.close();
256
+ }
257
+ }
258
+ export function createLlmCommands(options) {
259
+ const { models, lookup } = modelsFor(options.providers);
260
+ const defaultModel = options.defaultModel;
261
+ return [{ name: "llm", description: "Query injected language and media models", execute: context => execute(context, lookup, models, defaultModel) }];
262
+ }
263
+ export function llmCommands(options) {
264
+ const definitions = createLlmCommands(options);
265
+ const replace = options.replace ?? false;
266
+ return { name: "llm-commands", setup(host) {
267
+ if (!replace && host.commands.has("llm"))
268
+ throw new Error("Command already registered: llm");
269
+ for (const definition of definitions)
270
+ host.commands.register(definition, { replace });
192
271
  } };
193
272
  }
194
273
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/llm/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/llm/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { HttpRequest, HttpTransport } from "../network/types.js";
2
+ export declare function streamElevenLabs(transport: HttpTransport, request: HttpRequest, limit?: number): AsyncGenerator<Uint8Array>;
3
+ //# sourceMappingURL=elevenlabs-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-stream.d.ts","sourceRoot":"","sources":["../../../src/commands/llm/elevenlabs-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBpF,wBAAuB,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,SAAmB,GAAG,cAAc,CAAC,UAAU,CAAC,CA6E5I"}
@@ -0,0 +1,118 @@
1
+ async function abortable(operation, signal) {
2
+ signal.throwIfAborted();
3
+ let onAbort;
4
+ const aborted = new Promise((_resolve, reject) => {
5
+ onAbort = () => reject(signal.reason);
6
+ signal.addEventListener("abort", onAbort, { once: true });
7
+ });
8
+ try {
9
+ return await Promise.race([Promise.resolve().then(() => { signal.throwIfAborted(); return operation(); }), aborted]);
10
+ }
11
+ finally {
12
+ signal.removeEventListener("abort", onAbort);
13
+ }
14
+ }
15
+ export async function* streamElevenLabs(transport, request, limit = 64 * 1024 * 1024) {
16
+ const { signal } = request;
17
+ signal.throwIfAborted();
18
+ let iterator;
19
+ let finished = false;
20
+ let failed = false;
21
+ let closed = false;
22
+ let size = 0;
23
+ const cleanups = new Map();
24
+ const runCleanup = (entry) => {
25
+ return entry.pending ??= Promise.resolve().then(entry.run);
26
+ };
27
+ const register = (cleanup, receiver) => {
28
+ if (cleanups.has(cleanup))
29
+ return;
30
+ const entry = { run: () => cleanup.call(receiver) };
31
+ cleanups.set(cleanup, entry);
32
+ if (closed)
33
+ void runCleanup(entry).catch(() => { });
34
+ };
35
+ const dispose = async () => {
36
+ closed = true;
37
+ let seen = 0;
38
+ const failures = [];
39
+ while (seen < cleanups.size) {
40
+ const entries = [...cleanups.values()].slice(seen);
41
+ seen = cleanups.size;
42
+ const results = await Promise.allSettled(entries.map(runCleanup));
43
+ for (const result of results)
44
+ if (result.status === "rejected")
45
+ failures.push(result.reason);
46
+ }
47
+ if (failures.length)
48
+ throw failures[0];
49
+ };
50
+ const close = async () => {
51
+ const failures = [];
52
+ try {
53
+ await dispose();
54
+ }
55
+ catch (error) {
56
+ failures.push(error);
57
+ }
58
+ if (!finished && iterator?.return) {
59
+ const closing = Promise.resolve().then(() => iterator.return());
60
+ if (signal.aborted)
61
+ void closing.catch(() => { });
62
+ else {
63
+ try {
64
+ await closing;
65
+ }
66
+ catch (error) {
67
+ failures.push(error);
68
+ }
69
+ }
70
+ }
71
+ if (!failed) {
72
+ signal.throwIfAborted();
73
+ if (failures.length)
74
+ throw failures[0];
75
+ }
76
+ };
77
+ const onAbort = () => { void dispose().catch(() => { }); };
78
+ signal.addEventListener("abort", onAbort, { once: true });
79
+ try {
80
+ const acquired = await abortable(async () => {
81
+ signal.throwIfAborted();
82
+ const response = await transport({ ...request, registerCleanup: register });
83
+ register(response.dispose, response);
84
+ if (signal.aborted) {
85
+ await dispose();
86
+ signal.throwIfAborted();
87
+ }
88
+ return response;
89
+ }, signal);
90
+ signal.throwIfAborted();
91
+ if (acquired.status < 200 || acquired.status >= 300)
92
+ throw new Error(`ElevenLabs HTTP ${acquired.status}: ${acquired.statusText}`);
93
+ iterator = acquired.body[Symbol.asyncIterator]();
94
+ while (true) {
95
+ const next = await abortable(() => iterator.next(), signal);
96
+ signal.throwIfAborted();
97
+ if (next.done) {
98
+ finished = true;
99
+ return;
100
+ }
101
+ if (!(next.value instanceof Uint8Array))
102
+ throw new TypeError("ElevenLabs audio stream must yield Uint8Array chunks");
103
+ size += next.value.byteLength;
104
+ if (size > limit)
105
+ throw new RangeError("Provider response byte limit exceeded");
106
+ yield Uint8Array.from(next.value);
107
+ }
108
+ }
109
+ catch (error) {
110
+ failed = true;
111
+ throw error;
112
+ }
113
+ finally {
114
+ signal.removeEventListener("abort", onAbort);
115
+ await close();
116
+ }
117
+ }
118
+ //# sourceMappingURL=elevenlabs-stream.js.map