pi2dsh 0.3.0 → 0.3.2
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.
- package/README.md +31 -11
- package/README.zh.md +31 -11
- package/dist/all-Rt4K68QA.mjs +28512 -0
- package/dist/all-Rt4K68QA.mjs.map +1 -0
- package/dist/anthropic-messages-Beym0_aC.mjs +6438 -0
- package/dist/anthropic-messages-Beym0_aC.mjs.map +1 -0
- package/dist/azure-openai-responses-cHqZTgLD.mjs +209 -0
- package/dist/azure-openai-responses-cHqZTgLD.mjs.map +1 -0
- package/dist/{build-DsGYAgiT.mjs → build-BG7p2Lbr.mjs} +2 -2
- package/dist/{build-DsGYAgiT.mjs.map → build-BG7p2Lbr.mjs.map} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/compat/pi-ai.d.mts +25 -3
- package/dist/compat/pi-ai.d.mts.map +1 -1
- package/dist/compat/pi-ai.mjs +3 -2919
- package/dist/compat/pi-coding-agent.d.mts +12 -1
- package/dist/compat/pi-coding-agent.d.mts.map +1 -1
- package/dist/compat/pi-coding-agent.mjs +2 -2
- package/dist/credentials-oauth.d.mts +27 -0
- package/dist/credentials-oauth.d.mts.map +1 -0
- package/dist/credentials-oauth.mjs +91 -0
- package/dist/credentials-oauth.mjs.map +1 -0
- package/dist/deferred-tools-BD4g5QUx.mjs +32 -0
- package/dist/deferred-tools-BD4g5QUx.mjs.map +1 -0
- package/dist/diagnostics-CJye1UFh.mjs +99 -0
- package/dist/diagnostics-CJye1UFh.mjs.map +1 -0
- package/dist/dist-IQKOgQyt.mjs +10035 -0
- package/dist/dist-IQKOgQyt.mjs.map +1 -0
- package/dist/dist-QBBA-dL_.mjs +1246 -0
- package/dist/dist-QBBA-dL_.mjs.map +1 -0
- package/dist/error-body-DKA3lknR.mjs +104 -0
- package/dist/error-body-DKA3lknR.mjs.map +1 -0
- package/dist/github-copilot-headers-CZo2QHrt.mjs +25 -0
- package/dist/github-copilot-headers-CZo2QHrt.mjs.map +1 -0
- package/dist/google-generative-ai-B7OZs5lu.mjs +358 -0
- package/dist/google-generative-ai-B7OZs5lu.mjs.map +1 -0
- package/dist/google-shared-CRsAUItF.mjs +29042 -0
- package/dist/google-shared-CRsAUItF.mjs.map +1 -0
- package/dist/google-vertex-DmdaHQtB.mjs +402 -0
- package/dist/google-vertex-DmdaHQtB.mjs.map +1 -0
- package/dist/hash-Dbggamac.mjs +19 -0
- package/dist/hash-Dbggamac.mjs.map +1 -0
- package/dist/headers-CPzZhJQn.mjs +17 -0
- package/dist/headers-CPzZhJQn.mjs.map +1 -0
- package/dist/host.d.mts.map +1 -1
- package/dist/host.mjs +15 -3
- package/dist/host.mjs.map +1 -1
- package/dist/images-models-DJtHo9Rp.mjs +1068 -0
- package/dist/images-models-DJtHo9Rp.mjs.map +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/json-parse-CFyFZSLJ.mjs +384 -0
- package/dist/json-parse-CFyFZSLJ.mjs.map +1 -0
- package/dist/{mcp-config-gqg7GJEE.mjs → mcp-config-D2B3kv-Z.mjs} +34 -16
- package/dist/mcp-config-D2B3kv-Z.mjs.map +1 -0
- package/dist/mistral-conversations-HHZCcFv_.mjs +42007 -0
- package/dist/mistral-conversations-HHZCcFv_.mjs.map +1 -0
- package/dist/multipart-parser-CIa5BbwO.mjs +301 -0
- package/dist/multipart-parser-CIa5BbwO.mjs.map +1 -0
- package/dist/oauth-bridge-C6fL1qSv.mjs +375 -0
- package/dist/oauth-bridge-C6fL1qSv.mjs.map +1 -0
- package/dist/openai-DkzRh5_G.mjs +6732 -0
- package/dist/openai-DkzRh5_G.mjs.map +1 -0
- package/dist/openai-codex-responses-vmovNu-q.mjs +1169 -0
- package/dist/openai-codex-responses-vmovNu-q.mjs.map +1 -0
- package/dist/openai-completions-fXHhRolF.mjs +947 -0
- package/dist/openai-completions-fXHhRolF.mjs.map +1 -0
- package/dist/openai-prompt-cache-BDWtZRKh.mjs +11 -0
- package/dist/openai-prompt-cache-BDWtZRKh.mjs.map +1 -0
- package/dist/openai-responses-DKdCYf3h.mjs +247 -0
- package/dist/openai-responses-DKdCYf3h.mjs.map +1 -0
- package/dist/openai-responses-shared-D0Jq7yVP.mjs +572 -0
- package/dist/openai-responses-shared-D0Jq7yVP.mjs.map +1 -0
- package/dist/openrouter-images-fG3Aj6M4.mjs +127 -0
- package/dist/openrouter-images-fG3Aj6M4.mjs.map +1 -0
- package/dist/otel-BQSQRBLF.mjs +24935 -0
- package/dist/otel-BQSQRBLF.mjs.map +1 -0
- package/dist/pi-ai-DhYGgq4Y.mjs +2984 -0
- package/dist/pi-ai-DhYGgq4Y.mjs.map +1 -0
- package/dist/{pi-coding-agent-Z1hTs61i.mjs → pi-coding-agent-fPHwKP4d.mjs} +27 -3
- package/dist/{pi-coding-agent-Z1hTs61i.mjs.map → pi-coding-agent-fPHwKP4d.mjs.map} +1 -1
- package/dist/pi-messages-CV-Ts8An.mjs +306 -0
- package/dist/pi-messages-CV-Ts8An.mjs.map +1 -0
- package/dist/provider-env-C72pF4vP.mjs +40 -0
- package/dist/provider-env-C72pF4vP.mjs.map +1 -0
- package/dist/provider-retry-Cw6YJ4cr.mjs +80 -0
- package/dist/provider-retry-Cw6YJ4cr.mjs.map +1 -0
- package/dist/rolldown-runtime-CTfmNlz1.mjs +44 -0
- package/dist/{runtime-oLd2EInK.mjs → runtime-B9R7bDWT.mjs} +838 -345
- package/dist/runtime-B9R7bDWT.mjs.map +1 -0
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/sanitize-unicode-wLA11KvZ.mjs +29 -0
- package/dist/sanitize-unicode-wLA11KvZ.mjs.map +1 -0
- package/dist/src-C3WBfOks.mjs +5031 -0
- package/dist/src-C3WBfOks.mjs.map +1 -0
- package/dist/transform-messages-DGq9mvhA.mjs +379 -0
- package/dist/transform-messages-DGq9mvhA.mjs.map +1 -0
- package/dist/uuid-DtFT7tOE.mjs +65 -0
- package/dist/uuid-DtFT7tOE.mjs.map +1 -0
- package/package.json +11 -1
- package/dist/compat/pi-ai.mjs.map +0 -1
- package/dist/mcp-config-gqg7GJEE.mjs.map +0 -1
- package/dist/rolldown-runtime-D-uZhY3_.mjs +0 -16
- package/dist/runtime-oLd2EInK.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images-models-DJtHo9Rp.mjs","names":["defaultAuthContext","defaultAuthContext"],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/lazy.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/auth/context.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/abort.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/models-store.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/models.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/images-models.js"],"sourcesContent":["import { AssistantMessageEventStream } from \"../utils/event-stream.js\";\nfunction createSetupErrorMessage(model, error) {\n return {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n },\n stopReason: \"error\",\n errorMessage: error instanceof Error ? error.message : String(error),\n timestamp: Date.now(),\n };\n}\nfunction hasResult(source) {\n return typeof source.result === \"function\";\n}\nasync function forwardStream(target, source) {\n for await (const event of source) {\n target.push(event);\n }\n target.end(hasResult(source) ? await source.result() : undefined);\n}\n/**\n * Returns a stream synchronously while running async setup (auth resolution,\n * lazy module loading) behind it. Setup failures terminate the stream with an\n * error event.\n */\nexport function lazyStream(model, setup) {\n const outer = new AssistantMessageEventStream();\n setup()\n .then((inner) => forwardStream(outer, inner))\n .catch((error) => {\n const message = createSetupErrorMessage(model, error);\n outer.push({ type: \"error\", reason: \"error\", error: message });\n outer.end(message);\n });\n return outer;\n}\nexport function lazyApi(load, capabilities) {\n const api = {\n stream: (model, context, options) => lazyStream(model, async () => (await load()).stream(model, context, options)),\n streamSimple: (model, context, options) => lazyStream(model, async () => (await load()).streamSimple(model, context, options)),\n };\n if (capabilities?.fetchDeferred) {\n api.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {\n const implementation = await load();\n if (!implementation.fetchDeferred)\n throw new Error(\"API does not support deferred responses\");\n return implementation.fetchDeferred(model, handle, options);\n });\n }\n if (capabilities?.cancelDeferred) {\n api.cancelDeferred = async (model, handle, options) => {\n const implementation = await load();\n if (!implementation.cancelDeferred)\n throw new Error(\"API cannot cancel deferred responses\");\n await implementation.cancelDeferred(model, handle, options);\n };\n }\n return api;\n}\n//# sourceMappingURL=lazy.js.map","var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n};\n// Variable specifier so browser bundlers do not try to resolve node builtins.\nconst importNodeModule = (specifier) => import(__rewriteRelativeImportExtension(specifier));\nfunction getProcessEnv() {\n const proc = globalThis.process;\n return proc?.env;\n}\n/**\n * Default auth context: env vars from `process.env` (undefined in browsers),\n * file existence via node:fs (always false in browsers).\n */\nexport function defaultProviderAuthContext() {\n return {\n async env(name) {\n const value = getProcessEnv()?.[name];\n return typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n },\n async fileExists(path) {\n try {\n const fs = (await importNodeModule(\"node:fs/promises\"));\n let resolved = path;\n if (resolved.startsWith(\"~\")) {\n const os = (await importNodeModule(\"node:os\"));\n resolved = os.homedir() + resolved.slice(1);\n }\n await fs.access(resolved);\n return true;\n }\n catch {\n return false;\n }\n },\n };\n}\n//# sourceMappingURL=context.js.map","function abortReason(signal) {\n if (signal.reason !== undefined)\n return signal.reason;\n const error = new Error(\"The operation was aborted\");\n error.name = \"AbortError\";\n return error;\n}\n/** Create an operation-local signal for public APIs whose signal is optional. */\nexport function operationSignal(signal) {\n return signal ?? new AbortController().signal;\n}\n/**\n * Stop waiting for an operation when its signal aborts while continuing to\n * observe the abandoned promise so a later rejection is always handled.\n */\nexport function raceWithAbortSignal(operation, signal) {\n if (signal.aborted) {\n void operation.catch(() => { });\n return Promise.reject(abortReason(signal));\n }\n return new Promise((resolve, reject) => {\n let settled = false;\n const cleanup = () => signal.removeEventListener(\"abort\", onAbort);\n const onAbort = () => {\n if (settled)\n return;\n settled = true;\n cleanup();\n reject(abortReason(signal));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n void operation.then((value) => {\n if (settled)\n return;\n settled = true;\n cleanup();\n resolve(value);\n }, (error) => {\n if (settled)\n return;\n settled = true;\n cleanup();\n reject(error);\n });\n if (signal.aborted)\n onAbort();\n });\n}\n//# sourceMappingURL=abort.js.map","import { operationSignal, raceWithAbortSignal } from \"../utils/abort.js\";\n/**\n * Default in-memory credential store. Apps inject persistent stores.\n * Keyed by `Provider.id`, one credential per provider; see `CredentialStore`.\n * Writes are serialized per provider through a promise chain.\n */\nexport class InMemoryCredentialStore {\n credentials = new Map();\n chains = new Map();\n /** Serialize tasks per provider id without releasing the chain before active work settles. */\n enqueue(providerId, task, options) {\n const signal = operationSignal(options?.signal);\n const previous = this.chains.get(providerId) ?? Promise.resolve();\n const queued = (async () => {\n await previous.catch(() => { });\n signal.throwIfAborted();\n return task();\n })();\n const tail = queued.catch(() => { });\n this.chains.set(providerId, tail);\n void tail.then(() => {\n if (this.chains.get(providerId) === tail)\n this.chains.delete(providerId);\n });\n return raceWithAbortSignal(queued, signal);\n }\n async read(providerId, options) {\n options?.signal?.throwIfAborted();\n return this.credentials.get(providerId);\n }\n async list(options) {\n options?.signal?.throwIfAborted();\n return [...this.credentials].map(([providerId, credential]) => ({ providerId, type: credential.type }));\n }\n modify(providerId, fn, options) {\n return this.enqueue(providerId, async () => {\n const current = this.credentials.get(providerId);\n const next = await fn(current);\n options?.signal?.throwIfAborted();\n if (next !== undefined)\n this.credentials.set(providerId, next);\n return next ?? current;\n }, options);\n }\n delete(providerId, options) {\n return this.enqueue(providerId, async () => {\n this.credentials.delete(providerId);\n }, options);\n }\n}\n//# sourceMappingURL=credential-store.js.map","import { operationSignal, raceWithAbortSignal } from \"../utils/abort.js\";\nimport { formatThrownValue } from \"../utils/diagnostics.js\";\nexport class ModelsError extends Error {\n code;\n constructor(code, message, options) {\n super(withCauseDetail(message, options?.cause), options);\n this.name = \"ModelsError\";\n this.code = code;\n }\n}\n/** Callers surface `error.message` only, so keep the underlying reason in it. */\nfunction withCauseDetail(message, cause) {\n if (cause === undefined || cause === null)\n return message;\n const detail = formatThrownValue(cause).trim();\n if (!detail || message.includes(detail))\n return message;\n return `${message}: ${detail}`;\n}\n/**\n * Auth resolution shared by the `Models` and `ImagesModels` collections.\n * A stored credential owns the provider: ambient/env is consulted only when\n * nothing is stored. No silent env fallback after a failed refresh or for a\n * credential type without a matching handler.\n */\nexport function resolveProviderAuth(provider, credentials, authContext, overrides) {\n const signal = operationSignal(overrides?.signal);\n return raceWithAbortSignal(resolveProviderAuthWithSignal(provider, credentials, authContext, overrides, signal), signal);\n}\nasync function resolveProviderAuthWithSignal(provider, credentials, authContext, overrides, signal) {\n signal.throwIfAborted();\n const requestAuthContext = overrides?.env ? overlayEnvAuthContext(authContext, overrides.env) : authContext;\n if (overrides?.apiKey !== undefined && provider.auth.apiKey) {\n return resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, {\n type: \"api_key\",\n key: overrides.apiKey,\n env: overrides.env,\n }, signal);\n }\n const stored = await readCredential(credentials, provider.id, signal);\n if (stored) {\n if (stored.type === \"oauth\" && provider.auth.oauth) {\n return resolveStoredOAuth(credentials, provider.id, provider.auth.oauth, stored, signal, overrides?.minOAuthValidityMs);\n }\n if (stored.type === \"api_key\" && provider.auth.apiKey) {\n const credential = overrides?.env ? { ...stored, env: { ...stored.env, ...overrides.env } } : stored;\n return resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, credential, signal);\n }\n return undefined;\n }\n // Ambient (env vars, AWS profiles, ADC files).\n return provider.auth.apiKey\n ? resolveApiKey(requestAuthContext, provider.auth.apiKey, provider.id, undefined, signal)\n : undefined;\n}\nfunction overlayEnvAuthContext(base, env) {\n return {\n env: async (name) => env[name] || (await base.env(name)),\n fileExists: (path) => base.fileExists(path),\n };\n}\nconst DEFAULT_OAUTH_MINIMUM_VALIDITY_MS = 5 * 60 * 1000;\nconst DEFAULT_OAUTH_REFRESH_TIMEOUT_MS = 15_000;\n/**\n * OAuth resolution with double-checked locking: tokens with less than five\n * minutes remaining lock, re-check expiry under the lock, refresh once\n * globally, and persist the rotated credential before release.\n */\nasync function resolveStoredOAuth(credentials, providerId, oauth, stored, signal, minOAuthValidityMs) {\n const minimumValidityMs = Math.max(DEFAULT_OAUTH_MINIMUM_VALIDITY_MS, minOAuthValidityMs ?? 0);\n const expiresSoon = (credential) => Date.now() + minimumValidityMs >= credential.expires;\n let credential = stored;\n if (expiresSoon(credential)) {\n // Optimistic check said expired; the authoritative check runs under the lock.\n let post;\n try {\n post = await credentials.modify(providerId, async (current) => {\n if (current?.type !== \"oauth\")\n return undefined; // logged out meanwhile\n if (!expiresSoon(current))\n return undefined; // another process/request refreshed\n try {\n const refreshSignal = AbortSignal.any([\n signal,\n AbortSignal.timeout(DEFAULT_OAUTH_REFRESH_TIMEOUT_MS),\n ]);\n return await oauth.refresh(current, refreshSignal);\n }\n catch (error) {\n throw new ModelsError(\"oauth\", `OAuth refresh failed for ${providerId}`, { cause: error });\n }\n }, { signal });\n }\n catch (error) {\n if (error instanceof ModelsError)\n throw error;\n throw new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n }\n if (post?.type !== \"oauth\")\n return undefined; // logged out meanwhile\n credential = post;\n // The normal five-minute window triggers a refresh but does not impose a\n // provider contract. Explicit callers (such as bearer-token export) do\n // require the requested minimum after the refresh.\n if (minOAuthValidityMs !== undefined && expiresSoon(credential)) {\n throw new ModelsError(\"oauth\", `OAuth refresh returned a token that expires too soon for ${providerId}`);\n }\n }\n try {\n return { auth: await oauth.toAuth(credential), source: \"OAuth\" };\n }\n catch (error) {\n throw new ModelsError(\"oauth\", `OAuth auth derivation failed for ${providerId}`, { cause: error });\n }\n}\nasync function resolveApiKey(authContext, apiKey, providerId, credential, signal) {\n try {\n return await apiKey.resolve({ ctx: authContext, credential, signal });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `API key auth failed for provider ${providerId}`, { cause: error });\n }\n}\nasync function readCredential(credentials, providerId, signal) {\n try {\n return await credentials.read(providerId, { signal });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n }\n}\n//# sourceMappingURL=resolve.js.map","export class InMemoryModelsStore {\n entries = new Map();\n async read(providerId, options) {\n options?.signal?.throwIfAborted();\n const entry = this.entries.get(providerId);\n return entry ? structuredClone(entry) : undefined;\n }\n async write(providerId, entry, options) {\n options?.signal?.throwIfAborted();\n this.entries.set(providerId, structuredClone(entry));\n }\n async delete(providerId, options) {\n options?.signal?.throwIfAborted();\n this.entries.delete(providerId);\n }\n}\n//# sourceMappingURL=models-store.js.map","import { lazyStream } from \"./api/lazy.js\";\nimport { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.js\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.js\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.js\";\nimport { InMemoryModelsStore } from \"./models-store.js\";\nimport { operationSignal, raceWithAbortSignal } from \"./utils/abort.js\";\nexport { ModelsError } from \"./auth/resolve.js\";\nfunction mergeHeaders(base, override) {\n if (!base && !override)\n return undefined;\n const merged = { ...base };\n for (const [name, value] of Object.entries(override ?? {})) {\n const lowerName = name.toLowerCase();\n for (const existingName of Object.keys(merged)) {\n if (existingName.toLowerCase() === lowerName)\n delete merged[existingName];\n }\n merged[name] = value;\n }\n return merged;\n}\nclass ModelsImpl {\n providers = new Map();\n credentials;\n modelsStore;\n authContext;\n refreshGenerations = new Map();\n refreshControllers = new Map();\n publicationChains = new Map();\n constructor(options) {\n this.credentials = options?.credentials ?? new InMemoryCredentialStore();\n this.modelsStore = options?.modelsStore ?? new InMemoryModelsStore();\n this.authContext = options?.authContext ?? defaultAuthContext();\n }\n setProvider(provider) {\n this.supersedeProviderRefresh(provider.id);\n this.providers.set(provider.id, provider);\n }\n deleteProvider(id) {\n this.supersedeProviderRefresh(id);\n this.providers.delete(id);\n }\n clearProviders() {\n for (const id of new Set([...this.providers.keys(), ...this.refreshControllers.keys()])) {\n this.supersedeProviderRefresh(id);\n }\n this.providers.clear();\n }\n getProviders() {\n return Array.from(this.providers.values());\n }\n getProvider(id) {\n return this.providers.get(id);\n }\n getModels(provider) {\n if (provider !== undefined) {\n const entry = this.providers.get(provider);\n if (!entry)\n return [];\n try {\n return entry.getModels();\n }\n catch {\n return [];\n }\n }\n const models = [];\n for (const entry of this.providers.values()) {\n try {\n models.push(...entry.getModels());\n }\n catch {\n // Best-effort: ill-behaved providers yield no models.\n }\n }\n return models;\n }\n getModel(provider, id) {\n return this.getModels(provider).find((model) => model.id === id);\n }\n supersedeProviderRefresh(providerId) {\n const generation = (this.refreshGenerations.get(providerId) ?? 0) + 1;\n this.refreshGenerations.set(providerId, generation);\n const previous = this.refreshControllers.get(providerId);\n if (previous) {\n this.refreshControllers.delete(providerId);\n previous.abort();\n }\n return generation;\n }\n beginProviderRefresh(providerId) {\n const generation = this.supersedeProviderRefresh(providerId);\n const controller = new AbortController();\n this.refreshControllers.set(providerId, controller);\n return { generation, controller };\n }\n publishProviderModels(providerId, generation, signal, publication) {\n const previous = this.publicationChains.get(providerId) ?? Promise.resolve();\n const queued = (async () => {\n await previous.catch(() => { });\n if (signal.aborted || this.refreshGenerations.get(providerId) !== generation)\n return false;\n if (publication.persist === null) {\n await this.modelsStore.delete(providerId, { signal });\n }\n else if (publication.persist !== undefined) {\n await this.modelsStore.write(providerId, structuredClone(publication.persist), { signal });\n }\n if (signal.aborted || this.refreshGenerations.get(providerId) !== generation)\n return false;\n publication.update?.();\n return true;\n })();\n const tail = queued.catch(() => { });\n this.publicationChains.set(providerId, tail);\n void tail.then(() => {\n if (this.publicationChains.get(providerId) === tail)\n this.publicationChains.delete(providerId);\n });\n return raceWithAbortSignal(queued, signal);\n }\n async runProviderRefreshPhase(provider, credential, allowNetwork, force, generation, signal) {\n const stored = await this.modelsStore.read(provider.id, { signal });\n await provider.refreshModels({\n credential,\n stored: stored ? structuredClone(stored) : undefined,\n publish: (publication) => this.publishProviderModels(provider.id, generation, signal, publication),\n allowNetwork,\n force: allowNetwork ? force : undefined,\n signal,\n });\n }\n async refresh(options = {}) {\n const allowNetwork = options.allowNetwork ?? true;\n const callerSignal = operationSignal(options.signal);\n const errors = new Map();\n if (callerSignal.aborted)\n return { aborted: true, errors };\n const selected = options.providers ? new Set(options.providers) : undefined;\n const refreshable = Array.from(this.providers.values()).filter((provider) => provider.refreshModels !== undefined && (!selected || selected.has(provider.id)));\n const refresh = Promise.all(refreshable.map(async (provider) => {\n const { generation, controller } = this.beginProviderRefresh(provider.id);\n const signal = AbortSignal.any([callerSignal, controller.signal]);\n const operation = (async () => {\n let storedCredential;\n let credentialError;\n try {\n storedCredential = await this.readCredential(provider.id, signal);\n }\n catch (error) {\n credentialError = error;\n }\n // Restore cached provider state before auth resolution or network access.\n await this.runProviderRefreshPhase(provider, storedCredential, false, undefined, generation, signal);\n if (credentialError !== undefined)\n throw credentialError;\n if (!allowNetwork || signal.aborted)\n return;\n const credential = await this.resolveRefreshCredential(provider, storedCredential, signal);\n if (!credential)\n return;\n await this.runProviderRefreshPhase(provider, credential, true, options.force, generation, signal);\n })();\n try {\n await raceWithAbortSignal(operation, signal);\n }\n catch (error) {\n if (!signal.aborted) {\n errors.set(provider.id, error instanceof Error\n ? error\n : new ModelsError(\"model_source\", `Model refresh failed for ${provider.id}`, { cause: error }));\n }\n }\n finally {\n if (this.refreshControllers.get(provider.id) === controller) {\n this.refreshControllers.delete(provider.id);\n }\n }\n }));\n try {\n await raceWithAbortSignal(refresh, callerSignal);\n }\n catch (error) {\n if (!callerSignal.aborted)\n throw error;\n }\n return { aborted: callerSignal.aborted, errors: new Map(errors) };\n }\n async resolveRefreshCredential(provider, stored, signal) {\n if (stored?.type === \"oauth\") {\n const oauth = provider.auth.oauth;\n if (!oauth)\n return undefined;\n if (Date.now() < stored.expires)\n return stored;\n if (signal.aborted)\n return undefined;\n const post = await this.credentials.modify(provider.id, async (current) => {\n if (current?.type !== \"oauth\" || Date.now() < current.expires)\n return undefined;\n return oauth.refresh(current, signal);\n }, { signal });\n return post?.type === \"oauth\" ? post : undefined;\n }\n const apiKey = provider.auth.apiKey;\n if (!apiKey)\n return undefined;\n const credential = stored?.type === \"api_key\" ? stored : undefined;\n const result = await apiKey.resolve({ ctx: this.authContext, credential, signal });\n if (!result)\n return undefined;\n return { type: \"api_key\", key: result.auth.apiKey, env: result.env };\n }\n async readCredential(providerId, signal) {\n try {\n return await this.credentials.read(providerId, { signal });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n }\n }\n async checkProviderAuth(provider, credential, signal) {\n if (credential?.type === \"oauth\") {\n return provider.auth.oauth ? { source: \"OAuth\", type: \"oauth\" } : undefined;\n }\n const apiKey = provider.auth.apiKey;\n if (!apiKey)\n return undefined;\n if (apiKey.check) {\n try {\n return await apiKey.check({\n ctx: this.authContext,\n credential: credential?.type === \"api_key\" ? credential : undefined,\n signal,\n });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `API key auth check failed for provider ${provider.id}`, { cause: error });\n }\n }\n const resolution = await resolveProviderAuth(provider, this.credentials, this.authContext, { signal });\n return resolution ? { source: resolution.source, type: \"api_key\" } : undefined;\n }\n checkAuth(providerId, options) {\n const signal = operationSignal(options?.signal);\n const check = (async () => {\n signal.throwIfAborted();\n const provider = this.providers.get(providerId);\n if (!provider)\n return undefined;\n return this.checkProviderAuth(provider, await this.readCredential(providerId, signal), signal);\n })();\n return raceWithAbortSignal(check, signal);\n }\n getAvailable(providerId, options) {\n const signal = operationSignal(options?.signal);\n const available = (async () => {\n signal.throwIfAborted();\n const providers = providerId\n ? [this.providers.get(providerId)].filter((entry) => entry !== undefined)\n : this.getProviders();\n const checks = await Promise.all(providers.map(async (provider) => {\n const credential = await this.readCredential(provider.id, signal);\n return { provider, credential, auth: await this.checkProviderAuth(provider, credential, signal) };\n }));\n return checks.flatMap(({ provider, credential, auth }) => {\n if (!auth)\n return [];\n const models = provider.getModels();\n return provider.filterModels?.(models, credential) ?? models;\n });\n })();\n return raceWithAbortSignal(available, signal);\n }\n async getAuth(providerOrModel, overrides) {\n const signal = operationSignal(overrides?.signal);\n const providerId = typeof providerOrModel === \"string\" ? providerOrModel : providerOrModel.provider;\n const provider = this.providers.get(providerId);\n if (!provider)\n return undefined;\n const result = await resolveProviderAuth(provider, this.credentials, this.authContext, { ...overrides, signal });\n if (!result || typeof providerOrModel === \"string\" || !providerOrModel.headers)\n return result;\n return {\n ...result,\n auth: {\n ...result.auth,\n headers: mergeHeaders(result.auth.headers, providerOrModel.headers),\n },\n };\n }\n async login(providerId, type, interaction) {\n const signal = operationSignal(interaction.signal);\n signal.throwIfAborted();\n const provider = this.providers.get(providerId);\n if (!provider)\n throw new ModelsError(\"provider\", `Unknown provider: ${providerId}`);\n const method = type === \"oauth\" ? provider.auth.oauth : provider.auth.apiKey;\n if (!method?.login) {\n throw new ModelsError(\"auth\", `${provider.name} does not support ${type} login`);\n }\n const loginOperation = method.login({ ...interaction, signal });\n const credential = await raceWithAbortSignal(loginOperation, signal);\n let mutationStarted = false;\n let markMutationStarted;\n const started = new Promise((resolve) => {\n markMutationStarted = resolve;\n });\n const mutation = this.credentials.modify(providerId, async () => {\n mutationStarted = true;\n markMutationStarted?.();\n return credential;\n }, { signal });\n void mutation.catch(() => { });\n try {\n await new Promise((resolve, reject) => {\n const onAbort = () => {\n if (!mutationStarted)\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n void Promise.race([started, mutation]).then(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, (error) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n });\n if (signal.aborted)\n onAbort();\n });\n await mutation;\n }\n catch (error) {\n signal.throwIfAborted();\n throw new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n }\n return credential;\n }\n async logout(providerId, options) {\n const signal = operationSignal(options?.signal);\n signal.throwIfAborted();\n try {\n await this.credentials.delete(providerId, { signal });\n }\n catch (error) {\n signal.throwIfAborted();\n throw new ModelsError(\"auth\", `Credential store delete failed for ${providerId}`, { cause: error });\n }\n }\n requireProvider(model) {\n const provider = this.providers.get(model.provider);\n if (!provider) {\n throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n }\n return provider;\n }\n async applyAuth(model, options) {\n this.requireProvider(model);\n const resolution = await this.getAuth(model, {\n apiKey: options?.apiKey,\n env: options?.env,\n signal: options?.signal,\n });\n if (!resolution) {\n throw new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n }\n const auth = resolution.auth;\n // Explicit request options win per-field; the Models-only transform runs last.\n const apiKey = options?.apiKey ?? auth.apiKey;\n let headers = mergeHeaders(auth.headers, options?.headers);\n if (options?.transformHeaders)\n headers = await options.transformHeaders(headers ?? {});\n const env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n const { transformHeaders: _transformHeaders, ...providerOptions } = options ?? {};\n const requestOptions = { ...providerOptions, apiKey, headers, env };\n return { requestModel, requestOptions };\n }\n stream(model, context, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.stream(requestModel, context, requestOptions);\n });\n }\n async complete(model, context, options) {\n return this.stream(model, context, options).result();\n }\n streamSimple(model, context, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.streamSimple(requestModel, context, requestOptions);\n });\n }\n async completeSimple(model, context, options) {\n return this.streamSimple(model, context, options).result();\n }\n async fetchDeferred(model, handle, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n if (!provider.fetchDeferred) {\n throw new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n }\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.fetchDeferred(requestModel, handle, requestOptions);\n }).result();\n }\n async cancelDeferred(model, handle, options) {\n const provider = this.requireProvider(model);\n if (!provider.cancelDeferred) {\n throw new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n }\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n await provider.cancelDeferred(requestModel, handle, requestOptions);\n }\n}\nexport function createModels(options) {\n return new ModelsImpl(options);\n}\n/**\n * Builds a provider from parts. Built-in provider factories and models.json\n * custom providers both go through this. A single `api` streams all models;\n * an `api` map dispatches on `model.api`, and a model whose api has no entry\n * produces a stream error.\n */\nexport function createProvider(input) {\n const baselineModels = input.models;\n let dynamicModels = [];\n const fetchModels = input.fetchModels;\n const currentModels = () => {\n const merged = [...baselineModels];\n for (const model of dynamicModels) {\n const index = merged.findIndex((entry) => entry.id === model.id);\n if (index >= 0)\n merged[index] = model;\n else\n merged.push(model);\n }\n return merged;\n };\n const single = typeof input.api.stream === \"function\" ? input.api : undefined;\n const byApi = single ? undefined : input.api;\n const apiFor = (model) => single ?? byApi?.[model.api];\n const dispatch = (model, run) => {\n const streams = apiFor(model);\n if (!streams) {\n return lazyStream(model, async () => {\n throw new ModelsError(\"stream\", `Provider ${input.id} has no API implementation for \"${model.api}\"`);\n });\n }\n return run(streams);\n };\n const provider = {\n id: input.id,\n name: input.name ?? input.id,\n baseUrl: input.baseUrl,\n headers: input.headers,\n auth: input.auth,\n getModels: currentModels,\n refreshModels: fetchModels\n ? async (context) => {\n if (context.stored) {\n const restored = context.stored.models\n .filter((model) => model.provider === input.id)\n .map((model) => model);\n if (!(await context.publish({\n update: () => {\n dynamicModels = restored;\n },\n }))) {\n return;\n }\n }\n if (!context.allowNetwork || context.signal.aborted)\n return;\n const refreshed = await fetchModels(context);\n if (context.signal.aborted)\n return;\n await context.publish({\n persist: { models: refreshed, checkedAt: Date.now() },\n update: () => {\n dynamicModels = refreshed;\n },\n });\n }\n : undefined,\n filterModels: input.filterModels,\n stream: (model, context, options) => dispatch(model, (streams) => streams.stream(model, context, options)),\n streamSimple: (model, context, options) => dispatch(model, (streams) => streams.streamSimple(model, context, options)),\n };\n const streams = single ? [single] : Object.values(byApi ?? {}).filter((entry) => entry !== undefined);\n if (streams.some((entry) => entry.fetchDeferred !== undefined)) {\n provider.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {\n const implementation = apiFor(model);\n if (!implementation?.fetchDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} does not support deferred responses for \"${model.api}\"`);\n }\n return implementation.fetchDeferred(model, handle, options);\n });\n }\n if (streams.some((entry) => entry.cancelDeferred !== undefined)) {\n provider.cancelDeferred = async (model, handle, options) => {\n const implementation = apiFor(model);\n if (!implementation?.cancelDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} cannot cancel deferred responses for \"${model.api}\"`);\n }\n await implementation.cancelDeferred(model, handle, options);\n };\n }\n return provider;\n}\n/**\n * Runtime-checked narrowing for dynamically looked-up models:\n *\n * ```ts\n * const model = models.getModel(\"anthropic\", \"claude-opus-4-7\");\n * if (model && hasApi(model, \"anthropic-messages\")) {\n * // model: Model<\"anthropic-messages\">, stream options fully typed\n * }\n * ```\n */\nexport function hasApi(model, api) {\n return model.api === api;\n}\nexport function calculateCost(model, usage) {\n const inputTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n let rates = model.cost;\n let matchedThreshold = -1;\n for (const tier of model.cost.tiers ?? []) {\n if (inputTokens > tier.inputTokensAbove && tier.inputTokensAbove > matchedThreshold) {\n rates = tier;\n matchedThreshold = tier.inputTokensAbove;\n }\n }\n // Anthropic charges 2x base input for 1h cache writes.\n const longWrite = usage.cacheWrite1h ?? 0;\n const shortWrite = usage.cacheWrite - longWrite;\n usage.cost.input = (rates.input / 1000000) * usage.input;\n usage.cost.output = (rates.output / 1000000) * usage.output;\n usage.cost.cacheRead = (rates.cacheRead / 1000000) * usage.cacheRead;\n usage.cost.cacheWrite = (rates.cacheWrite * shortWrite + rates.input * 2 * longWrite) / 1000000;\n usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n return usage.cost;\n}\nconst EXTENDED_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\nexport function getSupportedThinkingLevels(model) {\n if (!model.reasoning)\n return [\"off\"];\n return EXTENDED_THINKING_LEVELS.filter((level) => {\n const mapped = model.thinkingLevelMap?.[level];\n if (mapped === null)\n return false;\n if (level === \"xhigh\" || level === \"max\")\n return mapped !== undefined;\n return true;\n });\n}\nexport function clampThinkingLevel(model, level) {\n const availableLevels = getSupportedThinkingLevels(model);\n if (availableLevels.includes(level))\n return level;\n const requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n if (requestedIndex === -1)\n return availableLevels[0] ?? \"off\";\n for (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n const candidate = EXTENDED_THINKING_LEVELS[i];\n if (availableLevels.includes(candidate))\n return candidate;\n }\n for (let i = requestedIndex - 1; i >= 0; i--) {\n const candidate = EXTENDED_THINKING_LEVELS[i];\n if (availableLevels.includes(candidate))\n return candidate;\n }\n return availableLevels[0] ?? \"off\";\n}\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual(a, b) {\n if (!a || !b)\n return false;\n return a.id === b.id && a.provider === b.provider;\n}\n//# sourceMappingURL=models.js.map","/**\n * Standard api-key auth: a stored credential key wins, otherwise the first\n * set env var resolves. Includes a `login` that prompts for the key.\n * Providers with non-standard resolution (provider env, ambient files, IAM)\n * write their own `ApiKeyAuth`.\n */\nexport function envApiKeyAuth(name, envVars) {\n return {\n name,\n login: async (interaction) => {\n interaction.signal.throwIfAborted();\n const key = await interaction.prompt({ type: \"secret\", message: `Enter ${name}` });\n interaction.signal.throwIfAborted();\n return { type: \"api_key\", key };\n },\n resolve: async ({ ctx, credential, signal }) => {\n signal.throwIfAborted();\n if (credential?.key) {\n return { auth: { apiKey: credential.key }, env: credential.env, source: \"stored credential\" };\n }\n for (const envVar of envVars) {\n const value = await ctx.env(envVar);\n signal.throwIfAborted();\n if (value)\n return { auth: { apiKey: value }, source: envVar };\n }\n return undefined;\n },\n };\n}\n/**\n * Wraps a dynamically imported `OAuthAuth` so provider definitions can\n * advertise OAuth without importing the implementation. The flow loads on\n * first `login`/`refresh`/`toAuth` call; callers keep Node-only flow code out\n * of bundles by loading through a bundler-opaque dynamic import (variable\n * specifier, see the bedrock lazy wrapper).\n */\nexport function lazyOAuth(input) {\n let promise;\n const loaded = () => {\n promise ??= input.load();\n return promise;\n };\n return {\n name: input.name,\n isSubscription: input.isSubscription,\n loginLabel: input.loginLabel,\n login: async (interaction) => (await loaded()).login(interaction),\n refresh: async (credential, signal) => (await loaded()).refresh(credential, signal),\n toAuth: async (credential) => (await loaded()).toAuth(credential),\n };\n}\n//# sourceMappingURL=helpers.js.map","import { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.js\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.js\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.js\";\nclass ImagesModelsImpl {\n providers = new Map();\n credentials;\n authContext;\n constructor(options) {\n this.credentials = options?.credentials ?? new InMemoryCredentialStore();\n this.authContext = options?.authContext ?? defaultAuthContext();\n }\n setProvider(provider) {\n this.providers.set(provider.id, provider);\n }\n deleteProvider(id) {\n this.providers.delete(id);\n }\n clearProviders() {\n this.providers.clear();\n }\n getProviders() {\n return Array.from(this.providers.values());\n }\n getProvider(id) {\n return this.providers.get(id);\n }\n getModels(provider) {\n if (provider !== undefined) {\n const entry = this.providers.get(provider);\n if (!entry)\n return [];\n try {\n return entry.getModels();\n }\n catch {\n return [];\n }\n }\n const models = [];\n for (const entry of this.providers.values()) {\n try {\n models.push(...entry.getModels());\n }\n catch {\n // Best-effort: ill-behaved providers yield no models.\n }\n }\n return models;\n }\n getModel(provider, id) {\n return this.getModels(provider).find((model) => model.id === id);\n }\n async refresh(provider) {\n if (provider !== undefined) {\n const entry = this.providers.get(provider);\n if (!entry?.refreshModels)\n return;\n try {\n await entry.refreshModels();\n }\n catch (error) {\n if (error instanceof ModelsError)\n throw error;\n throw new ModelsError(\"model_source\", `Model refresh failed for ${provider}`, { cause: error });\n }\n return;\n }\n // Cannot reject: the async mapper turns even sync throws from ill-behaved\n // providers into rejections, and allSettled captures all of them.\n await Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));\n }\n async getAuth(providerOrModel, overrides) {\n const providerId = typeof providerOrModel === \"string\" ? providerOrModel : providerOrModel.provider;\n const provider = this.providers.get(providerId);\n if (!provider)\n return undefined;\n return resolveProviderAuth(provider, this.credentials, this.authContext, overrides);\n }\n async generateImages(model, context, options) {\n try {\n const provider = this.providers.get(model.provider);\n if (!provider) {\n throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n }\n const resolution = await this.getAuth(model, {\n apiKey: options?.apiKey,\n env: options?.env,\n signal: options?.signal,\n });\n const auth = resolution?.auth;\n if (!auth) {\n return provider.generateImages(model, context, options);\n }\n const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n // Explicit request options win per-field; headers/env merge per key.\n const apiKey = options?.apiKey ?? auth.apiKey;\n const headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;\n const env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n return await provider.generateImages(requestModel, context, { ...options, apiKey, headers, env });\n }\n catch (error) {\n return {\n api: model.api,\n provider: model.provider,\n model: model.id,\n output: [],\n stopReason: \"error\",\n errorMessage: error instanceof Error ? error.message : String(error),\n timestamp: Date.now(),\n };\n }\n }\n}\nexport function createImagesModels(options) {\n return new ImagesModelsImpl(options);\n}\n/** Builds an image-generation provider from parts. */\nexport function createImagesProvider(input) {\n let models = input.models;\n let inflightRefresh;\n const refreshModels = input.refreshModels;\n return {\n id: input.id,\n name: input.name ?? input.id,\n auth: input.auth,\n getModels: () => models,\n refreshModels: refreshModels\n ? () => {\n inflightRefresh ??= (async () => {\n try {\n models = await refreshModels();\n }\n finally {\n inflightRefresh = undefined;\n }\n })();\n return inflightRefresh;\n }\n : undefined,\n generateImages: (model, context, options) => input.api.generateImages(model, context, options),\n };\n}\n//# sourceMappingURL=images-models.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/analyzer.ts","../src/compatibility.ts","../src/generator.ts","../src/mcp-config.ts","../src/source.ts"],"mappings":";;;;iBAgbsB,eAAe,KAAK,oBAAoB,QAAQ;;;UC9a5D;EACR,OAAO;EACP;;cAKW;cAKA;cAKA;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/analyzer.ts","../src/compatibility.ts","../src/generator.ts","../src/mcp-config.ts","../src/source.ts"],"mappings":";;;;iBAgbsB,eAAe,KAAK,oBAAoB,QAAQ;;;UC9a5D;EACR,OAAO;EACP;;cAKW;cAKA;cAKA;cAWA,mBAAmB,SAAS,eAAe,SAAS,eAAe;cAmNnE,eAAe,SAAS,eAAe;cA4BvC,kBAAkB,SAAS,eAAe;cA+B1C,WAAW,SAAS,eAAe;cAgHnC,aAAa,SAAS,eAAe;iBA6FlC,WAAW,iBAAiB;iBAI5B,aAAa,gBAAgB;iBAO7B,kBAAkB,qBAAqB,uBAAuB;iBAS9D,uBAAuB,mBAAmB;iBAI1C,yBAAyB,mBAAmB;;;iBCjMtC,eACpB,KAAK,mBACL,SAAS,kBACR;EAAU;EAAgB,QAAQ;EAAqB;;;;KCtUrD,gBAAgB;UAEJ;EACf;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA,UAAU;EACV;;UAGe;EACf;EACA;;UAGe;EACf,SAAS;EACT,SAAS;EACT,UAAU;EACV;;iBA6Cc,oBAAoB,aAAa;EAA8B,SAAS,YAAY;EAAc;;iBAoElG,mBAAmB,aAAa,wBAA4B;;iBAsD5D,eAAe,QAAQ;;;iBC5EjB,iBAAiB,gBAAgB,eAAsB,QAAQ"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { _ as ruleForHostImport, a as analyzePackage, c as EVENT_RULES, d as PI_CODING_AGENT_PACKAGES, f as PI_TUI_PACKAGES, g as ruleForEvent, h as ruleForContextProperty, i as generateBundle, l as HOST_IMPORT_RULES, m as ruleForApi, n as convertPiMcpConfig, o as API_RULES, p as UI_CONTEXT_RULES, r as renderMcpPatch, s as CONTEXT_RULES, t as collectPiMcpServers, u as PI_AI_PACKAGES, v as ruleForUiContextProperty } from "./mcp-config-
|
|
2
|
+
import { _ as ruleForHostImport, a as analyzePackage, c as EVENT_RULES, d as PI_CODING_AGENT_PACKAGES, f as PI_TUI_PACKAGES, g as ruleForEvent, h as ruleForContextProperty, i as generateBundle, l as HOST_IMPORT_RULES, m as ruleForApi, n as convertPiMcpConfig, o as API_RULES, p as UI_CONTEXT_RULES, r as renderMcpPatch, s as CONTEXT_RULES, t as collectPiMcpServers, u as PI_AI_PACKAGES, v as ruleForUiContextProperty } from "./mcp-config-D2B3kv-Z.mjs";
|
|
3
3
|
import { t as resolvePiPackage } from "./source-0sA5z08z.mjs";
|
|
4
4
|
import { applyPiHost, generateHostBundle, manifestForInstalled } from "./host.mjs";
|
|
5
5
|
export { API_RULES, CONTEXT_RULES, EVENT_RULES, HOST_IMPORT_RULES, PI_AI_PACKAGES, PI_CODING_AGENT_PACKAGES, PI_TUI_PACKAGES, UI_CONTEXT_RULES, analyzePackage, applyPiHost, collectPiMcpServers, convertPiMcpConfig, generateBundle, generateHostBundle, manifestForInstalled, renderMcpPatch, resolvePiPackage, ruleForApi, ruleForContextProperty, ruleForEvent, ruleForHostImport, ruleForUiContextProperty };
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
|
|
2
|
+
import { t as __commonJSMin } from "./rolldown-runtime-CTfmNlz1.mjs";
|
|
3
|
+
//#region node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/options.js
|
|
4
|
+
var require_options = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5
|
+
/**
|
|
6
|
+
* Sometimes you don't allow every type to be partially parsed.
|
|
7
|
+
* For example, you may not want a partial number because it may increase its size gradually before it's complete.
|
|
8
|
+
* In this case, you can use the `Allow` object to control what types you allow to be partially parsed.
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Allow = exports.ALL = exports.COLLECTION = exports.ATOM = exports.SPECIAL = exports.INF = exports._INFINITY = exports.INFINITY = exports.NAN = exports.BOOL = exports.NULL = exports.OBJ = exports.ARR = exports.NUM = exports.STR = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* allow partial strings like `"hello \u12` to be parsed as `"hello "`
|
|
15
|
+
*/
|
|
16
|
+
exports.STR = 1;
|
|
17
|
+
/**
|
|
18
|
+
* allow partial numbers like `123.` to be parsed as `123`
|
|
19
|
+
*/
|
|
20
|
+
exports.NUM = 2;
|
|
21
|
+
/**
|
|
22
|
+
* allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`
|
|
23
|
+
*/
|
|
24
|
+
exports.ARR = 4;
|
|
25
|
+
/**
|
|
26
|
+
* allow partial objects like `{"a": 1, "b":` to be parsed as `{"a": 1}`
|
|
27
|
+
*/
|
|
28
|
+
exports.OBJ = 8;
|
|
29
|
+
/**
|
|
30
|
+
* allow `nu` to be parsed as `null`
|
|
31
|
+
*/
|
|
32
|
+
exports.NULL = 16;
|
|
33
|
+
/**
|
|
34
|
+
* allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`
|
|
35
|
+
*/
|
|
36
|
+
exports.BOOL = 32;
|
|
37
|
+
/**
|
|
38
|
+
* allow `Na` to be parsed as `NaN`
|
|
39
|
+
*/
|
|
40
|
+
exports.NAN = 64;
|
|
41
|
+
/**
|
|
42
|
+
* allow `Inf` to be parsed as `Infinity`
|
|
43
|
+
*/
|
|
44
|
+
exports.INFINITY = 128;
|
|
45
|
+
/**
|
|
46
|
+
* allow `-Inf` to be parsed as `-Infinity`
|
|
47
|
+
*/
|
|
48
|
+
exports._INFINITY = 256;
|
|
49
|
+
exports.INF = exports.INFINITY | exports._INFINITY;
|
|
50
|
+
exports.SPECIAL = exports.NULL | exports.BOOL | exports.INF | exports.NAN;
|
|
51
|
+
exports.ATOM = exports.STR | exports.NUM | exports.SPECIAL;
|
|
52
|
+
exports.COLLECTION = exports.ARR | exports.OBJ;
|
|
53
|
+
exports.ALL = exports.ATOM | exports.COLLECTION;
|
|
54
|
+
/**
|
|
55
|
+
* Control what types you allow to be partially parsed.
|
|
56
|
+
* The default is to allow all types to be partially parsed, which in most casees is the best option.
|
|
57
|
+
* @example
|
|
58
|
+
* If you don't want to allow partial objects, you can use the following code:
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { Allow, parse } from "partial-json";
|
|
61
|
+
* parse(`[{"a": 1, "b": 2}, {"a": 3,`, Allow.ARR); // [ { a: 1, b: 2 } ]
|
|
62
|
+
* ```
|
|
63
|
+
* Or you can use `~` to disallow a type:
|
|
64
|
+
* ```ts
|
|
65
|
+
* parse(`[{"a": 1, "b": 2}, {"a": 3,`, ~Allow.OBJ); // [ { a: 1, b: 2 } ]
|
|
66
|
+
* ```
|
|
67
|
+
* @example
|
|
68
|
+
* If you don't want to allow partial strings, you can use the following code:
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { Allow, parse } from "partial-json";
|
|
71
|
+
* parse(`["complete string", "incompl`, ~Allow.STR); // [ 'complete string' ]
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
exports.Allow = {
|
|
75
|
+
STR: exports.STR,
|
|
76
|
+
NUM: exports.NUM,
|
|
77
|
+
ARR: exports.ARR,
|
|
78
|
+
OBJ: exports.OBJ,
|
|
79
|
+
NULL: exports.NULL,
|
|
80
|
+
BOOL: exports.BOOL,
|
|
81
|
+
NAN: exports.NAN,
|
|
82
|
+
INFINITY: exports.INFINITY,
|
|
83
|
+
_INFINITY: exports._INFINITY,
|
|
84
|
+
INF: exports.INF,
|
|
85
|
+
SPECIAL: exports.SPECIAL,
|
|
86
|
+
ATOM: exports.ATOM,
|
|
87
|
+
COLLECTION: exports.COLLECTION,
|
|
88
|
+
ALL: exports.ALL
|
|
89
|
+
};
|
|
90
|
+
exports.default = exports.Allow;
|
|
91
|
+
}));
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/json-parse.js
|
|
94
|
+
var import_dist = (/* @__PURE__ */ __commonJSMin(((exports) => {
|
|
95
|
+
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
|
|
96
|
+
if (k2 === void 0) k2 = k;
|
|
97
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
98
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function() {
|
|
101
|
+
return m[k];
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
Object.defineProperty(o, k2, desc);
|
|
105
|
+
}) : (function(o, m, k, k2) {
|
|
106
|
+
if (k2 === void 0) k2 = k;
|
|
107
|
+
o[k2] = m[k];
|
|
108
|
+
}));
|
|
109
|
+
var __exportStar = exports && exports.__exportStar || function(m, exports$1) {
|
|
110
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
111
|
+
};
|
|
112
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
113
|
+
exports.Allow = exports.MalformedJSON = exports.PartialJSON = exports.parseJSON = exports.parse = void 0;
|
|
114
|
+
const options_1 = require_options();
|
|
115
|
+
Object.defineProperty(exports, "Allow", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function() {
|
|
118
|
+
return options_1.Allow;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
__exportStar(require_options(), exports);
|
|
122
|
+
var PartialJSON = class extends Error {};
|
|
123
|
+
exports.PartialJSON = PartialJSON;
|
|
124
|
+
var MalformedJSON = class extends Error {};
|
|
125
|
+
exports.MalformedJSON = MalformedJSON;
|
|
126
|
+
/**
|
|
127
|
+
* Parse incomplete JSON
|
|
128
|
+
* @param {string} jsonString Partial JSON to be parsed
|
|
129
|
+
* @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details
|
|
130
|
+
* @returns The parsed JSON
|
|
131
|
+
* @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)
|
|
132
|
+
* @throws {MalformedJSON} If the JSON is malformed
|
|
133
|
+
*/
|
|
134
|
+
function parseJSON(jsonString, allowPartial = options_1.Allow.ALL) {
|
|
135
|
+
if (typeof jsonString !== "string") throw new TypeError(`expecting str, got ${typeof jsonString}`);
|
|
136
|
+
if (!jsonString.trim()) throw new Error(`${jsonString} is empty`);
|
|
137
|
+
return _parseJSON(jsonString.trim(), allowPartial);
|
|
138
|
+
}
|
|
139
|
+
exports.parseJSON = parseJSON;
|
|
140
|
+
const _parseJSON = (jsonString, allow) => {
|
|
141
|
+
const length = jsonString.length;
|
|
142
|
+
let index = 0;
|
|
143
|
+
const markPartialJSON = (msg) => {
|
|
144
|
+
throw new PartialJSON(`${msg} at position ${index}`);
|
|
145
|
+
};
|
|
146
|
+
const throwMalformedError = (msg) => {
|
|
147
|
+
throw new MalformedJSON(`${msg} at position ${index}`);
|
|
148
|
+
};
|
|
149
|
+
const parseAny = () => {
|
|
150
|
+
skipBlank();
|
|
151
|
+
if (index >= length) markPartialJSON("Unexpected end of input");
|
|
152
|
+
if (jsonString[index] === "\"") return parseStr();
|
|
153
|
+
if (jsonString[index] === "{") return parseObj();
|
|
154
|
+
if (jsonString[index] === "[") return parseArr();
|
|
155
|
+
if (jsonString.substring(index, index + 4) === "null" || options_1.Allow.NULL & allow && length - index < 4 && "null".startsWith(jsonString.substring(index))) {
|
|
156
|
+
index += 4;
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
if (jsonString.substring(index, index + 4) === "true" || options_1.Allow.BOOL & allow && length - index < 4 && "true".startsWith(jsonString.substring(index))) {
|
|
160
|
+
index += 4;
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
if (jsonString.substring(index, index + 5) === "false" || options_1.Allow.BOOL & allow && length - index < 5 && "false".startsWith(jsonString.substring(index))) {
|
|
164
|
+
index += 5;
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
if (jsonString.substring(index, index + 8) === "Infinity" || options_1.Allow.INFINITY & allow && length - index < 8 && "Infinity".startsWith(jsonString.substring(index))) {
|
|
168
|
+
index += 8;
|
|
169
|
+
return Infinity;
|
|
170
|
+
}
|
|
171
|
+
if (jsonString.substring(index, index + 9) === "-Infinity" || options_1.Allow._INFINITY & allow && 1 < length - index && length - index < 9 && "-Infinity".startsWith(jsonString.substring(index))) {
|
|
172
|
+
index += 9;
|
|
173
|
+
return -Infinity;
|
|
174
|
+
}
|
|
175
|
+
if (jsonString.substring(index, index + 3) === "NaN" || options_1.Allow.NAN & allow && length - index < 3 && "NaN".startsWith(jsonString.substring(index))) {
|
|
176
|
+
index += 3;
|
|
177
|
+
return NaN;
|
|
178
|
+
}
|
|
179
|
+
return parseNum();
|
|
180
|
+
};
|
|
181
|
+
const parseStr = () => {
|
|
182
|
+
const start = index;
|
|
183
|
+
let escape = false;
|
|
184
|
+
index++;
|
|
185
|
+
while (index < length && (jsonString[index] !== "\"" || escape && jsonString[index - 1] === "\\")) {
|
|
186
|
+
escape = jsonString[index] === "\\" ? !escape : false;
|
|
187
|
+
index++;
|
|
188
|
+
}
|
|
189
|
+
if (jsonString.charAt(index) == "\"") try {
|
|
190
|
+
return JSON.parse(jsonString.substring(start, ++index - Number(escape)));
|
|
191
|
+
} catch (e) {
|
|
192
|
+
throwMalformedError(String(e));
|
|
193
|
+
}
|
|
194
|
+
else if (options_1.Allow.STR & allow) try {
|
|
195
|
+
return JSON.parse(jsonString.substring(start, index - Number(escape)) + "\"");
|
|
196
|
+
} catch (e) {
|
|
197
|
+
return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf("\\")) + "\"");
|
|
198
|
+
}
|
|
199
|
+
markPartialJSON("Unterminated string literal");
|
|
200
|
+
};
|
|
201
|
+
const parseObj = () => {
|
|
202
|
+
index++;
|
|
203
|
+
skipBlank();
|
|
204
|
+
const obj = {};
|
|
205
|
+
try {
|
|
206
|
+
while (jsonString[index] !== "}") {
|
|
207
|
+
skipBlank();
|
|
208
|
+
if (index >= length && options_1.Allow.OBJ & allow) return obj;
|
|
209
|
+
const key = parseStr();
|
|
210
|
+
skipBlank();
|
|
211
|
+
index++;
|
|
212
|
+
try {
|
|
213
|
+
obj[key] = parseAny();
|
|
214
|
+
} catch (e) {
|
|
215
|
+
if (options_1.Allow.OBJ & allow) return obj;
|
|
216
|
+
else throw e;
|
|
217
|
+
}
|
|
218
|
+
skipBlank();
|
|
219
|
+
if (jsonString[index] === ",") index++;
|
|
220
|
+
}
|
|
221
|
+
} catch (e) {
|
|
222
|
+
if (options_1.Allow.OBJ & allow) return obj;
|
|
223
|
+
else markPartialJSON("Expected '}' at end of object");
|
|
224
|
+
}
|
|
225
|
+
index++;
|
|
226
|
+
return obj;
|
|
227
|
+
};
|
|
228
|
+
const parseArr = () => {
|
|
229
|
+
index++;
|
|
230
|
+
const arr = [];
|
|
231
|
+
try {
|
|
232
|
+
while (jsonString[index] !== "]") {
|
|
233
|
+
arr.push(parseAny());
|
|
234
|
+
skipBlank();
|
|
235
|
+
if (jsonString[index] === ",") index++;
|
|
236
|
+
}
|
|
237
|
+
} catch (e) {
|
|
238
|
+
if (options_1.Allow.ARR & allow) return arr;
|
|
239
|
+
markPartialJSON("Expected ']' at end of array");
|
|
240
|
+
}
|
|
241
|
+
index++;
|
|
242
|
+
return arr;
|
|
243
|
+
};
|
|
244
|
+
const parseNum = () => {
|
|
245
|
+
if (index === 0) {
|
|
246
|
+
if (jsonString === "-") throwMalformedError("Not sure what '-' is");
|
|
247
|
+
try {
|
|
248
|
+
return JSON.parse(jsonString);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
if (options_1.Allow.NUM & allow) try {
|
|
251
|
+
return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf("e")));
|
|
252
|
+
} catch (e) {}
|
|
253
|
+
throwMalformedError(String(e));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const start = index;
|
|
257
|
+
if (jsonString[index] === "-") index++;
|
|
258
|
+
while (jsonString[index] && ",]}".indexOf(jsonString[index]) === -1) index++;
|
|
259
|
+
if (index == length && !(options_1.Allow.NUM & allow)) markPartialJSON("Unterminated number literal");
|
|
260
|
+
try {
|
|
261
|
+
return JSON.parse(jsonString.substring(start, index));
|
|
262
|
+
} catch (e) {
|
|
263
|
+
if (jsonString.substring(start, index) === "-") markPartialJSON("Not sure what '-' is");
|
|
264
|
+
try {
|
|
265
|
+
return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf("e")));
|
|
266
|
+
} catch (e) {
|
|
267
|
+
throwMalformedError(String(e));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
const skipBlank = () => {
|
|
272
|
+
while (index < length && " \n\r ".includes(jsonString[index])) index++;
|
|
273
|
+
};
|
|
274
|
+
return parseAny();
|
|
275
|
+
};
|
|
276
|
+
exports.parse = parseJSON;
|
|
277
|
+
})))();
|
|
278
|
+
const VALID_JSON_ESCAPES = /* @__PURE__ */ new Set([
|
|
279
|
+
"\"",
|
|
280
|
+
"\\",
|
|
281
|
+
"/",
|
|
282
|
+
"b",
|
|
283
|
+
"f",
|
|
284
|
+
"n",
|
|
285
|
+
"r",
|
|
286
|
+
"t",
|
|
287
|
+
"u"
|
|
288
|
+
]);
|
|
289
|
+
function isControlCharacter(char) {
|
|
290
|
+
const codePoint = char.codePointAt(0);
|
|
291
|
+
return codePoint !== void 0 && codePoint >= 0 && codePoint <= 31;
|
|
292
|
+
}
|
|
293
|
+
function escapeControlCharacter(char) {
|
|
294
|
+
switch (char) {
|
|
295
|
+
case "\b": return "\\b";
|
|
296
|
+
case "\f": return "\\f";
|
|
297
|
+
case "\n": return "\\n";
|
|
298
|
+
case "\r": return "\\r";
|
|
299
|
+
case " ": return "\\t";
|
|
300
|
+
default: return `\\u${char.codePointAt(0)?.toString(16).padStart(4, "0") ?? "0000"}`;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Repairs malformed JSON string literals by:
|
|
305
|
+
* - escaping raw control characters inside strings
|
|
306
|
+
* - doubling backslashes before invalid escape characters
|
|
307
|
+
*/
|
|
308
|
+
function repairJson(json) {
|
|
309
|
+
let repaired = "";
|
|
310
|
+
let inString = false;
|
|
311
|
+
for (let index = 0; index < json.length; index++) {
|
|
312
|
+
const char = json[index];
|
|
313
|
+
if (!inString) {
|
|
314
|
+
repaired += char;
|
|
315
|
+
if (char === "\"") inString = true;
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
if (char === "\"") {
|
|
319
|
+
repaired += char;
|
|
320
|
+
inString = false;
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (char === "\\") {
|
|
324
|
+
const nextChar = json[index + 1];
|
|
325
|
+
if (nextChar === void 0) {
|
|
326
|
+
repaired += "\\\\";
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
if (nextChar === "u") {
|
|
330
|
+
const unicodeDigits = json.slice(index + 2, index + 6);
|
|
331
|
+
if (/^[0-9a-fA-F]{4}$/.test(unicodeDigits)) {
|
|
332
|
+
repaired += `\\u${unicodeDigits}`;
|
|
333
|
+
index += 5;
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
if (VALID_JSON_ESCAPES.has(nextChar)) {
|
|
338
|
+
repaired += `\\${nextChar}`;
|
|
339
|
+
index += 1;
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
repaired += "\\\\";
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
repaired += isControlCharacter(char) ? escapeControlCharacter(char) : char;
|
|
346
|
+
}
|
|
347
|
+
return repaired;
|
|
348
|
+
}
|
|
349
|
+
function parseJsonWithRepair(json) {
|
|
350
|
+
try {
|
|
351
|
+
return JSON.parse(json);
|
|
352
|
+
} catch (error) {
|
|
353
|
+
const repairedJson = repairJson(json);
|
|
354
|
+
if (repairedJson !== json) return JSON.parse(repairedJson);
|
|
355
|
+
throw error;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Attempts to parse potentially incomplete JSON during streaming.
|
|
360
|
+
* Always returns a valid object, even if the JSON is incomplete.
|
|
361
|
+
*
|
|
362
|
+
* @param partialJson The partial JSON string from streaming
|
|
363
|
+
* @returns Parsed object or empty object if parsing fails
|
|
364
|
+
*/
|
|
365
|
+
function parseStreamingJson(partialJson) {
|
|
366
|
+
if (!partialJson || partialJson.trim() === "") return {};
|
|
367
|
+
try {
|
|
368
|
+
return parseJsonWithRepair(partialJson);
|
|
369
|
+
} catch {
|
|
370
|
+
try {
|
|
371
|
+
return (0, import_dist.parse)(partialJson) ?? {};
|
|
372
|
+
} catch {
|
|
373
|
+
try {
|
|
374
|
+
return (0, import_dist.parse)(repairJson(partialJson)) ?? {};
|
|
375
|
+
} catch {
|
|
376
|
+
return {};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
//#endregion
|
|
382
|
+
export { parseStreamingJson as n, repairJson as r, parseJsonWithRepair as t };
|
|
383
|
+
|
|
384
|
+
//# sourceMappingURL=json-parse-CFyFZSLJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-parse-CFyFZSLJ.mjs","names":["exports","partialParse"],"sources":["../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/options.js","../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/index.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/json-parse.js"],"sourcesContent":["\"use strict\";\n/**\n * Sometimes you don't allow every type to be partially parsed.\n * For example, you may not want a partial number because it may increase its size gradually before it's complete.\n * In this case, you can use the `Allow` object to control what types you allow to be partially parsed.\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.ALL = exports.COLLECTION = exports.ATOM = exports.SPECIAL = exports.INF = exports._INFINITY = exports.INFINITY = exports.NAN = exports.BOOL = exports.NULL = exports.OBJ = exports.ARR = exports.NUM = exports.STR = void 0;\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello \"`\n */\nexports.STR = 0b000000001;\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexports.NUM = 0b000000010;\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexports.ARR = 0b000000100;\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexports.OBJ = 0b000001000;\n/**\n * allow `nu` to be parsed as `null`\n */\nexports.NULL = 0b000010000;\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexports.BOOL = 0b000100000;\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexports.NAN = 0b001000000;\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexports.INFINITY = 0b010000000;\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexports._INFINITY = 0b100000000;\nexports.INF = exports.INFINITY | exports._INFINITY;\nexports.SPECIAL = exports.NULL | exports.BOOL | exports.INF | exports.NAN;\nexports.ATOM = exports.STR | exports.NUM | exports.SPECIAL;\nexports.COLLECTION = exports.ARR | exports.OBJ;\nexports.ALL = exports.ATOM | exports.COLLECTION;\n/**\n * Control what types you allow to be partially parsed.\n * The default is to allow all types to be partially parsed, which in most casees is the best option.\n * @example\n * If you don't want to allow partial objects, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, Allow.ARR); // [ { a: 1, b: 2 } ]\n * ```\n * Or you can use `~` to disallow a type:\n * ```ts\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, ~Allow.OBJ); // [ { a: 1, b: 2 } ]\n * ```\n * @example\n * If you don't want to allow partial strings, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[\"complete string\", \"incompl`, ~Allow.STR); // [ 'complete string' ]\n * ```\n */\nexports.Allow = { STR: exports.STR, NUM: exports.NUM, ARR: exports.ARR, OBJ: exports.OBJ, NULL: exports.NULL, BOOL: exports.BOOL, NAN: exports.NAN, INFINITY: exports.INFINITY, _INFINITY: exports._INFINITY, INF: exports.INF, SPECIAL: exports.SPECIAL, ATOM: exports.ATOM, COLLECTION: exports.COLLECTION, ALL: exports.ALL };\nexports.default = exports.Allow;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.MalformedJSON = exports.PartialJSON = exports.parseJSON = exports.parse = void 0;\nconst options_1 = require(\"./options\");\nObject.defineProperty(exports, \"Allow\", { enumerable: true, get: function () { return options_1.Allow; } });\n__exportStar(require(\"./options\"), exports);\nclass PartialJSON extends Error {\n}\nexports.PartialJSON = PartialJSON;\nclass MalformedJSON extends Error {\n}\nexports.MalformedJSON = MalformedJSON;\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = options_1.Allow.ALL) {\n if (typeof jsonString !== \"string\") {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nexports.parseJSON = parseJSON;\n;\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON(\"Unexpected end of input\");\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === \"{\")\n return parseObj();\n if (jsonString[index] === \"[\")\n return parseArr();\n if (jsonString.substring(index, index + 4) === \"null\" || (options_1.Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === \"true\" || (options_1.Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === \"false\" || (options_1.Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === \"Infinity\" || (options_1.Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === \"-Infinity\" || (options_1.Allow._INFINITY & allow && 1 < length - index && length - index < 9 && \"-Infinity\".startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === \"NaN\" || (options_1.Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === \"\\\\\"))) {\n escape = jsonString[index] === \"\\\\\" ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (options_1.Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\")) + '\"');\n }\n }\n markPartialJSON(\"Unterminated string literal\");\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== \"}\") {\n skipBlank();\n if (index >= length && options_1.Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n obj[key] = value;\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === \",\")\n index++; // skip comma\n }\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== \"]\") {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === \",\") {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (options_1.Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === \"-\")\n throwMalformedError(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (options_1.Allow.NUM & allow)\n try {\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) { }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === \"-\")\n index++;\n while (jsonString[index] && \",]}\".indexOf(jsonString[index]) === -1)\n index++;\n if (index == length && !(options_1.Allow.NUM & allow))\n markPartialJSON(\"Unterminated number literal\");\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === \"-\")\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\nconst parse = parseJSON;\nexports.parse = parse;\n","import { parse as partialParse } from \"partial-json\";\nconst VALID_JSON_ESCAPES = new Set(['\"', \"\\\\\", \"/\", \"b\", \"f\", \"n\", \"r\", \"t\", \"u\"]);\nfunction isControlCharacter(char) {\n const codePoint = char.codePointAt(0);\n return codePoint !== undefined && codePoint >= 0x00 && codePoint <= 0x1f;\n}\nfunction escapeControlCharacter(char) {\n switch (char) {\n case \"\\b\":\n return \"\\\\b\";\n case \"\\f\":\n return \"\\\\f\";\n case \"\\n\":\n return \"\\\\n\";\n case \"\\r\":\n return \"\\\\r\";\n case \"\\t\":\n return \"\\\\t\";\n default:\n return `\\\\u${char.codePointAt(0)?.toString(16).padStart(4, \"0\") ?? \"0000\"}`;\n }\n}\n/**\n * Repairs malformed JSON string literals by:\n * - escaping raw control characters inside strings\n * - doubling backslashes before invalid escape characters\n */\nexport function repairJson(json) {\n let repaired = \"\";\n let inString = false;\n for (let index = 0; index < json.length; index++) {\n const char = json[index];\n if (!inString) {\n repaired += char;\n if (char === '\"') {\n inString = true;\n }\n continue;\n }\n if (char === '\"') {\n repaired += char;\n inString = false;\n continue;\n }\n if (char === \"\\\\\") {\n const nextChar = json[index + 1];\n if (nextChar === undefined) {\n repaired += \"\\\\\\\\\";\n continue;\n }\n if (nextChar === \"u\") {\n const unicodeDigits = json.slice(index + 2, index + 6);\n if (/^[0-9a-fA-F]{4}$/.test(unicodeDigits)) {\n repaired += `\\\\u${unicodeDigits}`;\n index += 5;\n continue;\n }\n }\n if (VALID_JSON_ESCAPES.has(nextChar)) {\n repaired += `\\\\${nextChar}`;\n index += 1;\n continue;\n }\n repaired += \"\\\\\\\\\";\n continue;\n }\n repaired += isControlCharacter(char) ? escapeControlCharacter(char) : char;\n }\n return repaired;\n}\nexport function parseJsonWithRepair(json) {\n try {\n return JSON.parse(json);\n }\n catch (error) {\n const repairedJson = repairJson(json);\n if (repairedJson !== json) {\n return JSON.parse(repairedJson);\n }\n throw error;\n }\n}\n/**\n * Attempts to parse potentially incomplete JSON during streaming.\n * Always returns a valid object, even if the JSON is incomplete.\n *\n * @param partialJson The partial JSON string from streaming\n * @returns Parsed object or empty object if parsing fails\n */\nexport function parseStreamingJson(partialJson) {\n if (!partialJson || partialJson.trim() === \"\") {\n return {};\n }\n try {\n return parseJsonWithRepair(partialJson);\n }\n catch {\n try {\n const result = partialParse(partialJson);\n return (result ?? {});\n }\n catch {\n try {\n const result = partialParse(repairJson(partialJson));\n return (result ?? {});\n }\n catch {\n return {};\n }\n }\n }\n}\n//# sourceMappingURL=json-parse.js.map"],"x_google_ignoreList":[0,1,2],"mappings":";;;;;;;;;;CAOA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,QAAQ,QAAQ,MAAM,QAAQ,aAAa,QAAQ,OAAO,QAAQ,UAAU,QAAQ,MAAM,QAAQ,YAAY,QAAQ,WAAW,QAAQ,MAAM,QAAQ,OAAO,QAAQ,OAAO,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK;;;;CAIlP,QAAQ,MAAM;;;;CAId,QAAQ,MAAM;;;;CAId,QAAQ,MAAM;;;;CAId,QAAQ,MAAM;;;;CAId,QAAQ,OAAO;;;;CAIf,QAAQ,OAAO;;;;CAIf,QAAQ,MAAM;;;;CAId,QAAQ,WAAW;;;;CAInB,QAAQ,YAAY;CACpB,QAAQ,MAAM,QAAQ,WAAW,QAAQ;CACzC,QAAQ,UAAU,QAAQ,OAAO,QAAQ,OAAO,QAAQ,MAAM,QAAQ;CACtE,QAAQ,OAAO,QAAQ,MAAM,QAAQ,MAAM,QAAQ;CACnD,QAAQ,aAAa,QAAQ,MAAM,QAAQ;CAC3C,QAAQ,MAAM,QAAQ,OAAO,QAAQ;;;;;;;;;;;;;;;;;;;;;CAqBrC,QAAQ,QAAQ;EAAE,KAAK,QAAQ;EAAK,KAAK,QAAQ;EAAK,KAAK,QAAQ;EAAK,KAAK,QAAQ;EAAK,MAAM,QAAQ;EAAM,MAAM,QAAQ;EAAM,KAAK,QAAQ;EAAK,UAAU,QAAQ;EAAU,WAAW,QAAQ;EAAW,KAAK,QAAQ;EAAK,SAAS,QAAQ;EAAS,MAAM,QAAQ;EAAM,YAAY,QAAQ;EAAY,KAAK,QAAQ;CAAI;CAC/T,QAAQ,UAAU,QAAQ;;;;;CCtE1B,IAAI,kBAAA,WAAA,QAAgC,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;EAC5F,IAAI,OAAO,KAAA,GAAW,KAAK;EAC3B,IAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;EAC/C,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAClE,OAAO;GAAE,YAAY;GAAM,KAAK,WAAW;IAAE,OAAO,EAAE;GAAI;EAAE;EAE9D,OAAO,eAAe,GAAG,IAAI,IAAI;CACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;EACxB,IAAI,OAAO,KAAA,GAAW,KAAK;EAC3B,EAAE,MAAM,EAAE;CACd;CACA,IAAI,eAAA,WAAA,QAA6B,gBAAiB,SAAS,GAAG,WAAS;EACnE,KAAK,IAAI,KAAK,GAAG,IAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,WAAS,CAAC,GAAG,gBAAgBA,WAAS,GAAG,CAAC;CAC5H;CACA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,QAAQ,QAAQ,gBAAgB,QAAQ,cAAc,QAAQ,YAAY,QAAQ,QAAQ,KAAK;CACvG,MAAM,YAAA,gBAAA;CACN,OAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,UAAU;EAAO;CAAE,CAAC;CAC1G,aAAA,gBAAA,GAAmC,OAAO;CAC1C,IAAM,cAAN,cAA0B,MAAM,CAChC;CACA,QAAQ,cAAc;CACtB,IAAM,gBAAN,cAA4B,MAAM,CAClC;CACA,QAAQ,gBAAgB;;;;;;;;;CASxB,SAAS,UAAU,YAAY,eAAe,UAAU,MAAM,KAAK;EAC/D,IAAI,OAAO,eAAe,UACtB,MAAM,IAAI,UAAU,sBAAsB,OAAO,YAAY;EAEjE,IAAI,CAAC,WAAW,KAAK,GACjB,MAAM,IAAI,MAAM,GAAG,WAAW,UAAU;EAE5C,OAAO,WAAW,WAAW,KAAK,GAAG,YAAY;CACrD;CACA,QAAQ,YAAY;CAEpB,MAAM,cAAc,YAAY,UAAU;EACtC,MAAM,SAAS,WAAW;EAC1B,IAAI,QAAQ;EACZ,MAAM,mBAAmB,QAAQ;GAC7B,MAAM,IAAI,YAAY,GAAG,IAAI,eAAe,OAAO;EACvD;EACA,MAAM,uBAAuB,QAAQ;GACjC,MAAM,IAAI,cAAc,GAAG,IAAI,eAAe,OAAO;EACzD;EACA,MAAM,iBAAiB;GACnB,UAAU;GACV,IAAI,SAAS,QACT,gBAAgB,yBAAyB;GAC7C,IAAI,WAAW,WAAW,MACtB,OAAO,SAAS;GACpB,IAAI,WAAW,WAAW,KACtB,OAAO,SAAS;GACpB,IAAI,WAAW,WAAW,KACtB,OAAO,SAAS;GACpB,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,UAAW,UAAU,MAAM,OAAO,SAAS,SAAS,QAAQ,KAAK,OAAO,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IAC7J,SAAS;IACT,OAAO;GACX;GACA,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,UAAW,UAAU,MAAM,OAAO,SAAS,SAAS,QAAQ,KAAK,OAAO,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IAC7J,SAAS;IACT,OAAO;GACX;GACA,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,WAAY,UAAU,MAAM,OAAO,SAAS,SAAS,QAAQ,KAAK,QAAQ,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IAC/J,SAAS;IACT,OAAO;GACX;GACA,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,cAAe,UAAU,MAAM,WAAW,SAAS,SAAS,QAAQ,KAAK,WAAW,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IACzK,SAAS;IACT,OAAO;GACX;GACA,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,eAAgB,UAAU,MAAM,YAAY,SAAS,IAAI,SAAS,SAAS,SAAS,QAAQ,KAAK,YAAY,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IAClM,SAAS;IACT,OAAO;GACX;GACA,IAAI,WAAW,UAAU,OAAO,QAAQ,CAAC,MAAM,SAAU,UAAU,MAAM,MAAM,SAAS,SAAS,QAAQ,KAAK,MAAM,WAAW,WAAW,UAAU,KAAK,CAAC,GAAI;IAC1J,SAAS;IACT,OAAO;GACX;GACA,OAAO,SAAS;EACpB;EACA,MAAM,iBAAiB;GACnB,MAAM,QAAQ;GACd,IAAI,SAAS;GACb;GACA,OAAO,QAAQ,WAAW,WAAW,WAAW,QAAQ,UAAU,WAAW,QAAQ,OAAO,OAAQ;IAChG,SAAS,WAAW,WAAW,OAAO,CAAC,SAAS;IAChD;GACJ;GACA,IAAI,WAAW,OAAO,KAAK,KAAK,MAC5B,IAAI;IACA,OAAO,KAAK,MAAM,WAAW,UAAU,OAAO,EAAE,QAAQ,OAAO,MAAM,CAAC,CAAC;GAC3E,SACO,GAAG;IACN,oBAAoB,OAAO,CAAC,CAAC;GACjC;QAEC,IAAI,UAAU,MAAM,MAAM,OAC3B,IAAI;IACA,OAAO,KAAK,MAAM,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,CAAC,IAAI,IAAG;GAC/E,SACO,GAAG;IAEN,OAAO,KAAK,MAAM,WAAW,UAAU,OAAO,WAAW,YAAY,IAAI,CAAC,IAAI,IAAG;GACrF;GAEJ,gBAAgB,6BAA6B;EACjD;EACA,MAAM,iBAAiB;GACnB;GACA,UAAU;GACV,MAAM,MAAM,CAAC;GACb,IAAI;IACA,OAAO,WAAW,WAAW,KAAK;KAC9B,UAAU;KACV,IAAI,SAAS,UAAU,UAAU,MAAM,MAAM,OACzC,OAAO;KACX,MAAM,MAAM,SAAS;KACrB,UAAU;KACV;KACA,IAAI;MAEA,IAAI,OADU,SACC;KACnB,SACO,GAAG;MACN,IAAI,UAAU,MAAM,MAAM,OACtB,OAAO;WAEP,MAAM;KACd;KACA,UAAU;KACV,IAAI,WAAW,WAAW,KACtB;IACR;GACJ,SACO,GAAG;IACN,IAAI,UAAU,MAAM,MAAM,OACtB,OAAO;SAEP,gBAAgB,+BAA+B;GACvD;GACA;GACA,OAAO;EACX;EACA,MAAM,iBAAiB;GACnB;GACA,MAAM,MAAM,CAAC;GACb,IAAI;IACA,OAAO,WAAW,WAAW,KAAK;KAC9B,IAAI,KAAK,SAAS,CAAC;KACnB,UAAU;KACV,IAAI,WAAW,WAAW,KACtB;IAER;GACJ,SACO,GAAG;IACN,IAAI,UAAU,MAAM,MAAM,OACtB,OAAO;IAEX,gBAAgB,8BAA8B;GAClD;GACA;GACA,OAAO;EACX;EACA,MAAM,iBAAiB;GACnB,IAAI,UAAU,GAAG;IACb,IAAI,eAAe,KACf,oBAAoB,sBAAsB;IAC9C,IAAI;KACA,OAAO,KAAK,MAAM,UAAU;IAChC,SACO,GAAG;KACN,IAAI,UAAU,MAAM,MAAM,OACtB,IAAI;MACA,OAAO,KAAK,MAAM,WAAW,UAAU,GAAG,WAAW,YAAY,GAAG,CAAC,CAAC;KAC1E,SACO,GAAG,CAAE;KAChB,oBAAoB,OAAO,CAAC,CAAC;IACjC;GACJ;GACA,MAAM,QAAQ;GACd,IAAI,WAAW,WAAW,KACtB;GACJ,OAAO,WAAW,UAAU,MAAM,QAAQ,WAAW,MAAM,MAAM,IAC7D;GACJ,IAAI,SAAS,UAAU,EAAE,UAAU,MAAM,MAAM,QAC3C,gBAAgB,6BAA6B;GACjD,IAAI;IACA,OAAO,KAAK,MAAM,WAAW,UAAU,OAAO,KAAK,CAAC;GACxD,SACO,GAAG;IACN,IAAI,WAAW,UAAU,OAAO,KAAK,MAAM,KACvC,gBAAgB,sBAAsB;IAC1C,IAAI;KACA,OAAO,KAAK,MAAM,WAAW,UAAU,OAAO,WAAW,YAAY,GAAG,CAAC,CAAC;IAC9E,SACO,GAAG;KACN,oBAAoB,OAAO,CAAC,CAAC;IACjC;GACJ;EACJ;EACA,MAAM,kBAAkB;GACpB,OAAO,QAAQ,UAAU,SAAU,SAAS,WAAW,MAAM,GACzD;EAER;EACA,OAAO,SAAS;CACpB;CAEA,QAAQ,QAAQ;;AC1NhB,MAAM,qCAAqB,IAAI,IAAI;CAAC;CAAK;CAAM;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;AAAG,CAAC;AACjF,SAAS,mBAAmB,MAAM;CAC9B,MAAM,YAAY,KAAK,YAAY,CAAC;CACpC,OAAO,cAAc,KAAA,KAAa,aAAa,KAAQ,aAAa;AACxE;AACA,SAAS,uBAAuB,MAAM;CAClC,QAAQ,MAAR;EACI,KAAK,MACD,OAAO;EACX,KAAK,MACD,OAAO;EACX,KAAK,MACD,OAAO;EACX,KAAK,MACD,OAAO;EACX,KAAK,KACD,OAAO;EACX,SACI,OAAO,MAAM,KAAK,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,KAAK;CAC3E;AACJ;;;;;;AAMA,SAAgB,WAAW,MAAM;CAC7B,IAAI,WAAW;CACf,IAAI,WAAW;CACf,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS;EAC9C,MAAM,OAAO,KAAK;EAClB,IAAI,CAAC,UAAU;GACX,YAAY;GACZ,IAAI,SAAS,MACT,WAAW;GAEf;EACJ;EACA,IAAI,SAAS,MAAK;GACd,YAAY;GACZ,WAAW;GACX;EACJ;EACA,IAAI,SAAS,MAAM;GACf,MAAM,WAAW,KAAK,QAAQ;GAC9B,IAAI,aAAa,KAAA,GAAW;IACxB,YAAY;IACZ;GACJ;GACA,IAAI,aAAa,KAAK;IAClB,MAAM,gBAAgB,KAAK,MAAM,QAAQ,GAAG,QAAQ,CAAC;IACrD,IAAI,mBAAmB,KAAK,aAAa,GAAG;KACxC,YAAY,MAAM;KAClB,SAAS;KACT;IACJ;GACJ;GACA,IAAI,mBAAmB,IAAI,QAAQ,GAAG;IAClC,YAAY,KAAK;IACjB,SAAS;IACT;GACJ;GACA,YAAY;GACZ;EACJ;EACA,YAAY,mBAAmB,IAAI,IAAI,uBAAuB,IAAI,IAAI;CAC1E;CACA,OAAO;AACX;AACA,SAAgB,oBAAoB,MAAM;CACtC,IAAI;EACA,OAAO,KAAK,MAAM,IAAI;CAC1B,SACO,OAAO;EACV,MAAM,eAAe,WAAW,IAAI;EACpC,IAAI,iBAAiB,MACjB,OAAO,KAAK,MAAM,YAAY;EAElC,MAAM;CACV;AACJ;;;;;;;;AAQA,SAAgB,mBAAmB,aAAa;CAC5C,IAAI,CAAC,eAAe,YAAY,KAAK,MAAM,IACvC,OAAO,CAAC;CAEZ,IAAI;EACA,OAAO,oBAAoB,WAAW;CAC1C,QACM;EACF,IAAI;GAEA,QAAA,GADeC,YAAAA,MAAAA,CAAa,WACf,KAAK,CAAC;EACvB,QACM;GACF,IAAI;IAEA,QAAA,GADeA,YAAAA,MAAAA,CAAa,WAAW,WAAW,CACrC,KAAK,CAAC;GACvB,QACM;IACF,OAAO,CAAC;GACZ;EACJ;CACJ;AACJ"}
|