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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/commands/llm/index.ts", "../../src/commands/llm/command.ts"],
4
+ "sourcesContent": ["export { createLlmCommands, llmCommands } from \"./command.js\";\nexport type { LlmCommandsOptions, LlmProvider, LlmModel, LlmRequest } from \"./types.js\";\nexport { createOpenAiProvider, type OpenAiModel, type OpenAiProviderOptions } from \"./openai.js\";\nexport { createElevenLabsProvider, type ElevenLabsModel, type ElevenLabsProviderOptions } from \"./elevenlabs.js\";\nexport type { LlmProviderLimits } from \"./providers/shared.js\";\n", "import { createOutputOperation, getCommandArguments, FsError, type CommandContext, type CommandDefinition, type VirtualShellPlugin } from \"../../contracts/index.js\";\nimport { inheritYieldCheckpoint, yieldTurn } from \"../../contracts/yield.js\";\nimport { writeDiagnostic } from \"../../escaping.js\";\nimport { pathOf } from \"../internal.js\";\nimport { acceptsMimeType, sniffMimeType } from \"./mime.js\";\nimport type { LlmCommandsOptions, LlmModel, LlmProvider, LlmRequest } from \"./types.js\";\n\nconst maxBytes = 64 * 1024 * 1024;\n\ninterface ModelEntry { provider: LlmProvider; model: LlmModel }\ninterface Arguments {\n model?: string;\n system?: string;\n prompt: string;\n options: Record<string, string>;\n attachments: { path: string; mimeType?: string }[];\n}\n\nasync function parse(length: number, text: (index: number) => string, step: () => Promise<void>): Promise<Arguments> {\n const parsed: Arguments = { prompt: \"\", options: Object.create(null) as Record<string, string>, attachments: [] };\n const operands: string[] = [];\n let ended = false;\n for (let index = 0; index < length; index++) {\n await step();\n const argument = text(index);\n if (ended || !argument.startsWith(\"-\") || argument === \"-\") { operands.push(argument); continue; }\n if (argument === \"--\") { ended = true; continue; }\n const equals = argument.indexOf(\"=\");\n const long = argument.startsWith(\"--\");\n const flag = long ? argument.slice(0, equals < 0 ? undefined : equals) : argument.slice(0, 2);\n const attached = long ? equals < 0 ? undefined : argument.slice(equals + 1) : argument.length > 2 ? argument.slice(2) : undefined;\n const take = (): string => {\n if (++index >= length) throw new Error(`Option ${flag} requires an argument`);\n return text(index);\n };\n if (![\"-m\", \"--model\", \"-s\", \"--system\", \"-o\", \"--option\", \"-a\", \"--attachment\", \"--at\"].includes(flag)) throw new Error(`Unknown option: ${flag}`);\n const value = attached ?? take();\n if (flag === \"-m\" || flag === \"--model\") parsed.model = value;\n else if (flag === \"-s\" || flag === \"--system\") parsed.system = value;\n else if (flag === \"-o\" || flag === \"--option\") parsed.options[value] = take();\n else if (flag === \"--at\") parsed.attachments.push({ path: value, mimeType: take() });\n else parsed.attachments.push({ path: value });\n }\n parsed.prompt = operands.join(\" \");\n return parsed;\n}\n\nfunction modelsFor(providers: readonly LlmProvider[]): { models: ModelEntry[]; lookup: Map<string, ModelEntry> } {\n const models: ModelEntry[] = [], lookup = new Map<string, ModelEntry>();\n for (const provider of providers) {\n if (!provider.name || typeof provider.complete !== \"function\") throw new TypeError(\"Providers require a name and complete function\");\n for (const declared of provider.models) {\n if (!declared.id) throw new TypeError(\"Models require a nonempty id\");\n const model: LlmModel = Object.freeze({ ...declared,\n ...(declared.aliases ? { aliases: Object.freeze([...declared.aliases]) } : {}),\n ...(declared.attachmentTypes ? { attachmentTypes: Object.freeze([...declared.attachmentTypes]) } : {}),\n });\n const entry = { provider, model };\n for (const name of new Set([model.id, `${provider.name}/${model.id}`, ...model.aliases ?? []])) {\n if (!name) throw new TypeError(\"Model aliases must not be empty\");\n if (lookup.has(name)) throw new Error(`Duplicate model id or alias: ${name}`);\n lookup.set(name, entry);\n }\n models.push(entry);\n }\n }\n return { models, lookup };\n}\n\nasync function interrupted<Value>(start: () => Value | PromiseLike<Value>, signal: AbortSignal): Promise<Value> {\n signal.throwIfAborted();\n return new Promise<Value>((resolve, reject) => {\n const aborted = (): void => reject(signal.reason);\n signal.addEventListener(\"abort\", aborted, { once: true });\n Promise.resolve().then(() => { signal.throwIfAborted(); return start(); }).then(\n value => { signal.removeEventListener(\"abort\", aborted); resolve(value); },\n error => { signal.removeEventListener(\"abort\", aborted); reject(error); },\n );\n });\n}\n\nasync function execute(context: CommandContext, lookup: ReadonlyMap<string, ModelEntry>, models: readonly ModelEntry[], defaultModel: string | undefined) {\n context.signal.throwIfAborted();\n const controller = new AbortController();\n const operation = createOutputOperation(context, context.stdout);\n const signal = AbortSignal.any([operation.signal, controller.signal]);\n inheritYieldCheckpoint(context.signal, signal);\n let iterator: AsyncIterator<string | Uint8Array> | undefined;\n let closed = false;\n let ended = false;\n operation.registerCleanup(() => {\n if (closed) return;\n closed = true;\n controller.abort(new Error(\"llm request closed\"));\n if (!ended && iterator) {\n const resource = iterator;\n void Promise.resolve().then(() => resource.return?.()).catch(() => {});\n }\n });\n let work = 0;\n const step = async (): Promise<void> => {\n signal.throwIfAborted();\n if (closed) throw new Error(\"LLM invocation is closed\");\n if (++work > 1_000_000) throw new Error(\"LLM work limit exceeded\");\n if (work % 256 === 0) await yieldTurn(signal);\n };\n let writing = false;\n const write = async (chunk: Uint8Array): Promise<void> => {\n writing = true;\n await operation.output.write(chunk);\n writing = false;\n };\n const emitText = async (text: string): Promise<void> => {\n for (let offset = 0; offset < text.length;) {\n await step();\n let end = Math.min(text.length, offset + 16_384);\n const last = text.charCodeAt(end - 1);\n if (end < text.length && last >= 0xd800 && last <= 0xdbff) end--;\n await write(new TextEncoder().encode(text.slice(offset, end)));\n offset = end;\n }\n };\n let inputBytes = 0;\n let argumentBytes = 0;\n const inputLimit = Math.min(maxBytes, context.inputBudget?.maxBytes ?? maxBytes);\n const checkInput = (size: number): void => {\n context.inputBudget?.check(inputBytes + size);\n if (size > inputLimit - inputBytes) throw new FsError(\"EFBIG\", { message: \"llm input byte limit exceeded\" });\n };\n const admitInput = (size: number): void => {\n checkInput(size);\n inputBytes += size;\n };\n try {\n const argumentsValue = getCommandArguments(context);\n const argumentText = (index: number): string => {\n const bytes = argumentsValue.bytes(index);\n if (!bytes) throw new Error(\"Missing option argument\");\n if (bytes.byteLength > maxBytes - argumentBytes) throw new Error(\"LLM argument byte limit exceeded\");\n argumentBytes += bytes.byteLength;\n return new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n };\n if (argumentsValue.args.length === 1 && [\"--help\", \"-h\"].includes(argumentsValue.args[0]!)) {\n argumentText(0);\n 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\");\n return { exitCode: 0 };\n }\n const args = await parse(argumentsValue.args.length, argumentText, step);\n if (argumentsValue.args[0] === \"models\" && args.prompt === \"models\" && !args.attachments.length) {\n for (const { provider, model } of models) {\n await step();\n await emitText(`${provider.name}/${model.id}\taliases: ${model.aliases?.join(\", \") || \"-\"}\tattachments: ${model.attachmentTypes?.join(\", \") || \"-\"}\toutput: ${model.outputType ?? \"text/plain\"}\\n`);\n }\n return { exitCode: 0 };\n }\n const selected = args.model ?? defaultModel;\n if (selected === undefined) throw new Error(\"No model selected; use --model or configure defaultModel\");\n const entry = lookup.get(selected);\n if (!entry) throw new Error(`Unknown model: ${selected}`);\n const fragments: string[] = [];\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n const input = await operation.acquire<AsyncIterator<Uint8Array>>(() => context.stdinInput\n ? { next: () => context.stdinInput!.read(Math.min(65536, inputLimit - inputBytes + 1), signal) }\n : context.stdin[Symbol.asyncIterator](), async iterator => { await iterator.return?.(); });\n while (true) {\n await step();\n const result = await interrupted(() => input.next(), signal);\n signal.throwIfAborted();\n if (result.done) break;\n const chunk = result.value;\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sources must yield Uint8Array chunks\");\n admitInput(chunk.byteLength);\n fragments.push(decoder.decode(chunk, { stream: true }));\n }\n fragments.push(decoder.decode());\n const content = fragments.join(\"\");\n const attachments: { mimeType: string; bytes: Uint8Array }[] = [];\n for (const attachment of args.attachments) {\n await step();\n if (attachment.path.includes(\"://\")) throw new Error(\"URL attachments are not supported\");\n const path = pathOf(context, attachment.path);\n const stat = await interrupted(() => context.fs.stat(path, { signal }), signal);\n checkInput(stat.size);\n const bytes = await interrupted(() => context.fs.readFile(path, { signal, maxBytes: inputLimit - inputBytes }), signal);\n signal.throwIfAborted();\n if (!(bytes instanceof Uint8Array)) throw new TypeError(\"Attachment read must return Uint8Array\");\n admitInput(bytes.byteLength);\n const mimeType = attachment.mimeType ?? sniffMimeType(path, bytes);\n if (!acceptsMimeType(entry.model.attachmentTypes ?? [], mimeType)) throw new Error(`Model ${entry.model.id} does not accept ${mimeType}`);\n attachments.push({ mimeType, bytes: new Uint8Array(bytes) });\n }\n const request: LlmRequest = {\n model: entry.model.id, prompt: content && args.prompt ? `${content}\\n\\n${args.prompt}` : content || args.prompt,\n ...(args.system === undefined ? {} : { system: args.system }), attachments, options: args.options, signal,\n };\n signal.throwIfAborted();\n iterator = entry.provider.complete(request)[Symbol.asyncIterator]();\n const text = (entry.model.outputType ?? \"text/plain\").toLowerCase().startsWith(\"text/\");\n let pendingSurrogate = \"\";\n while (true) {\n await step();\n const result = await interrupted(() => iterator!.next(), signal);\n signal.throwIfAborted();\n if (result.done) { ended = true; break; }\n if (text ? typeof result.value !== \"string\" : !(result.value instanceof Uint8Array)) throw new Error(`Provider ${entry.provider.name} returned a response chunk incompatible with ${entry.model.outputType ?? \"text/plain\"}`);\n if (typeof result.value === \"string\") {\n let chunk = pendingSurrogate + result.value;\n const last = chunk.charCodeAt(chunk.length - 1);\n pendingSurrogate = last >= 0xd800 && last <= 0xdbff ? chunk.slice(-1) : \"\";\n if (pendingSurrogate) chunk = chunk.slice(0, -1);\n if (chunk) await emitText(chunk);\n } else await write(result.value);\n }\n if (text) {\n if (pendingSurrogate) await emitText(pendingSurrogate);\n await write(Uint8Array.of(10));\n }\n return { exitCode: 0 };\n } catch (error) {\n context.signal.throwIfAborted();\n operation.signal.throwIfAborted();\n controller.abort(error);\n if (writing) throw error;\n await operation.close();\n await writeDiagnostic(context.stderr, `${error instanceof Error ? error.message.slice(0, 4096) : \"llm provider failed\"}\\n`, context.signal);\n return { exitCode: 1 };\n } finally {\n controller.abort(new Error(\"llm request closed\"));\n await operation.close();\n }\n}\n\nexport function createLlmCommands(options: LlmCommandsOptions): readonly CommandDefinition[] {\n const { models, lookup } = modelsFor(options.providers);\n const defaultModel = options.defaultModel;\n return [{ name: \"llm\", description: \"Query injected language and media models\", execute: context => execute(context, lookup, models, defaultModel) }];\n}\n\nexport function llmCommands(options: LlmCommandsOptions): VirtualShellPlugin {\n const definitions = createLlmCommands(options);\n const replace = options.replace ?? false;\n return { name: \"llm-commands\", setup(host) {\n if (!replace && host.commands.has(\"llm\")) throw new Error(\"Command already registered: llm\");\n for (const definition of definitions) host.commands.register(definition, { replace });\n } };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["iterator"]
7
+ }
@@ -1,21 +1,18 @@
1
- import {
2
- writeDiagnostic
3
- } from "./chunk-KYU6MXVK.js";
4
- import {
5
- PublicDiagnostic,
6
- publicDiagnosticMessage
7
- } from "./chunk-TTTOMUAY.js";
8
1
  import {
9
2
  isAbsolutePath,
10
3
  validatePath
11
4
  } from "./chunk-DPJWEGIX.js";
12
5
  import {
13
6
  FsError,
7
+ PublicDiagnostic,
8
+ publicDiagnosticMessage,
14
9
  readBytes,
15
10
  toByteSource,
16
- writeBytes
17
- } from "./chunk-FDGESHPB.js";
11
+ writeBytes,
12
+ yieldTurn
13
+ } from "./chunk-2PQ3XOCQ.js";
18
14
  import {
15
+ import_buffer,
19
16
  init_platform
20
17
  } from "./chunk-2KL6W6NB.js";
21
18
 
@@ -63,6 +60,50 @@ function assertCommandRequirements(context, requirements, selected, capabilities
63
60
  }
64
61
  }
65
62
 
63
+ // packages/safe-bash/src/escaping.ts
64
+ init_platform();
65
+ var controls = { 8: "\\b", 9: "\\t", 10: "\\n", 11: "\\v", 12: "\\f", 13: "\\r", 92: "\\\\" };
66
+ var encoder = new TextEncoder();
67
+ function* parts(value2, mode) {
68
+ for (const character of value2) {
69
+ const point = character.codePointAt(0);
70
+ if (mode === "diagnostic" && (point === 9 || point === 10 || point >= 32 && (point < 127 || point > 159))) {
71
+ yield character;
72
+ } else {
73
+ for (const byte of encoder.encode(character)) {
74
+ yield controls[byte] ?? (byte >= 32 && byte < 127 ? String.fromCharCode(byte) : `\\${byte.toString(8).padStart(3, "0")}`);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ function escapeText(value2, mode, checkOutput) {
80
+ let result = "", bytes = 0;
81
+ for (const part of parts(value2, mode)) {
82
+ bytes += import_buffer.Buffer.byteLength(part);
83
+ checkOutput?.(bytes);
84
+ result += part;
85
+ }
86
+ return result;
87
+ }
88
+ async function writeDiagnostic(sink, value2, signal) {
89
+ signal?.throwIfAborted();
90
+ let chunk = "", bytes = 0, work = 0;
91
+ for (const part of parts(value2, "diagnostic")) {
92
+ signal?.throwIfAborted();
93
+ const size = import_buffer.Buffer.byteLength(part);
94
+ if (bytes + size > 16384) {
95
+ await writeBytes(sink, encoder.encode(chunk), signal);
96
+ chunk = "";
97
+ bytes = 0;
98
+ }
99
+ chunk += part;
100
+ bytes += size;
101
+ if (++work % 1024 === 0) await yieldTurn(signal);
102
+ }
103
+ if (bytes) await writeBytes(sink, encoder.encode(chunk), signal);
104
+ signal?.throwIfAborted();
105
+ }
106
+
66
107
  // packages/safe-bash/src/commands/internal.ts
67
108
  init_platform();
68
109
 
@@ -150,7 +191,7 @@ var RecordBuffer = class {
150
191
  };
151
192
 
152
193
  // packages/safe-bash/src/commands/internal.ts
153
- var encoder = new TextEncoder();
194
+ var encoder2 = new TextEncoder();
154
195
  var decoder = new TextDecoder();
155
196
  var bufferLimit = 32 * 1024 * 1024;
156
197
  var UsageError = class extends PublicDiagnostic {
@@ -232,7 +273,7 @@ function codeOf(error) {
232
273
  }
233
274
  async function output(context, text) {
234
275
  context.signal.throwIfAborted();
235
- await writeBytes(context.stdout, typeof text === "string" ? encoder.encode(text) : text, context.signal);
276
+ await writeBytes(context.stdout, typeof text === "string" ? encoder2.encode(text) : text, context.signal);
236
277
  }
237
278
  async function diagnostic(context, error) {
238
279
  context.signal.throwIfAborted();
@@ -347,9 +388,9 @@ function emptyInput() {
347
388
  }
348
389
  function replaceArgument(source, pattern, replacement) {
349
390
  if (typeof source === "string") return source.split(pattern).join(replacement);
350
- const needle = encoder.encode(pattern);
391
+ const needle = encoder2.encode(pattern);
351
392
  if (!needle.length) throw new UsageError("replacement string cannot be empty");
352
- const substituted = encoder.encode(replacement);
393
+ const substituted = encoder2.encode(replacement);
353
394
  const chunks = [];
354
395
  let start = 0;
355
396
  for (let offset = 0; offset <= source.length - needle.length; ) {
@@ -369,7 +410,7 @@ function escapeBytes(text, zeroOctal = false, bareOctal = false) {
369
410
  for (let index = 0; index < text.length; ) {
370
411
  if (text[index] !== "\\" || index + 1 === text.length) {
371
412
  const character = String.fromCodePoint(text.codePointAt(index));
372
- chunks.push(encoder.encode(character));
413
+ chunks.push(encoder2.encode(character));
373
414
  index += character.length;
374
415
  continue;
375
416
  }
@@ -393,7 +434,7 @@ function escapeBytes(text, zeroOctal = false, bareOctal = false) {
393
434
  index += 1 + hexadecimal[0].length;
394
435
  continue;
395
436
  }
396
- chunks.push(encoder.encode(`\\${next}`));
437
+ chunks.push(encoder2.encode(`\\${next}`));
397
438
  index += 2;
398
439
  }
399
440
  return { bytes: concatenate(chunks), stop: false };
@@ -450,12 +491,14 @@ function escapeBytes(text, zeroOctal = false, bareOctal = false) {
450
491
  export {
451
492
  evaluateCommandSupport,
452
493
  assertCommandRequirements,
494
+ escapeText,
495
+ writeDiagnostic,
453
496
  inputRequirements,
454
497
  textOutputRequirements,
455
498
  pwdRequirements,
456
499
  predicateRequirements,
457
500
  RecordBuffer,
458
- encoder,
501
+ encoder2 as encoder,
459
502
  decoder,
460
503
  bufferLimit,
461
504
  UsageError,
@@ -477,4 +520,4 @@ export {
477
520
  replaceArgument,
478
521
  escapeBytes
479
522
  };
480
- //# sourceMappingURL=chunk-O7BRWSKX.js.map
523
+ //# sourceMappingURL=chunk-LHKAA57T.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contracts/command-requirements.ts", "../../src/escaping.ts", "../../src/commands/internal.ts", "../../src/commands/portable-requirements.ts", "../../src/commands/record-buffer.ts"],
4
+ "sourcesContent": ["import type { CommandContext, CommandDefinition } from \"./command.js\";\nimport type { FileSystemCapabilities } from \"./filesystem.js\";\nimport { FsError } from \"./errors.js\";\n\nexport interface CommandFileSystemRequirement {\n readonly id: string;\n readonly description: string;\n readonly capabilities: readonly string[];\n readonly anyOf?: readonly (readonly string[])[];\n readonly mutates?: boolean;\n}\n\nexport interface CommandModeSupport extends CommandFileSystemRequirement {\n readonly status: \"supported\" | \"unsupported\" | \"unknown\";\n readonly missing: readonly string[];\n readonly unknown: readonly string[];\n}\n\nexport interface CommandSupport {\n readonly status: \"supported\" | \"partial\" | \"unsupported\";\n readonly declared: boolean;\n readonly modes: readonly CommandModeSupport[];\n}\n\nfunction evaluateMode(requirement: CommandFileSystemRequirement, capabilities: FileSystemCapabilities): CommandModeSupport {\n const missing = requirement.capabilities.filter(name => capabilities[name] === false);\n const unknown = requirement.capabilities.filter(name => capabilities[name] === undefined);\n if (requirement.mutates && capabilities.readOnly === true) missing.push(\"readOnly\");\n const alternatives = requirement.anyOf;\n if (alternatives && !alternatives.some(group => group.every(name => capabilities[name] === true))) {\n if (alternatives.every(group => group.some(name => capabilities[name] === false))) {\n missing.push(...alternatives.flatMap(group => group.filter(name => capabilities[name] === false)));\n } else {\n unknown.push(...alternatives.filter(group => !group.some(name => capabilities[name] === false))\n .flatMap(group => group.filter(name => capabilities[name] === undefined)));\n }\n }\n return {\n ...requirement,\n status: missing.length ? \"unsupported\" : unknown.length ? \"unknown\" : \"supported\",\n missing: [...new Set(missing)], unknown: [...new Set(unknown)],\n };\n}\n\nexport function evaluateCommandSupport(\n command: Pick<CommandDefinition, \"filesystemRequirements\"> | CommandDefinition,\n capabilities: FileSystemCapabilities,\n): CommandSupport {\n const modes = (command.filesystemRequirements ?? []).map(requirement => evaluateMode(requirement, capabilities));\n return {\n declared: command.filesystemRequirements !== undefined,\n status: command.filesystemRequirements !== undefined && modes.every(mode => mode.status === \"supported\") ? \"supported\"\n : modes.length && modes.every(mode => mode.status === \"unsupported\") ? \"unsupported\" : \"partial\",\n modes,\n };\n}\n\nexport function assertCommandRequirements(\n context: Pick<CommandContext, \"fs\" | \"command\" | \"signal\">,\n requirements: readonly CommandFileSystemRequirement[],\n selected: readonly string[],\n capabilities: FileSystemCapabilities = context.fs.capabilities,\n): void {\n context.signal.throwIfAborted();\n for (const id of new Set(selected)) {\n const requirement = requirements.find(mode => mode.id === id);\n if (!requirement) throw new TypeError(`Unknown filesystem requirement mode: ${id}`);\n const support = evaluateMode(requirement, capabilities);\n if (support.status === \"unsupported\") {\n throw new FsError(support.missing.includes(\"readOnly\") ? \"EROFS\" : \"ENOTSUP\", {\n syscall: context.command,\n message: `${requirement.description} requires unavailable filesystem capabilities: ${support.missing.join(\", \")}`,\n });\n }\n }\n}\n", "import { writeBytes, type ByteSink } from \"./contracts/index.js\";\nimport { yieldTurn } from \"./contracts/yield.js\";\n\nconst controls: Readonly<Record<number, string>> = { 8: \"\\\\b\", 9: \"\\\\t\", 10: \"\\\\n\", 11: \"\\\\v\", 12: \"\\\\f\", 13: \"\\\\r\", 92: \"\\\\\\\\\" };\nconst encoder = new TextEncoder();\n\nfunction* parts(value: string, mode: \"display\" | \"diagnostic\"): Generator<string> {\n for (const character of value) {\n const point = character.codePointAt(0)!;\n if (mode === \"diagnostic\" && (point === 9 || point === 10 || point >= 32 && (point < 127 || point > 159))) {\n yield character;\n } else {\n for (const byte of encoder.encode(character)) {\n yield controls[byte] ?? (byte >= 32 && byte < 127 ? String.fromCharCode(byte) : `\\\\${byte.toString(8).padStart(3, \"0\")}`);\n }\n }\n }\n}\n\nexport function escapeText(value: string, mode: \"display\" | \"diagnostic\", checkOutput?: (bytes: number) => void): string {\n let result = \"\", bytes = 0;\n for (const part of parts(value, mode)) {\n bytes += Buffer.byteLength(part);\n checkOutput?.(bytes);\n result += part;\n }\n return result;\n}\n\nexport async function writeDiagnostic(sink: ByteSink, value: string, signal?: AbortSignal): Promise<void> {\n signal?.throwIfAborted();\n let chunk = \"\", bytes = 0, work = 0;\n for (const part of parts(value, \"diagnostic\")) {\n signal?.throwIfAborted();\n const size = Buffer.byteLength(part);\n if (bytes + size > 16_384) {\n await writeBytes(sink, encoder.encode(chunk), signal);\n chunk = \"\"; bytes = 0;\n }\n chunk += part; bytes += size;\n if (++work % 1024 === 0) await yieldTurn(signal);\n }\n if (bytes) await writeBytes(sink, encoder.encode(chunk), signal);\n signal?.throwIfAborted();\n}\n", "import { PublicDiagnostic, publicDiagnosticMessage } from \"../diagnostics.js\";\nimport { assertCommandRequirements } from \"../contracts/command-requirements.js\";\nimport { writeDiagnostic } from \"../escaping.js\";\nimport { inputRequirements } from \"./portable-requirements.js\";\nimport { RecordBuffer } from \"./record-buffer.js\";\nimport {\n FsError, isAbsolutePath, readBytes, toByteSource, validatePath, writeBytes,\n type ByteSource, type CommandContext, type CommandDefinition, type CommandHandler,\n} from \"../contracts/index.js\";\n\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nexport const bufferLimit = 32 * 1024 * 1024;\n\nexport class UsageError extends PublicDiagnostic {}\n\nexport interface ParsedOptions {\n readonly flags: Set<string>;\n readonly values: Map<string, string[]>;\n readonly operands: string[];\n}\n\nexport function options(\n args: readonly string[], short: string, long: Readonly<Record<string, string>> = {},\n stopAtOperand = false, onOperand?: (index: number) => void,\n onValue?: (key: string, index: number, offset: number) => void,\n): ParsedOptions {\n const flags = new Set<string>();\n const values = new Map<string, string[]>();\n const operands: string[] = [];\n const specifications = new Map<string, boolean>();\n for (let index = 0; index < short.length; index++) {\n const key = short[index]!;\n specifications.set(key, short[index + 1] === \":\");\n if (short[index + 1] === \":\") index++;\n }\n let ended = false;\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n if (ended || argument === \"-\" || !argument.startsWith(\"-\")) {\n operands.push(argument);\n onOperand?.(index);\n if (stopAtOperand) ended = true;\n continue;\n }\n if (argument === \"--\") { ended = true; continue; }\n if (argument.startsWith(\"--\")) {\n const equals = argument.indexOf(\"=\");\n const name = argument.slice(2, equals < 0 ? undefined : equals);\n const key = long[name];\n if (!key || !specifications.has(key)) throw new UsageError(`unrecognized option '${argument}'`);\n if (specifications.get(key)) {\n const value = equals >= 0 ? argument.slice(equals + 1) : args[++index];\n if (value === undefined) throw new UsageError(`option '--${name}' requires an argument`);\n onValue?.(key, index, equals >= 0 ? equals + 1 : 0);\n values.set(key, [...values.get(key) ?? [], value]);\n } else if (equals >= 0) throw new UsageError(`option '--${name}' does not take an argument`);\n flags.add(key);\n continue;\n }\n for (let offset = 1; offset < argument.length; offset++) {\n const key = argument[offset]!;\n if (!specifications.has(key)) throw new UsageError(`invalid option -- '${key}'`);\n if (specifications.get(key)) {\n const value = argument.slice(offset + 1) || args[++index];\n if (value === undefined) throw new UsageError(`option requires an argument -- '${key}'`);\n onValue?.(key, index, offset + 1 < argument.length ? offset + 1 : 0);\n values.set(key, [...values.get(key) ?? [], value]);\n offset = argument.length;\n }\n flags.add(key);\n }\n }\n return { flags, values, operands };\n}\n\nexport function value(parsed: ParsedOptions, key: string): string | undefined {\n return parsed.values.get(key)?.at(-1);\n}\n\nexport function integer(text: string, minimum = 0): number {\n if (!/^[+]?[0-9]+$/u.test(text)) throw new UsageError(`invalid number '${text}'`);\n const number = Number(text);\n if (!Number.isSafeInteger(number) || number < minimum) throw new UsageError(`invalid number '${text}'`);\n return number;\n}\n\nexport function requireOperands(operands: readonly string[], minimum = 1, maximum = Infinity): void {\n if (operands.length < minimum) throw new UsageError(\"missing operand\");\n if (operands.length > maximum) throw new UsageError(`extra operand '${operands[maximum]}'`);\n}\n\nexport function pathOf(context: Pick<CommandContext, \"cwd\">, path: string): string {\n if (!path) throw new FsError(\"ENOENT\", { path });\n validatePath(path);\n validatePath(context.cwd);\n if (!isAbsolutePath(context.cwd)) throw new FsError(\"EINVAL\", { path: context.cwd, message: \"cwd must be absolute\" });\n return isAbsolutePath(path) ? path : `${context.cwd.replace(/\\/$/u, \"\")}/${path}`;\n}\n\nexport function codeOf(error: unknown): string | undefined {\n return error instanceof Error && \"code\" in error ? String(error.code) : undefined;\n}\n\nexport async function output(context: CommandContext, text: string | Uint8Array): Promise<void> {\n context.signal.throwIfAborted();\n await writeBytes(context.stdout, typeof text === \"string\" ? encoder.encode(text) : text, context.signal);\n}\n\nexport async function diagnostic(context: CommandContext, error: unknown): Promise<void> {\n context.signal.throwIfAborted();\n await writeDiagnostic(context.stderr, `${context.command}: ${publicDiagnosticMessage(error, context.onInternalError)}\\n`, context.signal);\n}\n\nexport function define(name: string, handler: CommandHandler, failureCode = 1): CommandDefinition {\n return {\n name,\n async execute(context) {\n context.signal.throwIfAborted();\n try { return await handler(context); }\n catch (error) {\n context.signal.throwIfAborted();\n await diagnostic(context, error);\n return { exitCode: error instanceof UsageError ? 2 : failureCode };\n }\n },\n };\n}\n\nexport async function eachOperand(\n context: CommandContext, operands: readonly string[], operation: (operand: string) => Promise<void>,\n): Promise<{ exitCode: number }> {\n let exitCode = 0;\n for (const operand of operands) {\n context.signal.throwIfAborted();\n try { await operation(operand); }\n catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n return { exitCode };\n}\n\nexport async function* input(context: CommandContext, name = \"-\"): ByteSource {\n context.signal.throwIfAborted();\n if (name === \"-\") {\n yield* readBytes(context.stdin, context.signal);\n } else {\n await assertInputRequirements(context, [name]);\n const path = pathOf(context, name);\n const capabilities = await context.fs.capabilitiesFor?.(path, { signal: context.signal }) ?? context.fs.capabilities;\n if (context.fs.readStream && capabilities.streamingRead !== false) {\n let emitted = false;\n let reading = true;\n try {\n for await (const chunk of readBytes(context.fs.readStream(path, { signal: context.signal }), context.signal)) {\n reading = false;\n if (chunk.byteLength) emitted = true;\n yield chunk;\n reading = true;\n }\n return;\n } catch (error) {\n context.signal.throwIfAborted();\n if (!reading || emitted || !(error instanceof FsError) || error.code !== \"ENOTSUP\") throw error;\n }\n }\n if (capabilities.read === false) throw new FsError(\"ENOTSUP\", { syscall: \"readFile\", path });\n yield* readBytes({\n async *[Symbol.asyncIterator]() {\n const bytes = await context.fs.readFile(path, { signal: context.signal, maxBytes: bufferLimit });\n context.signal.throwIfAborted();\n if (bytes.byteLength > bufferLimit) throw new FsError(\"EFBIG\", { syscall: \"readFile\", path });\n yield bytes;\n },\n }, context.signal);\n }\n}\n\nexport async function assertInputRequirements(context: CommandContext, names: readonly string[]): Promise<void> {\n const files = names.filter(name => name !== \"-\");\n assertCommandRequirements(context, inputRequirements, [files.length ? \"file\" : \"stdin\"]);\n if (!context.fs.capabilitiesFor) return;\n for (const name of files) {\n try {\n const capabilities = await context.fs.capabilitiesFor(pathOf(context, name), { signal: context.signal });\n assertCommandRequirements(context, inputRequirements, [\"file\"], capabilities);\n } catch (error) {\n context.signal.throwIfAborted();\n if (codeOf(error) === \"ENOTSUP\" || codeOf(error) === \"EROFS\") throw error;\n }\n }\n}\n\nexport function concatenate(chunks: readonly Uint8Array[], size = chunks.reduce((sum, chunk) => sum + chunk.length, 0)): Uint8Array {\n const result = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) { result.set(chunk, offset); offset += chunk.length; }\n return result;\n}\n\nexport async function collect(source: ByteSource, signal: AbortSignal, limit = bufferLimit): Promise<Uint8Array> {\n const chunks: Uint8Array[] = [];\n let size = 0;\n for await (const chunk of source) {\n signal.throwIfAborted();\n size += chunk.length;\n if (size > limit) throw new FsError(\"EFBIG\", { message: `buffer limit exceeded (${limit} bytes)` });\n chunks.push(new Uint8Array(chunk));\n }\n return concatenate(chunks, size);\n}\n\nexport interface Line { readonly bytes: Uint8Array; readonly terminated: boolean }\n\nexport async function* lines(source: ByteSource, separator = 10, admit?: (size: number) => void): AsyncGenerator<Line> {\n const pending = new RecordBuffer(bufferLimit);\n try {\n for await (const chunk of source) {\n let start = 0;\n for (let offset = 0; offset < chunk.length; offset++) {\n if (chunk[offset] !== separator) continue;\n yield { bytes: pending.finish(admit, chunk, start, offset), terminated: true };\n start = offset + 1;\n }\n pending.append(chunk, start);\n }\n if (pending.size) yield { bytes: pending.finish(admit), terminated: false };\n } finally { pending.clear(); }\n}\n\nexport function emptyInput(): ByteSource { return toByteSource(\"\"); }\n\nexport function replaceArgument(source: string | Uint8Array, pattern: string, replacement: string): string | Uint8Array {\n if (typeof source === \"string\") return source.split(pattern).join(replacement);\n const needle = encoder.encode(pattern);\n if (!needle.length) throw new UsageError(\"replacement string cannot be empty\");\n const substituted = encoder.encode(replacement);\n const chunks: Uint8Array[] = [];\n let start = 0;\n for (let offset = 0; offset <= source.length - needle.length;) {\n if (needle.every((byte, index) => source[offset + index] === byte)) {\n chunks.push(source.subarray(start, offset), substituted);\n offset += needle.length;\n start = offset;\n } else offset++;\n }\n chunks.push(source.subarray(start));\n return concatenate(chunks);\n}\n\nexport function escapeBytes(text: string | Uint8Array, zeroOctal = false, bareOctal = false): { bytes: Uint8Array; stop: boolean } {\n if (typeof text === \"string\") {\n const chunks: Uint8Array[] = [];\n const control: Record<string, number> = { a: 7, b: 8, e: 27, E: 27, f: 12, n: 10, r: 13, t: 9, v: 11, \"\\\\\": 92 };\n for (let index = 0; index < text.length;) {\n if (text[index] !== \"\\\\\" || index + 1 === text.length) {\n const character = String.fromCodePoint(text.codePointAt(index)!);\n chunks.push(encoder.encode(character)); index += character.length; continue;\n }\n const next = text[index + 1]!;\n if (next === \"c\") return { bytes: concatenate(chunks), stop: true };\n if (control[next] !== undefined) { chunks.push(Uint8Array.of(control[next])); index += 2; continue; }\n const rest = text.slice(index + 1);\n const octal = zeroOctal ? (bareOctal ? /^(?:0([0-7]{0,3})|([1-7][0-7]{0,2}))/u : /^0([0-7]{0,3})/u).exec(rest) : /^([0-7]{1,3})/u.exec(rest);\n if (octal) { chunks.push(Uint8Array.of(parseInt(octal[1] || octal[2] || \"0\", 8) & 255)); index += 1 + octal[0].length; continue; }\n const hexadecimal = /^x([0-9a-fA-F]{1,2})/u.exec(rest);\n if (hexadecimal) { chunks.push(Uint8Array.of(parseInt(hexadecimal[1]!, 16))); index += 1 + hexadecimal[0].length; continue; }\n chunks.push(encoder.encode(`\\\\${next}`)); index += 2;\n }\n return { bytes: concatenate(chunks), stop: false };\n }\n const source = text;\n const bytes = new Uint8Array(source.length);\n const control: Record<number, number> = { 97: 7, 98: 8, 101: 27, 69: 27, 102: 12, 110: 10, 114: 13, 116: 9, 118: 11, 92: 92 };\n let size = 0;\n for (let index = 0; index < source.length;) {\n if (source[index] !== 92 || index + 1 === source.length) { bytes[size++] = source[index++]!; continue; }\n const next = source[index + 1]!;\n if (next === 99) return { bytes: bytes.subarray(0, size), stop: true };\n if (control[next] !== undefined) { bytes[size++] = control[next]; index += 2; continue; }\n if (zeroOctal ? next === 48 || bareOctal && next >= 49 && next <= 55 : next >= 48 && next <= 55) {\n let offset = index + (zeroOctal && next === 48 ? 2 : 1);\n const end = Math.min(source.length, offset + 3);\n let value = 0;\n while (offset < end && source[offset]! >= 48 && source[offset]! <= 55) value = value * 8 + source[offset++]! - 48;\n bytes[size++] = value & 255;\n index = offset;\n continue;\n }\n if (next === 120) {\n let offset = index + 2;\n const end = Math.min(source.length, offset + 2);\n let value = 0;\n while (offset < end) {\n const digit = source[offset]!;\n const number = digit >= 48 && digit <= 57 ? digit - 48 : digit >= 65 && digit <= 70 ? digit - 55 : digit >= 97 && digit <= 102 ? digit - 87 : -1;\n if (number < 0) break;\n value = value * 16 + number;\n offset++;\n }\n if (offset > index + 2) { bytes[size++] = value; index = offset; continue; }\n }\n bytes[size++] = 92;\n bytes[size++] = next;\n index += 2;\n }\n return { bytes: bytes.subarray(0, size), stop: false };\n}\n", "import type { CommandFileSystemRequirement } from \"../contracts/command-requirements.js\";\n\nexport const inputRequirements: readonly CommandFileSystemRequirement[] = [\n { id: \"stdin\", description: \"Read standard input\", capabilities: [] },\n { id: \"file\", description: \"Read file operands\", capabilities: [], anyOf: [[\"streamingRead\"], [\"read\"]] },\n];\n\nexport const textOutputRequirements: readonly CommandFileSystemRequirement[] = [\n ...inputRequirements,\n { id: \"output\", description: \"Write or truncate an output file\", capabilities: [], anyOf: [[\"streamingWrite\"], [\"write\"]], mutates: true },\n];\n\nexport const pwdRequirements: readonly CommandFileSystemRequirement[] = [\n { id: \"logical\", description: \"Print the logical working directory\", capabilities: [] },\n { id: \"physical\", description: \"Resolve the physical working directory (-P)\", capabilities: [\"realpath\"] },\n];\n\nexport const predicateRequirements: readonly CommandFileSystemRequirement[] = [\n { id: \"expression\", description: \"Evaluate strings and integers\", capabilities: [] },\n { id: \"metadata\", description: \"Inspect file metadata\", capabilities: [\"stat\"] },\n { id: \"access\", description: \"Inspect path access permissions\", capabilities: [\"access\"] },\n];\n", "import { FsError } from \"../contracts/index.js\";\n\nconst segmentSize = 4096;\n\nexport class RecordBuffer {\n #segments: Uint8Array[] = [];\n #size = 0;\n #allocated = 0;\n\n constructor(readonly capacity: number, readonly finalizationCapacity = capacity * 2) {}\n\n get size(): number { return this.#size; }\n\n #admit(length: number): void {\n if (length > this.capacity - this.#size) {\n throw new FsError(\"EFBIG\", { message: \"line buffer limit exceeded\" });\n }\n }\n\n append(bytes: Uint8Array, start = 0, end = bytes.length): void {\n this.#admit(end - start);\n let offset = start;\n while (offset < end) {\n let segment = this.#segments.at(-1);\n const used = this.#size % segmentSize;\n if (!segment || used === 0) {\n segment = new Uint8Array(Math.min(segmentSize, this.capacity - this.#allocated));\n this.#segments.push(segment);\n this.#allocated += segment.length;\n }\n const length = Math.min(end - offset, segment.length - used);\n segment.set(bytes.subarray(offset, offset + length), used);\n this.#size += length;\n offset += length;\n }\n }\n\n finish(admit?: (size: number) => void, bytes?: Uint8Array, start = 0, end = bytes?.length ?? 0): Uint8Array {\n this.#admit(end - start);\n const size = this.#size + end - start;\n admit?.(size);\n if (size > this.finalizationCapacity - this.#allocated) {\n throw new FsError(\"EFBIG\", { message: \"line finalization buffer limit exceeded\" });\n }\n const result = new Uint8Array(size);\n let offset = 0;\n for (const segment of this.#segments) {\n const length = Math.min(segment.length, this.#size - offset);\n result.set(segment.subarray(0, length), offset);\n offset += length;\n }\n if (bytes && end > start) result.set(bytes.subarray(start, end), offset);\n this.clear();\n return result;\n }\n\n clear(): void {\n this.#segments = [];\n this.#size = 0;\n this.#allocated = 0;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["value", "encoder", "value", "encoder", "control", "value"]
7
+ }