@opencode-ai/cli-linux-x64
Advanced tools
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n constructor({\n value,\n cause,\n context\n }) {\n let contextPrefix = \"Type validation failed\";\n if (context == null ? void 0 : context.field) {\n contextPrefix += ` for ${context.field}`;\n }\n if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {\n contextPrefix += \" (\";\n const parts = [];\n if (context.entityName) {\n parts.push(context.entityName);\n }\n if (context.entityId) {\n parts.push(`id: \"${context.entityId}\"`);\n }\n contextPrefix += parts.join(\", \");\n contextPrefix += \")\";\n }\n super({\n name: name12,\n message: `${contextPrefix}: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n this.context = context;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value and context, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n context\n }) {\n var _a15, _b15, _c;\n if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a15 = cause.context) == null ? void 0 : _a15.field) === (context == null ? void 0 : context.field) && ((_b15 = cause.context) == null ? void 0 : _b15.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {\n return cause;\n }\n return new _TypeValidationError({ value, cause, context });\n }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BEF7A0348A04C59564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "B103D978027F3DB364756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "CEE87D9CB8EA10B964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js", "../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js"], | ||
| "sourcesContent": [ | ||
| "import { getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { resolveProcessCredentials } from \"./resolveProcessCredentials\";\nexport const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-process - fromProcess\");\n const profiles = await parseKnownFiles(init);\n return resolveProcessCredentials(getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n }), profiles, init.logger);\n};\n", | ||
| "import { CredentialsProviderError, externalDataInterceptor } from \"@smithy/core/config\";\nimport { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { getValidatedProcessCredentials } from \"./getValidatedProcessCredentials\";\nexport const resolveProcessCredentials = async (profileName, profiles, logger) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== undefined) {\n const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n }\n catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data, profiles);\n }\n catch (error) {\n throw new CredentialsProviderError(error.message, { logger });\n }\n }\n else {\n throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });\n }\n }\n else {\n throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {\n logger,\n });\n }\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const getValidatedProcessCredentials = (profileName, data, profiles) => {\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n let accountId = data.AccountId;\n if (!accountId && profiles?.[profileName]?.aws_account_id) {\n accountId = profiles[profileName].aws_account_id;\n }\n const credentials = {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...(data.SessionToken && { sessionToken: data.SessionToken }),\n ...(data.Expiration && { expiration: new Date(data.Expiration) }),\n ...(data.CredentialScope && { credentialScope: data.CredentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_PROCESS\", \"w\");\n return credentials;\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eCAA,eACA,eAAS,sBACT,oBAAS,aCFT,eACa,EAAiC,CAAC,EAAa,EAAM,IAAa,CAC3E,GAAI,EAAK,UAAY,EACjB,MAAM,MAAM,WAAW,gDAA0D,EAErF,GAAI,EAAK,cAAgB,QAAa,EAAK,kBAAoB,OAC3D,MAAM,MAAM,WAAW,oDAA8D,EAEzF,GAAI,EAAK,WAAY,CACjB,IAAM,EAAc,IAAI,KAExB,GADmB,IAAI,KAAK,EAAK,UAAU,EAC1B,EACb,MAAM,MAAM,WAAW,oDAA8D,EAG7F,IAAI,EAAY,EAAK,UACrB,GAAI,CAAC,GAAa,IAAW,IAAc,eACvC,EAAY,EAAS,GAAa,eAEtC,IAAM,EAAc,CAChB,YAAa,EAAK,YAClB,gBAAiB,EAAK,mBAClB,EAAK,cAAgB,CAAE,aAAc,EAAK,YAAa,KACvD,EAAK,YAAc,CAAE,WAAY,IAAI,KAAK,EAAK,UAAU,CAAE,KAC3D,EAAK,iBAAmB,CAAE,gBAAiB,EAAK,eAAgB,KAChE,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,sBAAuB,GAAG,EACrD,GDxBJ,IAAM,EAA4B,MAAO,EAAa,EAAU,IAAW,CAC9E,IAAM,EAAU,EAAS,GACzB,GAAI,EAAS,GAAc,CACvB,IAAM,EAAoB,EAAQ,mBAClC,GAAI,IAAsB,OAAW,CACjC,IAAM,EAAc,EAAU,2BAAyB,iBAAiB,EAAE,MAAQ,CAAI,EACtF,GAAI,CACA,IAAQ,UAAW,MAAM,EAAY,CAAiB,EAClD,EACJ,GAAI,CACA,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAEnC,KAAM,CACF,MAAM,MAAM,WAAW,6CAAuD,EAElF,OAAO,EAA+B,EAAa,EAAM,CAAQ,EAErE,MAAO,EAAO,CACV,MAAM,IAAI,2BAAyB,EAAM,QAAS,CAAE,QAAO,CAAC,GAIhE,WAAM,IAAI,2BAAyB,WAAW,wCAAmD,CAAE,QAAO,CAAC,EAI/G,WAAM,IAAI,2BAAyB,WAAW,mDAA8D,CACxG,QACJ,CAAC,GD9BF,IAAM,EAAc,CAAC,EAAO,CAAC,IAAM,OAAS,sBAAuB,CAAC,IAAM,CAC7E,EAAK,QAAQ,MAAM,oDAAoD,EACvE,IAAM,EAAW,MAAM,kBAAgB,CAAI,EAC3C,OAAO,EAA0B,iBAAe,CAC5C,QAAS,EAAK,SAAW,GAAoB,OACjD,CAAC,EAAG,EAAU,EAAK,MAAM", | ||
| "debugId": "D35B68D4518FB3F564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/services/standalone.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { CrossSpawnSpawner } from \"@opencode-ai/util/cross-spawn-spawner\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Deferred, Effect, Schema, Stream } from \"effect\"\nimport { ChildProcess, ChildProcessSpawner } from \"effect/unstable/process\"\nimport { randomBytes } from \"node:crypto\"\nimport { selfCommand } from \"../util/process\"\n\nconst Ready = Schema.Struct({ url: Schema.String })\nconst decodeReady = Schema.decodeUnknownPromise(Schema.fromJsonString(Ready))\n\ntype Options = {\n readonly command?: ReadonlyArray<string>\n}\n\nconst startupDirectory = process.cwd()\n\nfunction command(password: string, options: Options) {\n const [executable, ...args] = options.command ?? [...selfCommand(), \"serve\"]\n if (!executable) throw new Error(\"Failed to resolve standalone server command\")\n return ChildProcess.make(executable, [...args, \"--stdio\", \"--port\", \"0\"], {\n cwd: startupDirectory,\n // Explicit entry wins over anything inherited, so a user-exported\n // OPENCODE_PASSWORD cannot shadow the child's lease credential.\n env: { OPENCODE_PASSWORD: password },\n extendEnv: true,\n // The server treats EOF on this pipe as the end of its ownership lease.\n // The OS closes it even when the TUI is killed before Effect finalizers run.\n stdin: \"pipe\",\n stderr: process.env.OPENCODE_PRINT_LOGS === \"1\" ? \"inherit\" : \"ignore\",\n killSignal: \"SIGTERM\",\n forceKillAfter: \"3 seconds\",\n })\n}\n\nconst makeEndpoint = Effect.fn(\"cli.standalone.endpoint\")(\n function* (options: Options) {\n const password = randomBytes(32).toString(\"base64url\")\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner\n const proc = yield* spawner.spawn(command(password, options))\n const readyLine = yield* Deferred.make<string, Error>()\n // Keep draining stdout after readiness so later server writes cannot hit EPIPE.\n yield* proc.stdout.pipe(\n Stream.decodeText(),\n Stream.splitLines,\n Stream.runForEach((line) => Deferred.succeed(readyLine, line)),\n Effect.ensuring(Deferred.fail(readyLine, new Error(\"Standalone server exited before reporting readiness\"))),\n Effect.forkScoped,\n )\n const output = yield* Deferred.await(readyLine)\n const ready = yield* Effect.tryPromise(() => decodeReady(output))\n return {\n url: ready.url,\n auth: { type: \"basic\" as const, username: \"opencode\", password },\n pid: proc.pid,\n } satisfies Endpoint & { readonly pid: number }\n },\n Effect.provide(LayerNode.compile(CrossSpawnSpawner.node)),\n)\n\nexport function start(options: Options = {}) {\n return makeEndpoint(options)\n}\n\nexport * as Standalone from \"./standalone\"\n" | ||
| ], | ||
| "mappings": ";6SAKA,sBAAS,eAGT,IAAM,EAAQ,EAAO,OAAO,CAAE,IAAK,EAAO,MAAO,CAAC,EAC5C,EAAc,EAAO,qBAAqB,EAAO,eAAe,CAAK,CAAC,EAMtE,EAAmB,QAAQ,IAAI,EAErC,SAAS,CAAO,CAAC,EAAkB,EAAkB,CACnD,IAAO,KAAe,GAAQ,EAAQ,SAAW,CAAC,GAAG,EAAY,EAAG,OAAO,EAC3E,GAAI,CAAC,EAAY,MAAU,MAAM,6CAA6C,EAC9E,OAAO,EAAa,KAAK,EAAY,CAAC,GAAG,EAAM,UAAW,SAAU,GAAG,EAAG,CACxE,IAAK,EAGL,IAAK,CAAE,kBAAmB,CAAS,EACnC,UAAW,GAGX,MAAO,OACP,OAAQ,QAAQ,IAAI,sBAAwB,IAAM,UAAY,SAC9D,WAAY,UACZ,eAAgB,WAClB,CAAC,EAGH,IAAM,EAAe,EAAO,GAAG,yBAAyB,EACtD,SAAU,CAAC,EAAkB,CAC3B,IAAM,EAAW,EAAY,EAAE,EAAE,SAAS,WAAW,EAE/C,EAAO,OADG,MAAO,EAAoB,qBACf,MAAM,EAAQ,EAAU,CAAO,CAAC,EACtD,EAAY,MAAO,EAAS,KAAoB,EAEtD,MAAO,EAAK,OAAO,KACjB,EAAO,WAAW,EAClB,EAAO,WACP,EAAO,WAAW,CAAC,IAAS,EAAS,QAAQ,EAAW,CAAI,CAAC,EAC7D,EAAO,SAAS,EAAS,KAAK,EAAe,MAAM,qDAAqD,CAAC,CAAC,EAC1G,EAAO,UACT,EACA,IAAM,EAAS,MAAO,EAAS,MAAM,CAAS,EAE9C,MAAO,CACL,KAFY,MAAO,EAAO,WAAW,IAAM,EAAY,CAAM,CAAC,GAEnD,IACX,KAAM,CAAE,KAAM,QAAkB,SAAU,WAAY,UAAS,EAC/D,IAAK,EAAK,GACZ,GAEF,EAAO,QAAQ,EAAU,QAAQ,EAAkB,IAAI,CAAC,CAC1D,EAEO,SAAS,CAAK,CAAC,EAAmB,CAAC,EAAG,CAC3C,OAAO,EAAa,CAAO", | ||
| "debugId": "C1443C8D839E25BD64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-login@3.972.76/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-login@3.972.76/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { LoginCredentialsFetcher } from \"./LoginCredentialsFetcher\";\nexport const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => {\n init?.logger?.debug?.(\"@aws-sdk/credential-providers - fromLoginCredentials\");\n const profiles = await parseKnownFiles(init || {});\n const profileName = getProfileName({\n profile: init?.profile ?? callerClientConfig?.profile,\n });\n const profile = profiles[profileName];\n if (!profile?.login_session) {\n throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, {\n tryNextLink: true,\n logger: init?.logger,\n });\n }\n const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig);\n const credentials = await fetcher.loadCredentials();\n return setCredentialFeature(credentials, \"CREDENTIALS_LOGIN\", \"AD\");\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nimport { createHash, createPrivateKey, createPublicKey, sign } from \"node:crypto\";\nimport { promises as fs } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nexport class LoginCredentialsFetcher {\n profileData;\n init;\n callerClientConfig;\n static REFRESH_THRESHOLD = 5 * 60 * 1000;\n constructor(profileData, init, callerClientConfig) {\n this.profileData = profileData;\n this.init = init;\n this.callerClientConfig = callerClientConfig;\n }\n async loadCredentials() {\n const token = await this.loadToken();\n if (!token) {\n throw new CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger });\n }\n const accessToken = token.accessToken;\n const now = Date.now();\n const expiryTime = new Date(accessToken.expiresAt).getTime();\n const timeUntilExpiry = expiryTime - now;\n if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) {\n return this.refresh(token);\n }\n return this.toCredentials(token.accessToken);\n }\n get logger() {\n return this.init?.logger;\n }\n get loginSession() {\n return this.profileData.login_session;\n }\n toCredentials(token) {\n return {\n accessKeyId: token.accessKeyId,\n secretAccessKey: token.secretAccessKey,\n sessionToken: token.sessionToken,\n accountId: token.accountId,\n expiration: new Date(token.expiresAt),\n };\n }\n async refresh(token) {\n const diskToken = await this.loadToken().catch(() => token);\n const now = Date.now();\n const diskExpiry = new Date(diskToken.accessToken.expiresAt).getTime();\n const tokenExpiry = new Date(token.accessToken.expiresAt).getTime();\n const freshToken = diskExpiry <= now && tokenExpiry > now ? token : diskToken;\n const freshExpiry = new Date(freshToken.accessToken.expiresAt).getTime();\n if (freshExpiry - Date.now() > LoginCredentialsFetcher.REFRESH_THRESHOLD) {\n return this.toCredentials(freshToken.accessToken);\n }\n const { SigninClient, CreateOAuth2TokenCommand } = await import(\"@aws-sdk/nested-clients/signin\");\n const { logger, userAgentAppId } = this.callerClientConfig ?? {};\n const isH2 = (requestHandler) => {\n return requestHandler?.metadata?.handlerProtocol === \"h2\";\n };\n const requestHandler = isH2(this.callerClientConfig?.requestHandler)\n ? undefined\n : this.callerClientConfig?.requestHandler;\n const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION;\n const client = new SigninClient({\n credentials: {\n accessKeyId: \"\",\n secretAccessKey: \"\",\n },\n region,\n requestHandler,\n logger,\n userAgentAppId,\n ...this.init?.clientConfig,\n });\n this.createDPoPInterceptor(client.middlewareStack);\n const commandInput = {\n tokenInput: {\n clientId: freshToken.clientId,\n refreshToken: freshToken.refreshToken,\n grantType: \"refresh_token\",\n },\n };\n try {\n const response = await client.send(new CreateOAuth2TokenCommand(commandInput));\n const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {};\n const { refreshToken, expiresIn } = response.tokenOutput ?? {};\n if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) {\n throw new CredentialsProviderError(\"Token refresh response missing required fields\", {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n const expiresInMs = (expiresIn ?? 900) * 1000;\n const expiration = new Date(Date.now() + expiresInMs);\n const updatedToken = {\n ...freshToken,\n accessToken: {\n ...freshToken.accessToken,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiresAt: expiration.toISOString(),\n },\n refreshToken,\n };\n await this.saveToken(updatedToken);\n return this.toCredentials(updatedToken.accessToken);\n }\n catch (error) {\n if (error.name === \"AccessDeniedException\") {\n const errorType = error.error;\n let message;\n switch (errorType) {\n case \"TOKEN_EXPIRED\":\n message = \"Your session has expired. Please reauthenticate.\";\n break;\n case \"USER_CREDENTIALS_CHANGED\":\n message =\n \"Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.\";\n break;\n case \"INSUFFICIENT_PERMISSIONS\":\n message =\n \"Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.\";\n break;\n default:\n message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \\`aws login\\``;\n }\n throw new CredentialsProviderError(message, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n const tokenExpiry = new Date(freshToken.accessToken.expiresAt).getTime();\n if (tokenExpiry > Date.now()) {\n this.logger?.warn?.(`Failed to refresh token: ${String(error)}. Using existing token until expiry.`);\n return this.toCredentials(freshToken.accessToken);\n }\n throw new CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger });\n }\n }\n async loadToken() {\n const tokenFilePath = this.getTokenFilePath();\n try {\n const tokenData = await fs.readFile(tokenFilePath, \"utf8\");\n const token = JSON.parse(tokenData);\n const missingFields = [\"accessToken\", \"clientId\", \"refreshToken\", \"dpopKey\"].filter((k) => !token[k]);\n if (!token.accessToken?.accountId) {\n missingFields.push(\"accountId\");\n }\n if (missingFields.length > 0) {\n throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(\", \")}`, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n return token;\n }\n catch (error) {\n throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n }\n async saveToken(token) {\n const tokenFilePath = this.getTokenFilePath();\n const directory = dirname(tokenFilePath);\n try {\n await fs.mkdir(directory, { recursive: true });\n }\n catch (error) {\n }\n await fs.writeFile(tokenFilePath, JSON.stringify(token, null, 2), \"utf8\");\n }\n getTokenFilePath() {\n const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), \".aws\", \"login\", \"cache\");\n const loginSessionBytes = Buffer.from(this.loginSession, \"utf8\");\n const loginSessionSha256 = createHash(\"sha256\").update(loginSessionBytes).digest(\"hex\");\n return join(directory, `${loginSessionSha256}.json`);\n }\n derToRawSignature(derSignature) {\n let offset = 2;\n if (derSignature[offset] !== 0x02) {\n throw new Error(\"Invalid DER signature\");\n }\n offset++;\n const rLength = derSignature[offset++];\n let r = derSignature.subarray(offset, offset + rLength);\n offset += rLength;\n if (derSignature[offset] !== 0x02) {\n throw new Error(\"Invalid DER signature\");\n }\n offset++;\n const sLength = derSignature[offset++];\n let s = derSignature.subarray(offset, offset + sLength);\n r = r[0] === 0x00 ? r.subarray(1) : r;\n s = s[0] === 0x00 ? s.subarray(1) : s;\n const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]);\n const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]);\n return Buffer.concat([rPadded, sPadded]);\n }\n createDPoPInterceptor(middlewareStack) {\n middlewareStack.add((next) => async (args) => {\n if (HttpRequest.isInstance(args.request)) {\n const request = args.request;\n const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : \"\"}${request.path}`;\n const dpop = await this.generateDpop(request.method, actualEndpoint);\n request.headers = {\n ...request.headers,\n DPoP: dpop,\n };\n }\n return next(args);\n }, {\n step: \"finalizeRequest\",\n name: \"dpopInterceptor\",\n override: true,\n });\n }\n async generateDpop(method = \"POST\", endpoint) {\n const token = await this.loadToken();\n try {\n const privateKey = createPrivateKey({\n key: token.dpopKey,\n format: \"pem\",\n type: \"sec1\",\n });\n const publicKey = createPublicKey(privateKey);\n const publicDer = publicKey.export({ format: \"der\", type: \"spki\" });\n let pointStart = -1;\n for (let i = 0; i < publicDer.length; i++) {\n if (publicDer[i] === 0x04) {\n pointStart = i;\n break;\n }\n }\n const x = publicDer.slice(pointStart + 1, pointStart + 33);\n const y = publicDer.slice(pointStart + 33, pointStart + 65);\n const header = {\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: {\n kty: \"EC\",\n crv: \"P-256\",\n x: x.toString(\"base64url\"),\n y: y.toString(\"base64url\"),\n },\n };\n const payload = {\n jti: crypto.randomUUID(),\n htm: method,\n htu: endpoint,\n iat: Math.floor(Date.now() / 1000),\n };\n const headerB64 = Buffer.from(JSON.stringify(header)).toString(\"base64url\");\n const payloadB64 = Buffer.from(JSON.stringify(payload)).toString(\"base64url\");\n const message = `${headerB64}.${payloadB64}`;\n const asn1Signature = sign(\"sha256\", Buffer.from(message), privateKey);\n const rawSignature = this.derToRawSignature(asn1Signature);\n const signatureB64 = rawSignature.toString(\"base64url\");\n return `${message}.${signatureB64}`;\n }\n catch (error) {\n throw new CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false });\n }\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "613FA9511E3E116D64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/run/run.ts", "src/run/noninteractive.ts", "src/run/ui.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode, type OpenCodeClient, type SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { FSUtil } from \"@opencode-ai/util/fs-util\"\nimport { open } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { readStdin } from \"../util/io\"\nimport { ServerConnection } from \"../services/server-connection\"\nimport { parseSessionTargetModel, resolveSessionTarget } from \"../session-target\"\nimport { toolInlineInfo } from \"@opencode-ai/tui/mini/tool\"\nimport { runNonInteractivePrompt } from \"./noninteractive\"\nimport { UI } from \"./ui\"\nimport { Env } from \"../env\"\nimport { errorMessage } from \"../util/error\"\n\nexport type RunCommandInput = {\n server: ServerConnection.Resolved\n message: string[]\n continue?: boolean\n session?: string\n fork?: boolean\n model?: string\n agent?: string\n format: \"default\" | \"json\"\n file: string[]\n title?: string\n thinking?: boolean\n auto?: boolean\n}\n\ntype FilePart = {\n url: string\n filename: string\n mime: string\n}\n\ntype Prepared = {\n directory?: string\n message: string\n files: FilePart[]\n}\n\ntype ExecutionOptions = {\n root?: string\n directory?: string\n useServerDirectory?: boolean\n variant?: string\n attached?: boolean\n compatibility?: \"v1\"\n}\n\nclass RunTargetError extends Error {\n constructor(\n message: string,\n readonly sessionID?: string,\n ) {\n super(message)\n }\n}\n\nconst ATTACH_FILE_MAX_BYTES = 10 * 1024 * 1024\n\nexport function runNonInteractive(input: RunCommandInput) {\n return runNonInteractiveWithOptions(input, {})\n}\n\n/** @internal Used only by the V1 command boundary. */\nexport function runNonInteractiveWithOptions(input: RunCommandInput, options: ExecutionOptions) {\n return run(input, options).catch((error) => reportRunError(input, errorMessage(error)))\n}\n\nasync function run(input: RunCommandInput, options: ExecutionOptions) {\n if (input.fork && !input.continue && !input.session) fail(\"--fork requires --continue or --session\")\n const root = options.root ?? process.env.PWD ?? process.cwd()\n const local = localDirectory(root)\n const directory = options.useServerDirectory ? undefined : (options.directory ?? local)\n const message = mergeInput(formatMessage(input.message), process.stdin.isTTY ? undefined : await readStdin())\n if (!message?.trim()) fail(\"You must provide a message\")\n const files = await Promise.all(input.file.map((file) => prepareFile(file, root, options)))\n const prepared = { directory, message, files }\n return execute(input, prepared, input.server.endpoint, options)\n}\n\nasync function execute(input: RunCommandInput, prepared: Prepared, endpoint: Endpoint, options: ExecutionOptions) {\n const client = OpenCode.make({\n baseUrl: endpoint.url,\n headers: Service.headers(endpoint),\n // Bun's default five-minute deadline terminates the event stream used by long-running sessions.\n fetch: ((request: RequestInfo | URL, init?: RequestInit) =>\n fetch(request, { ...init, timeout: false } as BunFetchRequestInit)) as typeof fetch,\n })\n const explicit = parseRunModel(input.model)\n const target = await resolveSessionTarget({\n client,\n location: prepared.directory ? { directory: prepared.directory } : undefined,\n continue: input.continue,\n session: input.session,\n fork: input.fork,\n model: explicit\n ? { providerID: explicit.model.providerID, id: explicit.model.modelID, variant: explicit.variant }\n : undefined,\n agent: input.agent,\n environment: input.server.service ? Env.session() : undefined,\n prepare: async (next) => {\n const selected =\n next.model ??\n (options.variant\n ? await client.model\n .default({ location: { directory: next.location.directory, workspace: next.location.workspaceID } })\n .then((result) => result.data)\n : undefined)\n const model = selected\n ? {\n providerID: selected.providerID,\n id: selected.id,\n variant: options.variant ?? (\"variant\" in selected ? selected.variant : undefined),\n }\n : undefined\n if ((options.variant ?? explicit?.variant) && !model)\n throw new RunTargetError(\"Cannot select a variant before selecting a model\", next.session?.id)\n return { model, agent: next.agent }\n },\n }).catch((error) => {\n if (!(error instanceof RunTargetError)) throw error\n reportRunError(input, error.message, error.sessionID)\n return undefined\n })\n if (!target) return\n const model = target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined\n const variant = target.model?.variant\n if (!target.resume && input.title !== undefined) {\n await client.session.rename({\n sessionID: target.session.id,\n title: input.title || prepared.message.slice(0, 50) + (prepared.message.length > 50 ? \"...\" : \"\"),\n })\n }\n\n await runNonInteractivePrompt({\n client,\n sessionID: target.session.id,\n location: target.location,\n message: prepared.message,\n files: prepared.files,\n agent: target.agent,\n model,\n variant,\n thinking: input.thinking ?? false,\n format: input.format,\n auto: input.auto ?? false,\n attached: options.attached ?? true,\n compatibility: options.compatibility,\n renderTool: (part) => renderTool(part, target.location.directory),\n renderToolError: (part) => renderToolError(part, target.location.directory),\n }).catch((error) => reportRunError(input, errorMessage(error), target.session.id))\n}\n\nexport function mergeInput(message: string | undefined, piped: string | undefined) {\n if (!message) return piped || undefined\n if (!piped) return message\n return message + \"\\n\" + piped\n}\n\nfunction formatMessage(message: string[]) {\n const value = message.map((part) => (part.includes(\" \") ? `\"${part.replace(/\"/g, '\\\\\"')}\"` : part)).join(\" \")\n return value || undefined\n}\n\nfunction localDirectory(root: string) {\n try {\n process.chdir(root)\n return process.cwd()\n } catch {\n fail(`Failed to change directory to ${root}`)\n }\n}\n\nexport function parseRunModel(value?: string) {\n const ref = parseSessionTargetModel(value)\n if (!ref) return\n return {\n model: { providerID: ref.providerID, modelID: ref.id },\n variant: ref.variant,\n }\n}\n\nasync function prepareFile(input: string, directory: string, options: ExecutionOptions): Promise<FilePart> {\n const file = path.resolve(directory, input)\n const handle = await open(file, \"r\").catch(() => fail(`File not found: ${input}`))\n try {\n const stat = await handle.stat()\n if (options.compatibility === \"v1\" && options.attached && stat.isDirectory())\n fail(`Cannot attach local directory without a shared filesystem: ${input}`)\n if (!stat.isFile() || stat.size > ATTACH_FILE_MAX_BYTES)\n fail(`Cannot attach a directory, special file, or file larger than 10 MiB: ${input}`)\n const content = Buffer.alloc(Number(stat.size))\n let offset = 0\n while (offset < content.length) {\n const read = await handle.read(content, offset, content.length - offset, offset)\n if (read.bytesRead === 0) break\n offset += read.bytesRead\n }\n const bytes = content.subarray(0, offset)\n const detected = FSUtil.mimeType(file)\n const text = bytes.toString(\"utf8\")\n const mime =\n detected.startsWith(\"image/\") || detected === \"application/pdf\"\n ? detected\n : !isBinaryContent(bytes) && Buffer.from(text, \"utf8\").equals(bytes)\n ? \"text/plain\"\n : detected\n return {\n url: `data:${mime};base64,${bytes.toString(\"base64\")}`,\n filename: path.basename(file),\n mime,\n }\n } finally {\n await handle.close()\n }\n}\n\nfunction isBinaryContent(bytes: Uint8Array) {\n if (bytes.length === 0) return false\n if (bytes.includes(0)) return true\n return bytes.reduce((count, byte) => count + Number(byte < 9 || (byte > 13 && byte < 32)), 0) / bytes.length > 0.3\n}\n\nasync function renderTool(part: SessionMessageAssistantTool, directory: string) {\n const info = toolInlineInfo(part, directory)\n if (info.mode === \"block\") {\n UI.empty()\n UI.println(UI.Style.TEXT_NORMAL + info.icon, UI.Style.TEXT_NORMAL + info.title)\n if (info.body?.trim()) UI.println(info.body)\n UI.empty()\n return\n }\n UI.println(\n UI.Style.TEXT_NORMAL + info.icon,\n UI.Style.TEXT_NORMAL + info.title,\n info.description ? UI.Style.TEXT_DIM + info.description + UI.Style.TEXT_NORMAL : \"\",\n )\n}\n\nasync function renderToolError(part: SessionMessageAssistantTool, directory: string) {\n const info = toolInlineInfo(part, directory)\n UI.println(UI.Style.TEXT_NORMAL + \"✗\", UI.Style.TEXT_NORMAL + `${info.title} failed`)\n}\n\n/** @internal Used by the V1 command boundary before a Session exists. */\nexport function reportRunError(input: Pick<RunCommandInput, \"format\">, message: string, sessionID?: string) {\n process.exitCode = 1\n if (input.format === \"json\") {\n process.stdout.write(\n JSON.stringify({\n type: \"error\",\n timestamp: Date.now(),\n sessionID: sessionID ?? \"\",\n error: { type: \"unknown\", message },\n }) + \"\\n\",\n )\n return\n }\n UI.error(message)\n}\n\nfunction fail(message: string): never {\n throw new Error(message)\n}\n", | ||
| "import type {\n EventSubscribeOutput,\n JsonValue,\n LocationRef,\n OpenCodeClient,\n SessionMessageAssistantTool,\n SessionMessageInfo,\n ToolContent,\n} from \"@opencode-ai/client/promise\"\nimport { SessionMessage } from \"@opencode-ai/schema/session-message\"\nimport { EOL } from \"node:os\"\nimport { readFile } from \"node:fs/promises\"\nimport { nonEmptyToolContent, toolOutputText, type MiniToolPart } from \"@opencode-ai/tui/mini/tool\"\nimport { UI } from \"./ui\"\n\ntype Model = {\n providerID: string\n modelID: string\n}\n\ntype File = {\n url: string\n filename: string\n mime: string\n}\n\ntype Input = {\n client: OpenCodeClient\n sessionID: string\n location: LocationRef\n message: string\n files: File[]\n agent?: string\n model?: Model\n variant?: string\n thinking: boolean\n format: \"default\" | \"json\"\n auto: boolean\n /** True when the client is attached to a shared server rather than an exclusive in-process one. */\n attached: boolean\n compatibility?: \"v1\"\n renderTool: (part: SessionMessageAssistantTool) => Promise<void>\n renderToolError: (part: SessionMessageAssistantTool) => Promise<void>\n}\n\ntype StartedPart = {\n id: string\n timestamp: number\n}\n\ntype ToolState = StartedPart & {\n assistantMessageID: string\n tool: string\n input: Record<string, JsonValue>\n raw?: string\n provider?: unknown\n providerState?: SessionMessageAssistantTool[\"providerState\"]\n metadata: Record<string, JsonValue>\n content: ToolContent[]\n}\n\ntype V2Event = EventSubscribeOutput\ntype FormRequest = Extract<V2Event, { type: \"form.created\" }>[\"data\"][\"form\"]\n\n// MCP elicitations are temporarily owned by the \"global\" sentinel instead of a real\n// session. An exclusive local process may treat them as this run's blockers; an\n// attached client must not cancel input that may belong to another session.\nconst GLOBAL_FORM_SESSION_ID = \"global\"\n\nexport async function runNonInteractivePrompt(input: Input) {\n const controller = new AbortController()\n const stream = input.client.event.subscribe({ signal: controller.signal })[Symbol.asyncIterator]()\n const connected = await stream.next()\n if (connected.done) throw new Error(\"Event stream disconnected before prompt admission\")\n\n const messageID = SessionMessage.ID.create()\n const starts = new Map<string, StartedPart>()\n const tools = new Map<string, ToolState>()\n const renderedText = new Map<string, string>()\n const renderedReasoning = new Map<string, string>()\n const renderedTools = new Set<string>()\n let submitted = false\n let promoted = false\n let emittedError = false\n let permissionRejected = false\n let formCancelled = false\n let interrupted = false\n let v1InvalidOutput = false\n let prePromotionError: { message: string; [key: string]: unknown } | undefined\n let finalizing = false\n let admission: AbortController | undefined\n let pendingStep: { timestamp: number; part: Record<string, unknown>; label: string } | undefined\n\n const emit = (type: string, timestamp: number, data: Record<string, unknown>) => {\n if (input.format !== \"json\") return false\n process.stdout.write(JSON.stringify({ type, timestamp, sessionID: input.sessionID, ...data }) + EOL)\n return true\n }\n\n const writeText = (part: { text: string; [key: string]: unknown }, timestamp: number) => {\n if (emit(\"text\", timestamp, { part })) return\n const text = part.text.trim()\n if (!text) return\n if (!process.stdout.isTTY) {\n process.stdout.write(text + EOL)\n return\n }\n UI.empty()\n UI.println(text)\n UI.empty()\n }\n\n const writeReasoning = (part: { text: string; [key: string]: unknown }, timestamp: number) => {\n if (emit(\"reasoning\", timestamp, { part })) return\n const text = part.text.trim()\n if (!text) return\n const line = `Thinking: ${text}`\n if (!process.stdout.isTTY) return void process.stdout.write(line + EOL)\n UI.empty()\n UI.println(`${UI.Style.TEXT_DIM}\\u001b[3m${line}\\u001b[0m${UI.Style.TEXT_NORMAL}`)\n UI.empty()\n }\n\n const flushStep = () => {\n if (!pendingStep) return\n const value = pendingStep\n pendingStep = undefined\n if (!emit(\"step_start\", value.timestamp, { part: value.part }) && input.format !== \"json\") {\n UI.empty()\n UI.println(value.label)\n UI.empty()\n }\n }\n\n const replyPermission = async (request: { id: string; action: string; resources: ReadonlyArray<string> }) => {\n if (!input.auto) {\n permissionRejected = true\n UI.println(\n UI.Style.TEXT_WARNING_BOLD + \"!\",\n UI.Style.TEXT_NORMAL +\n `permission requested: ${request.action} (${request.resources.join(\", \")}); auto-rejecting`,\n )\n }\n await input.client.permission\n .reply({\n sessionID: input.sessionID,\n requestID: request.id,\n reply: input.auto ? \"once\" : \"reject\",\n })\n .catch(() => {})\n if (!input.auto) {\n await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n }\n\n const cancelForm = async (request: Pick<FormRequest, \"id\" | \"sessionID\">) => {\n try {\n await input.client.form.cancel(\n { sessionID: request.sessionID, formID: request.id },\n ...formRequestOptions(request.sessionID === GLOBAL_FORM_SESSION_ID ? input.location : undefined),\n )\n } catch (error) {\n if (!formAlreadySettled(error)) throw error\n }\n formCancelled = true\n }\n\n const consume = async () => {\n while (!controller.signal.aborted) {\n const next = await stream.next().catch((error) => {\n if (!emittedError) throw error\n return { done: true as const, value: undefined }\n })\n if (next.done) {\n if (emittedError) return\n throw new Error(\"Event stream disconnected during prompt execution\")\n }\n const event = next.value\n\n if (event.type === \"permission.asked\" && submitted && event.data.sessionID === input.sessionID) {\n await replyPermission(event.data)\n continue\n }\n if (\n event.type === \"form.created\" &&\n submitted &&\n (event.data.form.sessionID === input.sessionID ||\n (!input.attached &&\n event.data.form.sessionID === GLOBAL_FORM_SESSION_ID &&\n sameLocation(event.location, input.location)))\n ) {\n await cancelForm(event.data.form)\n continue\n }\n if (!(\"sessionID\" in event.data) || event.data.sessionID !== input.sessionID) continue\n const time = toMillis(\"created\" in event ? event.created : undefined)\n\n if (event.type === \"session.inbox.delivered\") {\n if (event.data.inboxID === messageID) {\n promoted = true\n prePromotionError = undefined\n continue\n }\n }\n if (\n event.type === \"session.execution.interrupted\" &&\n event.data.reason === \"user\" &&\n (interrupted || permissionRejected || formCancelled)\n ) {\n return\n }\n if (!promoted && event.type === \"session.execution.failed\") {\n prePromotionError = event.data.error\n if (finalizing) return\n continue\n }\n if (\n !promoted &&\n finalizing &&\n (event.type === \"session.execution.succeeded\" || event.type === \"session.execution.interrupted\")\n )\n return\n if (!promoted) continue\n if (finalizing && !event.type.startsWith(\"session.execution.\")) continue\n\n if (event.type === \"session.step.started\") {\n const part = {\n id: partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"step-start\",\n snapshot: event.data.snapshot,\n }\n if (input.compatibility === \"v1\") {\n pendingStep = {\n timestamp: time,\n part,\n label: `> ${event.data.agent} · ${event.data.model.id}`,\n }\n continue\n }\n if (!emit(\"step_start\", time, { part }) && input.format !== \"json\") {\n UI.empty()\n UI.println(`> ${event.data.agent} · ${event.data.model.id}`)\n UI.empty()\n }\n continue\n }\n\n if (event.type === \"session.text.started\") {\n flushStep()\n starts.set(`text\\u0000${contentKey(event.data.assistantMessageID, event.data.ordinal)}`, {\n id: partID(event.id),\n timestamp: time,\n })\n continue\n }\n if (event.type === \"session.text.ended\") {\n const key = contentKey(event.data.assistantMessageID, event.data.ordinal)\n const started = starts.get(`text\\u0000${key}`)\n starts.delete(`text\\u0000${key}`)\n const part = {\n id: started?.id ?? partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"text\",\n text: event.data.text,\n time: { start: started?.timestamp ?? time, end: time },\n }\n renderedText.set(key, event.data.text)\n writeText(part, time)\n continue\n }\n\n if (event.type === \"session.reasoning.started\") {\n flushStep()\n starts.set(`reasoning\\u0000${contentKey(event.data.assistantMessageID, event.data.ordinal)}`, {\n id: partID(event.id),\n timestamp: time,\n })\n continue\n }\n if (event.type === \"session.reasoning.ended\" && input.thinking) {\n const key = contentKey(event.data.assistantMessageID, event.data.ordinal)\n const started = starts.get(`reasoning\\u0000${key}`)\n starts.delete(`reasoning\\u0000${key}`)\n const part = {\n id: started?.id ?? partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"reasoning\",\n text: event.data.text,\n metadata: event.data.state,\n time: { start: started?.timestamp ?? time, end: time },\n }\n renderedReasoning.set(key, event.data.text)\n writeReasoning(part, time)\n continue\n }\n\n if (event.type === \"session.tool.input.started\") {\n flushStep()\n tools.set(toolKey(event.data.assistantMessageID, event.data.id), {\n id: partID(event.id),\n timestamp: time,\n assistantMessageID: event.data.assistantMessageID,\n tool: event.data.name,\n input: {},\n metadata: {},\n content: [],\n })\n continue\n }\n if (event.type === \"session.tool.input.ended\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) current.raw = event.data.text\n continue\n }\n if (event.type === \"session.tool.input.delta\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) current.raw = (current.raw ?? \"\") + event.data.delta\n continue\n }\n if (event.type === \"session.tool.called\") {\n flushStep()\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key)\n tools.set(key, {\n id: current?.id ?? partID(event.id),\n timestamp: current?.timestamp ?? time,\n assistantMessageID: event.data.assistantMessageID,\n tool: current?.tool ?? \"tool\",\n input: event.data.input,\n raw: current?.raw,\n provider: { executed: event.data.executed, state: event.data.state },\n providerState: event.data.state,\n metadata: {},\n content: [],\n })\n continue\n }\n if (event.type === \"session.tool.progress\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) {\n current.metadata = event.data.metadata\n }\n continue\n }\n if (event.type === \"session.tool.success\") {\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key) ?? fallbackTool(event)\n const tool: SessionMessageAssistantTool = {\n type: \"tool\",\n id: event.data.id,\n name: current.tool,\n executed: event.data.executed,\n providerState: current.providerState,\n providerResultState: event.data.resultState,\n state: {\n status: \"completed\",\n input: current.input,\n metadata: event.data.metadata,\n content: event.data.content,\n },\n time: { created: current.timestamp, ran: current.timestamp, completed: time },\n }\n const part: MiniToolPart = {\n partID: current.id,\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"tool\",\n id: event.data.id,\n tool: current.tool,\n state: {\n status: \"completed\",\n input: current.input,\n output: toolOutputText(current.tool, event.data.content),\n title: current.tool,\n metadata: {\n metadata: event.data.metadata,\n content: event.data.content,\n providerCall: current.provider,\n providerResult: { executed: event.data.executed, state: event.data.resultState },\n rawInput: current.raw,\n },\n time: { start: current.timestamp, end: time },\n },\n }\n tools.delete(key)\n renderedTools.add(key)\n if (!emit(\"tool_use\", time, { part })) await input.renderTool(tool)\n continue\n }\n if (event.type === \"session.tool.failed\") {\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key) ?? fallbackTool(event)\n const error = event.data.error.message\n const metadata = event.data.metadata ?? current.metadata\n const content = event.data.content ?? nonEmptyToolContent(current.content)\n const tool: SessionMessageAssistantTool = {\n type: \"tool\",\n id: event.data.id,\n name: current.tool,\n executed: event.data.executed,\n providerState: current.providerState,\n providerResultState: event.data.resultState,\n state: {\n status: \"error\",\n input: current.input,\n metadata,\n content,\n error: event.data.error,\n },\n time: { created: current.timestamp, ran: current.timestamp, completed: time },\n }\n const part: MiniToolPart = {\n partID: current.id,\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"tool\",\n id: event.data.id,\n tool: current.tool,\n state: {\n status: \"error\",\n input: current.input,\n error,\n metadata: {\n providerCall: current.provider,\n providerResult: { executed: event.data.executed, state: event.data.resultState },\n rawInput: current.raw,\n },\n time: { start: current.timestamp, end: time },\n },\n }\n tools.delete(key)\n renderedTools.add(key)\n if (input.compatibility === \"v1\" && (permissionRejected || formCancelled)) continue\n if (!emit(\"tool_use\", time, { part })) {\n if (content && toolOutputText(current.tool, content).trim())\n await input.renderTool({\n ...tool,\n state: {\n status: \"completed\",\n input: current.input,\n metadata,\n content,\n },\n })\n await input.renderToolError(tool)\n UI.error(error)\n }\n continue\n }\n\n if (event.type === \"session.step.ended\") {\n flushStep()\n const part = {\n id: partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"step-finish\",\n reason: event.data.finish,\n snapshot: event.data.snapshot,\n cost: event.data.cost,\n tokens: event.data.tokens,\n }\n emit(\"step_finish\", time, { part })\n continue\n }\n if (event.type === \"session.step.failed\") {\n if (input.compatibility === \"v1\" && event.data.error.message === \"The provider response ended unexpectedly.\") {\n pendingStep = undefined\n v1InvalidOutput = true\n continue\n }\n if (interrupted || permissionRejected || formCancelled) continue\n flushStep()\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", time, { error: event.data.error })) UI.error(event.data.error.message)\n continue\n }\n if (event.type === \"session.execution.failed\") {\n if (input.compatibility === \"v1\" && (v1InvalidOutput || permissionRejected || formCancelled)) return\n flushStep()\n if (!emittedError && !formCancelled) {\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", time, { error: event.data.error })) UI.error(event.data.error.message)\n }\n return\n }\n if (event.type === \"session.execution.interrupted\") {\n if (input.compatibility === \"v1\" && (permissionRejected || formCancelled)) return\n if (event.data.reason === \"user\" && interrupted) process.exitCode = 130\n if (event.data.reason !== \"user\" && !emittedError) {\n emittedError = true\n process.exitCode = 1\n const error = { type: \"aborted\" as const, message: `Session interrupted: ${event.data.reason}` }\n if (!emit(\"error\", time, { error })) UI.error(error.message)\n }\n return\n }\n if (event.type === \"session.execution.succeeded\") return\n }\n }\n\n const projectedMessages = async () => {\n const messages: SessionMessageInfo[] = []\n let cursor: string | undefined\n while (true) {\n const page = await input.client.message.list(\n cursor\n ? { sessionID: input.sessionID, limit: 200, cursor }\n : { sessionID: input.sessionID, limit: 200, order: \"desc\" },\n )\n for (const message of page.data) {\n if (message.id === messageID) return { found: true, messages: messages.toReversed() }\n messages.push(message)\n }\n cursor = page.cursor.next ?? undefined\n if (!cursor) return { found: false, messages: [] }\n }\n }\n\n const reconcile = async () => {\n const projected = await projectedMessages()\n for (const message of projected.messages) {\n if (message.type !== \"assistant\") continue\n const timestamp = message.time.completed ?? message.time.created\n let textOrdinal = 0\n let reasoningOrdinal = 0\n for (const item of message.content) {\n if (item.type === \"text\") {\n const ordinal = textOrdinal++\n const key = contentKey(message.id, ordinal)\n const rendered = renderedText.get(key) ?? \"\"\n if (rendered === item.text || !item.text.startsWith(rendered)) continue\n const text = item.text.slice(rendered.length)\n writeText(\n {\n id: projectedPartID(message.id, `text-${ordinal}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"text\",\n text,\n time: { start: message.time.created, end: timestamp },\n },\n timestamp,\n )\n renderedText.set(key, item.text)\n continue\n }\n if (item.type === \"reasoning\") {\n const ordinal = reasoningOrdinal++\n if (!input.thinking) continue\n const key = contentKey(message.id, ordinal)\n const rendered = renderedReasoning.get(key) ?? \"\"\n if (rendered === item.text || !item.text.startsWith(rendered)) continue\n const text = item.text.slice(rendered.length)\n const part = {\n id: projectedPartID(message.id, `reasoning-${ordinal}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"reasoning\",\n text,\n metadata: item.state,\n time: { start: message.time.created, end: timestamp },\n }\n renderedReasoning.set(key, item.text)\n writeReasoning(part, timestamp)\n continue\n }\n\n const key = toolKey(message.id, item.id)\n if (renderedTools.has(key) || item.state.status === \"streaming\" || item.state.status === \"running\") continue\n const part: MiniToolPart = {\n partID: projectedPartID(message.id, `tool-${item.id}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"tool\",\n id: item.id,\n tool: item.name,\n state:\n item.state.status === \"completed\"\n ? {\n status: \"completed\",\n input: item.state.input,\n output: toolOutputText(item.name, item.state.content),\n title: item.name,\n metadata: { metadata: item.state.metadata, content: item.state.content },\n time: { start: item.time.ran ?? item.time.created, end: item.time.completed ?? timestamp },\n }\n : {\n status: \"error\",\n input: item.state.input,\n error: item.state.error.message,\n metadata: { metadata: item.state.metadata, content: item.state.content },\n time: { start: item.time.ran ?? item.time.created, end: item.time.completed ?? timestamp },\n },\n }\n renderedTools.add(key)\n if (emit(\"tool_use\", timestamp, { part })) continue\n if (item.state.status === \"completed\") {\n await input.renderTool(item)\n continue\n }\n if (item.state.content && toolOutputText(item.name, item.state.content).trim()) {\n await input.renderTool({\n ...item,\n state: {\n status: \"completed\",\n input: item.state.input,\n metadata: item.state.metadata,\n content: item.state.content,\n },\n })\n }\n await input.renderToolError(item)\n UI.error(item.state.error.message)\n }\n\n if (message.error && !emittedError) {\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", timestamp, { error: message.error })) UI.error(message.error.message)\n }\n }\n return {\n found: projected.found,\n responded: projected.messages.some((message) => message.type === \"assistant\"),\n }\n }\n\n const interrupt = () => {\n if (interrupted) process.exit(130)\n interrupted = true\n process.exitCode = 130\n admission?.abort()\n void input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n process.on(\"SIGINT\", interrupt)\n\n let completed: Promise<void> | undefined\n try {\n if (input.agent) {\n await input.client.session.switchAgent({ sessionID: input.sessionID, agent: input.agent })\n }\n const selected = input.model\n ? { providerID: input.model.providerID, id: input.model.modelID, variant: input.variant }\n : input.variant\n ? await input.client.session\n .get({ sessionID: input.sessionID })\n .then((result) => result.model)\n .then(async (model) => {\n if (model) return { ...model, variant: input.variant }\n const result = await input.client.model.default()\n const fallback = result.data\n return fallback ? { providerID: fallback.providerID, id: fallback.id, variant: input.variant } : undefined\n })\n : undefined\n if (input.variant && !selected) throw new Error(\"Cannot select a variant before selecting a model\")\n if (selected) {\n await input.client.session.switchModel({ sessionID: input.sessionID, model: selected })\n }\n\n const prepared = await Promise.all(input.files.map(prepareFile))\n if (interrupted) return\n submitted = true\n completed = consume()\n admission = new AbortController()\n const response = await input.client.session\n .prompt(\n {\n sessionID: input.sessionID,\n id: messageID,\n text: [input.message, ...prepared.flatMap((file) => (file.text ? [file.text] : []))].join(\"\\n\\n\"),\n files: prepared.flatMap((file) => (file.attachment ? [file.attachment] : [])),\n delivery: \"steer\",\n },\n { signal: admission.signal },\n )\n .catch(async (error) => {\n if (interrupted) {\n await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n controller.abort()\n await completed?.catch(() => {})\n if (interrupted || emittedError) return undefined\n throw error\n })\n admission = undefined\n if (!response) return\n if (interrupted) await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n\n const [permissions, forms, globals] = await Promise.all([\n input.client.permission.list({ sessionID: input.sessionID }).catch(() => undefined),\n input.client.form.list({ sessionID: input.sessionID }).catch(() => undefined),\n input.attached\n ? Promise.resolve(undefined)\n : input.client.form.request\n .list({\n location: { directory: input.location.directory, workspace: input.location.workspaceID },\n })\n .catch(() => undefined),\n ])\n await Promise.all([\n ...(permissions ?? []).map(replyPermission),\n ...(forms ?? []).map(cancelForm),\n ...(globals && sameLocation(globals.location, input.location)\n ? globals.data.filter((form) => form.sessionID === GLOBAL_FORM_SESSION_ID).map(cancelForm)\n : []),\n ])\n if (input.compatibility === \"v1\") {\n await completed\n return\n }\n\n const waiting = input.client.session.wait({ sessionID: input.sessionID })\n await Promise.race([waiting, completed.then(() => waiting)])\n finalizing = true\n const projected = await reconcile()\n if (\n !projected.responded &&\n !interrupted &&\n !permissionRejected &&\n !formCancelled &&\n !emittedError &&\n !prePromotionError\n ) {\n await completed\n }\n if (!projected.found && !interrupted && !permissionRejected && !formCancelled && !emittedError) {\n const error = prePromotionError ?? { type: \"unknown\", message: \"Prompt was not promoted\" }\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", Date.now(), { error })) UI.error(error.message)\n }\n } finally {\n process.off(\"SIGINT\", interrupt)\n controller.abort()\n if (input.compatibility === \"v1\") await stream.return?.(undefined).catch(() => {})\n else void stream.return?.(undefined).catch(() => {})\n }\n}\n\nfunction sameLocation(left: LocationRef | undefined, right: LocationRef) {\n return !!left && left.directory === right.directory && left.workspaceID === right.workspaceID\n}\n\nfunction formRequestOptions(location: LocationRef | undefined): [] | [{ headers: Record<string, string> }] {\n if (!location) return []\n return [\n {\n headers: {\n \"x-opencode-directory\": encodeURIComponent(location.directory),\n ...(location.workspaceID ? { \"x-opencode-workspace\": location.workspaceID } : {}),\n },\n },\n ]\n}\n\nfunction formAlreadySettled(error: unknown) {\n return !!error && typeof error === \"object\" && Reflect.get(error, \"_tag\") === \"FormAlreadySettledError\"\n}\n\nfunction partID(eventID: string) {\n return `prt_${eventID.replace(/^evt_/, \"\")}`\n}\n\nfunction toolKey(messageID: string, id: string) {\n return `${messageID}\\u0000${id}`\n}\n\nfunction contentKey(messageID: string, ordinal: number) {\n return `${messageID}\\u0000${ordinal}`\n}\n\nfunction projectedPartID(messageID: string, part: string) {\n return `prt_${messageID.replace(/^msg_/, \"\")}_${part}`\n}\n\nfunction fallbackTool(event: {\n id: string\n created: number\n data: { assistantMessageID: string; id: string }\n}): ToolState {\n return {\n id: partID(event.id),\n timestamp: toMillis(event.created),\n assistantMessageID: event.data.assistantMessageID,\n tool: \"tool\",\n input: {},\n metadata: {},\n content: [],\n }\n}\n\nfunction toMillis(value: unknown) {\n if (typeof value === \"number\") return value\n if (typeof value === \"string\") return new Date(value).getTime()\n return Date.now()\n}\n\nasync function prepareFile(file: File) {\n if (file.mime !== \"text/plain\") {\n const uri = file.url.startsWith(\"data:\")\n ? file.url\n : `data:${file.mime};base64,${(await readFile(new URL(file.url))).toString(\"base64\")}`\n return { attachment: { uri, name: file.filename } }\n }\n const content = file.url.startsWith(\"data:\")\n ? Buffer.from(file.url.slice(file.url.indexOf(\",\") + 1), \"base64\").toString(\"utf8\")\n : await readFile(new URL(file.url), \"utf8\")\n return { text: `<file name=\"${file.filename}\">\\n${content}\\n</file>` }\n}\n", | ||
| "import { EOL } from \"node:os\"\n\nexport const Style = {\n TEXT_DIM: \"\\x1b[90m\",\n TEXT_NORMAL: \"\\x1b[0m\",\n TEXT_WARNING_BOLD: \"\\x1b[93m\\x1b[1m\",\n TEXT_DANGER_BOLD: \"\\x1b[91m\\x1b[1m\",\n}\n\nexport function println(...message: string[]) {\n process.stderr.write(message.join(\" \") + EOL)\n}\n\nlet blank = false\n\nexport function empty() {\n if (blank) return\n println(Style.TEXT_NORMAL)\n blank = true\n}\n\nexport function error(message: string) {\n if (message.startsWith(\"Error: \")) message = message.slice(\"Error: \".length)\n println(Style.TEXT_DANGER_BOLD + \"Error: \" + Style.TEXT_NORMAL + message)\n}\n\nexport * as UI from \"./ui\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8BB3B61689E74AD164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { createClient, loadIntegrations } from \"./shared\"\nimport { errorMessage } from \"../../../util/error\"\n\nexport default Runtime.handler(Commands.commands.auth.commands.list, (input) =>\n list(input).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n)\n\nconst list = Effect.fn(\"cli.auth.list\")(function* (input) {\n const client = yield* createClient({ server: Option.getOrUndefined(input.server), standalone: input.standalone })\n const integrations = (yield* loadIntegrations(client)).filter((integration) => integration.connections.length > 0)\n if (input.format === \"json\") {\n process.stdout.write(\n JSON.stringify(\n integrations.map((integration) => ({\n id: integration.id,\n name: integration.name,\n connections: integration.connections,\n })),\n null,\n 2,\n ) + EOL,\n )\n return\n }\n const rows = integrations.flatMap((integration) =>\n integration.connections.map((connection) => ({\n integration: integration.name,\n source: connection.type === \"credential\" ? connection.label : connection.name,\n type: connection.type === \"credential\" ? \"stored\" : \"environment\",\n })),\n )\n if (rows.length === 0) {\n process.stdout.write(\"No authenticated integrations\" + EOL)\n return\n }\n const width = Math.max(...rows.map((row) => row.integration.length)) + 2\n process.stdout.write(\n rows.map((row) => row.integration.padEnd(width) + row.source.padEnd(28) + row.type).join(EOL) + EOL,\n )\n})\n" | ||
| ], | ||
| "mappings": ";ymCAAA,cAAS,WAOT,IAAe,IAAQ,QAAQ,EAAS,SAAS,KAAK,SAAS,KAAM,CAAC,IACpE,EAAK,CAAK,EAAE,KACV,EAAO,MAAM,CAAC,IACZ,EAAO,KAAK,IAAM,CAChB,QAAQ,OAAO,MAAM,EAAa,CAAK,EAAI,CAAG,EAC9C,QAAQ,SAAW,EACpB,CACH,CACF,CACF,EAEM,EAAO,EAAO,GAAG,eAAe,EAAE,SAAU,CAAC,EAAO,CACxD,IAAM,EAAS,MAAO,EAAa,CAAE,OAAQ,EAAO,eAAe,EAAM,MAAM,EAAG,WAAY,EAAM,UAAW,CAAC,EAC1G,GAAgB,MAAO,EAAiB,CAAM,GAAG,OAAO,CAAC,IAAgB,EAAY,YAAY,OAAS,CAAC,EACjH,GAAI,EAAM,SAAW,OAAQ,CAC3B,QAAQ,OAAO,MACb,KAAK,UACH,EAAa,IAAI,CAAC,KAAiB,CACjC,GAAI,EAAY,GAChB,KAAM,EAAY,KAClB,YAAa,EAAY,WAC3B,EAAE,EACF,KACA,CACF,EAAI,CACN,EACA,OAEF,IAAM,EAAO,EAAa,QAAQ,CAAC,IACjC,EAAY,YAAY,IAAI,CAAC,KAAgB,CAC3C,YAAa,EAAY,KACzB,OAAQ,EAAW,OAAS,aAAe,EAAW,MAAQ,EAAW,KACzE,KAAM,EAAW,OAAS,aAAe,SAAW,aACtD,EAAE,CACJ,EACA,GAAI,EAAK,SAAW,EAAG,CACrB,QAAQ,OAAO,MAAM,gCAAkC,CAAG,EAC1D,OAEF,IAAM,EAAQ,KAAK,IAAI,GAAG,EAAK,IAAI,CAAC,IAAQ,EAAI,YAAY,MAAM,CAAC,EAAI,EACvE,QAAQ,OAAO,MACb,EAAK,IAAI,CAAC,IAAQ,EAAI,YAAY,OAAO,CAAK,EAAI,EAAI,OAAO,OAAO,EAAE,EAAI,EAAI,IAAI,EAAE,KAAK,CAAG,EAAI,CAClG,EACD", | ||
| "debugId": "F736AE041531009C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "10201CBFBBF5815C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../protocol/src/client.ts"], | ||
| "sourcesContent": [ | ||
| "import { InvalidRequestError, SessionNotFoundError } from \"./errors.js\"\nimport { makeDefaultApi } from \"./api.js\"\nimport type { Api } from \"./api.js\"\nimport type { Context } from \"effect\"\nimport { HttpApiMiddleware } from \"effect/unstable/httpapi\"\nimport type { EventGroup } from \"./groups/event.js\"\n\nclass LocationMiddleware extends HttpApiMiddleware.Service<LocationMiddleware>()(\n \"@opencode-ai/client/LocationMiddleware\",\n) {}\n\nclass SessionLocationMiddleware extends HttpApiMiddleware.Service<SessionLocationMiddleware>()(\n \"@opencode-ai/client/SessionLocationMiddleware\",\n { error: [InvalidRequestError, SessionNotFoundError] },\n) {}\n\ntype ClientApiShape = Api<\n Context.Service.Identifier<typeof LocationMiddleware>,\n Context.Service.Shape<typeof LocationMiddleware>,\n Context.Service.Identifier<typeof SessionLocationMiddleware>,\n Context.Service.Shape<typeof SessionLocationMiddleware>,\n Context.Service.Identifier<typeof SessionLocationMiddleware>,\n Context.Service.Shape<typeof SessionLocationMiddleware>,\n typeof EventGroup\n>\n\nexport const ClientApi: ClientApiShape = makeDefaultApi({\n locationMiddleware: LocationMiddleware,\n // The real server uses a form-specific middleware with an undocumented `global` sentinel branch.\n // The generated client only needs a middleware identity for API typing.\n formLocationMiddleware: SessionLocationMiddleware,\n sessionLocationMiddleware: SessionLocationMiddleware,\n})\n\nexport const groupNames = {\n \"server.health\": \"health\",\n \"server.server\": \"server\",\n \"server.debug\": \"debug\",\n \"server.migration\": \"migration\",\n \"server.location\": \"location\",\n \"server.agent\": \"agent\",\n \"server.plugin\": \"plugin\",\n \"server.session\": \"session\",\n \"server.message\": \"message\",\n \"server.model\": \"model\",\n \"server.generate\": \"generate\",\n \"server.provider\": \"provider\",\n \"server.integration\": \"integration\",\n \"server.websearch\": \"websearch\",\n \"server.credential\": \"credential\",\n \"server.form\": \"form\",\n \"server.permission\": \"permission\",\n \"server.fs\": \"file\",\n \"server.command\": \"command\",\n \"server.skill\": \"skill\",\n \"server.event\": \"event\",\n \"server.pty\": \"pty\",\n \"server.experimental\": \"experimental\",\n \"server.shell\": \"shell\",\n \"server.mcp\": \"mcp\",\n \"server.reference\": \"reference\",\n \"server.project\": \"project\",\n \"server.worktree\": \"worktree\",\n \"server.workspace\": \"workspace\",\n \"server.vcs\": \"vcs\",\n \"server.config\": \"config\",\n} as const\n\nexport const promiseOmitEndpoints = new Set([\"pty.connect\", \"persistentPty.connect\"])\nexport const effectOmitEndpoints = new Set([\"fs.read\", \"pty.connect\", \"persistentPty.connect\"])\n" | ||
| ], | ||
| "mappings": ";giCAOA,MAAM,UAA2B,EAAkB,QAA4B,EAC7E,wCACF,CAAE,CAAC,CAEH,MAAM,UAAkC,EAAkB,QAAmC,EAC3F,gDACA,CAAE,MAAO,CAAC,EAAqB,CAAoB,CAAE,CACvD,CAAE,CAAC,CAYI,IAAM,EAA4B,EAAe,CACtD,mBAAoB,EAGpB,uBAAwB,EACxB,0BAA2B,CAC7B,CAAC,EAEY,EAAa,CACxB,gBAAiB,SACjB,gBAAiB,SACjB,eAAgB,QAChB,mBAAoB,YACpB,kBAAmB,WACnB,eAAgB,QAChB,gBAAiB,SACjB,iBAAkB,UAClB,iBAAkB,UAClB,eAAgB,QAChB,kBAAmB,WACnB,kBAAmB,WACnB,qBAAsB,cACtB,mBAAoB,YACpB,oBAAqB,aACrB,cAAe,OACf,oBAAqB,aACrB,YAAa,OACb,iBAAkB,UAClB,eAAgB,QAChB,eAAgB,QAChB,aAAc,MACd,sBAAuB,eACvB,eAAgB,QAChB,aAAc,MACd,mBAAoB,YACpB,iBAAkB,UAClB,kBAAmB,WACnB,mBAAoB,YACpB,aAAc,MACd,gBAAiB,QACnB,EAEa,EAAuB,IAAI,IAAI,CAAC,cAAe,uBAAuB,CAAC,EACvE,EAAsB,IAAI,IAAI,CAAC,UAAW,cAAe,uBAAuB,CAAC", | ||
| "debugId": "D596C89B7B5115CB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openai-compatible.ts"], | ||
| "sourcesContent": [ | ||
| "import { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAICompatibleChat from \"../protocols/openai-compatible-chat.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { profiles, type OpenAICompatibleProfile } from \"./openai-compatible-profile.js\"\nimport type { OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"openai-compatible\")\n\ntype GenericModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly provider?: string\n readonly baseURL: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL: string\n readonly provider?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nexport type FamilyModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport const routes = [OpenAICompatibleChat.route]\n\nexport const configure = (input: GenericModelOptions) => {\n const provider = input.provider ?? \"openai-compatible\"\n const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input\n const route = OpenAICompatibleChat.route.with({\n ...rest,\n provider,\n endpoint: { baseURL },\n auth: AuthOptions.bearer(input, []),\n })\n return {\n id: ProviderID.make(provider),\n model: (modelID: string | ModelID) =>\n route.model<OpenAIProviderOptionsInput>({ id: modelID, provider: ProviderID.make(provider) }),\n configure,\n }\n}\n\nconst define = (profile: OpenAICompatibleProfile) => {\n const configureProfile = (input: FamilyModelOptions = {}) => {\n const facade = configure({\n ...input,\n baseURL: input.baseURL ?? profile.baseURL,\n provider: profile.provider,\n })\n return {\n id: ProviderID.make(profile.provider),\n model: facade.model,\n configure: configureProfile,\n }\n }\n return configureProfile()\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n provider: settings.provider,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n\nexport const baseten = define(profiles.baseten)\nexport const cerebras = define(profiles.cerebras)\nexport const deepinfra = define(profiles.deepinfra)\nexport const deepseek = define(profiles.deepseek)\nexport const fireworks = define(profiles.fireworks)\nexport const groq = define(profiles.groq)\nexport const togetherai = define(profiles.togetherai)\n" | ||
| ], | ||
| "mappings": ";6nBAQO,IAAM,EAAK,EAAW,KAAK,mBAAmB,EAsBxC,EAAS,CAAsB,CAAK,EAEpC,EAAY,CAAC,IAA+B,CACvD,IAAM,EAAW,EAAM,UAAY,qBAC3B,SAAU,EAAG,UAAS,OAAQ,EAAS,KAAM,KAAU,GAAS,EAClE,EAA6B,EAAM,KAAK,IACzC,EACH,WACA,SAAU,CAAE,SAAQ,EACpB,KAAM,EAAY,OAAO,EAAO,CAAC,CAAC,CACpC,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,CAAQ,EAC5B,MAAO,CAAC,IACN,EAAM,MAAkC,CAAE,GAAI,EAAS,SAAU,EAAW,KAAK,CAAQ,CAAE,CAAC,EAC9F,WACF,GAGI,EAAS,CAAC,IAAqC,CACnD,IAAM,EAAmB,CAAC,EAA4B,CAAC,IAAM,CAC3D,IAAM,EAAS,EAAU,IACpB,EACH,QAAS,EAAM,SAAW,EAAQ,QAClC,SAAU,EAAQ,QACpB,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,EAAQ,QAAQ,EACpC,MAAO,EAAO,MACd,UAAW,CACb,GAEF,OAAO,EAAiB,GAGb,EAAW,CACtB,KACA,WACF,EAEa,EAAmF,CAAC,EAAS,IACxG,EAAU,CACR,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO,EAEL,EAAU,EAAO,EAAS,OAAO,EACjC,EAAW,EAAO,EAAS,QAAQ,EACnC,EAAY,EAAO,EAAS,SAAS,EACrC,EAAW,EAAO,EAAS,QAAQ,EACnC,EAAY,EAAO,EAAS,SAAS,EACrC,EAAO,EAAO,EAAS,IAAI,EAC3B,EAAa,EAAO,EAAS,UAAU", | ||
| "debugId": "25B12FF295E2DA9164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/parse.ts"], | ||
| "sourcesContent": [ | ||
| "export function parseFileLineRange(input: string) {\n const hash = input.lastIndexOf(\"#\")\n if (hash === -1) return { base: input }\n\n const base = input.slice(0, hash)\n const match = input.slice(hash + 1).match(/^(\\d+)(?:-(\\d*))?$/)\n if (!match) return { base }\n\n const startLine = Number(match[1])\n const endLine = match[2] && startLine < Number(match[2]) ? Number(match[2]) : undefined\n return { base, lineRange: { startLine, endLine } }\n}\n\nexport function stripFileLineRange(input: string) {\n return parseFileLineRange(input).base\n}\n\nexport function parseSlashHead(text: string, separator = /[ \\t\\n]/) {\n if (!text.startsWith(\"/\")) return\n\n const end = text.slice(1).search(separator)\n if (end === -1) return { name: text.slice(1), arguments: \"\", end: text.length }\n\n const split = end + 1\n return { name: text.slice(1, split), arguments: text.slice(split + 1), end: split }\n}\n" | ||
| ], | ||
| "mappings": ";AAAO,SAAS,CAAkB,CAAC,EAAe,CAChD,IAAM,EAAO,EAAM,YAAY,GAAG,EAClC,GAAI,IAAS,GAAI,MAAO,CAAE,KAAM,CAAM,EAEtC,IAAM,EAAO,EAAM,MAAM,EAAG,CAAI,EAC1B,EAAQ,EAAM,MAAM,EAAO,CAAC,EAAE,MAAM,oBAAoB,EAC9D,GAAI,CAAC,EAAO,MAAO,CAAE,MAAK,EAE1B,IAAM,EAAY,OAAO,EAAM,EAAE,EAC3B,EAAU,EAAM,IAAM,EAAY,OAAO,EAAM,EAAE,EAAI,OAAO,EAAM,EAAE,EAAI,OAC9E,MAAO,CAAE,OAAM,UAAW,CAAE,YAAW,SAAQ,CAAE,EAG5C,SAAS,CAAkB,CAAC,EAAe,CAChD,OAAO,EAAmB,CAAK,EAAE,KAG5B,SAAS,CAAc,CAAC,EAAc,EAAY,UAAW,CAClE,GAAI,CAAC,EAAK,WAAW,GAAG,EAAG,OAE3B,IAAM,EAAM,EAAK,MAAM,CAAC,EAAE,OAAO,CAAS,EAC1C,GAAI,IAAQ,GAAI,MAAO,CAAE,KAAM,EAAK,MAAM,CAAC,EAAG,UAAW,GAAI,IAAK,EAAK,MAAO,EAE9E,IAAM,EAAQ,EAAM,EACpB,MAAO,CAAE,KAAM,EAAK,MAAM,EAAG,CAAK,EAAG,UAAW,EAAK,MAAM,EAAQ,CAAC,EAAG,IAAK,CAAM", | ||
| "debugId": "198E9C075DCFEFE764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/plugin/discovery.ts", "../tui/src/util/config-directories.ts"], | ||
| "sourcesContent": [ | ||
| "import { readdir, stat } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { isMissingPath, localProjectDirectory, projectConfigDirectories } from \"../util/config-directories\"\n\nconst extensions = new Set([\".cjs\", \".cts\", \".js\", \".jsx\", \".mjs\", \".mts\", \".ts\", \".tsx\"])\n\nexport async function tuiPluginDirectories(cwd: string, configDirectory: string) {\n const projectDirectory = await localProjectDirectory(cwd)\n const projectConfig = path.join(projectDirectory, \".opencode\")\n const directories = [configDirectory, ...projectConfigDirectories(projectDirectory, cwd)]\n const exists = await Promise.all(\n directories.map((directory) => {\n if (directory === configDirectory || directory === projectConfig) return true\n return stat(directory).then(\n (info) => info.isDirectory(),\n (error) => (isMissingPath(error) ? false : Promise.reject(error)),\n )\n }),\n )\n return directories.filter((_, index) => exists[index]).map((directory) => path.join(directory, \"plugins\", \"tui\"))\n}\n\nexport async function discoverTuiPlugins(directories: string[]) {\n return (\n await Promise.all(\n directories.map(async (directory) => {\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: unknown) => {\n if (isMissingPath(error)) return []\n return Promise.reject(error)\n })\n return entries\n .filter((entry) => (entry.isFile() || entry.isSymbolicLink()) && extensions.has(path.extname(entry.name)))\n .map((entry) => path.join(directory, entry.name))\n .sort()\n }),\n )\n ).flat()\n}\n\nexport function localSource(spec: string, directory: string) {\n if (spec.startsWith(\"file://\")) return new URL(spec)\n if (spec.startsWith(\"./\") || spec.startsWith(\"../\") || path.isAbsolute(spec))\n return pathToFileURL(path.resolve(directory, spec))\n return undefined\n}\n\n// Key local plugin imports by a numeric source version so edited sources\n// re-import fresh instead of hitting the ESM cache. Bun ignores query params\n// when caching file:// URL imports, so bust with a plain path there; Node keys\n// its cache on the full URL. Fractional versions break Bun's runtime JSX/solid\n// plugin hooks, so always truncate them.\nexport function freshSpecifier(entrypoint: string, sourceVersion: number) {\n const version = Math.trunc(sourceVersion)\n if (typeof Bun !== \"undefined\") return `${fileURLToPath(entrypoint).replaceAll(\"\\\\\", \"/\")}?mtime=${version}`\n return `${entrypoint}?mtime=${version}`\n}\n", | ||
| "import path from \"node:path\"\nimport { stat } from \"node:fs/promises\"\n\nexport function configDirectories(config: string, cwd: string) {\n return [...new Set([config, ...ancestors(cwd).map((directory) => path.join(directory, \".opencode\"))])]\n}\n\nexport function projectConfigDirectories(project: string, cwd: string) {\n const directories = ancestors(cwd)\n return directories\n .slice(directories.indexOf(path.resolve(project)))\n .map((directory) => path.join(directory, \".opencode\"))\n}\n\nexport async function localProjectDirectory(cwd: string) {\n const directories = ancestors(cwd)\n const repositories = await Promise.all(\n directories.map((directory) =>\n Promise.all(\n [\".git\", \".hg\"].map((name) =>\n stat(path.join(directory, name)).then(\n () => true,\n (error) => (isMissingPath(error) ? false : Promise.reject(error)),\n ),\n ),\n ).then((matches) => matches.some(Boolean)),\n ),\n )\n return directories.findLast((_, index) => repositories[index]) ?? path.resolve(cwd)\n}\n\nexport function isMissingPath(error: unknown) {\n if (!error || typeof error !== \"object\") return false\n const code = Reflect.get(error, \"code\")\n return code === \"ENOENT\" || code === \"ENOTDIR\"\n}\n\nfunction ancestors(cwd: string) {\n const directories: string[] = []\n for (let current = path.resolve(cwd); ; current = path.dirname(current)) {\n directories.push(current)\n if (path.dirname(current) === current) break\n }\n return directories.reverse()\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9CCDB137F8E0AC5864756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/bedrock-auth.ts"], | ||
| "sourcesContent": [ | ||
| "import { AwsV4Signer } from \"aws4fetch\"\nimport { Effect } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Auth, type AuthInput } from \"../../route/auth.js\"\nimport { ProviderShared } from \"../shared.js\"\n\n/**\n * AWS credentials for SigV4 signing. Bedrock also supports Bearer API key auth,\n * which provider facades configure as route auth instead of SigV4. STS-vended\n * credentials should be refreshed by the consumer (rebuild the model) before\n * they expire; the route does not refresh.\n */\nexport interface Credentials {\n readonly region: string\n readonly accessKeyId: string\n readonly secretAccessKey: string\n readonly sessionToken?: string\n}\n\nconst signRequest = (input: {\n readonly url: string\n readonly body: string\n readonly headers: Headers.Headers\n readonly credentials: Credentials\n readonly service: string\n readonly name: string\n}) =>\n Effect.tryPromise({\n try: async () => {\n const signed = await new AwsV4Signer({\n url: input.url,\n method: \"POST\",\n headers: Object.entries(input.headers),\n body: input.body,\n region: input.credentials.region,\n accessKeyId: input.credentials.accessKeyId,\n secretAccessKey: input.credentials.secretAccessKey,\n sessionToken: input.credentials.sessionToken,\n service: input.service,\n }).sign()\n return Object.fromEntries(signed.headers.entries())\n },\n catch: (error) =>\n ProviderShared.invalidRequest(\n `${input.name} SigV4 signing failed: ${error instanceof Error ? error.message : String(error)}`,\n ),\n })\n\n/** Sign the exact JSON bytes with SigV4 using credentials configured on the route. */\nexport const sigV4 = (\n credentials: Credentials | undefined,\n options: { readonly service?: string; readonly name?: string } = {},\n) =>\n Auth.custom((input: AuthInput) => {\n return Effect.gen(function* () {\n if (!credentials) {\n return yield* ProviderShared.invalidRequest(\n `${options.name ?? \"Bedrock Converse\"} requires either route bearer auth or AWS credentials configured on the route`,\n )\n }\n const headersForSigning = Headers.set(input.headers, \"content-type\", \"application/json\")\n const signed = yield* signRequest({\n url: input.url,\n body: input.body,\n headers: headersForSigning,\n credentials,\n service: options.service ?? \"bedrock\",\n name: options.name ?? \"Bedrock Converse\",\n })\n return Headers.setAll(headersForSigning, signed)\n })\n })\n\n/** Bedrock route auth defaults to SigV4 and expects credentials from route configuration. */\nexport const auth = sigV4(undefined)\n\nexport * as BedrockAuth from \"./bedrock-auth.js\"\n" | ||
| ], | ||
| "mappings": ";qUAmBA,IAAM,EAAc,CAAC,IAQnB,EAAO,WAAW,CAChB,IAAK,SAAY,CACf,IAAM,EAAS,MAAM,IAAI,EAAY,CACnC,IAAK,EAAM,IACX,OAAQ,OACR,QAAS,OAAO,QAAQ,EAAM,OAAO,EACrC,KAAM,EAAM,KACZ,OAAQ,EAAM,YAAY,OAC1B,YAAa,EAAM,YAAY,YAC/B,gBAAiB,EAAM,YAAY,gBACnC,aAAc,EAAM,YAAY,aAChC,QAAS,EAAM,OACjB,CAAC,EAAE,KAAK,EACR,OAAO,OAAO,YAAY,EAAO,QAAQ,QAAQ,CAAC,GAEpD,MAAO,CAAC,IACN,EAAe,eACb,GAAG,EAAM,8BAA8B,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAC9F,CACJ,CAAC,EAGU,EAAQ,CACnB,EACA,EAAiE,CAAC,IAElE,EAAK,OAAO,CAAC,IACJ,EAAO,IAAI,SAAU,EAAG,CAC7B,GAAI,CAAC,EACH,OAAO,MAAO,EAAe,eAC3B,GAAG,EAAQ,MAAQ,iGACrB,EAEF,IAAM,EAAoB,EAAQ,IAAI,EAAM,QAAS,eAAgB,kBAAkB,EACjF,EAAS,MAAO,EAAY,CAChC,IAAK,EAAM,IACX,KAAM,EAAM,KACZ,QAAS,EACT,cACA,QAAS,EAAQ,SAAW,UAC5B,KAAM,EAAQ,MAAQ,kBACxB,CAAC,EACD,OAAO,EAAQ,OAAO,EAAmB,CAAM,EAChD,CACF,EAGU,EAAO,EAAM,MAAS", | ||
| "debugId": "E5CE21F313689A7464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/azure.ts"], | ||
| "sourcesContent": [ | ||
| "import { Headers } from \"effect/unstable/http\"\nimport { Auth } from \"../route/auth.js\"\nimport { type AtLeastOne, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { Route as RouteDef, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport * as OpenAIResponses from \"../protocols/openai-responses.js\"\nimport { ProviderShared } from \"../protocols/shared.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"azure\")\nconst routeAuth = Auth.remove(\"authorization\")\nconst RESPONSES_WEBSOCKET_ROTATE_AFTER_MS = 55 * 60 * 1000\n\n// Azure needs the customer's resource URL; supply either `resourceName`\n// (helper builds the URL) or `baseURL` directly.\ntype AzureURL = AtLeastOne<{ readonly resourceName: string; readonly baseURL: string }>\n\nexport type LanguageModelOptions = AzureURL &\n RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly apiVersion?: string\n readonly queryParams?: Record<string, string>\n readonly useDeploymentBasedUrls?: boolean\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\nexport type Config = LanguageModelOptions\n\nexport type Settings = ProviderPackage.Settings &\n AzureURL & {\n readonly apiKey?: string\n readonly apiVersion?: string\n readonly queryParams?: Readonly<Record<string, string>>\n readonly useDeploymentBasedUrls?: boolean\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nconst resourceBaseURL = (resourceName: string) => `https://${resourceName.trim()}.openai.azure.com/openai`\n\nconst responsesRoute = OpenAIResponses.route.with({\n id: \"azure-openai-responses\",\n provider: id,\n auth: routeAuth,\n transport: OpenAIResponses.channelTransport({\n id: \"azure-openai-responses\",\n name: \"Azure OpenAI Responses\",\n rotateAfterMs: RESPONSES_WEBSOCKET_ROTATE_AFTER_MS,\n enabled: (value) => {\n const url = new URL(value)\n return (\n url.protocol === \"https:\" &&\n url.hostname.endsWith(\".openai.azure.com\") &&\n url.pathname.endsWith(\"/openai/v1/responses\") &&\n url.searchParams.get(\"api-version\") === \"v1\"\n )\n },\n url: (value) => {\n const url = new URL(value)\n url.searchParams.delete(\"api-version\")\n return url.toString()\n },\n headers: (headers) => {\n const apiKey = headers[\"api-key\"]\n if (!apiKey) return headers\n return Headers.remove(Headers.set(headers, \"authorization\", `Bearer ${apiKey}`), \"api-key\")\n },\n }),\n})\n\nconst chatRoute = OpenAIChat.route.with({\n id: \"azure-openai-chat\",\n provider: id,\n auth: routeAuth,\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst defaults = (input: Config) => {\n const {\n apiKey: _,\n apiVersion: _apiVersion,\n resourceName: _resourceName,\n useDeploymentBasedUrls: _useDeploymentBasedUrls,\n baseURL: _baseURL,\n queryParams: _queryParams,\n ...rest\n } = input\n if (\"auth\" in rest) {\n const { auth: _, ...withoutAuth } = rest\n return withoutAuth\n }\n return rest\n}\n\nconst auth = (input: Config) => {\n if (\"auth\" in input && input.auth) return input.auth\n return Auth.remove(\"authorization\").andThen(\n Auth.optional(\"apiKey\" in input ? input.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"AZURE_OPENAI_API_KEY\"))\n .pipe(Auth.header(\"api-key\")),\n )\n}\n\nconst configuredRoute = <Body, Prepared>(route: RouteDef<Body, Prepared>, input: Config, modelID: string | ModelID) =>\n route.with({\n auth: auth(input),\n endpoint: endpoint(input, modelID),\n })\n\nfunction endpoint(input: Config, modelID: string | ModelID) {\n const baseURL = ProviderShared.trimBaseUrl(input.baseURL ?? resourceBaseURL(input.resourceName!))\n const query = { \"api-version\": input.apiVersion ?? \"v1\", ...input.queryParams }\n\n if (input.useDeploymentBasedUrls) return { baseURL: `${baseURL}/deployments/${modelID}`, query }\n if (input.baseURL !== undefined && !new URL(input.baseURL).hostname.endsWith(\".openai.azure.com\")) {\n return { baseURL, query: input.queryParams }\n }\n return { baseURL: `${baseURL}/v1`, query }\n}\n\nexport const configure = (input: Config) => {\n const modelDefaults = defaults(input)\n\n const responses = (modelID: string | ModelID) =>\n configuredRoute(responsesRoute, input, modelID)\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n const chat = (modelID: string | ModelID) =>\n configuredRoute(chatRoute, input, modelID)\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n return {\n id,\n model: responses,\n responses,\n chat,\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nconst config = (settings: Settings): Config => {\n const common = {\n apiKey: settings.apiKey,\n apiVersion: settings.apiVersion,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams },\n useDeploymentBasedUrls: settings.useDeploymentBasedUrls,\n }\n if (settings.baseURL !== undefined) return { ...common, baseURL: settings.baseURL }\n if (settings.resourceName !== undefined) return { ...common, resourceName: settings.resourceName }\n throw new Error(\"Azure requires resourceName or baseURL\")\n}\n\nexport const responsesModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).responses(modelID)\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const model = responsesModel\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9F2E5C4C77F7049B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/connection.ts", "../schema/src/integration.ts", "../schema/src/money.ts", "../schema/src/provider.ts", "../schema/src/model.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Connection from \"./connection.js\"\n\nimport { Schema } from \"effect\"\nimport { Credential } from \"./credential.js\"\n\nexport interface CredentialInfo extends Schema.Schema.Type<typeof CredentialInfo> {}\nexport const CredentialInfo = Schema.Struct({\n type: Schema.Literal(\"credential\"),\n id: Credential.ID,\n label: Schema.String,\n}).annotate({ identifier: \"Connection.CredentialInfo\" })\n\nexport interface EnvInfo extends Schema.Schema.Type<typeof EnvInfo> {}\nexport const EnvInfo = Schema.Struct({\n type: Schema.Literal(\"env\"),\n name: Schema.String,\n}).annotate({ identifier: \"Connection.EnvInfo\" })\n\nexport const Info = Schema.Union([CredentialInfo, EnvInfo])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Connection.Info\" })\nexport type Info = typeof Info.Type\n", | ||
| "export * as Integration from \"./integration.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { Connection } from \"./connection.js\"\nimport { ascending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\nimport { IntegrationID, IntegrationMethodID } from \"./integration-id.js\"\nimport { Form } from \"./form.js\"\n\nexport const ID = IntegrationID\nexport type ID = typeof ID.Type\n\nexport const MethodID = IntegrationMethodID\nexport type MethodID = typeof MethodID.Type\n\nexport interface OAuthMethod extends Schema.Schema.Type<typeof OAuthMethod> {}\nexport const OAuthMethod = Schema.Struct({\n id: MethodID,\n type: Schema.Literal(\"oauth\"),\n label: Schema.String,\n form: optional(Form.Fields),\n}).annotate({ identifier: \"Integration.OAuthMethod\" })\n\nexport interface CommandMethod extends Schema.Schema.Type<typeof CommandMethod> {}\nexport const CommandMethod = Schema.Struct({\n id: MethodID,\n type: Schema.Literal(\"command\"),\n label: Schema.String,\n command: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Integration.CommandMethod\" })\n\nexport interface KeyMethod extends Schema.Schema.Type<typeof KeyMethod> {}\nexport const KeyMethod = Schema.Struct({\n type: Schema.Literal(\"key\"),\n label: optional(Schema.String),\n form: optional(Form.Fields),\n}).annotate({ identifier: \"Integration.KeyMethod\" })\n\nexport interface EnvMethod extends Schema.Schema.Type<typeof EnvMethod> {}\nexport const EnvMethod = Schema.Struct({\n type: Schema.Literal(\"env\"),\n names: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Integration.EnvMethod\" })\n\nexport const Method = Schema.Union([OAuthMethod, CommandMethod, KeyMethod, EnvMethod])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Integration.Method\" })\nexport type Method = typeof Method.Type\n\nconst Updated = ephemeral({\n type: \"integration.updated\",\n schema: {},\n})\nexport const Event = { Updated, Definitions: inventory(Updated) }\n\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\nexport const Ref = Schema.Struct({\n id: ID,\n name: Schema.String,\n}).annotate({ identifier: \"Integration.Ref\" })\n\nexport const Info = Schema.Struct({\n id: ID,\n name: Schema.String,\n methods: Schema.Array(Method),\n connections: Schema.Array(Connection.Info),\n}).annotate({ identifier: \"Integration.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const AttemptID = Schema.String.pipe(\n Schema.brand(\"Integration.AttemptID\"),\n statics((schema) => ({ create: () => schema.make(\"con_\" + ascending()) })),\n)\nexport type AttemptID = typeof AttemptID.Type\n\nconst AttemptTime = Schema.Struct({\n created: Schema.Number,\n expires: Schema.Number,\n})\n\nexport class Attempt extends Schema.Class<Attempt>(\"Integration.Attempt\")({\n attemptID: AttemptID,\n url: Schema.String,\n instructions: Schema.String,\n mode: Schema.Literals([\"auto\", \"code\"]),\n time: AttemptTime,\n}) {}\n\nexport const AttemptStatus = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"complete\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"failed\"), message: Schema.String, time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"expired\"), time: AttemptTime }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Integration.AttemptStatus\" })\nexport type AttemptStatus = typeof AttemptStatus.Type\n\nexport interface CommandAttempt extends Schema.Schema.Type<typeof CommandAttempt> {}\nexport const CommandAttempt = Schema.Struct({\n attemptID: AttemptID,\n time: AttemptTime,\n}).annotate({ identifier: \"Integration.CommandAttempt\" })\n\nexport const CommandAttemptStatus = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\"), message: optional(Schema.String), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"complete\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"failed\"), message: Schema.String, time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"expired\"), time: AttemptTime }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Integration.CommandAttemptStatus\" })\nexport type CommandAttemptStatus = typeof CommandAttemptStatus.Type\n", | ||
| "export * as Money from \"./money.js\"\n\nimport { Schema } from \"effect\"\nimport { statics } from \"./schema.js\"\n\nexport const USD = Schema.Finite.pipe(\n Schema.brand(\"Money.USD\"),\n Schema.annotate({ identifier: \"Money.USD\" }),\n statics((schema) => ({ zero: schema.make(0) })),\n)\nexport type USD = typeof USD.Type\n\nexport const USDPerMillionTokens = Schema.Finite.pipe(\n Schema.brand(\"Money.USDPerMillionTokens\"),\n Schema.annotate({ identifier: \"Money.USDPerMillionTokens\" }),\n statics((schema) => ({ zero: schema.make(0) })),\n)\nexport type USDPerMillionTokens = typeof USDPerMillionTokens.Type\n", | ||
| "export * as Provider from \"./provider.js\"\n\nimport { Effect, Schema } from \"effect\"\nimport { Integration } from \"./integration.js\"\nimport { optional, statics } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"Provider.ID\"),\n statics((schema) => ({\n opencode: schema.make(\"opencode\"),\n anthropic: schema.make(\"anthropic\"),\n openai: schema.make(\"openai\"),\n google: schema.make(\"google\"),\n googleVertex: schema.make(\"google-vertex\"),\n githubCopilot: schema.make(\"github-copilot\"),\n amazonBedrock: schema.make(\"amazon-bedrock\"),\n azure: schema.make(\"azure\"),\n openrouter: schema.make(\"openrouter\"),\n mistral: schema.make(\"mistral\"),\n gitlab: schema.make(\"gitlab\"),\n })),\n)\nexport type ID = typeof ID.Type\n\nexport const Package = Schema.String\nexport type Package = typeof Package.Type\n\nexport const Activation = Schema.Literals([\"auto\", \"enabled\", \"disabled\"])\nexport type Activation = typeof Activation.Type\n\nexport const Overlays = {\n settings: Schema.Record(Schema.String, Schema.Any).pipe(optional),\n headers: Schema.Record(Schema.String, Schema.String).pipe(optional),\n body: Schema.Record(Schema.String, Schema.Any).pipe(optional),\n}\n\nexport const Settings = Schema.Record(Schema.String, Schema.Any).annotate({ identifier: \"Provider.Settings\" })\nexport type Settings = typeof Settings.Type\n\nexport interface Request extends Schema.Schema.Type<typeof Request> {}\nexport const Request = Schema.Struct({\n settings: Settings.pipe(Schema.withConstructorDefault(Effect.succeed({}))),\n headers: Schema.Record(Schema.String, Schema.String),\n body: Schema.Record(Schema.String, Schema.Any),\n}).annotate({ identifier: \"Provider.Request\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n integrationID: Integration.ID.pipe(optional),\n name: Schema.String,\n activation: Activation,\n package: Package,\n ...Overlays,\n})\n .annotate({ identifier: \"Provider.Info\" })\n .pipe(\n statics(() => ({\n empty: (id: ID): Info => ({ id, name: id, activation: \"auto\", package: \"\" }),\n })),\n )\n", | ||
| "export * as Model from \"./model.js\"\n\nimport { Schema } from \"effect\"\nimport { optional, statics } from \"./schema.js\"\nimport { Provider } from \"./provider.js\"\nimport { Money } from \"./money.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Model.ID\"))\nexport type ID = typeof ID.Type\n\nexport const VariantID = Schema.String.pipe(Schema.brand(\"Model.VariantID\"))\nexport type VariantID = typeof VariantID.Type\n\nexport const Ref = Schema.Struct({\n id: ID,\n providerID: Provider.ID,\n variant: VariantID.pipe(optional),\n})\n .annotate({ identifier: \"Model.Ref\" })\n .pipe(\n statics((schema) => ({\n parse: (input: string) => {\n const providerEnd = input.indexOf(\"/\")\n if (providerEnd <= 0) throw new Error(`Invalid model reference: ${input}`)\n const providerID = input.slice(0, providerEnd)\n const variantStart = input.indexOf(\"#\", providerEnd + 1)\n const id = input.slice(providerEnd + 1, variantStart === -1 ? undefined : variantStart)\n const variant = variantStart === -1 ? undefined : input.slice(variantStart + 1)\n if (!id || providerID.includes(\"#\") || (variant !== undefined && (!variant || variant.includes(\"#\"))))\n throw new Error(`Invalid model reference: ${input}`)\n return schema.make({\n providerID: Provider.ID.make(providerID),\n id: ID.make(id),\n ...(variant ? { variant: VariantID.make(variant) } : {}),\n })\n },\n })),\n )\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\n\nexport const Family = Schema.String.pipe(Schema.brand(\"Model.Family\"))\nexport type Family = typeof Family.Type\n\nexport type ReasoningField = \"reasoning\" | \"reasoning_content\" | \"reasoning_text\" | (string & {})\nexport const ReasoningField: Schema.Codec<ReasoningField> = Schema.Union([\n Schema.Literals([\"reasoning\", \"reasoning_content\", \"reasoning_text\"]),\n Schema.String,\n]).annotate({ identifier: \"Model.ReasoningField\" })\n\nexport const MaxTokensField = Schema.Literals([\"max_completion_tokens\", \"max_tokens\"]).annotate({\n identifier: \"Model.MaxTokensField\",\n})\nexport type MaxTokensField = typeof MaxTokensField.Type\n\nexport interface Compatibility extends Schema.Schema.Type<typeof Compatibility> {}\nexport const Compatibility = Schema.Struct({\n reasoningField: ReasoningField.pipe(optional),\n maxTokensField: MaxTokensField.pipe(optional),\n requireFinishReason: Schema.Boolean.pipe(optional),\n requireAssistantAfterTool: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Model.Compatibility\" })\n\nexport interface Capabilities extends Schema.Schema.Type<typeof Capabilities> {}\nexport const Capabilities = Schema.Struct({\n tools: Schema.Boolean,\n input: Schema.Array(Schema.String),\n output: Schema.Array(Schema.String),\n responsesWebsockets: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Model.Capabilities\" })\n\nexport interface Cost extends Schema.Schema.Type<typeof Cost> {}\nexport const Cost = Schema.Struct({\n tier: Schema.Struct({\n type: Schema.tag(\"context\"),\n size: Schema.Int,\n }).pipe(optional),\n input: Money.USDPerMillionTokens,\n output: Money.USDPerMillionTokens,\n cache: Schema.Struct({\n read: Money.USDPerMillionTokens,\n write: Money.USDPerMillionTokens,\n }),\n}).annotate({ identifier: \"Model.Cost\" })\n\nexport interface Variant extends Schema.Schema.Type<typeof Variant> {}\nexport const Variant = Schema.Struct({\n id: VariantID,\n ...Provider.Overlays,\n}).annotate({ identifier: \"Model.Variant\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n modelID: ID,\n providerID: Provider.ID,\n family: Family.pipe(optional),\n name: Schema.String,\n compatibility: Compatibility.pipe(optional),\n package: Provider.Package.pipe(optional),\n ...Provider.Overlays,\n capabilities: Capabilities,\n variants: Schema.Array(Variant),\n time: Schema.Struct({\n released: Schema.Finite,\n }),\n cost: Schema.Array(Cost),\n status: Schema.Literals([\"alpha\", \"beta\", \"deprecated\", \"active\"]),\n enabled: Schema.Boolean,\n limit: Schema.Struct({\n context: Schema.Int,\n input: Schema.Int.pipe(optional),\n output: Schema.Int,\n }),\n})\n .annotate({ identifier: \"Model.Info\" })\n .pipe(\n statics(() => ({\n default: (providerID: Provider.ID, id: ID) =>\n ({\n id,\n modelID: id,\n providerID,\n name: id,\n capabilities: { tools: true, input: [\"text\", \"image\"], output: [\"text\"] },\n variants: [],\n time: { released: 0 },\n cost: [],\n status: \"active\",\n enabled: true,\n limit: { context: 200_000, output: 32_000 },\n }) satisfies Info,\n })),\n )\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "826965387D26661064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/start.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.start,\n Effect.fn(\"cli.service.start\")(function* () {\n const transport = yield* Service.ensure(yield* ServiceConfig.options())\n process.stdout.write(transport.url + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,MACnC,EAAO,GAAG,mBAAmB,EAAE,SAAU,EAAG,CAC1C,IAAM,EAAY,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EACtE,QAAQ,OAAO,MAAM,EAAU,IAAM,CAAG,EACzC,CACH", | ||
| "debugId": "FD7250C66C68496964756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode, type PluginInfo } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { Config } from \"../../../config\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { discoverTuiPlugins, tuiPluginDirectories } from \"@opencode-ai/tui/plugin/discovery\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.list,\n Effect.fn(\"cli.plugin.list\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.plugin.list({ location: { directory: process.cwd() } }))\n const config = yield* Config.Service\n const global = yield* Global.Service\n const info = yield* config.get()\n const discovered = yield* Effect.promise(() =>\n tuiPluginDirectories(process.cwd(), global.config).then(discoverTuiPlugins),\n )\n const output = format(\n response.data,\n [\n ...(info.plugins ?? []).flatMap((entry) => {\n const target = typeof entry === \"string\" ? entry : entry.package\n return target.startsWith(\"-\") ? [] : [{ target, source: \"configured\" as const }]\n }),\n ...discovered.map((target) => ({ target, source: \"discovered\" as const })),\n ],\n input.builtin,\n )\n if (!output) {\n process.stdout.write(\"No plugins found\" + EOL)\n return\n }\n process.stdout.write(output + EOL)\n }),\n)\n\nexport function format(\n plugins: readonly PluginInfo[],\n tui: ReadonlyArray<{ readonly target: string; readonly source: \"configured\" | \"discovered\" }>,\n builtin = false,\n) {\n const server = plugins\n .filter((plugin) => builtin || plugin.source.type !== \"builtin\")\n .toSorted((a, b) => name(a).localeCompare(name(b)))\n .map((plugin) => `${name(plugin)} (${plugin.status})`)\n const advertised = plugins.flatMap((plugin) =>\n plugin.status === \"active\" && plugin.tui && plugin.source.type === \"package\"\n ? [{ target: plugin.source.package, source: \"advertised\" as const }]\n : [],\n )\n const targets = [...tui, ...advertised]\n .filter((plugin, index, all) => all.findIndex((candidate) => candidate.target === plugin.target) === index)\n .toSorted((a, b) => a.target.localeCompare(b.target))\n .map((plugin) => `${plugin.target} (${plugin.source})`)\n return [\n targets.length ? [\"TUI\", ...targets].join(EOL) : undefined,\n server.length ? [\"Server\", ...server].join(EOL) : undefined,\n ]\n .filter((section) => section !== undefined)\n .join(EOL + EOL)\n}\n\nfunction name(plugin: PluginInfo) {\n if (plugin.id) return plugin.id\n if (plugin.source.type === \"package\") return plugin.source.package\n if (plugin.source.type === \"local\") return plugin.source.path\n return plugin.source.type\n}\n" | ||
| ], | ||
| "mappings": ";o/BAAA,cAAS,WAWT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,KAClC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAW,MAAO,EAAO,QAAQ,IAAM,EAAO,OAAO,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EACrG,EAAS,MAAO,EAAO,QACvB,EAAS,MAAO,EAAO,QACvB,EAAO,MAAO,EAAO,IAAI,EACzB,EAAa,MAAO,EAAO,QAAQ,IACvC,EAAqB,QAAQ,IAAI,EAAG,EAAO,MAAM,EAAE,KAAK,CAAkB,CAC5E,EACM,EAAS,EACb,EAAS,KACT,CACE,IAAI,EAAK,SAAW,CAAC,GAAG,QAAQ,CAAC,IAAU,CACzC,IAAM,EAAS,OAAO,IAAU,SAAW,EAAQ,EAAM,QACzD,OAAO,EAAO,WAAW,GAAG,EAAI,CAAC,EAAI,CAAC,CAAE,SAAQ,OAAQ,YAAsB,CAAC,EAChF,EACD,GAAG,EAAW,IAAI,CAAC,KAAY,CAAE,SAAQ,OAAQ,YAAsB,EAAE,CAC3E,EACA,EAAM,OACR,EACA,GAAI,CAAC,EAAQ,CACX,QAAQ,OAAO,MAAM,mBAAqB,CAAG,EAC7C,OAEF,QAAQ,OAAO,MAAM,EAAS,CAAG,EAClC,CACH,EAEO,SAAS,CAAM,CACpB,EACA,EACA,EAAU,GACV,CACA,IAAM,EAAS,EACZ,OAAO,CAAC,IAAW,GAAW,EAAO,OAAO,OAAS,SAAS,EAC9D,SAAS,CAAC,EAAG,IAAM,EAAK,CAAC,EAAE,cAAc,EAAK,CAAC,CAAC,CAAC,EACjD,IAAI,CAAC,IAAW,GAAG,EAAK,CAAM,MAAM,EAAO,SAAS,EACjD,EAAa,EAAQ,QAAQ,CAAC,IAClC,EAAO,SAAW,UAAY,EAAO,KAAO,EAAO,OAAO,OAAS,UAC/D,CAAC,CAAE,OAAQ,EAAO,OAAO,QAAS,OAAQ,YAAsB,CAAC,EACjE,CAAC,CACP,EACM,EAAU,CAAC,GAAG,EAAK,GAAG,CAAU,EACnC,OAAO,CAAC,EAAQ,EAAO,IAAQ,EAAI,UAAU,CAAC,IAAc,EAAU,SAAW,EAAO,MAAM,IAAM,CAAK,EACzG,SAAS,CAAC,EAAG,IAAM,EAAE,OAAO,cAAc,EAAE,MAAM,CAAC,EACnD,IAAI,CAAC,IAAW,GAAG,EAAO,WAAW,EAAO,SAAS,EACxD,MAAO,CACL,EAAQ,OAAS,CAAC,MAAO,GAAG,CAAO,EAAE,KAAK,CAAG,EAAI,OACjD,EAAO,OAAS,CAAC,SAAU,GAAG,CAAM,EAAE,KAAK,CAAG,EAAI,MACpD,EACG,OAAO,CAAC,IAAY,IAAY,MAAS,EACzC,KAAK,EAAM,CAAG,EAGnB,SAAS,CAAI,CAAC,EAAoB,CAChC,GAAI,EAAO,GAAI,OAAO,EAAO,GAC7B,GAAI,EAAO,OAAO,OAAS,UAAW,OAAO,EAAO,OAAO,QAC3D,GAAI,EAAO,OAAO,OAAS,QAAS,OAAO,EAAO,OAAO,KACzD,OAAO,EAAO,OAAO", | ||
| "debugId": "5D1E014186FB29CA64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/gemini.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option, Schema } from \"effect\"\nimport { Tool } from \"@opencode-ai/schema/tool\"\nimport { Route } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport {\n LLMEvent,\n Usage,\n type FinishReason,\n type JsonSchema,\n type LLMRequest,\n type MediaPart,\n type ProviderMetadata,\n type TextPart,\n type ToolCallPart,\n type ToolDefinition,\n} from \"../schema/index.js\"\nimport { JsonObject, optionalArray, optionalNull, ProviderShared } from \"./shared.js\"\nimport { GeminiToolSchema } from \"./utils/gemini-tool-schema.js\"\nimport { Lifecycle } from \"./utils/lifecycle.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\n\nconst ADAPTER = \"gemini\"\n// Google documents this sentinel for replaying Gemini 3 function calls after their original signature was lost.\nconst SKIP_THOUGHT_SIGNATURE_VALIDATOR = \"skip_thought_signature_validator\"\nexport const DEFAULT_BASE_URL = \"https://generativelanguage.googleapis.com/v1beta\"\n\n// Gemini 3 rejects replayed function calls without a thought signature. Google's SDKs avoid that in normal chats by\n// retaining complete model responses, but OpenCode reconstructs durable history and may encounter an unsigned call\n// from an older or external session. Model IDs are open-ended, so unknown Gemini aliases inherit current behavior.\nconst requiresThoughtSignatureFallback = (modelID: string) => {\n if (!/(^|\\/)gemini-/i.test(modelID)) return false\n if (/(^|\\/)gemini-(?:1|2)(?:[.-]|$)/i.test(modelID)) return false\n if (/(^|\\/)gemini-pro(?:-vision)?$/i.test(modelID)) return false\n return !/(^|\\/)gemini-robotics-er-1\\.5(?:[.-]|$)/i.test(modelID)\n}\n\n// Gemini 3 accepts media nested inside function responses; matched Gemini 2.5 variants reject it,\n// so their tool-result attachments lower as a separate user turn instead.\nconst routesLegacyToolMedia = (modelID: string) => /gemini-2[.-]5(?:[.-]|$)/i.test(modelID)\n\n// Blacklist: Gemini 1.x/2.x ignore or reject explicit function call ids.\n// Every other model id (Gemini 3+, gemma, anything unrecognized) gets them.\nconst omitsFunctionCallIds = (modelID: string) => {\n const match = /^gemini(?:-live)?-(\\d+)/i.exec(modelID)\n return match !== null && Number(match[1]) < 3\n}\n\nexport interface OptionsInput {\n readonly [key: string]: unknown\n readonly cachedContent?: string\n readonly safetySettings?: ReadonlyArray<{\n readonly category:\n | \"HARM_CATEGORY_UNSPECIFIED\"\n | \"HARM_CATEGORY_HATE_SPEECH\"\n | \"HARM_CATEGORY_DANGEROUS_CONTENT\"\n | \"HARM_CATEGORY_HARASSMENT\"\n | \"HARM_CATEGORY_SEXUALLY_EXPLICIT\"\n | \"HARM_CATEGORY_CIVIC_INTEGRITY\"\n | (string & {})\n readonly threshold:\n | \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\"\n | \"BLOCK_LOW_AND_ABOVE\"\n | \"BLOCK_MEDIUM_AND_ABOVE\"\n | \"BLOCK_ONLY_HIGH\"\n | \"BLOCK_NONE\"\n | \"OFF\"\n | (string & {})\n }>\n readonly serviceTier?: \"standard\" | \"flex\" | \"priority\" | (string & {})\n readonly thinkingConfig?: {\n readonly thinkingBudget?: number\n readonly includeThoughts?: boolean\n readonly thinkingLevel?: \"minimal\" | \"low\" | \"medium\" | \"high\" | (string & {})\n }\n}\n\nexport type ProviderOptionsInput = OptionsInput\n\n// =============================================================================\n// Request Body Schema\n// =============================================================================\n// Gemini is known to send explicit `null` for optional streaming fields\n// (usage counts, flags, whole subtrees), so every response-side optional uses\n// `optionalNull` instead of bare `Schema.optional`. The same part/content\n// schemas lower the outbound request body; encoding drops `undefined` keys,\n// so the shared schemas stay safe there.\nconst GeminiTextPart = Schema.Struct({\n text: Schema.String,\n thought: optionalNull(Schema.Boolean),\n thoughtSignature: optionalNull(Schema.String),\n})\n\nconst GeminiInlineDataPart = Schema.Struct({\n inlineData: Schema.Struct({\n mimeType: Schema.String,\n data: Schema.String,\n }),\n})\ntype GeminiInlineDataPart = Schema.Schema.Type<typeof GeminiInlineDataPart>\n\nconst GeminiFunctionCallPart = Schema.Struct({\n functionCall: Schema.Struct({\n id: optionalNull(Schema.String),\n name: Schema.String,\n args: Schema.optional(Schema.Unknown),\n }),\n thoughtSignature: optionalNull(Schema.String),\n})\n\nconst GeminiFunctionResponsePart = Schema.Struct({\n functionResponse: Schema.Struct({\n id: Schema.optional(Schema.String),\n name: Schema.String,\n response: Schema.Unknown,\n parts: Schema.optional(Schema.Array(GeminiInlineDataPart)),\n }),\n})\n\nconst GeminiContentPart = Schema.Union([\n GeminiTextPart,\n GeminiInlineDataPart,\n GeminiFunctionCallPart,\n GeminiFunctionResponsePart,\n])\nconst decodeGeminiContentPart = Schema.decodeUnknownOption(GeminiContentPart)\n\nconst GeminiContent = Schema.Struct({\n role: optionalNull(Schema.Literals([\"user\", \"model\"])),\n parts: optionalNull(Schema.Array(GeminiContentPart)),\n})\ntype GeminiContent = Schema.Schema.Type<typeof GeminiContent>\n\nconst GeminiResponseContent = Schema.Struct({\n role: optionalNull(Schema.Literals([\"user\", \"model\"])),\n parts: optionalNull(Schema.Array(Schema.Unknown)),\n})\n\nconst GeminiSystemInstruction = Schema.Struct({\n parts: Schema.Array(Schema.Struct({ text: Schema.String })),\n})\n\nconst GeminiFunctionDeclaration = Schema.Struct({\n name: Schema.String,\n description: Schema.String,\n parameters: Schema.optional(JsonObject),\n})\n\nconst GeminiTool = Schema.Struct({\n functionDeclarations: Schema.Array(GeminiFunctionDeclaration),\n})\n\nconst GeminiToolConfig = Schema.Struct({\n functionCallingConfig: Schema.Struct({\n mode: Schema.Literals([\"AUTO\", \"NONE\", \"ANY\"]),\n allowedFunctionNames: optionalArray(Schema.String),\n }),\n})\n\nconst GeminiThinkingConfig = Schema.Struct({\n thinkingBudget: Schema.optional(Schema.Number),\n includeThoughts: Schema.optional(Schema.Boolean),\n thinkingLevel: Schema.optional(Schema.String),\n})\n\nconst GeminiSafetySetting = Schema.Struct({\n category: Schema.String,\n threshold: Schema.String,\n})\n\nconst GeminiGenerationConfig = Schema.Struct({\n maxOutputTokens: Schema.optional(Schema.Number),\n temperature: Schema.optional(Schema.Number),\n topP: Schema.optional(Schema.Number),\n topK: Schema.optional(Schema.Number),\n frequencyPenalty: Schema.optional(Schema.Number),\n presencePenalty: Schema.optional(Schema.Number),\n seed: Schema.optional(Schema.Number),\n stopSequences: optionalArray(Schema.String),\n thinkingConfig: Schema.optional(GeminiThinkingConfig),\n})\n\nconst GeminiBodyFields = {\n cachedContent: Schema.optional(Schema.String),\n contents: Schema.Array(GeminiContent),\n labels: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n safetySettings: optionalArray(GeminiSafetySetting),\n serviceTier: Schema.optional(Schema.String),\n systemInstruction: Schema.optional(GeminiSystemInstruction),\n tools: optionalArray(GeminiTool),\n toolConfig: Schema.optional(GeminiToolConfig),\n generationConfig: Schema.optional(GeminiGenerationConfig),\n}\nconst GeminiBody = Schema.Struct(GeminiBodyFields)\nexport type GeminiBody = Schema.Schema.Type<typeof GeminiBody>\n\nconst GeminiUsage = Schema.Struct({\n cachedContentTokenCount: optionalNull(Schema.Number),\n thoughtsTokenCount: optionalNull(Schema.Number),\n promptTokenCount: optionalNull(Schema.Number),\n candidatesTokenCount: optionalNull(Schema.Number),\n totalTokenCount: optionalNull(Schema.Number),\n})\ntype GeminiUsage = Schema.Schema.Type<typeof GeminiUsage>\n\nconst GeminiCandidate = Schema.Struct({\n content: optionalNull(GeminiResponseContent),\n finishReason: optionalNull(Schema.String),\n})\n\nconst GeminiPromptFeedback = Schema.StructWithRest(\n Schema.Struct({\n blockReason: optionalNull(Schema.String),\n blockReasonMessage: optionalNull(Schema.String),\n safetyRatings: optionalNull(Schema.Unknown),\n }),\n [Schema.Record(Schema.String, Schema.Unknown)],\n)\ntype GeminiPromptFeedback = Schema.Schema.Type<typeof GeminiPromptFeedback>\n\nconst GeminiEvent = Schema.Struct({\n candidates: optionalNull(Schema.Array(GeminiCandidate)),\n promptFeedback: optionalNull(GeminiPromptFeedback),\n usageMetadata: optionalNull(GeminiUsage),\n})\ntype GeminiEvent = Schema.Schema.Type<typeof GeminiEvent>\n\ninterface ParserState {\n readonly route: string\n readonly finishReason?: string\n readonly hasToolCalls: boolean\n readonly promptFeedback?: GeminiPromptFeedback\n readonly usage?: Usage\n readonly lifecycle: Lifecycle.State\n readonly reasoningSignature?: string\n readonly textSignature?: string\n readonly seenCallIds?: ReadonlySet<string>\n}\n\n// =============================================================================\n// Tool Schema Conversion\n// =============================================================================\n// Tool-schema conversion has two distinct concerns:\n//\n// 1. Sanitize — fix common authoring mistakes Gemini rejects: integer/number\n// enums (must be strings), `required` entries that don't match a property,\n// untyped arrays (`items` must be present), and `properties`/`required`\n// keys on non-object scalars. Mirrors OpenCode's historical Gemini rules.\n//\n// 2. Project — lossy mapping from JSON Schema to Gemini's schema dialect:\n// drop empty root parameter schemas while preserving nested empty objects,\n// expand type arrays into `anyOf`, derive `nullable: true` from null members,\n// coerce `const` to `[const]` enum, recurse properties/items, and propagate\n// only an allowlisted set of keys (description, required, format, type,\n// nullable, enum, properties, items, allOf, anyOf, oneOf, minLength).\n// Anything outside the allowlist (e.g. `additionalProperties`, `$ref`) is\n// silently dropped.\n//\n// Sanitize runs first, then project. The implementation lives in\n// `utils/gemini-tool-schema` so this protocol keeps the same shape as the other\n// provider protocols.\n\n// =============================================================================\n// Request Lowering\n// =============================================================================\nconst lowerTool = (tool: ToolDefinition, inputSchema: JsonSchema) => ({\n name: tool.name,\n description: tool.description,\n parameters: GeminiToolSchema.convert(inputSchema),\n})\n\nconst lowerToolConfig = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>) =>\n ProviderShared.matchToolChoice(\"Gemini\", toolChoice, {\n auto: () => ({ functionCallingConfig: { mode: \"AUTO\" as const } }),\n none: () => ({ functionCallingConfig: { mode: \"NONE\" as const } }),\n required: () => ({ functionCallingConfig: { mode: \"ANY\" as const } }),\n tool: (name) => ({ functionCallingConfig: { mode: \"ANY\" as const, allowedFunctionNames: [name] } }),\n })\n\nconst lowerUserPart = Effect.fn(\"Gemini.lowerUserPart\")(function* (part: TextPart | MediaPart) {\n if (part.type === \"text\") return { text: part.text }\n const media = ProviderShared.normalizeMedia(part)\n return { inlineData: { mimeType: media.mime, data: media.base64 } }\n})\n\nconst googleMetadata = (metadata: Record<string, unknown>): ProviderMetadata => ({ google: metadata })\n\nconst thoughtSignature = (providerMetadata: ProviderMetadata | undefined) => {\n const google = providerMetadata?.google\n return ProviderShared.isRecord(google) && typeof google.thoughtSignature === \"string\"\n ? google.thoughtSignature\n : undefined\n}\n\nconst lowerToolCall = (part: ToolCallPart, omitIds: boolean) => ({\n functionCall: { ...(omitIds ? {} : { id: part.id }), name: part.name, args: part.input },\n thoughtSignature: thoughtSignature(part.providerMetadata),\n})\n\nconst lowerMessages = Effect.fn(\"Gemini.lowerMessages\")(function* (request: LLMRequest) {\n const contents: GeminiContent[] = []\n const omitCallIds = omitsFunctionCallIds(request.model.id)\n const legacyToolMedia = routesLegacyToolMedia(request.model.id)\n let pendingMedia: GeminiInlineDataPart[] | undefined\n const flushMedia = () => {\n if (!pendingMedia) return\n contents.push({ role: \"user\", parts: [{ text: \"Attached media from tool result:\" }, ...pendingMedia] })\n pendingMedia = undefined\n }\n\n for (const message of request.messages) {\n if (message.role !== \"tool\") flushMedia()\n if (message.role === \"system\") {\n const part = yield* ProviderShared.wrappedSystemUpdate(\"Gemini\", message)\n const previous = contents.at(-1)\n // Gemini rejects a continuation whose function-response turn carries extra\n // parts, so an update after a tool result starts its own user turn.\n if (previous?.role === \"user\" && !(previous.parts ?? []).some((item) => \"functionResponse\" in item))\n contents[contents.length - 1] = { role: \"user\", parts: [...(previous.parts ?? []), { text: part.text }] }\n else contents.push({ role: \"user\", parts: [{ text: part.text }] })\n continue\n }\n\n if (message.role === \"user\") {\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"media\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"user\", [\"text\", \"media\"])\n parts.push(yield* lowerUserPart(part))\n }\n contents.push({ role: \"user\", parts })\n continue\n }\n\n if (message.role === \"assistant\") {\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n // Parallel Gemini 3 calls may carry one signature on the first call; unsigned sibling calls are valid.\n let hasSignedToolCall = false\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"reasoning\", \"tool-call\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"assistant\", [\"text\", \"reasoning\", \"tool-call\"])\n if (part.type === \"text\") {\n parts.push({ text: part.text, thoughtSignature: thoughtSignature(part.providerMetadata) })\n continue\n }\n if (part.type === \"reasoning\") {\n parts.push({ text: part.text, thought: true, thoughtSignature: thoughtSignature(part.providerMetadata) })\n continue\n }\n if (part.type === \"tool-call\") {\n const lowered = lowerToolCall(part, omitCallIds)\n const signature = lowered.thoughtSignature\n parts.push({\n ...lowered,\n thoughtSignature:\n signature ??\n (requiresThoughtSignatureFallback(request.model.id) && !hasSignedToolCall\n ? SKIP_THOUGHT_SIGNATURE_VALIDATOR\n : undefined),\n })\n if (signature !== undefined) hasSignedToolCall = true\n continue\n }\n }\n contents.push({ role: \"model\", parts })\n continue\n }\n\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"tool-result\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"tool\", [\"tool-result\"])\n if (part.result.type !== \"content\") {\n parts.push({\n functionResponse: {\n ...(omitCallIds ? {} : { id: part.id }),\n name: part.name,\n response: {\n name: part.name,\n content: ProviderShared.toolResultText(part),\n },\n },\n })\n continue\n }\n const content: ReadonlyArray<Tool.Content> = part.result.value\n const text = content.filter((item) => item.type === \"text\").map((item) => item.text)\n const media: GeminiInlineDataPart[] = []\n for (const item of content) {\n if (item.type === \"text\") continue\n const value = ProviderShared.normalizeToolFile(item)\n media.push({ inlineData: { mimeType: value.mime, data: value.base64 } })\n }\n if (legacyToolMedia && media.length > 0) (pendingMedia ??= []).push(...media)\n parts.push({\n functionResponse: {\n ...(omitCallIds ? {} : { id: part.id }),\n name: part.name,\n response: {\n name: part.name,\n content: text.join(\"\\n\"),\n },\n parts: legacyToolMedia || media.length === 0 ? undefined : media,\n },\n })\n }\n // Gemini requires every response to a parallel call batch in one user turn,\n // so consecutive tool results join the open function-response turn.\n const previous = contents.at(-1)\n if (previous?.role === \"user\" && (previous.parts ?? []).some((item) => \"functionResponse\" in item))\n contents[contents.length - 1] = { role: \"user\", parts: [...(previous.parts ?? []), ...parts] }\n else contents.push({ role: \"user\", parts })\n }\n\n flushMedia()\n return contents\n})\n\nconst resolveOptions = (request: LLMRequest) => {\n const input = request.providerOptions\n const value = input?.thinkingConfig\n const thinkingConfig = {\n thinkingBudget:\n ProviderShared.isRecord(value) && typeof value.thinkingBudget === \"number\" ? value.thinkingBudget : undefined,\n includeThoughts:\n ProviderShared.isRecord(value) && typeof value.includeThoughts === \"boolean\"\n ? value.includeThoughts\n : ProviderShared.isRecord(value)\n ? true\n : undefined,\n thinkingLevel:\n ProviderShared.isRecord(value) && typeof value.thinkingLevel === \"string\" ? value.thinkingLevel : undefined,\n }\n return {\n cachedContent: typeof input?.cachedContent === \"string\" ? input.cachedContent : undefined,\n safetySettings: mapSafetySettings(input?.safetySettings),\n serviceTier: typeof input?.serviceTier === \"string\" ? input.serviceTier : undefined,\n thinkingConfig: Object.values(thinkingConfig).some((item) => item !== undefined) ? thinkingConfig : undefined,\n }\n}\n\nfunction mapSafetySettings(value: unknown) {\n if (!Array.isArray(value)) return undefined\n const settings = value.flatMap((item) =>\n ProviderShared.isRecord(item) && typeof item.category === \"string\" && typeof item.threshold === \"string\"\n ? [{ category: item.category, threshold: item.threshold }]\n : [],\n )\n return settings\n}\n\nconst fromRequest = Effect.fn(\"Gemini.fromRequest\")(function* (request: LLMRequest) {\n const hasTools = request.tools.length > 0\n const generation = request.generation\n const options = resolveOptions(request)\n const toolSchemaCompatibility = request.model.compatibility?.toolSchema\n const generationConfig = {\n maxOutputTokens: generation?.maxTokens,\n temperature: generation?.temperature,\n topP: generation?.topP,\n topK: generation?.topK,\n frequencyPenalty: generation?.frequencyPenalty,\n presencePenalty: generation?.presencePenalty,\n seed: generation?.seed,\n stopSequences: generation?.stop,\n thinkingConfig: options.thinkingConfig,\n }\n\n return {\n cachedContent: options.cachedContent,\n contents: yield* lowerMessages(request),\n safetySettings: options.safetySettings,\n serviceTier: options.serviceTier,\n systemInstruction:\n request.system.length === 0 ? undefined : { parts: [{ text: ProviderShared.joinText(request.system) }] },\n tools: hasTools\n ? [\n {\n functionDeclarations: request.tools.map((tool) =>\n lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)),\n ),\n },\n ]\n : undefined,\n toolConfig: hasTools && request.toolChoice ? yield* lowerToolConfig(request.toolChoice) : undefined,\n generationConfig: Object.values(generationConfig).some((value) => value !== undefined)\n ? generationConfig\n : undefined,\n }\n})\n\n// =============================================================================\n// Stream Parsing\n// =============================================================================\n// Gemini reports `promptTokenCount` (inclusive total) with a\n// `cachedContentTokenCount` subset. `candidatesTokenCount` is *exclusive*\n// of `thoughtsTokenCount` — visible-only, not a total — so we sum the two\n// to produce the inclusive `outputTokens` the rest of the contract expects.\nconst mapUsage = (usage: GeminiUsage | undefined) => {\n if (!usage) return undefined\n // Explicit provider nulls decode as `null`; normalize to `undefined` so the\n // token arithmetic below treats them like absent counts.\n const promptTokens = usage.promptTokenCount ?? undefined\n const cached = usage.cachedContentTokenCount ?? undefined\n const thoughts = usage.thoughtsTokenCount ?? undefined\n const visible = usage.candidatesTokenCount ?? undefined\n const nonCached = ProviderShared.subtractTokens(promptTokens, cached)\n // `candidatesTokenCount` is visible-only; sum with thoughts to produce the\n // inclusive `outputTokens` the contract expects. Only compute the total\n // when the visible component is reported — otherwise we'd fabricate an\n // inclusive number from a partial breakdown.\n const outputTokens = visible !== undefined ? visible + (thoughts ?? 0) : undefined\n return new Usage({\n inputTokens: promptTokens,\n outputTokens,\n nonCachedInputTokens: nonCached,\n cacheReadInputTokens: cached,\n reasoningTokens: thoughts,\n totalTokens: ProviderShared.totalTokens(promptTokens, outputTokens, usage.totalTokenCount ?? undefined),\n providerMetadata: { google: usage },\n })\n}\n\nconst mapFinishReason = (finishReason: string | undefined, hasToolCalls: boolean): FinishReason => {\n if (finishReason === undefined) return hasToolCalls ? \"tool-calls\" : \"unknown\"\n if (finishReason === \"STOP\") return hasToolCalls ? \"tool-calls\" : \"stop\"\n if (finishReason === \"MAX_TOKENS\") return \"length\"\n if (\n finishReason === \"IMAGE_SAFETY\" ||\n finishReason === \"RECITATION\" ||\n finishReason === \"SAFETY\" ||\n finishReason === \"BLOCKLIST\" ||\n finishReason === \"PROHIBITED_CONTENT\" ||\n finishReason === \"SPII\" ||\n finishReason === \"MODEL_ARMOR\" ||\n finishReason === \"IMAGE_PROHIBITED_CONTENT\" ||\n finishReason === \"IMAGE_RECITATION\" ||\n finishReason === \"LANGUAGE\"\n )\n return \"content-filter\"\n if (\n finishReason === \"MALFORMED_FUNCTION_CALL\" ||\n finishReason === \"UNEXPECTED_TOOL_CALL\" ||\n finishReason === \"NO_IMAGE\" ||\n finishReason === \"TOO_MANY_TOOL_CALLS\" ||\n finishReason === \"MISSING_THOUGHT_SIGNATURE\" ||\n finishReason === \"MALFORMED_RESPONSE\"\n )\n return \"error\"\n return \"unknown\"\n}\n\nconst finish = (state: ParserState): ReadonlyArray<LLMEvent> => {\n // `?? undefined` normalizes an explicit `null` blockReason back to absent so\n // the \"nothing to finish\" check below keeps its meaning.\n const promptBlockReason =\n state.finishReason === undefined ? (state.promptFeedback?.blockReason ?? undefined) : undefined\n const finishReason = state.finishReason ?? promptBlockReason\n if (finishReason === undefined && state.usage === undefined) return []\n\n const events: LLMEvent[] = []\n let lifecycle = state.lifecycle\n if (state.reasoningSignature !== undefined)\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n googleMetadata({ thoughtSignature: state.reasoningSignature }),\n )\n if (state.textSignature !== undefined)\n lifecycle = Lifecycle.textEnd(lifecycle, events, \"text-0\", googleMetadata({ thoughtSignature: state.textSignature }))\n Lifecycle.finish(lifecycle, events, {\n reason: {\n normalized:\n promptBlockReason === undefined ? mapFinishReason(finishReason, state.hasToolCalls) : \"content-filter\",\n raw: finishReason,\n },\n usage: state.usage,\n providerMetadata:\n state.promptFeedback === undefined ? undefined : googleMetadata({ promptFeedback: state.promptFeedback }),\n })\n return events\n}\n\nconst step = (state: ParserState, event: GeminiEvent) => {\n const nextState = {\n ...state,\n promptFeedback: event.promptFeedback ?? state.promptFeedback,\n usage: event.usageMetadata ? (mapUsage(event.usageMetadata) ?? state.usage) : state.usage,\n }\n const candidate = event.candidates?.[0]\n if (!candidate?.content)\n return Effect.succeed([\n { ...nextState, finishReason: candidate?.finishReason ?? nextState.finishReason },\n [],\n ] as const)\n\n const events: LLMEvent[] = []\n let hasToolCalls = nextState.hasToolCalls\n let lifecycle = nextState.lifecycle\n let reasoningSignature = nextState.reasoningSignature\n let textSignature = nextState.textSignature\n // Supplier ids must be tracked across chunks of the same response, not just within one event's parts.\n const seenCallIds = new Set(nextState.seenCallIds)\n\n for (const input of candidate.content.parts ?? []) {\n if (\n ProviderShared.isRecord(input) &&\n !(\"text\" in input) &&\n !(\"inlineData\" in input) &&\n !(\"functionCall\" in input) &&\n !(\"functionResponse\" in input)\n )\n continue\n const decoded = decodeGeminiContentPart(input)\n if (Option.isNone(decoded))\n return Effect.fail(\n ProviderShared.eventError(ADAPTER, `Invalid ${state.route} stream event`, ProviderShared.encodeJson(event)),\n )\n const part = decoded.value\n const signature = \"thoughtSignature\" in part && part.thoughtSignature ? part.thoughtSignature : undefined\n // Gemini attaches replay signatures to thought parts, visible text, or function calls;\n // each block kind must retain the signature attached to its own parts.\n if (signature !== undefined && \"thought\" in part && part.thought) reasoningSignature = signature\n else if (signature !== undefined && \"text\" in part) textSignature = signature\n if (\"text\" in part && part.text.length > 0) {\n if (part.thought) {\n lifecycle = Lifecycle.reasoningDelta(\n lifecycle,\n events,\n \"reasoning-0\",\n part.text,\n signature ? googleMetadata({ thoughtSignature: signature }) : undefined,\n )\n continue\n }\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined,\n )\n lifecycle = Lifecycle.textDelta(\n lifecycle,\n events,\n \"text-0\",\n part.text,\n textSignature ? googleMetadata({ thoughtSignature: textSignature }) : undefined,\n )\n textSignature = undefined\n continue\n }\n\n if (\"functionCall\" in part) {\n const input = part.functionCall.args === undefined ? {} : part.functionCall.args\n // Gemini 2.0+ supplies a unique function call ID on the part; when omitted (e.g. Gemini 1.5),\n // generate a globally unique ID rather than a per-request counter to prevent cross-request collisions in downstream registries.\n // A repeated supplier id would replay as two identical calls, so only the first occurrence keeps it.\n // A `null` supplier id normalizes to absent so the generated-id fallback applies.\n const supplied = part.functionCall.id ?? undefined\n const duplicate = supplied !== undefined && seenCallIds.has(supplied)\n if (supplied !== undefined) seenCallIds.add(supplied)\n const id = supplied !== undefined && !duplicate ? supplied : `tool_${crypto.randomUUID().replaceAll(\"-\", \"\")}`\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined,\n )\n lifecycle = Lifecycle.stepStart(lifecycle, events)\n events.push(\n LLMEvent.toolCall({\n id,\n name: part.functionCall.name,\n input,\n providerMetadata:\n part.thoughtSignature ? googleMetadata({ thoughtSignature: part.thoughtSignature }) : undefined,\n }),\n )\n hasToolCalls = true\n }\n }\n\n return Effect.succeed([\n {\n ...nextState,\n hasToolCalls,\n lifecycle,\n reasoningSignature,\n textSignature,\n seenCallIds,\n finishReason: candidate.finishReason ?? nextState.finishReason,\n },\n events,\n ] as const)\n}\n\n// =============================================================================\n// Protocol And Gemini Route\n// =============================================================================\n/**\n * The Gemini protocol — request body construction, body schema, and the\n * streaming-event state machine shared by Google AI Studio and Vertex Gemini.\n */\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: GeminiBody,\n from: fromRequest,\n },\n stream: {\n event: Protocol.jsonEvent(GeminiEvent),\n initial: (request) => ({\n route: `${request.model.provider}/${request.model.route.id}`,\n hasToolCalls: false,\n lifecycle: Lifecycle.initial(),\n }),\n step,\n onHalt: (state) => Effect.succeed(finish(state)),\n },\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"google\",\n providerMetadataKey: \"google\",\n protocol,\n // Gemini's path embeds the model id and pins SSE framing at the URL level.\n endpoint: Endpoint.path(({ request }) => `/models/${request.model.id}:streamGenerateContent?alt=sse`, {\n baseURL: DEFAULT_BASE_URL,\n }),\n auth: Auth.none,\n framing: Framing.sse,\n})\n\nexport * as Gemini from \"./gemini.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9A6D966F3C3E503964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/bedrock-event-stream.ts", "../ai/src/protocols/utils/bedrock-cache.ts", "../ai/src/protocols/utils/bedrock-media.ts", "../ai/src/protocols/bedrock-converse.ts", "../ai/src/providers/amazon-bedrock.ts"], | ||
| "sourcesContent": [ | ||
| "import { EventStreamCodec } from \"@smithy/eventstream-codec\"\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\"\nimport { Effect, Stream } from \"effect\"\nimport { Framing } from \"../route/framing.js\"\nimport { ProviderShared } from \"./shared.js\"\n\n// Bedrock streams responses using the AWS event stream binary protocol — each\n// frame is `[length:4][headers-length:4][prelude-crc:4][headers][payload][crc:4]`.\n// We use `@smithy/eventstream-codec` to validate framing and CRCs, then\n// reconstruct the JSON wrapping by `:event-type` so the chunk schema can match.\nconst eventCodec = new EventStreamCodec(toUtf8, fromUtf8)\nconst utf8 = new TextDecoder()\n\n// Cursor-tracking buffer state. Bytes accumulate in `buffer`; `offset` is the\n// read position. Reading by `subarray` is zero-copy. We only allocate a fresh\n// buffer when a new network chunk arrives and we need to append.\ninterface FrameBufferState {\n readonly buffer: Uint8Array\n readonly offset: number\n}\n\nconst initialFrameBuffer: FrameBufferState = { buffer: new Uint8Array(0), offset: 0 }\n\nconst appendChunk = (state: FrameBufferState, chunk: Uint8Array): FrameBufferState => {\n const remaining = state.buffer.length - state.offset\n // Compact: drop the consumed prefix and append the new chunk in one alloc.\n // This bounds buffer growth to at most one network chunk past the live\n // window, regardless of stream length.\n const next = new Uint8Array(remaining + chunk.length)\n next.set(state.buffer.subarray(state.offset), 0)\n next.set(chunk, remaining)\n return { buffer: next, offset: 0 }\n}\n\nconst consumeFrames = (route: string) => (state: FrameBufferState, chunk: Uint8Array) =>\n Effect.gen(function* () {\n let cursor = appendChunk(state, chunk)\n const out: object[] = []\n while (cursor.buffer.length - cursor.offset >= 4) {\n const view = cursor.buffer.subarray(cursor.offset)\n const totalLength = new DataView(view.buffer, view.byteOffset, view.byteLength).getUint32(0, false)\n if (view.length < totalLength) break\n\n const decoded = yield* Effect.try({\n try: () => eventCodec.decode(view.subarray(0, totalLength)),\n catch: (error) =>\n ProviderShared.eventError(\n route,\n `Failed to decode Bedrock Converse event-stream frame: ${\n error instanceof Error ? error.message : String(error)\n }`,\n ),\n })\n cursor = { buffer: cursor.buffer, offset: cursor.offset + totalLength }\n\n const messageType = decoded.headers[\":message-type\"]?.value\n if (messageType === \"error\") {\n const code = decoded.headers[\":error-code\"]?.value\n const message = decoded.headers[\":error-message\"]?.value\n return yield* ProviderShared.eventError(\n route,\n [code, message].filter((value): value is string => typeof value === \"string\").join(\": \") ||\n \"Bedrock Converse event-stream error\",\n )\n }\n const eventType =\n messageType === \"event\"\n ? decoded.headers[\":event-type\"]?.value\n : messageType === \"exception\"\n ? decoded.headers[\":exception-type\"]?.value\n : undefined\n if (typeof eventType !== \"string\") continue\n const payload = utf8.decode(decoded.body)\n if (!payload) continue\n // The AWS event stream pads short payloads with a `p` field. Drop it\n // before handing the object to the chunk schema. JSON decode goes\n // through the shared Schema-driven codec to satisfy the package rule\n // against ad-hoc `JSON.parse` calls.\n const parsed = (yield* ProviderShared.parseJson(\n route,\n payload,\n \"Failed to parse Bedrock Converse event-stream payload\",\n )) as Record<string, unknown>\n delete parsed.p\n out.push(messageType === \"exception\" ? { exception: { type: eventType, details: parsed } } : { [eventType]: parsed })\n }\n return [cursor, out] as const\n })\n\n/**\n * AWS event-stream framing for Bedrock Converse. Each frame is decoded by\n * `@smithy/eventstream-codec` (length + header + payload + CRC) and rewrapped\n * under its `:event-type` header so the chunk schema can match the JSON\n * payload directly.\n */\nexport const framing = (route: string): Framing.Definition<object> => ({\n id: \"aws-event-stream\",\n frame: (bytes) => bytes.pipe(Stream.mapAccumEffect(() => initialFrameBuffer, consumeFrames(route))),\n})\n\nexport * as BedrockEventStream from \"./bedrock-event-stream.js\"\n", | ||
| "import { Schema } from \"effect\"\nimport type { CacheHint } from \"../../schema/index.js\"\nimport { newBreakpoints, ttlBucket, type Breakpoints } from \"./cache.js\"\n\n// Bedrock cache markers are positional: emit a `cachePoint` block immediately\n// after the content the caller wants treated as a cacheable prefix. Bedrock\n// accepts optional `ttl: \"5m\" | \"1h\"` on cachePoint.\nexport const CachePointBlock = Schema.Struct({\n cachePoint: Schema.Struct({\n type: Schema.tag(\"default\"),\n ttl: Schema.optional(Schema.Literals([\"5m\", \"1h\"])),\n }),\n})\nexport type CachePointBlock = Schema.Schema.Type<typeof CachePointBlock>\n\n// Callers pass a shared counter through every `block()` call site so the\n// four-breakpoint budget is respected across `system`, `messages`, and `tools`.\nexport const BEDROCK_BREAKPOINT_CAP = 4\n\nexport type { Breakpoints } from \"./cache.js\"\nexport const breakpoints = () => newBreakpoints(BEDROCK_BREAKPOINT_CAP)\n\nconst DEFAULT_5M: CachePointBlock = { cachePoint: { type: \"default\" } }\nconst DEFAULT_1H: CachePointBlock = { cachePoint: { type: \"default\", ttl: \"1h\" } }\n\nexport const block = (breakpoints: Breakpoints, cache: CacheHint | undefined): CachePointBlock | undefined => {\n if (cache?.type !== \"ephemeral\" && cache?.type !== \"persistent\") return undefined\n if (breakpoints.remaining <= 0) {\n breakpoints.dropped += 1\n return undefined\n }\n breakpoints.remaining -= 1\n return ttlBucket(cache.ttlSeconds) === \"1h\" ? DEFAULT_1H : DEFAULT_5M\n}\n\nexport * as BedrockCache from \"./bedrock-cache.js\"\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport type { MediaPart } from \"../../schema/index.js\"\nimport { ProviderShared } from \"../shared.js\"\n\n// Bedrock Converse accepts image `format` as the file extension and\n// `source.bytes` as base64 in the JSON wire format.\nexport const ImageFormat = Schema.Literals([\"png\", \"jpeg\", \"gif\", \"webp\"])\nexport type ImageFormat = Schema.Schema.Type<typeof ImageFormat>\n\nexport const ImageBlock = Schema.Struct({\n image: Schema.Struct({\n format: ImageFormat,\n source: Schema.Struct({ bytes: Schema.String }),\n }),\n})\nexport type ImageBlock = Schema.Schema.Type<typeof ImageBlock>\n\n// Bedrock document blocks require a user-facing name so the model can refer to\n// the uploaded document.\nexport const DocumentFormat = Schema.Literals([\"pdf\", \"csv\", \"doc\", \"docx\", \"xls\", \"xlsx\", \"html\", \"txt\", \"md\"])\nexport type DocumentFormat = Schema.Schema.Type<typeof DocumentFormat>\n\nexport const DocumentBlock = Schema.Struct({\n document: Schema.Struct({\n format: DocumentFormat,\n name: Schema.String,\n source: Schema.Struct({ bytes: Schema.String }),\n }),\n})\nexport type DocumentBlock = Schema.Schema.Type<typeof DocumentBlock>\n\nconst IMAGE_FORMATS = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpeg\",\n \"image/jpg\": \"jpeg\",\n \"image/gif\": \"gif\",\n \"image/webp\": \"webp\",\n} as const satisfies Record<string, ImageFormat>\n\nconst DOCUMENT_FORMATS = {\n \"application/pdf\": \"pdf\",\n \"text/csv\": \"csv\",\n \"application/msword\": \"doc\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": \"docx\",\n \"application/vnd.ms-excel\": \"xls\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": \"xlsx\",\n \"text/html\": \"html\",\n \"text/plain\": \"txt\",\n \"text/markdown\": \"md\",\n} as const satisfies Record<string, DocumentFormat>\n\nconst documentBlock = (name: string, format: DocumentFormat, bytes: string): DocumentBlock => ({\n document: {\n format,\n name,\n source: { bytes },\n },\n})\n\n// Route by MIME. Known image/document formats lower into a typed block; anything\n// else fails with a clear error instead of silently degrading to a malformed\n// document block. Image MIME types not in `IMAGE_FORMATS` (e.g. `image/svg+xml`)\n// get an image-specific error so the caller knows it's a format-support issue,\n// not a kind-detection issue.\nexport const lower = Effect.fn(\"BedrockMedia.lower\")(function* (part: MediaPart) {\n const mime = part.mediaType.toLowerCase()\n const imageFormat = IMAGE_FORMATS[mime as keyof typeof IMAGE_FORMATS]\n if (imageFormat) {\n const media = ProviderShared.normalizeMedia(part)\n return { image: { format: imageFormat, source: { bytes: media.base64 } } } satisfies ImageBlock\n }\n if (mime.startsWith(\"image/\"))\n return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support image media type ${part.mediaType}`)\n const documentFormat = DOCUMENT_FORMATS[mime as keyof typeof DOCUMENT_FORMATS]\n if (documentFormat) {\n if (!part.filename)\n return yield* ProviderShared.invalidRequest(\"Bedrock Converse document media requires a filename\")\n const media = ProviderShared.normalizeMedia(part)\n return documentBlock(part.filename, documentFormat, media.base64)\n }\n return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support media type ${part.mediaType}`)\n})\n\nexport * as BedrockMedia from \"./bedrock-media.js\"\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport { Route } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport {\n AIError,\n LLMEvent,\n Usage,\n type CacheHint,\n type FinishReason,\n type FinishReasonDetails,\n type JsonSchema,\n type LLMRequest,\n type LanguageModelToolSchemaCompatibility,\n type ProviderMetadata,\n type ReasoningPart,\n type ToolCallPart,\n type ToolDefinition,\n type ToolResultPart,\n} from \"../schema/index.js\"\nimport { BedrockEventStream } from \"./bedrock-event-stream.js\"\nimport { classifyProviderFailure } from \"../provider-error.js\"\nimport { JsonObject, optionalArray, ProviderShared } from \"./shared.js\"\nimport { BedrockAuth } from \"./utils/bedrock-auth.js\"\nimport { BedrockCache } from \"./utils/bedrock-cache.js\"\nimport { BedrockMedia } from \"./utils/bedrock-media.js\"\nimport { Lifecycle } from \"./utils/lifecycle.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\nimport { ToolStream } from \"./utils/tool-stream.js\"\n\nconst ADAPTER = \"bedrock-converse\"\n\nexport type { Credentials as BedrockCredentials } from \"./utils/bedrock-auth.js\"\n\n// =============================================================================\n// Request Body Schema\n// =============================================================================\nconst BedrockTextBlock = Schema.Struct({\n text: Schema.String,\n})\ntype BedrockTextBlock = Schema.Schema.Type<typeof BedrockTextBlock>\n\nconst BedrockToolUseBlock = Schema.Struct({\n toolUse: Schema.Struct({\n toolUseId: Schema.String,\n name: Schema.String,\n input: Schema.Unknown,\n }),\n})\ntype BedrockToolUseBlock = Schema.Schema.Type<typeof BedrockToolUseBlock>\n\nconst BedrockToolResultContentItem = Schema.Union([\n Schema.Struct({ text: Schema.String }),\n Schema.Struct({ json: Schema.Unknown }),\n BedrockMedia.ImageBlock,\n BedrockMedia.DocumentBlock,\n])\n\nconst BedrockToolResultBlock = Schema.Struct({\n toolResult: Schema.Struct({\n toolUseId: Schema.String,\n content: Schema.Array(BedrockToolResultContentItem),\n status: Schema.optional(Schema.Literals([\"success\", \"error\"])),\n }),\n})\ntype BedrockToolResultBlock = Schema.Schema.Type<typeof BedrockToolResultBlock>\n\nconst BedrockReasoningBlock = Schema.Struct({\n reasoningContent: Schema.Union([\n Schema.Struct({\n reasoningText: Schema.Struct({\n text: Schema.String,\n signature: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({ redactedContent: Schema.String }),\n ]),\n})\n\nconst BedrockUserBlock = Schema.Union([\n BedrockTextBlock,\n BedrockMedia.ImageBlock,\n BedrockMedia.DocumentBlock,\n BedrockToolResultBlock,\n BedrockCache.CachePointBlock,\n])\ntype BedrockUserBlock = Schema.Schema.Type<typeof BedrockUserBlock>\n\nconst BedrockAssistantBlock = Schema.Union([\n BedrockTextBlock,\n BedrockReasoningBlock,\n BedrockToolUseBlock,\n BedrockCache.CachePointBlock,\n])\ntype BedrockAssistantBlock = Schema.Schema.Type<typeof BedrockAssistantBlock>\n\nconst BedrockMessage = Schema.Union([\n Schema.Struct({ role: Schema.Literal(\"user\"), content: Schema.Array(BedrockUserBlock) }),\n Schema.Struct({ role: Schema.Literal(\"assistant\"), content: Schema.Array(BedrockAssistantBlock) }),\n]).pipe(Schema.toTaggedUnion(\"role\"))\ntype BedrockMessage = Schema.Schema.Type<typeof BedrockMessage>\n\nconst BedrockSystemBlock = Schema.Union([BedrockTextBlock, BedrockCache.CachePointBlock])\ntype BedrockSystemBlock = Schema.Schema.Type<typeof BedrockSystemBlock>\n\nconst BedrockToolSpec = Schema.Struct({\n toolSpec: Schema.Struct({\n name: Schema.String,\n description: Schema.String,\n inputSchema: Schema.Struct({\n json: JsonObject,\n }),\n }),\n})\ntype BedrockToolSpec = Schema.Schema.Type<typeof BedrockToolSpec>\n\nconst BedrockTool = Schema.Union([BedrockToolSpec, BedrockCache.CachePointBlock])\ntype BedrockTool = Schema.Schema.Type<typeof BedrockTool>\n\nconst BedrockToolChoice = Schema.Union([\n Schema.Struct({ auto: Schema.Struct({}) }),\n Schema.Struct({ any: Schema.Struct({}) }),\n Schema.Struct({ tool: Schema.Struct({ name: Schema.String }) }),\n])\n\nconst BedrockBodyFields = {\n modelId: Schema.String,\n messages: Schema.Array(BedrockMessage),\n system: optionalArray(BedrockSystemBlock),\n inferenceConfig: Schema.optional(\n Schema.Struct({\n maxTokens: Schema.optional(Schema.Number),\n temperature: Schema.optional(Schema.Number),\n topP: Schema.optional(Schema.Number),\n stopSequences: optionalArray(Schema.String),\n }),\n ),\n toolConfig: Schema.optional(\n Schema.Struct({\n tools: Schema.Array(BedrockTool),\n toolChoice: Schema.optional(BedrockToolChoice),\n }),\n ),\n additionalModelRequestFields: Schema.optional(JsonObject),\n}\nconst BedrockConverseBody = Schema.Struct(BedrockBodyFields)\nexport type BedrockConverseBody = Schema.Schema.Type<typeof BedrockConverseBody>\n\nconst BedrockUsageSchema = Schema.Struct({\n inputTokens: Schema.optional(Schema.Number),\n outputTokens: Schema.optional(Schema.Number),\n totalTokens: Schema.optional(Schema.Number),\n cacheReadInputTokens: Schema.optional(Schema.Number),\n cacheWriteInputTokens: Schema.optional(Schema.Number),\n})\ntype BedrockUsageSchema = Schema.Schema.Type<typeof BedrockUsageSchema>\n\nconst BedrockStreamException = Schema.Struct({\n message: Schema.optional(Schema.String),\n originalMessage: Schema.optional(Schema.String),\n originalStatusCode: Schema.optional(Schema.Number),\n})\n\n// Streaming event shape — the AWS event stream wraps each JSON payload by its\n// `:event-type` header (e.g. `messageStart`, `contentBlockDelta`). We\n// reconstruct that wrapping in `decodeFrames` below so the event schema can\n// stay a plain discriminated record.\nconst BedrockEvent = Schema.Struct({\n messageStart: Schema.optional(Schema.Struct({ role: Schema.String })),\n contentBlockStart: Schema.optional(\n Schema.Struct({\n contentBlockIndex: Schema.Number,\n start: Schema.optional(\n Schema.Struct({\n toolUse: Schema.optional(Schema.Struct({ toolUseId: Schema.String, name: Schema.String })),\n }),\n ),\n }),\n ),\n contentBlockDelta: Schema.optional(\n Schema.Struct({\n contentBlockIndex: Schema.Number,\n delta: Schema.optional(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n toolUse: Schema.optional(Schema.Struct({ input: Schema.String })),\n reasoningContent: Schema.optional(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n signature: Schema.optional(Schema.String),\n // Blob fields in Bedrock's JSON event stream are base64 strings.\n redactedContent: Schema.optional(Schema.String),\n // Vercel's Bedrock provider exposes the same delta under\n // Anthropic's shorter `data` spelling.\n data: Schema.optional(Schema.String),\n }),\n ),\n }),\n ),\n }),\n ),\n contentBlockStop: Schema.optional(Schema.Struct({ contentBlockIndex: Schema.Number })),\n messageStop: Schema.optional(\n Schema.Struct({\n stopReason: Schema.String,\n additionalModelResponseFields: Schema.optional(Schema.Unknown),\n }),\n ),\n metadata: Schema.optional(\n Schema.Struct({\n usage: Schema.optional(BedrockUsageSchema),\n metrics: Schema.optional(Schema.Unknown),\n }),\n ),\n exception: Schema.optional(Schema.Struct({ type: Schema.String, details: BedrockStreamException })),\n})\ntype BedrockEvent = Schema.Schema.Type<typeof BedrockEvent>\n\n// =============================================================================\n// Request Lowering\n// =============================================================================\nconst lowerToolSpec = (tool: ToolDefinition, inputSchema: JsonSchema): BedrockToolSpec => ({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: { json: inputSchema },\n },\n})\n\nconst lowerTools = (\n compatibility: LanguageModelToolSchemaCompatibility | undefined,\n breakpoints: BedrockCache.Breakpoints,\n tools: ReadonlyArray<ToolDefinition>,\n): BedrockTool[] => {\n const result: BedrockTool[] = []\n for (const tool of tools) {\n result.push(lowerToolSpec(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, compatibility)))\n const cachePoint = BedrockCache.block(breakpoints, tool.cache)\n if (cachePoint) result.push(cachePoint)\n }\n return result\n}\n\nconst textWithCache = (\n breakpoints: BedrockCache.Breakpoints,\n text: string,\n cache: CacheHint | undefined,\n): Array<BedrockTextBlock | BedrockCache.CachePointBlock> => {\n const cachePoint = BedrockCache.block(breakpoints, cache)\n return cachePoint ? [{ text }, cachePoint] : [{ text }]\n}\n\nconst lowerToolChoice = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>) =>\n ProviderShared.matchToolChoice(\"Bedrock Converse\", toolChoice, {\n auto: () => ({ auto: {} }) as const,\n none: () => undefined,\n required: () => ({ any: {} }) as const,\n tool: (name) => ({ tool: { name } }) as const,\n })\n\nconst bedrockMetadata = (metadata: Record<string, unknown>): ProviderMetadata => ({ bedrock: metadata })\n\nconst reasoningSignature = (part: ReasoningPart) => {\n const bedrock = part.providerMetadata?.bedrock\n return (\n part.encrypted ??\n (ProviderShared.isRecord(bedrock) && typeof bedrock.signature === \"string\" ? bedrock.signature : undefined)\n )\n}\n\nconst reasoningRedactedData = (part: ReasoningPart) => {\n const bedrock = part.providerMetadata?.bedrock\n return ProviderShared.isRecord(bedrock) && typeof bedrock.redactedData === \"string\" ? bedrock.redactedData : undefined\n}\n\nconst lowerToolCall = (part: ToolCallPart): BedrockToolUseBlock => ({\n toolUse: {\n toolUseId: part.id,\n name: part.name,\n input: part.input,\n },\n})\n\nconst lowerToolResultContent = Effect.fn(\"BedrockConverse.lowerToolResultContent\")(function* (part: ToolResultPart) {\n if (part.result.type === \"text\" || part.result.type === \"error\")\n return [{ text: ProviderShared.toolResultText(part) }]\n if (part.result.type === \"json\") return [{ json: part.result.value }]\n\n const content: Array<Schema.Schema.Type<typeof BedrockToolResultContentItem>> = []\n for (const item of part.result.value) {\n if (item.type === \"text\") {\n content.push({ text: item.text })\n continue\n }\n const media = yield* BedrockMedia.lower({\n type: \"media\",\n mediaType: item.mime,\n data: item.uri,\n filename: item.name,\n })\n content.push(media)\n }\n return content\n})\n\nconst lowerToolResult = Effect.fn(\"BedrockConverse.lowerToolResult\")(function* (part: ToolResultPart) {\n return {\n toolResult: {\n toolUseId: part.id,\n content: yield* lowerToolResultContent(part),\n status: part.result.type === \"error\" ? \"error\" : \"success\",\n },\n } satisfies BedrockToolResultBlock\n})\n\nconst lowerMessages = Effect.fn(\"BedrockConverse.lowerMessages\")(function* (\n request: LLMRequest,\n breakpoints: BedrockCache.Breakpoints,\n) {\n const messages: BedrockMessage[] = []\n\n for (const message of request.messages) {\n if (message.role === \"system\") {\n const part = yield* ProviderShared.wrappedSystemUpdate(\"Bedrock Converse\", message)\n const content = textWithCache(breakpoints, part.text, part.cache)\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n continue\n }\n\n if (message.role === \"user\") {\n const content: BedrockUserBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"media\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"user\", [\"text\", \"media\"])\n if (part.type === \"text\") {\n content.push(...textWithCache(breakpoints, part.text, part.cache))\n continue\n }\n if (part.type === \"media\") {\n content.push(yield* BedrockMedia.lower(part))\n continue\n }\n }\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n continue\n }\n\n if (message.role === \"assistant\") {\n const content: BedrockAssistantBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"reasoning\", \"tool-call\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"assistant\", [\n \"text\",\n \"reasoning\",\n \"tool-call\",\n ])\n if (part.type === \"text\") {\n content.push(...textWithCache(breakpoints, part.text, part.cache))\n continue\n }\n if (part.type === \"reasoning\") {\n const signature = reasoningSignature(part)\n const redactedData = reasoningRedactedData(part)\n if (signature === undefined && redactedData !== undefined) {\n content.push({ reasoningContent: { redactedContent: redactedData } })\n continue\n }\n content.push({ reasoningContent: { reasoningText: { text: part.text, signature } } })\n continue\n }\n if (part.type === \"tool-call\") {\n content.push(lowerToolCall(part))\n continue\n }\n }\n messages.push({ role: \"assistant\", content })\n continue\n }\n\n const content: BedrockUserBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"tool-result\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"tool\", [\"tool-result\"])\n content.push(yield* lowerToolResult(part))\n const cachePoint = BedrockCache.block(breakpoints, part.cache)\n if (cachePoint) content.push(cachePoint)\n }\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n }\n\n return messages\n})\n\n// System prompts share the cache-point convention: emit the text block, then\n// optionally a positional `cachePoint` marker.\nconst lowerSystem = (\n breakpoints: BedrockCache.Breakpoints,\n system: ReadonlyArray<LLMRequest[\"system\"][number]>,\n): BedrockSystemBlock[] => system.flatMap((part) => textWithCache(breakpoints, part.text, part.cache))\n\nconst fromRequest = Effect.fn(\"BedrockConverse.fromRequest\")(function* (request: LLMRequest) {\n const toolChoice = request.toolChoice ? yield* lowerToolChoice(request.toolChoice) : undefined\n const generation = request.generation\n // Bedrock-Claude shares Anthropic's 4-breakpoint cap. Spend the budget in\n // tools → system → messages order to favour the highest-impact prefixes.\n const breakpoints = BedrockCache.breakpoints()\n const toolConfig =\n request.tools.length > 0\n ? {\n tools: lowerTools(request.model.compatibility?.toolSchema, breakpoints, request.tools),\n // Converse has no native \"none\". Keep definitions stable for prompt\n // caching and omit only the unsupported choice.\n toolChoice,\n }\n : undefined\n const system = request.system.length === 0 ? undefined : lowerSystem(breakpoints, request.system)\n const messages = yield* lowerMessages(request, breakpoints)\n if (breakpoints.dropped > 0) {\n yield* Effect.logWarning(\n `Bedrock Converse: dropped ${breakpoints.dropped} cache breakpoint(s); the API allows at most ${BedrockCache.BEDROCK_BREAKPOINT_CAP} per request.`,\n )\n }\n return {\n modelId: request.model.id,\n messages,\n system,\n inferenceConfig:\n generation?.maxTokens === undefined &&\n generation?.temperature === undefined &&\n generation?.topP === undefined &&\n (generation?.stop === undefined || generation.stop.length === 0)\n ? undefined\n : {\n maxTokens: generation?.maxTokens,\n temperature: generation?.temperature,\n topP: generation?.topP,\n stopSequences: generation?.stop,\n },\n toolConfig,\n // Converse's base inferenceConfig has no topK; Anthropic/Nova accept it\n // as a model-specific field, so it goes through additionalModelRequestFields.\n additionalModelRequestFields: generation?.topK === undefined ? undefined : { top_k: generation.topK },\n }\n})\n\n// =============================================================================\n// Stream Parsing\n// =============================================================================\nconst mapFinishReason = (reason: string): FinishReason => {\n if (reason === \"end_turn\" || reason === \"stop_sequence\") return \"stop\"\n if (reason === \"max_tokens\" || reason === \"model_context_window_exceeded\") return \"length\"\n if (reason === \"tool_use\") return \"tool-calls\"\n if (reason === \"content_filtered\" || reason === \"guardrail_intervened\") return \"content-filter\"\n if (reason === \"malformed_model_output\" || reason === \"malformed_tool_use\") return \"error\"\n return \"unknown\"\n}\n\n// AWS reports inputTokens separately from cache reads and writes.\n// Bedrock does not break reasoning out of outputTokens for current models.\nconst mapUsage = (usage: BedrockUsageSchema | undefined): Usage | undefined => {\n if (!usage) return undefined\n const inputTokens = ProviderShared.sumTokens(\n usage.inputTokens,\n usage.cacheReadInputTokens,\n usage.cacheWriteInputTokens,\n )\n return new Usage({\n inputTokens,\n outputTokens: usage.outputTokens,\n nonCachedInputTokens: usage.inputTokens,\n cacheReadInputTokens: usage.cacheReadInputTokens,\n cacheWriteInputTokens: usage.cacheWriteInputTokens,\n totalTokens: ProviderShared.totalTokens(inputTokens, usage.outputTokens, usage.totalTokens),\n providerMetadata: { bedrock: usage },\n })\n}\n\ninterface ParserState {\n readonly tools: ToolStream.State<number>\n // Bedrock splits the finish into `messageStop` (carries `stopReason`) and\n // `metadata` (carries usage). Hold the terminal event in state so `onHalt`\n // can emit exactly one finish after both chunks have had a chance to arrive.\n readonly pendingFinish: { readonly reason: FinishReasonDetails; readonly usage?: Usage } | undefined\n readonly hasToolCalls: boolean\n readonly lifecycle: Lifecycle.State\n readonly reasoningSignatures: Readonly<Record<number, string>>\n}\n\nconst step = (state: ParserState, event: BedrockEvent) =>\n Effect.gen(function* () {\n if (event.contentBlockStart?.start?.toolUse) {\n const index = event.contentBlockStart.contentBlockIndex\n const events: LLMEvent[] = []\n const lifecycle = Lifecycle.stepStart(state.lifecycle, events)\n return [\n {\n ...state,\n lifecycle,\n tools: ToolStream.start(state.tools, index, {\n id: event.contentBlockStart.start.toolUse.toolUseId,\n name: event.contentBlockStart.start.toolUse.name,\n }),\n },\n [\n ...events,\n LLMEvent.toolInputStart({\n id: event.contentBlockStart.start.toolUse.toolUseId,\n name: event.contentBlockStart.start.toolUse.name,\n }),\n ],\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.text) {\n const events: LLMEvent[] = []\n return [\n {\n ...state,\n lifecycle: Lifecycle.textDelta(\n state.lifecycle,\n events,\n `text-${event.contentBlockDelta.contentBlockIndex}`,\n event.contentBlockDelta.delta.text,\n ),\n },\n events,\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.reasoningContent) {\n const index = event.contentBlockDelta.contentBlockIndex\n const reasoning = event.contentBlockDelta.delta.reasoningContent\n const events: LLMEvent[] = []\n const redactedData = reasoning.redactedContent ?? reasoning.data\n const providerMetadata = reasoning.signature\n ? bedrockMetadata({ signature: reasoning.signature })\n : redactedData !== undefined\n ? bedrockMetadata({ redactedData })\n : undefined\n const lifecycle =\n reasoning.text !== undefined || providerMetadata !== undefined\n ? Lifecycle.reasoningDelta(\n state.lifecycle,\n events,\n `reasoning-${index}`,\n reasoning.text ?? \"\",\n providerMetadata,\n )\n : state.lifecycle\n return [\n {\n ...state,\n lifecycle,\n reasoningSignatures: reasoning.signature\n ? { ...state.reasoningSignatures, [index]: reasoning.signature }\n : state.reasoningSignatures,\n },\n events,\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.toolUse) {\n const index = event.contentBlockDelta.contentBlockIndex\n const result = ToolStream.appendExisting(\n ADAPTER,\n state.tools,\n index,\n event.contentBlockDelta.delta.toolUse.input,\n \"Bedrock Converse tool delta is missing its tool call\",\n )\n if (ToolStream.isError(result)) return yield* result\n const events: LLMEvent[] = []\n const lifecycle = result.events.length ? Lifecycle.stepStart(state.lifecycle, events) : state.lifecycle\n events.push(...result.events)\n return [{ ...state, lifecycle, tools: result.tools }, events] as const\n }\n\n if (event.contentBlockStop) {\n const index = event.contentBlockStop.contentBlockIndex\n const result = yield* ToolStream.finish(ADAPTER, state.tools, index)\n const events: LLMEvent[] = []\n const resultEvents = result.events ?? []\n const lifecycle = resultEvents.length\n ? Lifecycle.stepStart(state.lifecycle, events)\n : Lifecycle.reasoningEnd(\n Lifecycle.textEnd(state.lifecycle, events, `text-${index}`),\n events,\n `reasoning-${index}`,\n state.reasoningSignatures[index]\n ? bedrockMetadata({ signature: state.reasoningSignatures[index] })\n : undefined,\n )\n events.push(...resultEvents)\n return [\n {\n ...state,\n hasToolCalls:\n resultEvents.some((event) => LLMEvent.is.toolCall(event) || LLMEvent.is.toolInputError(event)) ||\n state.hasToolCalls,\n lifecycle,\n tools: result.tools,\n reasoningSignatures: Object.fromEntries(\n Object.entries(state.reasoningSignatures).filter(([key]) => key !== String(index)),\n ),\n },\n events,\n ] as const\n }\n\n if (event.messageStop) {\n return [\n {\n ...state,\n pendingFinish: {\n reason: {\n normalized: mapFinishReason(event.messageStop.stopReason),\n raw: event.messageStop.stopReason,\n },\n usage: state.pendingFinish?.usage,\n },\n },\n [],\n ] as const\n }\n\n if (event.metadata) {\n const usage = mapUsage(event.metadata.usage) ?? state.pendingFinish?.usage\n return [\n {\n ...state,\n pendingFinish: {\n reason: state.pendingFinish?.reason ?? { normalized: \"stop\" },\n usage,\n },\n },\n [],\n ] as const\n }\n\n if (event.exception) {\n return yield* new AIError({\n module: ADAPTER,\n method: \"stream\",\n reason: classifyProviderFailure({\n message:\n event.exception.details.message ?? event.exception.details.originalMessage ?? \"Bedrock Converse stream error\",\n code: event.exception.type,\n }),\n })\n }\n\n return [state, []] as const\n })\n\nconst framing = BedrockEventStream.framing(ADAPTER)\n\nconst onHalt = (state: ParserState): ReadonlyArray<LLMEvent> =>\n state.pendingFinish\n ? (() => {\n const events: LLMEvent[] = []\n Lifecycle.finish(state.lifecycle, events, {\n reason: {\n ...state.pendingFinish.reason,\n normalized:\n state.pendingFinish.reason.normalized === \"stop\" && state.hasToolCalls\n ? \"tool-calls\"\n : state.pendingFinish.reason.normalized,\n },\n usage: state.pendingFinish.usage,\n })\n return events\n })()\n : []\n\n// =============================================================================\n// Protocol And Bedrock Route\n// =============================================================================\n/**\n * The Bedrock Converse protocol — request body construction, body schema, and\n * the streaming-event state machine.\n */\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: BedrockConverseBody,\n from: fromRequest,\n },\n stream: {\n event: BedrockEvent,\n initial: () => ({\n tools: ToolStream.empty<number>(),\n pendingFinish: undefined,\n hasToolCalls: false,\n lifecycle: Lifecycle.initial(),\n reasoningSignatures: {},\n }),\n step,\n onHalt: (state) => Effect.succeed(onHalt(state)),\n },\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"bedrock\",\n providerMetadataKey: \"bedrock\",\n protocol,\n // Bedrock's URL embeds the region in the route endpoint host and the\n // validated modelId in the path. We read the validated body so the URL\n // matches the body that gets signed.\n endpoint: Endpoint.path<BedrockConverseBody>(\n ({ body }) => `/model/${encodeURIComponent(body.modelId)}/converse-stream`,\n ),\n auth: BedrockAuth.auth,\n framing,\n})\n\nexport const sigV4Auth = BedrockAuth.sigV4\n\nexport * as BedrockConverse from \"./bedrock-converse.js\"\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as BedrockConverse from \"../protocols/bedrock-converse.js\"\nimport type { BedrockCredentials } from \"../protocols/bedrock-converse.js\"\n\nexport const id = ProviderID.make(\"amazon-bedrock\")\n\nexport type Config = RouteDefaultsInput & {\n readonly apiKey?: string\n readonly headers?: Record<string, string>\n readonly credentials?: BedrockCredentials\n /** AWS region. Defaults to `us-east-1` when neither this nor `credentials.region` is set. */\n readonly region?: string\n /** Override the computed `https://bedrock-runtime.<region>.amazonaws.com` URL. */\n readonly baseURL?: string\n}\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly auth?: \"bearer\" | \"sigv4\"\n readonly baseURL?: string\n readonly credentials?: BedrockCredentials\n readonly region?: string\n readonly topP?: number\n}\nexport const routes = [BedrockConverse.route]\n\nconst bedrockBaseURL = (region: string) => `https://bedrock-runtime.${region}.amazonaws.com`\n\nconst configuredRoute = (input: Config) => {\n const { apiKey, credentials, region, baseURL, ...rest } = input\n const resolvedRegion = region ?? credentials?.region ?? \"us-east-1\"\n return BedrockConverse.route.with({\n ...rest,\n provider: id,\n endpoint: { baseURL: baseURL ?? bedrockBaseURL(resolvedRegion) },\n auth: apiKey === undefined ? BedrockConverse.sigV4Auth(credentials) : Auth.bearer(apiKey),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings>[\"model\"] = (modelID, settings) => {\n if (settings.auth === \"bearer\" && settings.apiKey === undefined)\n throw new Error(\"Amazon Bedrock bearer auth requires apiKey\")\n if (settings.auth === \"sigv4\" && settings.apiKey !== undefined)\n throw new Error(\"Amazon Bedrock SigV4 auth does not accept apiKey\")\n return configure({\n apiKey: settings.auth === \"sigv4\" ? undefined : settings.apiKey,\n baseURL: settings.baseURL,\n credentials: settings.credentials,\n generation: settings.topP === undefined ? undefined : { topP: settings.topP },\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n region: settings.region,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "863573E1334EAF2164756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@smithy+node-http-handler@4.11.2/node_modules/@smithy/node-http-handler/dist-cjs/index.js"], | ||
| "sourcesContent": [ | ||
| "const { buildQueryString, HttpResponse } = require(\"@smithy/core/protocols\");\nconst node_https = require(\"node:https\");\nconst { Readable } = require(\"node:stream\");\nconst http2 = require(\"node:http2\");\nconst { streamCollector } = require(\"@smithy/core/serde\");\nexports.streamCollector = streamCollector;\n\nfunction buildAbortError(abortSignal) {\n const reason = abortSignal && typeof abortSignal === \"object\" && \"reason\" in abortSignal\n ? abortSignal.reason\n : undefined;\n if (reason) {\n if (reason instanceof Error) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n abortError.cause = reason;\n return abortError;\n }\n const abortError = new Error(String(reason));\n abortError.name = \"AbortError\";\n return abortError;\n }\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return abortError;\n}\n\nconst NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\nconst getTransformedHeaders = (headers) => {\n const transformedHeaders = {};\n for (const name in headers) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n};\n\nconst timing = {\n setTimeout: (cb, ms) => setTimeout(cb, ms),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n};\n\nconst DEFER_EVENT_LISTENER_TIME$2 = 1000;\nconst setConnectionTimeout = (request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return -1;\n }\n const registerTimeout = (offset) => {\n const timeoutId = timing.setTimeout(() => {\n request.destroy();\n reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), {\n name: \"TimeoutError\",\n }));\n }, timeoutInMs - offset);\n const doWithSocket = (socket) => {\n if (socket?.connecting) {\n socket.on(\"connect\", () => {\n timing.clearTimeout(timeoutId);\n });\n }\n else {\n timing.clearTimeout(timeoutId);\n }\n };\n if (request.socket) {\n doWithSocket(request.socket);\n }\n else {\n request.on(\"socket\", doWithSocket);\n }\n };\n if (timeoutInMs < 2000) {\n registerTimeout(0);\n return 0;\n }\n return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2);\n};\n\nconst setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => {\n if (timeoutInMs) {\n return timing.setTimeout(() => {\n let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? \"ERROR\" : \"WARN\"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`;\n if (throwOnRequestTimeout) {\n const error = Object.assign(new Error(msg), {\n name: \"TimeoutError\",\n code: \"ETIMEDOUT\",\n });\n req.destroy(error);\n reject(error);\n }\n else {\n msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`;\n logger?.warn?.(msg);\n }\n }, timeoutInMs);\n }\n return -1;\n};\n\nconst DEFER_EVENT_LISTENER_TIME$1 = 3000;\nconst setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME$1) => {\n if (keepAlive !== true) {\n return -1;\n }\n const registerListener = () => {\n if (request.socket) {\n request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n }\n else {\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n }\n };\n if (deferTimeMs === 0) {\n registerListener();\n return 0;\n }\n return timing.setTimeout(registerListener, deferTimeMs);\n};\n\nconst DEFER_EVENT_LISTENER_TIME = 3000;\nconst setSocketTimeout = (request, reject, timeoutInMs = 0) => {\n const registerTimeout = (offset) => {\n const timeout = timeoutInMs - offset;\n const onTimeout = () => {\n request.destroy();\n reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: \"TimeoutError\" }));\n };\n if (request.socket) {\n request.socket.setTimeout(timeout, onTimeout);\n request.on(\"close\", () => request.socket?.removeListener(\"timeout\", onTimeout));\n }\n else {\n request.setTimeout(timeout, onTimeout);\n }\n };\n if (0 < timeoutInMs && timeoutInMs < 6000) {\n registerTimeout(0);\n return 0;\n }\n return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME);\n};\n\nconst MIN_WAIT_TIME = 6_000;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) {\n const headers = request.headers;\n const expect = headers ? headers.Expect || headers.expect : undefined;\n let timeoutId = -1;\n let sendBody = true;\n if (!externalAgent && expect === \"100-continue\") {\n sendBody = await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n timing.clearTimeout(timeoutId);\n resolve(true);\n });\n httpRequest.on(\"response\", () => {\n timing.clearTimeout(timeoutId);\n resolve(false);\n });\n httpRequest.on(\"error\", () => {\n timing.clearTimeout(timeoutId);\n resolve(false);\n });\n }),\n ]);\n }\n if (sendBody) {\n writeBody(httpRequest, request.body);\n }\n}\nfunction writeBody(httpRequest, body) {\n if (body instanceof Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n const isBuffer = Buffer.isBuffer(body);\n const isString = typeof body === \"string\";\n if (isBuffer || isString) {\n if (isBuffer && body.byteLength === 0) {\n httpRequest.end();\n }\n else {\n httpRequest.end(body);\n }\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" &&\n uint8.buffer &&\n typeof uint8.byteOffset === \"number\" &&\n typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n\nconst DEFAULT_REQUEST_TIMEOUT = 0;\nlet hAgent = undefined;\nlet hRequest = undefined;\nclass NodeHttpHandler {\n config;\n configProvider;\n socketWarningTimestamp = 0;\n externalAgent = false;\n metadata = { handlerProtocol: \"http/1.1\" };\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new NodeHttpHandler(instanceOrOptions);\n }\n static checkSocketUsage(agent, socketWarningTimestamp, logger = console) {\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15_000;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = sockets[origin]?.length ?? 0;\n const requestsEnqueued = requests[origin]?.length ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.\nSee https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\nor increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`);\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n constructor(options) {\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n })\n .catch(reject);\n }\n else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n destroy() {\n this.config?.httpAgent?.destroy();\n this.config?.httpsAgent?.destroy();\n }\n async handle(request, { abortSignal, requestTimeout } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const config = this.config;\n const logger = config.logger;\n const isSSL = request.protocol === \"https:\";\n if (!isSSL && !this.config.httpAgent) {\n this.config.httpAgent = await this.config.httpAgentProvider();\n }\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = undefined;\n let socketWarningTimeoutId = -1;\n let connectionTimeoutId = -1;\n let requestTimeoutId = -1;\n let socketTimeoutId = -1;\n let keepAliveTimeoutId = -1;\n const clearTimeouts = () => {\n timing.clearTimeout(socketWarningTimeoutId);\n timing.clearTimeout(connectionTimeoutId);\n timing.clearTimeout(requestTimeoutId);\n timing.clearTimeout(socketTimeoutId);\n timing.clearTimeout(keepAliveTimeoutId);\n };\n const resolve = async (arg) => {\n await writeRequestBodyPromise;\n clearTimeouts();\n _resolve(arg);\n };\n const reject = async (arg) => {\n await writeRequestBodyPromise;\n clearTimeouts();\n _reject(arg);\n };\n if (abortSignal?.aborted) {\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n return;\n }\n const headers = request.headers;\n const expectContinue = headers ? (headers.Expect ?? headers.expect) === \"100-continue\" : false;\n let agent = isSSL ? config.httpsAgent : config.httpAgent;\n if (expectContinue && !this.externalAgent) {\n agent = new (isSSL ? node_https.Agent : hAgent)({\n keepAlive: false,\n maxSockets: Infinity,\n });\n }\n socketWarningTimeoutId = timing.setTimeout(() => {\n this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, logger);\n }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000));\n const queryString = request.query ? buildQueryString(request.query) : \"\";\n let auth = undefined;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let hostname = request.hostname ?? \"\";\n if (hostname[0] === \"[\" && hostname.endsWith(\"]\")) {\n hostname = request.hostname.slice(1, -1);\n }\n else {\n hostname = request.hostname;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth,\n };\n const requestFunc = isSSL ? node_https.request : hRequest;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res,\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n }\n else {\n reject(err);\n }\n });\n if (abortSignal) {\n const onAbort = () => {\n req.destroy();\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }\n const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout;\n connectionTimeoutId = setConnectionTimeout(req, reject, config.connectionTimeout);\n requestTimeoutId = setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, logger ?? console);\n socketTimeoutId = setSocketTimeout(req, reject, config.socketTimeout);\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n keepAliveTimeoutId = setSocketKeepAlive(req, {\n keepAlive: httpAgent.keepAlive,\n keepAliveMsecs: httpAgent.keepAliveMsecs,\n });\n }\n writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => {\n clearTimeouts();\n return _reject(e);\n });\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n if (key === Symbol.for(\"logger\")) {\n return {\n ...config,\n logger: config.logger ?? value,\n };\n }\n return {\n ...config,\n [key]: value,\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout,\n socketTimeout,\n socketAcquisitionWarningTimeout,\n throwOnRequestTimeout,\n httpAgentProvider: async () => {\n const node_http = require('node:http');\n const { Agent, request } = node_http.default ?? node_http;\n hRequest = request;\n hAgent = Agent;\n if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === \"function\") {\n this.externalAgent = true;\n return httpAgent;\n }\n return new hAgent({ keepAlive, maxSockets, ...httpAgent });\n },\n httpsAgent: (() => {\n if (httpsAgent instanceof node_https.Agent || typeof httpsAgent?.destroy === \"function\") {\n this.externalAgent = true;\n return httpsAgent;\n }\n return new node_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })(),\n logger,\n };\n }\n}\n\nconst ids = new Uint16Array(1);\nclass ClientHttp2SessionRef {\n id = ids[0]++;\n total = 0;\n max = 0;\n session;\n refs = 0;\n constructor(session) {\n session.unref();\n this.session = session;\n }\n retain() {\n if (this.session.destroyed) {\n throw new Error(\"@smithy/node-http-handler - cannot acquire reference to destroyed session.\");\n }\n this.refs += 1;\n this.total += 1;\n this.max = Math.max(this.refs, this.max);\n this.session.ref();\n }\n free() {\n if (this.session.destroyed) {\n return;\n }\n this.refs -= 1;\n if (this.refs === 0) {\n this.session.unref();\n }\n if (this.refs < 0) {\n throw new Error(\"@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.\");\n }\n }\n deref() {\n return this.session;\n }\n close() {\n if (!this.session.closed) {\n this.session.close();\n }\n }\n destroy() {\n this.refs = 0;\n if (!this.session.destroyed) {\n this.session.destroy();\n }\n }\n useCount() {\n return this.refs;\n }\n}\n\nclass NodeHttp2ConnectionPool {\n sessions = [];\n maxConcurrency = 0;\n constructor(sessions) {\n this.sessions = (sessions ?? []).map((session) => new ClientHttp2SessionRef(session));\n }\n poll() {\n let cleanup = false;\n for (const session of this.sessions) {\n if (session.deref().destroyed) {\n cleanup = true;\n continue;\n }\n if (!this.maxConcurrency || session.useCount() < this.maxConcurrency) {\n return session;\n }\n }\n if (cleanup) {\n for (const session of this.sessions) {\n if (session.deref().destroyed) {\n this.remove(session);\n }\n }\n }\n }\n offerLast(ref) {\n this.sessions.push(ref);\n }\n remove(ref) {\n const ix = this.sessions.indexOf(ref);\n if (ix > -1) {\n this.sessions.splice(ix, 1);\n }\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n setMaxConcurrency(maxConcurrency) {\n this.maxConcurrency = maxConcurrency;\n }\n destroy(ref) {\n this.remove(ref);\n ref.destroy();\n }\n}\n\nclass NodeHttp2ConnectionManager {\n config;\n connectOptions;\n connectionPools = new Map();\n constructor(config) {\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const pool = this.getPool(url);\n if (!this.config.disableConcurrency && !connectionConfiguration.isEventStream) {\n const available = pool.poll();\n if (available) {\n available.retain();\n return available;\n }\n }\n const ref = new ClientHttp2SessionRef(this.connect(url));\n const session = ref.deref();\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\"Fail to set maxConcurrentStreams to \" +\n this.config.maxConcurrency +\n \"when creating new session for \" +\n requestContext.destination.toString());\n }\n });\n }\n const graceful = () => {\n this.removeFromPoolAndClose(url, ref);\n };\n const ensureDestroyed = () => {\n this.removeFromPoolAndCheckedDestroy(url, ref);\n };\n session.on(\"goaway\", graceful);\n session.on(\"error\", ensureDestroyed);\n session.on(\"frameError\", ensureDestroyed);\n session.on(\"close\", ensureDestroyed);\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, ensureDestroyed);\n }\n pool.offerLast(ref);\n ref.retain();\n return ref;\n }\n release(_requestContext, ref) {\n ref.free();\n }\n createIsolatedSession(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const ref = new ClientHttp2SessionRef(this.connect(url));\n const session = ref.deref();\n session.settings({ maxConcurrentStreams: 1 });\n const ensureDestroyed = () => {\n ref.destroy();\n };\n session.on(\"error\", ensureDestroyed);\n session.on(\"frameError\", ensureDestroyed);\n session.on(\"close\", ensureDestroyed);\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, ensureDestroyed);\n }\n ref.retain();\n return ref;\n }\n destroy() {\n for (const [url, connectionPool] of this.connectionPools) {\n for (const session of [...connectionPool]) {\n session.destroy();\n }\n this.connectionPools.delete(url);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (maxConcurrentStreams && maxConcurrentStreams <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n for (const pool of this.connectionPools.values()) {\n pool.setMaxConcurrency(maxConcurrentStreams);\n }\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions) {\n this.connectOptions = nodeHttp2ConnectOptions;\n }\n debug() {\n const pools = {};\n for (const [url, pool] of this.connectionPools) {\n const sessions = [];\n for (const ref of pool) {\n sessions.push({\n id: ref.id,\n active: ref.useCount(),\n maxConcurrent: ref.max,\n totalRequests: ref.total,\n });\n }\n pools[url] = { sessions };\n }\n return pools;\n }\n removeFromPoolAndClose(authority, ref) {\n this.connectionPools.get(authority)?.remove(ref);\n ref.close();\n }\n removeFromPoolAndCheckedDestroy(authority, ref) {\n this.connectionPools.get(authority)?.remove(ref);\n ref.destroy();\n }\n getPool(url) {\n if (!this.connectionPools.has(url)) {\n const pool = new NodeHttp2ConnectionPool();\n if (this.config.maxConcurrency) {\n pool.setMaxConcurrency(this.config.maxConcurrency);\n }\n this.connectionPools.set(url, pool);\n }\n return this.connectionPools.get(url);\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n connect(url) {\n return this.connectOptions === undefined ? http2.connect(url) : http2.connect(url, this.connectOptions);\n }\n}\n\nconst { constants } = http2;\nclass NodeHttp2Handler {\n config;\n configProvider;\n metadata = { handlerProtocol: \"h2\" };\n connectionManager = new NodeHttp2ConnectionManager({});\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new NodeHttp2Handler(instanceOrOptions);\n }\n constructor(options) {\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((opts) => {\n resolve(opts || {});\n })\n .catch(reject);\n }\n else {\n resolve(options || {});\n }\n });\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal, requestTimeout, isEventStream } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n const { disableConcurrentStreams, maxConcurrentStreams, nodeHttp2ConnectOptions } = this.config;\n this.connectionManager.setDisableConcurrentStreams(disableConcurrentStreams ?? false);\n if (maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(maxConcurrentStreams);\n }\n if (nodeHttp2ConnectOptions) {\n this.connectionManager.setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions);\n }\n }\n const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config;\n const useIsolatedSession = disableConcurrentStreams || isEventStream;\n const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout;\n return new Promise((_resolve, _reject) => {\n let fulfilled = false;\n let writeRequestBodyPromise = undefined;\n const resolve = async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n };\n const reject = async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n };\n if (abortSignal?.aborted) {\n fulfilled = true;\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const connectConfig = {\n requestTimeout: this.config?.sessionTimeout,\n isEventStream,\n };\n const ref = useIsolatedSession\n ? this.connectionManager.createIsolatedSession(requestContext, connectConfig)\n : this.connectionManager.lease(requestContext, connectConfig);\n const session = ref.deref();\n const rejectWithDestroy = (err) => {\n if (useIsolatedSession) {\n ref.destroy();\n }\n fulfilled = true;\n reject(err);\n };\n const queryString = query ? buildQueryString(query) : \"\";\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const clientHttp2Stream = session.request({\n ...request.headers,\n [constants.HTTP2_HEADER_PATH]: path,\n [constants.HTTP2_HEADER_METHOD]: method,\n });\n if (effectiveRequestTimeout) {\n clientHttp2Stream.setTimeout(effectiveRequestTimeout, () => {\n clientHttp2Stream.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n const onAbort = () => {\n clientHttp2Stream.close();\n const abortError = buildAbortError(abortSignal);\n rejectWithDestroy(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n clientHttp2Stream.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }\n clientHttp2Stream.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n clientHttp2Stream.on(\"error\", rejectWithDestroy);\n clientHttp2Stream.on(\"aborted\", () => {\n rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${clientHttp2Stream.rstCode}.`));\n });\n clientHttp2Stream.on(\"response\", (headers) => {\n const httpResponse = new HttpResponse({\n statusCode: headers[\":status\"] ?? -1,\n headers: getTransformedHeaders(headers),\n body: clientHttp2Stream,\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (useIsolatedSession) {\n session.close();\n }\n });\n clientHttp2Stream.on(\"close\", () => {\n if (useIsolatedSession) {\n ref.destroy();\n }\n else {\n this.connectionManager.release(requestContext, ref);\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(clientHttp2Stream, request, effectiveRequestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value,\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n}\n\nexports.DEFAULT_REQUEST_TIMEOUT = DEFAULT_REQUEST_TIMEOUT;\nexports.NodeHttp2Handler = NodeHttp2Handler;\nexports.NodeHttpHandler = NodeHttpHandler;\n" | ||
| ], | ||
| "mappings": ";4LAAA,IAAQ,mBAAkB,qBACpB,cACE,yBACF,cACE,yBACA,mBAAkB,GAE1B,SAAS,CAAe,CAAC,EAAa,CAClC,IAAM,EAAS,GAAe,OAAO,IAAgB,UAAY,WAAY,EACvE,EAAY,OACZ,OACN,GAAI,EAAQ,CACR,GAAI,aAAkB,MAAO,CACzB,IAAM,EAAiB,MAAM,iBAAiB,EAG9C,OAFA,EAAW,KAAO,aAClB,EAAW,MAAQ,EACZ,EAEX,IAAM,EAAiB,MAAM,OAAO,CAAM,CAAC,EAE3C,OADA,EAAW,KAAO,aACX,EAEX,IAAM,EAAiB,MAAM,iBAAiB,EAE9C,OADA,EAAW,KAAO,aACX,EAGX,IAAM,GAA6B,CAAC,aAAc,QAAS,WAAW,EAEhE,EAAwB,CAAC,IAAY,CACvC,IAAM,EAAqB,CAAC,EAC5B,QAAW,KAAQ,EAAS,CACxB,IAAM,EAAe,EAAQ,GAC7B,EAAmB,GAAQ,MAAM,QAAQ,CAAY,EAAI,EAAa,KAAK,GAAG,EAAI,EAEtF,OAAO,GAGL,EAAS,CACX,WAAY,CAAC,EAAI,IAAO,WAAW,EAAI,CAAE,EACzC,aAAc,CAAC,IAAc,aAAa,CAAS,CACvD,EAEM,EAA8B,KAC9B,GAAuB,CAAC,EAAS,EAAQ,EAAc,IAAM,CAC/D,GAAI,CAAC,EACD,MAAO,GAEX,IAAM,EAAkB,CAAC,IAAW,CAChC,IAAM,EAAY,EAAO,WAAW,IAAM,CACtC,EAAQ,QAAQ,EAChB,EAAO,OAAO,OAAW,MAAM,kIAAkI,OAAiB,EAAG,CACjL,KAAM,cACV,CAAC,CAAC,GACH,EAAc,CAAM,EACjB,EAAe,CAAC,IAAW,CAC7B,GAAI,GAAQ,WACR,EAAO,GAAG,UAAW,IAAM,CACvB,EAAO,aAAa,CAAS,EAChC,EAGD,OAAO,aAAa,CAAS,GAGrC,GAAI,EAAQ,OACR,EAAa,EAAQ,MAAM,EAG3B,OAAQ,GAAG,SAAU,CAAY,GAGzC,GAAI,EAAc,KAEd,OADA,EAAgB,CAAC,EACV,EAEX,OAAO,EAAO,WAAW,EAAgB,KAAK,KAAM,CAA2B,EAAG,CAA2B,GAG3G,GAAoB,CAAC,EAAK,EAAQ,EAAc,EAAG,EAAuB,IAAW,CACvF,GAAI,EACA,OAAO,EAAO,WAAW,IAAM,CAC3B,IAAI,EAAM,gCAAgC,EAAwB,QAAU,iDAAiD,uBAC7H,GAAI,EAAuB,CACvB,IAAM,EAAQ,OAAO,OAAW,MAAM,CAAG,EAAG,CACxC,KAAM,eACN,KAAM,WACV,CAAC,EACD,EAAI,QAAQ,CAAK,EACjB,EAAO,CAAK,EAGZ,QAAO,0FACP,GAAQ,OAAO,CAAG,GAEvB,CAAW,EAElB,MAAO,IAGL,GAA8B,KAC9B,GAAqB,CAAC,GAAW,YAAW,kBAAkB,EAAc,KAAgC,CAC9G,GAAI,IAAc,GACd,MAAO,GAEX,IAAM,EAAmB,IAAM,CAC3B,GAAI,EAAQ,OACR,EAAQ,OAAO,aAAa,EAAW,GAAkB,CAAC,EAG1D,OAAQ,GAAG,SAAU,CAAC,IAAW,CAC7B,EAAO,aAAa,EAAW,GAAkB,CAAC,EACrD,GAGT,GAAI,IAAgB,EAEhB,OADA,EAAiB,EACV,EAEX,OAAO,EAAO,WAAW,EAAkB,CAAW,GAGpD,EAA4B,KAC5B,GAAmB,CAAC,EAAS,EAAQ,EAAc,IAAM,CAC3D,IAAM,EAAkB,CAAC,IAAW,CAChC,IAAM,EAAU,EAAc,EACxB,EAAY,IAAM,CACpB,EAAQ,QAAQ,EAChB,EAAO,OAAO,OAAW,MAAM,kEAAkE,2DAAqE,EAAG,CAAE,KAAM,cAAe,CAAC,CAAC,GAEtM,GAAI,EAAQ,OACR,EAAQ,OAAO,WAAW,EAAS,CAAS,EAC5C,EAAQ,GAAG,QAAS,IAAM,EAAQ,QAAQ,eAAe,UAAW,CAAS,CAAC,EAG9E,OAAQ,WAAW,EAAS,CAAS,GAG7C,GAAI,EAAI,GAAe,EAAc,KAEjC,OADA,EAAgB,CAAC,EACV,EAEX,OAAO,EAAO,WAAW,EAAgB,KAAK,KAAM,IAAgB,EAAI,EAAI,CAAyB,EAAG,CAAyB,GAG/H,EAAgB,KACtB,eAAe,CAAgB,CAAC,EAAa,EAAS,EAAuB,EAAe,EAAgB,GAAO,CAC/G,IAAM,EAAU,EAAQ,QAClB,EAAS,EAAU,EAAQ,QAAU,EAAQ,OAAS,OACxD,EAAY,GACZ,EAAW,GACf,GAAI,CAAC,GAAiB,IAAW,eAC7B,EAAW,MAAM,QAAQ,KAAK,CAC1B,IAAI,QAAQ,CAAC,IAAY,CACrB,EAAY,OAAO,EAAO,WAAW,IAAM,EAAQ,EAAI,EAAG,KAAK,IAAI,EAAe,CAAoB,CAAC,CAAC,EAC3G,EACD,IAAI,QAAQ,CAAC,IAAY,CACrB,EAAY,GAAG,WAAY,IAAM,CAC7B,EAAO,aAAa,CAAS,EAC7B,EAAQ,EAAI,EACf,EACD,EAAY,GAAG,WAAY,IAAM,CAC7B,EAAO,aAAa,CAAS,EAC7B,EAAQ,EAAK,EAChB,EACD,EAAY,GAAG,QAAS,IAAM,CAC1B,EAAO,aAAa,CAAS,EAC7B,EAAQ,EAAK,EAChB,EACJ,CACL,CAAC,EAEL,GAAI,EACA,GAAU,EAAa,EAAQ,IAAI,EAG3C,SAAS,EAAS,CAAC,EAAa,EAAM,CAClC,GAAI,aAAgB,GAAU,CAC1B,EAAK,KAAK,CAAW,EACrB,OAEJ,GAAI,EAAM,CACN,IAAM,EAAW,OAAO,SAAS,CAAI,EAErC,GAAI,GADa,OAAO,IAAS,SACP,CACtB,GAAI,GAAY,EAAK,aAAe,EAChC,EAAY,IAAI,EAGhB,OAAY,IAAI,CAAI,EAExB,OAEJ,IAAM,EAAQ,EACd,GAAI,OAAO,IAAU,UACjB,EAAM,QACN,OAAO,EAAM,aAAe,UAC5B,OAAO,EAAM,aAAe,SAAU,CACtC,EAAY,IAAI,OAAO,KAAK,EAAM,OAAQ,EAAM,WAAY,EAAM,UAAU,CAAC,EAC7E,OAEJ,EAAY,IAAI,OAAO,KAAK,CAAI,CAAC,EACjC,OAEJ,EAAY,IAAI,EAGpB,IAAM,GAA0B,EAC5B,EAAS,OACT,EAAW,OACf,MAAM,CAAgB,CAClB,OACA,eACA,uBAAyB,EACzB,cAAgB,GAChB,SAAW,CAAE,gBAAiB,UAAW,QAClC,OAAM,CAAC,EAAmB,CAC7B,GAAI,OAAO,GAAmB,SAAW,WACrC,OAAO,EAEX,OAAO,IAAI,EAAgB,CAAiB,QAEzC,iBAAgB,CAAC,EAAO,EAAwB,EAAS,QAAS,CACrE,IAAQ,UAAS,WAAU,cAAe,EAC1C,GAAI,OAAO,IAAe,UAAY,IAAe,IACjD,OAAO,EAEX,IAAM,EAAW,MACjB,GAAI,KAAK,IAAI,EAAI,EAAW,EACxB,OAAO,EAEX,GAAI,GAAW,EACX,QAAW,KAAU,EAAS,CAC1B,IAAM,EAAe,EAAQ,IAAS,QAAU,EAC1C,EAAmB,EAAS,IAAS,QAAU,EACrD,GAAI,GAAgB,GAAc,GAAoB,EAAI,EAItD,OAHA,GAAQ,OAAO,6DAA6D,SAAoB;AAAA;AAAA,oFAEhC,EACzD,KAAK,IAAI,EAI5B,OAAO,EAEX,WAAW,CAAC,EAAS,CACjB,KAAK,eAAiB,IAAI,QAAQ,CAAC,EAAS,IAAW,CACnD,GAAI,OAAO,IAAY,WACnB,EAAQ,EACH,KAAK,CAAC,IAAa,CACpB,EAAQ,KAAK,qBAAqB,CAAQ,CAAC,EAC9C,EACI,MAAM,CAAM,EAGjB,OAAQ,KAAK,qBAAqB,CAAO,CAAC,EAEjD,EAEL,OAAO,EAAG,CACN,KAAK,QAAQ,WAAW,QAAQ,EAChC,KAAK,QAAQ,YAAY,QAAQ,OAE/B,OAAM,CAAC,GAAW,cAAa,kBAAmB,CAAC,EAAG,CACxD,GAAI,CAAC,KAAK,OACN,KAAK,OAAS,MAAM,KAAK,eAE7B,IAAM,EAAS,KAAK,OACd,EAAS,EAAO,OAChB,EAAQ,EAAQ,WAAa,SACnC,GAAI,CAAC,GAAS,CAAC,KAAK,OAAO,UACvB,KAAK,OAAO,UAAY,MAAM,KAAK,OAAO,kBAAkB,EAEhE,OAAO,IAAI,QAAQ,CAAC,EAAU,IAAY,CACtC,IAAI,EAA0B,OAC1B,EAAyB,GACzB,EAAsB,GACtB,EAAmB,GACnB,EAAkB,GAClB,EAAqB,GACnB,EAAgB,IAAM,CACxB,EAAO,aAAa,CAAsB,EAC1C,EAAO,aAAa,CAAmB,EACvC,EAAO,aAAa,CAAgB,EACpC,EAAO,aAAa,CAAe,EACnC,EAAO,aAAa,CAAkB,GAEpC,EAAU,MAAO,IAAQ,CAC3B,MAAM,EACN,EAAc,EACd,EAAS,CAAG,GAEV,EAAS,MAAO,IAAQ,CAC1B,MAAM,EACN,EAAc,EACd,EAAQ,CAAG,GAEf,GAAI,GAAa,QAAS,CACtB,IAAM,EAAa,EAAgB,CAAW,EAC9C,EAAO,CAAU,EACjB,OAEJ,IAAM,EAAU,EAAQ,QAClB,EAAiB,GAAW,EAAQ,QAAU,EAAQ,UAAY,eAAiB,GACrF,EAAQ,EAAQ,EAAO,WAAa,EAAO,UAC/C,GAAI,GAAkB,CAAC,KAAK,cACxB,EAAQ,IAAK,EAAQ,EAAW,MAAQ,GAAQ,CAC5C,UAAW,GACX,WAAY,GAChB,CAAC,EAEL,EAAyB,EAAO,WAAW,IAAM,CAC7C,KAAK,uBAAyB,EAAgB,iBAAiB,EAAO,KAAK,uBAAwB,CAAM,GAC1G,EAAO,kCAAoC,EAAO,gBAAkB,OAAS,EAAO,mBAAqB,KAAK,EACjH,IAAM,EAAc,EAAQ,MAAQ,EAAiB,EAAQ,KAAK,EAAI,GAClE,EAAO,OACX,GAAI,EAAQ,UAAY,MAAQ,EAAQ,UAAY,KAAM,CACtD,IAAM,EAAW,EAAQ,UAAY,GAC/B,EAAW,EAAQ,UAAY,GACrC,EAAO,GAAG,KAAY,IAE1B,IAAI,EAAO,EAAQ,KACnB,GAAI,EACA,GAAQ,IAAI,IAEhB,GAAI,EAAQ,SACR,GAAQ,IAAI,EAAQ,WAExB,IAAI,EAAW,EAAQ,UAAY,GACnC,GAAI,EAAS,KAAO,KAAO,EAAS,SAAS,GAAG,EAC5C,EAAW,EAAQ,SAAS,MAAM,EAAG,EAAE,EAGvC,OAAW,EAAQ,SAEvB,IAAM,EAAmB,CACrB,QAAS,EAAQ,QACjB,KAAM,EACN,OAAQ,EAAQ,OAChB,OACA,KAAM,EAAQ,KACd,QACA,MACJ,EAEM,GADc,EAAQ,EAAW,QAAU,GACzB,EAAkB,CAAC,IAAQ,CAC/C,IAAM,EAAe,IAAI,EAAa,CAClC,WAAY,EAAI,YAAc,GAC9B,OAAQ,EAAI,cACZ,QAAS,EAAsB,EAAI,OAAO,EAC1C,KAAM,CACV,CAAC,EACD,EAAQ,CAAE,SAAU,CAAa,CAAC,EACrC,EASD,GARA,EAAI,GAAG,QAAS,CAAC,IAAQ,CACrB,GAAI,GAA2B,SAAS,EAAI,IAAI,EAC5C,EAAO,OAAO,OAAO,EAAK,CAAE,KAAM,cAAe,CAAC,CAAC,EAGnD,OAAO,CAAG,EAEjB,EACG,EAAa,CACb,IAAM,EAAU,IAAM,CAClB,EAAI,QAAQ,EACZ,IAAM,EAAa,EAAgB,CAAW,EAC9C,EAAO,CAAU,GAErB,GAAI,OAAO,EAAY,mBAAqB,WAAY,CACpD,IAAM,EAAS,EACf,EAAO,iBAAiB,QAAS,EAAS,CAAE,KAAM,EAAK,CAAC,EACxD,EAAI,KAAK,QAAS,IAAM,EAAO,oBAAoB,QAAS,CAAO,CAAC,EAGpE,OAAY,QAAU,EAG9B,IAAM,EAA0B,GAAkB,EAAO,eACzD,EAAsB,GAAqB,EAAK,EAAQ,EAAO,iBAAiB,EAChF,EAAmB,GAAkB,EAAK,EAAQ,EAAyB,EAAO,sBAAuB,GAAU,OAAO,EAC1H,EAAkB,GAAiB,EAAK,EAAQ,EAAO,aAAa,EACpE,IAAM,EAAY,EAAiB,MACnC,GAAI,OAAO,IAAc,UAAY,cAAe,EAChD,EAAqB,GAAmB,EAAK,CACzC,UAAW,EAAU,UACrB,eAAgB,EAAU,cAC9B,CAAC,EAEL,EAA0B,EAAiB,EAAK,EAAS,EAAyB,KAAK,aAAa,EAAE,MAAM,CAAC,KACzG,EAAc,EACP,EAAQ,CAAC,EACnB,EACJ,EAEL,sBAAsB,CAAC,EAAK,EAAO,CAC/B,KAAK,OAAS,OACd,KAAK,eAAiB,KAAK,eAAe,KAAK,CAAC,IAAW,CACvD,GAAI,IAAQ,OAAO,IAAI,QAAQ,EAC3B,MAAO,IACA,EACH,OAAQ,EAAO,QAAU,CAC7B,EAEJ,MAAO,IACA,GACF,GAAM,CACX,EACH,EAEL,kBAAkB,EAAG,CACjB,OAAO,KAAK,QAAU,CAAC,EAE3B,oBAAoB,CAAC,EAAS,CAC1B,IAAQ,iBAAgB,oBAAmB,gBAAe,kCAAiC,YAAW,aAAY,wBAAuB,UAAY,GAAW,CAAC,EAC3J,EAAY,GACZ,EAAa,GACnB,MAAO,CACH,oBACA,iBACA,gBACA,kCACA,wBACA,kBAAmB,SAAY,CAC3B,IAAM,aACE,QAAO,WAAY,EAAU,SAAW,EAGhD,GAFA,EAAW,EACX,EAAS,EACL,aAAqB,GAAU,OAAO,GAAW,UAAY,WAE7D,OADA,KAAK,cAAgB,GACd,EAEX,OAAO,IAAI,EAAO,CAAE,UAjBV,GAiBqB,WAhBpB,MAgBmC,CAAU,CAAC,GAE7D,YAAa,IAAM,CACf,GAAI,aAAsB,EAAW,OAAS,OAAO,GAAY,UAAY,WAEzE,OADA,KAAK,cAAgB,GACd,EAEX,OAAO,IAAI,EAAW,MAAM,CAAE,UAxBpB,GAwB+B,WAvB9B,MAuB6C,CAAW,CAAC,IACrE,EACH,QACJ,EAER,CAEA,IAAM,GAAM,IAAI,YAAY,CAAC,EAC7B,MAAM,CAAsB,CACxB,GAAK,GAAI,KACT,MAAQ,EACR,IAAM,EACN,QACA,KAAO,EACP,WAAW,CAAC,EAAS,CACjB,EAAQ,MAAM,EACd,KAAK,QAAU,EAEnB,MAAM,EAAG,CACL,GAAI,KAAK,QAAQ,UACb,MAAU,MAAM,4EAA4E,EAEhG,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,IAAM,KAAK,IAAI,KAAK,KAAM,KAAK,GAAG,EACvC,KAAK,QAAQ,IAAI,EAErB,IAAI,EAAG,CACH,GAAI,KAAK,QAAQ,UACb,OAGJ,GADA,KAAK,MAAQ,EACT,KAAK,OAAS,EACd,KAAK,QAAQ,MAAM,EAEvB,GAAI,KAAK,KAAO,EACZ,MAAU,MAAM,oFAAoF,EAG5G,KAAK,EAAG,CACJ,OAAO,KAAK,QAEhB,KAAK,EAAG,CACJ,GAAI,CAAC,KAAK,QAAQ,OACd,KAAK,QAAQ,MAAM,EAG3B,OAAO,EAAG,CAEN,GADA,KAAK,KAAO,EACR,CAAC,KAAK,QAAQ,UACd,KAAK,QAAQ,QAAQ,EAG7B,QAAQ,EAAG,CACP,OAAO,KAAK,KAEpB,CAEA,MAAM,CAAwB,CAC1B,SAAW,CAAC,EACZ,eAAiB,EACjB,WAAW,CAAC,EAAU,CAClB,KAAK,UAAY,GAAY,CAAC,GAAG,IAAI,CAAC,IAAY,IAAI,EAAsB,CAAO,CAAC,EAExF,IAAI,EAAG,CACH,IAAI,EAAU,GACd,QAAW,KAAW,KAAK,SAAU,CACjC,GAAI,EAAQ,MAAM,EAAE,UAAW,CAC3B,EAAU,GACV,SAEJ,GAAI,CAAC,KAAK,gBAAkB,EAAQ,SAAS,EAAI,KAAK,eAClD,OAAO,EAGf,GAAI,GACA,QAAW,KAAW,KAAK,SACvB,GAAI,EAAQ,MAAM,EAAE,UAChB,KAAK,OAAO,CAAO,GAKnC,SAAS,CAAC,EAAK,CACX,KAAK,SAAS,KAAK,CAAG,EAE1B,MAAM,CAAC,EAAK,CACR,IAAM,EAAK,KAAK,SAAS,QAAQ,CAAG,EACpC,GAAI,EAAK,GACL,KAAK,SAAS,OAAO,EAAI,CAAC,GAGjC,OAAO,SAAS,EAAG,CAChB,OAAO,KAAK,SAAS,OAAO,UAAU,EAE1C,iBAAiB,CAAC,EAAgB,CAC9B,KAAK,eAAiB,EAE1B,OAAO,CAAC,EAAK,CACT,KAAK,OAAO,CAAG,EACf,EAAI,QAAQ,EAEpB,CAEA,MAAM,CAA2B,CAC7B,OACA,eACA,gBAAkB,IAAI,IACtB,WAAW,CAAC,EAAQ,CAEhB,GADA,KAAK,OAAS,EACV,KAAK,OAAO,gBAAkB,KAAK,OAAO,gBAAkB,EAC5D,MAAU,WAAW,2CAA2C,EAGxE,KAAK,CAAC,EAAgB,EAAyB,CAC3C,IAAM,EAAM,KAAK,aAAa,CAAc,EACtC,EAAO,KAAK,QAAQ,CAAG,EAC7B,GAAI,CAAC,KAAK,OAAO,oBAAsB,CAAC,EAAwB,cAAe,CAC3E,IAAM,EAAY,EAAK,KAAK,EAC5B,GAAI,EAEA,OADA,EAAU,OAAO,EACV,EAGf,IAAM,EAAM,IAAI,EAAsB,KAAK,QAAQ,CAAG,CAAC,EACjD,EAAU,EAAI,MAAM,EAC1B,GAAI,KAAK,OAAO,eACZ,EAAQ,SAAS,CAAE,qBAAsB,KAAK,OAAO,cAAe,EAAG,CAAC,IAAQ,CAC5E,GAAI,EACA,MAAU,MAAM,uCACZ,KAAK,OAAO,eACZ,iCACA,EAAe,YAAY,SAAS,CAAC,EAEhD,EAEL,IAAM,EAAW,IAAM,CACnB,KAAK,uBAAuB,EAAK,CAAG,GAElC,EAAkB,IAAM,CAC1B,KAAK,gCAAgC,EAAK,CAAG,GAMjD,GAJA,EAAQ,GAAG,SAAU,CAAQ,EAC7B,EAAQ,GAAG,QAAS,CAAe,EACnC,EAAQ,GAAG,aAAc,CAAe,EACxC,EAAQ,GAAG,QAAS,CAAe,EAC/B,EAAwB,eACxB,EAAQ,WAAW,EAAwB,eAAgB,CAAe,EAI9E,OAFA,EAAK,UAAU,CAAG,EAClB,EAAI,OAAO,EACJ,EAEX,OAAO,CAAC,EAAiB,EAAK,CAC1B,EAAI,KAAK,EAEb,qBAAqB,CAAC,EAAgB,EAAyB,CAC3D,IAAM,EAAM,KAAK,aAAa,CAAc,EACtC,EAAM,IAAI,EAAsB,KAAK,QAAQ,CAAG,CAAC,EACjD,EAAU,EAAI,MAAM,EAC1B,EAAQ,SAAS,CAAE,qBAAsB,CAAE,CAAC,EAC5C,IAAM,EAAkB,IAAM,CAC1B,EAAI,QAAQ,GAKhB,GAHA,EAAQ,GAAG,QAAS,CAAe,EACnC,EAAQ,GAAG,aAAc,CAAe,EACxC,EAAQ,GAAG,QAAS,CAAe,EAC/B,EAAwB,eACxB,EAAQ,WAAW,EAAwB,eAAgB,CAAe,EAG9E,OADA,EAAI,OAAO,EACJ,EAEX,OAAO,EAAG,CACN,QAAY,EAAK,KAAmB,KAAK,gBAAiB,CACtD,QAAW,IAAW,CAAC,GAAG,CAAc,EACpC,EAAQ,QAAQ,EAEpB,KAAK,gBAAgB,OAAO,CAAG,GAGvC,uBAAuB,CAAC,EAAsB,CAC1C,GAAI,GAAwB,GAAwB,EAChD,MAAU,WAAW,iDAAiD,EAE1E,KAAK,OAAO,eAAiB,EAC7B,QAAW,KAAQ,KAAK,gBAAgB,OAAO,EAC3C,EAAK,kBAAkB,CAAoB,EAGnD,2BAA2B,CAAC,EAA0B,CAClD,KAAK,OAAO,mBAAqB,EAErC,0BAA0B,CAAC,EAAyB,CAChD,KAAK,eAAiB,EAE1B,KAAK,EAAG,CACJ,IAAM,EAAQ,CAAC,EACf,QAAY,EAAK,KAAS,KAAK,gBAAiB,CAC5C,IAAM,EAAW,CAAC,EAClB,QAAW,KAAO,EACd,EAAS,KAAK,CACV,GAAI,EAAI,GACR,OAAQ,EAAI,SAAS,EACrB,cAAe,EAAI,IACnB,cAAe,EAAI,KACvB,CAAC,EAEL,EAAM,GAAO,CAAE,UAAS,EAE5B,OAAO,EAEX,sBAAsB,CAAC,EAAW,EAAK,CACnC,KAAK,gBAAgB,IAAI,CAAS,GAAG,OAAO,CAAG,EAC/C,EAAI,MAAM,EAEd,+BAA+B,CAAC,EAAW,EAAK,CAC5C,KAAK,gBAAgB,IAAI,CAAS,GAAG,OAAO,CAAG,EAC/C,EAAI,QAAQ,EAEhB,OAAO,CAAC,EAAK,CACT,GAAI,CAAC,KAAK,gBAAgB,IAAI,CAAG,EAAG,CAChC,IAAM,EAAO,IAAI,EACjB,GAAI,KAAK,OAAO,eACZ,EAAK,kBAAkB,KAAK,OAAO,cAAc,EAErD,KAAK,gBAAgB,IAAI,EAAK,CAAI,EAEtC,OAAO,KAAK,gBAAgB,IAAI,CAAG,EAEvC,YAAY,CAAC,EAAS,CAClB,OAAO,EAAQ,YAAY,SAAS,EAExC,OAAO,CAAC,EAAK,CACT,OAAO,KAAK,iBAAmB,OAAY,EAAM,QAAQ,CAAG,EAAI,EAAM,QAAQ,EAAK,KAAK,cAAc,EAE9G,CAEA,IAAQ,aAAc,EACtB,MAAM,CAAiB,CACnB,OACA,eACA,SAAW,CAAE,gBAAiB,IAAK,EACnC,kBAAoB,IAAI,EAA2B,CAAC,CAAC,QAC9C,OAAM,CAAC,EAAmB,CAC7B,GAAI,OAAO,GAAmB,SAAW,WACrC,OAAO,EAEX,OAAO,IAAI,EAAiB,CAAiB,EAEjD,WAAW,CAAC,EAAS,CACjB,KAAK,eAAiB,IAAI,QAAQ,CAAC,EAAS,IAAW,CACnD,GAAI,OAAO,IAAY,WACnB,EAAQ,EACH,KAAK,CAAC,IAAS,CAChB,EAAQ,GAAQ,CAAC,CAAC,EACrB,EACI,MAAM,CAAM,EAGjB,OAAQ,GAAW,CAAC,CAAC,EAE5B,EAEL,OAAO,EAAG,CACN,KAAK,kBAAkB,QAAQ,OAE7B,OAAM,CAAC,GAAW,cAAa,iBAAgB,iBAAkB,CAAC,EAAG,CACvE,GAAI,CAAC,KAAK,OAAQ,CACd,KAAK,OAAS,MAAM,KAAK,eACzB,IAAQ,2BAA0B,uBAAsB,2BAA4B,KAAK,OAEzF,GADA,KAAK,kBAAkB,4BAA4B,GAA4B,EAAK,EAChF,EACA,KAAK,kBAAkB,wBAAwB,CAAoB,EAEvE,GAAI,EACA,KAAK,kBAAkB,2BAA2B,CAAuB,EAGjF,IAAQ,eAAgB,EAAsB,4BAA6B,KAAK,OAC1E,EAAqB,GAA4B,EACjD,EAA0B,GAAkB,EAClD,OAAO,IAAI,QAAQ,CAAC,EAAU,IAAY,CACtC,IAAI,EAAY,GACZ,EAA0B,OACxB,EAAU,MAAO,IAAQ,CAC3B,MAAM,EACN,EAAS,CAAG,GAEV,EAAS,MAAO,IAAQ,CAC1B,MAAM,EACN,EAAQ,CAAG,GAEf,GAAI,GAAa,QAAS,CACtB,EAAY,GACZ,IAAM,EAAa,EAAgB,CAAW,EAC9C,EAAO,CAAU,EACjB,OAEJ,IAAQ,WAAU,SAAQ,OAAM,WAAU,SAAU,EAChD,EAAO,GACX,GAAI,EAAQ,UAAY,MAAQ,EAAQ,UAAY,KAAM,CACtD,IAAM,EAAW,EAAQ,UAAY,GAC/B,EAAW,EAAQ,UAAY,GACrC,EAAO,GAAG,KAAY,KAE1B,IAAM,EAAY,GAAG,MAAa,IAAO,IAAW,EAAO,IAAI,IAAS,KAClE,EAAiB,CAAE,YAAa,IAAI,IAAI,CAAS,CAAE,EACnD,EAAgB,CAClB,eAAgB,KAAK,QAAQ,eAC7B,eACJ,EACM,EAAM,EACN,KAAK,kBAAkB,sBAAsB,EAAgB,CAAa,EAC1E,KAAK,kBAAkB,MAAM,EAAgB,CAAa,EAC1D,EAAU,EAAI,MAAM,EACpB,EAAoB,CAAC,IAAQ,CAC/B,GAAI,EACA,EAAI,QAAQ,EAEhB,EAAY,GACZ,EAAO,CAAG,GAER,EAAc,EAAQ,EAAiB,CAAK,EAAI,GAClD,EAAO,EAAQ,KACnB,GAAI,EACA,GAAQ,IAAI,IAEhB,GAAI,EAAQ,SACR,GAAQ,IAAI,EAAQ,WAExB,IAAM,EAAoB,EAAQ,QAAQ,IACnC,EAAQ,SACV,EAAU,mBAAoB,GAC9B,EAAU,qBAAsB,CACrC,CAAC,EACD,GAAI,EACA,EAAkB,WAAW,EAAyB,IAAM,CACxD,EAAkB,MAAM,EACxB,IAAM,EAAmB,MAAM,+CAA+C,MAA4B,EAC1G,EAAa,KAAO,eACpB,EAAkB,CAAY,EACjC,EAEL,GAAI,EAAa,CACb,IAAM,EAAU,IAAM,CAClB,EAAkB,MAAM,EACxB,IAAM,EAAa,EAAgB,CAAW,EAC9C,EAAkB,CAAU,GAEhC,GAAI,OAAO,EAAY,mBAAqB,WAAY,CACpD,IAAM,EAAS,EACf,EAAO,iBAAiB,QAAS,EAAS,CAAE,KAAM,EAAK,CAAC,EACxD,EAAkB,KAAK,QAAS,IAAM,EAAO,oBAAoB,QAAS,CAAO,CAAC,EAGlF,OAAY,QAAU,EAG9B,EAAkB,GAAG,aAAc,CAAC,EAAM,EAAM,IAAO,CACnD,EAAsB,MAAM,iBAAiB,kBAAqB,0BAA2B,IAAO,CAAC,EACxG,EACD,EAAkB,GAAG,QAAS,CAAiB,EAC/C,EAAkB,GAAG,UAAW,IAAM,CAClC,EAAsB,MAAM,6EAA6E,EAAkB,UAAU,CAAC,EACzI,EACD,EAAkB,GAAG,WAAY,CAAC,IAAY,CAC1C,IAAM,EAAe,IAAI,EAAa,CAClC,WAAY,EAAQ,YAAc,GAClC,QAAS,EAAsB,CAAO,EACtC,KAAM,CACV,CAAC,EAGD,GAFA,EAAY,GACZ,EAAQ,CAAE,SAAU,CAAa,CAAC,EAC9B,EACA,EAAQ,MAAM,EAErB,EACD,EAAkB,GAAG,QAAS,IAAM,CAChC,GAAI,EACA,EAAI,QAAQ,EAGZ,UAAK,kBAAkB,QAAQ,EAAgB,CAAG,EAEtD,GAAI,CAAC,EACD,EAAsB,MAAM,wDAAwD,CAAC,EAE5F,EACD,EAA0B,EAAiB,EAAmB,EAAS,CAAuB,EACjG,EAEL,sBAAsB,CAAC,EAAK,EAAO,CAC/B,KAAK,OAAS,OACd,KAAK,eAAiB,KAAK,eAAe,KAAK,CAAC,KACrC,IACA,GACF,GAAM,CACX,EACH,EAEL,kBAAkB,EAAG,CACjB,OAAO,KAAK,QAAU,CAAC,EAE/B,CAEQ,2BAA0B,GAC1B,oBAAmB,EACnB,mBAAkB", | ||
| "debugId": "44322C84A42BC97364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openai-compatible-profile.ts"], | ||
| "sourcesContent": [ | ||
| "export interface OpenAICompatibleProfile {\n readonly provider: string\n readonly baseURL: string\n}\n\nexport const profiles = {\n baseten: { provider: \"baseten\", baseURL: \"https://inference.baseten.co/v1\" },\n cerebras: { provider: \"cerebras\", baseURL: \"https://api.cerebras.ai/v1\" },\n deepinfra: { provider: \"deepinfra\", baseURL: \"https://api.deepinfra.com/v1/openai\" },\n deepseek: { provider: \"deepseek\", baseURL: \"https://api.deepseek.com/v1\" },\n fireworks: { provider: \"fireworks\", baseURL: \"https://api.fireworks.ai/inference/v1\" },\n groq: { provider: \"groq\", baseURL: \"https://api.groq.com/openai/v1\" },\n openrouter: { provider: \"openrouter\", baseURL: \"https://openrouter.ai/api/v1\" },\n togetherai: { provider: \"togetherai\", baseURL: \"https://api.together.xyz/v1\" },\n xai: { provider: \"xai\", baseURL: \"https://api.x.ai/v1\" },\n} as const satisfies Record<string, OpenAICompatibleProfile>\n\nexport const byProvider: Record<string, OpenAICompatibleProfile> = Object.fromEntries(\n Object.values(profiles).map((profile) => [profile.provider, profile]),\n)\n" | ||
| ], | ||
| "mappings": ";AAKO,IAAM,EAAW,CACtB,QAAS,CAAE,SAAU,UAAW,QAAS,iCAAkC,EAC3E,SAAU,CAAE,SAAU,WAAY,QAAS,4BAA6B,EACxE,UAAW,CAAE,SAAU,YAAa,QAAS,qCAAsC,EACnF,SAAU,CAAE,SAAU,WAAY,QAAS,6BAA8B,EACzE,UAAW,CAAE,SAAU,YAAa,QAAS,uCAAwC,EACrF,KAAM,CAAE,SAAU,OAAQ,QAAS,gCAAiC,EACpE,WAAY,CAAE,SAAU,aAAc,QAAS,8BAA+B,EAC9E,WAAY,CAAE,SAAU,aAAc,QAAS,6BAA8B,EAC7E,IAAK,CAAE,SAAU,MAAO,QAAS,qBAAsB,CACzD,EAEa,EAAsD,OAAO,YACxE,OAAO,OAAO,CAAQ,EAAE,IAAI,CAAC,IAAY,CAAC,EAAQ,SAAU,CAAO,CAAC,CACtE", | ||
| "debugId": "2DD7A1C2D89F5F8F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+groq@3.0.31+d6123d32214422cb/node_modules/@ai-sdk/groq/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/groq-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/groq-chat-language-model.ts\nimport {\n InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/convert-groq-usage.ts\nfunction convertGroqUsage(usage) {\n var _a, _b, _c, _d;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = (_a = usage.prompt_tokens) != null ? _a : 0;\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = (_d = (_c = usage.completion_tokens_details) == null ? void 0 : _c.reasoning_tokens) != null ? _d : void 0;\n const textTokens = reasoningTokens != null ? completionTokens - reasoningTokens : completionTokens;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: textTokens,\n reasoning: reasoningTokens\n },\n raw: usage\n };\n}\n\n// src/convert-to-groq-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToGroqChatMessages(prompt) {\n var _a;\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"file\": {\n if (!part.mediaType.startsWith(\"image/\")) {\n throw new UnsupportedFunctionalityError({\n functionality: \"Non-image file content parts\"\n });\n }\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n return {\n type: \"image_url\",\n image_url: {\n url: part.data instanceof URL ? part.data.toString() : `data:${mediaType};base64,${convertToBase64(part.data)}`\n }\n };\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n let reasoning = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n // groq supports reasoning for tool-calls in multi-turn conversations\n // https://github.com/vercel/ai/issues/7860\n case \"reasoning\": {\n reasoning += part.text;\n break;\n }\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: text,\n ...reasoning.length > 0 ? { reasoning } : null,\n ...toolCalls.length > 0 ? { tool_calls: toolCalls } : null\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue;\n }\n const output = toolResponse.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: contentValue\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/groq-chat-options.ts\nimport { z } from \"zod/v4\";\nvar groqLanguageModelOptions = z.object({\n reasoningFormat: z.enum([\"parsed\", \"raw\", \"hidden\"]).optional(),\n /**\n * Specifies the reasoning effort level for model inference.\n * @see https://console.groq.com/docs/reasoning#reasoning-effort\n */\n reasoningEffort: z.enum([\"none\", \"default\", \"low\", \"medium\", \"high\"]).optional(),\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n /**\n * Whether to use strict JSON schema validation.\n * When true, the model uses constrained decoding to guarantee schema compliance.\n * Only used when structured outputs are enabled and a schema is provided.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n /**\n * Service tier for the request.\n * - 'on_demand': Default tier with consistent performance and fairness\n * - 'flex': Higher throughput tier optimized for workloads that can handle occasional request failures\n * - 'auto': Uses on_demand rate limits, then falls back to flex tier if exceeded\n *\n * @default 'on_demand'\n */\n serviceTier: z.enum([\"on_demand\", \"flex\", \"auto\"]).optional()\n});\n\n// src/groq-error.ts\nimport { z as z2 } from \"zod/v4\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nvar groqErrorDataSchema = z2.object({\n error: z2.object({\n message: z2.string(),\n type: z2.string()\n })\n});\nvar groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: (data) => data.error.message\n});\n\n// src/groq-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\n\n// src/groq-browser-search-models.ts\nvar BROWSER_SEARCH_SUPPORTED_MODELS = [\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-120b\"\n];\nfunction isBrowserSearchSupportedModel(modelId) {\n return BROWSER_SEARCH_SUPPORTED_MODELS.includes(modelId);\n}\nfunction getSupportedModelsString() {\n return BROWSER_SEARCH_SUPPORTED_MODELS.join(\", \");\n}\n\n// src/groq-prepare-tools.ts\nfunction prepareTools({\n tools,\n toolChoice,\n modelId\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const groqTools2 = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n if (tool.id === \"groq.browser_search\") {\n if (!isBrowserSearchSupportedModel(modelId)) {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`,\n details: `Browser search is only supported on the following models: ${getSupportedModelsString()}. Current model: ${modelId}`\n });\n } else {\n groqTools2.push({\n type: \"browser_search\"\n });\n }\n } else {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n }\n } else {\n groqTools2.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...tool.strict != null ? { strict: tool.strict } : {}\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: groqTools2, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: groqTools2, toolChoice: type, toolWarnings };\n case \"tool\":\n return {\n tools: groqTools2,\n toolChoice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName\n }\n },\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/map-groq-finish-reason.ts\nfunction mapGroqFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/groq-chat-language-model.ts\nvar GroqChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n \"image/*\": [/^https?:\\/\\/.*$/]\n };\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n tools,\n toolChoice,\n providerOptions\n }) {\n var _a, _b, _c;\n const warnings = [];\n const groqOptions = await parseProviderOptions({\n provider: \"groq\",\n providerOptions,\n schema: groqLanguageModelOptions\n });\n const structuredOutputs = (_a = groqOptions == null ? void 0 : groqOptions.structuredOutputs) != null ? _a : true;\n const strictJsonSchema = (_b = groqOptions == null ? void 0 : groqOptions.strictJsonSchema) != null ? _b : true;\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\" && responseFormat.schema != null && !structuredOutputs) {\n warnings.push({\n type: \"unsupported\",\n feature: \"responseFormat\",\n details: \"JSON response format schema is only supported with structuredOutputs\"\n });\n }\n const {\n tools: groqTools2,\n toolChoice: groqToolChoice,\n toolWarnings\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n return {\n args: {\n // model id:\n model: this.modelId,\n // model specific settings:\n user: groqOptions == null ? void 0 : groqOptions.user,\n parallel_tool_calls: groqOptions == null ? void 0 : groqOptions.parallelToolCalls,\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? structuredOutputs && responseFormat.schema != null ? {\n type: \"json_schema\",\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: (_c = responseFormat.name) != null ? _c : \"response\",\n description: responseFormat.description\n }\n } : { type: \"json_object\" } : void 0,\n // provider options:\n reasoning_format: groqOptions == null ? void 0 : groqOptions.reasoningFormat,\n reasoning_effort: groqOptions == null ? void 0 : groqOptions.reasoningEffort,\n service_tier: groqOptions == null ? void 0 : groqOptions.serviceTier,\n // messages:\n messages: convertToGroqChatMessages(prompt),\n // tools:\n tools: groqTools2,\n tool_choice: groqToolChoice\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n async doGenerate(options) {\n var _a, _b;\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false\n });\n const body = JSON.stringify(args);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: \"text\", text });\n }\n const reasoning = choice.message.reasoning;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: \"reasoning\",\n text: reasoning\n });\n }\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: (_a = toolCall.id) != null ? _a : generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapGroqFinishReason(choice.finish_reason),\n raw: (_b = choice.finish_reason) != null ? _b : void 0\n },\n usage: convertGroqUsage(response.usage),\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings,\n request: { body }\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n const body = JSON.stringify({ ...args, stream: true });\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const toolCalls = [];\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let isFirstChunk = true;\n let isActiveText = false;\n let isActiveReasoning = false;\n let providerMetadata;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n finishReason = {\n unified: \"error\",\n raw: void 0\n };\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (\"error\" in value) {\n finishReason = {\n unified: \"error\",\n raw: void 0\n };\n controller.enqueue({ type: \"error\", error: value.error });\n return;\n }\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (((_a = value.x_groq) == null ? void 0 : _a.usage) != null) {\n usage = value.x_groq.usage;\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = {\n unified: mapGroqFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = true;\n }\n controller.enqueue({\n type: \"reasoning-delta\",\n id: \"reasoning-0\",\n delta: delta.reasoning\n });\n }\n if (delta.content != null && delta.content.length > 0) {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = false;\n }\n if (!isActiveText) {\n controller.enqueue({ type: \"text-start\", id: \"txt-0\" });\n isActiveText = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"txt-0\",\n delta: delta.content\n });\n }\n if (delta.tool_calls != null) {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = false;\n }\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`\n });\n }\n if (((_b = toolCallDelta.function) == null ? void 0 : _b.name) == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`\n });\n }\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name\n });\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: (_c = toolCallDelta.function.arguments) != null ? _c : \"\"\n },\n hasFinished: false\n };\n const toolCall2 = toolCalls[index];\n if (((_d = toolCall2.function) == null ? void 0 : _d.name) != null && ((_e = toolCall2.function) == null ? void 0 : _e.arguments) != null) {\n if (toolCall2.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall2.id,\n delta: toolCall2.function.arguments\n });\n }\n if (isParsableJson(toolCall2.function.arguments)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall2.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: (_f = toolCall2.id) != null ? _f : generateId(),\n toolName: toolCall2.function.name,\n input: toolCall2.function.arguments\n });\n toolCall2.hasFinished = true;\n }\n }\n continue;\n }\n const toolCall = toolCalls[index];\n if (toolCall.hasFinished) {\n continue;\n }\n if (((_g = toolCallDelta.function) == null ? void 0 : _g.arguments) != null) {\n toolCall.function.arguments += (_i = (_h = toolCallDelta.function) == null ? void 0 : _h.arguments) != null ? _i : \"\";\n }\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: (_j = toolCallDelta.function.arguments) != null ? _j : \"\"\n });\n if (((_k = toolCall.function) == null ? void 0 : _k.name) != null && ((_l = toolCall.function) == null ? void 0 : _l.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: (_m = toolCall.id) != null ? _m : generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: \"reasoning-end\", id: \"reasoning-0\" });\n }\n if (isActiveText) {\n controller.enqueue({ type: \"text-end\", id: \"txt-0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertGroqUsage(usage),\n ...providerMetadata != null ? { providerMetadata } : {}\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nvar groqChatResponseSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n message: z3.object({\n content: z3.string().nullish(),\n reasoning: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n id: z3.string().nullish(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n ).nullish()\n }),\n index: z3.number(),\n finish_reason: z3.string().nullish()\n })\n ),\n usage: z3.object({\n prompt_tokens: z3.number().nullish(),\n completion_tokens: z3.number().nullish(),\n total_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({\n cached_tokens: z3.number().nullish()\n }).nullish(),\n completion_tokens_details: z3.object({\n reasoning_tokens: z3.number().nullish()\n }).nullish()\n }).nullish()\n});\nvar groqChatChunkSchema = z3.union([\n z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n delta: z3.object({\n content: z3.string().nullish(),\n reasoning: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n index: z3.number(),\n id: z3.string().nullish(),\n type: z3.literal(\"function\").optional(),\n function: z3.object({\n name: z3.string().nullish(),\n arguments: z3.string().nullish()\n })\n })\n ).nullish()\n }).nullish(),\n finish_reason: z3.string().nullable().optional(),\n index: z3.number()\n })\n ),\n x_groq: z3.object({\n usage: z3.object({\n prompt_tokens: z3.number().nullish(),\n completion_tokens: z3.number().nullish(),\n total_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({\n cached_tokens: z3.number().nullish()\n }).nullish(),\n completion_tokens_details: z3.object({\n reasoning_tokens: z3.number().nullish()\n }).nullish()\n }).nullish()\n }).nullish()\n }),\n groqErrorDataSchema\n]);\n\n// src/groq-transcription-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertBase64ToUint8Array,\n createJsonResponseHandler as createJsonResponseHandler2,\n mediaTypeToExtension,\n parseProviderOptions as parseProviderOptions2,\n postFormDataToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\n\n// src/groq-transcription-options.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\nvar groqTranscriptionModelOptions = lazySchema(\n () => zodSchema(\n z4.object({\n language: z4.string().nullish(),\n prompt: z4.string().nullish(),\n responseFormat: z4.string().nullish(),\n temperature: z4.number().min(0).max(1).nullish(),\n timestampGranularities: z4.array(z4.string()).nullish()\n })\n )\n);\n\n// src/groq-transcription-model.ts\nvar GroqTranscriptionModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n audio,\n mediaType,\n providerOptions\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const groqOptions = await parseProviderOptions2({\n provider: \"groq\",\n providerOptions,\n schema: groqTranscriptionModelOptions\n });\n const formData = new FormData();\n const blob = audio instanceof Uint8Array ? new Blob([audio]) : new Blob([convertBase64ToUint8Array(audio)]);\n formData.append(\"model\", this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n \"file\",\n new File([blob], \"audio\", { type: mediaType }),\n `audio.${fileExtension}`\n );\n if (groqOptions) {\n const transcriptionModelOptions = {\n language: (_a = groqOptions.language) != null ? _a : void 0,\n prompt: (_b = groqOptions.prompt) != null ? _b : void 0,\n response_format: (_c = groqOptions.responseFormat) != null ? _c : void 0,\n temperature: (_d = groqOptions.temperature) != null ? _d : void 0,\n timestamp_granularities: (_e = groqOptions.timestampGranularities) != null ? _e : void 0\n };\n for (const key in transcriptionModelOptions) {\n const value = transcriptionModelOptions[key];\n if (value !== void 0) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n return {\n formData,\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { formData, warnings } = await this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/audio/transcriptions\",\n modelId: this.modelId\n }),\n headers: combineHeaders2(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n groqTranscriptionResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n text: response.text,\n segments: (_e = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end\n }))) != null ? _e : [],\n language: (_f = response.language) != null ? _f : void 0,\n durationInSeconds: (_g = response.duration) != null ? _g : void 0,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar groqTranscriptionResponseSchema = z5.object({\n text: z5.string(),\n x_groq: z5.object({\n id: z5.string()\n }),\n // additional properties are returned when `response_format: 'verbose_json'` is\n task: z5.string().nullish(),\n language: z5.string().nullish(),\n duration: z5.number().nullish(),\n segments: z5.array(\n z5.object({\n id: z5.number(),\n seek: z5.number(),\n start: z5.number(),\n end: z5.number(),\n text: z5.string(),\n tokens: z5.array(z5.number()),\n temperature: z5.number(),\n avg_logprob: z5.number(),\n compression_ratio: z5.number(),\n no_speech_prob: z5.number()\n })\n ).nullish()\n});\n\n// src/tool/browser-search.ts\nimport { createProviderToolFactory } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar browserSearch = createProviderToolFactory({\n id: \"groq.browser_search\",\n inputSchema: z6.object({})\n});\n\n// src/groq-tools.ts\nvar groqTools = {\n browserSearch\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.31\" : \"0.0.0-test\";\n\n// src/groq-provider.ts\nfunction createGroq(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.groq.com/openai/v1\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"GROQ_API_KEY\",\n description: \"Groq\"\n })}`,\n ...options.headers\n },\n `ai-sdk/groq/${VERSION}`\n );\n const createChatModel = (modelId) => new GroqChatLanguageModel(modelId, {\n provider: \"groq.chat\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createLanguageModel = (modelId) => {\n if (new.target) {\n throw new Error(\n \"The Groq model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n const createTranscriptionModel = (modelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: \"groq.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n };\n const provider = function(modelId) {\n return createLanguageModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.tools = groqTools;\n return provider;\n}\nvar groq = createGroq();\nexport {\n VERSION,\n browserSearch,\n createGroq,\n groq\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";wdA0BA,SAAS,CAAgB,CAAC,EAAO,CAC/B,IAAI,EAAI,EAAI,EAAI,EAChB,GAAI,GAAS,KACX,MAAO,CACL,YAAa,CACX,MAAY,OACZ,QAAc,OACd,UAAgB,OAChB,WAAiB,MACnB,EACA,aAAc,CACZ,MAAY,OACZ,KAAW,OACX,UAAgB,MAClB,EACA,IAAU,MACZ,EAEF,IAAM,GAAgB,EAAK,EAAM,gBAAkB,KAAO,EAAK,EACzD,GAAoB,EAAK,EAAM,oBAAsB,KAAO,EAAK,EACjE,GAAmB,GAAM,EAAK,EAAM,4BAA8B,KAAY,OAAI,EAAG,mBAAqB,KAAO,EAAU,OAC3H,EAAa,GAAmB,KAAO,EAAmB,EAAkB,EAClF,MAAO,CACL,YAAa,CACX,MAAO,EACP,QAAS,EACT,UAAgB,OAChB,WAAiB,MACnB,EACA,aAAc,CACZ,MAAO,EACP,KAAM,EACN,UAAW,CACb,EACA,IAAK,CACP,EAQF,SAAS,EAAyB,CAAC,EAAQ,CACzC,IAAI,EACJ,IAAM,EAAW,CAAC,EAClB,QAAa,OAAM,aAAa,EAC9B,OAAQ,OACD,SAAU,CACb,EAAS,KAAK,CAAE,KAAM,SAAU,SAAQ,CAAC,EACzC,KACF,KACK,OAAQ,CACX,GAAI,EAAQ,SAAW,GAAK,EAAQ,GAAG,OAAS,OAAQ,CACtD,EAAS,KAAK,CAAE,KAAM,OAAQ,QAAS,EAAQ,GAAG,IAAK,CAAC,EACxD,MAEF,EAAS,KAAK,CACZ,KAAM,OACN,QAAS,EAAQ,IAAI,CAAC,IAAS,CAC7B,OAAQ,EAAK,UACN,OACH,MAAO,CAAE,KAAM,OAAQ,KAAM,EAAK,IAAK,MAEpC,OAAQ,CACX,GAAI,CAAC,EAAK,UAAU,WAAW,QAAQ,EACrC,MAAM,IAAI,EAA8B,CACtC,cAAe,8BACjB,CAAC,EAEH,IAAM,EAAY,EAAK,YAAc,UAAY,aAAe,EAAK,UACrE,MAAO,CACL,KAAM,YACN,UAAW,CACT,IAAK,EAAK,gBAAgB,IAAM,EAAK,KAAK,SAAS,EAAI,QAAQ,YAAoB,EAAgB,EAAK,IAAI,GAC9G,CACF,CACF,GAEH,CACH,CAAC,EACD,KACF,KACK,YAAa,CAChB,IAAI,EAAO,GACP,EAAY,GACV,EAAY,CAAC,EACnB,QAAW,KAAQ,EACjB,OAAQ,EAAK,UAGN,YAAa,CAChB,GAAa,EAAK,KAClB,KACF,KACK,OAAQ,CACX,GAAQ,EAAK,KACb,KACF,KACK,YAAa,CAChB,EAAU,KAAK,CACb,GAAI,EAAK,WACT,KAAM,WACN,SAAU,CACR,KAAM,EAAK,SACX,UAAW,KAAK,UAAU,EAAK,KAAK,CACtC,CACF,CAAC,EACD,KACF,EAGJ,EAAS,KAAK,CACZ,KAAM,YACN,QAAS,KACN,EAAU,OAAS,EAAI,CAAE,WAAU,EAAI,QACvC,EAAU,OAAS,EAAI,CAAE,WAAY,CAAU,EAAI,IACxD,CAAC,EACD,KACF,KACK,OAAQ,CACX,QAAW,KAAgB,EAAS,CAClC,GAAI,EAAa,OAAS,yBACxB,SAEF,IAAM,EAAS,EAAa,OACxB,EACJ,OAAQ,EAAO,UACR,WACA,aACH,EAAe,EAAO,MACtB,UACG,mBACH,GAAgB,EAAK,EAAO,SAAW,KAAO,EAAK,yBACnD,UACG,cACA,WACA,aACH,EAAe,KAAK,UAAU,EAAO,KAAK,EAC1C,MAEJ,EAAS,KAAK,CACZ,KAAM,OACN,aAAc,EAAa,WAC3B,QAAS,CACX,CAAC,EAEH,KACF,SAGE,MAAU,MAAM,qBADS,GAC8B,EAI7D,OAAO,EAIT,SAAS,CAAmB,EAC1B,KACA,QACA,WACC,CACD,MAAO,CACL,GAAI,GAAM,KAAO,EAAU,OAC3B,QAAS,GAAS,KAAO,EAAa,OACtC,UAAW,GAAW,KAAO,IAAI,KAAK,EAAU,IAAG,EAAS,MAC9D,EAKF,IAAI,GAA2B,EAAE,OAAO,CACtC,gBAAiB,EAAE,KAAK,CAAC,SAAU,MAAO,QAAQ,CAAC,EAAE,SAAS,EAK9D,gBAAiB,EAAE,KAAK,CAAC,OAAQ,UAAW,MAAO,SAAU,MAAM,CAAC,EAAE,SAAS,EAI/E,kBAAmB,EAAE,QAAQ,EAAE,SAAS,EAKxC,KAAM,EAAE,OAAO,EAAE,SAAS,EAM1B,kBAAmB,EAAE,QAAQ,EAAE,SAAS,EAQxC,iBAAkB,EAAE,QAAQ,EAAE,SAAS,EASvC,YAAa,EAAE,KAAK,CAAC,YAAa,OAAQ,MAAM,CAAC,EAAE,SAAS,CAC9D,CAAC,EAKG,GAAsB,EAAG,OAAO,CAClC,MAAO,EAAG,OAAO,CACf,QAAS,EAAG,OAAO,EACnB,KAAM,EAAG,OAAO,CAClB,CAAC,CACH,CAAC,EACG,EAA4B,GAA+B,CAC7D,YAAa,GACb,eAAgB,CAAC,IAAS,EAAK,MAAM,OACvC,CAAC,EAQG,GAAkC,CACpC,qBACA,qBACF,EACA,SAAS,EAA6B,CAAC,EAAS,CAC9C,OAAO,GAAgC,SAAS,CAAO,EAEzD,SAAS,EAAwB,EAAG,CAClC,OAAO,GAAgC,KAAK,IAAI,EAIlD,SAAS,EAAY,EACnB,QACA,aACA,WACC,CACD,GAAS,GAAS,KAAY,OAAI,EAAM,QAAU,EAAa,OAC/D,IAAM,EAAe,CAAC,EACtB,GAAI,GAAS,KACX,MAAO,CAAE,MAAY,OAAG,WAAiB,OAAG,cAAa,EAE3D,IAAM,EAAa,CAAC,EACpB,QAAW,KAAQ,EACjB,GAAI,EAAK,OAAS,WAChB,GAAI,EAAK,KAAO,sBACd,GAAI,CAAC,GAA8B,CAAO,EACxC,EAAa,KAAK,CAChB,KAAM,cACN,QAAS,yBAAyB,EAAK,KACvC,QAAS,6DAA6D,GAAyB,qBAAqB,GACtH,CAAC,EAED,OAAW,KAAK,CACd,KAAM,gBACR,CAAC,EAGH,OAAa,KAAK,CAChB,KAAM,cACN,QAAS,yBAAyB,EAAK,IACzC,CAAC,EAGH,OAAW,KAAK,CACd,KAAM,WACN,SAAU,CACR,KAAM,EAAK,KACX,YAAa,EAAK,YAClB,WAAY,EAAK,eACd,EAAK,QAAU,KAAO,CAAE,OAAQ,EAAK,MAAO,EAAI,CAAC,CACtD,CACF,CAAC,EAGL,GAAI,GAAc,KAChB,MAAO,CAAE,MAAO,EAAY,WAAiB,OAAG,cAAa,EAE/D,IAAM,EAAO,EAAW,KACxB,OAAQ,OACD,WACA,WACA,WACH,MAAO,CAAE,MAAO,EAAY,WAAY,EAAM,cAAa,MACxD,OACH,MAAO,CACL,MAAO,EACP,WAAY,CACV,KAAM,WACN,SAAU,CACR,KAAM,EAAW,QACnB,CACF,EACA,cACF,UAGA,MAAM,IAAI,EAA+B,CACvC,cAAe,qBAFQ,GAGzB,CAAC,GAMP,SAAS,CAAmB,CAAC,EAAc,CACzC,OAAQ,OACD,OACH,MAAO,WACJ,SACH,MAAO,aACJ,iBACH,MAAO,qBACJ,oBACA,aACH,MAAO,qBAEP,MAAO,SAKb,IAAI,GAAwB,KAAM,CAChC,WAAW,CAAC,EAAS,EAAQ,CAC3B,KAAK,qBAAuB,KAC5B,KAAK,cAAgB,CACnB,UAAW,CAAC,iBAAiB,CAC/B,EACA,KAAK,QAAU,EACf,KAAK,OAAS,KAEZ,SAAQ,EAAG,CACb,OAAO,KAAK,OAAO,cAEf,QAAO,EACX,SACA,kBACA,cACA,OACA,OACA,mBACA,kBACA,gBACA,iBACA,OACA,SACA,QACA,aACA,mBACC,CACD,IAAI,EAAI,EAAI,EACZ,IAAM,EAAW,CAAC,EACZ,EAAc,MAAM,EAAqB,CAC7C,SAAU,OACV,kBACA,OAAQ,EACV,CAAC,EACK,GAAqB,EAAK,GAAe,KAAY,OAAI,EAAY,oBAAsB,KAAO,EAAK,GACvG,GAAoB,EAAK,GAAe,KAAY,OAAI,EAAY,mBAAqB,KAAO,EAAK,GAC3G,GAAI,GAAQ,KACV,EAAS,KAAK,CAAE,KAAM,cAAe,QAAS,MAAO,CAAC,EAExD,IAAK,GAAkB,KAAY,OAAI,EAAe,QAAU,QAAU,EAAe,QAAU,MAAQ,CAAC,EAC1G,EAAS,KAAK,CACZ,KAAM,cACN,QAAS,iBACT,QAAS,sEACX,CAAC,EAEH,IACE,MAAO,EACP,WAAY,EACZ,gBACE,GAAa,CAAE,QAAO,aAAY,QAAS,KAAK,OAAQ,CAAC,EAC7D,MAAO,CACL,KAAM,CAEJ,MAAO,KAAK,QAEZ,KAAM,GAAe,KAAY,OAAI,EAAY,KACjD,oBAAqB,GAAe,KAAY,OAAI,EAAY,kBAEhE,WAAY,EACZ,cACA,MAAO,EACP,kBAAmB,EACnB,iBAAkB,EAClB,KAAM,EACN,OAEA,iBAAkB,GAAkB,KAAY,OAAI,EAAe,QAAU,OAAS,GAAqB,EAAe,QAAU,KAAO,CACzI,KAAM,cACN,YAAa,CACX,OAAQ,EAAe,OACvB,OAAQ,EACR,MAAO,EAAK,EAAe,OAAS,KAAO,EAAK,WAChD,YAAa,EAAe,WAC9B,CACF,EAAI,CAAE,KAAM,aAAc,EAAS,OAEnC,iBAAkB,GAAe,KAAY,OAAI,EAAY,gBAC7D,iBAAkB,GAAe,KAAY,OAAI,EAAY,gBAC7D,aAAc,GAAe,KAAY,OAAI,EAAY,YAEzD,SAAU,GAA0B,CAAM,EAE1C,MAAO,EACP,YAAa,CACf,EACA,SAAU,CAAC,GAAG,EAAU,GAAG,CAAY,CACzC,OAEI,WAAU,CAAC,EAAS,CACxB,IAAI,EAAI,EACR,IAAQ,OAAM,YAAa,MAAM,KAAK,QAAQ,IACzC,EACH,OAAQ,EACV,CAAC,EACK,EAAO,KAAK,UAAU,CAAI,GAE9B,kBACA,MAAO,EACP,SAAU,GACR,MAAM,EAAc,CACtB,IAAK,KAAK,OAAO,IAAI,CACnB,KAAM,oBACN,QAAS,KAAK,OAChB,CAAC,EACD,QAAS,EAAe,KAAK,OAAO,QAAQ,EAAG,EAAQ,OAAO,EAC9D,KAAM,EACN,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACK,EAAS,EAAS,QAAQ,GAC1B,EAAU,CAAC,EACX,EAAO,EAAO,QAAQ,QAC5B,GAAI,GAAQ,MAAQ,EAAK,OAAS,EAChC,EAAQ,KAAK,CAAE,KAAM,OAAQ,MAAK,CAAC,EAErC,IAAM,EAAY,EAAO,QAAQ,UACjC,GAAI,GAAa,MAAQ,EAAU,OAAS,EAC1C,EAAQ,KAAK,CACX,KAAM,YACN,KAAM,CACR,CAAC,EAEH,GAAI,EAAO,QAAQ,YAAc,KAC/B,QAAW,KAAY,EAAO,QAAQ,WACpC,EAAQ,KAAK,CACX,KAAM,YACN,YAAa,EAAK,EAAS,KAAO,KAAO,EAAK,EAAW,EACzD,SAAU,EAAS,SAAS,KAC5B,MAAO,EAAS,SAAS,SAC3B,CAAC,EAGL,MAAO,CACL,UACA,aAAc,CACZ,QAAS,EAAoB,EAAO,aAAa,EACjD,KAAM,EAAK,EAAO,gBAAkB,KAAO,EAAU,MACvD,EACA,MAAO,EAAiB,EAAS,KAAK,EACtC,SAAU,IACL,EAAoB,CAAQ,EAC/B,QAAS,EACT,KAAM,CACR,EACA,WACA,QAAS,CAAE,MAAK,CAClB,OAEI,SAAQ,CAAC,EAAS,CACtB,IAAQ,OAAM,YAAa,MAAM,KAAK,QAAQ,IAAK,EAAS,OAAQ,EAAK,CAAC,EACpE,EAAO,KAAK,UAAU,IAAK,EAAM,OAAQ,EAAK,CAAC,GAC7C,kBAAiB,MAAO,GAAa,MAAM,EAAc,CAC/D,IAAK,KAAK,OAAO,IAAI,CACnB,KAAM,oBACN,QAAS,KAAK,OAChB,CAAC,EACD,QAAS,EAAe,KAAK,OAAO,QAAQ,EAAG,EAAQ,OAAO,EAC9D,KAAM,IACD,EACH,OAAQ,EACV,EACA,sBAAuB,EACvB,0BAA2B,GAAiC,EAAmB,EAC/E,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACK,EAAY,CAAC,EACf,EAAe,CACjB,QAAS,QACT,IAAU,MACZ,EACI,EAAa,OACb,EAAe,GACf,EAAe,GACf,EAAoB,GACpB,EACJ,MAAO,CACL,OAAQ,EAAS,YACf,IAAI,gBAAgB,CAClB,KAAK,CAAC,EAAY,CAChB,EAAW,QAAQ,CAAE,KAAM,eAAgB,UAAS,CAAC,GAEvD,SAAS,CAAC,EAAO,EAAY,CAC3B,IAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EACpD,GAAI,EAAQ,iBACV,EAAW,QAAQ,CAAE,KAAM,MAAO,SAAU,EAAM,QAAS,CAAC,EAE9D,GAAI,CAAC,EAAM,QAAS,CAClB,EAAe,CACb,QAAS,QACT,IAAU,MACZ,EACA,EAAW,QAAQ,CAAE,KAAM,QAAS,MAAO,EAAM,KAAM,CAAC,EACxD,OAEF,IAAM,EAAQ,EAAM,MACpB,GAAI,UAAW,EAAO,CACpB,EAAe,CACb,QAAS,QACT,IAAU,MACZ,EACA,EAAW,QAAQ,CAAE,KAAM,QAAS,MAAO,EAAM,KAAM,CAAC,EACxD,OAEF,GAAI,EACF,EAAe,GACf,EAAW,QAAQ,CACjB,KAAM,uBACH,EAAoB,CAAK,CAC9B,CAAC,EAEH,KAAM,EAAK,EAAM,SAAW,KAAY,OAAI,EAAG,QAAU,KACvD,EAAQ,EAAM,OAAO,MAEvB,IAAM,EAAS,EAAM,QAAQ,GAC7B,IAAK,GAAU,KAAY,OAAI,EAAO,gBAAkB,KACtD,EAAe,CACb,QAAS,EAAoB,EAAO,aAAa,EACjD,IAAK,EAAO,aACd,EAEF,IAAK,GAAU,KAAY,OAAI,EAAO,QAAU,KAC9C,OAEF,IAAM,EAAQ,EAAO,MACrB,GAAI,EAAM,WAAa,MAAQ,EAAM,UAAU,OAAS,EAAG,CACzD,GAAI,CAAC,EACH,EAAW,QAAQ,CACjB,KAAM,kBACN,GAAI,aACN,CAAC,EACD,EAAoB,GAEtB,EAAW,QAAQ,CACjB,KAAM,kBACN,GAAI,cACJ,MAAO,EAAM,SACf,CAAC,EAEH,GAAI,EAAM,SAAW,MAAQ,EAAM,QAAQ,OAAS,EAAG,CACrD,GAAI,EACF,EAAW,QAAQ,CACjB,KAAM,gBACN,GAAI,aACN,CAAC,EACD,EAAoB,GAEtB,GAAI,CAAC,EACH,EAAW,QAAQ,CAAE,KAAM,aAAc,GAAI,OAAQ,CAAC,EACtD,EAAe,GAEjB,EAAW,QAAQ,CACjB,KAAM,aACN,GAAI,QACJ,MAAO,EAAM,OACf,CAAC,EAEH,GAAI,EAAM,YAAc,KAAM,CAC5B,GAAI,EACF,EAAW,QAAQ,CACjB,KAAM,gBACN,GAAI,aACN,CAAC,EACD,EAAoB,GAEtB,QAAW,KAAiB,EAAM,WAAY,CAC5C,IAAM,EAAQ,EAAc,MAC5B,GAAI,EAAU,IAAU,KAAM,CAC5B,GAAI,EAAc,OAAS,WACzB,MAAM,IAAI,EAAyB,CACjC,KAAM,EACN,QAAS,2BACX,CAAC,EAEH,GAAI,EAAc,IAAM,KACtB,MAAM,IAAI,EAAyB,CACjC,KAAM,EACN,QAAS,+BACX,CAAC,EAEH,KAAM,EAAK,EAAc,WAAa,KAAY,OAAI,EAAG,OAAS,KAChE,MAAM,IAAI,EAAyB,CACjC,KAAM,EACN,QAAS,0CACX,CAAC,EAEH,EAAW,QAAQ,CACjB,KAAM,mBACN,GAAI,EAAc,GAClB,SAAU,EAAc,SAAS,IACnC,CAAC,EACD,EAAU,GAAS,CACjB,GAAI,EAAc,GAClB,KAAM,WACN,SAAU,CACR,KAAM,EAAc,SAAS,KAC7B,WAAY,EAAK,EAAc,SAAS,YAAc,KAAO,EAAK,EACpE,EACA,YAAa,EACf,EACA,IAAM,EAAY,EAAU,GAC5B,KAAM,EAAK,EAAU,WAAa,KAAY,OAAI,EAAG,OAAS,QAAU,EAAK,EAAU,WAAa,KAAY,OAAI,EAAG,YAAc,KAAM,CACzI,GAAI,EAAU,SAAS,UAAU,OAAS,EACxC,EAAW,QAAQ,CACjB,KAAM,mBACN,GAAI,EAAU,GACd,MAAO,EAAU,SAAS,SAC5B,CAAC,EAEH,GAAI,EAAe,EAAU,SAAS,SAAS,EAC7C,EAAW,QAAQ,CACjB,KAAM,iBACN,GAAI,EAAU,EAChB,CAAC,EACD,EAAW,QAAQ,CACjB,KAAM,YACN,YAAa,EAAK,EAAU,KAAO,KAAO,EAAK,EAAW,EAC1D,SAAU,EAAU,SAAS,KAC7B,MAAO,EAAU,SAAS,SAC5B,CAAC,EACD,EAAU,YAAc,GAG5B,SAEF,IAAM,EAAW,EAAU,GAC3B,GAAI,EAAS,YACX,SAEF,KAAM,EAAK,EAAc,WAAa,KAAY,OAAI,EAAG,YAAc,KACrE,EAAS,SAAS,YAAc,GAAM,EAAK,EAAc,WAAa,KAAY,OAAI,EAAG,YAAc,KAAO,EAAK,GAOrH,GALA,EAAW,QAAQ,CACjB,KAAM,mBACN,GAAI,EAAS,GACb,OAAQ,EAAK,EAAc,SAAS,YAAc,KAAO,EAAK,EAChE,CAAC,IACK,EAAK,EAAS,WAAa,KAAY,OAAI,EAAG,OAAS,QAAU,EAAK,EAAS,WAAa,KAAY,OAAI,EAAG,YAAc,MAAQ,EAAe,EAAS,SAAS,SAAS,EACnL,EAAW,QAAQ,CACjB,KAAM,iBACN,GAAI,EAAS,EACf,CAAC,EACD,EAAW,QAAQ,CACjB,KAAM,YACN,YAAa,EAAK,EAAS,KAAO,KAAO,EAAK,EAAW,EACzD,SAAU,EAAS,SAAS,KAC5B,MAAO,EAAS,SAAS,SAC3B,CAAC,EACD,EAAS,YAAc,MAK/B,KAAK,CAAC,EAAY,CAChB,GAAI,EACF,EAAW,QAAQ,CAAE,KAAM,gBAAiB,GAAI,aAAc,CAAC,EAEjE,GAAI,EACF,EAAW,QAAQ,CAAE,KAAM,WAAY,GAAI,OAAQ,CAAC,EAEtD,EAAW,QAAQ,CACjB,KAAM,SACN,eACA,MAAO,EAAiB,CAAK,KAC1B,GAAoB,KAAO,CAAE,kBAAiB,EAAI,CAAC,CACxD,CAAC,EAEL,CAAC,CACH,EACA,QAAS,CAAE,MAAK,EAChB,SAAU,CAAE,QAAS,CAAgB,CACvC,EAEJ,EACI,GAAyB,EAAG,OAAO,CACrC,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,MAAO,EAAG,OAAO,EAAE,QAAQ,EAC3B,QAAS,EAAG,MACV,EAAG,OAAO,CACR,QAAS,EAAG,OAAO,CACjB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,UAAW,EAAG,OAAO,EAAE,QAAQ,EAC/B,WAAY,EAAG,MACb,EAAG,OAAO,CACR,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,KAAM,EAAG,QAAQ,UAAU,EAC3B,SAAU,EAAG,OAAO,CAClB,KAAM,EAAG,OAAO,EAChB,UAAW,EAAG,OAAO,CACvB,CAAC,CACH,CAAC,CACH,EAAE,QAAQ,CACZ,CAAC,EACD,MAAO,EAAG,OAAO,EACjB,cAAe,EAAG,OAAO,EAAE,QAAQ,CACrC,CAAC,CACH,EACA,MAAO,EAAG,OAAO,CACf,cAAe,EAAG,OAAO,EAAE,QAAQ,EACnC,kBAAmB,EAAG,OAAO,EAAE,QAAQ,EACvC,aAAc,EAAG,OAAO,EAAE,QAAQ,EAClC,sBAAuB,EAAG,OAAO,CAC/B,cAAe,EAAG,OAAO,EAAE,QAAQ,CACrC,CAAC,EAAE,QAAQ,EACX,0BAA2B,EAAG,OAAO,CACnC,iBAAkB,EAAG,OAAO,EAAE,QAAQ,CACxC,CAAC,EAAE,QAAQ,CACb,CAAC,EAAE,QAAQ,CACb,CAAC,EACG,GAAsB,EAAG,MAAM,CACjC,EAAG,OAAO,CACR,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,MAAO,EAAG,OAAO,EAAE,QAAQ,EAC3B,QAAS,EAAG,MACV,EAAG,OAAO,CACR,MAAO,EAAG,OAAO,CACf,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,UAAW,EAAG,OAAO,EAAE,QAAQ,EAC/B,WAAY,EAAG,MACb,EAAG,OAAO,CACR,MAAO,EAAG,OAAO,EACjB,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,KAAM,EAAG,QAAQ,UAAU,EAAE,SAAS,EACtC,SAAU,EAAG,OAAO,CAClB,KAAM,EAAG,OAAO,EAAE,QAAQ,EAC1B,UAAW,EAAG,OAAO,EAAE,QAAQ,CACjC,CAAC,CACH,CAAC,CACH,EAAE,QAAQ,CACZ,CAAC,EAAE,QAAQ,EACX,cAAe,EAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAC/C,MAAO,EAAG,OAAO,CACnB,CAAC,CACH,EACA,OAAQ,EAAG,OAAO,CAChB,MAAO,EAAG,OAAO,CACf,cAAe,EAAG,OAAO,EAAE,QAAQ,EACnC,kBAAmB,EAAG,OAAO,EAAE,QAAQ,EACvC,aAAc,EAAG,OAAO,EAAE,QAAQ,EAClC,sBAAuB,EAAG,OAAO,CAC/B,cAAe,EAAG,OAAO,EAAE,QAAQ,CACrC,CAAC,EAAE,QAAQ,EACX,0BAA2B,EAAG,OAAO,CACnC,iBAAkB,EAAG,OAAO,EAAE,QAAQ,CACxC,CAAC,EAAE,QAAQ,CACb,CAAC,EAAE,QAAQ,CACb,CAAC,EAAE,QAAQ,CACb,CAAC,EACD,EACF,CAAC,EAgBG,GAAgC,GAClC,IAAM,GACJ,EAAG,OAAO,CACR,SAAU,EAAG,OAAO,EAAE,QAAQ,EAC9B,OAAQ,EAAG,OAAO,EAAE,QAAQ,EAC5B,eAAgB,EAAG,OAAO,EAAE,QAAQ,EACpC,YAAa,EAAG,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,EAC/C,uBAAwB,EAAG,MAAM,EAAG,OAAO,CAAC,EAAE,QAAQ,CACxD,CAAC,CACH,CACF,EAGI,GAAyB,KAAM,CACjC,WAAW,CAAC,EAAS,EAAQ,CAC3B,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,qBAAuB,QAE1B,SAAQ,EAAG,CACb,OAAO,KAAK,OAAO,cAEf,QAAO,EACX,QACA,YACA,mBACC,CACD,IAAI,EAAI,EAAI,EAAI,EAAI,EACpB,IAAM,EAAW,CAAC,EACZ,EAAc,MAAM,EAAsB,CAC9C,SAAU,OACV,kBACA,OAAQ,EACV,CAAC,EACK,EAAW,IAAI,SACf,EAAO,aAAiB,WAAa,IAAI,KAAK,CAAC,CAAK,CAAC,EAAI,IAAI,KAAK,CAAC,EAA0B,CAAK,CAAC,CAAC,EAC1G,EAAS,OAAO,QAAS,KAAK,OAAO,EACrC,IAAM,EAAgB,GAAqB,CAAS,EAMpD,GALA,EAAS,OACP,OACA,IAAI,KAAK,CAAC,CAAI,EAAG,QAAS,CAAE,KAAM,CAAU,CAAC,EAC7C,SAAS,GACX,EACI,EAAa,CACf,IAAM,EAA4B,CAChC,UAAW,EAAK,EAAY,WAAa,KAAO,EAAU,OAC1D,QAAS,EAAK,EAAY,SAAW,KAAO,EAAU,OACtD,iBAAkB,EAAK,EAAY,iBAAmB,KAAO,EAAU,OACvE,aAAc,EAAK,EAAY,cAAgB,KAAO,EAAU,OAChE,yBAA0B,EAAK,EAAY,yBAA2B,KAAO,EAAU,MACzF,EACA,QAAW,KAAO,EAA2B,CAC3C,IAAM,EAAQ,EAA0B,GACxC,GAAI,IAAe,OACjB,GAAI,MAAM,QAAQ,CAAK,EACrB,QAAW,KAAQ,EACjB,EAAS,OAAO,GAAG,MAAS,OAAO,CAAI,CAAC,EAG1C,OAAS,OAAO,EAAK,OAAO,CAAK,CAAC,GAK1C,MAAO,CACL,WACA,UACF,OAEI,WAAU,CAAC,EAAS,CACxB,IAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5B,IAAM,GAAe,GAAM,GAAM,EAAK,KAAK,OAAO,YAAc,KAAY,OAAI,EAAG,cAAgB,KAAY,OAAI,EAAG,KAAK,CAAE,IAAM,KAAO,EAAqB,IAAI,MAC3J,WAAU,YAAa,MAAM,KAAK,QAAQ,CAAO,GAEvD,MAAO,EACP,kBACA,SAAU,GACR,MAAM,GAAkB,CAC1B,IAAK,KAAK,OAAO,IAAI,CACnB,KAAM,wBACN,QAAS,KAAK,OAChB,CAAC,EACD,QAAS,EAAgB,KAAK,OAAO,QAAQ,EAAG,EAAQ,OAAO,EAC/D,WACA,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACD,MAAO,CACL,KAAM,EAAS,KACf,UAAW,GAAM,EAAK,EAAS,WAAa,KAAY,OAAI,EAAG,IAAI,CAAC,KAAa,CAC/E,KAAM,EAAQ,KACd,YAAa,EAAQ,MACrB,UAAW,EAAQ,GACrB,EAAE,IAAM,KAAO,EAAK,CAAC,EACrB,UAAW,EAAK,EAAS,WAAa,KAAO,EAAU,OACvD,mBAAoB,EAAK,EAAS,WAAa,KAAO,EAAU,OAChE,WACA,SAAU,CACR,UAAW,EACX,QAAS,KAAK,QACd,QAAS,EACT,KAAM,CACR,CACF,EAEJ,EACI,GAAkC,EAAG,OAAO,CAC9C,KAAM,EAAG,OAAO,EAChB,OAAQ,EAAG,OAAO,CAChB,GAAI,EAAG,OAAO,CAChB,CAAC,EAED,KAAM,EAAG,OAAO,EAAE,QAAQ,EAC1B,SAAU,EAAG,OAAO,EAAE,QAAQ,EAC9B,SAAU,EAAG,OAAO,EAAE,QAAQ,EAC9B,SAAU,EAAG,MACX,EAAG,OAAO,CACR,GAAI,EAAG,OAAO,EACd,KAAM,EAAG,OAAO,EAChB,MAAO,EAAG,OAAO,EACjB,IAAK,EAAG,OAAO,EACf,KAAM,EAAG,OAAO,EAChB,OAAQ,EAAG,MAAM,EAAG,OAAO,CAAC,EAC5B,YAAa,EAAG,OAAO,EACvB,YAAa,EAAG,OAAO,EACvB,kBAAmB,EAAG,OAAO,EAC7B,eAAgB,EAAG,OAAO,CAC5B,CAAC,CACH,EAAE,QAAQ,CACZ,CAAC,EAKG,GAAgB,GAA0B,CAC5C,GAAI,sBACJ,YAAa,EAAG,OAAO,CAAC,CAAC,CAC3B,CAAC,EAGG,GAAY,CACd,gBACF,EAGI,GAAiB,SAGrB,SAAS,EAAU,CAAC,EAAU,CAAC,EAAG,CAChC,IAAI,EACJ,IAAM,GAAW,EAAK,GAAqB,EAAQ,OAAO,IAAM,KAAO,EAAK,iCACtE,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,eACzB,YAAa,MACf,CAAC,OACE,EAAQ,OACb,EACA,eAAe,IACjB,EACM,EAAkB,CAAC,IAAY,IAAI,GAAsB,EAAS,CACtE,SAAU,YACV,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,KACjB,CAAC,EACK,EAAsB,CAAC,IAAY,CACvC,GAAI,WACF,MAAU,MACR,gEACF,EAEF,OAAO,EAAgB,CAAO,GAE1B,EAA2B,CAAC,IACzB,IAAI,GAAuB,EAAS,CACzC,SAAU,qBACV,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,KACjB,CAAC,EAEG,EAAW,QAAQ,CAAC,EAAS,CACjC,OAAO,EAAoB,CAAO,GAepC,OAbA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,KAAO,EAChB,EAAS,eAAiB,CAAC,IAAY,CACrC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,gBAAiB,CAAC,GAErE,EAAS,mBAAqB,EAAS,eACvC,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAEjE,EAAS,cAAgB,EACzB,EAAS,mBAAqB,EAC9B,EAAS,MAAQ,GACV,EAET,IAAI,GAAO,GAAW", | ||
| "debugId": "79BD01810C98754E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/run.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(Commands.commands.run, (input) =>\n Effect.gen(function* () {\n const { runNonInteractive } = yield* Effect.promise(() => import(\"../../run/run\"))\n const separator = process.argv.indexOf(\"--\", 2)\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n yield* Effect.promise(() =>\n runNonInteractive({\n server,\n message: [...input.message, ...(separator === -1 ? [] : process.argv.slice(separator + 1))],\n continue: input.continue,\n session: Option.getOrUndefined(input.session),\n fork: input.fork,\n model: Option.getOrUndefined(input.model),\n agent: Option.getOrUndefined(input.agent),\n format: input.format,\n file: [...input.file],\n title: Option.getOrUndefined(input.title),\n thinking: input.thinking,\n auto: input.auto || input.yolo || input.dangerouslySkipPermissions,\n }),\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";mhCAKA,IAAe,IAAQ,QAAQ,EAAS,SAAS,IAAK,CAAC,IACrD,EAAO,IAAI,SAAU,EAAG,CACtB,IAAQ,qBAAsB,MAAO,EAAO,QAAQ,IAAa,wCAAgB,EAC3E,EAAY,QAAQ,KAAK,QAAQ,KAAM,CAAC,EACxC,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACD,MAAO,EAAO,QAAQ,IACpB,EAAkB,CAChB,SACA,QAAS,CAAC,GAAG,EAAM,QAAS,GAAI,IAAc,GAAK,CAAC,EAAI,QAAQ,KAAK,MAAM,EAAY,CAAC,CAAE,EAC1F,SAAU,EAAM,SAChB,QAAS,EAAO,eAAe,EAAM,OAAO,EAC5C,KAAM,EAAM,KACZ,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,OAAQ,EAAM,OACd,KAAM,CAAC,GAAG,EAAM,IAAI,EACpB,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,SAAU,EAAM,SAChB,KAAM,EAAM,MAAQ,EAAM,MAAQ,EAAM,0BAC1C,CAAC,CACH,EACD,CACH", | ||
| "debugId": "CA5438F326990D2064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/mcp/oauth.ts"], | ||
| "sourcesContent": [ | ||
| "export * as MCPOAuth from \"./oauth.js\"\n\nimport { auth, type OAuthClientProvider } from \"@modelcontextprotocol/sdk/client/auth.js\"\nimport type { OAuthClientInformationMixed, OAuthTokens } from \"@modelcontextprotocol/sdk/shared/auth.js\"\nimport { Deferred, Effect } from \"effect\"\nimport { Credential } from \"@opencode-ai/schema/credential\"\nimport { ConfigMCP } from \"@opencode-ai/schema/config/mcp\"\nimport { OauthCallbackPage } from \"../oauth/page.js\"\nimport type { Integration } from \"../integration.js\"\n\n/** Persists the OAuth artifacts for one MCP server session: DCR client info, PKCE verifier, and tokens. */\nexport interface Store {\n readonly tokens: () => Promise<OAuthTokens | undefined>\n readonly saveTokens: (tokens: OAuthTokens) => Promise<void>\n readonly clientInformation: () => Promise<OAuthClientInformationMixed | undefined>\n readonly saveClientInformation: (info: OAuthClientInformationMixed) => Promise<void>\n readonly codeVerifier: () => Promise<string | undefined>\n readonly saveCodeVerifier: (verifier: string) => Promise<void>\n}\n\nexport interface Options {\n /** Loopback URL the authorization server redirects back to after the user approves. */\n readonly redirectUrl: string\n /** Space-delimited OAuth scopes to request when the server requires specific ones. */\n readonly scope?: string\n /** CSRF state embedded in the authorization request; required by the spec and enforced by some servers.\n * The caller is responsible for validating the value echoed back to the redirect. */\n readonly state?: string\n /** Statically pre-registered client credentials from config; when set, the SDK skips dynamic registration. */\n readonly client?: { readonly id: string; readonly secret?: string }\n /** Invoked by the SDK to drop credentials it has determined are invalid (e.g. a rejected refresh token). */\n readonly invalidate?: (scope: \"all\" | \"client\" | \"tokens\" | \"verifier\" | \"discovery\") => void | Promise<void>\n /** Receives the authorization URL so the caller can open a browser and capture the eventual code. */\n readonly onRedirect: (url: URL) => void | Promise<void>\n readonly store: Store\n}\n\n/**\n * Builds the MCP SDK's OAuthClientProvider. The SDK drives dynamic client registration, PKCE, and\n * token refresh through these callbacks; we only persist whatever it hands back via `store`.\n */\nexport const provider = (options: Options): OAuthClientProvider => {\n const state = options.state\n const client = options.client\n return {\n redirectUrl: options.redirectUrl,\n clientMetadata: {\n redirect_uris: [options.redirectUrl],\n client_name: \"opencode\",\n client_uri: \"https://opencode.ai\",\n grant_types: [\"authorization_code\", \"refresh_token\"],\n response_types: [\"code\"],\n token_endpoint_auth_method: client?.secret ? \"client_secret_post\" : \"none\",\n ...(options.scope ? { scope: options.scope } : {}),\n },\n // Only advertise state when the caller supplied one (the interactive flow); the connect-time\n // provider has no redirect to validate, so it omits it.\n ...(state !== undefined ? { state: () => state } : {}),\n // Static client config short-circuits dynamic registration; otherwise the SDK registers and we persist.\n clientInformation: () =>\n client ? { client_id: client.id, client_secret: client.secret } : options.store.clientInformation(),\n saveClientInformation: (info) => options.store.saveClientInformation(info),\n tokens: () => options.store.tokens(),\n saveTokens: (tokens) => options.store.saveTokens(tokens),\n redirectToAuthorization: (url) => options.onRedirect(url),\n ...(options.invalidate ? { invalidateCredentials: options.invalidate } : {}),\n saveCodeVerifier: (verifier) => options.store.saveCodeVerifier(verifier),\n // The SDK only reads the verifier back after saving one earlier in the same flow; a miss means\n // the flow was resumed without its session state, which the SDK surfaces as an auth failure.\n codeVerifier: async () => {\n const verifier = await options.store.codeVerifier()\n if (!verifier) throw new Error(\"Missing PKCE code verifier for MCP OAuth flow\")\n return verifier\n },\n }\n}\n\n/** A Store that keeps OAuth artifacts in memory for the duration of one interactive login attempt. */\nexport const memoryStore = (): Store => {\n let tokens: OAuthTokens | undefined\n let client: OAuthClientInformationMixed | undefined\n let verifier: string | undefined\n return {\n tokens: async () => tokens,\n saveTokens: async (value) => {\n tokens = value\n },\n clientInformation: async () => client,\n saveClientInformation: async (value) => {\n client = value\n },\n codeVerifier: async () => verifier,\n saveCodeVerifier: async (value) => {\n verifier = value\n },\n }\n}\n\n/** Reads the dynamically-registered client info we stash in a credential's metadata, for token refresh. */\nexport const clientFromCredential = (credential: Credential.OAuth) =>\n credential.metadata?.client as OAuthClientInformationMixed | undefined\n\n/** Folds SDK tokens (plus DCR client info and the server URL) into a storable credential. */\nexport const toCredential = (input: {\n readonly methodID: Integration.MethodID\n readonly serverUrl: string\n readonly tokens: OAuthTokens\n readonly client: OAuthClientInformationMixed | undefined\n}) =>\n Credential.OAuth.make({\n type: \"oauth\",\n methodID: input.methodID,\n access: input.tokens.access_token,\n refresh: input.tokens.refresh_token ?? \"\",\n // 0 marks an unknown/non-expiring token; toTokens then omits expires_in so the SDK won't force a refresh.\n expires: input.tokens.expires_in ? Date.now() + input.tokens.expires_in * 1000 : 0,\n metadata: {\n serverUrl: input.serverUrl,\n tokenType: input.tokens.token_type,\n ...(input.tokens.scope ? { scope: input.tokens.scope } : {}),\n ...(input.client ? { client: input.client } : {}),\n },\n })\n\n/** Reconstructs SDK tokens from a stored credential so the connect-time provider can present them. */\nexport const toTokens = (credential: Credential.OAuth): OAuthTokens => {\n const metadata = credential.metadata ?? {}\n return {\n access_token: credential.access,\n token_type: typeof metadata.tokenType === \"string\" ? metadata.tokenType : \"Bearer\",\n ...(credential.refresh ? { refresh_token: credential.refresh } : {}),\n ...(credential.expires ? { expires_in: Math.max(0, Math.floor((credential.expires - Date.now()) / 1000)) } : {}),\n ...(typeof metadata.scope === \"string\" ? { scope: metadata.scope } : {}),\n }\n}\n\n/**\n * Runs the interactive OAuth login for one remote MCP server. Stands up a loopback callback server,\n * lets the SDK drive DCR + PKCE to produce an authorization URL, and returns an attempt whose callback\n * exchanges the redirect code for a storable credential. Scoped: the callback server closes with the scope.\n */\nexport const authorize = (input: {\n readonly name: string\n readonly config: typeof ConfigMCP.Remote.Type\n readonly methodID: Integration.MethodID\n}) =>\n Effect.gen(function* () {\n const oauth = input.config.oauth || undefined\n const store = memoryStore()\n const code = yield* Deferred.make<string, Error>()\n const redirect = oauth?.redirect_uri ? new URL(oauth.redirect_uri) : undefined\n const redirectPath = redirect?.pathname ?? \"/callback\"\n const state = Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString(\"base64url\")\n\n // Lazy so runtimes without a loopback listener (workerd) never evaluate node:http.\n const { createServer } = yield* Effect.promise(() => import(\"node:http\"))\n const server = createServer((request, response) => {\n const url = new URL(request.url ?? \"/\", \"http://127.0.0.1\")\n if (url.pathname !== redirectPath) {\n response.writeHead(404).end(\"Not found\")\n return\n }\n const fail = (reason: string) => {\n Effect.runFork(Deferred.fail(code, new Error(reason)))\n response\n .writeHead(400, { \"Content-Type\": \"text/html\" })\n .end(OauthCallbackPage.error(reason, { provider: input.name }))\n }\n const error = url.searchParams.get(\"error_description\") ?? url.searchParams.get(\"error\")\n if (error) return fail(error)\n // Reject a redirect whose state does not match what we issued: this is the CSRF defense the\n // state parameter exists for, so an attacker can't inject their own authorization code.\n if (url.searchParams.get(\"state\") !== state) return fail(\"OAuth state mismatch\")\n const value = url.searchParams.get(\"code\")\n if (!value) return fail(\"Missing authorization code\")\n Effect.runFork(Deferred.succeed(code, value))\n response.writeHead(200, { \"Content-Type\": \"text/html\" }).end(OauthCallbackPage.success({ provider: input.name }))\n })\n\n // Bind the port the redirect will actually arrive on: an explicit callback_port wins, else the port\n // pinned by redirect_uri, else an ephemeral port. Binding ephemerally while redirect_uri names a fixed\n // port would send the browser somewhere nothing is listening, hanging the attempt until it expires.\n const redirectPort = Number(redirect?.port) || undefined\n const port = yield* Effect.callback<number, Error>((resume) => {\n server.once(\"error\", (error) => resume(Effect.fail(error)))\n server.listen(oauth?.callback_port ?? redirectPort ?? 0, \"127.0.0.1\", () => {\n const address = server.address()\n resume(\n address && typeof address === \"object\"\n ? Effect.succeed(address.port)\n : Effect.fail(new Error(\"Could not determine MCP OAuth callback port\")),\n )\n })\n })\n yield* Effect.addFinalizer(() => Effect.sync(() => server.close()))\n\n let authorizationUrl: URL | undefined\n const oauthProvider = provider({\n redirectUrl: oauth?.redirect_uri ?? `http://127.0.0.1:${port}${redirectPath}`,\n scope: oauth?.scope,\n state,\n client: oauth?.client_id ? { id: oauth.client_id, secret: oauth.client_secret } : undefined,\n onRedirect: (url) => {\n authorizationUrl = url\n },\n store,\n })\n\n const finalize = Effect.gen(function* () {\n const tokens = yield* Effect.promise(() => store.tokens())\n if (!tokens) return yield* Effect.fail(new Error(`MCP server \"${input.name}\" did not return OAuth tokens`))\n const client = yield* Effect.promise(() => store.clientInformation())\n return toCredential({ methodID: input.methodID, serverUrl: input.config.url, tokens, client })\n })\n\n const result = yield* Effect.tryPromise({\n try: () => auth(oauthProvider, { serverUrl: input.config.url, scope: oauth?.scope }),\n catch: (error) => (error instanceof Error ? error : new Error(String(error))),\n })\n\n // The provider may already hold valid tokens (e.g. a re-auth), in which case there is no browser step.\n if (result === \"AUTHORIZED\") {\n return {\n url: input.config.url,\n instructions: `Connected to ${input.name}.`,\n mode: \"auto\" as const,\n callback: finalize,\n }\n }\n if (!authorizationUrl)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" did not provide an authorization URL`))\n\n return {\n url: authorizationUrl.toString(),\n instructions: `Authorize ${input.name} in your browser. This window will close automatically.`,\n mode: \"auto\" as const,\n callback: Deferred.await(code).pipe(\n Effect.flatMap((value) =>\n Effect.tryPromise({\n try: () =>\n auth(oauthProvider, { serverUrl: input.config.url, authorizationCode: value, scope: oauth?.scope }),\n catch: (error) => (error instanceof Error ? error : new Error(String(error))),\n }),\n ),\n Effect.flatMap(() => finalize),\n ),\n }\n })\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "915F988BC452C12364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst k = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = { [k]: \"Endpoint\" }, h = { [k]: d }, i = {}, j = [{ [k]: \"Region\" }];\nconst _data = {\n conditions: [\n [c, [g]],\n [c, j],\n [\"aws.partition\", j, d],\n [e, [{ [k]: \"UseFIPS\" }, b]],\n [e, [{ [k]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [h, \"supportsDualStack\"] }, b]],\n [e, [{ fn: f, argv: [h, \"supportsFIPS\"] }, b]],\n [\"stringEquals\", [{ fn: f, argv: [h, \"name\"] }, \"aws-us-gov\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [g, i],\n [\"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://portal.sso.{Region}.amazonaws.com\", i],\n [\"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 13, 3,\n 1, 4, r + 12,\n 2, 5, r + 12,\n 3, 8, 6,\n 4, 7, r + 11,\n 5, r + 9, r + 10,\n 4, 11, 9,\n 6, 10, r + 8,\n 7, r + 6, r + 7,\n 5, 12, r + 5,\n 6, r + 4, r + 5,\n 3, r + 1, 14,\n 4, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SSOServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SSOServiceException.prototype);\n }\n}\n\nclass InvalidRequestException extends SSOServiceException {\n name = \"InvalidRequestException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidRequestException.prototype);\n }\n}\nclass ResourceNotFoundException extends SSOServiceException {\n name = \"ResourceNotFoundException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nclass TooManyRequestsException extends SSOServiceException {\n name = \"TooManyRequestsException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n }\n}\nclass UnauthorizedException extends SSOServiceException {\n name = \"UnauthorizedException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnauthorizedException.prototype);\n }\n}\n\nconst _ATT = \"AccessTokenType\";\nconst _GRC = \"GetRoleCredentials\";\nconst _GRCR = \"GetRoleCredentialsRequest\";\nconst _GRCRe = \"GetRoleCredentialsResponse\";\nconst _IRE = \"InvalidRequestException\";\nconst _RC = \"RoleCredentials\";\nconst _RNFE = \"ResourceNotFoundException\";\nconst _SAKT = \"SecretAccessKeyType\";\nconst _STT = \"SessionTokenType\";\nconst _TMRE = \"TooManyRequestsException\";\nconst _UE = \"UnauthorizedException\";\nconst _aI = \"accountId\";\nconst _aKI = \"accessKeyId\";\nconst _aT = \"accessToken\";\nconst _ai = \"account_id\";\nconst _c = \"client\";\nconst _e = \"error\";\nconst _ex = \"expiration\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _hH = \"httpHeader\";\nconst _hQ = \"httpQuery\";\nconst _m = \"message\";\nconst _rC = \"roleCredentials\";\nconst _rN = \"roleName\";\nconst _rn = \"role_name\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.sso\";\nconst _sAK = \"secretAccessKey\";\nconst _sT = \"sessionToken\";\nconst _xasbt = \"x-amz-sso_bearer_token\";\nconst n0 = \"com.amazonaws.sso\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SSOServiceException$ = [-3, _s, \"SSOServiceException\", 0, [], []];\n_s_registry.registerError(SSOServiceException$, SSOServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar InvalidRequestException$ = [-3, n0, _IRE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidRequestException$, InvalidRequestException);\nvar ResourceNotFoundException$ = [-3, n0, _RNFE,\n { [_e]: _c, [_hE]: 404 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException);\nvar TooManyRequestsException$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_m],\n [0]\n];\nn0_registry.registerError(TooManyRequestsException$, TooManyRequestsException);\nvar UnauthorizedException$ = [-3, n0, _UE,\n { [_e]: _c, [_hE]: 401 },\n [_m],\n [0]\n];\nn0_registry.registerError(UnauthorizedException$, UnauthorizedException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar AccessTokenType = [0, n0, _ATT, 8, 0];\nvar SecretAccessKeyType = [0, n0, _SAKT, 8, 0];\nvar SessionTokenType = [0, n0, _STT, 8, 0];\nvar GetRoleCredentialsRequest$ = [3, n0, _GRCR,\n 0,\n [_rN, _aI, _aT],\n [[0, { [_hQ]: _rn }], [0, { [_hQ]: _ai }], [() => AccessTokenType, { [_hH]: _xasbt }]], 3\n];\nvar GetRoleCredentialsResponse$ = [3, n0, _GRCRe,\n 0,\n [_rC],\n [[() => RoleCredentials$, 0]]\n];\nvar RoleCredentials$ = [3, n0, _RC,\n 0,\n [_aKI, _sAK, _sT, _ex],\n [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1]\n];\nvar GetRoleCredentials$ = [9, n0, _GRC,\n { [_h]: [\"GET\", \"/federation/credentials\", 200] }, () => GetRoleCredentialsRequest$, () => GetRoleCredentialsResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.sso\",\n errorTypeRegistries,\n version: \"2019-06-10\",\n serviceTarget: \"SWBPortalService\",\n },\n serviceId: config?.serviceId ?? \"SSO\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SSOClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSSOHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"SWBPortalService\", \"SSOClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass GetRoleCredentialsCommand extends command(_ep0, _mw0, \"GetRoleCredentials\", GetRoleCredentials$) {\n}\n\nconst commands = {\n GetRoleCredentialsCommand,\n};\nclass SSO extends SSOClient {\n}\ncreateAggregatedClient(commands, SSO);\n\nexports.GetRoleCredentials$ = GetRoleCredentials$;\nexports.GetRoleCredentialsCommand = GetRoleCredentialsCommand;\nexports.GetRoleCredentialsRequest$ = GetRoleCredentialsRequest$;\nexports.GetRoleCredentialsResponse$ = GetRoleCredentialsResponse$;\nexports.InvalidRequestException = InvalidRequestException;\nexports.InvalidRequestException$ = InvalidRequestException$;\nexports.ResourceNotFoundException = ResourceNotFoundException;\nexports.ResourceNotFoundException$ = ResourceNotFoundException$;\nexports.RoleCredentials$ = RoleCredentials$;\nexports.SSO = SSO;\nexports.SSOClient = SSOClient;\nexports.SSOServiceException = SSOServiceException;\nexports.SSOServiceException$ = SSOServiceException$;\nexports.TooManyRequestsException = TooManyRequestsException;\nexports.TooManyRequestsException$ = TooManyRequestsException$;\nexports.UnauthorizedException = UnauthorizedException;\nexports.UnauthorizedException$ = UnauthorizedException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "A55B354DA8DC048964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "50D30C7CF4CF6CF564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/models.ts"], | ||
| "sourcesContent": [ | ||
| "import { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.models,\n Effect.fn(\"cli.models\")(function* (input) {\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const response = yield* Effect.promise(() => client.model.list({ location: { directory: process.cwd() } }))\n const models = response.data\n .map((model) => `${model.providerID}/${model.id}`)\n .toSorted((a, b) => a.localeCompare(b))\n if (models.length > 0) process.stdout.write(models.join(EOL) + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";giCAGA,cAAS,WAKT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,SAAU,CAAC,EAAO,CACxC,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EAEK,GADW,MAAO,EAAO,QAAQ,IAAM,EAAO,MAAM,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,GAClF,KACrB,IAAI,CAAC,IAAU,GAAG,EAAM,cAAc,EAAM,IAAI,EAChD,SAAS,CAAC,EAAG,IAAM,EAAE,cAAc,CAAC,CAAC,EACxC,GAAI,EAAO,OAAS,EAAG,QAAQ,OAAO,MAAM,EAAO,KAAK,CAAG,EAAI,CAAG,EACnE,CACH", | ||
| "debugId": "9E66790DBD9D731A64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/worktree.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Worktree from \"./worktree.js\"\n\nimport { Schema } from \"effect\"\nimport { durable, ephemeral, inventory } from \"./event.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { AbsolutePath, optional } from \"./schema.js\"\nimport { Project } from \"./project.js\"\n\nexport const StrategyID = Schema.Trim.pipe(Schema.check(Schema.isNonEmpty()), Schema.brand(\"Worktree.StrategyID\"))\nexport type StrategyID = typeof StrategyID.Type\n\nexport const CreateInput = Schema.Struct({\n projectID: ProjectID,\n strategy: StrategyID,\n from: optional(AbsolutePath),\n branch: optional(Schema.Trim.pipe(Schema.check(Schema.isNonEmpty()))),\n directory: AbsolutePath,\n name: optional(Schema.String),\n}).annotate({ identifier: \"Worktree.CreateInput\" })\nexport interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {}\n\nexport const RemoveInput = Schema.Struct({\n projectID: ProjectID,\n directory: AbsolutePath,\n force: Schema.Boolean,\n}).annotate({ identifier: \"Worktree.RemoveInput\" })\nexport interface RemoveInput extends Schema.Schema.Type<typeof RemoveInput> {}\n\nexport const Info = Schema.Struct({\n directory: AbsolutePath,\n}).annotate({ identifier: \"Worktree.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Directory = Schema.Struct({\n directory: AbsolutePath,\n strategy: optional(Schema.String),\n}).annotate({ identifier: \"Worktree.Directory\" })\nexport interface Directory extends Schema.Schema.Type<typeof Directory> {}\n\nexport const ListInput = Schema.Struct({\n projectID: ProjectID,\n}).annotate({ identifier: \"Worktree.ListInput\" })\nexport interface ListInput extends Schema.Schema.Type<typeof ListInput> {}\n\nexport const List = Schema.Array(Directory).annotate({ identifier: \"Worktree.List\" })\nexport type List = typeof List.Type\n\nconst Updated = ephemeral({\n type: \"worktree.updated\",\n schema: { projectID: Project.ID },\n})\n\nconst Resolved = durable({\n type: \"worktree.resolved\",\n durable: { aggregate: \"projectID\", version: 1 },\n schema: {\n projectID: Project.ID,\n directory: AbsolutePath,\n previous: Project.ID,\n },\n})\n\nexport const Event = { Updated, Resolved, Definitions: inventory(Updated, Resolved) }\n\nexport function adopt(\n session: { readonly projectID: string; readonly directory: string },\n event: { readonly projectID: string; readonly directory: string; readonly previous: string },\n) {\n if (session.projectID !== event.previous && session.projectID !== Project.ID.global) return\n if (session.projectID === event.projectID) return\n const inside =\n session.directory === event.directory ||\n session.directory.startsWith(event.directory + \"/\") ||\n session.directory.startsWith(event.directory + \"\\\\\")\n if (!inside) return\n return {\n projectID: event.projectID,\n subpath:\n session.directory === event.directory\n ? undefined\n : session.directory.slice(event.directory.length + 1).replaceAll(\"\\\\\", \"/\"),\n }\n}\n" | ||
| ], | ||
| "mappings": ";scAQO,IAAM,EAAa,EAAO,KAAK,KAAK,EAAO,MAAM,EAAO,WAAW,CAAC,EAAG,EAAO,MAAM,qBAAqB,CAAC,EAGpG,EAAc,EAAO,OAAO,CACvC,UAAW,EACX,SAAU,EACV,KAAM,EAAS,CAAY,EAC3B,OAAQ,EAAS,EAAO,KAAK,KAAK,EAAO,MAAM,EAAO,WAAW,CAAC,CAAC,CAAC,EACpE,UAAW,EACX,KAAM,EAAS,EAAO,MAAM,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,EAAc,EAAO,OAAO,CACvC,UAAW,EACX,UAAW,EACX,MAAO,EAAO,OAChB,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,EAAO,EAAO,OAAO,CAChC,UAAW,CACb,CAAC,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAG9B,EAAY,EAAO,OAAO,CACrC,UAAW,EACX,SAAU,EAAS,EAAO,MAAM,CAClC,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAY,EAAO,OAAO,CACrC,UAAW,CACb,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAO,EAAO,MAAM,CAAS,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAG9E,EAAU,EAAU,CACxB,KAAM,mBACN,OAAQ,CAAE,UAAW,EAAQ,EAAG,CAClC,CAAC,EAEK,EAAW,EAAQ,CACvB,KAAM,oBACN,QAAS,CAAE,UAAW,YAAa,QAAS,CAAE,EAC9C,OAAQ,CACN,UAAW,EAAQ,GACnB,UAAW,EACX,SAAU,EAAQ,EACpB,CACF,CAAC,EAEY,EAAQ,CAAE,UAAS,WAAU,YAAa,EAAU,EAAS,CAAQ,CAAE,EAE7E,SAAS,CAAK,CACnB,EACA,EACA,CACA,GAAI,EAAQ,YAAc,EAAM,UAAY,EAAQ,YAAc,EAAQ,GAAG,OAAQ,OACrF,GAAI,EAAQ,YAAc,EAAM,UAAW,OAK3C,GAAI,EAHF,EAAQ,YAAc,EAAM,WAC5B,EAAQ,UAAU,WAAW,EAAM,UAAY,GAAG,GAClD,EAAQ,UAAU,WAAW,EAAM,UAAY,IAAI,GACxC,OACb,MAAO,CACL,UAAW,EAAM,UACjB,QACE,EAAQ,YAAc,EAAM,UACxB,OACA,EAAQ,UAAU,MAAM,EAAM,UAAU,OAAS,CAAC,EAAE,WAAW,KAAM,GAAG,CAChF", | ||
| "debugId": "D710AF5196CAAD4564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+cerebras@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/cerebras/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/cerebras-provider.ts\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/cerebras-provider.ts\nvar cerebrasErrorSchema = z.object({\n message: z.string(),\n type: z.string(),\n param: z.string(),\n code: z.string()\n});\nvar cerebrasErrorStructure = {\n errorSchema: cerebrasErrorSchema,\n errorToMessage: (data) => data.message\n};\nfunction createCerebras(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.cerebras.ai/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"CEREBRAS_API_KEY\",\n description: \"Cerebras API key\"\n })}`,\n ...options.headers\n },\n `ai-sdk/cerebras/${VERSION}`\n );\n const createLanguageModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `cerebras.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: cerebrasErrorStructure,\n supportsStructuredOutputs: true\n });\n };\n const provider = (modelId) => createLanguageModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar cerebras = createCerebras();\nexport {\n VERSION,\n cerebras,\n createCerebras\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";4XAaA,IAAI,EAAiB,SAGjB,EAAsB,EAAE,OAAO,CACjC,QAAS,EAAE,OAAO,EAClB,KAAM,EAAE,OAAO,EACf,MAAO,EAAE,OAAO,EAChB,KAAM,EAAE,OAAO,CACjB,CAAC,EACG,EAAyB,CAC3B,YAAa,EACb,eAAgB,CAAC,IAAS,EAAK,OACjC,EACA,SAAS,CAAc,CAAC,EAAU,CAAC,EAAG,CACpC,IAAI,EACJ,IAAM,EAAU,GACb,EAAK,EAAQ,UAAY,KAAO,EAAK,4BACxC,EACM,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,mBACzB,YAAa,kBACf,CAAC,OACE,EAAQ,OACb,EACA,mBAAmB,GACrB,EACM,EAAsB,CAAC,IACpB,IAAI,EAAkC,EAAS,CACpD,SAAU,gBACV,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,MACf,eAAgB,EAChB,0BAA2B,EAC7B,CAAC,EAEG,EAAW,CAAC,IAAY,EAAoB,CAAO,EAWzD,OAVA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,KAAO,EAChB,EAAS,eAAiB,CAAC,IAAY,CACrC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,gBAAiB,CAAC,GAErE,EAAS,mBAAqB,EAAS,eACvC,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAE1D,EAET,IAAI,EAAW,EAAe", | ||
| "debugId": "9882A3811118D55464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-chat.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAICompatibleChat } from \"../protocols/openai-compatible-chat.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\nimport type { OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst route = OpenAICompatibleChat.route.with({\n id: \"google-vertex-chat\",\n provider: id,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined) throw new Error(\"Google Vertex Chat does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenAIProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Chat does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";ykBAOO,IAAM,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAAqB,MAAM,KAAK,CAC5C,GAAI,qBACJ,SAAU,CACZ,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OAAW,MAAU,MAAM,8CAA8C,EACnH,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,iDAAiD,EAAmB,eAAe,CAAO,eAAe,qBAC7G,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAC7F,WACF,GAQK,IAAM,EAAmF,CAAC,EAAS,IAAa,CACrH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,8CAA8C,EACjG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "D3B630A330C97C3C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/ui/timeline.tsx", "src/commands/handlers/console/login.ts"], | ||
| "sourcesContent": [ | ||
| "import { createComponent as _$createComponent } from \"@opentui/solid\";\nimport { effect as _$effect } from \"@opentui/solid\";\nimport { createTextNode as _$createTextNode } from \"@opentui/solid\";\nimport { insertNode as _$insertNode } from \"@opentui/solid\";\nimport { insert as _$insert } from \"@opentui/solid\";\nimport { setProp as _$setProp } from \"@opentui/solid\";\nimport { createElement as _$createElement } from \"@opentui/solid\";\n/** @jsxImportSource @opentui/solid */\nimport { createCliRenderer, RGBA } from \"@opentui/core\";\nimport { createScrollbackWriter, render, useKeyboard } from \"@opentui/solid\";\nimport { registerOpencodeSpinner } from \"@opencode-ai/tui/component/register-spinner\";\nimport { Show, createSignal } from \"solid-js\";\nregisterOpencodeSpinner();\nconst SPINNER_FRAMES = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\nconst IDLE_TIMEOUT = 1_000;\nconst COLORS = {\n accent: RGBA.fromIndex(6),\n error: RGBA.fromIndex(1),\n foreground: RGBA.defaultForeground(),\n muted: RGBA.fromIndex(8),\n success: RGBA.fromIndex(2)\n};\nconst ROWS = {\n intro: {\n marker: \"┌\",\n color: COLORS.muted,\n connector: true\n },\n item: {\n marker: \"●\",\n color: COLORS.accent,\n connector: true\n },\n success: {\n marker: \"◇\",\n color: COLORS.success,\n connector: true\n },\n failure: {\n marker: \"■\",\n color: COLORS.error,\n connector: false\n },\n outro: {\n marker: \"└\",\n color: COLORS.muted,\n connector: false\n }\n};\nfunction row(kind, value) {\n const style = ROWS[kind];\n return createScrollbackWriter(() => (() => {\n var _el$ = _$createElement(\"box\"),\n _el$2 = _$createElement(\"box\"),\n _el$3 = _$createElement(\"text\"),\n _el$4 = _$createElement(\"text\");\n _$insertNode(_el$, _el$2);\n _$setProp(_el$, \"width\", \"100%\");\n _$setProp(_el$, \"minHeight\", 1);\n _$setProp(_el$, \"flexDirection\", \"column\");\n _$insertNode(_el$2, _el$3);\n _$insertNode(_el$2, _el$4);\n _$setProp(_el$2, \"width\", \"100%\");\n _$setProp(_el$2, \"minHeight\", 1);\n _$setProp(_el$2, \"flexDirection\", \"row\");\n _$setProp(_el$2, \"gap\", 1);\n _$setProp(_el$3, \"flexShrink\", 0);\n _$insert(_el$3, () => style.marker);\n _$setProp(_el$4, \"wrapMode\", \"word\");\n _$insert(_el$4, value);\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return style.connector;\n },\n get children() {\n var _el$5 = _$createElement(\"text\");\n _$insertNode(_el$5, _$createTextNode(`│`));\n _$effect(_$p => _$setProp(_el$5, \"fg\", COLORS.muted, _$p));\n return _el$5;\n }\n }), null);\n _$effect(_p$ => {\n var _v$ = style.color,\n _v$2 = COLORS.foreground;\n _v$ !== _p$.e && (_p$.e = _$setProp(_el$3, \"fg\", _v$, _p$.e));\n _v$2 !== _p$.t && (_p$.t = _$setProp(_el$4, \"fg\", _v$2, _p$.t));\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$;\n })(), {\n startOnNewLine: true,\n trailingNewline: !style.connector\n });\n}\nfunction TimelineFooter(props) {\n useKeyboard(event => {\n if (event.name !== \"escape\" && !(event.ctrl && event.name === \"c\")) return;\n event.preventDefault();\n props.cancel();\n });\n return (() => {\n var _el$7 = _$createElement(\"box\");\n _$setProp(_el$7, \"width\", \"100%\");\n _$setProp(_el$7, \"height\", 1);\n _$setProp(_el$7, \"flexDirection\", \"row\");\n _$setProp(_el$7, \"gap\", 1);\n _$insert(_el$7, _$createComponent(Show, {\n get when() {\n return props.pending();\n },\n children: text => [(() => {\n var _el$8 = _$createElement(\"spinner\");\n _$setProp(_el$8, \"frames\", SPINNER_FRAMES);\n _$setProp(_el$8, \"interval\", 80);\n _$effect(_$p => _$setProp(_el$8, \"color\", COLORS.accent, _$p));\n return _el$8;\n })(), (() => {\n var _el$9 = _$createElement(\"text\");\n _$setProp(_el$9, \"wrapMode\", \"none\");\n _$setProp(_el$9, \"truncate\", true);\n _$insert(_el$9, text);\n _$effect(_$p => _$setProp(_el$9, \"fg\", COLORS.foreground, _$p));\n return _el$9;\n })()]\n }));\n return _el$7;\n })();\n}\nfunction bounded(task) {\n return new Promise(resolve => {\n const timer = setTimeout(resolve, IDLE_TIMEOUT);\n timer.unref();\n const finish = () => {\n clearTimeout(timer);\n resolve();\n };\n void task.then(finish, finish);\n });\n}\nasync function shutdown(renderer) {\n await bounded(renderer.idle());\n try {\n renderer.externalOutputMode = \"passthrough\";\n } finally {\n try {\n renderer.screenMode = \"main-screen\";\n } finally {\n if (!renderer.isDestroyed) renderer.destroy();\n }\n }\n}\nexport async function createTimelineHost() {\n const stdout = process.stdout;\n const controller = new AbortController();\n const signals = [\"SIGINT\", \"SIGHUP\", \"SIGQUIT\"];\n const cancel = () => {\n if (!controller.signal.aborted) controller.abort();\n };\n signals.forEach(signal => process.on(signal, cancel));\n if (!stdout.isTTY || !process.stdin.isTTY) {\n let closed = false;\n let writing = false;\n let active;\n let closeTask;\n const write = async (kind, text) => {\n if (closed) throw new Error(\"timeline closed\");\n if (writing) throw new Error(\"timeline write already in progress\");\n writing = true;\n try {\n const style = kind === \"pending\" ? undefined : ROWS[kind];\n const marker = kind === \"pending\" ? \".\" : ROWS[kind].marker;\n const connector = style?.connector ? \"│\\n\" : \"\";\n active = new Promise((resolve, reject) => {\n stdout.write(`${marker} ${text}\\n${connector}`, error => error ? reject(error) : resolve());\n });\n await active;\n } finally {\n writing = false;\n active = undefined;\n }\n };\n const close = () => {\n if (closeTask) return closeTask;\n closed = true;\n closeTask = (async () => {\n await active?.catch(() => {});\n signals.forEach(signal => process.off(signal, cancel));\n })();\n return closeTask;\n };\n return {\n signal: controller.signal,\n intro: text => write(\"intro\", text),\n item: text => write(\"item\", text),\n pending: text => write(\"pending\", text),\n success: text => write(\"success\", text),\n failure: text => write(\"failure\", text),\n outro: text => write(\"outro\", text),\n close\n };\n }\n let renderer;\n try {\n // Start on a fresh row so delayed SSH cursor reports cannot make\n // split-footer overwrite the shell command.\n process.stdout.write(\"\\n\");\n renderer = await createCliRenderer({\n stdin: process.stdin,\n useMouse: false,\n autoFocus: false,\n openConsoleOnError: false,\n exitOnCtrlC: false,\n exitSignals: [],\n screenMode: \"split-footer\",\n footerHeight: 1,\n externalOutputMode: \"capture-stdout\",\n consoleMode: \"disabled\",\n clearOnShutdown: false\n });\n const activeRenderer = renderer;\n const [pending, setPending] = createSignal();\n const renderTask = render(() => _$createComponent(TimelineFooter, {\n pending: pending,\n cancel: cancel\n }), activeRenderer);\n void renderTask.catch(cancel);\n await bounded(activeRenderer.idle());\n let closed = false;\n let writing = false;\n let active;\n let closeTask;\n const write = (kind, text) => {\n if (closed) return Promise.reject(new Error(\"timeline closed\"));\n if (writing) return Promise.reject(new Error(\"timeline write already in progress\"));\n writing = true;\n active = (async () => {\n if (kind === \"pending\") {\n setPending(text);\n activeRenderer.requestRender();\n } else {\n if (kind === \"success\" || kind === \"failure\" || kind === \"outro\") setPending(undefined);\n activeRenderer.writeToScrollback(row(kind, text));\n activeRenderer.requestRender();\n }\n await bounded(activeRenderer.idle());\n })().finally(() => {\n writing = false;\n active = undefined;\n });\n return active;\n };\n const close = () => {\n if (closeTask) return closeTask;\n closed = true;\n closeTask = (async () => {\n await active?.catch(() => {});\n try {\n await shutdown(activeRenderer);\n await bounded(renderTask);\n } finally {\n signals.forEach(signal => process.off(signal, cancel));\n }\n })();\n return closeTask;\n };\n return {\n signal: controller.signal,\n intro: text => write(\"intro\", text),\n item: text => write(\"item\", text),\n pending: text => write(\"pending\", text),\n success: text => write(\"success\", text),\n failure: text => write(\"failure\", text),\n outro: text => write(\"outro\", text),\n close\n };\n } catch (error) {\n try {\n if (renderer) await shutdown(renderer);\n } finally {\n signals.forEach(signal => process.off(signal, cancel));\n }\n throw error;\n }\n}", | ||
| "import { Cause, Effect, Exit, Option } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode, type OpenCodeClient } from \"@opencode-ai/client/promise\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { createTimelineHost, type TimelineHost } from \"../../../ui/timeline\"\nimport { errorMessage } from \"../../../util/error\"\n\nconst integrationID = \"opencode\"\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.console.commands.login,\n Effect.fn(\"cli.console.login\")(function* (input) {\n const timeline = yield* Effect.acquireRelease(\n Effect.promise(() => createTimelineHost()),\n (value) => request(() => value.close()).pipe(Effect.ignore),\n )\n const exit = yield* login(timeline, Option.getOrUndefined(input.url)).pipe(\n Effect.raceFirst(AppProcess.waitForAbort(timeline.signal)),\n Effect.exit,\n )\n if (Exit.isSuccess(exit)) return\n\n const cancelled = timeline.signal.aborted\n yield* request(() =>\n timeline.failure(cancelled ? \"Authorization cancelled\" : errorMessage(Cause.squash(exit.cause))),\n ).pipe(Effect.ignore)\n process.exitCode = cancelled ? 130 : 1\n }),\n)\n\nconst login = Effect.fn(\"cli.console.login.run\")(function* (timeline: TimelineHost, server?: string) {\n yield* request(() => timeline.intro(\"Log in\"))\n yield* request(() => timeline.pending(\"Connecting to OpenCode...\"))\n\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const found = yield* request((signal) => client.integration.get({ integrationID, location }, { signal }))\n const integration = yield* required(found.data, \"OpenCode Console integration is unavailable\")\n const method = yield* required(\n integration.methods.find((candidate) => candidate.type === \"oauth\"),\n \"OpenCode Console login is unavailable\",\n )\n\n yield* request(() => timeline.pending(\"Starting authorization...\"))\n const started = yield* request((signal) =>\n client.integration.oauth.connect(\n {\n integrationID,\n methodID: method.id,\n ...(server ? { answer: { server } } : {}),\n location,\n },\n { signal },\n ),\n )\n const attempt = started.data\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.oauth.cancel(\n { integrationID, attemptID: attempt.attemptID, location },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n if (attempt.mode !== \"auto\") yield* Effect.fail(new Error(\"OpenCode Console requires a device login\"))\n\n yield* request(() => timeline.item(`Go to: ${attempt.url}`))\n yield* request(() => timeline.item(attempt.instructions))\n yield* request(async () => {\n const { default: open } = await import(\"open\")\n await open(attempt.url)\n }).pipe(Effect.ignore)\n yield* request(() => timeline.pending(\"Waiting for authorization...\"))\n\n const status = yield* waitForConsoleLogin(client, integrationID, attempt.attemptID)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n if (status.status === \"expired\") yield* Effect.fail(new Error(\"Device code expired\"))\n\n yield* request(() => timeline.success(\"Connected to OpenCode Console\"))\n yield* request(() => timeline.outro(\"Done\"))\n})\n\nconst waitForConsoleLogin = Effect.fn(\"cli.console.login.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.oauth.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n yield* Effect.sleep(500)\n }\n})\n\nfunction request<A>(task: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({\n try: task,\n catch: (cause) => cause,\n })\n}\n\nfunction required<A>(value: A | null | undefined, message: string) {\n return value === null || value === undefined ? Effect.fail(new Error(message)) : Effect.succeed(value)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "18C05E0115E7483F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/tool.ts"], | ||
| "sourcesContent": [ | ||
| "// Per-tool display rules shared across `opencode run` output paths.\n//\n// Each known tool (shell, edit, write, subagent, etc.) has a ToolRule that controls\n// four display hooks:\n//\n// view → visibility policy for progress/final scrollback entries and\n// whether completed finals can render as structured snapshots\n// run → inline summary for the non-interactive `run` command output\n// scroll → text formatting for start/progress/final scrollback entries\n// snap → structured snapshot (code block, diff, task card) for rich\n// scrollback entries\n//\n// Tools not in TOOL_RULES get fallback formatting.\nimport os from \"os\"\nimport path from \"path\"\nimport stripAnsi from \"strip-ansi\"\nimport type { SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { LANGUAGE_EXTENSIONS } from \"../util/filetype\"\nimport { Locale } from \"../util/locale\"\nimport {\n canonicalToolName,\n finiteNumber,\n primitiveInputSummary,\n toolDisplayContent,\n toolDisplayMetadata,\n webSearchProviderLabel,\n} from \"../util/tool-display\"\nimport { formatPath } from \"../util/path-format\"\nimport { isRecord } from \"../util/record\"\nimport type { RunEntryBody, StreamCommit, ToolSnapshot } from \"./types\"\n\nexport { canonicalToolName } from \"../util/tool-display\"\n\ntype ToolView = {\n output: boolean\n final: boolean\n snap?: \"code\" | \"diff\" | \"structured\"\n}\n\ntype ToolPhase = \"start\" | \"progress\" | \"final\"\n\ntype ToolDict = Record<string, unknown>\n\ntype PatchFile = {\n status?: string\n file?: string\n from?: string\n patch?: string\n deletions?: number\n}\n\ntype ToolInput = ToolDict & {\n id?: string\n path?: string\n pattern?: string\n url?: string\n query?: string\n agent?: string\n description?: string\n name?: string\n operation?: string\n line?: number\n character?: number\n content?: string\n command?: string\n workdir?: string\n questions?: Array<{ question?: string }>\n diff?: string\n}\n\ntype ToolMetadata = ToolDict & {\n name?: string\n count?: number\n matches?: number\n diff?: string\n provider?: unknown\n files?: PatchFile[]\n answers?: string[][]\n exit?: number\n}\n\ntype ToolFrame = {\n directory?: string\n raw: string\n name: string\n input: ToolDict\n meta: ToolDict\n state: ToolDict\n status: string\n error: string\n output: string\n time: {\n start?: number\n end?: number\n }\n}\n\ntype ToolInline = {\n icon: string\n title: string\n description?: string\n mode?: \"inline\" | \"block\"\n body?: string\n}\n\ntype ToolProps = {\n input: ToolInput\n metadata: ToolMetadata\n frame: ToolFrame\n}\n\ntype ToolName =\n | \"invalid\"\n | \"shell\"\n | \"write\"\n | \"edit\"\n | \"patch\"\n | \"batch\"\n | \"subagent\"\n | \"question\"\n | \"read\"\n | \"glob\"\n | \"grep\"\n | \"list\"\n | \"lsp\"\n | \"webfetch\"\n | \"websearch\"\n | \"skill\"\n\ntype ToolRule = {\n view: ToolView\n run: (props: ToolProps) => ToolInline\n scroll?: Partial<Record<ToolPhase, (props: ToolProps) => string>>\n snap?: (props: ToolProps) => ToolSnapshot | undefined\n}\n\ntype ToolRegistry = Record<ToolName, ToolRule>\n\ntype AnyToolRule = ToolRule\n\nfunction dict(v: unknown): ToolDict {\n return isRecord(v) ? { ...v } : {}\n}\n\nfunction props(frame: ToolFrame): ToolProps {\n return {\n input: frame.input,\n metadata: frame.meta,\n frame,\n }\n}\n\nfunction text(v: unknown): string {\n return typeof v === \"string\" ? v : \"\"\n}\n\nexport function toolOutputText(name: string, content: ReadonlyArray<{ type: string; text?: string }> | undefined) {\n if (!content) return \"\"\n // V2 shell content appends model-only status after the user-visible command output.\n if (canonicalToolName(name) === \"shell\") return content.find((item) => item.type === \"text\")?.text ?? \"\"\n const joined = content.flatMap((item) => (item.type === \"text\" && item.text ? [item.text] : [])).join(\"\\n\")\n if (canonicalToolName(name) === \"read\") return readDisplayText(joined) ?? joined\n return joined\n}\n\n/** Read's model content is a JSON page envelope; unwrap the human-facing text. */\nexport function readDisplayText(text: string): string | undefined {\n if (!text.startsWith(\"{\")) return undefined\n const parsed = (() => {\n try {\n return JSON.parse(text) as unknown\n } catch {\n return undefined\n }\n })()\n const envelope = dict(parsed)\n if (typeof envelope.content === \"string\" && (envelope.type === \"text-page\" || envelope.encoding === \"utf8\"))\n return envelope.content\n if (!Array.isArray(envelope.entries)) return undefined\n return envelope.entries\n .flatMap((entry): string[] => {\n if (typeof entry === \"string\") return [entry]\n const path = dict(entry).path\n return typeof path === \"string\" ? [path] : []\n })\n .join(\"\\n\")\n}\n\nfunction normalizeInput(name: string, value: unknown) {\n const input = dict(value)\n const path = typeof input.path === \"string\" ? input.path : text(input.filePath)\n const agent = typeof input.agent === \"string\" ? input.agent : text(input.subagent_type)\n return {\n ...input,\n ...([\"read\", \"write\", \"edit\", \"lsp\"].includes(name) && path ? { path } : {}),\n ...(name === \"subagent\" && agent ? { agent } : {}),\n }\n}\n\nfunction normalizeFile(value: unknown): PatchFile | undefined {\n const file = dict(value)\n const name = text(file.file) || text(file.relativePath) || text(file.filePath)\n if (!name) return\n const legacy = text(file.type)\n const status =\n text(file.status) ||\n (legacy === \"add\"\n ? \"added\"\n : legacy === \"delete\"\n ? \"deleted\"\n : legacy === \"update\"\n ? \"modified\"\n : legacy === \"move\"\n ? \"moved\"\n : legacy)\n const patch = typeof file.patch === \"string\" ? file.patch : undefined\n const deletions = finiteNumber(file.deletions)\n return {\n ...file,\n file: name,\n ...(status === \"moved\" && text(file.filePath) ? { from: text(file.filePath) } : {}),\n ...(status ? { status } : {}),\n ...(patch === undefined ? {} : { patch }),\n ...(deletions === undefined ? {} : { deletions }),\n }\n}\n\nfunction normalizeMetadata(name: string, value: unknown) {\n const metadata = dict(value)\n const files = list(metadata.files).flatMap((item) => {\n const file = normalizeFile(item)\n return file ? [file] : []\n })\n const sessionID = text(metadata.sessionID) || text(metadata.sessionId)\n return {\n ...metadata,\n ...([\"edit\", \"patch\"].includes(name) && Array.isArray(metadata.files) ? { files } : {}),\n ...(name === \"subagent\" && sessionID ? { sessionID } : {}),\n }\n}\n\nexport function normalizeTool(tool: SessionMessageAssistantTool): SessionMessageAssistantTool {\n const name = canonicalToolName(tool.name)\n if (tool.state.status === \"streaming\") return { ...tool, name }\n return {\n ...tool,\n name,\n state: {\n ...tool.state,\n input: normalizeInput(name, tool.state.input),\n metadata: normalizeMetadata(name, toolDisplayMetadata(tool.state)),\n },\n } as SessionMessageAssistantTool\n}\n\nfunction list<T>(v: unknown): T[] {\n if (!Array.isArray(v)) {\n return []\n }\n\n return v\n}\n\nfunction span(frame: ToolFrame): string {\n const start = frame.time.start\n const end = frame.time.end\n if (start === undefined || end === undefined || end <= start) {\n return \"\"\n }\n\n return Locale.duration(end - start)\n}\n\nfunction fail(ctx: ToolFrame): string {\n const error = toolError(ctx)\n if (error) {\n return `✖ ${ctx.name} failed: ${error}`\n }\n\n return `✖ ${ctx.name} failed`\n}\n\nfunction toolError(ctx: ToolFrame): string {\n if (ctx.error) {\n return ctx.error\n }\n\n const state = text(ctx.state.error).trim()\n if (state) {\n return state\n }\n\n return ctx.raw.trim()\n}\n\nfunction fallbackStart(ctx: ToolFrame): string {\n const extra = primitiveInputSummary(ctx.input)\n if (!extra) {\n return `⚙ ${ctx.name}`\n }\n\n return `⚙ ${ctx.name} ${extra}`\n}\n\nfunction fallbackFinal(ctx: ToolFrame): string {\n if (ctx.status === \"error\") {\n return fail(ctx)\n }\n\n if (ctx.status && ctx.status !== \"completed\") {\n return ctx.raw.trim()\n }\n\n const time = span(ctx)\n if (!time) {\n return `${ctx.name} completed`\n }\n\n return `${ctx.name} completed · ${time}`\n}\n\nexport function toolPath(input?: string, opts: { home?: boolean; directory?: string } = {}): string {\n return formatPath(input, {\n base: opts.directory ?? process.cwd(),\n home: opts.home ? os.homedir() : undefined,\n forwardSlashes: true,\n })\n}\n\nfunction displayPath(p: ToolProps, input?: string, opts: { home?: boolean } = {}) {\n return toolPath(input, { ...opts, directory: p.frame.directory })\n}\n\nfunction fallbackInline(ctx: ToolFrame): ToolInline {\n const title = Object.keys(ctx.input).length > 0 ? JSON.stringify(ctx.input) : \"Unknown\"\n\n return {\n icon: \"⚙\",\n title: `${ctx.name} ${title}`,\n }\n}\n\nfunction count(n: number, label: string): string {\n return `${n} ${label}${n === 1 ? \"\" : \"es\"}`\n}\n\nfunction runGlob(p: ToolProps): ToolInline {\n const root = p.input.path ?? \"\"\n const title = `Glob \"${p.input.pattern ?? \"\"}\"`\n const suffix = root ? `in ${displayPath(p, root)}` : \"\"\n const matches = p.metadata.count\n const description = matches === undefined ? suffix : `${suffix}${suffix ? \" · \" : \"\"}${count(matches, \"match\")}`\n return {\n icon: \"✱\",\n title,\n ...(description && { description }),\n }\n}\n\nfunction runGrep(p: ToolProps): ToolInline {\n const root = p.input.path ?? \"\"\n const title = `Grep \"${p.input.pattern ?? \"\"}\"`\n const suffix = root ? `in ${displayPath(p, root)}` : \"\"\n const matches = p.metadata.matches\n const description = matches === undefined ? suffix : `${suffix}${suffix ? \" · \" : \"\"}${count(matches, \"match\")}`\n return {\n icon: \"✱\",\n title,\n ...(description && { description }),\n }\n}\n\nfunction runList(p: ToolProps): ToolInline {\n const dir = text(dict(p.input).path)\n return {\n icon: \"→\",\n title: dir ? `List ${displayPath(p, dir)}` : \"List\",\n }\n}\n\nfunction runRead(p: ToolProps): ToolInline {\n const file = displayPath(p, p.input.path)\n const description = primitiveInputSummary(p.frame.input, [\"path\"]) || undefined\n return {\n icon: \"→\",\n title: `Read ${file}`,\n ...(description && { description }),\n }\n}\n\nfunction runWrite(p: ToolProps): ToolInline {\n return {\n icon: \"←\",\n title: `Write ${displayPath(p, p.input.path)}`,\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction runWebfetch(p: ToolProps): ToolInline {\n const url = p.input.url ?? \"\"\n return {\n icon: \"%\",\n title: url ? `WebFetch ${url}` : \"WebFetch\",\n }\n}\n\nfunction runEdit(p: ToolProps): ToolInline {\n const file = list<PatchFile>(p.metadata.files)[0]\n return {\n icon: \"←\",\n title: `Edit ${displayPath(p, p.input.path)}`,\n mode: \"block\",\n body: file?.patch ?? p.metadata.diff,\n }\n}\n\nfunction runWebSearch(p: ToolProps): ToolInline {\n const title = webSearchProviderLabel(p.metadata.provider)\n return {\n icon: \"◈\",\n title: p.input.query ? `${title} \"${p.input.query}\"` : title,\n }\n}\n\nfunction runTask(p: ToolProps): ToolInline {\n const kind = Locale.titlecase(p.input.agent || \"unknown\")\n const desc = p.input.description\n const icon = p.frame.status === \"error\" ? \"✗\" : p.frame.status === \"running\" ? \"•\" : \"✓\"\n return {\n icon,\n title: desc || `${kind} Subagent`,\n description: desc ? `${kind} Agent` : undefined,\n }\n}\n\nfunction runSkill(p: ToolProps): ToolInline {\n const name = p.metadata.name ?? p.input.id ?? \"\"\n return {\n icon: \"→\",\n title: `Skill \"${name}\"`,\n }\n}\n\nfunction runPatch(p: ToolProps): ToolInline {\n const files = p.metadata.files?.length ?? 0\n if (files === 0) {\n return {\n icon: \"%\",\n title: \"Patch\",\n }\n }\n\n return {\n icon: \"%\",\n title: `Patch ${files} file${files === 1 ? \"\" : \"s\"}`,\n }\n}\n\nfunction runQuestion(p: ToolProps): ToolInline {\n const total = list(p.frame.input.questions).length\n return {\n icon: \"→\",\n title: `Asked ${total} question${total === 1 ? \"\" : \"s\"}`,\n }\n}\n\nfunction runInvalid(p: ToolProps): ToolInline {\n return {\n icon: \"✗\",\n title: \"Invalid Tool\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction runBatch(p: ToolProps): ToolInline {\n const calls = list(dict(p.input).tool_calls).length\n return {\n icon: \"#\",\n title: calls > 0 ? `Batch ${calls} tool${calls === 1 ? \"\" : \"s\"}` : \"Batch\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction lspTitle(\n input: {\n operation?: string\n path?: string\n line?: number\n character?: number\n },\n opts: { home?: boolean; directory?: string } = {},\n): string {\n const op = input.operation || \"request\"\n const file = input.path ? toolPath(input.path, opts) : \"\"\n const line = typeof input.line === \"number\" ? input.line : undefined\n const char = typeof input.character === \"number\" ? input.character : undefined\n const pos = line !== undefined && char !== undefined ? `:${line}:${char}` : \"\"\n if (!file) {\n return `LSP ${op}`\n }\n\n return `LSP ${op} ${file}${pos}`\n}\n\nfunction runLsp(p: ToolProps): ToolInline {\n return {\n icon: \"→\",\n title: lspTitle(p.input, { directory: p.frame.directory }),\n }\n}\n\nfunction patchTitle(file: PatchFile, directory?: string): string {\n if (file.status === \"added\") {\n return `# Created ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"deleted\") {\n return `# Deleted ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"moved\") {\n return `# Moved ${toolPath(file.from, { directory })} -> ${toolPath(file.file, { directory })}`\n }\n\n return `# Patched ${toolPath(file.file, { directory })}`\n}\n\nfunction snapWrite(p: ToolProps): ToolSnapshot | undefined {\n const file = p.input.path || \"\"\n const content = p.input.content || \"\"\n if (!file && !content) {\n return undefined\n }\n\n return {\n kind: \"code\",\n title: `# Wrote ${displayPath(p, file)}`,\n content,\n file,\n }\n}\n\nfunction snapEdit(p: ToolProps): ToolSnapshot | undefined {\n const item = list<PatchFile>(p.metadata.files)[0]\n const file = item?.file || p.input.path || \"\"\n const diff = item?.patch || p.metadata.diff || \"\"\n if (!file || !diff.trim()) {\n return undefined\n }\n\n return {\n kind: \"diff\",\n items: [\n {\n title: `# Edited ${displayPath(p, file)}`,\n diff,\n file,\n },\n ],\n }\n}\n\nfunction snapPatch(p: ToolProps): ToolSnapshot | undefined {\n const files = list<PatchFile>(p.frame.meta.files)\n if (files.length === 0) {\n return undefined\n }\n\n const items = files.flatMap((file) => {\n if (!file || typeof file !== \"object\") {\n return []\n }\n\n const diff = typeof file.patch === \"string\" ? file.patch : \"\"\n if (!diff.trim()) {\n return []\n }\n\n const name = file.file\n return [\n {\n title: patchTitle(file, p.frame.directory),\n diff,\n file: name,\n deletions: typeof file.deletions === \"number\" ? file.deletions : 0,\n },\n ]\n })\n\n if (items.length !== files.length) {\n return undefined\n }\n\n return {\n kind: \"diff\",\n items,\n }\n}\n\nfunction snapTask(p: ToolProps): ToolSnapshot {\n const kind = Locale.titlecase(p.input.agent || \"general\")\n const desc = p.input.description\n const rows = [desc].filter((item): item is string => Boolean(item))\n\n return {\n kind: \"task\",\n title: `# ${kind} Subagent`,\n rows,\n tail: \"\",\n }\n}\n\nfunction snapQuestion(p: ToolProps): ToolSnapshot {\n const answers = list<unknown[]>(p.frame.meta.answers)\n const items = list<{ question?: string }>(p.frame.input.questions).map((item, i) => {\n const answer = list<string>(answers[i]).filter((entry) => typeof entry === \"string\")\n return {\n question: item.question || `Question ${i + 1}`,\n answer: answer.length > 0 ? answer.join(\", \") : \"(no answer)\",\n }\n })\n\n return {\n kind: \"question\",\n items,\n tail: \"\",\n }\n}\n\nfunction scrollBashStart(p: ToolProps): string {\n const cmd = p.input.command ?? \"\"\n const wd = p.input.workdir ?? \"\"\n const formatted = wd && wd !== \".\" ? displayPath(p, wd, { home: true }) : \"\"\n const dir = formatted === \".\" ? \"\" : formatted\n if (cmd && !dir) {\n return `$ ${cmd}`\n }\n\n if (!cmd) {\n return dir ? `${dir}$` : \"\"\n }\n\n return `${dir}$ ${cmd}`\n}\n\nfunction scrollBashProgress(p: ToolProps): string {\n const out = stripAnsi(p.frame.raw)\n const cmd = (p.input.command ?? \"\").trim()\n const fmt = (text: string) => {\n const body = text.replace(/^\\n+/, \"\").replace(/\\n+$/, \"\")\n return body ? `\\n${body}` : \"\"\n }\n\n if (!cmd) {\n return out.replace(/\\n+$/, \"\")\n }\n\n const wdRaw = (p.input.workdir ?? \"\").trim()\n const wd = wdRaw ? displayPath(p, wdRaw, { home: true }) : \"\"\n const lines = out.split(\"\\n\")\n const first = (lines[0] || \"\").trim()\n const second = (lines[1] || \"\").trim()\n\n if (wd && (first === wd || first === wdRaw) && second === cmd) {\n return fmt(lines.slice(2).join(\"\\n\"))\n }\n\n if (first === cmd || first === `$ ${cmd}`) {\n return fmt(lines.slice(1).join(\"\\n\"))\n }\n\n if (wd && (first === `${wd} ${cmd}` || first === `${wdRaw} ${cmd}`)) {\n return fmt(lines.slice(1).join(\"\\n\"))\n }\n\n return fmt(out)\n}\n\nfunction scrollShellFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const code = p.metadata.exit\n const time = span(p.frame)\n if (code === undefined) {\n if (!time) {\n return \"shell completed\"\n }\n\n return `shell completed · ${time}`\n }\n\n return `shell completed (exit ${code})${time ? ` · ${time}` : \"\"}`\n}\n\nfunction scrollReadStart(p: ToolProps): string {\n const file = displayPath(p, p.input.path)\n const extra = primitiveInputSummary(p.frame.input, [\"path\"])\n const tail = extra ? ` ${extra}` : \"\"\n return `→ Read ${file}${tail}`.trim()\n}\n\nfunction scrollWriteStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollEditStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollPatchStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction patchLine(file: PatchFile, directory?: string): string {\n if (file.status === \"added\") {\n return `+ Created ${toolPath(file.file, { directory })}`\n }\n\n if (file.status === \"deleted\") {\n return `- Deleted ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"moved\") {\n return `→ Moved ${toolPath(file.from, { directory })} → ${toolPath(file.file, { directory })}`\n }\n\n return `~ Patched ${toolPath(file.file, { directory })}`\n}\n\nfunction scrollPatchFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const files = list<PatchFile>(p.frame.meta.files)\n if (files.length === 0) {\n const time = span(p.frame)\n if (!time) {\n return \"patch\"\n }\n\n return `patch · ${time}`\n }\n\n const showModified = !files.some((file) => file?.status && file.status !== \"modified\")\n const shown = files.filter((file) => showModified || file.status !== \"modified\")\n const rows = shown.slice(0, 6).map((file) => patchLine(file, p.frame.directory))\n if (shown.length > 6) {\n rows.push(`... and ${shown.length - 6} more`)\n }\n\n if (rows.length > 0) {\n return rows.join(\"\\n\")\n }\n\n return patchLine(files[0]!, p.frame.directory)\n}\n\nfunction scrollTaskStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction taskResult(output: string): string | undefined {\n if (!output.trim()) {\n return undefined\n }\n\n const match = output.match(/<task_result>\\s*([\\s\\S]*?)\\s*<\\/task_result>/)\n if (match) {\n return match[1].trim() || undefined\n }\n\n const next = output\n .split(\"\\n\")\n .filter((line) => !line.startsWith(\"task_id:\"))\n .join(\"\\n\")\n .trim()\n return next || undefined\n}\n\nfunction scrollTaskFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const kind = Locale.titlecase(p.input.agent || \"general\")\n const row = p.input.description\n if (!row) {\n return `# ${kind} Subagent`\n }\n\n return `# ${kind} Subagent\\n${row}`\n}\n\nfunction scrollQuestionStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollQuestionFinal(p: ToolProps): string {\n const q = p.input.questions ?? []\n const a = p.metadata.answers ?? []\n const time = span(p.frame)\n if (q.length === 0) {\n if (!time) {\n return \"0 questions\"\n }\n\n return `0 questions · ${time}`\n }\n\n const rows: string[] = []\n for (const [i, item] of q.slice(0, 4).entries()) {\n const prompt = item.question\n const reply = a[i] ?? []\n rows.push(`? ${prompt || `Question ${i + 1}`}`)\n rows.push(` ${reply.length > 0 ? reply.join(\", \") : \"(no answer)\"}`)\n }\n\n if (q.length > 4) {\n rows.push(`... and ${q.length - 4} more`)\n }\n\n return rows.join(\"\\n\")\n}\n\nfunction scrollLspStart(p: ToolProps): string {\n return `→ ${lspTitle(p.input, { directory: p.frame.directory })}`\n}\n\nfunction scrollSkillStart(p: ToolProps): string {\n return `→ Skill \"${p.metadata.name ?? p.input.id ?? \"\"}\"`\n}\n\nfunction scrollGlobStart(p: ToolProps): string {\n const pattern = p.input.pattern ?? \"\"\n const head = pattern ? `✱ Glob \"${pattern}\"` : \"✱ Glob\"\n const dir = p.input.path ?? \"\"\n if (!dir) {\n return head\n }\n\n return `${head} in ${displayPath(p, dir)}`\n}\n\nfunction scrollGlobFinal(p: ToolProps): string {\n return toolError(p.frame) || fail(p.frame)\n}\n\nfunction scrollGrepStart(p: ToolProps): string {\n const pattern = p.input.pattern ?? \"\"\n const head = pattern ? `✱ Grep \"${pattern}\"` : \"✱ Grep\"\n const dir = p.input.path ?? \"\"\n if (!dir) {\n return head\n }\n\n return `${head} in ${displayPath(p, dir)}`\n}\n\nfunction scrollListStart(p: ToolProps): string {\n const dir = text(dict(p.input).path)\n if (!dir) {\n return \"→ List\"\n }\n\n return `→ List ${displayPath(p, dir)}`\n}\n\nfunction scrollWebfetchStart(p: ToolProps): string {\n const url = p.input.url ?? \"\"\n if (!url) {\n return \"% WebFetch\"\n }\n\n return `% WebFetch ${url}`\n}\n\nfunction scrollWebSearchStart(p: ToolProps): string {\n const title = webSearchProviderLabel(p.metadata.provider)\n const query = p.input.query ?? \"\"\n if (!query) {\n return `◈ ${title}`\n }\n\n return `◈ ${title} \"${query}\"`\n}\n\nconst TOOL_RULES = {\n invalid: {\n view: {\n output: true,\n final: false,\n },\n run: runInvalid,\n scroll: {\n start: () => \"\",\n },\n },\n shell: {\n view: {\n output: true,\n final: false,\n },\n run: runShell,\n scroll: {\n start: scrollBashStart,\n progress: scrollBashProgress,\n final: scrollShellFinal,\n },\n },\n write: {\n view: {\n output: false,\n final: true,\n snap: \"code\",\n },\n run: runWrite,\n snap: snapWrite,\n scroll: {\n start: scrollWriteStart,\n },\n },\n edit: {\n view: {\n output: false,\n final: true,\n snap: \"diff\",\n },\n run: runEdit,\n snap: snapEdit,\n scroll: {\n start: scrollEditStart,\n },\n },\n patch: {\n view: {\n output: false,\n final: true,\n snap: \"diff\",\n },\n run: runPatch,\n snap: snapPatch,\n scroll: {\n start: scrollPatchStart,\n final: scrollPatchFinal,\n },\n },\n batch: {\n view: {\n output: true,\n final: false,\n },\n run: runBatch,\n scroll: {\n start: () => \"\",\n },\n },\n subagent: {\n view: {\n output: false,\n final: true,\n snap: \"structured\",\n },\n run: runTask,\n snap: snapTask,\n scroll: {\n start: scrollTaskStart,\n final: scrollTaskFinal,\n },\n },\n question: {\n view: {\n output: false,\n final: true,\n snap: \"structured\",\n },\n run: runQuestion,\n snap: snapQuestion,\n scroll: {\n start: scrollQuestionStart,\n final: scrollQuestionFinal,\n },\n },\n read: {\n view: {\n output: false,\n final: false,\n },\n run: runRead,\n scroll: {\n start: scrollReadStart,\n },\n },\n glob: {\n view: {\n output: false,\n final: false,\n },\n run: runGlob,\n scroll: {\n start: scrollGlobStart,\n final: scrollGlobFinal,\n },\n },\n grep: {\n view: {\n output: false,\n final: false,\n },\n run: runGrep,\n scroll: {\n start: scrollGrepStart,\n },\n },\n list: {\n view: {\n output: false,\n final: false,\n },\n run: runList,\n scroll: {\n start: scrollListStart,\n },\n },\n lsp: {\n view: {\n output: false,\n final: false,\n },\n run: runLsp,\n scroll: {\n start: scrollLspStart,\n },\n },\n webfetch: {\n view: {\n output: false,\n final: false,\n },\n run: runWebfetch,\n scroll: {\n start: scrollWebfetchStart,\n },\n },\n websearch: {\n view: {\n output: false,\n final: false,\n },\n run: runWebSearch,\n scroll: {\n start: scrollWebSearchStart,\n },\n },\n skill: {\n view: {\n output: false,\n final: false,\n },\n run: runSkill,\n scroll: {\n start: scrollSkillStart,\n },\n },\n} as const satisfies ToolRegistry\n\nfunction key(name: string): name is ToolName {\n return Object.prototype.hasOwnProperty.call(TOOL_RULES, name)\n}\n\nfunction rule(name?: string): AnyToolRule | undefined {\n if (!name || !key(name)) {\n return undefined\n }\n\n return TOOL_RULES[name]\n}\n\nfunction frame(part: SessionMessageAssistantTool, directory?: string): ToolFrame {\n const tool = normalizeTool(part)\n if (tool.state.status === \"streaming\")\n return {\n directory,\n raw: tool.state.input,\n name: tool.name,\n input: {},\n meta: {},\n state: dict(tool.state),\n status: tool.state.status,\n error: \"\",\n output: \"\",\n time: { start: tool.time.created },\n }\n const output = toolOutputText(tool.name, toolDisplayContent(tool.state))\n return {\n directory,\n raw: output,\n name: tool.name,\n input: normalizeInput(tool.name, tool.state.input),\n meta: normalizeMetadata(tool.name, tool.state.metadata),\n state: dict(tool.state),\n status: tool.state.status,\n error: tool.state.status === \"error\" ? tool.state.error.message : \"\",\n output,\n time: {\n start: tool.time.ran ?? tool.time.created,\n end: tool.time.completed,\n },\n }\n}\n\nfunction toolFrame(commit: StreamCommit, raw: string): ToolFrame {\n const current = commit.part ? frame(commit.part, commit.directory) : undefined\n return {\n directory: commit.directory,\n raw,\n name: canonicalToolName(commit.tool || current?.name || \"tool\"),\n input: current?.input ?? {},\n meta: current?.meta ?? {},\n state: current?.state ?? {},\n status: commit.toolState ?? current?.status ?? \"\",\n error: (commit.toolError ?? current?.error ?? \"\").trim(),\n output: current?.output ?? raw,\n time: current?.time ?? {},\n }\n}\n\nfunction runShell(p: ToolProps): ToolInline {\n return {\n icon: \"$\",\n title: p.input.command || \"\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output.trim() : undefined,\n }\n}\n\nexport function toolView(name?: string): ToolView {\n return (\n rule(name ? canonicalToolName(name) : undefined)?.view ?? {\n output: true,\n final: true,\n }\n )\n}\n\nexport function toolStructuredFinal(commit: StreamCommit): boolean {\n const state = commit.toolState ?? commit.part?.state.status\n return (\n commit.kind === \"tool\" &&\n commit.phase === \"final\" &&\n state === \"completed\" &&\n Boolean(toolView(commit.tool ?? commit.part?.name).snap)\n )\n}\n\nexport function toolInlineInfo(part: SessionMessageAssistantTool, directory?: string): ToolInline {\n const ctx = frame(part, directory)\n const draw = rule(ctx.name)?.run\n try {\n if (draw) {\n return draw(props(ctx))\n }\n } catch {\n return fallbackInline(ctx)\n }\n\n return fallbackInline(ctx)\n}\n\nexport function toolScroll(phase: ToolPhase, ctx: ToolFrame): string {\n const draw = rule(ctx.name)?.scroll?.[phase]\n try {\n if (draw) {\n return draw(props(ctx))\n }\n } catch {\n if (phase === \"start\") {\n return fallbackStart(ctx)\n }\n if (phase === \"progress\") {\n return ctx.raw\n }\n return fallbackFinal(ctx)\n }\n\n if (phase === \"start\") {\n return fallbackStart(ctx)\n }\n\n if (phase === \"progress\") {\n return ctx.raw\n }\n\n return fallbackFinal(ctx)\n}\n\nfunction toolSnapshot(commit: StreamCommit, raw: string): ToolSnapshot | undefined {\n const ctx = toolFrame(commit, raw)\n const draw = rule(ctx.name)?.snap\n if (!draw) {\n return undefined\n }\n\n try {\n return draw(props(ctx))\n } catch {\n return undefined\n }\n}\n\nfunction textBody(content: string): RunEntryBody | undefined {\n if (!content) {\n return undefined\n }\n\n return {\n type: \"text\",\n content,\n }\n}\n\nfunction markdownBody(content: string): RunEntryBody | undefined {\n if (!content) {\n return undefined\n }\n\n return {\n type: \"markdown\",\n content,\n }\n}\n\nfunction structuredBody(commit: StreamCommit, raw: string): RunEntryBody | undefined {\n const snap = toolSnapshot(commit, raw)\n if (!snap) {\n return undefined\n }\n\n return {\n type: \"structured\",\n snapshot: snap,\n }\n}\n\nconst STRUCTURED_FALLBACK_LENGTH = 4_096\n\nfunction structuredFallback(value: ToolDict): RunEntryBody | undefined {\n if (Object.keys(value).length === 0) return\n const content = JSON.stringify(value, null, 2)\n if (!content) return\n const suffix = \"\\n... [truncated]\"\n return {\n type: \"code\",\n content:\n content.length <= STRUCTURED_FALLBACK_LENGTH\n ? content\n : content.slice(0, STRUCTURED_FALLBACK_LENGTH - suffix.length) + suffix,\n filetype: \"json\",\n }\n}\n\nfunction shellOutput(command: string, raw: string): string | undefined {\n const body = stripAnsi(raw).replace(/^\\n+/, \"\").replace(/\\n+$/, \"\")\n if (!body) {\n return undefined\n }\n\n if (!command) {\n return body\n }\n\n return `\\n${body}`\n}\n\nexport function toolEntryBody(\n commit: StreamCommit,\n raw: string,\n options?: { shellOutput?: boolean },\n): RunEntryBody | undefined {\n if (commit.shell) {\n if (commit.phase === \"start\") {\n return textBody(`$ ${commit.shell.command}`)\n }\n\n if (commit.phase === \"progress\") {\n return textBody(shellOutput(commit.shell.command, raw) ?? \"\")\n }\n\n if (commit.toolState === \"error\") {\n const ctx = toolFrame(commit, raw)\n return textBody(toolScroll(\"final\", ctx))\n }\n\n return undefined\n }\n\n const ctx = toolFrame(commit, raw)\n const view = toolView(ctx.name)\n\n if (ctx.name === \"shell\" && commit.phase === \"progress\" && options?.shellOutput === false) return undefined\n\n if (ctx.name === \"subagent\") {\n if (commit.phase === \"start\") {\n return undefined\n }\n\n if (commit.phase === \"final\" && ctx.status === \"completed\") {\n const result = taskResult(ctx.output)\n if (result) {\n return markdownBody(result)\n }\n }\n }\n\n if (commit.phase === \"progress\" && !view.output) {\n return undefined\n }\n\n if (commit.phase === \"final\") {\n if (ctx.status === \"error\") {\n return textBody(toolScroll(\"final\", ctx))\n }\n\n if (!view.final) {\n return undefined\n }\n\n if (ctx.status && ctx.status !== \"completed\") {\n return textBody(ctx.raw.trim())\n }\n\n if (toolStructuredFinal(commit)) {\n return structuredBody(commit, raw) ?? textBody(toolScroll(\"final\", ctx))\n }\n\n if (!rule(ctx.name) && !ctx.output.trim()) {\n return structuredFallback(ctx.meta) ?? textBody(toolScroll(\"final\", ctx))\n }\n }\n\n return textBody(toolScroll(commit.phase, ctx))\n}\n\nexport function toolFiletype(input?: string): string | undefined {\n if (!input) {\n return undefined\n }\n\n const ext = path.extname(input)\n const lang = LANGUAGE_EXTENSIONS[ext]\n if ([\"typescriptreact\", \"javascriptreact\", \"javascript\"].includes(lang)) {\n return \"typescript\"\n }\n\n return lang\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B6AF1B4087412BC064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "3E1189EE62CBCE1E64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/api.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nconst methods = new Set([\"delete\", \"get\", \"head\", \"options\", \"patch\", \"post\", \"put\"])\n\ntype Operation = {\n operationId?: string\n}\n\ntype OpenApi = {\n paths?: Record<string, Record<string, Operation>>\n}\n\nexport default Runtime.handler(\n Commands.commands.api,\n Effect.fn(\"cli.api\")(function* (input) {\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n mismatch: \"ignore\",\n })\n const endpoint = server.endpoint\n const params = Option.getOrElse(input.param, () => ({}))\n const request = yield* resolveRequest(endpoint, input.request, params)\n const headers = new Headers(Service.headers(endpoint))\n for (const header of input.header) {\n const index = header.indexOf(\":\")\n if (index < 1) return yield* Effect.fail(new Error(`Invalid header, expected name:value: ${header}`))\n headers.set(header.slice(0, index).trim(), header.slice(index + 1).trim())\n }\n const body = Option.getOrUndefined(input.data)\n if (body !== undefined && !headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\")\n\n const response = yield* Effect.tryPromise(() =>\n fetch(new URL(request.path, endpoint.url), {\n method: request.method,\n headers,\n body,\n }),\n )\n const output = yield* Effect.promise(() => response.text())\n if (output) process.stdout.write(output + (output.endsWith(EOL) ? \"\" : EOL))\n }),\n)\n\nexport function resolveOperation(spec: OpenApi, operationID: string, params: Record<string, string>) {\n for (const [path, operations] of Object.entries(spec.paths ?? {})) {\n for (const [method, operation] of Object.entries(operations)) {\n if (!methods.has(method) || operation.operationId !== operationID) continue\n return { method: method.toUpperCase(), path: interpolate(path, params) }\n }\n }\n throw new Error(`Operation not found: ${operationID}`)\n}\n\nexport function rawRequest(input: readonly string[]) {\n if (input.length !== 2 || !methods.has(input[0].toLowerCase()) || !input[1].startsWith(\"/\")) return\n return { method: input[0].toUpperCase(), path: input[1] }\n}\n\nfunction resolveRequest(endpoint: Endpoint, input: readonly string[], params: Record<string, string>) {\n const raw = rawRequest(input)\n if (raw) return Effect.succeed(raw)\n if (input.length !== 1) return Effect.fail(new Error(\"Expected an operation name or an HTTP method and path\"))\n return Effect.tryPromise(async () => {\n const response = await fetch(new URL(\"/openapi.json\", endpoint.url), { headers: Service.headers(endpoint) })\n if (!response.ok) throw new Error(`Failed to load OpenAPI document: HTTP ${response.status}`)\n return resolveOperation((await response.json()) as OpenApi, input[0], params)\n })\n}\n\nfunction interpolate(path: string, params: Record<string, string>) {\n const used = new Set<string>()\n const pathname = path.replaceAll(/\\{([^}]+)\\}/g, (_, name: string) => {\n const value = params[name]\n if (value === undefined) throw new Error(`Missing path parameter: ${name}`)\n used.add(name)\n return encodeURIComponent(value)\n })\n const query = new URLSearchParams(Object.entries(params).filter(([name]) => !used.has(name))).toString()\n return query ? `${pathname}?${query}` : pathname\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "4758B2BAFA0DCE5A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/services/server-connection.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint, type EnsureOptions } from \"@opencode-ai/client/effect/service\"\nimport { ClientError, isUnauthorizedError, OpenCode } from \"@opencode-ai/client/promise\"\nimport { OPENCODE_VERSION } from \"../version\"\nimport { Effect, Redacted } from \"effect\"\nimport { Env } from \"../env\"\nimport { ServiceConfig } from \"./service-config\"\nimport { Standalone } from \"./standalone\"\n\nexport type Args = {\n readonly server?: string\n readonly standalone?: boolean\n readonly mismatch?: \"replace\" | \"ignore\" | \"error\"\n readonly onStart?: EnsureOptions[\"onStart\"]\n}\n\nexport type Resolved = {\n readonly endpoint: Endpoint\n readonly service?: ReturnType<typeof managedService>\n}\n\nexport const resolve = Effect.fn(\"cli.server-connection.resolve\")(function* (args: Args) {\n if (args.server !== undefined && args.standalone)\n return yield* Effect.fail(new Error(\"--server and --standalone cannot be combined\"))\n if (args.server !== undefined) {\n const password = yield* Env.password\n const endpoint = {\n url: args.server,\n auth: password ? { type: \"basic\" as const, username: \"opencode\", password: Redacted.value(password) } : undefined,\n } satisfies Endpoint\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const health = yield* Effect.tryPromise({\n try: () => client.health.get({ signal: AbortSignal.timeout(5_000) }),\n catch: (cause) => connectError(endpoint, cause),\n })\n if (health.version !== OPENCODE_VERSION)\n process.stderr.write(\n `Warning: Server at ${endpoint.url} has version ${health.version}; this client is ${OPENCODE_VERSION}. Continuing anyway.\\n`,\n )\n return { endpoint } satisfies Resolved\n }\n if (args.standalone) {\n return { endpoint: yield* Standalone.start() } satisfies Resolved\n }\n\n const mismatch = args.mismatch ?? \"ignore\"\n const options = yield* ServiceConfig.options({ checkVersion: mismatch !== \"ignore\" })\n return {\n endpoint: yield* resolveManaged({ ...options, onStart: args.onStart }, mismatch),\n service: managedService(options),\n } satisfies Resolved\n})\n\nfunction managedService(options: EnsureOptions) {\n const reconnectOptions = { ...options, version: undefined }\n return {\n reconnect: () => Service.ensure(reconnectOptions),\n restart: () =>\n Effect.gen(function* () {\n yield* Service.stop(options)\n yield* Service.ensure(reconnectOptions)\n }),\n }\n}\n\nexport const shutdownPersistentPty = Effect.fn(\"cli.server-connection.shutdown-persistent-pty\")(function* (\n options: EnsureOptions,\n) {\n const endpoint = yield* Service.discover({ ...options, version: undefined })\n if (!endpoint) return\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n yield* Effect.tryPromise(() => client.experimental.persistentPty.shutdown())\n})\n\nconst resolveManaged = Effect.fnUntraced(function* (options: EnsureOptions, mismatch: NonNullable<Args[\"mismatch\"]>) {\n if (mismatch === \"replace\") return yield* Service.ensure(options)\n if (mismatch === \"ignore\") return yield* Service.ensure({ ...options, version: undefined })\n\n const compatible = yield* Service.discover(options)\n if (compatible !== undefined) return compatible\n const existing = yield* Service.discover({ ...options, version: undefined })\n if (existing !== undefined)\n return yield* Effect.fail(new Error(\"Background server version does not match this client\"))\n return yield* Service.ensure(options)\n})\n\nfunction connectError(endpoint: Endpoint, cause: unknown) {\n if (isUnauthorizedError(cause)) {\n return new Error(\n endpoint.auth === undefined\n ? `Server at ${endpoint.url} requires a password; set OPENCODE_PASSWORD`\n : `Server at ${endpoint.url} rejected the password`,\n { cause },\n )\n }\n if (cause instanceof ClientError && cause.reason === \"Transport\")\n return new Error(`Could not reach server at ${endpoint.url}`, { cause })\n return new Error(`Server at ${endpoint.url} did not provide a compatible V2 health response`, { cause })\n}\n\nexport * as ServerConnection from \"./server-connection\"\n" | ||
| ], | ||
| "mappings": ";ygBAoBO,IAAM,EAAU,EAAO,GAAG,+BAA+B,EAAE,SAAU,CAAC,EAAY,CACvF,GAAI,EAAK,SAAW,QAAa,EAAK,WACpC,OAAO,MAAO,EAAO,KAAS,MAAM,8CAA8C,CAAC,EACrF,GAAI,EAAK,SAAW,OAAW,CAC7B,IAAM,EAAW,MAAO,EAAI,SACtB,EAAW,CACf,IAAK,EAAK,OACV,KAAM,EAAW,CAAE,KAAM,QAAkB,SAAU,WAAY,SAAU,EAAS,MAAM,CAAQ,CAAE,EAAI,MAC1G,EACM,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAS,MAAO,EAAO,WAAW,CACtC,IAAK,IAAM,EAAO,OAAO,IAAI,CAAE,OAAQ,YAAY,QAAQ,IAAK,CAAE,CAAC,EACnE,MAAO,CAAC,IAAU,EAAa,EAAU,CAAK,CAChD,CAAC,EACD,GAAI,EAAO,UAAY,EACrB,QAAQ,OAAO,MACb,sBAAsB,EAAS,mBAAmB,EAAO,2BAA2B;AAAA,CACtF,EACF,MAAO,CAAE,UAAS,EAEpB,GAAI,EAAK,WACP,MAAO,CAAE,SAAU,MAAO,EAAW,MAAM,CAAE,EAG/C,IAAM,EAAW,EAAK,UAAY,SAC5B,EAAU,MAAO,EAAc,QAAQ,CAAE,aAAc,IAAa,QAAS,CAAC,EACpF,MAAO,CACL,SAAU,MAAO,EAAe,IAAK,EAAS,QAAS,EAAK,OAAQ,EAAG,CAAQ,EAC/E,QAAS,EAAe,CAAO,CACjC,EACD,EAED,SAAS,CAAc,CAAC,EAAwB,CAC9C,IAAM,EAAmB,IAAK,EAAS,QAAS,MAAU,EAC1D,MAAO,CACL,UAAW,IAAM,EAAQ,OAAO,CAAgB,EAChD,QAAS,IACP,EAAO,IAAI,SAAU,EAAG,CACtB,MAAO,EAAQ,KAAK,CAAO,EAC3B,MAAO,EAAQ,OAAO,CAAgB,EACvC,CACL,EAGK,IAAM,EAAwB,EAAO,GAAG,+CAA+C,EAAE,SAAU,CACxG,EACA,CACA,IAAM,EAAW,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,EAC3E,GAAI,CAAC,EAAU,OACf,IAAM,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAC1F,MAAO,EAAO,WAAW,IAAM,EAAO,aAAa,cAAc,SAAS,CAAC,EAC5E,EAEK,EAAiB,EAAO,WAAW,SAAU,CAAC,EAAwB,EAAyC,CACnH,GAAI,IAAa,UAAW,OAAO,MAAO,EAAQ,OAAO,CAAO,EAChE,GAAI,IAAa,SAAU,OAAO,MAAO,EAAQ,OAAO,IAAK,EAAS,QAAS,MAAU,CAAC,EAE1F,IAAM,EAAa,MAAO,EAAQ,SAAS,CAAO,EAClD,GAAI,IAAe,OAAW,OAAO,EAErC,IADiB,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,KAC1D,OACf,OAAO,MAAO,EAAO,KAAS,MAAM,sDAAsD,CAAC,EAC7F,OAAO,MAAO,EAAQ,OAAO,CAAO,EACrC,EAED,SAAS,CAAY,CAAC,EAAoB,EAAgB,CACxD,GAAI,EAAoB,CAAK,EAC3B,OAAW,MACT,EAAS,OAAS,OACd,aAAa,EAAS,iDACtB,aAAa,EAAS,4BAC1B,CAAE,OAAM,CACV,EAEF,GAAI,aAAiB,GAAe,EAAM,SAAW,YACnD,OAAW,MAAM,6BAA6B,EAAS,MAAO,CAAE,OAAM,CAAC,EACzE,OAAW,MAAM,aAAa,EAAS,sDAAuD,CAAE,OAAM,CAAC", | ||
| "debugId": "A76768109D20BC2164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/amazon-bedrock-mantle.ts"], | ||
| "sourcesContent": [ | ||
| "import { Auth } from \"../route/auth.js\"\nimport type { Route as RouteDef, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAIChat } from \"../protocols/openai-chat.js\"\nimport { OpenAIResponses } from \"../protocols/openai-responses.js\"\nimport { BedrockAuth, type Credentials } from \"../protocols/utils/bedrock-auth.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"amazon-bedrock\")\n\nexport type Config = RouteDefaultsInput & {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly credentials?: Credentials\n readonly region?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly auth?: \"bearer\" | \"sigv4\"\n readonly baseURL?: string\n readonly credentials?: Credentials\n readonly region?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst responsesRoute = OpenAIResponses.route.with({\n id: \"bedrock-mantle-responses\",\n provider: id,\n})\n\nconst chatRoute = OpenAIChat.route.with({\n id: \"bedrock-mantle-chat\",\n provider: id,\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst configuredRoute = <Body, Prepared>(route: RouteDef<Body, Prepared>, input: Config) => {\n const region = input.region ?? input.credentials?.region ?? \"us-east-1\"\n const credentials = input.credentials === undefined ? undefined : { ...input.credentials, region }\n return route.with({\n endpoint: { baseURL: input.baseURL ?? `https://bedrock-mantle.${region}.api.aws/v1` },\n auth:\n input.apiKey === undefined\n ? BedrockAuth.sigV4(credentials, { service: \"bedrock-mantle\", name: \"Bedrock Mantle\" })\n : Auth.bearer(input.apiKey),\n })\n}\n\nconst defaults = (input: Config) => {\n const { apiKey: _, baseURL: _baseURL, credentials: _credentials, region: _region, ...rest } = input\n return rest\n}\n\nexport const configure = (input: Config = {}) => {\n const configuredResponsesRoute = configuredRoute(responsesRoute, input)\n const configuredChatRoute = configuredRoute(chatRoute, input)\n const modelDefaults = defaults(input)\n const responses = (modelID: string | ModelID) =>\n configuredResponsesRoute\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n const chat = (modelID: string | ModelID) =>\n configuredChatRoute\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n return {\n id,\n model: chat,\n chat,\n responses,\n configure,\n }\n}\n\nexport const provider = configure()\n\nconst config = (settings: Settings): Config => {\n if (settings.auth === \"bearer\" && settings.apiKey === undefined)\n throw new Error(\"Amazon Bedrock Mantle bearer auth requires apiKey\")\n if (settings.auth === \"sigv4\" && settings.apiKey !== undefined)\n throw new Error(\"Amazon Bedrock Mantle SigV4 auth does not accept apiKey\")\n return {\n apiKey: settings.auth === \"sigv4\" ? undefined : settings.apiKey,\n baseURL: settings.baseURL,\n credentials: settings.credentials,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n region: settings.region,\n }\n}\n\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const responsesModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).responses(modelID)\nexport const model = chatModel\n" | ||
| ], | ||
| "mappings": ";gOASO,IAAM,EAAK,EAAW,KAAK,gBAAgB,EAmB5C,EAAiB,EAAgB,MAAM,KAAK,CAChD,GAAI,2BACJ,SAAU,CACZ,CAAC,EAEK,EAAY,EAAW,MAAM,KAAK,CACtC,GAAI,sBACJ,SAAU,CACZ,CAAC,EAID,IAAM,EAAkB,CAAiB,EAAiC,IAAkB,CAC1F,IAAM,EAAS,EAAM,QAAU,EAAM,aAAa,QAAU,YACtD,EAAc,EAAM,cAAgB,OAAY,OAAY,IAAK,EAAM,YAAa,QAAO,EACjG,OAAO,EAAM,KAAK,CAChB,SAAU,CAAE,QAAS,EAAM,SAAW,0BAA0B,cAAoB,EACpF,KACE,EAAM,SAAW,OACb,EAAY,MAAM,EAAa,CAAE,QAAS,iBAAkB,KAAM,gBAAiB,CAAC,EACpF,EAAK,OAAO,EAAM,MAAM,CAChC,CAAC,GAGG,EAAW,CAAC,IAAkB,CAClC,IAAQ,OAAQ,EAAG,QAAS,EAAU,YAAa,EAAc,OAAQ,KAAY,GAAS,EAC9F,OAAO,GAGI,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAA2B,EAAgB,EAAgB,CAAK,EAChE,EAAsB,EAAgB,EAAW,CAAK,EACtD,EAAgB,EAAS,CAAK,EAC9B,EAAY,CAAC,IACjB,EACG,KAAK,EAAkB,EAAS,CAAa,CAAC,EAC9C,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAChD,EAAO,CAAC,IACZ,EACG,KAAK,EAAkB,EAAS,CAAa,CAAC,EAC9C,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAEtD,MAAO,CACL,KACA,MAAO,EACP,OACA,YACA,WACF,GAGW,EAAW,EAAU,EAE5B,EAAS,CAAC,IAA+B,CAC7C,GAAI,EAAS,OAAS,UAAY,EAAS,SAAW,OACpD,MAAU,MAAM,mDAAmD,EACrE,GAAI,EAAS,OAAS,SAAW,EAAS,SAAW,OACnD,MAAU,MAAM,yDAAyD,EAC3E,MAAO,CACL,OAAQ,EAAS,OAAS,QAAU,OAAY,EAAS,OACzD,QAAS,EAAS,QAClB,YAAa,EAAS,YACtB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,gBAC1B,OAAQ,EAAS,MACnB,GAGW,EAAuF,CAClG,EACA,IACG,EAAU,EAAO,CAAQ,CAAC,EAAE,KAAK,CAAO,EAChC,EAA4F,CACvG,EACA,IACG,EAAU,EAAO,CAAQ,CAAC,EAAE,UAAU,CAAO", | ||
| "debugId": "29D94ED122AE053D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "6EDD8006A2A1B47164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/durable-event-manifest.ts"], | ||
| "sourcesContent": [ | ||
| "export * as DurableEventManifest from \"./durable-event-manifest.js\"\n\nimport { Event } from \"./event.js\"\nimport { Worktree } from \"./worktree.js\"\nimport { SessionEvent } from \"./session-event.js\"\n\nexport const Durable = Event.durableMap([...SessionEvent.DurableDefinitions, Worktree.Event.Resolved])\n" | ||
| ], | ||
| "mappings": ";4JAMO,IAAM,EAAU,EAAM,WAAW,CAAC,GAAG,EAAa,mBAAoB,EAAS,MAAM,QAAQ,CAAC", | ||
| "debugId": "B90B0890EE206E9364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "633F83211616374A64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/open-responses-continuation.ts", "../ai/src/protocols/open-responses-channel.ts", "../ai/src/protocols/utils/responses-hosted-tools.ts"], | ||
| "sourcesContent": [ | ||
| "import { AIError, TransportReason } from \"../schema/index.js\"\nimport type { ChannelCheckpoint, ChannelObservation, WebSocketChannelDriver } from \"../route/transport/index.js\"\nimport { Effect, Option, Schema } from \"effect\"\nimport * as ProviderShared from \"./shared.js\"\nimport { OpenResponses } from \"./open-responses.js\"\n\nconst PROTOCOL = \"open-responses.websocket.v1\"\nconst VERSION = 1\nconst decodeEvent = Schema.decodeUnknownEffect(OpenResponses.protocol.stream.event)\n\ninterface CheckpointValue {\n readonly version: typeof VERSION\n readonly responseID: string\n readonly request: Readonly<Record<string, unknown>>\n readonly output: ReadonlyArray<unknown>\n}\n\nexport interface DriverInput {\n readonly id: string\n readonly name: string\n readonly request: Readonly<Record<string, unknown>>\n readonly message: string\n readonly base: WebSocketChannelDriver\n}\n\nconst checkpointValue = (checkpoint: ChannelCheckpoint | undefined): CheckpointValue | undefined => {\n if (checkpoint?.protocol !== PROTOCOL || !ProviderShared.isRecord(checkpoint.value)) return undefined\n if (checkpoint.value.version !== VERSION) return undefined\n if (typeof checkpoint.value.responseID !== \"string\" || checkpoint.value.responseID.trim().length === 0)\n return undefined\n if (!ProviderShared.isRecord(checkpoint.value.request) || !Array.isArray(checkpoint.value.output)) return undefined\n return {\n version: VERSION,\n responseID: checkpoint.value.responseID,\n request: checkpoint.value.request,\n output: checkpoint.value.output,\n }\n}\n\nconst canonical = (value: unknown): string => {\n if (value === undefined) return \"undefined\"\n if (Array.isArray(value)) return `[${value.map(canonical).join(\",\")}]`\n if (!ProviderShared.isRecord(value)) return ProviderShared.encodeJson(value)\n return `{${Object.keys(value)\n .sort()\n .map((key) => `${ProviderShared.encodeJson(key)}:${canonical(value[key])}`)\n .join(\",\")}}`\n}\n\nconst json = (value: unknown) => {\n if (typeof value !== \"string\") return value\n return Option.getOrElse(Schema.decodeUnknownOption(ProviderShared.Json)(value), () => value)\n}\n\nconst comparable = (value: unknown) => {\n if (!ProviderShared.isRecord(value)) return value\n if (value.type === \"message\" && value.role === \"assistant\")\n return {\n role: \"assistant\",\n content: value.content,\n ...(value.phase === undefined ? {} : { phase: value.phase }),\n }\n if (value.type === \"function_call\")\n return {\n type: value.type,\n call_id: value.call_id,\n name: value.name,\n arguments: json(value.arguments),\n }\n if (value.type === \"reasoning\")\n return {\n type: value.type,\n summary: value.summary,\n encrypted_content: value.encrypted_content,\n }\n return value\n}\n\nconst invariant = (request: Readonly<Record<string, unknown>>) => {\n const { type: _type, input: _input, previous_response_id: _previousResponseID, ...rest } = request\n return rest\n}\n\nconst incremental = (\n request: Readonly<Record<string, unknown>>,\n checkpoint: CheckpointValue,\n): ReadonlyArray<unknown> | undefined => {\n const input = request.input\n const previousInput = checkpoint.request.input\n if (!Array.isArray(input) || !Array.isArray(previousInput)) return undefined\n if (canonical(invariant(request)) !== canonical(invariant(checkpoint.request))) return undefined\n const baseline = [...previousInput, ...checkpoint.output]\n if (input.length <= baseline.length) return undefined\n if (!baseline.every((item, index) => canonical(comparable(item)) === canonical(comparable(input[index]))))\n return undefined\n return input.slice(baseline.length)\n}\n\nconst code = (event: OpenResponses.Event) => event.code || event.error?.code || event.response?.error?.code || undefined\n\nconst rejected = (\n input: DriverInput,\n observation: Extract<ChannelObservation, { readonly type: \"provider-failure\" }>,\n recovery: \"retry-full\" | \"rotate-and-retry-full\",\n): ChannelObservation => ({\n type: \"rejected\",\n recovery,\n error: new AIError({\n module: input.id,\n method: \"stream\",\n reason: new TransportReason({\n message: observation.error.message,\n transport: \"websocket\",\n operation: \"read\",\n phase: \"receive\",\n delivery: \"rejected\",\n recovery,\n }),\n }),\n})\n\nexport const driver = (input: DriverInput): WebSocketChannelDriver => {\n const { previous_response_id: _previousResponseID, ...request } = input.request\n let output: unknown[] = []\n return {\n create: (checkpoint) =>\n Effect.sync(() => {\n output = []\n const previous = checkpointValue(checkpoint)\n const delta = previous ? incremental(request, previous) : undefined\n if (!previous || !delta) return { message: ProviderShared.encodeJson(request), mode: \"full\" as const }\n return {\n message: ProviderShared.encodeJson({ ...request, input: delta, previous_response_id: previous.responseID }),\n mode: \"incremental\" as const,\n }\n }),\n observe: (create, frame) =>\n Effect.gen(function* () {\n const event = yield* decodeEvent(frame).pipe(\n Effect.mapError(() => ProviderShared.eventError(input.id, `Invalid ${input.name} WebSocket event`, frame)),\n )\n const observation = yield* input.base.observe(create, frame)\n if (event.type === \"response.output_item.done\" && event.item) output.push(event.item)\n if (observation.type === \"provider-failure\") {\n const rejection = code(event)\n if (rejection === \"previous_response_not_found\") return rejected(input, observation, \"retry-full\")\n if (rejection === \"websocket_connection_limit_reached\")\n return rejected(input, observation, \"rotate-and-retry-full\")\n }\n if (observation.type !== \"completed\") return observation\n const responseID = event.response?.id\n if (!responseID || responseID.trim().length === 0) return observation\n return {\n ...observation,\n checkpoint: {\n protocol: PROTOCOL,\n value: {\n version: VERSION,\n responseID,\n request,\n output: event.response?.output ? [...event.response.output] : output.slice(),\n } satisfies CheckpointValue,\n },\n }\n }),\n }\n}\n\nexport const OpenResponsesContinuation = { driver } as const\n", | ||
| "import { Effect, Schema, Stream } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Framing } from \"../route/framing.js\"\nimport {\n HttpTransport,\n WebSocketTransport,\n type Transport,\n type WebSocketChannelDriver,\n type WebSocketChannelExchange,\n} from \"../route/transport/index.js\"\nimport * as ProviderShared from \"./shared.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { OpenResponsesContinuation } from \"./open-responses-continuation.js\"\n\nconst WebSocketResponseCreate = Schema.StructWithRest(Schema.Struct({ type: Schema.tag(\"response.create\") }), [\n Schema.Record(Schema.String, Schema.Unknown),\n])\nconst decodeMessage = ProviderShared.validateWith(Schema.decodeUnknownEffect(WebSocketResponseCreate))\nconst encodeMessage = Schema.encodeSync(Schema.fromJsonString(WebSocketResponseCreate))\nconst decodeEvent = Schema.decodeUnknownEffect(OpenResponses.protocol.stream.event)\n\nexport interface Options {\n readonly id: string\n readonly name: string\n readonly rotateAfterMs?: number\n readonly enabled?: (url: string) => boolean\n readonly url?: (url: string) => string\n readonly headers?: (headers: Headers.Headers) => Headers.Headers\n}\n\nexport interface Prepared {\n readonly http: HttpTransport.HttpPrepared<string>\n readonly channel?: {\n readonly url: string\n readonly headers: Headers.Headers\n readonly rotateAfterMs?: number\n readonly driver: WebSocketChannelDriver\n }\n}\n\nconst message = (body: unknown) =>\n Effect.gen(function* () {\n if (!ProviderShared.isRecord(body))\n return yield* ProviderShared.invalidRequest(\"Open Responses WebSocket body must be a JSON object\")\n const { stream: _stream, stream_options: _streamOptions, background: _background, ...request } = body\n const decoded = yield* decodeMessage({ ...request, type: \"response.create\" })\n return { request: decoded, message: encodeMessage(decoded) }\n })\n\nconst driver = (options: Options, body: string): WebSocketChannelDriver => {\n let responseID: string | undefined\n let terminal = false\n return {\n create: () =>\n Effect.sync(() => {\n responseID = undefined\n terminal = false\n return { message: body, mode: \"full\" }\n }),\n observe: (_create, frame) =>\n Effect.gen(function* () {\n const event = yield* decodeEvent(frame).pipe(\n Effect.mapError(() =>\n ProviderShared.eventError(options.id, `Invalid ${options.name} WebSocket event`, frame),\n ),\n )\n if (terminal)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted ${event.type} after a terminal event`,\n frame,\n )\n if (event.type === \"error\") {\n terminal = true\n yield* OpenResponses.decodeKnownErrorEvent(event).pipe(\n Effect.mapError(() =>\n ProviderShared.eventError(options.id, `${options.name} returned a malformed error event`, frame),\n ),\n )\n return {\n type: \"provider-failure\",\n error: OpenResponses.providerFailure(options.id, event, `${options.name} stream error`),\n }\n }\n if (event.type === \"response.failed\") {\n terminal = true\n if (responseID && event.response?.id && event.response.id !== responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response ID changed during execution`,\n frame,\n )\n return {\n type: \"provider-failure\",\n error: OpenResponses.providerFailure(options.id, event, `${options.name} response failed`),\n }\n }\n if (event.type === \"response.created\") {\n const created = event.response?.id\n if (responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted duplicate response.created`,\n frame,\n )\n if (!created)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response.created is missing response.id`,\n frame,\n )\n responseID = created\n return { type: \"frame\", frame }\n }\n // Keepalives carry no response state and may arrive before response.created.\n if (event.type === \"keepalive\") return { type: \"frame\", frame }\n if (!responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted ${event.type} before response.created`,\n frame,\n )\n if (event.response?.id && event.response.id !== responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response ID changed during execution`,\n frame,\n )\n if (event.type === \"response.completed\") {\n terminal = true\n return { type: \"completed\", frame }\n }\n if (event.type === \"response.incomplete\") {\n terminal = true\n return { type: \"incomplete\", frame }\n }\n return { type: \"frame\", frame }\n }),\n }\n}\n\nexport const transport = <Body>(options: Options): Transport<Body, Prepared, string> => {\n const http = HttpTransport.sseJson.with<Body>()\n return {\n id: http.id,\n prepare: (input) =>\n Effect.gen(function* () {\n const parts = yield* HttpTransport.jsonRequestParts(input)\n const headers = Headers.remove(options.headers?.(parts.headers) ?? parts.headers, \"content-length\")\n const channel =\n input.webSocket && (options.enabled?.(parts.url) ?? true)\n ? yield* Effect.gen(function* () {\n const create = yield* message(parts.jsonBody)\n const base = driver(options, create.message)\n return {\n url: yield* WebSocketTransport.toWebSocketUrl(options.url?.(parts.url) ?? parts.url),\n headers,\n rotateAfterMs: options.rotateAfterMs,\n driver: OpenResponsesContinuation.driver({\n id: options.id,\n name: options.name,\n request: create.request,\n message: create.message,\n base,\n }),\n }\n })\n : undefined\n return {\n http: {\n request: ProviderShared.jsonPost({ url: parts.url, body: parts.bodyText, headers: parts.headers }),\n framing: Framing.sse,\n middleware: input.middleware,\n },\n channel,\n }\n }),\n execute: (prepared, request, runtime, executeOptions) => {\n if (!executeOptions?.webSocket || !prepared.channel) return http.execute(prepared.http, request, runtime)\n const exchange: WebSocketChannelExchange = {\n id: request.id ?? \"request\",\n connect: {\n url: prepared.channel.url,\n headers: prepared.channel.headers,\n rotateAfterMs: prepared.channel.rotateAfterMs,\n },\n fallback: () =>\n Stream.unwrap(\n http.execute(prepared.http, request, runtime).pipe(Effect.map((execution) => execution.frames)),\n ),\n driver: prepared.channel.driver,\n }\n return executeOptions.webSocket.execute(exchange)\n },\n }\n}\n\nexport const OpenResponsesChannel = { transport } as const\n", | ||
| "import { Effect } from \"effect\"\nimport { LLMEvent, type AIError, type ToolResultPart } from \"../../schema/index.js\"\nimport { OpenResponses } from \"../open-responses.js\"\nimport { Lifecycle } from \"./lifecycle.js\"\n\nexport type Item = OpenResponses.StreamItem & {\n readonly id: string\n readonly status?: string\n readonly action?: unknown\n readonly queries?: unknown\n readonly results?: unknown\n readonly code?: string\n readonly container_id?: string\n readonly outputs?: unknown\n readonly server_label?: string\n readonly output?: unknown\n readonly result?: string\n readonly output_format?: \"png\" | \"jpeg\" | \"webp\"\n readonly error?: unknown\n}\n\nexport interface Definition {\n readonly name: string\n readonly input: (item: Item) => unknown\n readonly result?: (item: Item) => Effect.Effect<ToolResultPart[\"result\"], AIError>\n}\n\nexport type Definitions = Readonly<Record<string, Definition>>\n\nexport const isItem = <Tools extends Definitions>(item: OpenResponses.StreamItem, tools: Tools): item is Item =>\n item.type in tools && typeof item.id === \"string\" && item.id.length > 0\n\nexport const onDone: (\n state: OpenResponses.ParserState,\n item: Item,\n tools: Definitions,\n) => Effect.Effect<OpenResponses.StepResult, AIError> = Effect.fn(\"ResponsesHostedTools.onDone\")(function* (\n state,\n item,\n tools,\n) {\n const tool = tools[item.type]\n if (!tool) return [state, []] satisfies OpenResponses.StepResult\n const providerMetadata = OpenResponses.providerMetadata(state, { itemId: item.id })\n const events: LLMEvent[] = []\n const lifecycle = Lifecycle.stepStart(state.lifecycle, events)\n events.push(\n LLMEvent.toolCall({\n id: item.id,\n name: tool.name,\n input: tool.input(item),\n providerExecuted: true,\n providerMetadata,\n }),\n LLMEvent.toolResult({\n id: item.id,\n name: tool.name,\n result: tool.result\n ? yield* tool.result(item)\n : item.error !== undefined && item.error !== null\n ? { type: \"error\", value: item.error }\n : { type: \"json\", value: item },\n providerExecuted: true,\n providerMetadata,\n }),\n )\n return [{ ...state, lifecycle }, events] satisfies OpenResponses.StepResult\n})\n\nexport * as ResponsesHostedTools from \"./responses-hosted-tools.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6D54084AD97833DB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openrouter.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Schema } from \"effect\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport { ProviderID, type CacheHint, type ModelID } from \"../schema/index.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport * as OpenAICompatibleProfiles from \"./openai-compatible-profile.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport { newBreakpoints, ttlBucket } from \"../protocols/utils/cache.js\"\nimport { isRecord } from \"../protocols/shared.js\"\n\nexport const profile = OpenAICompatibleProfiles.profiles.openrouter\nexport const id = ProviderID.make(profile.provider)\nconst ADAPTER = \"openrouter\"\n\ntype OpenRouterString<Known extends string> = Known | (string & {})\n\nexport interface OpenRouterProviderRouting {\n readonly [key: string]: unknown\n readonly order?: ReadonlyArray<string>\n readonly allow_fallbacks?: boolean\n readonly require_parameters?: boolean\n readonly data_collection?: OpenRouterString<\"allow\" | \"deny\">\n readonly only?: ReadonlyArray<string>\n readonly ignore?: ReadonlyArray<string>\n readonly quantizations?: ReadonlyArray<string>\n readonly sort?: OpenRouterString<\"price\" | \"throughput\" | \"latency\">\n readonly max_price?: Readonly<{\n prompt?: number | string\n completion?: number | string\n image?: number | string\n audio?: number | string\n request?: number | string\n }>\n readonly zdr?: boolean\n}\n\nexport type OpenRouterPlugin =\n | Readonly<{\n id: \"web\"\n max_results?: number\n search_prompt?: string\n engine?: OpenRouterString<\"native\" | \"exa\">\n }>\n | Readonly<{ id: \"file-parser\"; max_files?: number; pdf?: { engine?: string } }>\n | Readonly<{ id: \"moderation\" }>\n | Readonly<{ id: \"response-healing\" }>\n | Readonly<{ id: \"auto-router\"; allowed_models?: ReadonlyArray<string> }>\n | Readonly<{ id: string & {}; [key: string]: unknown }>\n\nexport interface OpenRouterOptions {\n readonly [key: string]: unknown\n readonly debug?: Readonly<{ echo_upstream_body?: boolean }>\n readonly models?: ReadonlyArray<string>\n readonly plugins?: ReadonlyArray<OpenRouterPlugin>\n readonly provider?: OpenRouterProviderRouting\n readonly reasoning?: Readonly<{\n enabled?: boolean\n exclude?: boolean\n effort?: OpenRouterString<\"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\">\n max_tokens?: number\n }>\n readonly usage?: boolean | Readonly<{ include: boolean }>\n readonly user?: string\n readonly web_search_options?: Readonly<{\n max_results?: number\n search_prompt?: string\n engine?: OpenRouterString<\"native\" | \"exa\">\n }>\n}\n\nexport type OpenRouterProviderOptionsInput = OpenRouterOptions\n\nexport type LanguageModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: OpenRouterProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: OpenRouterProviderOptionsInput\n}\n\nconst OpenRouterBody = Schema.StructWithRest(Schema.Struct(OpenAIChat.bodyFields), [\n Schema.Record(Schema.String, Schema.Any),\n])\nexport type OpenRouterBody = Schema.Schema.Type<typeof OpenRouterBody>\n\nexport const protocol = Protocol.make({\n id: \"openrouter-chat\",\n body: {\n schema: OpenRouterBody,\n from: (request) =>\n OpenAIChat.fromRequest(request, { cacheControl: cacheControl() }).pipe(\n Effect.map((body) => {\n const sourceAssistants = request.messages.filter((message) => message.role === \"assistant\")\n let assistantIndex = 0\n const messages = body.messages.map((message) => {\n if (message.role !== \"assistant\") return message\n const source = sourceAssistants[assistantIndex++]\n const reasoning = source?.content\n .filter((part) => part.type === \"reasoning\")\n .map((part) => part.text)\n .join(\"\")\n const reasoningDetails = Array.isArray(message.reasoning_details) ? message.reasoning_details : undefined\n return {\n ...message,\n reasoning_content: undefined,\n reasoning_text: undefined,\n reasoning: reasoning && reasoningDetails && reasoningDetails.length > 0 ? reasoning : undefined,\n reasoning_details: reasoningDetails,\n }\n })\n return {\n ...body,\n messages,\n ...bodyOptions(request.providerOptions),\n } as OpenRouterBody\n }),\n ),\n },\n stream: OpenAIChat.protocol.stream,\n})\n\nconst cacheControl = () => {\n const breakpoints = newBreakpoints(4)\n return (cache: CacheHint | undefined) => {\n if (cache === undefined || breakpoints.remaining === 0) return undefined\n breakpoints.remaining -= 1\n return {\n type: \"ephemeral\" as const,\n ...(ttlBucket(cache.ttlSeconds) === \"1h\" ? { ttl: \"1h\" } : {}),\n }\n }\n}\n\nconst bodyOptions = (input: unknown) => {\n const openrouter = isRecord(input) ? input : {}\n const { usage, models, provider, plugins, web_search_options, debug, user, reasoning, promptCacheKey, ...options } =\n openrouter\n return {\n ...options,\n ...(usage === undefined || usage === true\n ? { usage: { include: true } }\n : usage === false\n ? { usage: { include: false } }\n : isRecord(usage)\n ? { usage }\n : {}),\n ...(Array.isArray(models) ? { models } : {}),\n ...(isRecord(provider) ? { provider } : {}),\n ...(Array.isArray(plugins) ? { plugins } : {}),\n ...(isRecord(web_search_options) ? { web_search_options } : {}),\n ...(isRecord(debug) ? { debug } : {}),\n ...(typeof user === \"string\" ? { user } : {}),\n ...(isRecord(reasoning) ? { reasoning } : {}),\n }\n}\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: profile.provider,\n protocol,\n endpoint: Endpoint.path(\"/chat/completions\", { baseURL: profile.baseURL }),\n framing: Framing.sse,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return route.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? profile.baseURL },\n auth: AuthOptions.bearer(input, \"OPENROUTER_API_KEY\"),\n })\n}\n\nexport const configure = (input: LanguageModelOptions = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenRouterProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, OpenRouterProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8E034A08BE99C54E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "7CFFCC39442263AB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/image-input.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding } from \"effect\"\nimport type { ImageInput } from \"../../image.js\"\nimport { InvalidRequestReason, AIError } from \"../../schema/index.js\"\n\nconst invalid = (module: string, message: string) =>\n new AIError({\n module,\n method: \"generate\",\n reason: new InvalidRequestReason({ message }),\n })\n\nexport const dataUrl = (input: Extract<ImageInput, { readonly type: \"bytes\" }>) =>\n `data:${input.mediaType};base64,${Encoding.encodeBase64(input.data)}`\n\nexport const decodeDataUrl = (\n url: string,\n module: string,\n): Effect.Effect<{ readonly mediaType: string; readonly data: Uint8Array } | undefined, AIError> => {\n if (!url.startsWith(\"data:\")) return Effect.undefined\n const match = /^data:([^;,]+);base64,(.*)$/s.exec(url)\n if (!match) return Effect.fail(invalid(module, \"Image data URLs must contain a MIME type and base64 data\"))\n return Effect.fromResult(Encoding.decodeBase64(match[2])).pipe(\n Effect.mapError(() => invalid(module, \"Image data URL contains invalid base64 data\")),\n Effect.map((data) => ({ mediaType: match[1], data })),\n )\n}\n\nexport const invalidImageInput = invalid\n\nexport const ImageInputs = {\n dataUrl,\n decodeDataUrl,\n invalid: invalidImageInput,\n} as const\n" | ||
| ], | ||
| "mappings": ";wHAIA,IAAM,EAAU,CAAC,EAAgB,IAC/B,IAAI,EAAQ,CACV,SACA,OAAQ,WACR,OAAQ,IAAI,EAAqB,CAAE,SAAQ,CAAC,CAC9C,CAAC,EAEU,EAAU,CAAC,IACtB,QAAQ,EAAM,oBAAoB,EAAS,aAAa,EAAM,IAAI,IAEvD,EAAgB,CAC3B,EACA,IACkG,CAClG,GAAI,CAAC,EAAI,WAAW,OAAO,EAAG,OAAO,EAAO,UAC5C,IAAM,EAAQ,+BAA+B,KAAK,CAAG,EACrD,GAAI,CAAC,EAAO,OAAO,EAAO,KAAK,EAAQ,EAAQ,0DAA0D,CAAC,EAC1G,OAAO,EAAO,WAAW,EAAS,aAAa,EAAM,EAAE,CAAC,EAAE,KACxD,EAAO,SAAS,IAAM,EAAQ,EAAQ,6CAA6C,CAAC,EACpF,EAAO,IAAI,CAAC,KAAU,CAAE,UAAW,EAAM,GAAI,MAAK,EAAE,CACtD,GAGW,EAAoB,EAEpB,EAAc,CACzB,UACA,gBACA,QAAS,CACX", | ||
| "debugId": "16D174180A2012DE64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/add.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\"\nimport { Effect } from \"effect\"\nimport { applyEdits, modify, parse, type ParseError } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Npm } from \"@opencode-ai/util/npm\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { resolveConfigPath } from \"../mcp/add\"\nimport { Config } from \"../../../config\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.add,\n Effect.fn(\"cli.plugin.add\")(function* (input) {\n if (!(yield* Effect.promise(() => Npm.isRegistryPackage(input.package))))\n return yield* Effect.fail(\n new Error(\"Plugin target must be an npm registry package name, version, tag, or semver range\"),\n )\n const npm = yield* Npm.Service\n const installed = yield* npm.add(input.package, { subpaths: [\"server\", \"\"] })\n const tui = yield* npm.resolve(input.package, { subpaths: [\"tui\"] })\n const target = configurationTarget(installed.entrypoint, tui.entrypoint)\n if (!target)\n return yield* Effect.fail(new Error(`Plugin package has no server or TUI entrypoint: ${input.package}`))\n\n if (target === \"server\") {\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(global.config))\n const changed = yield* Effect.promise(() => writePluginConfig(configPath, input.package))\n process.stdout.write(\n changed\n ? `Plugin \"${input.package}\" installed and added to ${configPath}${EOL}`\n : `Plugin \"${input.package}\" is already configured in ${configPath}${EOL}`,\n )\n return\n }\n\n const config = yield* Config.Service\n yield* config.update((draft) => {\n if (configured(draft.plugins, input.package)) return\n draft.plugins = [...(draft.plugins ?? []), input.package]\n })\n process.stdout.write(`TUI plugin \"${input.package}\" installed and added to ${config.path}${EOL}`)\n }),\n)\n\nexport function configurationTarget(server?: string, tui?: string) {\n if (server) return \"server\" as const\n if (tui) return \"tui\" as const\n}\n\nexport async function writePluginConfig(configPath: string, spec: string) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return \"{}\"\n throw error\n })\n const errors: ParseError[] = []\n const config: unknown = parse(text, errors, { allowTrailingComma: true })\n if (errors.length || typeof config !== \"object\" || config === null || Array.isArray(config))\n throw new Error(`Invalid global configuration: ${configPath}`)\n const plugins = \"plugins\" in config ? config.plugins : undefined\n if (plugins !== undefined && !Array.isArray(plugins)) throw new Error(`Invalid plugins configuration: ${configPath}`)\n if (configured(plugins, spec)) return false\n\n const updated = applyEdits(\n text,\n modify(text, [\"plugins\"], [...(plugins ?? []), spec], { formattingOptions: { tabSize: 2, insertSpaces: true } }),\n )\n await mkdir(path.dirname(configPath), { recursive: true })\n const temporary = configPath + \".tmp\"\n await writeFile(temporary, updated.endsWith(\"\\n\") ? updated : updated + \"\\n\", { mode: 0o600 })\n await rename(temporary, configPath)\n return true\n}\n\nfunction configured(plugins: readonly unknown[] | undefined, spec: string) {\n return plugins?.some(\n (entry) =>\n entry === spec || (typeof entry === \"object\" && entry !== null && \"package\" in entry && entry.package === spec),\n )\n}\n" | ||
| ], | ||
| "mappings": ";8tBAAA,cAAS,WACT,oBACA,gBAAS,cAAO,YAAU,eAAQ,oBAUlC,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,IAClC,EAAO,GAAG,gBAAgB,EAAE,SAAU,CAAC,EAAO,CAC5C,GAAI,EAAE,MAAO,EAAO,QAAQ,IAAM,EAAI,kBAAkB,EAAM,OAAO,CAAC,GACpE,OAAO,MAAO,EAAO,KACf,MAAM,mFAAmF,CAC/F,EACF,IAAM,EAAM,MAAO,EAAI,QACjB,EAAY,MAAO,EAAI,IAAI,EAAM,QAAS,CAAE,SAAU,CAAC,SAAU,EAAE,CAAE,CAAC,EACtE,EAAM,MAAO,EAAI,QAAQ,EAAM,QAAS,CAAE,SAAU,CAAC,KAAK,CAAE,CAAC,EAC7D,EAAS,EAAoB,EAAU,WAAY,EAAI,UAAU,EACvE,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,mDAAmD,EAAM,SAAS,CAAC,EAEzG,GAAI,IAAW,SAAU,CACvB,IAAM,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAO,MAAM,CAAC,EACzE,EAAU,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAY,EAAM,OAAO,CAAC,EACxF,QAAQ,OAAO,MACb,EACI,WAAW,EAAM,mCAAmC,IAAa,IACjE,WAAW,EAAM,qCAAqC,IAAa,GACzE,EACA,OAGF,IAAM,EAAS,MAAO,EAAO,QAC7B,MAAO,EAAO,OAAO,CAAC,IAAU,CAC9B,GAAI,EAAW,EAAM,QAAS,EAAM,OAAO,EAAG,OAC9C,EAAM,QAAU,CAAC,GAAI,EAAM,SAAW,CAAC,EAAI,EAAM,OAAO,EACzD,EACD,QAAQ,OAAO,MAAM,eAAe,EAAM,mCAAmC,EAAO,OAAO,GAAK,EACjG,CACH,EAEO,SAAS,CAAmB,CAAC,EAAiB,EAAc,CACjE,GAAI,EAAQ,MAAO,SACnB,GAAI,EAAK,MAAO,MAGlB,eAAsB,CAAiB,CAAC,EAAoB,EAAc,CACxE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,MAAO,KACtG,MAAM,EACP,EACK,EAAuB,CAAC,EACxB,EAAkB,EAAM,EAAM,EAAQ,CAAE,mBAAoB,EAAK,CAAC,EACxE,GAAI,EAAO,QAAU,OAAO,IAAW,UAAY,IAAW,MAAQ,MAAM,QAAQ,CAAM,EACxF,MAAU,MAAM,iCAAiC,GAAY,EAC/D,IAAM,EAAU,YAAa,EAAS,EAAO,QAAU,OACvD,GAAI,IAAY,QAAa,CAAC,MAAM,QAAQ,CAAO,EAAG,MAAU,MAAM,kCAAkC,GAAY,EACpH,GAAI,EAAW,EAAS,CAAI,EAAG,MAAO,GAEtC,IAAM,EAAU,EACd,EACA,EAAO,EAAM,CAAC,SAAS,EAAG,CAAC,GAAI,GAAW,CAAC,EAAI,CAAI,EAAG,CAAE,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CAAE,CAAC,CACjH,EACA,MAAM,EAAM,EAAK,QAAQ,CAAU,EAAG,CAAE,UAAW,EAAK,CAAC,EACzD,IAAM,EAAY,EAAa,OAG/B,OAFA,MAAM,EAAU,EAAW,EAAQ,SAAS;AAAA,CAAI,EAAI,EAAU,EAAU;AAAA,EAAM,CAAE,KAAM,GAAM,CAAC,EAC7F,MAAM,EAAO,EAAW,CAAU,EAC3B,GAGT,SAAS,CAAU,CAAC,EAAyC,EAAc,CACzE,OAAO,GAAS,KACd,CAAC,IACC,IAAU,GAAS,OAAO,IAAU,UAAY,IAAU,OAAQ,YAAa,IAAS,EAAM,UAAY,CAC9G", | ||
| "debugId": "54C5EB8813272B0564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/session.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ModelInfo, SessionMessageAssistant, SessionMessageInfo } from \"@opencode-ai/client\"\nimport { Locale } from \"./locale\"\n\ntype SessionNode = {\n id: string\n parentID?: string | null\n}\n\nexport function sessionFamily<T extends SessionNode>(sessions: readonly T[], sessionID: string) {\n const byID = new Map(sessions.map((session) => [session.id, session]))\n const current = byID.get(sessionID)\n if (!current) return []\n\n const children = new Map<string, T[]>()\n sessions.forEach((session) => {\n if (!session.parentID) return\n const group = children.get(session.parentID)\n if (group) group.push(session)\n else children.set(session.parentID, [session])\n })\n\n function root(session: T): T {\n const parent = session.parentID ? byID.get(session.parentID) : undefined\n return parent ? root(parent) : session\n }\n\n function walk(parentID: string, ancestors: boolean[]): Array<{ session: T; prefix: string }> {\n const group = children.get(parentID) ?? []\n return group.flatMap((session, index) => {\n const last = index === group.length - 1\n const prefix =\n ancestors.length === 0\n ? \"\"\n : ancestors\n .slice(1)\n .map((ancestor) => (ancestor ? \" \" : \"│ \"))\n .join(\"\") + (last ? \"└─ \" : \"├─ \")\n return [{ session, prefix }, ...walk(session.id, [...ancestors, last])]\n })\n }\n\n return walk(root(current).id, [])\n}\n\nexport function lastAssistantWithUsage(messages: ReadonlyArray<SessionMessageInfo>, boundary?: string) {\n const boundaryIndex = boundary ? messages.findIndex((message) => message.id === boundary) : -1\n if (boundary && boundaryIndex === -1) return undefined\n const end = boundaryIndex === -1 ? messages.length : boundaryIndex\n const compactionIndex = messages.findLastIndex(\n (message, index) => message.type === \"compaction\" && message.status === \"completed\" && index < end,\n )\n return messages.findLast(\n (message, index): message is SessionMessageAssistant & { tokens: NonNullable<SessionMessageAssistant[\"tokens\"]> } =>\n message.type === \"assistant\" && message.tokens !== undefined && index > compactionIndex && index < end,\n )\n}\n\nexport function contextUsage(\n messages: ReadonlyArray<SessionMessageInfo>,\n models: ReadonlyArray<ModelInfo> | undefined,\n boundary?: string,\n) {\n const last = lastAssistantWithUsage(messages, boundary)\n if (!last) return\n const tokens =\n last.tokens.input + last.tokens.output + last.tokens.reasoning + last.tokens.cache.read + last.tokens.cache.write\n if (tokens <= 0) return\n const model = models?.find((model) => model.providerID === last.model.providerID && model.id === last.model.id)\n return {\n tokens,\n percent: model?.limit.context ? Math.round((tokens / model.limit.context) * 100) : undefined,\n }\n}\n\nexport function formatContextUsage(tokens: number, percent?: number) {\n const value = Locale.number(tokens)\n return percent === undefined ? value : `${value} (${percent}%)`\n}\n" | ||
| ], | ||
| "mappings": ";oDAQO,SAAS,CAAoC,CAAC,EAAwB,EAAmB,CAC9F,IAAM,EAAO,IAAI,IAAI,EAAS,IAAI,CAAC,IAAY,CAAC,EAAQ,GAAI,CAAO,CAAC,CAAC,EAC/D,EAAU,EAAK,IAAI,CAAS,EAClC,GAAI,CAAC,EAAS,MAAO,CAAC,EAEtB,IAAM,EAAW,IAAI,IACrB,EAAS,QAAQ,CAAC,IAAY,CAC5B,GAAI,CAAC,EAAQ,SAAU,OACvB,IAAM,EAAQ,EAAS,IAAI,EAAQ,QAAQ,EAC3C,GAAI,EAAO,EAAM,KAAK,CAAO,EACxB,OAAS,IAAI,EAAQ,SAAU,CAAC,CAAO,CAAC,EAC9C,EAED,SAAS,CAAI,CAAC,EAAe,CAC3B,IAAM,EAAS,EAAQ,SAAW,EAAK,IAAI,EAAQ,QAAQ,EAAI,OAC/D,OAAO,EAAS,EAAK,CAAM,EAAI,EAGjC,SAAS,CAAI,CAAC,EAAkB,EAA6D,CAC3F,IAAM,EAAQ,EAAS,IAAI,CAAQ,GAAK,CAAC,EACzC,OAAO,EAAM,QAAQ,CAAC,EAAS,IAAU,CACvC,IAAM,EAAO,IAAU,EAAM,OAAS,EAChC,EACJ,EAAU,SAAW,EACjB,GACA,EACG,MAAM,CAAC,EACP,IAAI,CAAC,IAAc,EAAW,MAAQ,UAAM,EAC5C,KAAK,EAAE,GAAK,EAAO,gBAAQ,iBACpC,MAAO,CAAC,CAAE,UAAS,QAAO,EAAG,GAAG,EAAK,EAAQ,GAAI,CAAC,GAAG,EAAW,CAAI,CAAC,CAAC,EACvE,EAGH,OAAO,EAAK,EAAK,CAAO,EAAE,GAAI,CAAC,CAAC,EAG3B,SAAS,CAAsB,CAAC,EAA6C,EAAmB,CACrG,IAAM,EAAgB,EAAW,EAAS,UAAU,CAAC,IAAY,EAAQ,KAAO,CAAQ,EAAI,GAC5F,GAAI,GAAY,IAAkB,GAAI,OACtC,IAAM,EAAM,IAAkB,GAAK,EAAS,OAAS,EAC/C,EAAkB,EAAS,cAC/B,CAAC,EAAS,IAAU,EAAQ,OAAS,cAAgB,EAAQ,SAAW,aAAe,EAAQ,CACjG,EACA,OAAO,EAAS,SACd,CAAC,EAAS,IACR,EAAQ,OAAS,aAAe,EAAQ,SAAW,QAAa,EAAQ,GAAmB,EAAQ,CACvG,EAGK,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAO,EAAuB,EAAU,CAAQ,EACtD,GAAI,CAAC,EAAM,OACX,IAAM,EACJ,EAAK,OAAO,MAAQ,EAAK,OAAO,OAAS,EAAK,OAAO,UAAY,EAAK,OAAO,MAAM,KAAO,EAAK,OAAO,MAAM,MAC9G,GAAI,GAAU,EAAG,OACjB,IAAM,EAAQ,GAAQ,KAAK,CAAC,IAAU,EAAM,aAAe,EAAK,MAAM,YAAc,EAAM,KAAO,EAAK,MAAM,EAAE,EAC9G,MAAO,CACL,SACA,QAAS,GAAO,MAAM,QAAU,KAAK,MAAO,EAAS,EAAM,MAAM,QAAW,GAAG,EAAI,MACrF,EAGK,SAAS,CAAkB,CAAC,EAAgB,EAAkB,CACnE,IAAM,EAAQ,EAAO,OAAO,CAAM,EAClC,OAAO,IAAY,OAAY,EAAQ,GAAG,MAAU", | ||
| "debugId": "20AE8A896D64DA6A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/session.shared.ts", "../tui/src/mini/variant.shared.ts", "../tui/src/mini/theme.ts", "../tui/src/mini/mono.ts"], | ||
| "sourcesContent": [ | ||
| "import type { SessionMessageInfo, SessionMessageUser } from \"@opencode-ai/client/promise\"\nimport { promptCopy, promptSame } from \"./prompt.shared\"\nimport type { RunInput, RunPrompt } from \"./types\"\n\nconst LIMIT = 200\n\nexport type SessionMessages = SessionMessageInfo[]\n\ntype Turn = {\n prompt: RunPrompt\n provider: string | undefined\n model: string | undefined\n variant: string | undefined\n}\n\nexport type RunSession = {\n first: boolean\n turns: Turn[]\n model?: NonNullable<RunInput[\"model\"]>\n variant?: string\n}\n\nfunction messagePrompt(message: SessionMessageUser): RunPrompt {\n return {\n text: message.text,\n parts: [\n ...(message.files ?? []).map((file) => ({\n type: \"file\" as const,\n url: file.source.type === \"uri\" ? file.source.uri : `data:${file.mime};base64,${file.data}`,\n mime: file.mime,\n filename: file.name,\n source: file.mention\n ? {\n type: \"file\",\n path: file.name ?? (file.source.type === \"uri\" ? file.source.uri : \"inline attachment\"),\n text: { start: file.mention.start, end: file.mention.end, value: file.mention.text },\n }\n : undefined,\n })),\n ...(message.agents ?? []).map((agent) => ({\n type: \"agent\" as const,\n name: agent.name,\n source: agent.mention\n ? { start: agent.mention.start, end: agent.mention.end, value: agent.mention.text }\n : undefined,\n })),\n ],\n }\n}\n\nexport function createSession(messages: SessionMessages): RunSession {\n return {\n first: messages.length === 0,\n turns: messages.flatMap((message) =>\n message.type === \"user\"\n ? [{ prompt: messagePrompt(message), provider: undefined, model: undefined, variant: undefined }]\n : [],\n ),\n }\n}\n\nexport async function resolveCurrentSession(\n sdk: RunInput[\"sdk\"],\n sessionID: string,\n signal?: AbortSignal,\n limit = LIMIT,\n): Promise<RunSession> {\n const [response, session] = await Promise.all([\n sdk.message.list({ sessionID, limit, order: \"desc\" }, ...requestOptions(signal)),\n sdk.session.get({ sessionID }, ...requestOptions(signal)),\n ])\n const current = createSession(response.data.toReversed())\n return {\n ...current,\n turns: current.turns.map((turn) => ({\n ...turn,\n provider: session.model?.providerID,\n model: session.model?.id,\n variant: session.model?.variant,\n })),\n ...(session.model && {\n model: { providerID: session.model.providerID, modelID: session.model.id },\n variant: session.model.variant,\n }),\n }\n}\n\nfunction requestOptions(signal?: AbortSignal): [] | [{ signal: AbortSignal }] {\n return signal ? [{ signal }] : []\n}\n\nexport function sessionHistory(session: RunSession, limit = LIMIT): RunPrompt[] {\n return session.turns\n .map((turn) => turn.prompt)\n .filter((prompt) => prompt.text.trim())\n .filter((prompt, index, prompts) => index === 0 || !promptSame(prompts[index - 1], prompt))\n .map(promptCopy)\n .slice(-limit)\n}\n\nexport function sessionVariant(session: RunSession, model: RunInput[\"model\"]): string | undefined {\n if (!model) return\n if (session.model?.providerID === model.providerID && session.model.modelID === model.modelID) return session.variant\n\n return session.turns.findLast((turn) => turn.provider === model.providerID && turn.model === model.modelID)?.variant\n}\n", | ||
| "// Model variant resolution and persistence.\n//\n// Variants are provider-specific reasoning effort levels (e.g., \"high\", \"max\").\n// Resolution priority: CLI --variant flag > valid session history > saved preference.\n//\n// The saved variant persists across sessions in ~/.local/state/opencode/model.json\n// so your last-used variant sticks. Cycling (ctrl+t) updates both the active\n// variant and the persisted file.\nimport { createSession, sessionVariant, type RunSession, type SessionMessages } from \"./session.shared\"\nimport type { RunInput, RunProvider } from \"./types\"\nimport { cycleModelVariant, normalizeModelVariant } from \"../model-preference\"\n\nexport function modelInfo(providers: RunProvider[] | undefined, model: NonNullable<RunInput[\"model\"]>) {\n const provider = providers?.find((item) => item.id === model.providerID)\n return {\n provider: provider?.name ?? model.providerID,\n model: provider?.models[model.modelID]?.name ?? model.modelID,\n }\n}\n\nexport function formatModelLabel(\n model: NonNullable<RunInput[\"model\"]>,\n variant: string | undefined,\n providers?: RunProvider[],\n): string {\n const names = modelInfo(providers, model)\n const label = variant ? ` · ${variant}` : \"\"\n return `${names.model} · ${names.provider}${label}`\n}\n\nexport function cycleVariant(current: string | undefined, variants: string[]): string | undefined {\n return cycleModelVariant(current, variants)\n}\n\nexport function pickVariant(model: RunInput[\"model\"], input: RunSession | SessionMessages): string | undefined {\n return sessionVariant(Array.isArray(input) ? createSession(input) : input, model)\n}\n\nfunction fitVariant(value: string | undefined, variants: string[]): string | undefined {\n const normalized = normalizeModelVariant(value)\n return normalized && (variants.length === 0 || variants.includes(normalized)) ? normalized : undefined\n}\n\n// Picks the active variant. CLI flag wins, then valid session history, then the\n// saved preference. Saved and session values are dropped when the provider no\n// longer offers them.\nexport function resolveVariant(\n input: string | undefined,\n session: string | undefined,\n saved: string | undefined,\n variants: string[],\n): string | undefined {\n if (input !== undefined) {\n return normalizeModelVariant(input)\n }\n\n return fitVariant(session, variants) ?? fitVariant(saved, variants)\n}\n", | ||
| "// Theme resolution for direct interactive mode.\n//\n// Derives scrollback and footer colors from the terminal's actual palette.\n// resolveRunTheme() queries the renderer for the terminal's palette,\n// detects dark/light mode, builds a small system theme locally, and maps it to\n// the run footer + scrollback color model. Falls back to a hardcoded dark-mode\n// palette if detection fails.\nimport { RGBA, SyntaxStyle, type CliRenderer, type ColorInput, type TerminalColors } from \"@opentui/core\"\nimport { ansiToRgba } from \"../theme/color\"\nimport { resolveThemeColors } from \"../theme/resolve\"\nimport { terminalMode } from \"../theme/system\"\nimport type { Theme, ThemeV1Json } from \"../theme/v1\"\nimport type { EntryKind, RunTuiConfig } from \"./types\"\n\ntype ThemeCurrent = Omit<Theme, \"_hasSelectedListItemText\">\n\ntype Tone = {\n body: ColorInput\n start?: ColorInput\n}\n\nexport type RunEntryTheme = Record<EntryKind, Tone>\n\nexport type RunSplashTheme = {\n left: ColorInput\n right: ColorInput\n leftShadow: ColorInput\n}\n\nexport type RunFooterTheme = {\n highlight: ColorInput\n selected: ColorInput\n selectedText: ColorInput\n warning: ColorInput\n error: ColorInput\n muted: ColorInput\n text: ColorInput\n status: ColorInput\n statusAccent: ColorInput\n shade: ColorInput\n surface: ColorInput\n pane: ColorInput\n border: ColorInput\n line: ColorInput\n}\n\nexport type RunBlockTheme = {\n text: ColorInput\n muted: ColorInput\n syntax?: SyntaxStyle\n diffRemoved: ColorInput\n diffAddedBg: ColorInput\n diffRemovedBg: ColorInput\n diffContextBg: ColorInput\n diffHighlightAdded: ColorInput\n diffHighlightRemoved: ColorInput\n diffLineNumber: ColorInput\n diffAddedLineNumberBg: ColorInput\n diffRemovedLineNumberBg: ColorInput\n}\n\nexport type RunTheme = {\n background: ColorInput\n footer: RunFooterTheme\n entry: RunEntryTheme\n splash: RunSplashTheme\n block: RunBlockTheme\n}\n\ntype ThemeColor = Exclude<keyof ThemeCurrent, \"thinkingOpacity\">\n\ntype SharedSyntaxTheme = ThemeCurrent & {\n _hasSelectedListItemText: boolean\n}\n\nexport const transparent = RGBA.fromValues(0, 0, 0, 0)\n\nfunction alpha(color: RGBA, value: number): RGBA {\n return RGBA.fromValues(color.r, color.g, color.b, Math.max(0, Math.min(1, value)))\n}\n\nfunction rgba(hex: string, value?: number): RGBA {\n const color = RGBA.fromHex(hex)\n return value === undefined ? color : alpha(color, value)\n}\n\nfunction colorMode(bg: RGBA): \"dark\" | \"light\" {\n return luminance(bg) > 0.5 ? \"light\" : \"dark\"\n}\n\nfunction luminance(color: RGBA): number {\n return 0.299 * color.r + 0.587 * color.g + 0.114 * color.b\n}\n\nfunction fade(color: RGBA, base: RGBA, fallback: number, scale: number, limit: number): RGBA {\n if (color.a === 0) {\n return RGBA.fromValues(color.r, color.g, color.b, Math.max(0, Math.min(1, fallback)))\n }\n\n const target = Math.min(limit, color.a * scale)\n const mix = Math.min(1, target / color.a)\n\n return RGBA.fromValues(\n base.r + (color.r - base.r) * mix,\n base.g + (color.g - base.g) * mix,\n base.b + (color.b - base.b) * mix,\n color.a,\n )\n}\n\nfunction tint(base: RGBA, overlay: RGBA, value: number): RGBA {\n return RGBA.fromInts(\n Math.round((base.r + (overlay.r - base.r) * value) * 255),\n Math.round((base.g + (overlay.g - base.g) * value) * 255),\n Math.round((base.b + (overlay.b - base.b) * value) * 255),\n )\n}\n\nfunction chroma(color: RGBA) {\n return Math.max(color.r, color.g, color.b) - Math.min(color.r, color.g, color.b)\n}\n\nfunction indexedPalette(colors: TerminalColors, size: number = Math.max(colors.palette.length, 16)): RGBA[] {\n return Array.from({ length: size }, (_, index) => {\n const value = colors.palette[index]\n return RGBA.fromIndex(index, value ? RGBA.fromHex(value) : ansiToRgba(index))\n })\n}\n\nfunction srgbToLinear(value: number): number {\n if (value <= 0.04045) {\n return value / 12.92\n }\n\n return ((value + 0.055) / 1.055) ** 2.4\n}\n\nfunction oklab(color: RGBA) {\n const r = srgbToLinear(color.r)\n const g = srgbToLinear(color.g)\n const b = srgbToLinear(color.b)\n\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b)\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b)\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b)\n\n return {\n l: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,\n }\n}\n\nfunction nearestIndexed(indexed: RGBA[], rgba: RGBA): RGBA {\n const target = oklab(rgba)\n const hit = indexed.reduce(\n (best, item) => {\n const sample = oklab(item)\n const dl = sample.l - target.l\n const da = sample.a - target.a\n const db = sample.b - target.b\n const dist = dl * dl * 2 + da * da + db * db\n if (dist >= best.dist) return best\n return {\n dist,\n item,\n }\n },\n {\n dist: Number.POSITIVE_INFINITY,\n item: indexed[0]!,\n },\n )\n\n return RGBA.clone(hit.item)\n}\n\nfunction paletteColor(colors: TerminalColors, index: number): RGBA {\n const value = colors.palette[index]\n return value ? RGBA.fromHex(value) : ansiToRgba(index)\n}\n\nfunction splashShadow(indexed: RGBA[], base: RGBA, overlay: RGBA, value: number): RGBA {\n const mixed = tint(base, overlay, value)\n return nearestIndexed(indexed, mixed)\n}\n\nexport function resolveTheme(theme: ThemeV1Json, pick: \"dark\" | \"light\"): ThemeCurrent {\n const resolved = resolveThemeColors(theme, pick, (code) => RGBA.fromIndex(code, ansiToRgba(code)))\n return {\n ...resolved.theme,\n thinkingOpacity: resolved.thinkingOpacity,\n }\n}\n\nfunction generateGrayScale(bg: RGBA, isDark: boolean, map: (rgba: RGBA) => RGBA): Record<number, RGBA> {\n const r = bg.r * 255\n const g = bg.g * 255\n const b = bg.b * 255\n const lum = 0.299 * r + 0.587 * g + 0.114 * b\n const cast = 0.25 * (1 - chroma(bg)) ** 2\n\n const gray = (level: number) => {\n const factor = level / 12\n\n if (isDark && lum < 10) {\n const value = Math.floor(factor * 0.4 * 255)\n return map(RGBA.fromInts(value, value, value))\n }\n\n if (!isDark && lum > 245) {\n const value = Math.floor(255 - factor * 0.4 * 255)\n return map(RGBA.fromInts(value, value, value))\n }\n\n const value = isDark ? lum + (255 - lum) * factor * 0.4 : lum * (1 - factor * 0.4)\n const tone = RGBA.fromInts(Math.floor(value), Math.floor(value), Math.floor(value))\n if (cast === 0) return map(tone)\n\n const ratio = lum === 0 ? 0 : value / lum\n return map(\n tint(\n tone,\n RGBA.fromInts(\n Math.floor(Math.max(0, Math.min(r * ratio, 255))),\n Math.floor(Math.max(0, Math.min(g * ratio, 255))),\n Math.floor(Math.max(0, Math.min(b * ratio, 255))),\n ),\n cast,\n ),\n )\n }\n\n return Object.fromEntries(Array.from({ length: 12 }, (_, index) => [index + 1, gray(index + 1)]))\n}\n\nfunction generateMutedTextColor(bg: RGBA, isDark: boolean, map: (rgba: RGBA) => RGBA): RGBA {\n const lum = 0.299 * bg.r * 255 + 0.587 * bg.g * 255 + 0.114 * bg.b * 255\n const gray = isDark\n ? lum < 10\n ? 180\n : Math.min(Math.floor(160 + lum * 0.3), 200)\n : lum > 245\n ? 75\n : Math.max(Math.floor(100 - (255 - lum) * 0.2), 60)\n\n return map(RGBA.fromInts(gray, gray, gray))\n}\n\nexport function generateSystem(colors: TerminalColors, pick: \"dark\" | \"light\"): ThemeV1Json {\n const bg_snapshot = RGBA.fromHex(colors.defaultBackground ?? colors.palette[0]!)\n const fg_snapshot = RGBA.fromHex(colors.defaultForeground ?? colors.palette[7]!)\n const bg = RGBA.defaultBackground(bg_snapshot)\n const fg = RGBA.defaultForeground(fg_snapshot)\n const isDark = pick === \"dark\"\n\n const color = (index: number) => paletteColor(colors, index)\n\n const grays = generateGrayScale(bg_snapshot, isDark, (rgba) => rgba)\n const textMuted = generateMutedTextColor(bg_snapshot, isDark, (rgba) => rgba)\n\n const ansi = {\n red: color(1),\n green: color(2),\n yellow: color(3),\n blue: color(4),\n magenta: color(5),\n cyan: color(6),\n red_bright: color(9),\n green_bright: color(10),\n }\n\n const diff_alpha = isDark ? 0.22 : 0.14\n const diff_context_bg = grays[2]\n const primary = ansi.cyan\n const secondary = ansi.magenta\n\n return {\n theme: {\n primary,\n secondary,\n accent: primary,\n error: ansi.red,\n warning: ansi.yellow,\n success: ansi.green,\n info: ansi.cyan,\n text: fg,\n textMuted,\n selectedListItemText: bg,\n background: alpha(bg, 0),\n backgroundPanel: grays[2],\n backgroundElement: grays[3],\n backgroundMenu: grays[3],\n borderSubtle: grays[6],\n border: grays[7],\n borderActive: grays[8],\n diffAdded: ansi.green,\n diffRemoved: ansi.red,\n diffContext: grays[7],\n diffHunkHeader: grays[7],\n diffHighlightAdded: ansi.green_bright,\n diffHighlightRemoved: ansi.red_bright,\n diffAddedBg: tint(bg_snapshot, ansi.green, diff_alpha),\n diffRemovedBg: tint(bg_snapshot, ansi.red, diff_alpha),\n diffContextBg: diff_context_bg,\n diffLineNumber: textMuted,\n diffAddedLineNumberBg: tint(diff_context_bg, ansi.green, diff_alpha),\n diffRemovedLineNumberBg: tint(diff_context_bg, ansi.red, diff_alpha),\n markdownText: fg,\n markdownHeading: fg,\n markdownLink: ansi.blue,\n markdownLinkText: ansi.cyan,\n markdownCode: ansi.green,\n markdownBlockQuote: ansi.yellow,\n markdownEmph: ansi.yellow,\n markdownStrong: fg,\n markdownHorizontalRule: grays[7],\n markdownListItem: ansi.blue,\n markdownListEnumeration: ansi.cyan,\n markdownImage: ansi.blue,\n markdownImageText: ansi.cyan,\n markdownCodeBlock: fg,\n syntaxComment: textMuted,\n syntaxKeyword: ansi.magenta,\n syntaxFunction: ansi.blue,\n syntaxVariable: fg,\n syntaxString: ansi.green,\n syntaxNumber: ansi.yellow,\n syntaxType: ansi.cyan,\n syntaxOperator: ansi.cyan,\n syntaxPunctuation: fg,\n },\n }\n}\n\nfunction quantizeColor(indexed: RGBA[], rgba: RGBA): RGBA {\n if (rgba.a === 0 || rgba.intent === \"default\" || rgba.intent === \"indexed\") {\n return RGBA.clone(rgba)\n }\n\n return nearestIndexed(indexed, rgba)\n}\n\nfunction quantizeTheme(theme: ThemeCurrent, indexed: RGBA[]): ThemeCurrent {\n const resolved = Object.fromEntries(\n Object.entries(theme)\n .filter(([key]) => key !== \"thinkingOpacity\")\n .map(([key, value]) => [key, quantizeColor(indexed, value as RGBA)]),\n ) as Partial<Record<ThemeColor, RGBA>>\n\n return {\n ...(resolved as Record<ThemeColor, RGBA>),\n thinkingOpacity: theme.thinkingOpacity,\n }\n}\n\nfunction splashTheme(theme: ThemeCurrent, indexed: RGBA[]): RunSplashTheme {\n const left = nearestIndexed(indexed, theme.textMuted)\n const right = nearestIndexed(indexed, theme.text)\n return {\n left,\n right,\n leftShadow: splashShadow(indexed, theme.background, left, 0.14),\n }\n}\n\nfunction map(\n footerTheme: ThemeCurrent,\n scrollbackTheme: ThemeCurrent,\n splash: RunSplashTheme,\n syntax?: SyntaxStyle,\n): RunTheme {\n const footerBackground = alpha(footerTheme.background, 1)\n const footerMode = colorMode(footerBackground)\n const shade = fade(footerTheme.backgroundMenu, footerTheme.background, 0.12, 0.56, 0.72)\n const surface = fade(footerTheme.backgroundMenu, footerTheme.background, 0.18, 0.76, 0.9)\n const line = fade(footerTheme.backgroundMenu, footerTheme.background, 0.24, 0.9, 0.98)\n const statusBase = tint(footerBackground, rgba(\"#000000\"), footerMode === \"dark\" ? 0.13 : 0.06)\n const statusAccentBase =\n footerMode === \"dark\" ? tint(footerBackground, rgba(\"#ffffff\"), 0.06) : tint(statusBase, rgba(\"#000000\"), 0.04)\n const collapsedStatus = footerMode === \"dark\" && luminance(statusBase) <= 0.04\n // Pure-black backgrounds need a slight lift or the row disappears into the terminal background.\n const status = collapsedStatus ? tint(statusBase, statusAccentBase, 0.7) : statusBase\n const statusAccent = collapsedStatus ? tint(status, rgba(\"#ffffff\"), 0.06) : statusAccentBase\n\n return {\n background: footerTheme.background,\n footer: {\n highlight: footerTheme.primary,\n selected: footerTheme.backgroundElement,\n selectedText: footerTheme.selectedListItemText,\n warning: footerTheme.warning,\n error: footerTheme.error,\n muted: footerTheme.textMuted,\n text: footerTheme.text,\n status,\n statusAccent,\n shade,\n surface,\n pane: footerTheme.backgroundMenu,\n border: footerTheme.border,\n line,\n },\n entry: {\n system: {\n body: scrollbackTheme.textMuted,\n },\n user: {\n body: scrollbackTheme.primary,\n },\n assistant: {\n body: scrollbackTheme.text,\n },\n reasoning: {\n body: scrollbackTheme.textMuted,\n },\n tool: {\n body: scrollbackTheme.text,\n start: scrollbackTheme.textMuted,\n },\n error: {\n body: scrollbackTheme.error,\n },\n },\n splash,\n block: {\n text: scrollbackTheme.text,\n muted: scrollbackTheme.textMuted,\n syntax,\n diffRemoved: scrollbackTheme.diffRemoved,\n diffAddedBg: transparent,\n diffRemovedBg: transparent,\n diffContextBg: transparent,\n diffHighlightAdded: scrollbackTheme.diffHighlightAdded,\n diffHighlightRemoved: scrollbackTheme.diffHighlightRemoved,\n diffLineNumber: scrollbackTheme.diffLineNumber,\n diffAddedLineNumberBg: scrollbackTheme.diffAddedLineNumberBg,\n diffRemovedLineNumberBg: scrollbackTheme.diffRemovedLineNumberBg,\n },\n }\n}\n\nconst seed = {\n highlight: RGBA.fromIndex(6, rgba(\"#38bdf8\")),\n muted: RGBA.fromIndex(8, rgba(\"#64748b\")),\n text: RGBA.defaultForeground(rgba(\"#f8fafc\")),\n panel: rgba(\"#0f172a\"),\n success: RGBA.fromIndex(2, rgba(\"#22c55e\")),\n warning: RGBA.fromIndex(3, rgba(\"#f59e0b\")),\n error: RGBA.fromIndex(1, rgba(\"#ef4444\")),\n}\n\nfunction tone(body: ColorInput, start?: ColorInput): Tone {\n return {\n body,\n start,\n }\n}\n\nconst fallbackSplashIndexed = Array.from({ length: 256 }, (_, index) => RGBA.fromIndex(index))\nconst fallbackSplashLeft = RGBA.fromIndex(67)\nconst fallbackSplashRight = RGBA.fromIndex(110)\n\nexport const RUN_THEME_FALLBACK: RunTheme = {\n background: RGBA.fromValues(0, 0, 0, 0),\n footer: {\n highlight: seed.highlight,\n selected: seed.text,\n selectedText: seed.panel,\n warning: seed.warning,\n error: seed.error,\n muted: seed.muted,\n text: seed.text,\n status: tint(seed.panel, rgba(\"#000000\"), 0.12),\n statusAccent: tint(seed.panel, rgba(\"#ffffff\"), 0.06),\n shade: alpha(seed.panel, 0.68),\n surface: alpha(seed.panel, 0.86),\n pane: seed.panel,\n border: seed.muted,\n line: alpha(seed.panel, 0.96),\n },\n entry: {\n system: tone(seed.muted),\n user: tone(seed.highlight),\n assistant: tone(seed.text),\n reasoning: tone(seed.muted),\n tool: tone(seed.text, seed.muted),\n error: tone(seed.error),\n },\n splash: {\n left: fallbackSplashLeft,\n right: fallbackSplashRight,\n leftShadow: splashShadow(fallbackSplashIndexed, RGBA.fromValues(0, 0, 0, 0), fallbackSplashLeft, 0.14),\n },\n block: {\n text: seed.text,\n muted: seed.muted,\n diffRemoved: seed.error,\n diffAddedBg: alpha(seed.success, 0.18),\n diffRemovedBg: alpha(seed.error, 0.18),\n diffContextBg: alpha(seed.panel, 0.72),\n diffHighlightAdded: seed.success,\n diffHighlightRemoved: seed.error,\n diffLineNumber: seed.muted,\n diffAddedLineNumberBg: alpha(seed.success, 0.12),\n diffRemovedLineNumberBg: alpha(seed.error, 0.12),\n },\n}\n\nfunction monoTheme(mode: \"dark\" | \"light\"): RunTheme {\n const foreground = RGBA.defaultForeground(mode === \"light\" ? \"#000000\" : \"#ffffff\")\n const background = RGBA.defaultBackground(mode === \"light\" ? \"#ffffff\" : \"#000000\")\n return {\n background,\n footer: {\n highlight: foreground,\n selected: background,\n selectedText: foreground,\n warning: foreground,\n error: foreground,\n muted: foreground,\n text: foreground,\n status: background,\n statusAccent: background,\n shade: background,\n surface: background,\n pane: background,\n border: foreground,\n line: background,\n },\n entry: {\n system: tone(foreground),\n user: tone(foreground),\n assistant: tone(foreground),\n reasoning: tone(foreground),\n tool: tone(foreground),\n error: tone(foreground),\n },\n splash: {\n left: foreground,\n right: foreground,\n leftShadow: background,\n },\n block: {\n text: foreground,\n muted: foreground,\n diffRemoved: foreground,\n diffAddedBg: background,\n diffRemovedBg: background,\n diffContextBg: background,\n diffHighlightAdded: foreground,\n diffHighlightRemoved: foreground,\n diffLineNumber: foreground,\n diffAddedLineNumberBg: background,\n diffRemovedLineNumberBg: background,\n },\n }\n}\n\nexport const RUN_THEME_MONO = monoTheme(\"dark\")\nconst RUN_THEME_MONO_LIGHT = monoTheme(\"light\")\n\nexport async function resolveRunTheme(\n renderer: CliRenderer,\n config?: RunTuiConfig[\"theme\"],\n mono = false,\n): Promise<RunTheme> {\n if (mono) {\n const mode =\n config?.mode === \"light\" || config?.mode === \"dark\"\n ? config.mode\n : (renderer.themeMode ?? (await renderer.waitForThemeMode(300)))\n return mode === \"light\" ? RUN_THEME_MONO_LIGHT : RUN_THEME_MONO\n }\n try {\n const colors = await renderer.getPalette({\n size: 256,\n })\n const bg = colors.defaultBackground ?? colors.palette[0]\n if (!bg) {\n return RUN_THEME_FALLBACK\n }\n\n // Palette-only terminal reloads can leave renderer.themeMode stale, but\n // ANSI slot zero is not the terminal background when OSC 11 is absent.\n const pick =\n config?.mode === \"dark\" || config?.mode === \"light\"\n ? config.mode\n : (terminalMode(colors) ?? renderer.themeMode ?? colorMode(RGBA.fromHex(bg)))\n const { generateSyntax } = await import(\"../theme\")\n const indexed = indexedPalette(colors, 256)\n const footerTheme = resolveTheme(generateSystem(colors, pick), pick)\n const scrollbackTheme = quantizeTheme(footerTheme, indexed)\n const syntaxTheme: SharedSyntaxTheme = {\n ...scrollbackTheme,\n _hasSelectedListItemText: true,\n }\n return map(footerTheme, scrollbackTheme, splashTheme(scrollbackTheme, indexed), generateSyntax(syntaxTheme))\n } catch {\n return RUN_THEME_FALLBACK\n }\n}\n", | ||
| "import {\n BoxRenderable,\n CodeRenderable,\n MarkdownRenderable,\n RGBA,\n Renderable,\n StyledText,\n TextRenderable,\n TextTableRenderable,\n isStyledText,\n stringToStyledText,\n type BorderCharacters,\n type CliRendererExternalOutputEvent,\n type TreeSitterClient,\n} from \"@opentui/core\"\n\nconst prefixes: Record<number, string> = {\n 0x2192: \"->\",\n 0x2190: \"<-\",\n 0x2731: \"*\",\n 0x2699: \"*\",\n 0x2716: \"!\",\n 0x2717: \"!\",\n 0x25c8: \"*\",\n 0x25c9: \"*\",\n 0x27f3: \"*\",\n}\n\nconst markdown: Record<number, string> = {\n ...prefixes,\n 0x00a0: \" \",\n 0x00b7: \"-\",\n 0x2010: \"-\",\n 0x2011: \"-\",\n 0x2012: \"-\",\n 0x2013: \"-\",\n 0x2014: \"--\",\n 0x2018: \"'\",\n 0x2019: \"'\",\n 0x201c: '\"',\n 0x201d: '\"',\n 0x2022: \"*\",\n 0x2026: \"...\",\n 0x2191: \"up\",\n 0x2193: \"down\",\n}\n\nconst asciiBorder: BorderCharacters = {\n topLeft: \"+\",\n topRight: \"+\",\n bottomLeft: \"+\",\n bottomRight: \"+\",\n horizontal: \"-\",\n vertical: \"|\",\n topT: \"+\",\n bottomT: \"+\",\n leftT: \"+\",\n rightT: \"+\",\n cross: \"+\",\n}\n\nconst hooked = new WeakSet<Renderable>()\n\nexport const monoMarkdownTableOptions = {\n style: \"columns\" as const,\n widthMode: \"content\" as const,\n borders: false,\n}\n\nexport function monoMarkdownRenderable(renderable: MarkdownRenderable): void {\n monoRenderable(renderable)\n}\n\nfunction monoRenderable(renderable: Renderable): void {\n if (hooked.has(renderable)) return\n hooked.add(renderable)\n // Markdown reconciles nested lists and tables without calling renderNode.\n // Hook the actual tree so future descendants are transformed before layout.\n const add = renderable.add.bind(renderable)\n renderable.add = (child, index) => {\n if (child instanceof Renderable) monoRenderable(child)\n return add(child, index)\n }\n\n if (renderable instanceof BoxRenderable) renderable.customBorderChars = asciiBorder\n if (renderable instanceof CodeRenderable) monoCode(renderable)\n if (renderable instanceof TextRenderable) renderable.content = monoStyledText(renderable.content)\n if (renderable instanceof TextTableRenderable) monoTable(renderable)\n renderable.getChildren().forEach(monoRenderable)\n}\n\nfunction monoCode(renderable: CodeRenderable): void {\n const onChunks = renderable.onChunks\n renderable.onChunks = async (chunks, context) => monoChunks((await onChunks?.(chunks, context)) ?? chunks)\n renderable.treeSitterClient = monoTreeSitter(renderable.treeSitterClient)\n\n const initialDescriptor = Object.getOwnPropertyDescriptor(CodeRenderable.prototype, \"initialStyledText\")\n const contentDescriptor = Object.getOwnPropertyDescriptor(CodeRenderable.prototype, \"content\")\n if (!initialDescriptor?.set || !contentDescriptor?.get || !contentDescriptor.set) return\n const initialSetter = initialDescriptor.set.bind(renderable)\n const contentGetter = contentDescriptor.get.bind(renderable)\n const contentSetter = contentDescriptor.set.bind(renderable)\n const initial = Reflect.get(renderable, \"_initialStyledText\")\n Object.defineProperty(renderable, \"initialStyledText\", {\n configurable: true,\n set(value: StyledText | undefined) {\n initialSetter(value ? monoStyledText(value) : value)\n },\n })\n Object.defineProperty(renderable, \"content\", {\n configurable: true,\n get: contentGetter,\n set(value: string) {\n if (renderable.filetype !== \"markdown\" || !isStyledText(Reflect.get(renderable, \"_initialStyledText\"))) {\n renderable.drawUnstyledText = true\n renderable.initialStyledText = stringToStyledText(value)\n }\n contentSetter(renderable.filetype === \"markdown\" ? value : monoText(value))\n },\n })\n\n if (isStyledText(initial)) {\n renderable.initialStyledText = initial\n } else {\n renderable.drawUnstyledText = true\n renderable.initialStyledText = stringToStyledText(renderable.content)\n }\n if (!renderable.drawUnstyledText) return\n\n // Refresh the eager buffer with the transformed initial text. Highlighted\n // chunks continue through onChunks without changing the Markdown source.\n const content = renderable.content\n renderable.content = \"\"\n renderable.content = content\n}\n\nfunction monoTreeSitter(client: TreeSitterClient): TreeSitterClient {\n return new Proxy(client, {\n get(target, property) {\n if (property !== \"highlightOnce\") return Reflect.get(target, property, target)\n // Keep parser failures on the chunk path instead of OpenTUI's raw-text fallback.\n return (...args: Parameters<TreeSitterClient[\"highlightOnce\"]>) =>\n target.highlightOnce(...args).catch(() => ({ highlights: [] }))\n },\n })\n}\n\nfunction monoTable(renderable: TextTableRenderable): void {\n const descriptor = Object.getOwnPropertyDescriptor(TextTableRenderable.prototype, \"content\")\n if (!descriptor?.get || !descriptor.set) return\n const cells = new WeakMap<StyledText[\"chunks\"], StyledText[\"chunks\"]>()\n const content = renderable.content\n Object.defineProperty(renderable, \"content\", {\n configurable: true,\n get: () => descriptor.get!.call(renderable),\n set: (value: TextTableRenderable[\"content\"]) => {\n descriptor.set!.call(\n renderable,\n value.map((row) =>\n row.map((cell) => {\n if (!cell) return cell\n const cached = cells.get(cell)\n if (cached) return cached\n const next = monoChunks(cell)\n cells.set(cell, next)\n return next\n }),\n ),\n )\n },\n })\n renderable.content = content\n}\n\nfunction monoStyledText(value: StyledText): StyledText {\n return new StyledText(monoChunks(value.chunks))\n}\n\nfunction monoChunks(value: StyledText[\"chunks\"]): StyledText[\"chunks\"] {\n return value.map((chunk) => ({ ...chunk, text: monoText(chunk.text) }))\n}\n\nfunction monoText(value: string): string {\n return value.replace(/[^\\t\\n\\x20-\\x7e]/gu, (char) => markdown[char.codePointAt(0)!] ?? \"?\")\n}\n\nexport function monoSnapshot(event: CliRendererExternalOutputEvent): void {\n const buffers = event.snapshot.buffers\n const chars = buffers.char\n for (let index = 0; index < chars.length; index += 1) {\n const point = chars[index]\n if (point <= 0x7f) continue\n const offset = index * 4\n event.snapshot.setCell(\n index % event.snapshot.width,\n Math.floor(index / event.snapshot.width),\n monoCell(point),\n RGBA.fromArray(buffers.fg.subarray(offset, offset + 4)),\n RGBA.fromArray(buffers.bg.subarray(offset, offset + 4)),\n buffers.attributes[index],\n )\n }\n}\n\nfunction monoCell(point: number): string {\n const kind = point >>> 30\n if (kind === 2) return \"?\"\n if (kind === 3) return \" \"\n if (point === 0x2500) return \"-\"\n if (point === 0x2502) return \"|\"\n return markdown[point]?.[0] ?? \"?\"\n}\n\nexport function monoPrefix(value: string, mono: boolean): string {\n if (!mono) return value\n const point = value.codePointAt(0)\n if (point === undefined) return value\n const prefix = prefixes[point]\n if (!prefix) return value\n return prefix + value.slice(point > 0xffff ? 2 : 1)\n}\n\nexport function monoToolText(value: string, mono: boolean): string {\n const result = monoPrefix(value, mono)\n if (!mono) return result\n const separator = ` ${String.fromCodePoint(0xb7)} `\n const index = result.lastIndexOf(separator)\n if (index === -1) return result\n const head = result.slice(0, index)\n if (!head.includes(\" completed\") && head !== \"patch\" && !/^\\d+ questions$/.test(head)) return result\n return result.slice(0, index) + \" - \" + result.slice(index + separator.length)\n}\n\nexport function monoShortcut(value: string, mono: boolean): string {\n if (!mono) return value\n return value\n .replaceAll(String.fromCodePoint(0x2192), \"right\")\n .replaceAll(String.fromCodePoint(0x2190), \"left\")\n .replaceAll(String.fromCodePoint(0x2191), \"up\")\n .replaceAll(String.fromCodePoint(0x2193), \"down\")\n}\n\nexport function monoTruncate(value: string, width: number, mono: boolean): string {\n if (!mono || value.length <= width) return value\n if (width <= 3) return \".\".repeat(Math.max(0, width))\n return value.slice(0, width - 3) + \"...\"\n}\n\nexport function monoTruncateMiddle(value: string, width: number, mono: boolean): string {\n if (!mono || value.length <= width) return value\n if (width <= 3) return \".\".repeat(Math.max(0, width))\n const available = width - 3\n const left = Math.ceil(available / 2)\n return value.slice(0, left) + \"...\" + value.slice(value.length - (available - left))\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "41EB6E02EB9FD28E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js"], | ||
| "sourcesContent": [ | ||
| "// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) keysSpacesBestScores[i] = NEGATIVE_INFINITY\r\n\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n target = tmpTargets[keyI]\r\n if(target === noTarget) { tmpResults[keyI] = noTarget; continue }\r\n\r\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/false, /*allowPartialMatch=*/containsSpace)\r\n if(tmpResults[keyI] === NULL) { tmpResults[keyI] = noTarget; continue }\r\n\r\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\r\n // if our second match isn't good we ignore it instead of averaging with it\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) {\r\n if(allowPartialMatchScores[i] > -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) { if(keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer }\r\n } else {\r\n var hasAtLeast1Match = false\r\n for(let i=0; i < keysLen; i++) { if(tmpResults[i]._score !== NEGATIVE_INFINITY) { hasAtLeast1Match = true; break } }\r\n if(!hasAtLeast1Match) continue\r\n }\r\n\r\n var objResults = new KeysResult(keysLen)\r\n for(let i=0; i < keysLen; i++) { objResults[i] = tmpResults[i] }\r\n\r\n if(containsSpace) {\r\n var score = 0\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) score += keysSpacesBestScores[i]\r\n } else {\r\n // todo could rewrite this scoring to be more similar to when there's spaces\r\n // if we match multiple keys give us bonus points\r\n var score = NEGATIVE_INFINITY\r\n for(let i=0; i<keysLen; i++) {\r\n var result = objResults[i]\r\n if(result._score > -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='<b>', close='</b>') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i<searches.length; i++) {\r\n if(searches[i] === '') continue\r\n var _info = prepareLowerInfo(searches[i])\r\n spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false})\r\n }\r\n }\r\n\r\n return {lowerCodes: info.lowerCodes, _lower: info._lower, containsSpace: info.containsSpace, bitflags: info.bitflags, spaceSearches: spaceSearches}\r\n }\r\n\r\n\r\n\r\n var getPrepared = (target) => {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var target = getValue(obj, options.key)\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n var result = new_result(target.target, {_score: target._score, obj: obj})\r\n results.push(result); if(results.length >= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var objResults = new KeysResult(options.keys.length)\r\n for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i<targets.length;i++) { var target = targets[i]\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n results.push(target); if(results.length >= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i<nextBeginningIndexes.length; i=nextBeginningIndexes[i]) {\r\n if(i <= substringIndex) continue\r\n\r\n for(var s=0; s<searchLen; s++) if(searchLowerCodes[s] !== prepared._targetLowerCodes[i+s]) break\r\n if(s === searchLen) { substringIndex = i; isSubstringBeginning = true; break }\r\n }\r\n }\r\n\r\n // tally up the score & keep track of matches for highlighting later\r\n // if it's a simple match, we'll switch to a substring match if a substring exists\r\n // if it's a strict match, we'll switch to a substring match only if that's a better score\r\n\r\n var calculateScore = matches => {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesBest)\r\n } else {\r\n if(isSubstringBeginning) {\r\n for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesSimple)\r\n } else {\r\n var matchesBest = matchesStrict\r\n var score = calculateScore(matchesStrict)\r\n }\r\n }\r\n\r\n prepared._score = score\r\n\r\n for(var i = 0; i < searchLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = searchLen\r\n\r\n const result = new Result()\r\n result.target = prepared.target\r\n result._score = prepared._score\r\n result._indexes = prepared._indexes\r\n return result\r\n }\r\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = NEGATIVE_INFINITY\r\n var search = searches[i]\r\n\r\n result = algorithm(search, target)\r\n if(allowPartialMatch) {\r\n if(result === NULL) continue\r\n hasAtLeast1Match = true\r\n } else {\r\n if(result === NULL) {resetNextBeginningIndexes(); return NULL}\r\n }\r\n\r\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\r\n var isTheLastSearch = i === searchesLen - 1\r\n if(!isTheLastSearch) {\r\n var indexes = result._indexes\r\n\r\n var indexesIsConsecutiveSubstring = true\r\n for(let i=0; i<indexes.len-1; i++) {\r\n if(indexes[i+1] - indexes[i] !== 1) {\r\n indexesIsConsecutiveSubstring = false; break;\r\n }\r\n }\r\n\r\n if(indexesIsConsecutiveSubstring) {\r\n var newBeginningIndex = indexes[indexes.len-1] + 1\r\n var toReplace = target._nextBeginningIndexes[newBeginningIndex-1]\r\n for(let i=newBeginningIndex-1; i>=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j<result._indexes.len; ++j) seen_indexes.add(result._indexes[j])\r\n }\r\n\r\n if(allowPartialMatch && !hasAtLeast1Match) return NULL\r\n\r\n resetNextBeginningIndexes()\r\n\r\n // allows a search with spaces that's an exact substring to score well\r\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/true)\r\n if(allowSpacesResult !== NULL && allowSpacesResult._score > score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen\r\n }\r\n }\r\n return allowSpacesResult\r\n }\r\n\r\n if(allowPartialMatch) result = target\r\n result._score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n // we use this instead of just .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') because that screws with japanese characters\r\n var remove_accents = (str) => str.replace(/\\p{Script=Latin}+/gu, match => match.normalize('NFD')).replace(/[\\u0300-\\u036f]/g, '')\r\n\r\n var prepareLowerInfo = (str) => {\r\n str = remove_accents(str)\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1<<bit\r\n }\r\n\r\n return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower}\r\n }\r\n var prepareBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n target = remove_accents(target)\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c<o;){var s=c+1;a=c,s<o&&e[s]._score<e[c]._score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score<e[f]._score;f=(a=f)-1>>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score<e[v]._score;v=(a=v)-1>>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "37F7573054418FEF64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/project.ts", "../schema/src/skill.ts", "../schema/src/prompt.ts", "../schema/src/shell.ts", "../schema/src/session-error.ts", "../schema/src/session-id.ts", "../schema/src/permission.ts", "../schema/src/agent.ts", "../schema/src/snapshot.ts", "../schema/src/token-usage.ts", "../schema/src/session-message.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Project from \"./project.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { AbsolutePath, NonNegativeInt, optional } from \"./schema.js\"\nimport { ProjectID } from \"./project-id.js\"\n\nexport const ID = ProjectID\nexport type ID = typeof ID.Type\n\nexport const Vcs = Schema.Literals([\"git\", \"hg\"]).annotate({ identifier: \"Project.Vcs\" })\nexport const Current = Schema.Struct({\n id: ID,\n directory: AbsolutePath,\n canonical: AbsolutePath,\n}).annotate({ identifier: \"Project.Current\" })\nexport interface Current extends Schema.Schema.Type<typeof Current> {}\nexport const Icon = Schema.Struct({\n url: optional(Schema.String),\n override: optional(Schema.String),\n color: optional(Schema.String),\n}).annotate({ identifier: \"Project.Icon\" })\nexport interface Icon extends Schema.Schema.Type<typeof Icon> {}\nexport const Commands = Schema.Struct({\n start: optional(\n Schema.String.annotate({ description: \"Startup script to run when creating a new workspace (worktree)\" }),\n ),\n}).annotate({ identifier: \"Project.Commands\" })\nexport interface Commands extends Schema.Schema.Type<typeof Commands> {}\nexport const Time = Schema.Struct({\n created: NonNegativeInt,\n updated: NonNegativeInt,\n initialized: optional(NonNegativeInt),\n}).annotate({ identifier: \"Project.Time\" })\nexport interface Time extends Schema.Schema.Type<typeof Time> {}\n\nexport const Info = Schema.Struct({\n id: ID,\n canonical: AbsolutePath,\n vcs: optional(Vcs),\n name: optional(Schema.String),\n icon: optional(Icon),\n commands: optional(Commands),\n time: Time,\n sandboxes: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Project\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const UpdateInput = Schema.Struct({\n projectID: ID,\n name: optional(Schema.String),\n icon: optional(Icon),\n commands: optional(Commands),\n}).annotate({ identifier: \"Project.UpdateInput\" })\nexport interface UpdateInput extends Schema.Schema.Type<typeof UpdateInput> {}\n\nconst Updated = ephemeral({ type: \"project.updated\", schema: Info.fields })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n", | ||
| "export * as Skill from \"./skill.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { AbsolutePath } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Skill.ID\"))\nexport type ID = typeof ID.Type\n\nexport const Name = Schema.String.pipe(Schema.brand(\"Skill.Name\"))\nexport type Name = typeof Name.Type\n\nexport interface DirectorySource extends Schema.Schema.Type<typeof DirectorySource> {}\nexport const DirectorySource = Schema.Struct({\n type: Schema.tag(\"directory\"),\n path: AbsolutePath,\n}).annotate({ identifier: \"Skill.DirectorySource\" })\n\nexport interface UrlSource extends Schema.Schema.Type<typeof UrlSource> {}\nexport const UrlSource = Schema.Struct({\n type: Schema.tag(\"url\"),\n url: Schema.String,\n}).annotate({ identifier: \"Skill.UrlSource\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n name: Name,\n description: Schema.String.pipe(optional),\n slash: Schema.Boolean.pipe(optional),\n autoinvoke: Schema.Boolean.pipe(optional),\n location: AbsolutePath,\n content: Schema.String,\n}).annotate({ identifier: \"Skill.Info\" })\n\nconst Updated = ephemeral({ type: \"skill.updated\", schema: {} })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n\nexport interface EmbeddedSource extends Schema.Schema.Type<typeof EmbeddedSource> {}\nexport const EmbeddedSource = Schema.Struct({\n type: Schema.tag(\"embedded\"),\n skill: Schema.suspend(() => Info),\n}).annotate({ identifier: \"Skill.EmbeddedSource\" })\n\nexport type Source = DirectorySource | UrlSource | EmbeddedSource\nexport const Source = Object.assign(\n Schema.Union([DirectorySource, UrlSource, EmbeddedSource]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Skill.Source\" }),\n ),\n {\n equals: (a: Source, b: Source) => {\n if (a.type !== b.type) return false\n if (a.type === \"directory\" && b.type === \"directory\") return a.path === b.path\n if (a.type === \"url\" && b.type === \"url\") return a.url === b.url\n if (a.type === \"embedded\" && b.type === \"embedded\") return a.skill.id === b.skill.id\n return false\n },\n key: (source: Source) =>\n source.type === \"directory\"\n ? `directory:${source.path}`\n : source.type === \"url\"\n ? `url:${source.url}`\n : `embedded:${source.skill.id}`,\n },\n)\n", | ||
| "import { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { statics } from \"./schema.js\"\nimport { Skill } from \"./skill.js\"\n\nexport interface PromptMention extends Schema.Schema.Type<typeof PromptMention> {}\nexport const PromptMention = Schema.Struct({\n start: Schema.Finite,\n end: Schema.Finite,\n text: Schema.String,\n}).annotate({ identifier: \"Prompt.Mention\" })\n\nexport const FileSource = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"inline\") }),\n Schema.Struct({ type: Schema.Literal(\"uri\"), uri: Schema.String }),\n])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Prompt.FileSource\" })\nexport type FileSource = typeof FileSource.Type\n\nexport const Base64 = Schema.String.check(\n Schema.isPattern(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/),\n).annotate({ identifier: \"Prompt.Base64\" })\nexport type Base64 = typeof Base64.Type\n\nexport interface FileAttachment extends Schema.Schema.Type<typeof FileAttachment> {}\nexport const FileAttachment = Schema.Struct({\n data: Base64,\n mime: Schema.String,\n source: FileSource,\n name: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n mention: PromptMention.pipe(optional),\n})\n .annotate({ identifier: \"Prompt.FileAttachment\" })\n .pipe(\n statics((schema) => ({\n create: (input: FileAttachment) =>\n schema.make({\n data: input.data,\n mime: input.mime,\n source: input.source,\n name: input.name,\n description: input.description,\n mention: input.mention,\n }),\n })),\n )\n\nexport interface AgentAttachment extends Schema.Schema.Type<typeof AgentAttachment> {}\nexport const AgentAttachment = Schema.Struct({\n name: Schema.String,\n mention: PromptMention.pipe(optional),\n}).annotate({ identifier: \"Prompt.AgentAttachment\" })\n\nexport interface SkillAttachment extends Schema.Schema.Type<typeof SkillAttachment> {}\nexport const SkillAttachment = Schema.Struct({\n id: Skill.ID,\n name: Skill.Name,\n mention: PromptMention.pipe(optional),\n}).annotate({ identifier: \"Prompt.SkillAttachment\" })\n\nexport interface Prompt extends Schema.Schema.Type<typeof Prompt> {}\nexport const Prompt = Schema.Struct({\n text: Schema.String,\n files: Schema.Array(FileAttachment).pipe(optional),\n agents: Schema.Array(AgentAttachment).pipe(optional),\n skills: Schema.Array(SkillAttachment).pipe(optional),\n})\n .annotate({ identifier: \"Prompt\" })\n .pipe(\n statics((schema) => ({\n equivalence: Schema.toEquivalence(schema),\n fromUserMessage: (input: Pick<Prompt, \"text\" | \"files\" | \"agents\" | \"skills\">) =>\n schema.make({\n text: input.text,\n ...(input.files === undefined ? {} : { files: input.files }),\n ...(input.agents === undefined ? {} : { agents: input.agents }),\n ...(input.skills === undefined ? {} : { skills: input.skills }),\n }),\n })),\n )\n", | ||
| "export * as Shell from \"./shell.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, statics } from \"./schema.js\"\n\nconst IDSchema = Schema.String.check(Schema.isStartsWith(\"sh_\")).pipe(Schema.brand(\"Shell.ID\"))\n\nexport const ID = IDSchema.pipe(\n statics((schema: typeof IDSchema) => {\n const create = () => schema.make(\"sh_\" + ascending())\n return {\n create,\n ascending: (id?: string) => (id === undefined ? create() : schema.make(id)),\n }\n }),\n)\nexport type ID = typeof ID.Type\n\nexport const Status = Schema.Literals([\"running\", \"exited\", \"timeout\", \"killed\"])\nexport type Status = typeof Status.Type\n\nexport const Time = Schema.Struct({\n started: Schema.Finite,\n completed: optional(Schema.Finite),\n})\nexport interface Time extends Schema.Schema.Type<typeof Time> {}\n\n// Opaque caller-supplied tags echoed back on Info and events. The Shell service never interprets\n// these; callers (e.g. ShellTool stores the originating session ID) use them to filter or correlate.\nexport const Metadata = Schema.Record(Schema.String, Schema.Unknown)\nexport type Metadata = typeof Metadata.Type\n\nexport const Info = Schema.Struct({\n id: ID,\n status: Status,\n command: Schema.String,\n cwd: Schema.String,\n shell: Schema.String,\n // Absolute path of the file capturing combined stdout/stderr. Page through it via `output`.\n file: Schema.String,\n pid: optional(NonNegativeInt),\n exit: optional(Schema.Finite),\n // Always present; defaults to an empty object when the creator supplies no metadata.\n metadata: Metadata,\n time: Time,\n}).annotate({ identifier: \"Shell.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nconst Created = ephemeral({ type: \"shell.created\", schema: { info: Info } })\nconst Exited = ephemeral({ type: \"shell.exited\", schema: { id: ID, exit: optional(Schema.Finite), status: Status } })\nconst Deleted = ephemeral({ type: \"shell.deleted\", schema: { id: ID } })\nexport const Event = { Created, Exited, Deleted, Definitions: inventory(Created, Exited, Deleted) }\n\nexport const CreateInput = Schema.Struct({\n command: Schema.String,\n cwd: optional(Schema.String),\n timeout: NonNegativeInt,\n metadata: optional(Metadata),\n})\nexport interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {}\n\nexport const OutputInput = Schema.Struct({\n cursor: optional(NonNegativeInt),\n limit: optional(NonNegativeInt),\n})\nexport interface OutputInput extends Schema.Schema.Type<typeof OutputInput> {}\n\nexport const Output = Schema.Struct({\n output: Schema.String,\n // Absolute cursor after this page. Equals `size` once fully caught up.\n cursor: NonNegativeInt,\n // Total bytes captured so far. A consumer has more to page while `cursor < size`.\n size: NonNegativeInt,\n truncated: Schema.Boolean,\n})\nexport interface Output extends Schema.Schema.Type<typeof Output> {}\n", | ||
| "export * as SessionError from \"./session-error.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\n\nexport interface Error extends Schema.Schema.Type<typeof Error> {}\nexport const Error = Schema.Struct({\n type: Schema.String,\n message: Schema.String,\n status: Schema.Int.check(Schema.isBetween({ minimum: 100, maximum: 599 })).pipe(optional),\n}).annotate({ identifier: \"Session.StructuredError\" })\n", | ||
| "import { Schema } from \"effect\"\nimport { descending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\n\nexport const SessionID = Schema.String.check(Schema.isStartsWith(\"ses\")).pipe(\n Schema.brand(\"SessionID\"),\n statics((schema) => {\n const create = () => schema.make(\"ses_\" + descending())\n return {\n create,\n descending: (id?: string) => (id === undefined ? create() : schema.make(id)),\n }\n }),\n)\nexport type SessionID = typeof SessionID.Type\n", | ||
| "export * as Permission from \"./permission.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"per\")).pipe(\n Schema.brand(\"Permission.ID\"),\n statics((schema) => ({ create: (id?: string) => schema.make(id ?? \"per_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Source = Schema.Union([\n Schema.Struct({\n type: Schema.Literal(\"tool\"),\n messageID: Schema.String,\n id: Schema.String,\n }),\n]).annotate({ identifier: \"Permission.Source\" })\nexport type Source = typeof Source.Type\n\nconst RequestFields = {\n sessionID: SessionID,\n action: Schema.String,\n resources: Schema.Array(Schema.String),\n save: Schema.Array(Schema.String).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n source: Source.pipe(optional),\n message: Schema.String.pipe(optional),\n}\n\nexport const Request = Schema.Struct({\n id: ID,\n ...RequestFields,\n}).annotate({ identifier: \"Permission.Request\" })\nexport interface Request extends Schema.Schema.Type<typeof Request> {}\n\nexport const Reply = Schema.Literals([\"once\", \"always\", \"reject\"]).annotate({ identifier: \"Permission.Reply\" })\nexport type Reply = typeof Reply.Type\n\nconst Asked = ephemeral({ type: \"permission.asked\", schema: Request.fields })\nconst Replied = ephemeral({\n type: \"permission.replied\",\n schema: {\n sessionID: SessionID,\n requestID: ID,\n reply: Reply,\n },\n})\nexport const Event = { Asked, Replied, Definitions: inventory(Asked, Replied) }\n\nexport const Effect = Schema.Literals([\"allow\", \"deny\", \"ask\"]).annotate({ identifier: \"Permission.Effect\" })\nexport type Effect = typeof Effect.Type\n\nexport interface Rule extends Schema.Schema.Type<typeof Rule> {}\nexport const Rule = Schema.Struct({\n action: Schema.String,\n resource: Schema.String,\n effect: Effect,\n}).annotate({ identifier: \"Permission.Rule\" })\n\nexport const Ruleset = Schema.Array(Rule).annotate({ identifier: \"Permission.Ruleset\" })\nexport type Ruleset = typeof Ruleset.Type\n", | ||
| "export * as Agent from \"./agent.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\nimport { Model } from \"./model.js\"\nimport { Permission } from \"./permission.js\"\nimport { Provider } from \"./provider.js\"\nimport { PositiveInt, statics } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"agent.updated\", schema: {} })\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Agent.ID\"))\nexport type ID = typeof ID.Type\n\nexport const Name = Schema.String.pipe(Schema.brand(\"Agent.Name\"))\nexport type Name = typeof Name.Type\n\nexport const Color = Schema.String.annotate({ identifier: \"Agent.Color\" })\nexport type Color = typeof Color.Type\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n name: Name,\n model: Model.Ref.pipe(optional),\n request: Provider.Request,\n system: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n mode: Schema.Literals([\"subagent\", \"primary\", \"all\"]),\n hidden: Schema.Boolean,\n color: Color.pipe(optional),\n steps: PositiveInt.pipe(optional),\n permissions: Permission.Ruleset,\n})\n .annotate({ identifier: \"Agent.Info\" })\n .pipe(\n statics(() => ({\n default: (id: ID) =>\n ({\n id,\n name: Name.make(id),\n request: { settings: {}, headers: {}, body: {} },\n mode: \"primary\",\n hidden: false,\n permissions: [\n { action: \"*\", resource: \"*\", effect: \"allow\" },\n { action: \"external_directory\", resource: \"*\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env.*\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env.example\", effect: \"allow\" },\n ],\n }) satisfies Info,\n })),\n )\n\nexport const Event = {\n Updated,\n Definitions: inventory(Updated),\n}\n", | ||
| "export * as Snapshot from \"./snapshot.js\"\n\nimport { Schema } from \"effect\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Snapshot.ID\"))\nexport type ID = typeof ID.Type\n", | ||
| "export * as TokenUsage from \"./token-usage.js\"\n\nimport { Schema } from \"effect\"\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n input: Schema.Finite,\n output: Schema.Finite,\n reasoning: Schema.Finite,\n cache: Schema.Struct({\n read: Schema.Finite,\n write: Schema.Finite,\n }),\n}).annotate({ identifier: \"TokenUsage.Info\" })\n", | ||
| "export * as SessionMessage from \"./session-message.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { Content } from \"./tool.js\"\nimport { Location } from \"./location.js\"\nimport { Model } from \"./model.js\"\nimport { Project } from \"./project.js\"\nimport { Prompt } from \"./prompt.js\"\nimport { DateTimeUtcFromMillis, PositiveInt, RelativePath, statics } from \"./schema.js\"\nimport { ascending } from \"./identifier.js\"\nimport { Event } from \"./event.js\"\nimport { Shell as ShellSchema } from \"./shell.js\"\nimport { FinishReason } from \"./llm.js\"\nimport { SessionError } from \"./session-error.js\"\nimport { Agent } from \"./agent.js\"\nimport { Skill as SkillSchema } from \"./skill.js\"\nimport { Money } from \"./money.js\"\nimport { Snapshot } from \"./snapshot.js\"\nimport { TokenUsage } from \"./token-usage.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"msg_\")).pipe(\n Schema.brand(\"Session.Message.ID\"),\n statics((schema) => ({\n create: () => schema.make(\"msg_\" + ascending()),\n fromEvent: (eventID: Event.ID) => schema.make(eventID.replace(/^evt_/, \"msg_\")),\n })),\n)\nexport type ID = typeof ID.Type\n\nconst Base = {\n id: ID,\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n time: Schema.Struct({ created: DateTimeUtcFromMillis }),\n}\n\nexport const ProviderState = Schema.Record(Schema.String, Schema.Unknown).annotate({\n identifier: \"Session.Message.ProviderState\",\n})\nexport type ProviderState = typeof ProviderState.Type\n\nexport interface AgentSelected extends Schema.Schema.Type<typeof AgentSelected> {}\nexport const AgentSelected = Schema.Struct({\n ...Base,\n type: Schema.tag(\"agent-switched\"),\n agent: Agent.ID,\n previous: Agent.ID.pipe(optional),\n}).annotate({ identifier: \"Session.Message.AgentSelected\" })\n\nexport interface ModelSelected extends Schema.Schema.Type<typeof ModelSelected> {}\nexport const ModelSelected = Schema.Struct({\n ...Base,\n type: Schema.tag(\"model-switched\"),\n model: Model.Ref,\n previous: Model.Ref.pipe(optional),\n}).annotate({ identifier: \"Session.Message.ModelSelected\" })\n\nexport interface LocationSwitched extends Schema.Schema.Type<typeof LocationSwitched> {}\nexport const LocationSwitched = Schema.Struct({\n ...Base,\n type: Schema.tag(\"location-switched\"),\n location: Location.Ref,\n projectID: Project.ID.pipe(optional),\n subpath: RelativePath.pipe(optional),\n previous: Schema.Struct({\n location: Location.Ref,\n projectID: Project.ID.pipe(optional),\n subpath: RelativePath.pipe(optional),\n }).pipe(optional),\n}).annotate({ identifier: \"Session.Message.LocationSwitched\" })\n\nexport interface User extends Schema.Schema.Type<typeof User> {}\nexport const User = Schema.Struct({\n ...Base,\n text: Prompt.fields.text,\n files: Prompt.fields.files,\n agents: Prompt.fields.agents,\n skills: Prompt.fields.skills,\n type: Schema.tag(\"user\"),\n}).annotate({ identifier: \"Session.Message.User\" })\n\nexport interface Synthetic extends Schema.Schema.Type<typeof Synthetic> {}\nexport const Synthetic = Schema.Struct({\n ...Base,\n text: Schema.String,\n description: Schema.String.pipe(optional),\n type: Schema.tag(\"synthetic\"),\n}).annotate({ identifier: \"Session.Message.Synthetic\" })\n\nexport interface System extends Schema.Schema.Type<typeof System> {}\nexport const System = Schema.Struct({\n ...Base,\n type: Schema.tag(\"system\"),\n /** The model-facing update text, frozen at emit time. */\n text: Schema.String,\n /** A short human-readable summary for transcript display. */\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Session.Message.System\" })\n\nexport interface Skill extends Schema.Schema.Type<typeof Skill> {}\nexport const Skill = Schema.Struct({\n ...Base,\n type: Schema.tag(\"skill\"),\n skill: SkillSchema.ID,\n name: SkillSchema.Name,\n text: Schema.String,\n}).annotate({ identifier: \"Session.Message.Skill\" })\n\nexport interface Shell extends Schema.Schema.Type<typeof Shell> {}\nexport const Shell = Schema.Struct({\n ...Base,\n type: Schema.tag(\"shell\"),\n shellID: ShellSchema.ID,\n command: Schema.String,\n status: ShellSchema.Status,\n exit: Schema.Number.pipe(optional),\n output: ShellSchema.Output.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Shell\" })\n\nexport interface ToolStateStreaming extends Schema.Schema.Type<typeof ToolStateStreaming> {}\nexport const ToolStateStreaming = Schema.Struct({\n status: Schema.tag(\"streaming\"),\n input: Schema.String,\n}).annotate({ identifier: \"Session.Message.ToolState.Streaming\" })\n\nexport interface ToolStateRunning extends Schema.Schema.Type<typeof ToolStateRunning> {}\nexport const ToolStateRunning = Schema.Struct({\n status: Schema.tag(\"running\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n metadata: Schema.Record(Schema.String, Schema.Json),\n}).annotate({ identifier: \"Session.Message.ToolState.Running\" })\n\nexport interface ToolStateCompleted extends Schema.Schema.Type<typeof ToolStateCompleted> {}\nexport const ToolStateCompleted = Schema.Struct({\n status: Schema.tag(\"completed\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n content: Schema.NonEmptyArray(Content),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n}).annotate({ identifier: \"Session.Message.ToolState.Completed\" })\n\nexport interface ToolStateError extends Schema.Schema.Type<typeof ToolStateError> {}\nexport const ToolStateError = Schema.Struct({\n status: Schema.tag(\"error\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n error: SessionError.Error,\n content: Schema.NonEmptyArray(Content).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n}).annotate({ identifier: \"Session.Message.ToolState.Error\" })\n\nexport const ToolState = Schema.Union([ToolStateStreaming, ToolStateRunning, ToolStateCompleted, ToolStateError]).pipe(\n Schema.toTaggedUnion(\"status\"),\n)\nexport type ToolState = ToolStateStreaming | ToolStateRunning | ToolStateCompleted | ToolStateError\n\nexport interface AssistantTool extends Schema.Schema.Type<typeof AssistantTool> {}\nexport const AssistantTool = Schema.Struct({\n type: Schema.tag(\"tool\"),\n id: Schema.String,\n name: Schema.String,\n executed: Schema.Boolean.pipe(optional),\n providerState: ProviderState.pipe(optional),\n providerResultState: ProviderState.pipe(optional),\n state: ToolState,\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n ran: DateTimeUtcFromMillis.pipe(optional),\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Assistant.Tool\" })\n\nexport interface AssistantText extends Schema.Schema.Type<typeof AssistantText> {}\nexport const AssistantText = Schema.Struct({\n type: Schema.tag(\"text\"),\n text: Schema.String,\n state: ProviderState.pipe(optional),\n}).annotate({ identifier: \"Session.Message.Assistant.Text\" })\n\nexport interface AssistantReasoning extends Schema.Schema.Type<typeof AssistantReasoning> {}\nexport const AssistantReasoning = Schema.Struct({\n type: Schema.tag(\"reasoning\"),\n text: Schema.String,\n state: ProviderState.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }).pipe(optional),\n}).annotate({ identifier: \"Session.Message.Assistant.Reasoning\" })\n\nexport const AssistantContent = Schema.Union([AssistantText, AssistantReasoning, AssistantTool]).pipe(\n Schema.toTaggedUnion(\"type\"),\n)\nexport type AssistantContent = AssistantText | AssistantReasoning | AssistantTool\n\nexport interface AssistantRetry extends Schema.Schema.Type<typeof AssistantRetry> {}\nexport const AssistantRetry = Schema.Struct({\n attempt: PositiveInt,\n at: DateTimeUtcFromMillis,\n error: SessionError.Error,\n}).annotate({ identifier: \"Session.Message.Assistant.Retry\" })\n\nexport interface Assistant extends Schema.Schema.Type<typeof Assistant> {}\nexport const Assistant = Schema.Struct({\n ...Base,\n type: Schema.tag(\"assistant\"),\n agent: Agent.ID,\n model: Model.Ref,\n content: AssistantContent.pipe(Schema.Array),\n snapshot: Schema.Struct({\n start: Snapshot.ID.pipe(optional),\n end: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n }).pipe(optional),\n finish: FinishReason.pipe(optional),\n rawFinish: Schema.String.pipe(optional),\n providerState: ProviderState.pipe(optional),\n cost: Money.USD.pipe(optional),\n tokens: TokenUsage.Info.pipe(optional),\n error: SessionError.Error.pipe(optional),\n retry: AssistantRetry.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Assistant\" })\n\nconst CompactionBase = { type: Schema.tag(\"compaction\"), ...Base }\n\nexport interface CompactionRunning extends Schema.Schema.Type<typeof CompactionRunning> {}\nexport const CompactionRunning = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"running\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n summary: Schema.String,\n recent: Schema.String,\n}).annotate({ identifier: \"Session.Message.Compaction.Running\" })\n\nexport interface CompactionCompleted extends Schema.Schema.Type<typeof CompactionCompleted> {}\nexport const CompactionCompleted = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"completed\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n summary: Schema.String,\n recent: Schema.String,\n}).annotate({ identifier: \"Session.Message.Compaction.Completed\" })\n\nexport interface CompactionFailed extends Schema.Schema.Type<typeof CompactionFailed> {}\nexport const CompactionFailed = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"failed\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n error: SessionError.Error,\n}).annotate({ identifier: \"Session.Message.Compaction.Failed\" })\n\nexport const Compaction = Schema.Union([CompactionRunning, CompactionCompleted, CompactionFailed]).pipe(\n Schema.toTaggedUnion(\"status\"),\n Schema.annotate({ identifier: \"Session.Message.Compaction\" }),\n)\nexport type Compaction = CompactionRunning | CompactionCompleted | CompactionFailed\n\nexport const Info = Schema.Union([\n AgentSelected,\n ModelSelected,\n LocationSwitched,\n User,\n Synthetic,\n System,\n Skill,\n Shell,\n Assistant,\n Compaction,\n]).annotate({ identifier: \"Session.Message.Info\" })\nexport type Info =\n | AgentSelected\n | ModelSelected\n | LocationSwitched\n | User\n | Synthetic\n | System\n | Skill\n | Shell\n | Assistant\n | Compaction\nexport type Type = Info[\"type\"]\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9E06D045EC2FC37664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/file-diff.ts", "../schema/src/session-revert.ts", "../schema/src/session-fork.ts", "../schema/src/instruction.ts", "../schema/src/instruction-entry.ts", "../schema/src/session-inbox.ts", "../schema/src/session-event.ts"], | ||
| "sourcesContent": [ | ||
| "export * as FileDiff from \"./file-diff.js\"\n\nimport { Schema } from \"effect\"\nimport { NonNegativeInt, optional } from \"./schema.js\"\n\nexport const Info = Schema.Struct({\n file: Schema.String,\n patch: Schema.String,\n additions: NonNegativeInt,\n deletions: NonNegativeInt,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]),\n}).annotate({ identifier: \"FileDiff.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\n/** V1 snapshot and persisted session diff shape. */\nexport const LegacyInfo = Schema.Struct({\n file: Schema.String.pipe(optional),\n patch: Schema.String.pipe(optional),\n additions: Schema.Finite,\n deletions: Schema.Finite,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]).pipe(optional),\n}).annotate({ identifier: \"FileDiff.LegacyInfo\" })\nexport interface LegacyInfo extends Schema.Schema.Type<typeof LegacyInfo> {}\n", | ||
| "import { Schema, SchemaTransformation } from \"effect\"\nimport { FileDiff } from \"./file-diff.js\"\nimport { optional } from \"./schema.js\"\nimport { SessionMessage } from \"./session-message.js\"\nimport { Snapshot } from \"./snapshot.js\"\n\nexport interface Revert extends Schema.Schema.Type<typeof Revert> {}\nexport const Revert = Schema.Struct({\n messageID: SessionMessage.ID,\n /** Legacy V1 compatibility state. */\n partID: Schema.String.pipe(optional),\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(FileDiff.Info).pipe(optional),\n}).annotate({ identifier: \"Session.Revert\" })\n\nconst FileDiffV1 = Schema.Struct({\n path: Schema.String,\n status: Schema.Literals([\"added\", \"modified\", \"deleted\"]),\n additions: Schema.Finite,\n deletions: Schema.Finite,\n patch: Schema.String,\n})\n\nexport interface RevertV1 extends Schema.Schema.Type<typeof RevertV1> {}\nexport const RevertV1 = Schema.Struct({\n messageID: SessionMessage.ID,\n partID: Schema.String.pipe(optional),\n snapshot: Schema.String.pipe(optional),\n diff: Schema.String.pipe(optional),\n files: Schema.Array(FileDiffV1).pipe(optional),\n}).annotate({ identifier: \"Session.RevertV1\" })\n\nconst PersistedCurrent = Revert.pipe(\n Schema.decodeTo(\n Schema.Struct({ source: Schema.tag(\"current\"), revert: Schema.toType(Revert) }),\n SchemaTransformation.transform({\n decode: (revert): { readonly source: \"current\"; readonly revert: Revert } => ({\n source: \"current\",\n revert,\n }),\n encode: (value) => value.revert,\n }),\n ),\n)\nconst PersistedLegacy = RevertV1.pipe(\n Schema.decodeTo(\n Schema.Struct({ source: Schema.tag(\"legacy\"), revert: Schema.toType(RevertV1) }),\n SchemaTransformation.transform({\n decode: (revert): { readonly source: \"legacy\"; readonly revert: RevertV1 } => ({\n source: \"legacy\",\n revert,\n }),\n encode: (value) => value.revert,\n }),\n ),\n)\n\n/** Storage decoder for revert state written before FileDiff became canonical. */\nexport const PersistedRevert = Schema.Union([PersistedCurrent, PersistedLegacy]).pipe(\n Schema.toTaggedUnion(\"source\"),\n Schema.decodeTo(\n Schema.toType(Revert),\n SchemaTransformation.transform({\n decode: (persisted): Revert => {\n if (persisted.source === \"current\") return persisted.revert\n return Revert.make({\n messageID: persisted.revert.messageID,\n partID: persisted.revert.partID,\n snapshot: persisted.revert.snapshot ? Snapshot.ID.make(persisted.revert.snapshot) : undefined,\n files: persisted.revert.files?.map((file) => ({\n file: file.path,\n status: file.status,\n additions: file.additions,\n deletions: file.deletions,\n patch: file.patch,\n })),\n })\n },\n encode: (revert): { readonly source: \"current\"; readonly revert: Revert } => ({\n source: \"current\",\n revert,\n }),\n }),\n ),\n Schema.annotate({ identifier: \"Session.Revert.Persisted\" }),\n)\n", | ||
| "export * as SessionFork from \"./session-fork.js\"\n\nimport { Schema } from \"effect\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport const Boundary = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"before\"), messageID: SessionMessage.ID }),\n Schema.Struct({ type: Schema.Literal(\"through\"), messageID: SessionMessage.ID }),\n]).annotate({ identifier: \"Session.ForkBoundary\" })\nexport type Boundary = typeof Boundary.Type\n\nexport const RequestBoundary = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"before\"), messageID: SessionMessage.ID }),\n Schema.Struct({ type: Schema.Literal(\"through\") }),\n]).annotate({ identifier: \"Session.ForkRequestBoundary\" })\nexport type RequestBoundary = typeof RequestBoundary.Type\n", | ||
| "export * as Instruction from \"./instruction.js\"\n\nimport { Schema } from \"effect\"\n\nexport const Key = Schema.String.check(Schema.isPattern(/^[a-z0-9][a-z0-9._-]*\\/[a-z0-9][a-z0-9._/-]*$/)).pipe(\n Schema.brand(\"Instruction.Key\"),\n)\nexport type Key = typeof Key.Type\n\nexport const Hash = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/)).pipe(Schema.brand(\"Instruction.Hash\"))\nexport type Hash = typeof Hash.Type\n\nexport const Values = Schema.Record(Key, Hash)\nexport type Values = Readonly<Record<string, Hash>>\n\nexport const Removed = Schema.Literal(\"removed\")\nexport type Removed = typeof Removed.Type\nexport const removed = Removed.make(\"removed\")\n\nexport const Delta = Schema.Record(Schema.String, Schema.Union([Hash, Removed]))\nexport type Delta = typeof Delta.Type\n", | ||
| "export * as InstructionEntry from \"./instruction-entry.js\"\n\nimport { Schema } from \"effect\"\n\n/**\n * Slash-free client-facing key for one API-managed instruction entry. The server\n * derives the namespaced Instructions key as `api/<key>`, keeping the\n * `api/*` namespace enforced by construction.\n */\nexport const Key = Schema.String.check(Schema.isPattern(/^[a-z0-9][a-z0-9._-]*$/)).annotate({\n identifier: \"InstructionEntry.Key\",\n description: \"Instruction entry key (lowercase alphanumerics plus . _ -)\",\n})\nexport type Key = typeof Key.Type\n\nexport const Info = Schema.Struct({\n key: Key,\n value: Schema.Json.annotate({ description: \"JSON value attached to the session's instructions\" }),\n}).annotate({ identifier: \"InstructionEntry.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Snapshot = Schema.Array(\n Schema.Struct({\n ...Info.fields,\n removed: Schema.Boolean,\n }),\n).annotate({ identifier: \"InstructionEntry.Snapshot\" })\nexport type Snapshot = typeof Snapshot.Type\n\nexport const MaxValueBytes = 8 * 1024\n\nexport class ValueTooLargeError extends Schema.TaggedError<ValueTooLargeError>()(\n \"InstructionEntryValueTooLargeError\",\n {\n actualBytes: Schema.Int,\n maxBytes: Schema.Int,\n message: Schema.String,\n },\n { httpApiStatus: 413 },\n) {}\n", | ||
| "export * as SessionInbox from \"./session-inbox.js\"\n\nimport { Schema } from \"effect\"\nimport { Location } from \"./location.js\"\nimport { Project } from \"./project.js\"\nimport { Prompt } from \"./prompt.js\"\nimport { DateTimeUtcFromMillis, optional, RelativePath } from \"./schema.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport const Delivery = Schema.Literals([\"steer\", \"queue\"]).annotate({ identifier: \"Session.Inbox.Delivery\" })\nexport type Delivery = typeof Delivery.Type\n\nexport interface UserPayload extends Schema.Schema.Type<typeof UserPayload> {}\nexport const UserPayload = Schema.Struct({\n ...Prompt.fields,\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.UserPayload\" })\n\nexport interface SyntheticPayload extends Schema.Schema.Type<typeof SyntheticPayload> {}\nexport const SyntheticPayload = Schema.Struct({\n text: Schema.String,\n description: Schema.String.pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.SyntheticPayload\" })\n\nexport interface CompactionPayload extends Schema.Schema.Type<typeof CompactionPayload> {}\nexport const CompactionPayload = Schema.Struct({}).annotate({ identifier: \"Session.Inbox.CompactionPayload\" })\n\nexport interface MovePayload extends Schema.Schema.Type<typeof MovePayload> {}\nexport const MovePayload = Schema.Struct({\n location: Location.Ref,\n projectID: Project.ID,\n subpath: RelativePath.pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.MovePayload\" })\n\nconst UserItem = Schema.Struct({ type: Schema.tag(\"user\"), payload: UserPayload, delivery: Delivery })\nconst SyntheticItem = Schema.Struct({ type: Schema.tag(\"synthetic\"), payload: SyntheticPayload, delivery: Delivery })\nconst CompactionItem = Schema.Struct({\n type: Schema.tag(\"compaction\"),\n payload: CompactionPayload,\n delivery: Delivery,\n})\nconst MoveItem = Schema.Struct({ type: Schema.tag(\"move\"), payload: MovePayload, delivery: Delivery })\n\nexport const Item = Schema.Union([UserItem, SyntheticItem, CompactionItem, MoveItem]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Session.Inbox.Item\" }),\n)\nexport type Item = typeof Item.Type\n\nconst Enqueued = {\n id: SessionMessage.ID,\n sessionID: SessionID,\n timeCreated: DateTimeUtcFromMillis,\n}\n\nexport interface User extends Schema.Schema.Type<typeof User> {}\nexport const User = Schema.Struct({ ...Enqueued, ...UserItem.fields }).annotate({ identifier: \"Session.Inbox.User\" })\n\nexport interface Synthetic extends Schema.Schema.Type<typeof Synthetic> {}\nexport const Synthetic = Schema.Struct({ ...Enqueued, ...SyntheticItem.fields }).annotate({\n identifier: \"Session.Inbox.Synthetic\",\n})\n\nexport interface Compaction extends Schema.Schema.Type<typeof Compaction> {}\nexport const Compaction = Schema.Struct({ ...Enqueued, ...CompactionItem.fields }).annotate({\n identifier: \"Session.Inbox.Compaction\",\n})\n\nexport interface Move extends Schema.Schema.Type<typeof Move> {}\nexport const Move = Schema.Struct({ ...Enqueued, ...MoveItem.fields }).annotate({ identifier: \"Session.Inbox.Move\" })\n\nexport const Info = Schema.Union([User, Synthetic, Compaction, Move]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Session.Inbox.Info\" }),\n)\nexport type Info = typeof Info.Type\n", | ||
| "export * as SessionEvent from \"./session-event.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { Event } from \"./event.js\"\nimport { FinishReason } from \"./llm.js\"\nimport { Content } from \"./tool.js\"\nimport { Model } from \"./model.js\"\nimport { NonNegativeInt, PositiveInt, RelativePath } from \"./schema.js\"\nimport { FileAttachment } from \"./prompt.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { Location } from \"./location.js\"\nimport { SessionMessage } from \"./session-message.js\"\nimport { Revert } from \"./session-revert.js\"\nimport { Shell as ShellSchema } from \"./shell.js\"\nimport { SessionError } from \"./session-error.js\"\nimport { Instruction } from \"./instruction.js\"\nimport { InstructionEntry } from \"./instruction-entry.js\"\nimport { Agent } from \"./agent.js\"\nimport { Skill as SkillSchema } from \"./skill.js\"\nimport { Money } from \"./money.js\"\nimport { Snapshot } from \"./snapshot.js\"\nimport { TokenUsage } from \"./token-usage.js\"\nimport { SessionInbox } from \"./session-inbox.js\"\nimport { Project } from \"./project.js\"\nimport { SessionFork } from \"./session-fork.js\"\n\nexport { FileAttachment }\n\nexport const Source = Schema.Struct({\n start: NonNegativeInt,\n end: NonNegativeInt,\n text: Schema.String,\n}).annotate({\n identifier: \"Session.Event.Source\",\n})\nexport interface Source extends Schema.Schema.Type<typeof Source> {}\n\nconst Base = {\n sessionID: SessionID,\n}\n\nconst options = {\n durable: {\n aggregate: \"sessionID\",\n version: 1,\n },\n} as const\nexport const Created = Event.durable({\n type: \"session.created\",\n ...options,\n schema: {\n ...Base,\n projectID: Project.ID,\n location: Location.Ref,\n subpath: RelativePath.pipe(optional),\n parentID: SessionID.pipe(optional),\n slug: Schema.String,\n title: Schema.String.pipe(optional),\n agent: Agent.ID.pipe(optional),\n model: Model.Ref.pipe(optional),\n version: Schema.String,\n },\n})\nexport type Created = typeof Created.Type\n\nexport const AgentSelected = Event.durable({\n type: \"session.agent.selected\",\n ...options,\n schema: {\n ...Base,\n agent: Agent.ID,\n previous: Agent.ID.pipe(optional),\n },\n})\nexport type AgentSelected = typeof AgentSelected.Type\n\nexport const ModelSelected = Event.durable({\n type: \"session.model.selected\",\n ...options,\n schema: {\n ...Base,\n model: Model.Ref,\n previous: Model.Ref.pipe(optional),\n },\n})\nexport type ModelSelected = typeof ModelSelected.Type\n\nexport const Moved = Event.durable({\n type: \"session.moved\",\n ...options,\n schema: {\n ...Base,\n ...SessionInbox.MovePayload.fields,\n },\n})\nexport type Moved = typeof Moved.Type\n\nexport const Renamed = Event.durable({\n type: \"session.renamed\",\n ...options,\n schema: {\n ...Base,\n title: Schema.String,\n },\n})\nexport type Renamed = typeof Renamed.Type\n\nexport const Viewed = Event.durable({\n type: \"session.viewed\",\n ...options,\n schema: {\n ...Base,\n /** Epoch-millisecond idle watermark the viewer observed; projection never marks a newer idle transition viewed. */\n idle: Schema.Finite,\n },\n})\nexport type Viewed = typeof Viewed.Type\n\nexport const UsageRecorded = Event.durable({\n type: \"session.usage.recorded\",\n ...options,\n schema: {\n ...Base,\n source: Schema.Literals([\"title\", \"compaction\"]),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n },\n})\nexport type UsageRecorded = typeof UsageRecorded.Type\n\nexport const UsageUpdated = Event.ephemeral({\n type: \"session.usage.updated\",\n schema: {\n ...Base,\n cost: Money.USD,\n tokens: TokenUsage.Info,\n },\n})\nexport type UsageUpdated = typeof UsageUpdated.Type\n\nexport const Deleted = Event.durable({\n type: \"session.deleted\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: Base,\n})\nexport type Deleted = typeof Deleted.Type\n\nexport const Forked = Event.durable({\n type: \"session.forked\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...Base,\n parentID: SessionID,\n boundary: SessionFork.Boundary,\n instructions: Instruction.Values.pipe(optional),\n instructionEntries: InstructionEntry.Snapshot.pipe(optional),\n },\n})\nexport type Forked = typeof Forked.Type\n\nconst InboxRef = {\n ...Base,\n inboxID: SessionMessage.ID,\n}\n\nexport const InboxDelivered = Event.durable({\n type: \"session.inbox.delivered\",\n ...options,\n schema: InboxRef,\n})\nexport type InboxDelivered = typeof InboxDelivered.Type\n\nexport const InboxEnqueued = Event.durable({\n type: \"session.inbox.enqueued\",\n ...options,\n schema: {\n ...InboxRef,\n item: SessionInbox.Item,\n },\n})\nexport type InboxEnqueued = typeof InboxEnqueued.Type\n\nexport const InboxCancelled = Event.durable({\n type: \"session.inbox.cancelled\",\n ...options,\n schema: InboxRef,\n})\nexport type InboxCancelled = typeof InboxCancelled.Type\n\nexport const InboxDeliveryChanged = Event.durable({\n type: \"session.inbox.delivery.changed\",\n ...options,\n schema: { ...InboxRef, delivery: SessionInbox.Delivery },\n})\nexport type InboxDeliveryChanged = typeof InboxDeliveryChanged.Type\n\nexport namespace Execution {\n export const Started = Event.durable({ type: \"session.execution.started\", ...options, schema: Base })\n export type Started = typeof Started.Type\n\n export const Succeeded = Event.durable({ type: \"session.execution.succeeded\", ...options, schema: Base })\n export type Succeeded = typeof Succeeded.Type\n\n export const Failed = Event.durable({\n type: \"session.execution.failed\",\n ...options,\n schema: { ...Base, error: SessionError.Error },\n })\n export type Failed = typeof Failed.Type\n\n export const Interrupted = Event.durable({\n type: \"session.execution.interrupted\",\n ...options,\n schema: { ...Base, reason: Schema.Literals([\"user\", \"shutdown\", \"superseded\"]) },\n })\n export type Interrupted = typeof Interrupted.Type\n}\n\nexport const InstructionsUpdated = Event.durable({\n type: \"session.instructions.updated\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...Base,\n delta: Instruction.Delta,\n /**\n * The rendered chronological update shown to the model, frozen at emit time.\n * Absent for the initial baseline observation and for deltas that render empty.\n */\n text: Schema.String.pipe(optional),\n },\n})\nexport type InstructionsUpdated = typeof InstructionsUpdated.Type\n\nexport const Synthetic = Event.durable({\n type: \"session.synthetic\",\n ...options,\n schema: {\n ...Base,\n text: Schema.String,\n description: Schema.String.pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n },\n})\nexport type Synthetic = typeof Synthetic.Type\n\nexport namespace Skill {\n export const Activated = Event.durable({\n type: \"session.skill.activated\",\n ...options,\n schema: {\n ...Base,\n id: SkillSchema.ID,\n name: SkillSchema.Name,\n text: Schema.String,\n },\n })\n export type Activated = typeof Activated.Type\n}\n\nexport namespace Shell {\n export const Started = Event.durable({\n type: \"session.shell.started\",\n ...options,\n schema: {\n ...Base,\n shell: ShellSchema.Info,\n },\n })\n export type Started = typeof Started.Type\n\n export const Ended = Event.durable({\n type: \"session.shell.ended\",\n ...options,\n schema: {\n ...Base,\n shell: ShellSchema.Info,\n output: ShellSchema.Output,\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Step {\n export const Started = Event.durable({\n type: \"session.step.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n agent: Agent.ID,\n model: Model.Ref,\n snapshot: Snapshot.ID.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n export const Ended = Event.durable({\n type: \"session.step.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n finish: FinishReason,\n rawFinish: Schema.String.pipe(optional),\n providerState: SessionMessage.ProviderState.pipe(optional),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n\n export const Failed = Event.durable({\n type: \"session.step.failed\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n error: SessionError.Error,\n finish: Schema.Literals([\"content-filter\"]).pipe(optional),\n rawFinish: Schema.String.pipe(optional),\n providerState: SessionMessage.ProviderState.pipe(optional),\n cost: Money.USD.pipe(optional),\n tokens: TokenUsage.Info.pipe(optional),\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport namespace Text {\n export const Started = Event.durable({\n type: \"session.text.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Text.Ended is the replayable full-value boundary.\n export const Delta = Event.ephemeral({\n type: \"session.text.delta\",\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.text.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n text: Schema.String,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Reasoning {\n export const Started = Event.durable({\n type: \"session.reasoning.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Reasoning.Ended is the replayable full-value boundary.\n export const Delta = Event.ephemeral({\n type: \"session.reasoning.delta\",\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.reasoning.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n text: Schema.String,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Tool {\n const ToolBase = {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n id: Schema.String,\n }\n\n export namespace Input {\n export const Started = Event.durable({\n type: \"session.tool.input.started\",\n ...options,\n schema: {\n ...ToolBase,\n name: Schema.String,\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Input.Ended is the replayable raw-input boundary.\n export const Delta = Event.ephemeral({\n type: \"session.tool.input.delta\",\n schema: {\n ...ToolBase,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.tool.input.ended\",\n ...options,\n schema: {\n ...ToolBase,\n text: Schema.String,\n },\n })\n export type Ended = typeof Ended.Type\n }\n\n export const Called = Event.durable({\n type: \"session.tool.called\",\n ...options,\n schema: {\n ...ToolBase,\n input: Schema.Record(Schema.String, Schema.Unknown),\n executed: Schema.Boolean,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Called = typeof Called.Type\n\n /** Live replacement metadata for a running tool. */\n export const Progress = Event.ephemeral({\n type: \"session.tool.progress\",\n schema: {\n ...ToolBase,\n metadata: Schema.Record(Schema.String, Schema.Json),\n },\n })\n export type Progress = typeof Progress.Type\n\n /** Canonical terminal success: one non-empty model representation plus optional UI metadata. */\n export const Success = Event.durable({\n type: \"session.tool.success\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...ToolBase,\n content: Schema.NonEmptyArray(Content),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n executed: Schema.Boolean,\n resultState: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Success = typeof Success.Type\n\n /**\n * Canonical terminal failure: one error plus the final bounded snapshot of\n * partial progress. The event is self-contained; projection never reaches\n * into ephemeral progress history.\n */\n export const Failed = Event.durable({\n type: \"session.tool.failed\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...ToolBase,\n error: SessionError.Error,\n content: Schema.NonEmptyArray(Content).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n executed: Schema.Boolean,\n resultState: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport const RetryScheduled = Event.durable({\n type: \"session.retry.scheduled\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n attempt: PositiveInt,\n at: NonNegativeInt,\n error: SessionError.Error,\n },\n})\nexport type RetryScheduled = typeof RetryScheduled.Type\n\nexport namespace Compaction {\n export const Started = Event.durable({\n type: \"session.compaction.started\",\n ...options,\n schema: {\n ...Base,\n reason: Schema.Literals([\"auto\", \"manual\"]),\n recent: Schema.String,\n inputID: SessionMessage.ID.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n export const Delta = Event.ephemeral({\n type: \"session.compaction.delta\",\n schema: {\n ...Base,\n text: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.compaction.ended\",\n ...options,\n schema: {\n ...Base,\n reason: Started.data.fields.reason,\n text: Schema.String,\n recent: Schema.String,\n },\n })\n export type Ended = typeof Ended.Type\n\n export const Failed = Event.durable({\n type: \"session.compaction.failed\",\n ...options,\n schema: {\n ...Base,\n reason: Started.data.fields.reason,\n error: SessionError.Error,\n inputID: SessionMessage.ID.pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport namespace RevertEvent {\n export const Staged = Event.durable({\n type: \"session.revert.staged\",\n ...options,\n schema: { ...Base, revert: Revert },\n })\n export const Cleared = Event.durable({ type: \"session.revert.cleared\", ...options, schema: Base })\n export const Committed = Event.durable({\n type: \"session.revert.committed\",\n ...options,\n schema: { ...Base, to: SessionMessage.ID },\n })\n}\n\nexport const Definitions = Event.inventory(\n Created,\n AgentSelected,\n ModelSelected,\n Moved,\n Renamed,\n Viewed,\n UsageUpdated,\n Deleted,\n Forked,\n InboxDelivered,\n InboxEnqueued,\n InboxCancelled,\n InboxDeliveryChanged,\n Execution.Started,\n Execution.Succeeded,\n Execution.Failed,\n Execution.Interrupted,\n InstructionsUpdated,\n Synthetic,\n Skill.Activated,\n Shell.Started,\n Shell.Ended,\n Step.Started,\n Step.Ended,\n Step.Failed,\n Text.Started,\n Text.Delta,\n Text.Ended,\n Reasoning.Started,\n Reasoning.Delta,\n Reasoning.Ended,\n Tool.Input.Started,\n Tool.Input.Delta,\n Tool.Input.Ended,\n Tool.Called,\n Tool.Progress,\n Tool.Success,\n Tool.Failed,\n RetryScheduled,\n Compaction.Started,\n Compaction.Delta,\n Compaction.Ended,\n Compaction.Failed,\n RevertEvent.Staged,\n RevertEvent.Cleared,\n RevertEvent.Committed,\n)\n\n// UsageRecorded is durable but internal: excluded from Definitions so it never reaches the public manifest.\nexport const DurableDefinitions = Event.inventory(\n ...Definitions.filter((definition) => definition.durability === \"durable\"),\n UsageRecorded,\n)\nexport const EphemeralDefinitions = Event.inventory(\n ...Definitions.filter((definition) => definition.durability === \"ephemeral\"),\n)\n\nexport const Durable = Schema.Union(DurableDefinitions, { mode: \"oneOf\" })\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Session.Event.Durable\" })\nexport type DurableEvent = typeof Durable.Type\n\nexport const All = Schema.Union([Durable, ...EphemeralDefinitions], { mode: \"oneOf\" }).pipe(\n Schema.toTaggedUnion(\"type\"),\n)\nexport type Event = typeof All.Type\nexport type Type = Event[\"type\"]\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "5552FE669A7D7CDA64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/unset.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.unset,\n Effect.fn(\"cli.service.unset\")(function* (input) {\n yield* ServiceConfig.unset(input.key, Option.getOrUndefined(input.name))\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,MACnC,EAAO,GAAG,mBAAmB,EAAE,SAAU,CAAC,EAAO,CAC/C,MAAO,EAAc,MAAM,EAAM,IAAK,EAAO,eAAe,EAAM,IAAI,CAAC,EACxE,CACH", | ||
| "debugId": "3D36A35FFE51A31964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+togetherai@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/togetherai/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/togetherai-provider.ts\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel\n} from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/togetherai-reranking-model.ts\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/togetherai-reranking-api.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\nvar togetheraiErrorSchema = lazySchema(\n () => zodSchema(\n z.object({\n error: z.object({\n message: z.string()\n })\n })\n )\n);\nvar togetheraiRerankingResponseSchema = lazySchema(\n () => zodSchema(\n z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n results: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number()\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number()\n })\n })\n )\n);\n\n// src/reranking/togetherai-reranking-options.ts\nimport { lazySchema as lazySchema2, zodSchema as zodSchema2 } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar togetheraiRerankingModelOptionsSchema = lazySchema2(\n () => zodSchema2(\n z2.object({\n rankFields: z2.array(z2.string()).optional()\n })\n )\n);\n\n// src/reranking/togetherai-reranking-model.ts\nvar TogetherAIRerankingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n // see https://docs.together.ai/reference/rerank-1\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions\n }) {\n var _a, _b;\n const rerankingOptions = await parseProviderOptions({\n provider: \"togetherai\",\n providerOptions,\n schema: togetheraiRerankingModelOptionsSchema\n });\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n documents: documents.values,\n query,\n top_n: topN,\n rank_fields: rerankingOptions == null ? void 0 : rerankingOptions.rankFields,\n return_documents: false\n // reduce response size\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: (data) => data.error.message\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiRerankingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n ranking: response.results.map((result) => ({\n index: result.index,\n relevanceScore: result.relevance_score\n })),\n response: {\n id: (_a = response.id) != null ? _a : void 0,\n modelId: (_b = response.model) != null ? _b : void 0,\n headers: responseHeaders,\n body: rawValue\n }\n };\n }\n};\n\n// src/togetherai-image-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertImageModelFileToDataUri,\n createJsonResponseHandler as createJsonResponseHandler2,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler2,\n lazySchema as lazySchema3,\n parseProviderOptions as parseProviderOptions2,\n postJsonToApi as postJsonToApi2,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\nvar TogetherAIImageModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n this.maxImagesPerCall = 1;\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask\n }) {\n var _a, _b, _c;\n const warnings = [];\n if (mask != null) {\n throw new Error(\n \"Together AI does not support mask-based image editing. Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) with a reference image and descriptive prompt instead.\"\n );\n }\n if (size != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"aspectRatio\",\n details: \"This model does not support the `aspectRatio` option. Use `size` instead.\"\n });\n }\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const togetheraiOptions = await parseProviderOptions2({\n provider: \"togetherai\",\n providerOptions,\n schema: togetheraiImageModelOptionsSchema\n });\n let imageUrl;\n if (files != null && files.length > 0) {\n imageUrl = convertImageModelFileToDataUri(files[0]);\n if (files.length > 1) {\n warnings.push({\n type: \"other\",\n message: \"Together AI only supports a single input image. Additional images are ignored.\"\n });\n }\n }\n const splitSize = size == null ? void 0 : size.split(\"x\");\n const { value: response, responseHeaders } = await postJsonToApi2({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n ...n > 1 ? { n } : {},\n ...splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1])\n },\n ...imageUrl != null ? { image_url: imageUrl } : {},\n response_format: \"base64\",\n ...togetheraiOptions != null ? togetheraiOptions : {}\n },\n failedResponseHandler: createJsonErrorResponseHandler2({\n errorSchema: togetheraiErrorSchema2,\n errorToMessage: (data) => data.error.message\n }),\n successfulResponseHandler: createJsonResponseHandler2(\n togetheraiImageResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response.data.map((item) => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders\n }\n };\n }\n};\nvar togetheraiImageResponseSchema = z3.object({\n data: z3.array(\n z3.object({\n b64_json: z3.string()\n })\n )\n});\nvar togetheraiErrorSchema2 = z3.object({\n error: z3.object({\n message: z3.string()\n })\n});\nvar togetheraiImageModelOptionsSchema = lazySchema3(\n () => zodSchema3(\n z3.object({\n /**\n * Number of generation steps. Higher values can improve quality.\n */\n steps: z3.number().nullish(),\n /**\n * Guidance scale for image generation.\n */\n guidance: z3.number().nullish(),\n /**\n * Negative prompt to guide what to avoid.\n */\n negative_prompt: z3.string().nullish(),\n /**\n * Disable the safety checker for image generation.\n * When true, the API will not reject images flagged as potentially NSFW.\n * Not available for Flux Schnell Free and Flux Pro models.\n */\n disable_safety_checker: z3.boolean().nullish()\n }).passthrough()\n )\n);\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/togetherai-provider.ts\nfunction loadDeprecatedApiKey() {\n if (typeof process === \"undefined\") {\n return void 0;\n }\n if (typeof process.env.TOGETHER_API_KEY === \"string\") {\n return void 0;\n }\n const key = process.env.TOGETHER_AI_API_KEY;\n if (typeof key === \"string\") {\n console.warn(\n \"TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead.\"\n );\n }\n return key;\n}\nfunction createTogetherAI(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.together.xyz/v1/\"\n );\n const getHeaders = () => {\n var _a2;\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: (_a2 = options.apiKey) != null ? _a2 : loadDeprecatedApiKey(),\n environmentVariableName: \"TOGETHER_API_KEY\",\n description: \"TogetherAI\"\n })}`,\n ...options.headers\n },\n `ai-sdk/togetherai/${VERSION}`\n );\n };\n const getCommonModelConfig = (modelType) => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig(\"chat\")\n );\n };\n const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig(\"completion\")\n );\n const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig(\"embedding\")\n );\n const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig(\"image\"),\n baseURL: baseURL != null ? baseURL : \"https://api.together.xyz/v1/\"\n });\n const createRerankingModel = (modelId) => new TogetherAIRerankingModel(modelId, {\n ...getCommonModelConfig(\"reranking\"),\n baseURL: baseURL != null ? baseURL : \"https://api.together.xyz/v1/\"\n });\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n return provider;\n}\nvar togetherai = createTogetherAI();\nexport {\n VERSION,\n createTogetherAI,\n togetherai\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B1188AED2E5D455264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "0B98ECA21A2B235664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/display.ts"], | ||
| "sourcesContent": [ | ||
| "import { stringWidth } from \"../util/string-width\"\n\nconst graphemes = new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n\nexport function promptOffsetWidth(value: string) {\n let width = 0\n for (const part of graphemes.segment(value)) {\n // Textarea offsets count newlines as one position; terminal width counts them as zero.\n width += part.segment === \"\\n\" ? 1 : stringWidth(part.segment)\n }\n return width\n}\n\nfunction displayOffsetIndex(value: string, offset: number) {\n if (offset <= 0) return 0\n\n let width = 0\n for (const part of graphemes.segment(value)) {\n const next = width + promptOffsetWidth(part.segment)\n if (next > offset) return part.index\n width = next\n }\n\n return value.length\n}\n\nexport function displaySlice(value: string, start = 0, end = promptOffsetWidth(value)) {\n return value.slice(displayOffsetIndex(value, start), displayOffsetIndex(value, end))\n}\n\nexport function displayCharAt(value: string, offset: number) {\n let width = 0\n for (const part of graphemes.segment(value)) {\n const next = width + promptOffsetWidth(part.segment)\n if (offset === width || offset < next) return part.segment\n width = next\n }\n}\n\nexport function mentionTriggerIndex(value: string, offset = promptOffsetWidth(value)) {\n const text = displaySlice(value, 0, offset)\n const index = text.lastIndexOf(\"@\")\n if (index === -1) return\n\n const before = index === 0 ? undefined : text[index - 1]\n const query = text.slice(index)\n if ((before === undefined || /\\s/.test(before)) && !/\\s/.test(query)) {\n return promptOffsetWidth(text.slice(0, index))\n }\n}\n\nexport function slashTriggerIndex(value: string, offset = promptOffsetWidth(value)) {\n const text = displaySlice(value, 0, offset)\n for (let index = text.lastIndexOf(\"/\"); index >= 0; index = text.lastIndexOf(\"/\", index - 1)) {\n const before = index === 0 ? undefined : text[index - 1]\n const query = text.slice(index)\n if (before !== undefined && !/\\s/.test(before)) continue\n if (/\\s/.test(query) || query.slice(1).includes(\"/\")) return\n return promptOffsetWidth(text.slice(0, index))\n }\n}\n" | ||
| ], | ||
| "mappings": ";oDAEA,IAAM,EAAY,IAAI,KAAK,UAAU,OAAW,CAAE,YAAa,UAAW,CAAC,EAEpE,SAAS,CAAiB,CAAC,EAAe,CAC/C,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAExC,GAAS,EAAK,UAAY;AAAA,EAAO,EAAI,EAAY,EAAK,OAAO,EAE/D,OAAO,EAGT,SAAS,CAAkB,CAAC,EAAe,EAAgB,CACzD,GAAI,GAAU,EAAG,MAAO,GAExB,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAAG,CAC3C,IAAM,EAAO,EAAQ,EAAkB,EAAK,OAAO,EACnD,GAAI,EAAO,EAAQ,OAAO,EAAK,MAC/B,EAAQ,EAGV,OAAO,EAAM,OAGR,SAAS,CAAY,CAAC,EAAe,EAAQ,EAAG,EAAM,EAAkB,CAAK,EAAG,CACrF,OAAO,EAAM,MAAM,EAAmB,EAAO,CAAK,EAAG,EAAmB,EAAO,CAAG,CAAC,EAG9E,SAAS,CAAa,CAAC,EAAe,EAAgB,CAC3D,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAAG,CAC3C,IAAM,EAAO,EAAQ,EAAkB,EAAK,OAAO,EACnD,GAAI,IAAW,GAAS,EAAS,EAAM,OAAO,EAAK,QACnD,EAAQ,GAIL,SAAS,CAAmB,CAAC,EAAe,EAAS,EAAkB,CAAK,EAAG,CACpF,IAAM,EAAO,EAAa,EAAO,EAAG,CAAM,EACpC,EAAQ,EAAK,YAAY,GAAG,EAClC,GAAI,IAAU,GAAI,OAElB,IAAM,EAAS,IAAU,EAAI,OAAY,EAAK,EAAQ,GAChD,EAAQ,EAAK,MAAM,CAAK,EAC9B,IAAK,IAAW,QAAa,KAAK,KAAK,CAAM,IAAM,CAAC,KAAK,KAAK,CAAK,EACjE,OAAO,EAAkB,EAAK,MAAM,EAAG,CAAK,CAAC,EAI1C,SAAS,CAAiB,CAAC,EAAe,EAAS,EAAkB,CAAK,EAAG,CAClF,IAAM,EAAO,EAAa,EAAO,EAAG,CAAM,EAC1C,QAAS,EAAQ,EAAK,YAAY,GAAG,EAAG,GAAS,EAAG,EAAQ,EAAK,YAAY,IAAK,EAAQ,CAAC,EAAG,CAC5F,IAAM,EAAS,IAAU,EAAI,OAAY,EAAK,EAAQ,GAChD,EAAQ,EAAK,MAAM,CAAK,EAC9B,GAAI,IAAW,QAAa,CAAC,KAAK,KAAK,CAAM,EAAG,SAChD,GAAI,KAAK,KAAK,CAAK,GAAK,EAAM,MAAM,CAAC,EAAE,SAAS,GAAG,EAAG,OACtD,OAAO,EAAkB,EAAK,MAAM,EAAG,CAAK,CAAC", | ||
| "debugId": "A1C5C174F28B89ED64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "4BDA04340CCA7E9864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-compatible-chat.ts"], | ||
| "sourcesContent": [ | ||
| "import { Route, type RouteRoutedLanguageModelInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport * as OpenAIChat from \"./openai-chat.js\"\n\nconst ADAPTER = \"openai-compatible-chat\"\n\nexport type OpenAICompatibleChatLanguageModelInput = RouteRoutedLanguageModelInput\n\n/**\n * Route for non-OpenAI providers that expose an OpenAI Chat-compatible\n * `/chat/completions` endpoint. Reuses `OpenAIChat.protocol` end-to-end and\n * overrides only the route id so providers can be resolved per-family without\n * colliding with native OpenAI. Provider helpers configure the route endpoint\n * before model selection.\n */\nexport const route = Route.make({\n id: ADAPTER,\n providerMetadataKey: \"openai\",\n protocol: OpenAIChat.protocol,\n endpoint: Endpoint.path(\"/chat/completions\"),\n framing: Framing.sse,\n})\n\nexport * as OpenAICompatibleChat from \"./openai-compatible-chat.js\"\n" | ||
| ], | ||
| "mappings": ";mOAKA,IAAM,EAAU,yBAWH,EAAQ,EAAM,KAAK,CAC9B,GAAI,EACJ,oBAAqB,SACrB,SAAqB,EACrB,SAAU,EAAS,KAAK,mBAAmB,EAC3C,QAAS,EAAQ,GACnB,CAAC", | ||
| "debugId": "8EE7829FC5970A9064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "9C9878FF60903F3664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-shared.ts"], | ||
| "sourcesContent": [ | ||
| "import type { AnyAuthClient } from \"google-auth-library\"\nimport { Effect, Redacted } from \"effect\"\nimport { Auth, MissingCredentialError } from \"../route/auth.js\"\n\nconst SCOPE = \"https://www.googleapis.com/auth/cloud-platform\"\n\nexport type OAuthOptions =\n | { readonly accessToken?: string; readonly auth?: never }\n | { readonly accessToken?: never; readonly auth?: Auth.Definition }\n\nexport type ApiKeyOptions =\n | (OAuthOptions & { readonly apiKey?: never })\n | { readonly accessToken?: never; readonly apiKey?: string; readonly auth?: never }\n\nexport const project = (value?: string) =>\n value ??\n process.env.GOOGLE_VERTEX_PROJECT ??\n process.env.GOOGLE_CLOUD_PROJECT ??\n process.env.GCP_PROJECT ??\n process.env.GCLOUD_PROJECT\n\nexport const location = (value: string | undefined, fallback: string) =>\n value ??\n process.env.GOOGLE_VERTEX_LOCATION ??\n process.env.GOOGLE_CLOUD_LOCATION ??\n process.env.VERTEX_LOCATION ??\n fallback\n\nexport const host = (location: string) => {\n if (location === \"global\") return \"aiplatform.googleapis.com\"\n // Jurisdictional multi-regions use Regional Endpoint Platform domains.\n if (location === \"eu\" || location === \"us\") return `aiplatform.${location}.rep.googleapis.com`\n return `${location}-aiplatform.googleapis.com`\n}\n\nexport const requireProject = (value: string | undefined) => {\n if (value) return value\n throw new Error(\"Google Vertex requires a project when baseURL is not configured\")\n}\n\nexport const apiKey = (input: ApiKeyOptions) => {\n if (input.apiKey !== undefined && (input.accessToken !== undefined || input.auth !== undefined))\n throw new Error(\"Google Vertex apiKey cannot be combined with accessToken or auth\")\n if (input.accessToken !== undefined || input.auth !== undefined) return undefined\n return input.apiKey ?? process.env.GOOGLE_VERTEX_API_KEY\n}\n\nconst adc = (project?: string) => {\n let client: Promise<AnyAuthClient> | undefined\n const loadClient = () => {\n if (client) return client\n client = import(\"google-auth-library\").then(({ GoogleAuth }) =>\n new GoogleAuth({ projectId: project, scopes: [SCOPE] }).getClient(),\n )\n return client\n }\n return Auth.effect(\n Effect.tryPromise({\n try: async () => {\n const token = await (await loadClient()).getAccessToken()\n if (!token.token) throw new Error(\"Google ADC returned an empty access token\")\n return Redacted.make(token.token)\n },\n catch: () => new MissingCredentialError(\"Google Application Default Credentials\"),\n }),\n ).bearer()\n}\n\nexport const oauth = (input: OAuthOptions, project?: string) => {\n if (input.accessToken !== undefined && input.auth !== undefined)\n throw new Error(\"Google Vertex accessToken cannot be combined with auth\")\n if (input.auth) return input.auth\n if (input.accessToken !== undefined) return Auth.bearer(input.accessToken)\n return adc(project)\n}\n\nexport * as GoogleVertexShared from \"./google-vertex-shared.js\"\n" | ||
| ], | ||
| "mappings": ";2TAIA,IAAM,EAAQ,iDAUD,EAAU,CAAC,IACtB,GACA,QAAQ,IAAI,uBACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI,aACZ,QAAQ,IAAI,eAED,EAAW,CAAC,EAA2B,IAClD,GACA,QAAQ,IAAI,wBACZ,QAAQ,IAAI,uBACZ,QAAQ,IAAI,iBACZ,EAEW,EAAO,CAAC,IAAqB,CACxC,GAAI,IAAa,SAAU,MAAO,4BAElC,GAAI,IAAa,MAAQ,IAAa,KAAM,MAAO,cAAc,uBACjE,MAAO,GAAG,+BAGC,EAAiB,CAAC,IAA8B,CAC3D,GAAI,EAAO,OAAO,EAClB,MAAU,MAAM,iEAAiE,GAGtE,EAAS,CAAC,IAAyB,CAC9C,GAAI,EAAM,SAAW,SAAc,EAAM,cAAgB,QAAa,EAAM,OAAS,QACnF,MAAU,MAAM,kEAAkE,EACpF,GAAI,EAAM,cAAgB,QAAa,EAAM,OAAS,OAAW,OACjE,OAAO,EAAM,QAAU,QAAQ,IAAI,uBAG/B,EAAM,CAAC,IAAqB,CAChC,IAAI,EACE,EAAa,IAAM,CACvB,GAAI,EAAQ,OAAO,EAInB,OAHA,EAAgB,mEAAuB,KAAK,EAAG,gBAC7C,IAAI,EAAW,CAAE,UAAW,EAAS,OAAQ,CAAC,CAAK,CAAE,CAAC,EAAE,UAAU,CACpE,EACO,GAET,OAAO,EAAK,OACV,EAAO,WAAW,CAChB,IAAK,SAAY,CACf,IAAM,EAAQ,MAAO,MAAM,EAAW,GAAG,eAAe,EACxD,GAAI,CAAC,EAAM,MAAO,MAAU,MAAM,2CAA2C,EAC7E,OAAO,EAAS,KAAK,EAAM,KAAK,GAElC,MAAO,IAAM,IAAI,EAAuB,wCAAwC,CAClF,CAAC,CACH,EAAE,OAAO,GAGE,EAAQ,CAAC,EAAqB,IAAqB,CAC9D,GAAI,EAAM,cAAgB,QAAa,EAAM,OAAS,OACpD,MAAU,MAAM,wDAAwD,EAC1E,GAAI,EAAM,KAAM,OAAO,EAAM,KAC7B,GAAI,EAAM,cAAgB,OAAW,OAAO,EAAK,OAAO,EAAM,WAAW,EACzE,OAAO,EAAI,CAAO", | ||
| "debugId": "9E381545110D743B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/persistence.ts", "../tui/src/model-preference.ts"], | ||
| "sourcesContent": [ | ||
| "import path from \"path\"\nimport { appendFile, mkdir, readFile, rename, rm, writeFile } from \"fs/promises\"\n\nexport function readText(filePath: string) {\n return readFile(filePath, \"utf8\")\n}\n\nexport async function readJson<T>(filePath: string) {\n return JSON.parse(await readFile(filePath, \"utf8\")) as T\n}\n\nexport async function writeText(filePath: string, content: string) {\n await mkdir(path.dirname(filePath), { recursive: true })\n await writeFile(filePath, content)\n}\n\nexport async function appendText(filePath: string, content: string) {\n await mkdir(path.dirname(filePath), { recursive: true })\n await appendFile(filePath, content)\n}\n\nexport async function writeJsonAtomic(filePath: string, value: unknown) {\n await mkdir(path.dirname(filePath), { recursive: true })\n const temporary = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`\n await writeFile(temporary, JSON.stringify(value)).catch(async (error) => {\n await rm(temporary, { force: true }).catch(() => undefined)\n throw error\n })\n await rename(temporary, filePath).catch(async (error) => {\n await rm(temporary, { force: true }).catch(() => undefined)\n throw error\n })\n}\n", | ||
| "import { readJson, writeJsonAtomic } from \"./util/persistence\"\nimport { isRecord } from \"./util/record\"\n\nexport type ModelPreferenceModel = {\n providerID: string\n modelID: string\n}\n\nexport type ModelPreference = {\n recent: ModelPreferenceModel[]\n favorite: ModelPreferenceModel[]\n variant: Record<string, string | undefined>\n}\n\nexport type ModelPreferenceDocument = Record<string, unknown> & ModelPreference\n\nfunction models(value: unknown) {\n if (!Array.isArray(value)) return []\n return value.flatMap((item): ModelPreferenceModel[] => {\n if (!isRecord(item)) return []\n if (typeof item.providerID !== \"string\" || item.providerID.length === 0) return []\n if (typeof item.modelID !== \"string\" || item.modelID.length === 0) return []\n return [{ providerID: item.providerID, modelID: item.modelID }]\n })\n}\n\nfunction variants(value: unknown) {\n if (!isRecord(value)) return {}\n return Object.fromEntries(\n Object.entries(value).flatMap(([key, item]) => {\n if (key.length === 0 || typeof item !== \"string\" || item.length === 0) return []\n const variant = normalizeModelVariant(item)\n return variant === undefined ? [] : ([[key, variant]] as const)\n }),\n )\n}\n\nexport function normalizeModelVariant(value: string | undefined) {\n return value === \"default\" ? undefined : value\n}\n\nexport function modelPreferenceKey(model: ModelPreferenceModel) {\n return `${model.providerID}/${model.modelID}`\n}\n\nexport function cycleModelVariant(current: string | undefined, variants: string[]) {\n const named = variants.filter((variant) => variant !== \"default\")\n if (named.length === 0) return undefined\n const value = normalizeModelVariant(current)\n if (value === undefined) return named[0]\n const index = named.indexOf(value)\n if (index === -1 || index === named.length - 1) return undefined\n return named[index + 1]\n}\n\nexport function decodeModelPreference(value: unknown): ModelPreferenceDocument {\n const root = isRecord(value) ? value : {}\n return {\n ...root,\n recent: models(root.recent),\n favorite: models(root.favorite),\n variant: variants(root.variant),\n }\n}\n\nfunction preference(value: ModelPreferenceDocument): ModelPreference {\n return {\n recent: value.recent,\n favorite: value.favorite,\n variant: value.variant,\n }\n}\n\nfunction patch(value: Partial<ModelPreference>) {\n return {\n ...(value.recent === undefined ? {} : { recent: models(value.recent) }),\n ...(value.favorite === undefined ? {} : { favorite: models(value.favorite) }),\n ...(value.variant === undefined ? {} : { variant: variants(value.variant) }),\n }\n}\n\nexport function createModelPreferenceRepository(filePath: string) {\n const state = {\n pending: Promise.resolve(),\n }\n const read = () =>\n readJson<unknown>(filePath)\n .then(decodeModelPreference)\n .catch(() => decodeModelPreference(undefined))\n\n function update(change: (current: ModelPreference) => Partial<ModelPreference>) {\n const result = state.pending.then(async () => {\n const current = await read()\n const next = { ...current, ...patch(change(preference(current))) }\n await writeJsonAtomic(filePath, next)\n })\n state.pending = result.catch(() => undefined)\n return result\n }\n\n function load() {\n return state.pending.then(read).then(preference)\n }\n\n return {\n load,\n patch(value: Partial<ModelPreference>) {\n return update(() => value)\n },\n async resolveVariant(model: ModelPreferenceModel) {\n return (await load()).variant[modelPreferenceKey(model)]\n },\n saveVariant(model: ModelPreferenceModel, value: string | undefined) {\n const key = modelPreferenceKey(model)\n const next = normalizeModelVariant(value)\n return update((current) => {\n const variant = { ...current.variant }\n if (next === undefined) delete variant[key]\n if (next !== undefined) variant[key] = next\n return { variant }\n })\n },\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F80864DED08A08DC64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/cache.ts"], | ||
| "sourcesContent": [ | ||
| "// Shared counter and TTL mapping for provider cache-marker lowering.\n\nexport interface Breakpoints {\n remaining: number\n dropped: number\n}\n\nexport const newBreakpoints = (cap: number): Breakpoints => ({ remaining: cap, dropped: 0 })\n\n// Requests of at least one hour use the explicit `\"1h\"` bucket; shorter\n// requests omit the wire TTL and use the provider default.\nexport const ttlBucket = (ttlSeconds: number | undefined): \"1h\" | undefined =>\n ttlSeconds !== undefined && ttlSeconds >= 3600 ? \"1h\" : undefined\n" | ||
| ], | ||
| "mappings": ";AAOO,IAAM,EAAiB,CAAC,KAA8B,CAAE,UAAW,EAAK,QAAS,CAAE,GAI7E,EAAY,CAAC,IACxB,IAAe,QAAa,GAAc,KAAO,KAAO", | ||
| "debugId": "374168805904558564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/workspace.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Workspace from \"./workspace.js\"\n\nimport { Schema } from \"effect\"\nimport { WorkspaceEvent } from \"./workspace-event.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport const ID = WorkspaceID\nexport type ID = WorkspaceID\n\nexport const DestroyResult = Schema.Struct({\n destroyed: Schema.Boolean.annotate({\n description: \"True when this request transitioned the workspace from existing to destroyed.\",\n }),\n}).annotate({\n identifier: \"WorkspaceDestroyResult\",\n description: \"Reports whether this request destroyed an existing workspace.\",\n})\nexport interface DestroyResult extends Schema.Schema.Type<typeof DestroyResult> {}\n\nexport const Event = WorkspaceEvent\n" | ||
| ], | ||
| "mappings": ";yRAMO,IAAM,EAAK,EAGL,EAAgB,EAAO,OAAO,CACzC,UAAW,EAAO,QAAQ,SAAS,CACjC,YAAa,+EACf,CAAC,CACH,CAAC,EAAE,SAAS,CACV,WAAY,yBACZ,YAAa,+DACf,CAAC,EAGY,EAAQ", | ||
| "debugId": "09E2ED14CDA0042664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst k = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = { [k]: \"Endpoint\" }, h = { [k]: d }, i = {}, j = [{ [k]: \"Region\" }];\nconst _data = {\n conditions: [\n [c, [g]],\n [c, j],\n [\"aws.partition\", j, d],\n [e, [{ [k]: \"UseFIPS\" }, b]],\n [e, [{ [k]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [h, \"supportsDualStack\"] }, b]],\n [e, [{ fn: f, argv: [h, \"supportsFIPS\"] }, b]],\n [\"stringEquals\", [{ fn: f, argv: [h, \"name\"] }, \"aws-us-gov\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [g, i],\n [\"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://oidc.{Region}.amazonaws.com\", i],\n [\"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 13, 3,\n 1, 4, r + 12,\n 2, 5, r + 12,\n 3, 8, 6,\n 4, 7, r + 11,\n 5, r + 9, r + 10,\n 4, 11, 9,\n 6, 10, r + 8,\n 7, r + 6, r + 7,\n 5, 12, r + 5,\n 6, r + 4, r + 5,\n 3, r + 1, 14,\n 4, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SSOOIDCServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SSOOIDCServiceException.prototype);\n }\n}\n\nclass AccessDeniedException extends SSOOIDCServiceException {\n name = \"AccessDeniedException\";\n $fault = \"client\";\n error;\n reason;\n error_description;\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AccessDeniedException.prototype);\n this.error = opts.error;\n this.reason = opts.reason;\n this.error_description = opts.error_description;\n }\n}\nclass AuthorizationPendingException extends SSOOIDCServiceException {\n name = \"AuthorizationPendingException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass ExpiredTokenException extends SSOOIDCServiceException {\n name = \"ExpiredTokenException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InternalServerException extends SSOOIDCServiceException {\n name = \"InternalServerException\";\n $fault = \"server\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidClientException extends SSOOIDCServiceException {\n name = \"InvalidClientException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidGrantException extends SSOOIDCServiceException {\n name = \"InvalidGrantException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidRequestException extends SSOOIDCServiceException {\n name = \"InvalidRequestException\";\n $fault = \"client\";\n error;\n reason;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidRequestException.prototype);\n this.error = opts.error;\n this.reason = opts.reason;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidScopeException extends SSOOIDCServiceException {\n name = \"InvalidScopeException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass SlowDownException extends SSOOIDCServiceException {\n name = \"SlowDownException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass UnauthorizedClientException extends SSOOIDCServiceException {\n name = \"UnauthorizedClientException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass UnsupportedGrantTypeException extends SSOOIDCServiceException {\n name = \"UnsupportedGrantTypeException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\n\nconst _ADE = \"AccessDeniedException\";\nconst _APE = \"AuthorizationPendingException\";\nconst _AT = \"AccessToken\";\nconst _CS = \"ClientSecret\";\nconst _CT = \"CreateToken\";\nconst _CTR = \"CreateTokenRequest\";\nconst _CTRr = \"CreateTokenResponse\";\nconst _CV = \"CodeVerifier\";\nconst _ETE = \"ExpiredTokenException\";\nconst _ICE = \"InvalidClientException\";\nconst _IGE = \"InvalidGrantException\";\nconst _IRE = \"InvalidRequestException\";\nconst _ISE = \"InternalServerException\";\nconst _ISEn = \"InvalidScopeException\";\nconst _IT = \"IdToken\";\nconst _RT = \"RefreshToken\";\nconst _SDE = \"SlowDownException\";\nconst _UCE = \"UnauthorizedClientException\";\nconst _UGTE = \"UnsupportedGrantTypeException\";\nconst _aT = \"accessToken\";\nconst _c = \"client\";\nconst _cI = \"clientId\";\nconst _cS = \"clientSecret\";\nconst _cV = \"codeVerifier\";\nconst _co = \"code\";\nconst _dC = \"deviceCode\";\nconst _e = \"error\";\nconst _eI = \"expiresIn\";\nconst _ed = \"error_description\";\nconst _gT = \"grantType\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _iT = \"idToken\";\nconst _r = \"reason\";\nconst _rT = \"refreshToken\";\nconst _rU = \"redirectUri\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.ssooidc\";\nconst _sc = \"scope\";\nconst _se = \"server\";\nconst _tT = \"tokenType\";\nconst n0 = \"com.amazonaws.ssooidc\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SSOOIDCServiceException$ = [-3, _s, \"SSOOIDCServiceException\", 0, [], []];\n_s_registry.registerError(SSOOIDCServiceException$, SSOOIDCServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar AccessDeniedException$ = [-3, n0, _ADE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _r, _ed],\n [0, 0, 0]\n];\nn0_registry.registerError(AccessDeniedException$, AccessDeniedException);\nvar AuthorizationPendingException$ = [-3, n0, _APE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(AuthorizationPendingException$, AuthorizationPendingException);\nvar ExpiredTokenException$ = [-3, n0, _ETE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(ExpiredTokenException$, ExpiredTokenException);\nvar InternalServerException$ = [-3, n0, _ISE,\n { [_e]: _se, [_hE]: 500 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InternalServerException$, InternalServerException);\nvar InvalidClientException$ = [-3, n0, _ICE,\n { [_e]: _c, [_hE]: 401 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidClientException$, InvalidClientException);\nvar InvalidGrantException$ = [-3, n0, _IGE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidGrantException$, InvalidGrantException);\nvar InvalidRequestException$ = [-3, n0, _IRE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _r, _ed],\n [0, 0, 0]\n];\nn0_registry.registerError(InvalidRequestException$, InvalidRequestException);\nvar InvalidScopeException$ = [-3, n0, _ISEn,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidScopeException$, InvalidScopeException);\nvar SlowDownException$ = [-3, n0, _SDE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(SlowDownException$, SlowDownException);\nvar UnauthorizedClientException$ = [-3, n0, _UCE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(UnauthorizedClientException$, UnauthorizedClientException);\nvar UnsupportedGrantTypeException$ = [-3, n0, _UGTE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(UnsupportedGrantTypeException$, UnsupportedGrantTypeException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar AccessToken = [0, n0, _AT, 8, 0];\nvar ClientSecret = [0, n0, _CS, 8, 0];\nvar CodeVerifier = [0, n0, _CV, 8, 0];\nvar IdToken = [0, n0, _IT, 8, 0];\nvar RefreshToken = [0, n0, _RT, 8, 0];\nvar CreateTokenRequest$ = [3, n0, _CTR,\n 0,\n [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV],\n [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], 3\n];\nvar CreateTokenResponse$ = [3, n0, _CTRr,\n 0,\n [_aT, _tT, _eI, _rT, _iT],\n [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]]\n];\nvar CreateToken$ = [9, n0, _CT,\n { [_h]: [\"POST\", \"/token\", 200] }, () => CreateTokenRequest$, () => CreateTokenResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.ssooidc\",\n errorTypeRegistries,\n version: \"2019-06-10\",\n serviceTarget: \"AWSSSOOIDCService\",\n },\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SSOOIDCClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSSOOIDCHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"AWSSSOOIDCService\", \"SSOOIDCClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass CreateTokenCommand extends command(_ep0, _mw0, \"CreateToken\", CreateToken$) {\n}\n\nconst commands = {\n CreateTokenCommand,\n};\nclass SSOOIDC extends SSOOIDCClient {\n}\ncreateAggregatedClient(commands, SSOOIDC);\n\nconst AccessDeniedExceptionReason = {\n KMS_ACCESS_DENIED: \"KMS_AccessDeniedException\",\n};\nconst InvalidRequestExceptionReason = {\n KMS_DISABLED_KEY: \"KMS_DisabledException\",\n KMS_INVALID_KEY_USAGE: \"KMS_InvalidKeyUsageException\",\n KMS_INVALID_STATE: \"KMS_InvalidStateException\",\n KMS_KEY_NOT_FOUND: \"KMS_NotFoundException\",\n};\n\nexports.AccessDeniedException = AccessDeniedException;\nexports.AccessDeniedException$ = AccessDeniedException$;\nexports.AccessDeniedExceptionReason = AccessDeniedExceptionReason;\nexports.AuthorizationPendingException = AuthorizationPendingException;\nexports.AuthorizationPendingException$ = AuthorizationPendingException$;\nexports.CreateToken$ = CreateToken$;\nexports.CreateTokenCommand = CreateTokenCommand;\nexports.CreateTokenRequest$ = CreateTokenRequest$;\nexports.CreateTokenResponse$ = CreateTokenResponse$;\nexports.ExpiredTokenException = ExpiredTokenException;\nexports.ExpiredTokenException$ = ExpiredTokenException$;\nexports.InternalServerException = InternalServerException;\nexports.InternalServerException$ = InternalServerException$;\nexports.InvalidClientException = InvalidClientException;\nexports.InvalidClientException$ = InvalidClientException$;\nexports.InvalidGrantException = InvalidGrantException;\nexports.InvalidGrantException$ = InvalidGrantException$;\nexports.InvalidRequestException = InvalidRequestException;\nexports.InvalidRequestException$ = InvalidRequestException$;\nexports.InvalidRequestExceptionReason = InvalidRequestExceptionReason;\nexports.InvalidScopeException = InvalidScopeException;\nexports.InvalidScopeException$ = InvalidScopeException$;\nexports.SSOOIDC = SSOOIDC;\nexports.SSOOIDCClient = SSOOIDCClient;\nexports.SSOOIDCServiceException = SSOOIDCServiceException;\nexports.SSOOIDCServiceException$ = SSOOIDCServiceException$;\nexports.SlowDownException = SlowDownException;\nexports.SlowDownException$ = SlowDownException$;\nexports.UnauthorizedClientException = UnauthorizedClientException;\nexports.UnauthorizedClientException$ = UnauthorizedClientException$;\nexports.UnsupportedGrantTypeException = UnsupportedGrantTypeException;\nexports.UnsupportedGrantTypeException$ = UnsupportedGrantTypeException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "2B1D6A321242AB3564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/constants.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js"], | ||
| "sourcesContent": [ | ||
| "import { CredentialsProviderError, getProfileName, loadSsoSessionData, parseKnownFiles } from \"@smithy/core/config\";\nimport { isSsoProfile } from \"./isSsoProfile\";\nimport { resolveSSOCredentials } from \"./resolveSSOCredentials\";\nimport { validateSsoProfile } from \"./validateSsoProfile\";\nexport const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-sso - fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await parseKnownFiles(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger });\n }\n if (!isSsoProfile(profile)) {\n throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, {\n logger: init.logger,\n });\n }\n if (profile?.sso_session) {\n const ssoSessions = await loadSsoSessionData(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger);\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient: ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new CredentialsProviderError(\"Incomplete configuration. The fromSSO() argument hash must include \" +\n '\"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"', { tryNextLink: false, logger: init.logger });\n }\n else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n};\n", | ||
| "export const isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_session === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { fromSso as getSsoTokenProvider } from \"@aws-sdk/token-providers\";\nimport { CredentialsProviderError, getSSOTokenFromFile } from \"@smithy/core/config\";\nconst SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nexport const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await getSsoTokenProvider({\n profile,\n filepath,\n configFilepath,\n ignoreCache,\n clientConfig,\n parentClientConfig,\n logger,\n })({ callerClientConfig });\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString(),\n };\n }\n catch (e) {\n throw new CredentialsProviderError(e.message, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n else {\n try {\n token = await getSSOTokenFromFile(ssoStartUrl);\n }\n catch (e) {\n throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { accessToken } = token;\n const { SSOClient, GetRoleCredentialsCommand } = await import(\"./loadSso.js\");\n const sso = ssoClient ||\n new SSOClient(Object.assign({}, clientConfig ?? {}, {\n logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger,\n region: clientConfig?.region ?? ssoRegion,\n userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId,\n }));\n let ssoResp;\n try {\n ssoResp = await sso.send(new GetRoleCredentialsCommand({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken,\n }));\n }\n catch (e) {\n throw new CredentialsProviderError(e, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new CredentialsProviderError(\"SSO returns an invalid temporary credential.\", {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration: new Date(expiration),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n if (ssoSession) {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO\", \"s\");\n }\n else {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO_LEGACY\", \"u\");\n }\n return credentials;\n};\n", | ||
| "import { getProfileName, getSSOTokenFromFile, loadSsoSessionData, parseKnownFiles, TokenProviderError, } from \"@smithy/core/config\";\nimport { EXPIRE_WINDOW_MS, REFRESH_MESSAGE } from \"./constants\";\nimport { getNewSsoOidcToken } from \"./getNewSsoOidcToken\";\nimport { validateTokenExpiry } from \"./validateTokenExpiry\";\nimport { validateTokenKey } from \"./validateTokenKey\";\nimport { writeSSOTokenToFile } from \"./writeSSOTokenToFile\";\nconst lastRefreshAttemptTime = new Date(0);\nexport const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/token-providers - fromSso\");\n const profiles = await parseKnownFiles(init);\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n const profile = profiles[profileName];\n if (!profile) {\n throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n }\n else if (!profile[\"sso_session\"]) {\n throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await loadSsoSessionData(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false);\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false);\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await getSSOTokenFromFile(ssoSessionName);\n }\n catch (e) {\n throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false);\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken,\n });\n }\n catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration,\n };\n }\n catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n};\n", | ||
| "export const EXPIRE_WINDOW_MS = 5 * 60 * 1000;\nexport const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n", | ||
| "export const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => {\n const { SSOOIDCClient } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop];\n const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, {\n region: ssoRegion ?? init.clientConfig?.region,\n logger: coalesce(\"logger\"),\n userAgentAppId: coalesce(\"userAgentAppId\"),\n }));\n return ssoOidcClient;\n};\n", | ||
| "import { getSsoOidcClient } from \"./getSsoOidcClient\";\nexport const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => {\n const { CreateTokenCommand } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig);\n return ssoOidcClient.send(new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\",\n }));\n};\n", | ||
| "import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenExpiry = (token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n};\n", | ||
| "import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenKey = (key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`, false);\n }\n};\n", | ||
| "import { getSSOTokenFilepath } from \"@smithy/core/config\";\nimport { promises as fsPromises } from \"node:fs\";\nconst { writeFile } = fsPromises;\nexport const writeSSOTokenToFile = (id, ssoToken) => {\n const tokenFilepath = getSSOTokenFilepath(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nexport const validateSsoProfile = (profile, logger) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", ` +\n `\"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\", \")}\\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger });\n }\n return profile;\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "1BE6A97AD745D6EF64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/mcp.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Mcp from \"./mcp.js\"\n\nimport { Schema } from \"effect\"\nimport { optional, PositiveInt } from \"./schema.js\"\nimport { IntegrationID } from \"./integration-id.js\"\n\nexport class TimeoutConfig extends Schema.Class<TimeoutConfig>(\"Mcp.TimeoutConfig\")({\n startup: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to establish and initialize the MCP server.\",\n }),\n catalog: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to wait for MCP discovery requests such as tools/list and prompts/list.\",\n }),\n execution: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to wait for MCP tool and prompt execution.\",\n }),\n}) {}\n\nexport class LocalConfig extends Schema.Class<LocalConfig>(\"Mcp.LocalConfig\")({\n type: Schema.Literal(\"local\"),\n command: Schema.String.pipe(Schema.Array),\n cwd: Schema.String.pipe(optional).annotate({\n description: \"Working directory for the MCP server process. Relative paths resolve from the workspace directory.\",\n }),\n environment: Schema.Record(Schema.String, Schema.String).pipe(optional),\n disabled: Schema.Boolean.pipe(optional),\n codemode: Schema.Boolean.pipe(optional).annotate({\n description: \"Expose this server's tools through Code Mode. Defaults to true.\",\n }),\n timeout: TimeoutConfig.pipe(optional),\n}) {}\n\nexport class OAuthConfig extends Schema.Class<OAuthConfig>(\"Mcp.OAuthConfig\")({\n client_id: Schema.String.pipe(optional),\n client_secret: Schema.String.pipe(optional),\n scope: Schema.String.pipe(optional),\n callback_port: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 })).pipe(optional),\n redirect_uri: Schema.String.pipe(optional),\n}) {}\n\nexport class RemoteConfig extends Schema.Class<RemoteConfig>(\"Mcp.RemoteConfig\")({\n type: Schema.Literal(\"remote\"),\n url: Schema.String,\n headers: Schema.Record(Schema.String, Schema.String).pipe(optional),\n oauth: Schema.Union([OAuthConfig, Schema.Literal(false)]).pipe(optional),\n disabled: Schema.Boolean.pipe(optional),\n codemode: Schema.Boolean.pipe(optional).annotate({\n description: \"Expose this server's tools through Code Mode. Defaults to true.\",\n }),\n timeout: TimeoutConfig.pipe(optional),\n}) {}\n\nexport const ServerConfig = Schema.Union([LocalConfig, RemoteConfig]).pipe(Schema.toTaggedUnion(\"type\"))\nexport type ServerConfig = typeof ServerConfig.Type\n\nconst Connected = Schema.Struct({ status: Schema.Literal(\"connected\") }).annotate({\n identifier: \"Mcp.Status.Connected\",\n})\nconst Pending = Schema.Struct({ status: Schema.Literal(\"pending\") }).annotate({\n identifier: \"Mcp.Status.Pending\",\n})\nconst Disabled = Schema.Struct({ status: Schema.Literal(\"disabled\") }).annotate({\n identifier: \"Mcp.Status.Disabled\",\n})\nconst Failed = Schema.Struct({ status: Schema.Literal(\"failed\"), error: Schema.String }).annotate({\n identifier: \"Mcp.Status.Failed\",\n})\nconst NeedsAuth = Schema.Struct({ status: Schema.Literal(\"needs_auth\") }).annotate({\n identifier: \"Mcp.Status.NeedsAuth\",\n})\n\nexport type Status = typeof Status.Type\nexport const Status = Schema.Union([Connected, Pending, Disabled, Failed, NeedsAuth]).pipe(\n Schema.toTaggedUnion(\"status\"),\n)\n\nexport interface Server extends Schema.Schema.Type<typeof Server> {}\nexport const Server = Schema.Struct({\n name: Schema.String,\n status: Status,\n // Set for remote servers registered as OAuth integrations; lets clients act on the right integration\n // without matching by name, which could collide with provider or plugin integrations.\n integrationID: optional(IntegrationID),\n}).annotate({ identifier: \"Mcp.Server\" })\n\nexport interface Resource extends Schema.Schema.Type<typeof Resource> {}\nexport const Resource = Schema.Struct({\n server: Schema.String,\n name: Schema.String,\n uri: Schema.String,\n description: optional(Schema.String),\n mimeType: optional(Schema.String),\n}).annotate({ identifier: \"Mcp.Resource\" })\n\nexport interface ResourceTemplate extends Schema.Schema.Type<typeof ResourceTemplate> {}\nexport const ResourceTemplate = Schema.Struct({\n server: Schema.String,\n name: Schema.String,\n uriTemplate: Schema.String,\n description: optional(Schema.String),\n mimeType: optional(Schema.String),\n}).annotate({ identifier: \"Mcp.ResourceTemplate\" })\n\nexport interface ResourceCatalog extends Schema.Schema.Type<typeof ResourceCatalog> {}\nexport const ResourceCatalog = Schema.Struct({\n resources: Schema.Array(Resource),\n templates: Schema.Array(ResourceTemplate),\n}).annotate({ identifier: \"Mcp.ResourceCatalog\" })\n\nexport const ResourceContentPart = Schema.Union([\n Schema.Struct({\n type: Schema.Literal(\"text\"),\n uri: Schema.String,\n text: Schema.String,\n mimeType: optional(Schema.String),\n }),\n Schema.Struct({\n type: Schema.Literal(\"blob\"),\n uri: Schema.String,\n blob: Schema.String,\n mimeType: optional(Schema.String),\n }),\n]).pipe(Schema.toTaggedUnion(\"type\"), Schema.annotate({ identifier: \"Mcp.ResourceContentPart\" }))\nexport type ResourceContentPart = typeof ResourceContentPart.Type\n\nexport interface ResourceContent extends Schema.Schema.Type<typeof ResourceContent> {}\nexport const ResourceContent = Schema.Struct({\n server: Schema.String,\n uri: Schema.String,\n contents: Schema.Array(ResourceContentPart),\n}).annotate({ identifier: \"Mcp.ResourceContent\" })\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "647BC55F7CE8BF0D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+vercel@2.0.39+d6123d32214422cb/node_modules/@ai-sdk/vercel/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/vercel-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"2.0.39\" : \"0.0.0-test\";\n\n// src/vercel-provider.ts\nfunction createVercel(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.v0.dev/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"VERCEL_API_KEY\",\n description: \"Vercel\"\n })}`,\n ...options.headers\n },\n `ai-sdk/vercel/${VERSION}`\n );\n const getCommonModelConfig = (modelType) => ({\n provider: `vercel.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig(\"chat\")\n });\n };\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar vercel = createVercel();\nexport {\n VERSION,\n createVercel,\n vercel\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";+WAYA,IAAI,EAAiB,SAGrB,SAAS,CAAY,CAAC,EAAU,CAAC,EAAG,CAClC,IAAI,EACJ,IAAM,EAAU,GACb,EAAK,EAAQ,UAAY,KAAO,EAAK,uBACxC,EACM,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,iBACzB,YAAa,QACf,CAAC,OACE,EAAQ,OACb,EACA,iBAAiB,GACnB,EACM,EAAuB,CAAC,KAAe,CAC3C,SAAU,UAAU,IACpB,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,KACjB,GACM,EAAkB,CAAC,IAChB,IAAI,EAAkC,EAAS,IACjD,EAAqB,MAAM,CAChC,CAAC,EAEG,EAAW,CAAC,IAAY,EAAgB,CAAO,EAUrD,OATA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,eAAiB,CAAC,IAAY,CACrC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,gBAAiB,CAAC,GAErE,EAAS,mBAAqB,EAAS,eACvC,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAE1D,EAET,IAAI,EAAS,EAAa", | ||
| "debugId": "7A64E4CC2AB30FF964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "872E76DA967AF30564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+mistral@3.0.51+d6123d32214422cb/node_modules/@ai-sdk/mistral/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/mistral-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/mistral-chat-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n injectJsonInstructionIntoMessages,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/convert-mistral-usage.ts\nfunction convertMistralUsage(usage) {\n var _a, _b, _c, _d, _e;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = usage.prompt_tokens;\n const completionTokens = usage.completion_tokens;\n const cacheReadTokens = (_e = (_d = (_b = usage.num_cached_tokens) != null ? _b : (_a = usage.prompt_tokens_details) == null ? void 0 : _a.cached_tokens) != null ? _d : (_c = usage.prompt_token_details) == null ? void 0 : _c.cached_tokens) != null ? _e : 0;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens || void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens,\n reasoning: void 0\n },\n raw: usage\n };\n}\n\n// src/convert-to-mistral-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nfunction formatFileUrl({\n data,\n mediaType\n}) {\n return data instanceof URL ? data.toString() : `data:${mediaType};base64,${convertToBase64(data)}`;\n}\nfunction convertToMistralChatMessages(prompt) {\n var _a;\n const messages = [];\n for (let i = 0; i < prompt.length; i++) {\n const { role, content } = prompt[i];\n const isLastMessage = i === prompt.length - 1;\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"file\": {\n if (part.mediaType.startsWith(\"image/\")) {\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n return {\n type: \"image_url\",\n image_url: formatFileUrl({ data: part.data, mediaType })\n };\n } else if (part.mediaType === \"application/pdf\") {\n return {\n type: \"document_url\",\n document_url: formatFileUrl({\n data: part.data,\n mediaType: \"application/pdf\"\n })\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: \"Only images and PDF file parts are supported\"\n });\n }\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const structuredContent = [];\n let hasNativeReasoning = false;\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n structuredContent.push({ type: \"text\", text: part.text });\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n case \"reasoning\": {\n text += part.text;\n const native = part.providerOptions?.mistral?.thinking;\n if (native?.type === \"thinking\") {\n hasNativeReasoning = true;\n structuredContent.push(native);\n break;\n }\n structuredContent.push({ type: \"text\", text: part.text });\n break;\n }\n default: {\n throw new Error(\n `Unsupported content type in assistant message: ${part.type}`\n );\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: hasNativeReasoning ? structuredContent : text,\n prefix: isLastMessage ? true : void 0,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue;\n }\n const output = toolResponse.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool call execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n messages.push({\n role: \"tool\",\n name: toolResponse.toolName,\n tool_call_id: toolResponse.toolCallId,\n content: contentValue\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/map-mistral-finish-reason.ts\nfunction mapMistralFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"model_length\":\n return \"length\";\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/mistral-chat-options.ts\nimport { z } from \"zod/v4\";\nvar mistralLanguageModelOptions = z.object({\n /**\n * Whether to inject a safety prompt before all conversations.\n *\n * Defaults to `false`.\n */\n safePrompt: z.boolean().optional(),\n documentImageLimit: z.number().optional(),\n documentPageLimit: z.number().optional(),\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n /**\n * Whether to enable parallel function calling during tool use.\n * When set to false, the model will use at most one tool per response.\n *\n * @default true\n */\n parallelToolCalls: z.boolean().optional(),\n /**\n * Controls the reasoning effort for models that support adjustable reasoning.\n *\n * - `'high'`: Enable reasoning\n * - `'none'`: Disable reasoning\n */\n reasoningEffort: z.enum([\"high\", \"none\"]).optional(),\n promptCacheKey: z.string().optional()\n});\n\n// src/mistral-error.ts\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar mistralErrorDataSchema = z2.object({\n object: z2.literal(\"error\"),\n message: z2.string(),\n type: z2.string(),\n param: z2.string().nullable(),\n code: z2.string().nullable()\n});\nvar mistralFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: mistralErrorDataSchema,\n errorToMessage: (data) => data.message\n});\n\n// src/mistral-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n tools,\n toolChoice\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const mistralTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n } else {\n mistralTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...tool.strict != null ? { strict: tool.strict } : {}\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: mistralTools, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n return { tools: mistralTools, toolChoice: type, toolWarnings };\n case \"required\":\n return { tools: mistralTools, toolChoice: \"any\", toolWarnings };\n // mistral does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case \"tool\":\n return {\n tools: mistralTools.filter(\n (tool) => tool.function.name === toolChoice.toolName\n ),\n toolChoice: \"any\",\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/mistral-chat-language-model.ts\nvar MistralChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n \"application/pdf\": [/^https:\\/\\/.*$/]\n };\n var _a;\n this.modelId = modelId;\n this.config = config;\n this.generateId = (_a = config.generateId) != null ? _a : generateId;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n tools,\n toolChoice\n }) {\n var _a, _b, _c, _d;\n const warnings = [];\n const options = (_a = await parseProviderOptions({\n provider: \"mistral\",\n providerOptions,\n schema: mistralLanguageModelOptions\n })) != null ? _a : {};\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n const structuredOutputs = (_b = options.structuredOutputs) != null ? _b : true;\n const strictJsonSchema = (_c = options.strictJsonSchema) != null ? _c : false;\n if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\" && !(responseFormat == null ? void 0 : responseFormat.schema)) {\n prompt = injectJsonInstructionIntoMessages({\n messages: prompt,\n schema: responseFormat.schema\n });\n }\n const baseArgs = {\n // model id:\n model: this.modelId,\n // model specific settings:\n safe_prompt: options.safePrompt,\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n ...frequencyPenalty != null ? { frequency_penalty: frequencyPenalty } : {},\n ...presencePenalty != null ? { presence_penalty: presencePenalty } : {},\n stop: stopSequences,\n random_seed: seed,\n reasoning_effort: options.reasoningEffort,\n prompt_cache_key: options.promptCacheKey,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? structuredOutputs && (responseFormat == null ? void 0 : responseFormat.schema) != null ? {\n type: \"json_schema\",\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: (_d = responseFormat.name) != null ? _d : \"response\",\n description: responseFormat.description\n }\n } : { type: \"json_object\" } : void 0,\n // mistral-specific provider options:\n document_image_limit: options.documentImageLimit,\n document_page_limit: options.documentPageLimit,\n // messages:\n messages: convertToMistralChatMessages(prompt)\n };\n const {\n tools: mistralTools,\n toolChoice: mistralToolChoice,\n toolWarnings\n } = prepareTools({\n tools,\n toolChoice\n });\n return {\n args: {\n ...baseArgs,\n tools: mistralTools,\n tool_choice: mistralToolChoice,\n ...mistralTools != null && options.parallelToolCalls !== void 0 ? { parallel_tool_calls: options.parallelToolCalls } : {}\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n async doGenerate(options) {\n var _a;\n const { args: body, warnings } = await this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n mistralChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n if (choice.message.content != null && Array.isArray(choice.message.content)) {\n for (const part of choice.message.content) {\n if (part.type === \"thinking\") {\n const reasoningText = extractReasoningContent(part.thinking);\n content.push({\n type: \"reasoning\",\n text: reasoningText,\n providerMetadata: { mistral: { thinking: part } }\n });\n } else if (part.type === \"text\") {\n if (part.text.length > 0) {\n content.push({ type: \"text\", text: part.text });\n }\n }\n }\n } else {\n const text = extractTextContent(choice.message.content);\n if (text != null && text.length > 0) {\n content.push({ type: \"text\", text });\n }\n }\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapMistralFinishReason(choice.finish_reason),\n raw: (_a = choice.finish_reason) != null ? _a : void 0\n },\n usage: convertMistralUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const body = { ...args, stream: true };\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n mistralChatChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let isFirstChunk = true;\n let activeText = false;\n let activeReasoningId = null;\n let activeThinking = null;\n const generateId2 = this.generateId;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (value.usage != null) {\n usage = value.usage;\n }\n const choice = value.choices[0];\n const delta = choice.delta;\n const textContent = extractTextContent(delta.content);\n if (delta.content != null && Array.isArray(delta.content)) {\n for (const part of delta.content) {\n if (part.type === \"thinking\") {\n const reasoningDelta = extractReasoningContent(part.thinking);\n activeThinking = mergeThinking(activeThinking, part);\n if (activeReasoningId == null) {\n if (activeText) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n activeText = false;\n }\n activeReasoningId = generateId2();\n controller.enqueue({\n type: \"reasoning-start\",\n id: activeReasoningId\n });\n }\n if (reasoningDelta.length > 0) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: activeReasoningId,\n delta: reasoningDelta\n });\n }\n }\n }\n }\n if (textContent != null && textContent.length > 0) {\n if (!activeText) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: activeReasoningId,\n providerMetadata: { mistral: { thinking: activeThinking } }\n });\n activeReasoningId = null;\n activeThinking = null;\n }\n controller.enqueue({ type: \"text-start\", id: \"0\" });\n activeText = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"0\",\n delta: textContent\n });\n }\n if ((delta == null ? void 0 : delta.tool_calls) != null) {\n for (const toolCall of delta.tool_calls) {\n const toolCallId = toolCall.id;\n const toolName = toolCall.function.name;\n const input = toolCall.function.arguments;\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallId,\n toolName\n });\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCallId,\n delta: input\n });\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCallId\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId,\n toolName,\n input\n });\n }\n }\n if (choice.finish_reason != null) {\n finishReason = {\n unified: mapMistralFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n },\n flush(controller) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: activeReasoningId,\n providerMetadata: { mistral: { thinking: activeThinking } }\n });\n }\n if (activeText) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertMistralUsage(usage)\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nfunction extractReasoningContent(thinking) {\n return thinking.filter((chunk) => chunk.type === \"text\").map((chunk) => chunk.text).join(\"\");\n}\nfunction mergeThinking(current, next) {\n if (current === null) return { ...next, thinking: [...next.thinking] };\n current.thinking.push(...next.thinking);\n if (next.closed !== void 0) current.closed = next.closed;\n if (next.signature !== void 0) current.signature = next.signature;\n return current;\n}\nfunction extractTextContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content == null) {\n return void 0;\n }\n const textContent = [];\n for (const chunk of content) {\n const { type } = chunk;\n switch (type) {\n case \"text\":\n textContent.push(chunk.text);\n break;\n case \"thinking\":\n case \"image_url\":\n case \"reference\":\n break;\n default: {\n const _exhaustiveCheck = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n return textContent.length ? textContent.join(\"\") : void 0;\n}\nvar mistralThinkingContentSchema = z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"tool_reference\"),\n tool: z3.string(),\n title: z3.string(),\n url: z3.string().nullish(),\n favicon: z3.string().nullish(),\n description: z3.string().nullish()\n }),\n z3.object({\n type: z3.literal(\"reference\"),\n reference_ids: z3.array(z3.union([z3.string(), z3.number().int()]))\n })\n]);\nvar mistralThinkChunkSchema = z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.array(mistralThinkingContentSchema),\n closed: z3.boolean().optional(),\n signature: z3.string().nullish()\n});\nvar mistralContentSchema = z3.union([\n z3.string(),\n z3.array(\n z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"image_url\"),\n image_url: z3.union([\n z3.string(),\n z3.object({\n url: z3.string(),\n detail: z3.string().nullable()\n })\n ])\n }),\n z3.object({\n type: z3.literal(\"reference\"),\n reference_ids: z3.array(z3.union([z3.string(), z3.number()]))\n }),\n mistralThinkChunkSchema\n ])\n )\n]).nullish();\nvar mistralUsageSchema = z3.object({\n prompt_tokens: z3.number(),\n completion_tokens: z3.number(),\n total_tokens: z3.number(),\n num_cached_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({ cached_tokens: z3.number().nullish() }).nullish(),\n prompt_token_details: z3.object({ cached_tokens: z3.number().nullish() }).nullish()\n});\nvar mistralChatResponseSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n message: z3.object({\n role: z3.literal(\"assistant\"),\n content: mistralContentSchema,\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n function: z3.object({ name: z3.string(), arguments: z3.string() })\n })\n ).nullish()\n }),\n index: z3.number(),\n finish_reason: z3.string().nullish()\n })\n ),\n object: z3.literal(\"chat.completion\"),\n usage: mistralUsageSchema\n});\nvar mistralChatChunkSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n delta: z3.object({\n role: z3.enum([\"assistant\"]).optional(),\n content: mistralContentSchema,\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n function: z3.object({ name: z3.string(), arguments: z3.string() })\n })\n ).nullish()\n }),\n finish_reason: z3.string().nullish(),\n index: z3.number()\n })\n ),\n usage: mistralUsageSchema.nullish()\n});\n\n// src/mistral-embedding-model.ts\nimport {\n TooManyEmbeddingValuesForCallError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders as combineHeaders2,\n createJsonResponseHandler as createJsonResponseHandler2,\n postJsonToApi as postJsonToApi2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\nvar MistralEmbeddingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.maxEmbeddingsPerCall = 32;\n this.supportsParallelCalls = false;\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n abortSignal,\n headers\n }) {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi2({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: \"float\"\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n MistralTextEmbeddingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n warnings: [],\n embeddings: response.data.map((item) => item.embedding),\n usage: response.usage ? { tokens: response.usage.prompt_tokens } : void 0,\n response: { headers: responseHeaders, body: rawValue }\n };\n }\n};\nvar MistralTextEmbeddingResponseSchema = z4.object({\n data: z4.array(z4.object({ embedding: z4.array(z4.number()) })),\n usage: z4.object({ prompt_tokens: z4.number() }).nullish()\n});\n\n// src/mistral-speech-model.ts\nimport {\n combineHeaders as combineHeaders3,\n createJsonResponseHandler as createJsonResponseHandler3,\n parseProviderOptions as parseProviderOptions2,\n postToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\n\n// src/mistral-speech-model-options.ts\nimport { z as z5 } from \"zod/v4\";\nvar mistralSpeechModelOptions = z5.object({\n /**\n * Base64-encoded reference audio for one-off voice cloning.\n *\n * When provided, this takes precedence over the standard `voice` option.\n */\n refAudio: z5.string().min(1).optional()\n});\n\n// src/mistral-speech-model.ts\nvar MistralSpeechModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n text,\n voice,\n outputFormat = \"mp3\",\n instructions,\n speed,\n language,\n providerOptions\n }) {\n const warnings = [];\n const mistralOptions = await parseProviderOptions2({\n provider: \"mistral\",\n providerOptions,\n schema: mistralSpeechModelOptions\n });\n let responseFormat = \"mp3\";\n if ([\"pcm\", \"wav\", \"mp3\", \"flac\", \"opus\"].includes(outputFormat)) {\n responseFormat = outputFormat;\n } else {\n warnings.push({\n type: \"unsupported\",\n feature: \"outputFormat\",\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`\n });\n }\n if (instructions != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"instructions\",\n details: \"Mistral speech models do not support the `instructions` option. Use a reference audio clip to guide delivery.\"\n });\n }\n if (speed != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"speed\",\n details: \"Mistral speech models do not support the `speed` option. It was ignored.\"\n });\n }\n if (language != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"language\",\n details: \"Mistral speech models do not support the `language` option. Language is inferred from the input text and voice.\"\n });\n }\n const refAudio = mistralOptions == null ? void 0 : mistralOptions.refAudio;\n const requestBody = {\n model: this.modelId,\n input: text,\n voice_id: refAudio == null ? voice : void 0,\n ref_audio: refAudio,\n response_format: responseFormat,\n stream: false\n };\n const requestBodyValues = {\n ...requestBody,\n ref_audio: refAudio == null ? void 0 : \"[redacted]\"\n };\n return { requestBody, requestBodyValues, warnings };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { requestBody, requestBodyValues, warnings } = await this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postToApi({\n url: `${this.config.baseURL}/audio/speech`,\n headers: combineHeaders3(\n { \"Content-Type\": \"application/json\" },\n (_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d),\n options.headers\n ),\n body: {\n content: JSON.stringify(requestBody),\n values: requestBodyValues\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler3(\n mistralSpeechResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n audio: response.audio_data,\n warnings,\n request: {\n body: JSON.stringify(requestBodyValues)\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar mistralSpeechResponseSchema = z6.object({\n audio_data: z6.string()\n});\n\n// src/version.ts\nvar VERSION = true ? \"3.0.51\" : \"0.0.0-test\";\n\n// src/mistral-provider.ts\nfunction createMistral(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.mistral.ai/v1\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"MISTRAL_API_KEY\",\n description: \"Mistral\"\n })}`,\n ...options.headers\n },\n `ai-sdk/mistral/${VERSION}`\n );\n const createChatModel = (modelId) => new MistralChatLanguageModel(modelId, {\n provider: \"mistral.chat\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId\n });\n const createEmbeddingModel = (modelId) => new MistralEmbeddingModel(modelId, {\n provider: \"mistral.embedding\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createSpeechModel = (modelId) => new MistralSpeechModel(modelId, {\n provider: \"mistral.speech\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const provider = function(modelId) {\n if (new.target) {\n throw new Error(\n \"The Mistral model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar mistral = createMistral();\nexport {\n VERSION,\n createMistral,\n mistral\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";sZAuBA,SAAS,CAAmB,CAAC,EAAO,CAClC,IAAI,EAAI,EAAI,EAAI,EAAI,EACpB,GAAI,GAAS,KACX,MAAO,CACL,YAAa,CACX,MAAY,OACZ,QAAc,OACd,UAAgB,OAChB,WAAiB,MACnB,EACA,aAAc,CACZ,MAAY,OACZ,KAAW,OACX,UAAgB,MAClB,EACA,IAAU,MACZ,EAEF,IAA2B,cAArB,EACyB,kBAAzB,GAAmB,EACnB,GAAmB,GAAM,GAAM,EAAK,EAAM,oBAAsB,KAAO,GAAM,EAAK,EAAM,wBAA0B,KAAY,OAAI,EAAG,gBAAkB,KAAO,GAAM,EAAK,EAAM,uBAAyB,KAAY,OAAI,EAAG,gBAAkB,KAAO,EAAK,EAC/P,MAAO,CACL,YAAa,CACX,MAAO,EACP,QAAS,EAAe,EACxB,UAAW,GAAwB,OACnC,WAAiB,MACnB,EACA,aAAc,CACZ,MAAO,EACP,KAAM,EACN,UAAgB,MAClB,EACA,IAAK,CACP,EAQF,SAAS,CAAa,EACpB,OACA,aACC,CACD,OAAO,aAAgB,IAAM,EAAK,SAAS,EAAI,QAAQ,YAAoB,EAAgB,CAAI,IAEjG,SAAS,CAA4B,CAAC,EAAQ,CAC5C,IAAI,EACJ,IAAM,EAAW,CAAC,EAClB,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,IAAQ,OAAM,WAAY,EAAO,GAC3B,EAAgB,IAAM,EAAO,OAAS,EAC5C,OAAQ,OACD,SAAU,CACb,EAAS,KAAK,CAAE,KAAM,SAAU,SAAQ,CAAC,EACzC,KACF,KACK,OAAQ,CACX,EAAS,KAAK,CACZ,KAAM,OACN,QAAS,EAAQ,IAAI,CAAC,IAAS,CAC7B,OAAQ,EAAK,UACN,OACH,MAAO,CAAE,KAAM,OAAQ,KAAM,EAAK,IAAK,MAEpC,OACH,GAAI,EAAK,UAAU,WAAW,QAAQ,EAAG,CACvC,IAAM,EAAY,EAAK,YAAc,UAAY,aAAe,EAAK,UACrE,MAAO,CACL,KAAM,YACN,UAAW,EAAc,CAAE,KAAM,EAAK,KAAM,WAAU,CAAC,CACzD,EACK,QAAI,EAAK,YAAc,kBAC5B,MAAO,CACL,KAAM,eACN,aAAc,EAAc,CAC1B,KAAM,EAAK,KACX,UAAW,iBACb,CAAC,CACH,EAEA,WAAM,IAAI,EAA8B,CACtC,cAAe,8CACjB,CAAC,GAIR,CACH,CAAC,EACD,KACF,KACK,YAAa,CAChB,IAAI,EAAO,GACL,EAAoB,CAAC,EACvB,EAAqB,GACnB,EAAY,CAAC,EACnB,QAAW,KAAQ,EACjB,OAAQ,EAAK,UACN,OAAQ,CACX,GAAQ,EAAK,KACb,EAAkB,KAAK,CAAE,KAAM,OAAQ,KAAM,EAAK,IAAK,CAAC,EACxD,KACF,KACK,YAAa,CAChB,EAAU,KAAK,CACb,GAAI,EAAK,WACT,KAAM,WACN,SAAU,CACR,KAAM,EAAK,SACX,UAAW,KAAK,UAAU,EAAK,KAAK,CACtC,CACF,CAAC,EACD,KACF,KACK,YAAa,CAChB,GAAQ,EAAK,KACb,IAAM,EAAS,EAAK,iBAAiB,SAAS,SAC9C,GAAI,GAAQ,OAAS,WAAY,CAC/B,EAAqB,GACrB,EAAkB,KAAK,CAAM,EAC7B,MAEF,EAAkB,KAAK,CAAE,KAAM,OAAQ,KAAM,EAAK,IAAK,CAAC,EACxD,KACF,SAEE,MAAU,MACR,kDAAkD,EAAK,MACzD,EAIN,EAAS,KAAK,CACZ,KAAM,YACN,QAAS,EAAqB,EAAoB,EAClD,OAAQ,EAAgB,GAAY,OACpC,WAAY,EAAU,OAAS,EAAI,EAAiB,MACtD,CAAC,EACD,KACF,KACK,OAAQ,CACX,QAAW,KAAgB,EAAS,CAClC,GAAI,EAAa,OAAS,yBACxB,SAEF,IAAM,EAAS,EAAa,OACxB,EACJ,OAAQ,EAAO,UACR,WACA,aACH,EAAe,EAAO,MACtB,UACG,mBACH,GAAgB,EAAK,EAAO,SAAW,KAAO,EAAK,8BACnD,UACG,cACA,WACA,aACH,EAAe,KAAK,UAAU,EAAO,KAAK,EAC1C,MAEJ,EAAS,KAAK,CACZ,KAAM,OACN,KAAM,EAAa,SACnB,aAAc,EAAa,WAC3B,QAAS,CACX,CAAC,EAEH,KACF,SAGE,MAAU,MAAM,qBADS,GAC8B,GAI7D,OAAO,EAIT,SAAS,CAAmB,EAC1B,KACA,QACA,WACC,CACD,MAAO,CACL,GAAI,GAAM,KAAO,EAAU,OAC3B,QAAS,GAAS,KAAO,EAAa,OACtC,UAAW,GAAW,KAAO,IAAI,KAAK,EAAU,IAAG,EAAS,MAC9D,EAIF,SAAS,CAAsB,CAAC,EAAc,CAC5C,OAAQ,OACD,OACH,MAAO,WACJ,aACA,eACH,MAAO,aACJ,aACH,MAAO,qBAEP,MAAO,SAMb,IAAI,EAA8B,EAAE,OAAO,CAMzC,WAAY,EAAE,QAAQ,EAAE,SAAS,EACjC,mBAAoB,EAAE,OAAO,EAAE,SAAS,EACxC,kBAAmB,EAAE,OAAO,EAAE,SAAS,EAMvC,kBAAmB,EAAE,QAAQ,EAAE,SAAS,EAMxC,iBAAkB,EAAE,QAAQ,EAAE,SAAS,EAOvC,kBAAmB,EAAE,QAAQ,EAAE,SAAS,EAOxC,gBAAiB,EAAE,KAAK,CAAC,OAAQ,MAAM,CAAC,EAAE,SAAS,EACnD,eAAgB,EAAE,OAAO,EAAE,SAAS,CACtC,CAAC,EAKG,GAAyB,EAAG,OAAO,CACrC,OAAQ,EAAG,QAAQ,OAAO,EAC1B,QAAS,EAAG,OAAO,EACnB,KAAM,EAAG,OAAO,EAChB,MAAO,EAAG,OAAO,EAAE,SAAS,EAC5B,KAAM,EAAG,OAAO,EAAE,SAAS,CAC7B,CAAC,EACG,EAA+B,EAA+B,CAChE,YAAa,GACb,eAAgB,CAAC,IAAS,EAAK,OACjC,CAAC,EAMD,SAAS,EAAY,EACnB,QACA,cACC,CACD,GAAS,GAAS,KAAY,OAAI,EAAM,QAAU,EAAa,OAC/D,IAAM,EAAe,CAAC,EACtB,GAAI,GAAS,KACX,MAAO,CAAE,MAAY,OAAG,WAAiB,OAAG,cAAa,EAE3D,IAAM,EAAe,CAAC,EACtB,QAAW,KAAQ,EACjB,GAAI,EAAK,OAAS,WAChB,EAAa,KAAK,CAChB,KAAM,cACN,QAAS,yBAAyB,EAAK,IACzC,CAAC,EAED,OAAa,KAAK,CAChB,KAAM,WACN,SAAU,CACR,KAAM,EAAK,KACX,YAAa,EAAK,YAClB,WAAY,EAAK,eACd,EAAK,QAAU,KAAO,CAAE,OAAQ,EAAK,MAAO,EAAI,CAAC,CACtD,CACF,CAAC,EAGL,GAAI,GAAc,KAChB,MAAO,CAAE,MAAO,EAAc,WAAiB,OAAG,cAAa,EAEjE,IAAM,EAAO,EAAW,KACxB,OAAQ,OACD,WACA,OACH,MAAO,CAAE,MAAO,EAAc,WAAY,EAAM,cAAa,MAC1D,WACH,MAAO,CAAE,MAAO,EAAc,WAAY,MAAO,cAAa,MAG3D,OACH,MAAO,CACL,MAAO,EAAa,OAClB,CAAC,IAAS,EAAK,SAAS,OAAS,EAAW,QAC9C,EACA,WAAY,MACZ,cACF,UAGA,MAAM,IAAI,EAA+B,CACvC,cAAe,qBAFQ,GAGzB,CAAC,GAMP,IAAI,GAA2B,KAAM,CACnC,WAAW,CAAC,EAAS,EAAQ,CAC3B,KAAK,qBAAuB,KAC5B,KAAK,cAAgB,CACnB,kBAAmB,CAAC,gBAAgB,CACtC,EACA,IAAI,EACJ,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,YAAc,EAAK,EAAO,aAAe,KAAO,EAAK,KAExD,SAAQ,EAAG,CACb,OAAO,KAAK,OAAO,cAEf,QAAO,EACX,SACA,kBACA,cACA,OACA,OACA,mBACA,kBACA,gBACA,iBACA,OACA,kBACA,QACA,cACC,CACD,IAAI,EAAI,EAAI,EAAI,EAChB,IAAM,EAAW,CAAC,EACZ,GAAW,EAAK,MAAM,EAAqB,CAC/C,SAAU,UACV,kBACA,OAAQ,CACV,CAAC,IAAM,KAAO,EAAK,CAAC,EACpB,GAAI,GAAQ,KACV,EAAS,KAAK,CAAE,KAAM,cAAe,QAAS,MAAO,CAAC,EAExD,IAAM,GAAqB,EAAK,EAAQ,oBAAsB,KAAO,EAAK,GACpE,GAAoB,EAAK,EAAQ,mBAAqB,KAAO,EAAK,GACxE,IAAK,GAAkB,KAAY,OAAI,EAAe,QAAU,QAAU,EAAE,GAAkB,KAAY,OAAI,EAAe,QAC3H,EAAS,EAAkC,CACzC,SAAU,EACV,OAAQ,EAAe,MACzB,CAAC,EAEH,IAAM,EAAW,CAEf,MAAO,KAAK,QAEZ,YAAa,EAAQ,WAErB,WAAY,EACZ,cACA,MAAO,KACJ,GAAoB,KAAO,CAAE,kBAAmB,CAAiB,EAAI,CAAC,KACtE,GAAmB,KAAO,CAAE,iBAAkB,CAAgB,EAAI,CAAC,EACtE,KAAM,EACN,YAAa,EACb,iBAAkB,EAAQ,gBAC1B,iBAAkB,EAAQ,eAE1B,iBAAkB,GAAkB,KAAY,OAAI,EAAe,QAAU,OAAS,IAAsB,GAAkB,KAAY,OAAI,EAAe,SAAW,KAAO,CAC7K,KAAM,cACN,YAAa,CACX,OAAQ,EAAe,OACvB,OAAQ,EACR,MAAO,EAAK,EAAe,OAAS,KAAO,EAAK,WAChD,YAAa,EAAe,WAC9B,CACF,EAAI,CAAE,KAAM,aAAc,EAAS,OAEnC,qBAAsB,EAAQ,mBAC9B,oBAAqB,EAAQ,kBAE7B,SAAU,EAA6B,CAAM,CAC/C,GAEE,MAAO,EACP,WAAY,EACZ,gBACE,GAAa,CACf,QACA,YACF,CAAC,EACD,MAAO,CACL,KAAM,IACD,EACH,MAAO,EACP,YAAa,KACV,GAAgB,MAAQ,EAAQ,oBAA2B,OAAI,CAAE,oBAAqB,EAAQ,iBAAkB,EAAI,CAAC,CAC1H,EACA,SAAU,CAAC,GAAG,EAAU,GAAG,CAAY,CACzC,OAEI,WAAU,CAAC,EAAS,CACxB,IAAI,EACJ,IAAQ,KAAM,EAAM,YAAa,MAAM,KAAK,QAAQ,CAAO,GAEzD,kBACA,MAAO,EACP,SAAU,GACR,MAAM,EAAc,CACtB,IAAK,GAAG,KAAK,OAAO,2BACpB,QAAS,EAAe,KAAK,OAAO,QAAQ,EAAG,EAAQ,OAAO,EAC9D,OACA,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACK,EAAS,EAAS,QAAQ,GAC1B,EAAU,CAAC,EACjB,GAAI,EAAO,QAAQ,SAAW,MAAQ,MAAM,QAAQ,EAAO,QAAQ,OAAO,GACxE,QAAW,KAAQ,EAAO,QAAQ,QAChC,GAAI,EAAK,OAAS,WAAY,CAC5B,IAAM,EAAgB,EAAwB,EAAK,QAAQ,EAC3D,EAAQ,KAAK,CACX,KAAM,YACN,KAAM,EACN,iBAAkB,CAAE,QAAS,CAAE,SAAU,CAAK,CAAE,CAClD,CAAC,EACI,QAAI,EAAK,OAAS,QACvB,GAAI,EAAK,KAAK,OAAS,EACrB,EAAQ,KAAK,CAAE,KAAM,OAAQ,KAAM,EAAK,IAAK,CAAC,GAI/C,KACL,IAAM,EAAO,EAAmB,EAAO,QAAQ,OAAO,EACtD,GAAI,GAAQ,MAAQ,EAAK,OAAS,EAChC,EAAQ,KAAK,CAAE,KAAM,OAAQ,MAAK,CAAC,EAGvC,GAAI,EAAO,QAAQ,YAAc,KAC/B,QAAW,KAAY,EAAO,QAAQ,WACpC,EAAQ,KAAK,CACX,KAAM,YACN,WAAY,EAAS,GACrB,SAAU,EAAS,SAAS,KAC5B,MAAO,EAAS,SAAS,SAC3B,CAAC,EAGL,MAAO,CACL,UACA,aAAc,CACZ,QAAS,EAAuB,EAAO,aAAa,EACpD,KAAM,EAAK,EAAO,gBAAkB,KAAO,EAAU,MACvD,EACA,MAAO,EAAoB,EAAS,KAAK,EACzC,QAAS,CAAE,MAAK,EAChB,SAAU,IACL,EAAoB,CAAQ,EAC/B,QAAS,EACT,KAAM,CACR,EACA,UACF,OAEI,SAAQ,CAAC,EAAS,CACtB,IAAQ,OAAM,YAAa,MAAM,KAAK,QAAQ,CAAO,EAC/C,EAAO,IAAK,EAAM,OAAQ,EAAK,GAC7B,kBAAiB,MAAO,GAAa,MAAM,EAAc,CAC/D,IAAK,GAAG,KAAK,OAAO,2BACpB,QAAS,EAAe,KAAK,OAAO,QAAQ,EAAG,EAAQ,OAAO,EAC9D,OACA,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACG,EAAe,CACjB,QAAS,QACT,IAAU,MACZ,EACI,EAAa,OACb,EAAe,GACf,EAAa,GACb,EAAoB,KACpB,EAAiB,KACf,EAAc,KAAK,WACzB,MAAO,CACL,OAAQ,EAAS,YACf,IAAI,gBAAgB,CAClB,KAAK,CAAC,EAAY,CAChB,EAAW,QAAQ,CAAE,KAAM,eAAgB,UAAS,CAAC,GAEvD,SAAS,CAAC,EAAO,EAAY,CAC3B,GAAI,EAAQ,iBACV,EAAW,QAAQ,CAAE,KAAM,MAAO,SAAU,EAAM,QAAS,CAAC,EAE9D,GAAI,CAAC,EAAM,QAAS,CAClB,EAAW,QAAQ,CAAE,KAAM,QAAS,MAAO,EAAM,KAAM,CAAC,EACxD,OAEF,IAAM,EAAQ,EAAM,MACpB,GAAI,EACF,EAAe,GACf,EAAW,QAAQ,CACjB,KAAM,uBACH,EAAoB,CAAK,CAC9B,CAAC,EAEH,GAAI,EAAM,OAAS,KACjB,EAAQ,EAAM,MAEhB,IAAM,EAAS,EAAM,QAAQ,GACvB,EAAQ,EAAO,MACf,EAAc,EAAmB,EAAM,OAAO,EACpD,GAAI,EAAM,SAAW,MAAQ,MAAM,QAAQ,EAAM,OAAO,GACtD,QAAW,KAAQ,EAAM,QACvB,GAAI,EAAK,OAAS,WAAY,CAC5B,IAAM,EAAiB,EAAwB,EAAK,QAAQ,EAE5D,GADA,EAAiB,GAAc,EAAgB,CAAI,EAC/C,GAAqB,KAAM,CAC7B,GAAI,EACF,EAAW,QAAQ,CAAE,KAAM,WAAY,GAAI,GAAI,CAAC,EAChD,EAAa,GAEf,EAAoB,EAAY,EAChC,EAAW,QAAQ,CACjB,KAAM,kBACN,GAAI,CACN,CAAC,EAEH,GAAI,EAAe,OAAS,EAC1B,EAAW,QAAQ,CACjB,KAAM,kBACN,GAAI,EACJ,MAAO,CACT,CAAC,GAKT,GAAI,GAAe,MAAQ,EAAY,OAAS,EAAG,CACjD,GAAI,CAAC,EAAY,CACf,GAAI,GAAqB,KACvB,EAAW,QAAQ,CACjB,KAAM,gBACN,GAAI,EACJ,iBAAkB,CAAE,QAAS,CAAE,SAAU,CAAe,CAAE,CAC5D,CAAC,EACD,EAAoB,KACpB,EAAiB,KAEnB,EAAW,QAAQ,CAAE,KAAM,aAAc,GAAI,GAAI,CAAC,EAClD,EAAa,GAEf,EAAW,QAAQ,CACjB,KAAM,aACN,GAAI,IACJ,MAAO,CACT,CAAC,EAEH,IAAK,GAAS,KAAY,OAAI,EAAM,aAAe,KACjD,QAAW,KAAY,EAAM,WAAY,CACvC,IAAM,EAAa,EAAS,GACtB,EAAW,EAAS,SAAS,KAC7B,EAAQ,EAAS,SAAS,UAChC,EAAW,QAAQ,CACjB,KAAM,mBACN,GAAI,EACJ,UACF,CAAC,EACD,EAAW,QAAQ,CACjB,KAAM,mBACN,GAAI,EACJ,MAAO,CACT,CAAC,EACD,EAAW,QAAQ,CACjB,KAAM,iBACN,GAAI,CACN,CAAC,EACD,EAAW,QAAQ,CACjB,KAAM,YACN,aACA,WACA,OACF,CAAC,EAGL,GAAI,EAAO,eAAiB,KAC1B,EAAe,CACb,QAAS,EAAuB,EAAO,aAAa,EACpD,IAAK,EAAO,aACd,GAGJ,KAAK,CAAC,EAAY,CAChB,GAAI,GAAqB,KACvB,EAAW,QAAQ,CACjB,KAAM,gBACN,GAAI,EACJ,iBAAkB,CAAE,QAAS,CAAE,SAAU,CAAe,CAAE,CAC5D,CAAC,EAEH,GAAI,EACF,EAAW,QAAQ,CAAE,KAAM,WAAY,GAAI,GAAI,CAAC,EAElD,EAAW,QAAQ,CACjB,KAAM,SACN,eACA,MAAO,EAAoB,CAAK,CAClC,CAAC,EAEL,CAAC,CACH,EACA,QAAS,CAAE,MAAK,EAChB,SAAU,CAAE,QAAS,CAAgB,CACvC,EAEJ,EACA,SAAS,CAAuB,CAAC,EAAU,CACzC,OAAO,EAAS,OAAO,CAAC,IAAU,EAAM,OAAS,MAAM,EAAE,IAAI,CAAC,IAAU,EAAM,IAAI,EAAE,KAAK,EAAE,EAE7F,SAAS,EAAa,CAAC,EAAS,EAAM,CACpC,GAAI,IAAY,KAAM,MAAO,IAAK,EAAM,SAAU,CAAC,GAAG,EAAK,QAAQ,CAAE,EAErE,GADA,EAAQ,SAAS,KAAK,GAAG,EAAK,QAAQ,EAClC,EAAK,SAAgB,OAAG,EAAQ,OAAS,EAAK,OAClD,GAAI,EAAK,YAAmB,OAAG,EAAQ,UAAY,EAAK,UACxD,OAAO,EAET,SAAS,CAAkB,CAAC,EAAS,CACnC,GAAI,OAAO,IAAY,SACrB,OAAO,EAET,GAAI,GAAW,KACb,OAEF,IAAM,EAAc,CAAC,EACrB,QAAW,KAAS,EAAS,CAC3B,IAAQ,QAAS,EACjB,OAAQ,OACD,OACH,EAAY,KAAK,EAAM,IAAI,EAC3B,UACG,eACA,gBACA,YACH,cAGA,MAAU,MAAM,qBADS,GAC8B,GAI7D,OAAO,EAAY,OAAS,EAAY,KAAK,EAAE,EAAS,OAE1D,IAAI,GAA+B,EAAG,mBAAmB,OAAQ,CAC/D,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,MAAM,EACvB,KAAM,EAAG,OAAO,CAClB,CAAC,EACD,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,gBAAgB,EACjC,KAAM,EAAG,OAAO,EAChB,MAAO,EAAG,OAAO,EACjB,IAAK,EAAG,OAAO,EAAE,QAAQ,EACzB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,YAAa,EAAG,OAAO,EAAE,QAAQ,CACnC,CAAC,EACD,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,WAAW,EAC5B,cAAe,EAAG,MAAM,EAAG,MAAM,CAAC,EAAG,OAAO,EAAG,EAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC,CACH,CAAC,EACG,GAA0B,EAAG,OAAO,CACtC,KAAM,EAAG,QAAQ,UAAU,EAC3B,SAAU,EAAG,MAAM,EAA4B,EAC/C,OAAQ,EAAG,QAAQ,EAAE,SAAS,EAC9B,UAAW,EAAG,OAAO,EAAE,QAAQ,CACjC,CAAC,EACG,EAAuB,EAAG,MAAM,CAClC,EAAG,OAAO,EACV,EAAG,MACD,EAAG,mBAAmB,OAAQ,CAC5B,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,MAAM,EACvB,KAAM,EAAG,OAAO,CAClB,CAAC,EACD,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,WAAW,EAC5B,UAAW,EAAG,MAAM,CAClB,EAAG,OAAO,EACV,EAAG,OAAO,CACR,IAAK,EAAG,OAAO,EACf,OAAQ,EAAG,OAAO,EAAE,SAAS,CAC/B,CAAC,CACH,CAAC,CACH,CAAC,EACD,EAAG,OAAO,CACR,KAAM,EAAG,QAAQ,WAAW,EAC5B,cAAe,EAAG,MAAM,EAAG,MAAM,CAAC,EAAG,OAAO,EAAG,EAAG,OAAO,CAAC,CAAC,CAAC,CAC9D,CAAC,EACD,EACF,CAAC,CACH,CACF,CAAC,EAAE,QAAQ,EACP,EAAqB,EAAG,OAAO,CACjC,cAAe,EAAG,OAAO,EACzB,kBAAmB,EAAG,OAAO,EAC7B,aAAc,EAAG,OAAO,EACxB,kBAAmB,EAAG,OAAO,EAAE,QAAQ,EACvC,sBAAuB,EAAG,OAAO,CAAE,cAAe,EAAG,OAAO,EAAE,QAAQ,CAAE,CAAC,EAAE,QAAQ,EACnF,qBAAsB,EAAG,OAAO,CAAE,cAAe,EAAG,OAAO,EAAE,QAAQ,CAAE,CAAC,EAAE,QAAQ,CACpF,CAAC,EACG,GAA4B,EAAG,OAAO,CACxC,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,MAAO,EAAG,OAAO,EAAE,QAAQ,EAC3B,QAAS,EAAG,MACV,EAAG,OAAO,CACR,QAAS,EAAG,OAAO,CACjB,KAAM,EAAG,QAAQ,WAAW,EAC5B,QAAS,EACT,WAAY,EAAG,MACb,EAAG,OAAO,CACR,GAAI,EAAG,OAAO,EACd,SAAU,EAAG,OAAO,CAAE,KAAM,EAAG,OAAO,EAAG,UAAW,EAAG,OAAO,CAAE,CAAC,CACnE,CAAC,CACH,EAAE,QAAQ,CACZ,CAAC,EACD,MAAO,EAAG,OAAO,EACjB,cAAe,EAAG,OAAO,EAAE,QAAQ,CACrC,CAAC,CACH,EACA,OAAQ,EAAG,QAAQ,iBAAiB,EACpC,MAAO,CACT,CAAC,EACG,GAAyB,EAAG,OAAO,CACrC,GAAI,EAAG,OAAO,EAAE,QAAQ,EACxB,QAAS,EAAG,OAAO,EAAE,QAAQ,EAC7B,MAAO,EAAG,OAAO,EAAE,QAAQ,EAC3B,QAAS,EAAG,MACV,EAAG,OAAO,CACR,MAAO,EAAG,OAAO,CACf,KAAM,EAAG,KAAK,CAAC,WAAW,CAAC,EAAE,SAAS,EACtC,QAAS,EACT,WAAY,EAAG,MACb,EAAG,OAAO,CACR,GAAI,EAAG,OAAO,EACd,SAAU,EAAG,OAAO,CAAE,KAAM,EAAG,OAAO,EAAG,UAAW,EAAG,OAAO,CAAE,CAAC,CACnE,CAAC,CACH,EAAE,QAAQ,CACZ,CAAC,EACD,cAAe,EAAG,OAAO,EAAE,QAAQ,EACnC,MAAO,EAAG,OAAO,CACnB,CAAC,CACH,EACA,MAAO,EAAmB,QAAQ,CACpC,CAAC,EAYG,GAAwB,KAAM,CAChC,WAAW,CAAC,EAAS,EAAQ,CAC3B,KAAK,qBAAuB,KAC5B,KAAK,qBAAuB,GAC5B,KAAK,sBAAwB,GAC7B,KAAK,QAAU,EACf,KAAK,OAAS,KAEZ,SAAQ,EAAG,CACb,OAAO,KAAK,OAAO,cAEf,QAAO,EACX,SACA,cACA,WACC,CACD,GAAI,EAAO,OAAS,KAAK,qBACvB,MAAM,IAAI,EAAmC,CAC3C,SAAU,KAAK,SACf,QAAS,KAAK,QACd,qBAAsB,KAAK,qBAC3B,QACF,CAAC,EAEH,IACE,kBACA,MAAO,EACP,YACE,MAAM,EAAe,CACvB,IAAK,GAAG,KAAK,OAAO,qBACpB,QAAS,EAAgB,KAAK,OAAO,QAAQ,EAAG,CAAO,EACvD,KAAM,CACJ,MAAO,KAAK,QACZ,MAAO,EACP,gBAAiB,OACnB,EACA,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,cACA,MAAO,KAAK,OAAO,KACrB,CAAC,EACD,MAAO,CACL,SAAU,CAAC,EACX,WAAY,EAAS,KAAK,IAAI,CAAC,IAAS,EAAK,SAAS,EACtD,MAAO,EAAS,MAAQ,CAAE,OAAQ,EAAS,MAAM,aAAc,EAAS,OACxE,SAAU,CAAE,QAAS,EAAiB,KAAM,CAAS,CACvD,EAEJ,EACI,GAAqC,EAAG,OAAO,CACjD,KAAM,EAAG,MAAM,EAAG,OAAO,CAAE,UAAW,EAAG,MAAM,EAAG,OAAO,CAAC,CAAE,CAAC,CAAC,EAC9D,MAAO,EAAG,OAAO,CAAE,cAAe,EAAG,OAAO,CAAE,CAAC,EAAE,QAAQ,CAC3D,CAAC,EAaG,GAA4B,EAAG,OAAO,CAMxC,SAAU,EAAG,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,CACxC,CAAC,EAGG,GAAqB,KAAM,CAC7B,WAAW,CAAC,EAAS,EAAQ,CAC3B,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,qBAAuB,QAE1B,SAAQ,EAAG,CACb,OAAO,KAAK,OAAO,cAEf,QAAO,EACX,OACA,QACA,eAAe,MACf,eACA,QACA,WACA,mBACC,CACD,IAAM,EAAW,CAAC,EACZ,EAAiB,MAAM,EAAsB,CACjD,SAAU,UACV,kBACA,OAAQ,EACV,CAAC,EACG,EAAiB,MACrB,GAAI,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAM,EAAE,SAAS,CAAY,EAC7D,EAAiB,EAEjB,OAAS,KAAK,CACZ,KAAM,cACN,QAAS,eACT,QAAS,8BAA8B,uBACzC,CAAC,EAEH,GAAI,GAAgB,KAClB,EAAS,KAAK,CACZ,KAAM,cACN,QAAS,eACT,QAAS,+GACX,CAAC,EAEH,GAAI,GAAS,KACX,EAAS,KAAK,CACZ,KAAM,cACN,QAAS,QACT,QAAS,0EACX,CAAC,EAEH,GAAI,GAAY,KACd,EAAS,KAAK,CACZ,KAAM,cACN,QAAS,WACT,QAAS,iHACX,CAAC,EAEH,IAAM,EAAW,GAAkB,KAAY,OAAI,EAAe,SAC5D,EAAc,CAClB,MAAO,KAAK,QACZ,MAAO,EACP,SAAU,GAAY,KAAO,EAAa,OAC1C,UAAW,EACX,gBAAiB,EACjB,OAAQ,EACV,EACM,EAAoB,IACrB,EACH,UAAW,GAAY,KAAY,OAAI,YACzC,EACA,MAAO,CAAE,cAAa,oBAAmB,UAAS,OAE9C,WAAU,CAAC,EAAS,CACxB,IAAI,EAAI,EAAI,EAAI,EAAI,EACpB,IAAM,GAAe,GAAM,GAAM,EAAK,KAAK,OAAO,YAAc,KAAY,OAAI,EAAG,cAAgB,KAAY,OAAI,EAAG,KAAK,CAAE,IAAM,KAAO,EAAqB,IAAI,MAC3J,cAAa,oBAAmB,YAAa,MAAM,KAAK,QAAQ,CAAO,GAE7E,MAAO,EACP,kBACA,SAAU,GACR,MAAM,EAAU,CAClB,IAAK,GAAG,KAAK,OAAO,uBACpB,QAAS,EACP,CAAE,eAAgB,kBAAmB,GACpC,GAAM,EAAK,KAAK,QAAQ,UAAY,KAAY,OAAI,EAAG,KAAK,CAAE,EAC/D,EAAQ,OACV,EACA,KAAM,CACJ,QAAS,KAAK,UAAU,CAAW,EACnC,OAAQ,CACV,EACA,sBAAuB,EACvB,0BAA2B,EACzB,EACF,EACA,YAAa,EAAQ,YACrB,MAAO,KAAK,OAAO,KACrB,CAAC,EACD,MAAO,CACL,MAAO,EAAS,WAChB,WACA,QAAS,CACP,KAAM,KAAK,UAAU,CAAiB,CACxC,EACA,SAAU,CACR,UAAW,EACX,QAAS,KAAK,QACd,QAAS,EACT,KAAM,CACR,CACF,EAEJ,EACI,GAA8B,EAAG,OAAO,CAC1C,WAAY,EAAG,OAAO,CACxB,CAAC,EAGG,GAAiB,SAGrB,SAAS,EAAa,CAAC,EAAU,CAAC,EAAG,CACnC,IAAI,EACJ,IAAM,GAAW,EAAK,EAAqB,EAAQ,OAAO,IAAM,KAAO,EAAK,4BACtE,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,kBACzB,YAAa,SACf,CAAC,OACE,EAAQ,OACb,EACA,kBAAkB,IACpB,EACM,EAAkB,CAAC,IAAY,IAAI,GAAyB,EAAS,CACzE,SAAU,eACV,UACA,QAAS,EACT,MAAO,EAAQ,MACf,WAAY,EAAQ,UACtB,CAAC,EACK,EAAuB,CAAC,IAAY,IAAI,GAAsB,EAAS,CAC3E,SAAU,oBACV,UACA,QAAS,EACT,MAAO,EAAQ,KACjB,CAAC,EACK,EAAoB,CAAC,IAAY,IAAI,GAAmB,EAAS,CACrE,SAAU,iBACV,UACA,QAAS,EACT,MAAO,EAAQ,KACjB,CAAC,EACK,EAAW,QAAQ,CAAC,EAAS,CACjC,GAAI,WACF,MAAU,MACR,mEACF,EAEF,OAAO,EAAgB,CAAO,GAchC,OAZA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,KAAO,EAChB,EAAS,UAAY,EACrB,EAAS,eAAiB,EAC1B,EAAS,cAAgB,EACzB,EAAS,mBAAqB,EAC9B,EAAS,OAAS,EAClB,EAAS,YAAc,EACvB,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAE1D,EAET,IAAI,GAAU,GAAc", | ||
| "debugId": "F8FBC2381E2CB55264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/workspace-event.ts"], | ||
| "sourcesContent": [ | ||
| "export * as WorkspaceEvent from \"./workspace-event.js\"\n\nimport { Schema } from \"effect\"\nimport { Event } from \"./event.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport const ConnectionStatus = Schema.Struct({\n workspaceID: WorkspaceID,\n status: Schema.Literals([\"connected\", \"connecting\", \"disconnected\", \"error\"]),\n}).annotate({ identifier: \"WorkspaceEvent.ConnectionStatus\" })\nexport interface ConnectionStatus extends Schema.Schema.Type<typeof ConnectionStatus> {}\n\nexport const Ready = Event.ephemeral({\n type: \"workspace.ready\",\n schema: {\n name: Schema.String,\n },\n})\n\nexport const Failed = Event.ephemeral({\n type: \"workspace.failed\",\n schema: {\n message: Schema.String,\n },\n})\n\nexport const Status = Event.ephemeral({\n type: \"workspace.status\",\n schema: ConnectionStatus.fields,\n})\n\nexport const Definitions = Event.inventory(Ready, Failed, Status)\n" | ||
| ], | ||
| "mappings": ";wRAMO,IAAM,EAAmB,EAAO,OAAO,CAC5C,YAAa,EACb,OAAQ,EAAO,SAAS,CAAC,YAAa,aAAc,eAAgB,OAAO,CAAC,CAC9E,CAAC,EAAE,SAAS,CAAE,WAAY,iCAAkC,CAAC,EAGhD,EAAQ,EAAM,UAAU,CACnC,KAAM,kBACN,OAAQ,CACN,KAAM,EAAO,MACf,CACF,CAAC,EAEY,EAAS,EAAM,UAAU,CACpC,KAAM,mBACN,OAAQ,CACN,QAAS,EAAO,MAClB,CACF,CAAC,EAEY,EAAS,EAAM,UAAU,CACpC,KAAM,mBACN,OAAQ,EAAiB,MAC3B,CAAC,EAEY,EAAc,EAAM,UAAU,EAAO,EAAQ,CAAM", | ||
| "debugId": "A03E46B52BE1814264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "7BA37B14AA76FBB964756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/demo.ts"], | ||
| "sourcesContent": [ | ||
| "// Demo mode for testing direct interactive mode without a real SDK.\n//\n// Enabled with `--demo`. Intercepts prompt submissions and drives the same\n// presentation commits and footer actions as the live transport. This\n// lets you test scrollback formatting, permission UI, canonical Form UI, and tool\n// snapshots without making actual model calls. Pass a demo slash command as\n// the initial interactive message to trigger a preview immediately.\n//\n// Slash commands:\n// /permission [kind] → triggers a permission request variant\n// /form [kind] → triggers a canonical Form request variant\n// /fmt <kind> → emits a specific tool/text type (text, reasoning, shell,\n// write, edit, patch, subagent, question, error, mix)\n//\n// Demo mode handles permission and Form replies locally, completing or failing\n// the synthetic tool parts through the same callbacks used by the live footer.\nimport path from \"path\"\nimport type { JsonValue, SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { parseSlashHead } from \"../prompt/parse\"\nimport { writeSessionOutput } from \"./stream\"\nimport { toolCommit, toolFinalPhase } from \"./stream-v2.subagent\"\nimport type {\n FooterApi,\n FooterView,\n FormCancel,\n FormReply,\n MiniFormRequest,\n MiniPermissionRequest,\n PermissionReply,\n RunPrompt,\n StreamCommit,\n} from \"./types\"\n\nconst KINDS = [\n \"markdown\",\n \"table\",\n \"text\",\n \"reasoning\",\n \"shell\",\n \"write\",\n \"edit\",\n \"patch\",\n \"subagent\",\n \"question\",\n \"error\",\n \"mix\",\n]\nconst PERMISSIONS = [\"edit\", \"shell\", \"read\", \"subagent\", \"external\", \"doom\"] as const\nconst FORMS = [\"question\", \"external\"] as const\n\ntype PermissionKind = (typeof PERMISSIONS)[number]\ntype FormKind = (typeof FORMS)[number]\n\nfunction permissionKind(value: string | undefined): PermissionKind | undefined {\n const next = (value || \"edit\").toLowerCase()\n return PERMISSIONS.find((item) => item === next)\n}\n\nfunction formKind(value: string | undefined): FormKind | undefined {\n const next = (value || \"question\").toLowerCase()\n return FORMS.find((item) => item === next)\n}\n\nconst SAMPLE_MARKDOWN = [\n \"# Direct Mode Demo\",\n \"\",\n \"This is a realistic assistant response for direct-mode formatting checks.\",\n \"It mixes **bold**, _italic_, `inline code`, links, code fences, and tables in one streamed reply.\",\n \"\",\n \"## Summary\",\n \"\",\n \"- Restored the final markdown flush so the last block is committed on idle.\",\n \"- Switched markdown scrollback commits back to top-level block boundaries.\",\n \"- Added footer-level regression coverage for split-footer rendering.\",\n \"\",\n \"## Status\",\n \"\",\n \"| Area | Before | After | Notes |\",\n \"| --- | --- | --- | --- |\",\n \"| Direct mode | Missing final rows | Stable | Final markdown block now flushes on idle |\",\n \"| Tables | Dropped in streaming mode | Visible | Block-based commits match the working OpenTUI demo |\",\n \"| Tests | Partial coverage | Broader coverage | Includes a footer-level split render capture |\",\n \"\",\n \"> This sample intentionally includes a wide table so you can spot wrapping and commit bugs quickly.\",\n \"\",\n \"```ts\",\n \"const result = { markdown: true, tables: 2, stable: true }\",\n \"```\",\n \"\",\n \"## Files\",\n \"\",\n \"| File | Change |\",\n \"| --- | --- |\",\n \"| `scrollback.surface.ts` | Align markdown commit logic with the split-footer demo |\",\n \"| `footer.ts` | Keep active surfaces across footer-height-only resizes |\",\n \"| `footer.test.ts` | Capture real split-footer markdown payloads during idle completion |\",\n \"\",\n \"Next step: run `/fmt table` if you want a tighter table-only sample.\",\n].join(\"\\n\")\n\nconst SAMPLE_TABLE = [\n \"# Table Sample\",\n \"\",\n \"| Kind | Example | Notes |\",\n \"| --- | --- | --- |\",\n \"| Pipe | `A\\\\|B` | Escaped pipes should stay in one cell |\",\n \"| Unicode | `漢字` | Wide characters should remain aligned |\",\n \"| Wrap | `LongTokenWithoutNaturalBreaks_1234567890` | Useful for width stress |\",\n \"| Status | done | Final row should still appear after idle |\",\n].join(\"\\n\")\n\ntype Ref = {\n msg: string\n call: string\n tool: string\n input: Record<string, JsonValue>\n start: number\n}\n\ntype FormRequest = {\n ref: Ref\n kind: FormKind\n request: MiniFormRequest\n}\n\ntype Perm = {\n ref: Ref\n done: {\n output: string\n metadata?: Record<string, JsonValue>\n }\n}\n\ntype Permit = {\n ref: Ref\n permission: string\n patterns: string[]\n metadata?: MiniPermissionRequest[\"metadata\"]\n always: string[]\n done: Perm[\"done\"]\n}\n\ntype State = {\n id: string\n thinking: boolean\n footer: FooterApi\n msg: number\n part: number\n call: number\n perm: number\n form: number\n perms: Map<string, Perm>\n forms: Map<string, FormRequest>\n started: Set<string>\n}\n\ntype Input = {\n sessionID: string\n thinking: boolean\n footer: FooterApi\n}\n\nfunction note(footer: FooterApi, text: string): void {\n footer.append({\n kind: \"system\",\n text,\n phase: \"start\",\n source: \"system\",\n })\n}\n\nfunction clearSubagent(footer: FooterApi): void {\n footer.event({\n type: \"stream.subagent\",\n state: {\n tabs: [],\n details: {},\n permissions: [],\n forms: [],\n },\n })\n}\n\nfunction showSubagent(\n state: State,\n input: {\n sessionID: string\n label: string\n description: string\n status: \"running\" | \"completed\" | \"cancelled\" | \"error\"\n title?: string\n commits: StreamCommit[]\n },\n) {\n state.footer.event({\n type: \"stream.subagent\",\n state: {\n tabs: [\n {\n sessionID: input.sessionID,\n label: input.label,\n description: input.description,\n status: input.status,\n title: input.title,\n },\n ],\n details: {\n [input.sessionID]: {\n commits: input.commits,\n },\n },\n permissions: [],\n forms: [],\n },\n })\n}\n\nfunction wait(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve) => {\n if (!signal) {\n setTimeout(resolve, ms)\n return\n }\n\n if (signal.aborted) {\n resolve()\n return\n }\n\n const done = () => {\n clearTimeout(timer)\n signal.removeEventListener(\"abort\", done)\n resolve()\n }\n\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", done)\n resolve()\n }, ms)\n\n signal.addEventListener(\"abort\", done, { once: true })\n })\n}\n\nfunction split(text: string): string[] {\n if (text.length <= 48) {\n return [text]\n }\n\n const size = Math.ceil(text.length / 3)\n return [text.slice(0, size), text.slice(size, size * 2), text.slice(size * 2)]\n}\n\nfunction take(state: State, key: \"msg\" | \"part\" | \"call\" | \"perm\", prefix: string): string {\n state[key] += 1\n return `demo_${prefix}_${state[key]}`\n}\n\nfunction present(state: State, commits: StreamCommit[], view?: FooterView): void {\n writeSessionOutput(\n { footer: state.footer },\n {\n commits,\n updates: view\n ? [\n {\n type: \"stream.patch\" as const,\n patch: { status: view.type === \"permission\" ? \"awaiting permission\" : \"awaiting form\" },\n },\n { type: \"stream.view\" as const, view },\n ]\n : undefined,\n },\n )\n}\n\nfunction clearBlocker(state: State): void {\n writeSessionOutput(\n { footer: state.footer },\n {\n commits: [],\n updates: [\n { type: \"stream.patch\", patch: { status: \"\" } },\n { type: \"stream.view\", view: { type: \"prompt\" } },\n ],\n },\n )\n}\n\nfunction open(state: State): string {\n return take(state, \"msg\", \"msg\")\n}\n\nasync function emitText(state: State, body: string, signal?: AbortSignal): Promise<void> {\n const msg = open(state)\n const part = take(state, \"part\", \"part\")\n for (const item of split(body)) {\n if (signal?.aborted) {\n return\n }\n\n present(state, [\n { kind: \"assistant\", source: \"assistant\", text: item, phase: \"progress\", messageID: msg, partID: part },\n ])\n await wait(45, signal)\n }\n}\n\nasync function emitReasoning(state: State, body: string, signal?: AbortSignal): Promise<void> {\n const msg = open(state)\n const part = take(state, \"part\", \"part\")\n let first = true\n for (const item of split(body)) {\n if (signal?.aborted) {\n return\n }\n\n if (state.thinking) {\n present(state, [\n {\n kind: \"reasoning\",\n source: \"reasoning\",\n text: first ? `Thinking: ${item.replace(/\\[REDACTED\\]/g, \"\")}` : item.replace(/\\[REDACTED\\]/g, \"\"),\n phase: \"progress\",\n messageID: msg,\n partID: part,\n },\n ])\n first = false\n }\n await wait(45, signal)\n }\n}\n\nfunction make(state: State, tool: string, input: Record<string, JsonValue>): Ref {\n return {\n msg: open(state),\n call: take(state, \"call\", \"call\"),\n tool,\n input,\n start: Date.now(),\n }\n}\n\nfunction startTool(state: State, ref: Ref, metadata: Record<string, JsonValue> = {}): SessionMessageAssistantTool {\n state.started.add(ref.call)\n const part = {\n type: \"tool\" as const,\n id: ref.call,\n name: ref.tool,\n state: { status: \"running\" as const, input: ref.input, metadata },\n time: { created: ref.start, ran: ref.start },\n }\n present(state, [toolCommit(part, ref.msg, \"start\")])\n return part\n}\n\nfunction askPermission(state: State, item: Permit): void {\n const tool = startTool(state, item.ref)\n\n const id = take(state, \"perm\", \"perm\")\n state.perms.set(id, {\n ref: item.ref,\n done: item.done,\n })\n\n present(state, [], {\n type: \"permission\",\n request: {\n id,\n sessionID: state.id,\n action: item.permission,\n resources: item.patterns,\n metadata: item.metadata ?? {},\n save: item.always,\n source: { type: \"tool\", messageID: item.ref.msg, id: item.ref.call },\n tool,\n },\n })\n}\n\nfunction doneTool(\n state: State,\n ref: Ref,\n output: {\n output: string\n metadata?: Record<string, JsonValue>\n },\n): void {\n if (!state.started.has(ref.call)) startTool(state, ref)\n const part: SessionMessageAssistantTool = {\n type: \"tool\",\n id: ref.call,\n name: ref.tool,\n state: {\n status: \"completed\",\n input: ref.input,\n content: [{ type: \"text\", text: output.output }],\n metadata: output.metadata,\n },\n time: { created: ref.start, ran: ref.start, completed: Date.now() },\n }\n present(state, [toolCommit(part, ref.msg, toolFinalPhase(part))])\n}\n\nfunction failTool(state: State, ref: Ref, error: string): void {\n if (!state.started.has(ref.call)) startTool(state, ref)\n present(state, [\n toolCommit(\n {\n type: \"tool\",\n id: ref.call,\n name: ref.tool,\n state: {\n status: \"error\",\n input: ref.input,\n error: { type: \"unknown\", message: error },\n },\n time: { created: ref.start, ran: ref.start, completed: Date.now() },\n },\n ref.msg,\n \"final\",\n ),\n ])\n}\n\nfunction emitError(state: State, text: string): void {\n present(state, [{ kind: \"error\", source: \"system\", text, phase: \"start\" }])\n}\n\nasync function emitBash(state: State, signal?: AbortSignal): Promise<void> {\n const ref = make(state, \"shell\", {\n command: \"git status\",\n workdir: process.cwd(),\n description: \"Show git status\",\n })\n startTool(state, ref)\n await wait(70, signal)\n doneTool(state, ref, {\n output: `${process.cwd()}\\ngit status\\nOn branch demo\\nnothing to commit, working tree clean\\n`,\n metadata: {\n exit: 0,\n },\n })\n}\n\nfunction emitWrite(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"write\", {\n path: file,\n content: \"export const demo = 42\\n\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {},\n })\n}\n\nfunction emitEdit(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"edit\", {\n path: file,\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n files: [\n {\n file,\n status: \"modified\",\n patch: \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\",\n },\n ],\n },\n })\n}\n\nfunction emitPatch(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"patch\", {\n patchText: \"*** Begin Patch\\n*** End Patch\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n files: [\n {\n status: \"modified\",\n file,\n patch: \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\",\n deletions: 1,\n },\n {\n status: \"added\",\n file: path.join(process.cwd(), \"README-demo.md\"),\n patch: \"@@ -0,0 +1,4 @@\\n+# Demo\\n+This is a generated preview file.\\n\",\n deletions: 0,\n },\n ],\n },\n })\n}\n\nfunction emitTask(state: State): void {\n const ref = make(state, \"subagent\", {\n description: \"Scan run/* for reducer touchpoints\",\n agent: \"explore\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n sessionID: \"ses_demo_child\",\n status: \"completed\",\n output: \"\",\n },\n })\n const part = {\n type: \"tool\",\n id: \"sub_demo_call_1\",\n name: \"read\",\n state: {\n status: \"running\",\n input: {\n path: \"packages/tui/src/mini/stream.ts\",\n offset: 1,\n limit: 200,\n },\n metadata: {},\n },\n time: { created: Date.now(), ran: Date.now() },\n } satisfies SessionMessageAssistantTool\n showSubagent(state, {\n sessionID: \"ses_demo_child\",\n label: \"Explore\",\n description: \"Scan run/* for reducer touchpoints\",\n status: \"completed\",\n title: \"Reducer touchpoints found\",\n commits: [\n {\n kind: \"user\",\n text: \"Scan run/* for reducer touchpoints\",\n phase: \"start\",\n source: \"system\",\n },\n {\n kind: \"reasoning\",\n text: \"Thinking: tracing reducer and footer boundaries\",\n phase: \"progress\",\n source: \"reasoning\",\n messageID: \"sub_demo_msg_reasoning\",\n partID: \"sub_demo_reasoning_1\",\n },\n toolCommit(part, \"sub_demo_msg_tool\", \"start\"),\n {\n kind: \"assistant\",\n text: \"Footer updates flow through stream.ts into RunFooter\",\n phase: \"progress\",\n source: \"assistant\",\n messageID: \"sub_demo_msg_text\",\n partID: \"sub_demo_text_1\",\n },\n ],\n })\n}\n\nfunction emitQuestionTool(state: State): void {\n const ref = make(state, \"question\", {\n questions: [\n {\n header: \"Style\",\n question: \"Which output style do you want to inspect?\",\n options: [\n { label: \"Diff\", description: \"Show diff block\" },\n { label: \"Code\", description: \"Show code block\" },\n ],\n multiple: false,\n custom: false,\n },\n {\n header: \"Extras\",\n question: \"Pick extra rows\",\n options: [\n { label: \"Usage\", description: \"Add usage row\" },\n { label: \"Duration\", description: \"Add duration row\" },\n ],\n multiple: true,\n custom: true,\n },\n ],\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n answers: [[\"Diff\"], [\"Usage\", \"custom-note\"]],\n },\n })\n}\n\nfunction emitPermission(state: State, kind: PermissionKind = \"edit\"): void {\n const root = process.cwd()\n const file = path.join(root, \"src\", \"demo-format.ts\")\n\n if (kind === \"shell\") {\n const command = \"git status --short\"\n const ref = make(state, \"shell\", {\n command,\n workdir: root,\n description: \"Inspect worktree changes\",\n })\n askPermission(state, {\n ref,\n permission: \"shell\",\n patterns: [command],\n always: [\"*\"],\n done: {\n output: `${root}\\ngit status --short\\n M src/demo-format.ts\\n?? src/demo-permission.ts\\n`,\n metadata: {\n exit: 0,\n },\n },\n })\n return\n }\n\n if (kind === \"read\") {\n const target = path.join(root, \"package.json\")\n const ref = make(state, \"read\", {\n path: target,\n offset: 1,\n limit: 80,\n })\n askPermission(state, {\n ref,\n permission: \"read\",\n patterns: [target],\n always: [target],\n done: {\n output: [\"1: {\", '2: \"name\": \"opencode\",', '3: \"private\": true', \"4: }\"].join(\"\\n\"),\n metadata: {},\n },\n })\n return\n }\n\n if (kind === \"subagent\") {\n const ref = make(state, \"subagent\", {\n description: \"Inspect footer spacing across direct-mode prompts\",\n agent: \"explore\",\n })\n askPermission(state, {\n ref,\n permission: \"subagent\",\n patterns: [\"explore\"],\n always: [\"*\"],\n done: {\n output: \"\",\n metadata: {\n sessionID: \"sub_demo_perm_1\",\n status: \"completed\",\n output: \"\",\n },\n },\n })\n return\n }\n\n if (kind === \"external\") {\n const dir = path.join(path.dirname(root), \"demo-shared\")\n const target = path.join(dir, \"README.md\")\n const ref = make(state, \"read\", {\n path: target,\n offset: 1,\n limit: 40,\n })\n askPermission(state, {\n ref,\n permission: \"external_directory\",\n patterns: [`${dir}/**`],\n metadata: {\n parentDir: dir,\n filepath: target,\n },\n always: [`${dir}/**`],\n done: {\n output: `1: # External demo\\n2: Shared preview file\\nPath: ${target}`,\n metadata: {},\n },\n })\n return\n }\n\n if (kind === \"doom\") {\n const ref = make(state, \"subagent\", {\n description: \"Retry the formatter after repeated failures\",\n agent: \"general\",\n })\n askPermission(state, {\n ref,\n permission: \"doom_loop\",\n patterns: [\"*\"],\n always: [\"*\"],\n done: {\n output: \"Continuing after repeated failures.\\n\",\n metadata: {},\n },\n })\n return\n }\n\n const diff = \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\"\n const ref = make(state, \"edit\", {\n path: file,\n })\n askPermission(state, {\n ref,\n permission: \"edit\",\n patterns: [file],\n always: [file],\n done: {\n output: \"\",\n metadata: {\n files: [{ file, status: \"modified\", patch: diff }],\n },\n },\n })\n}\n\nfunction demoForm(kind: FormKind): { title: string; fields: MiniFormRequest[\"fields\"]; questions?: JsonValue[] } {\n if (kind === \"question\") {\n const questions: JsonValue[] = [\n {\n header: \"Layout\",\n question: \"Which footer view should be the reference for spacing checks?\",\n options: [\n { label: \"Form\", description: \"Inspect the canonical Form footer\" },\n { label: \"Prompt\", description: \"Return to the normal composer\" },\n ],\n multiple: false,\n custom: true,\n },\n {\n header: \"Checks\",\n question: \"Pick formatting previews\",\n options: [\n { label: \"Diff\", description: \"Emit an edit diff\" },\n { label: \"Subagent\", description: \"Emit a subagent card\" },\n ],\n multiple: true,\n custom: true,\n },\n ]\n return {\n title: \"Questions\",\n questions,\n fields: [\n {\n key: \"q0\",\n title: \"Layout\",\n description: \"Which footer view should be the reference for spacing checks?\",\n type: \"string\",\n options: [\n { value: \"Form\", label: \"Form\", description: \"Inspect the canonical Form footer\" },\n { value: \"Prompt\", label: \"Prompt\", description: \"Return to the normal composer\" },\n ],\n custom: true,\n },\n {\n key: \"q1\",\n title: \"Checks\",\n description: \"Pick formatting previews\",\n type: \"multiselect\",\n options: [\n { value: \"Diff\", label: \"Diff\", description: \"Emit an edit diff\" },\n { value: \"Subagent\", label: \"Subagent\", description: \"Emit a subagent card\" },\n ],\n custom: true,\n },\n ],\n }\n }\n return {\n title: \"MCP authorization\",\n fields: [\n {\n key: \"authorization\",\n type: \"external\",\n url: \"https://example.com/opencode-demo\",\n title: \"Authorize demo MCP server\",\n description: \"Complete authorization in your browser\",\n },\n ],\n }\n}\n\nfunction emitForm(state: State, kind: FormKind = \"question\"): void {\n const form = demoForm(kind)\n const ref = make(state, kind === \"question\" ? \"question\" : \"mcp_demo\", {\n ...(form.questions ? { questions: form.questions } : { form: kind }),\n })\n startTool(state, ref)\n state.form++\n const request: MiniFormRequest = {\n id: `frm_demo_${state.form}`,\n sessionID: state.id,\n title: form.title,\n metadata:\n kind === \"question\"\n ? { kind: \"question\", tool: { messageID: ref.msg, id: ref.call } }\n : { kind: \"mcp\", message: `Synthetic ${kind} MCP elicitation` },\n fields: form.fields,\n }\n state.forms.set(request.id, { ref, kind, request })\n present(state, [], { type: \"form\", request })\n}\n\nasync function emitFmt(state: State, kind: string, body: string, signal?: AbortSignal): Promise<boolean> {\n if (kind === \"text\") {\n await emitText(state, body || SAMPLE_MARKDOWN, signal)\n return true\n }\n\n if (kind === \"markdown\" || kind === \"md\") {\n await emitText(state, body || SAMPLE_MARKDOWN, signal)\n return true\n }\n\n if (kind === \"table\") {\n await emitText(state, body || SAMPLE_TABLE, signal)\n return true\n }\n\n if (kind === \"reasoning\") {\n await emitReasoning(state, body || \"Planning next steps [REDACTED] while preserving reducer ordering.\", signal)\n return true\n }\n\n if (kind === \"shell\") {\n await emitBash(state, signal)\n return true\n }\n\n if (kind === \"write\") {\n emitWrite(state)\n return true\n }\n\n if (kind === \"edit\") {\n emitEdit(state)\n return true\n }\n\n if (kind === \"patch\") {\n emitPatch(state)\n return true\n }\n\n if (kind === \"subagent\") {\n emitTask(state)\n return true\n }\n\n if (kind === \"question\") {\n emitQuestionTool(state)\n return true\n }\n\n if (kind === \"error\") {\n emitError(state, body || \"demo error event\")\n return true\n }\n\n if (kind === \"mix\") {\n await emitText(state, SAMPLE_MARKDOWN, signal)\n await wait(50, signal)\n await emitReasoning(state, \"Thinking through formatter edge cases [REDACTED].\", signal)\n await wait(50, signal)\n await emitBash(state, signal)\n emitWrite(state)\n emitEdit(state)\n emitPatch(state)\n emitTask(state)\n emitQuestionTool(state)\n emitError(state, \"demo mixed scenario error\")\n return true\n }\n\n return false\n}\n\nfunction intro(state: State): void {\n note(\n state.footer,\n [\n \"Demo slash commands enabled for interactive mode.\",\n `- /permission [kind] (${PERMISSIONS.join(\", \")})`,\n `- /form [kind] (${FORMS.join(\", \")})`,\n `- /fmt <kind> (${KINDS.join(\", \")})`,\n \"Examples:\",\n \"- /permission shell\",\n \"- /form question\",\n \"- /form external\",\n \"- /fmt markdown\",\n \"- /fmt table\",\n \"- /fmt text your custom text\",\n ].join(\"\\n\"),\n )\n}\n\nexport function createRunDemo(input: Input) {\n const state: State = {\n id: input.sessionID,\n thinking: input.thinking,\n footer: input.footer,\n msg: 0,\n part: 0,\n call: 0,\n perm: 0,\n form: 0,\n perms: new Map(),\n forms: new Map(),\n started: new Set(),\n }\n\n const start = async (): Promise<void> => {\n intro(state)\n }\n\n const prompt = async (line: RunPrompt, signal?: AbortSignal): Promise<boolean> => {\n const text = line.text.trim()\n const head = parseSlashHead(text)\n const list = head?.arguments.split(/\\s+/).filter(Boolean) ?? []\n const cmd = head ? `/${head.name}` : \"\"\n\n clearSubagent(state.footer)\n\n if (cmd === \"/help\") {\n intro(state)\n return true\n }\n\n if (cmd === \"/permission\") {\n const kind = permissionKind(list[0])\n if (!kind) {\n note(state.footer, `Pick a permission kind: ${PERMISSIONS.join(\", \")}`)\n return true\n }\n\n emitPermission(state, kind)\n return true\n }\n\n if (cmd === \"/form\") {\n const kind = formKind(list[0])\n if (!kind) {\n note(state.footer, `Pick a form kind: ${FORMS.join(\", \")}`)\n return true\n }\n\n emitForm(state, kind)\n return true\n }\n\n if (cmd === \"/fmt\") {\n const kind = (list[0] || \"\").toLowerCase()\n const body = list.slice(1).join(\" \")\n if (!kind) {\n note(state.footer, `Pick a kind: ${KINDS.join(\", \")}`)\n return true\n }\n\n const ok = await emitFmt(state, kind, body, signal)\n if (ok) {\n return true\n }\n\n note(state.footer, `Unknown kind \"${kind}\". Use: ${KINDS.join(\", \")}`)\n return true\n }\n\n return false\n }\n\n const permission = (input: PermissionReply): boolean => {\n const item = state.perms.get(input.requestID)\n if (!item || !input.reply) {\n return false\n }\n\n state.perms.delete(input.requestID)\n clearBlocker(state)\n\n if (input.reply === \"reject\") {\n failTool(state, item.ref, input.message || \"permission rejected\")\n return true\n }\n\n doneTool(state, item.ref, item.done)\n return true\n }\n\n const formReply = (input: FormReply): boolean => {\n const form = state.forms.get(input.formID)\n if (!form || input.sessionID !== form.request.sessionID) return false\n state.forms.delete(input.formID)\n clearBlocker(state)\n if (form.kind === \"question\") {\n doneTool(state, form.ref, {\n output: \"\",\n metadata: {\n answers: form.request.fields.map((field) => {\n const value = input.answer[field.key]\n if (value === undefined) return []\n return Array.isArray(value) ? [...value] : [String(value)]\n }),\n },\n })\n return true\n }\n doneTool(state, form.ref, {\n output: `Form submitted: ${Object.entries(input.answer)\n .map(([key, value]) => `${key}=${Array.isArray(value) ? value.join(\", \") : String(value)}`)\n .join(\"; \")}\\n`,\n metadata: { answer: input.answer },\n })\n return true\n }\n\n const formCancel = (input: FormCancel): boolean => {\n const form = state.forms.get(input.formID)\n if (!form || input.sessionID !== form.request.sessionID) return false\n state.forms.delete(input.formID)\n clearBlocker(state)\n failTool(state, form.ref, \"form cancelled\")\n return true\n }\n\n return {\n start,\n prompt,\n permission,\n formReply,\n formCancel,\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "E00E6F0279F2D40B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/image/photon-wasm.bun.ts", "../core/src/image/photon.ts"], | ||
| "sourcesContent": [ | ||
| "// @ts-ignore Bun embeds static file imports when compiling the CLI.\nimport photonWasm from \"@silvia-odwyer/photon-node/photon_rs_bg.wasm\" with { type: \"file\" }\n\nexport default photonWasm\n", | ||
| "import photonWasm from \"#photon-wasm\"\nimport { Effect } from \"effect\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { FileSystem } from \"../filesystem.js\"\nimport { DecodeError, ResizerUnavailableError, SizeError } from \"../image.js\"\n\nconst JPEG_QUALITIES = [80, 85, 70, 55, 40]\n\nexport const make = Effect.gen(function* () {\n const loadPhoton = yield* Effect.cached(\n // A runtime without a photon wasm artifact (#photon-wasm resolves to the\n // empty string on workerd) has no resizer, by declaration: fail typed\n // before touching URLs or module loading. The path resolution and import\n // for runtimes that DO have an artifact stay inside the guard too — a\n // throw outside it (workerd's undefined import.meta.url was one) is a\n // defect that escapes the ResizerUnavailableError handling and turns any\n // image-bearing prompt into a 500 instead of degrading to passthrough.\n photonWasm === \"\"\n ? Effect.fail(new ResizerUnavailableError())\n : Effect.tryPromise({\n try: async () => {\n ;(\n globalThis as typeof globalThis & { __OPENCODE_PHOTON_WASM_PATH?: string }\n ).__OPENCODE_PHOTON_WASM_PATH = path.isAbsolute(photonWasm)\n ? photonWasm\n : fileURLToPath(new URL(photonWasm, import.meta.url))\n return await import(\"@silvia-odwyer/photon-node\")\n },\n catch: () => new ResizerUnavailableError(),\n }),\n )\n return Effect.fn(\"Image.Photon.normalize\")(function* (\n resource: string,\n content: FileSystem.Content & { readonly encoding: \"base64\" },\n limits: {\n readonly autoResize: boolean\n readonly maxWidth: number\n readonly maxHeight: number\n readonly maxBase64Bytes: number\n },\n ) {\n const photon = yield* loadPhoton\n const decoded = yield* Effect.try({\n try: () => photon.PhotonImage.new_from_byteslice(Buffer.from(content.content, \"base64\")),\n catch: () => new DecodeError({ resource }),\n })\n try {\n const width = decoded.get_width()\n const height = decoded.get_height()\n const bytes = Buffer.byteLength(content.content, \"utf-8\")\n if (width <= limits.maxWidth && height <= limits.maxHeight && bytes <= limits.maxBase64Bytes) return content\n if (!limits.autoResize)\n return yield* new SizeError({\n resource,\n width,\n height,\n bytes,\n maxWidth: limits.maxWidth,\n maxHeight: limits.maxHeight,\n maxBytes: limits.maxBase64Bytes,\n })\n const scale = Math.min(1, limits.maxWidth / width, limits.maxHeight / height)\n const sizes = Array.from({ length: 32 }).reduce<Array<{ width: number; height: number }>>((acc) => {\n const previous = acc.at(-1) ?? {\n width: Math.max(1, Math.round(width * scale)),\n height: Math.max(1, Math.round(height * scale)),\n }\n const next =\n acc.length === 0\n ? previous\n : {\n width: previous.width === 1 ? 1 : Math.max(1, Math.floor(previous.width * 0.75)),\n height: previous.height === 1 ? 1 : Math.max(1, Math.floor(previous.height * 0.75)),\n }\n return acc.some((item) => item.width === next.width && item.height === next.height) ? acc : [...acc, next]\n }, [])\n for (const size of sizes) {\n const resized = photon.resize(decoded, size.width, size.height, photon.SamplingFilter.Lanczos3)\n try {\n const encoders: Array<readonly [mime: string, encode: () => Uint8Array]> = [\n [\"image/png\", () => resized.get_bytes()],\n ...JPEG_QUALITIES.map((quality) => [\"image/jpeg\", () => resized.get_bytes_jpeg(quality)] as const),\n ]\n for (const [mime, encode] of encoders) {\n const candidate = Buffer.from(encode()).toString(\"base64\")\n if (Buffer.byteLength(candidate, \"utf-8\") <= limits.maxBase64Bytes)\n return { ...content, content: candidate, encoding: \"base64\" as const, mime }\n }\n } finally {\n resized.free()\n }\n }\n return yield* new SizeError({\n resource,\n width,\n height,\n bytes,\n maxWidth: limits.maxWidth,\n maxHeight: limits.maxHeight,\n maxBytes: limits.maxBase64Bytes,\n })\n } finally {\n decoded.free()\n }\n })\n})\n" | ||
| ], | ||
| "mappings": ";kgCAGA,IAAe,ICDf,oBACA,wBAAS,YAIT,IAAM,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,EAAE,EAE7B,EAAO,EAAO,IAAI,SAAU,EAAG,CAC1C,IAAM,EAAa,MAAO,EAAO,OAQ/B,IAAe,GACX,EAAO,KAAK,IAAI,CAAyB,EACzC,EAAO,WAAW,CAChB,IAAK,UAED,WACA,4BAA8B,EAAK,WAAW,CAAU,EACtD,EACA,EAAc,IAAI,IAAI,EAAY,YAAY,GAAG,CAAC,EAC/C,KAAa,2CAEtB,MAAO,IAAM,IAAI,CACnB,CAAC,CACP,EACA,OAAO,EAAO,GAAG,wBAAwB,EAAE,SAAU,CACnD,EACA,EACA,EAMA,CACA,IAAM,EAAS,MAAO,EAChB,EAAU,MAAO,EAAO,IAAI,CAChC,IAAK,IAAM,EAAO,YAAY,mBAAmB,OAAO,KAAK,EAAQ,QAAS,QAAQ,CAAC,EACvF,MAAO,IAAM,IAAI,EAAY,CAAE,UAAS,CAAC,CAC3C,CAAC,EACD,GAAI,CACF,IAAM,EAAQ,EAAQ,UAAU,EAC1B,EAAS,EAAQ,WAAW,EAC5B,EAAQ,OAAO,WAAW,EAAQ,QAAS,OAAO,EACxD,GAAI,GAAS,EAAO,UAAY,GAAU,EAAO,WAAa,GAAS,EAAO,eAAgB,OAAO,EACrG,GAAI,CAAC,EAAO,WACV,OAAO,MAAO,IAAI,EAAU,CAC1B,WACA,QACA,SACA,QACA,SAAU,EAAO,SACjB,UAAW,EAAO,UAClB,SAAU,EAAO,cACnB,CAAC,EACH,IAAM,EAAQ,KAAK,IAAI,EAAG,EAAO,SAAW,EAAO,EAAO,UAAY,CAAM,EACtE,EAAQ,MAAM,KAAK,CAAE,OAAQ,EAAG,CAAC,EAAE,OAAiD,CAAC,IAAQ,CACjG,IAAM,EAAW,EAAI,GAAG,EAAE,GAAK,CAC7B,MAAO,KAAK,IAAI,EAAG,KAAK,MAAM,EAAQ,CAAK,CAAC,EAC5C,OAAQ,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,CAAK,CAAC,CAChD,EACM,EACJ,EAAI,SAAW,EACX,EACA,CACE,MAAO,EAAS,QAAU,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,MAAQ,IAAI,CAAC,EAC/E,OAAQ,EAAS,SAAW,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,OAAS,IAAI,CAAC,CACpF,EACN,OAAO,EAAI,KAAK,CAAC,IAAS,EAAK,QAAU,EAAK,OAAS,EAAK,SAAW,EAAK,MAAM,EAAI,EAAM,CAAC,GAAG,EAAK,CAAI,GACxG,CAAC,CAAC,EACL,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAU,EAAO,OAAO,EAAS,EAAK,MAAO,EAAK,OAAQ,EAAO,eAAe,QAAQ,EAC9F,GAAI,CACF,IAAM,EAAqE,CACzE,CAAC,YAAa,IAAM,EAAQ,UAAU,CAAC,EACvC,GAAG,EAAe,IAAI,CAAC,IAAY,CAAC,aAAc,IAAM,EAAQ,eAAe,CAAO,CAAC,CAAU,CACnG,EACA,QAAY,EAAM,KAAW,EAAU,CACrC,IAAM,EAAY,OAAO,KAAK,EAAO,CAAC,EAAE,SAAS,QAAQ,EACzD,GAAI,OAAO,WAAW,EAAW,OAAO,GAAK,EAAO,eAClD,MAAO,IAAK,EAAS,QAAS,EAAW,SAAU,SAAmB,MAAK,UAE/E,CACA,EAAQ,KAAK,GAGjB,OAAO,MAAO,IAAI,EAAU,CAC1B,WACA,QACA,SACA,QACA,SAAU,EAAO,SACjB,UAAW,EAAO,UAClB,SAAU,EAAO,cACnB,CAAC,SACD,CACA,EAAQ,KAAK,GAEhB,EACF", | ||
| "debugId": "144E04F6735F6D0664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/xai-responses.ts", "../ai/src/protocols/xai-images.ts", "../ai/src/providers/xai.ts"], | ||
| "sourcesContent": [ | ||
| "import { Protocol } from \"../route/protocol.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { ResponsesHostedTools } from \"./utils/responses-hosted-tools.js\"\n\nconst ADAPTER = \"xai-responses\"\nconst NAME = \"xAI Responses\"\n\nconst extension = {\n id: ADAPTER,\n name: NAME,\n} satisfies OpenResponses.Extension\n\nconst HOSTED_TOOLS = {\n web_search_call: { name: \"web_search\", input: (item) => item.action ?? {} },\n x_search_call: { name: \"x_search\", input: (item) => item.action ?? {} },\n file_search_call: { name: \"file_search\", input: (item) => ({ queries: item.queries ?? [] }) },\n code_interpreter_call: {\n name: \"code_interpreter\",\n input: (item) => ({ code: item.code, container_id: item.container_id }),\n },\n image_generation_call: { name: \"image_generation\", input: () => ({}) },\n mcp_call: {\n name: \"mcp\",\n input: (item) => ({ server_label: item.server_label, name: item.name, arguments: item.arguments }),\n },\n} as const satisfies ResponsesHostedTools.Definitions\n\n// Grok speaks the standard Responses reasoning dialect (`reasoning_summary_text.*`,\n// handled by the baseline); only its hosted tool vocabulary differs.\nconst step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => {\n if (event.type === \"response.output_item.done\" && event.item && ResponsesHostedTools.isItem(event.item, HOSTED_TOOLS))\n return ResponsesHostedTools.onDone(state, event.item, HOSTED_TOOLS)\n return OpenResponses.step(state, event)\n}\n\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: OpenResponses.protocol.body,\n stream: {\n event: OpenResponses.protocol.stream.event,\n initial: (request) => OpenResponses.initial(request, extension),\n step,\n terminal: OpenResponses.terminal,\n },\n})\n\nexport * as XAIResponses from \"./xai-responses.js\"\n", | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest } from \"effect/unstable/http\"\nimport { GeneratedImage, ImageModel, ImageResponse, type ImageRequestFor, type ImageRoute } from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n} from \"../schema/index.js\"\nimport { ProviderShared, optionalNull } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\n\nconst ADAPTER = \"xai-images\"\nexport const DEFAULT_BASE_URL = \"https://api.x.ai/v1\"\nexport const PATH = \"/images/generations\"\nexport const EDIT_PATH = \"/images/edits\"\n\nexport type XAIImageString<Known extends string> = Known | (string & {})\n\nexport type XAIImageOptions = {\n readonly n?: number\n readonly aspectRatio?: XAIImageString<\n | \"1:1\"\n | \"3:4\"\n | \"4:3\"\n | \"9:16\"\n | \"16:9\"\n | \"2:3\"\n | \"3:2\"\n | \"9:19.5\"\n | \"19.5:9\"\n | \"9:20\"\n | \"20:9\"\n | \"1:2\"\n | \"2:1\"\n | \"auto\"\n >\n readonly aspect_ratio?: XAIImageString<\n | \"1:1\"\n | \"3:4\"\n | \"4:3\"\n | \"9:16\"\n | \"16:9\"\n | \"2:3\"\n | \"3:2\"\n | \"9:19.5\"\n | \"19.5:9\"\n | \"9:20\"\n | \"20:9\"\n | \"1:2\"\n | \"2:1\"\n | \"auto\"\n >\n readonly resolution?: XAIImageString<\"1k\" | \"2k\">\n readonly responseFormat?: XAIImageString<\"url\" | \"b64_json\">\n readonly response_format?: XAIImageString<\"url\" | \"b64_json\">\n} & Record<string, unknown>\n\ntype XAIImageBody = Record<string, unknown> & {\n readonly model: string\n readonly prompt: string\n}\n\nconst XAIImageResponse = Schema.Struct({\n data: Schema.Array(\n Schema.Struct({\n b64_json: optionalNull(Schema.String),\n url: optionalNull(Schema.String),\n revised_prompt: optionalNull(Schema.String),\n mime_type: optionalNull(Schema.String),\n }),\n ),\n usage: Schema.optional(Schema.Unknown),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: XAIImageOptions | undefined) => {\n if (!options) return undefined\n const { aspectRatio, responseFormat, ...native } = options\n return {\n aspect_ratio: aspectRatio,\n response_format: responseFormat,\n ...native,\n }\n}\n\nconst invalidOutput = (message: string) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<XAIImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"XAIImages.generate\")(function* (request: ImageRequestFor<XAIImageOptions>, execute) {\n const http = mergeHttpOptions(request.model.http, request.http)\n const imageReferences = (request.images ?? []).map((image) => {\n if (image.type === \"bytes\") return { url: ImageInputs.dataUrl(image), type: \"image_url\" as const }\n if (image.type === \"url\") return { url: image.url, type: \"image_url\" as const }\n if (image.type === \"file-id\") return { file_id: image.id }\n return undefined\n })\n if (imageReferences.some((image) => image === undefined))\n return yield* ImageInputs.invalid(ADAPTER, \"xAI Images accepts image URLs, data URLs, bytes, and file IDs\")\n const requestBody = mergeJsonRecords(\n {\n model: request.model.id,\n prompt: request.prompt,\n image: imageReferences.length === 1 ? imageReferences[0] : undefined,\n images: imageReferences.length > 1 ? imageReferences : undefined,\n },\n nativeOptions(request.options),\n http?.body,\n ) as XAIImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const url = applyQuery(\n `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}${imageReferences.length === 0 ? PATH : EDIT_PATH}`,\n http?.query,\n )\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the xAI Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(XAIImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"xAI Images returned an invalid response\")),\n )\n const images = yield* Effect.forEach(decoded.data, (item, index) => {\n const mediaType = item.mime_type ?? \"application/octet-stream\"\n if (item.b64_json)\n return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe(\n Effect.mapError(() => invalidOutput(`xAI Images result ${index} contains invalid base64 data`)),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType,\n data,\n providerMetadata:\n item.revised_prompt === undefined || item.revised_prompt === null\n ? undefined\n : { xai: { revisedPrompt: item.revised_prompt } },\n }),\n ),\n )\n if (item.url)\n return Effect.succeed(\n new GeneratedImage({\n mediaType,\n data: item.url,\n providerMetadata:\n item.revised_prompt === undefined || item.revised_prompt === null\n ? undefined\n : { xai: { revisedPrompt: item.revised_prompt } },\n }),\n )\n return Effect.fail(invalidOutput(`xAI Images result ${index} has neither image data nor a URL`))\n })\n if (images.length === 0) return yield* invalidOutput(\"xAI Images returned no images\")\n const usage = ProviderShared.isRecord(decoded.usage) ? decoded.usage : undefined\n return new ImageResponse({\n images,\n usage: usage === undefined ? undefined : new Usage({ providerMetadata: { xai: usage } }),\n providerMetadata: usage === undefined ? undefined : { xai: { usage } },\n })\n }),\n }\n return ImageModel.make<XAIImageOptions>({ id: input.id, provider: \"xai\", route, http: input.http })\n}\n\nexport const XAIImages = {\n model,\n} as const\n", | ||
| "import { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { HttpOptions, ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAICompatibleProfiles from \"./openai-compatible-profile.js\"\nimport * as OpenAICompatibleChat from \"../protocols/openai-compatible-chat.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport { OpenResponsesChannel } from \"../protocols/open-responses-channel.js\"\nimport { XAIResponses } from \"../protocols/xai-responses.js\"\nimport { XAIImages } from \"../protocols/xai-images.js\"\nimport type { OpenAIOptionsInput } from \"./openai-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\n\nexport const id = ProviderID.make(\"xai\")\n\nexport type XAIProviderOptionsInput = OpenAIOptionsInput\n\nexport type LanguageModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: XAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: XAIProviderOptionsInput\n}\n\nexport type { XAIImageOptions } from \"../protocols/xai-images.js\"\n\nconst RESPONSES_WEBSOCKET_ROTATE_AFTER_MS = 24 * 60 * 1000\n\nconst responsesRoute = Route.make({\n id: \"openai-responses\",\n provider: id,\n providerMetadataKey: \"xai\",\n protocol: XAIResponses.protocol,\n endpoint: Endpoint.path(\"/responses\", { baseURL: OpenAICompatibleProfiles.profiles.xai.baseURL }),\n transport: OpenResponsesChannel.transport({\n id: \"openai-responses\",\n name: \"xAI Responses\",\n rotateAfterMs: RESPONSES_WEBSOCKET_ROTATE_AFTER_MS,\n }),\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nconst chatRoute = Route.make({\n id: \"openai-compatible-chat\",\n provider: id,\n providerMetadataKey: \"xai\",\n protocol: OpenAIChat.protocol,\n endpoint: Endpoint.path(\"/chat/completions\", { baseURL: OpenAICompatibleProfiles.profiles.xai.baseURL }),\n transport: OpenAICompatibleChat.route.transport,\n headers: ({ request }): Record<string, string> =>\n request.promptCacheKey ? { \"x-grok-conv-id\": request.promptCacheKey } : {},\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => AuthOptions.bearer(options, \"XAI_API_KEY\")\n\nconst configuredResponsesRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return responsesRoute.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL },\n auth: auth(input),\n })\n}\n\nconst configuredChatRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return chatRoute.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL },\n auth: auth(input),\n })\n}\n\nexport const configure = (input: LanguageModelOptions = {}) => {\n const responsesRoute = configuredResponsesRoute(input)\n const chatRoute = configuredChatRoute(input)\n const responses = (modelID: string | ModelID) => responsesRoute.model<XAIProviderOptionsInput>({ id: modelID })\n const chat = (modelID: string | ModelID) => chatRoute.model<XAIProviderOptionsInput>({ id: modelID })\n const image = (modelID: string | ModelID) =>\n XAIImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL,\n headers: input.headers,\n http: input.http === undefined ? undefined : HttpOptions.make(input.http),\n })\n return {\n id,\n model: responses,\n responses,\n chat,\n image,\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, XAIProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\nexport const responses = provider.responses\nexport const chat = provider.chat\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": ";ukCAIA,IAAM,EAAU,gBACV,GAAO,gBAEP,GAAY,CAChB,GAAI,EACJ,KAAM,EACR,EAEM,EAAe,CACnB,gBAAiB,CAAE,KAAM,aAAc,MAAO,CAAC,IAAS,EAAK,QAAU,CAAC,CAAE,EAC1E,cAAe,CAAE,KAAM,WAAY,MAAO,CAAC,IAAS,EAAK,QAAU,CAAC,CAAE,EACtE,iBAAkB,CAAE,KAAM,cAAe,MAAO,CAAC,KAAU,CAAE,QAAS,EAAK,SAAW,CAAC,CAAE,EAAG,EAC5F,sBAAuB,CACrB,KAAM,mBACN,MAAO,CAAC,KAAU,CAAE,KAAM,EAAK,KAAM,aAAc,EAAK,YAAa,EACvE,EACA,sBAAuB,CAAE,KAAM,mBAAoB,MAAO,KAAO,CAAC,EAAG,EACrE,SAAU,CACR,KAAM,MACN,MAAO,CAAC,KAAU,CAAE,aAAc,EAAK,aAAc,KAAM,EAAK,KAAM,UAAW,EAAK,SAAU,EAClG,CACF,EAIM,GAAO,CAAC,EAAkC,IAA+B,CAC7E,GAAI,EAAM,OAAS,6BAA+B,EAAM,MAAQ,EAAqB,OAAO,EAAM,KAAM,CAAY,EAClH,OAAO,EAAqB,OAAO,EAAO,EAAM,KAAM,CAAY,EACpE,OAAO,EAAc,KAAK,EAAO,CAAK,GAG3B,GAAW,EAAS,KAAK,CACpC,GAAI,EACJ,KAAM,EAAc,SAAS,KAC7B,OAAQ,CACN,MAAO,EAAc,SAAS,OAAO,MACrC,QAAS,CAAC,IAAY,EAAc,QAAQ,EAAS,EAAS,EAC9D,QACA,SAAU,EAAc,QAC1B,CACF,CAAC,EC7BD,IAAM,EAAU,aACH,GAAmB,sBACnB,GAAO,sBACP,GAAY,gBAgDnB,GAAmB,EAAO,OAAO,CACrC,KAAM,EAAO,MACX,EAAO,OAAO,CACZ,SAAU,EAAa,EAAO,MAAM,EACpC,IAAK,EAAa,EAAO,MAAM,EAC/B,eAAgB,EAAa,EAAO,MAAM,EAC1C,UAAW,EAAa,EAAO,MAAM,CACvC,CAAC,CACH,EACA,MAAO,EAAO,SAAS,EAAO,OAAO,CACvC,CAAC,EAUK,GAAgB,CAAC,IAAyC,CAC9D,GAAI,CAAC,EAAS,OACd,IAAQ,cAAa,oBAAmB,GAAW,EACnD,MAAO,CACL,aAAc,EACd,gBAAiB,KACd,CACL,GAGI,EAAgB,CAAC,IACrB,IAAI,EAAQ,CACV,OAAQ,EACR,OAAQ,WACR,OAAQ,IAAI,EAA4B,CAAE,UAAS,MAAO,CAAQ,CAAC,CACrE,CAAC,EAEG,GAAa,CAAC,EAAa,IAA8C,CAC7E,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAO,IAAI,IAAI,CAAG,EAExB,OADA,OAAO,QAAQ,CAAK,EAAE,QAAQ,EAAE,EAAK,KAAW,EAAK,aAAa,IAAI,EAAK,CAAK,CAAC,EAC1E,EAAK,SAAS,GAGV,GAAQ,CAAC,IAAsB,CAC1C,IAAM,EAAqC,CACzC,GAAI,EACJ,SAAU,EAAO,GAAG,oBAAoB,EAAE,SAAU,CAAC,EAA2C,EAAS,CACvG,IAAM,EAAO,EAAiB,EAAQ,MAAM,KAAM,EAAQ,IAAI,EACxD,GAAmB,EAAQ,QAAU,CAAC,GAAG,IAAI,CAAC,IAAU,CAC5D,GAAI,EAAM,OAAS,QAAS,MAAO,CAAE,IAAK,EAAY,QAAQ,CAAK,EAAG,KAAM,WAAqB,EACjG,GAAI,EAAM,OAAS,MAAO,MAAO,CAAE,IAAK,EAAM,IAAK,KAAM,WAAqB,EAC9E,GAAI,EAAM,OAAS,UAAW,MAAO,CAAE,QAAS,EAAM,EAAG,EACzD,OACD,EACD,GAAI,EAAgB,KAAK,CAAC,IAAU,IAAU,MAAS,EACrD,OAAO,MAAO,EAAY,QAAQ,EAAS,+DAA+D,EAC5G,IAAM,EAAc,EAClB,CACE,MAAO,EAAQ,MAAM,GACrB,OAAQ,EAAQ,OAChB,MAAO,EAAgB,SAAW,EAAI,EAAgB,GAAK,OAC3D,OAAQ,EAAgB,OAAS,EAAI,EAAkB,MACzD,EACA,GAAc,EAAQ,OAAO,EAC7B,GAAM,IACR,EACM,EAAO,EAAe,WAAW,CAAW,EAC5C,EAAM,GACV,IAAI,EAAM,SAAW,IAAkB,QAAQ,MAAO,EAAE,IAAI,EAAgB,SAAW,EAAI,GAAO,KAClG,GAAM,KACR,EACM,GAAU,MAAO,EAAK,SAAS,EAAM,IAAI,EAAE,CAC/C,UACA,OAAQ,OACR,MACA,KAAM,EACN,QAAS,EAAQ,UAAU,IAAK,EAAM,WAAY,GAAM,OAAQ,CAAC,CACnE,CAAC,EAOK,GAAU,OANC,MAAO,EACtB,EAAkB,KAAK,CAAG,EAAE,KAC1B,EAAkB,WAAW,EAAO,EACpC,EAAkB,SAAS,EAAM,kBAAkB,CACrD,CACF,GACgC,KAAK,KACnC,EAAO,SAAS,IAAM,EAAc,wCAAwC,CAAC,CAC/E,EACM,EAAU,MAAO,EAAO,oBAAoB,EAAgB,EAAE,EAAO,EAAE,KAC3E,EAAO,SAAS,IAAM,EAAc,yCAAyC,CAAC,CAChF,EACM,EAAS,MAAO,EAAO,QAAQ,EAAQ,KAAM,CAAC,EAAM,IAAU,CAClE,IAAM,EAAY,EAAK,WAAa,2BACpC,GAAI,EAAK,SACP,OAAO,EAAO,WAAW,EAAS,aAAa,EAAK,QAAQ,CAAC,EAAE,KAC7D,EAAO,SAAS,IAAM,EAAc,qBAAqB,gCAAoC,CAAC,EAC9F,EAAO,IACL,CAAC,KACC,IAAI,EAAe,CACjB,YACA,QACA,iBACE,EAAK,iBAAmB,QAAa,EAAK,iBAAmB,KACzD,OACA,CAAE,IAAK,CAAE,cAAe,EAAK,cAAe,CAAE,CACtD,CAAC,CACL,CACF,EACF,GAAI,EAAK,IACP,OAAO,EAAO,QACZ,IAAI,EAAe,CACjB,YACA,KAAM,EAAK,IACX,iBACE,EAAK,iBAAmB,QAAa,EAAK,iBAAmB,KACzD,OACA,CAAE,IAAK,CAAE,cAAe,EAAK,cAAe,CAAE,CACtD,CAAC,CACH,EACF,OAAO,EAAO,KAAK,EAAc,qBAAqB,oCAAwC,CAAC,EAChG,EACD,GAAI,EAAO,SAAW,EAAG,OAAO,MAAO,EAAc,+BAA+B,EACpF,IAAM,EAAQ,EAAe,SAAS,EAAQ,KAAK,EAAI,EAAQ,MAAQ,OACvE,OAAO,IAAI,EAAc,CACvB,SACA,MAAO,IAAU,OAAY,OAAY,IAAI,EAAM,CAAE,iBAAkB,CAAE,IAAK,CAAM,CAAE,CAAC,EACvF,iBAAkB,IAAU,OAAY,OAAY,CAAE,IAAK,CAAE,OAAM,CAAE,CACvE,CAAC,EACF,CACH,EACA,OAAO,EAAW,KAAsB,CAAE,GAAI,EAAM,GAAI,SAAU,MAAO,QAAO,KAAM,EAAM,IAAK,CAAC,GAGvF,EAAY,CACvB,QACF,EC5LO,IAAM,EAAK,EAAW,KAAK,KAAK,EAkBjC,GAAsC,QAEtC,GAAiB,EAAM,KAAK,CAChC,GAAI,mBACJ,SAAU,EACV,oBAAqB,MACrB,SAAU,EAAa,SACvB,SAAU,EAAS,KAAK,aAAc,CAAE,QAAkC,EAAS,IAAI,OAAQ,CAAC,EAChG,UAAW,EAAqB,UAAU,CACxC,GAAI,mBACJ,KAAM,gBACN,cAAe,EACjB,CAAC,EACD,SAAU,CAAE,gBAAiB,CAAE,MAAO,GAAO,QAAS,CAAC,6BAA6B,CAAE,CAAE,CAC1F,CAAC,EAEK,GAAY,EAAM,KAAK,CAC3B,GAAI,yBACJ,SAAU,EACV,oBAAqB,MACrB,SAAqB,EACrB,SAAU,EAAS,KAAK,oBAAqB,CAAE,QAAkC,EAAS,IAAI,OAAQ,CAAC,EACvG,UAAgC,EAAM,UACtC,QAAS,EAAG,aACV,EAAQ,eAAiB,CAAE,iBAAkB,EAAQ,cAAe,EAAI,CAAC,CAC7E,CAAC,EAEY,GAAS,CAAC,GAAgB,EAAS,EAE1C,EAAO,CAAC,IAA4C,GAAY,OAAO,EAAS,aAAa,EAE7F,GAA2B,CAAC,IAAgC,CAChE,IAAQ,OAAQ,EAAG,KAAM,EAAO,aAAY,GAAS,EACrD,OAAO,GAAe,KAAK,IACtB,EACH,SAAU,CAAE,QAAS,GAAoC,EAAS,IAAI,OAAQ,EAC9E,KAAM,EAAK,CAAK,CAClB,CAAC,GAGG,GAAsB,CAAC,IAAgC,CAC3D,IAAQ,OAAQ,EAAG,KAAM,EAAO,aAAY,GAAS,EACrD,OAAO,GAAU,KAAK,IACjB,EACH,SAAU,CAAE,QAAS,GAAoC,EAAS,IAAI,OAAQ,EAC9E,KAAM,EAAK,CAAK,CAClB,CAAC,GAGU,EAAY,CAAC,EAA8B,CAAC,IAAM,CAC7D,IAAM,EAAiB,GAAyB,CAAK,EAC/C,EAAY,GAAoB,CAAK,EACrC,EAAY,CAAC,IAA8B,EAAe,MAA+B,CAAE,GAAI,CAAQ,CAAC,EAU9G,MAAO,CACL,KACA,MAAO,EACP,YACA,KAbW,CAAC,IAA8B,EAAU,MAA+B,CAAE,GAAI,CAAQ,CAAC,EAclG,MAbY,CAAC,IACb,EAAU,MAAM,CACd,GAAI,EACJ,KAAM,EAAK,CAAK,EAChB,QAAS,EAAM,SAAoC,EAAS,IAAI,QAChE,QAAS,EAAM,QACf,KAAM,EAAM,OAAS,OAAY,OAAY,EAAY,KAAK,EAAM,IAAI,CAC1E,CAAC,EAOD,WACF,GAGW,EAAW,EAAU,EACrB,GAAgF,CAAC,EAAS,IACrG,EAAU,CACR,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,QAAS,EAAS,QAClB,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO,EACL,GAAY,EAAS,UACrB,GAAO,EAAS,KAChB,GAAQ,EAAS", | ||
| "debugId": "1FB5EB982A3675B864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/mini.ts", "src/mini-host.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { ClientError, OpenCode, type OpenCodeClient } from \"@opencode-ai/client/promise\"\nimport type { MiniFrontendInput } from \"@opencode-ai/tui/mini\"\nimport { setTimeout } from \"node:timers/promises\"\nimport { readStdin } from \"./util/io\"\nimport { createMiniHost, INTERACTIVE_INPUT_ERROR, usingInteractiveStdin } from \"./mini-host\"\nimport { parseSessionTargetModel, resolveSessionTarget, type SessionTargetPreparation } from \"./session-target\"\nimport { Env } from \"./env\"\n\nexport type MiniCommandInput = {\n server: {\n endpoint: Endpoint\n reconnect?: (signal: AbortSignal) => Promise<Endpoint>\n }\n continue?: boolean\n session?: string\n fork?: boolean\n model?: string\n agent?: string\n prompt?: string\n replay?: boolean\n replayLimit?: number\n demo?: boolean\n tuiConfig?: MiniFrontendInput[\"tuiConfig\"]\n config?: MiniFrontendInput[\"config\"]\n paths: { home: string; state: string; log: string }\n}\n\ntype Model = MiniFrontendInput[\"model\"]\n\nclass MiniInputError extends Error {}\n\nexport async function runMini(input: MiniCommandInput) {\n try {\n validate(input)\n const result = await usingInteractiveStdin(async (terminal) => {\n const initialInput = mergeInput(process.stdin.isTTY ? undefined : await readStdin(), input.prompt)\n const frontendTask = import(\"@opencode-ai/tui/mini\")\n const directory = localDirectory()\n const connection = createMiniConnection(input.server)\n const sdk = connection.sdk\n const environment = input.server.reconnect ? Env.session() : undefined\n const requested = parseModel(input.model)\n const model = requested ? { providerID: requested.providerID, modelID: requested.id } : undefined\n const prepare = prepareTarget(input.agent)\n const resolveTarget = async (initial: OpenCodeClient, signal: AbortSignal) => {\n const resolved = await resolveMiniTarget({\n sdk: initial,\n reconnect: connection.reconnect,\n signal,\n resolve: (client) =>\n resolveSessionTarget({\n client,\n location: { directory },\n continue: input.continue,\n session: input.session,\n fork: input.fork,\n model: requested,\n agent: input.agent,\n environment,\n prepare,\n signal,\n }).catch((error) => {\n if (error instanceof Error && error.message === \"Session not found\")\n throw new MiniInputError(error.message)\n throw error\n }),\n })\n const target = resolved.value\n return {\n sdk: resolved.sdk,\n sessionID: target.session.id,\n sessionTitle: target.session.title,\n location: target.location,\n model: target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined,\n variant: target.model?.variant,\n agent: target.agent,\n resume: target.resume,\n }\n }\n const create = (\n client: OpenCodeClient,\n next: {\n location: { directory: string; workspaceID?: string }\n agent: string | undefined\n model: Model\n variant: string | undefined\n },\n signal?: AbortSignal,\n ) =>\n resolveSessionTarget({\n client,\n location: { directory: next.location.directory, workspace: next.location.workspaceID },\n agent: next.agent,\n environment,\n model: next.model\n ? { providerID: next.model.providerID, id: next.model.modelID, variant: next.variant }\n : undefined,\n prepare,\n signal,\n }).then((target) => ({\n sessionID: target.session.id,\n sessionTitle: target.session.title,\n location: target.location,\n model: target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined,\n variant: target.model?.variant,\n agent: target.agent,\n resume: false,\n }))\n const frontend = await frontendTask\n return frontend.runMiniFrontend({\n host: createMiniHost({ terminal, directory, paths: input.paths }),\n sdk,\n directory,\n target: resolveTarget,\n reconnect: connection.reconnect,\n createSession: create,\n agent: input.agent,\n model,\n variant: requested?.variant,\n files: [],\n initialInput,\n replay: input.replay ?? true,\n replayLimit: input.replayLimit,\n demo: input.demo,\n tuiConfig: input.tuiConfig,\n config: input.config,\n })\n })\n if (result.exitCode !== 0) process.exit(result.exitCode)\n } catch (error) {\n if (error instanceof MiniInputError || (error instanceof Error && error.message === INTERACTIVE_INPUT_ERROR))\n fail(error.message)\n throw error\n }\n}\n\n/** @internal Exported for CLI boundary tests. */\nexport function createMiniConnection(input: MiniCommandInput[\"server\"]) {\n const make = (endpoint: Endpoint) =>\n OpenCode.make({\n baseUrl: endpoint.url,\n headers: Service.headers(endpoint),\n })\n const reconnect = input.reconnect\n return {\n sdk: make(input.endpoint),\n reconnect: reconnect\n ? async (signal: AbortSignal) => {\n const endpoint = await reconnect(signal)\n return make(endpoint)\n }\n : undefined,\n }\n}\n\n/** @internal Exported for reconnect lifecycle tests. */\nexport async function resolveMiniTarget<A>(input: {\n sdk: OpenCodeClient\n reconnect?: (signal: AbortSignal) => Promise<OpenCodeClient>\n signal: AbortSignal\n resolve: (sdk: OpenCodeClient) => Promise<A>\n}) {\n let sdk = input.sdk\n while (true) {\n try {\n return { sdk, value: await input.resolve(sdk) }\n } catch (error) {\n if (!input.reconnect || !(error instanceof ClientError) || error.reason !== \"Transport\") throw error\n while (true) {\n try {\n sdk = await input.reconnect(input.signal)\n break\n } catch (resolveError) {\n if (input.signal.aborted) throw resolveError\n await setTimeout(250, undefined, { signal: input.signal })\n }\n }\n }\n }\n}\n\nexport function validateMiniTerminal() {\n if (!process.stdout.isTTY) fail(\"opencode mini requires a TTY stdout\")\n}\n\n/** @internal Exported for testing. */\nexport function mergeInput(piped: string | undefined, prompt: string | undefined) {\n if (!prompt) return piped || undefined\n if (!piped) return prompt\n return piped + \"\\n\" + prompt\n}\n\nfunction validate(input: MiniCommandInput) {\n validateMiniTerminal()\n if (input.replayLimit !== undefined && (!Number.isInteger(input.replayLimit) || input.replayLimit <= 0)) {\n fail(\"--replay-limit must be a positive integer\")\n }\n if (input.fork && !input.continue && !input.session) fail(\"--fork requires --continue or --session\")\n}\n\nfunction localDirectory(): string {\n const root = process.env.PWD ?? process.cwd()\n try {\n process.chdir(root)\n return process.cwd()\n } catch {\n throw new MiniInputError(`Failed to change directory to ${root}`)\n }\n}\n\nfunction parseModel(value?: string) {\n try {\n return parseSessionTargetModel(value)\n } catch {\n throw new MiniInputError(\"--model must use the format provider/model[#variant]\")\n }\n}\n\nfunction prepareTarget(requestedAgent?: string): SessionTargetPreparation {\n return async (input) => ({ model: input.model, agent: requestedAgent ?? input.agent })\n}\n\nfunction fail(message: string): never {\n process.stderr.write(`\\x1b[91m\\x1b[1mError: \\x1b[0m${message}\\n`)\n process.exit(1)\n}\n", | ||
| "import type { MiniFrontendInput } from \"@opencode-ai/tui/mini\"\nimport { createModelPreferenceRepository } from \"@opencode-ai/tui/model-preference\"\nimport fs from \"node:fs\"\nimport { readFile } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { ReadStream } from \"node:tty\"\n\nexport const INTERACTIVE_INPUT_ERROR = \"opencode mini requires a controlling terminal for input\"\n\nexport type InteractiveStdin = {\n stdin: NodeJS.ReadStream\n cleanup(): void\n}\n\ntype MiniHost = MiniFrontendInput[\"host\"]\n\nfunction preferences(statePath: string): MiniHost[\"preferences\"] {\n const repository = createModelPreferenceRepository(path.join(statePath, \"model.json\"))\n return {\n async resolveVariant(model) {\n if (!model) return\n return repository.resolveVariant(model)\n },\n async saveVariant(model, variant) {\n if (!model) return\n await repository.saveVariant(model, variant).catch(() => undefined)\n },\n }\n}\n\nfunction signal(name: \"SIGINT\" | \"SIGUSR2\"): MiniHost[\"signals\"][\"sigint\"] {\n return {\n subscribe(listener) {\n let subscribed = true\n process.on(name, listener)\n return () => {\n if (!subscribed) return\n subscribed = false\n process.off(name, listener)\n }\n },\n }\n}\n\nfunction createTrace(\n logPath: string,\n diagnostics: { pid: number; cwd: string; argv: string[] },\n): MiniHost[\"diagnostics\"][\"trace\"] {\n if (!process.env.OPENCODE_DIRECT_TRACE) return\n const stamp = new Date()\n .toISOString()\n .replace(/[-:]/g, \"\")\n .replace(/\\.\\d+Z$/, \"Z\")\n const target = path.join(logPath, \"direct\", `${stamp}-${diagnostics.pid}.jsonl`)\n const text = (data: unknown) =>\n JSON.stringify(data, (_key, value) => (typeof value === \"bigint\" ? String(value) : value), 0)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(\n path.join(logPath, \"direct\", \"latest.json\"),\n text({\n time: new Date().toISOString(),\n ...diagnostics,\n path: target,\n }) + \"\\n\",\n )\n const trace = {\n write(type: string, data?: unknown) {\n fs.appendFileSync(\n target,\n text({\n time: new Date().toISOString(),\n pid: diagnostics.pid,\n type,\n data,\n }) + \"\\n\",\n )\n },\n }\n trace.write(\"trace.start\", {\n argv: diagnostics.argv,\n cwd: diagnostics.cwd,\n path: target,\n })\n return trace\n}\n\nfunction openTerminalStdin(target: string): NodeJS.ReadStream {\n return new ReadStream(fs.openSync(target, \"r\"))\n}\n\nexport function resolveInteractiveStdin(\n stdin: NodeJS.ReadStream = process.stdin,\n open: (target: string) => NodeJS.ReadStream = openTerminalStdin,\n platform: NodeJS.Platform = process.platform,\n): InteractiveStdin {\n if (stdin.isTTY) return { stdin, cleanup() {} }\n const target = platform === \"win32\" ? \"CONIN$\" : \"/dev/tty\"\n try {\n const source = open(target)\n let cleaned = false\n return {\n stdin: source,\n cleanup() {\n if (cleaned) return\n cleaned = true\n source.destroy()\n },\n }\n } catch (error) {\n throw new Error(INTERACTIVE_INPUT_ERROR, { cause: error })\n }\n}\n\n/** @internal Exported for owner-local resource cleanup tests. */\nexport async function usingInteractiveStdin<T>(\n run: (terminal: InteractiveStdin) => Promise<T>,\n resolve: () => InteractiveStdin = resolveInteractiveStdin,\n) {\n const terminal = resolve()\n try {\n return await run(terminal)\n } finally {\n terminal.cleanup()\n }\n}\n\n/** @internal Exported for owner-local host capability tests. */\nexport function createMiniHost(input: {\n terminal: InteractiveStdin\n directory: string\n paths: { home: string; state: string; log: string }\n}): MiniHost {\n const paths = input.paths\n const diagnostics = {\n pid: process.pid,\n cwd: input.directory,\n argv: process.argv.slice(2),\n }\n return {\n terminal: { stdin: input.terminal.stdin },\n platform: process.platform,\n stdout: {\n write(value) {\n process.stdout.write(value)\n },\n },\n files: {\n readText: (url) => readFile(new URL(url), \"utf8\"),\n },\n editor: {\n async open(options) {\n const { openEditor } = await import(\"@opencode-ai/tui/editor\")\n return openEditor(options)\n },\n },\n paths: { home: paths.home },\n signals: {\n sigint: signal(\"SIGINT\"),\n sigusr2: signal(\"SIGUSR2\"),\n },\n startup: {\n showTiming: [\"1\", \"true\"].includes(process.env.OPENCODE_SHOW_TTFD?.toLowerCase() ?? \"\"),\n now: () => performance.now(),\n },\n diagnostics: {\n trace: createTrace(paths.log, diagnostics),\n },\n preferences: preferences(paths.state),\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CBBBB2948508C3B764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "D5C005B13044246F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/ai-gateway-provider@3.1.2+cd874a64d6146f19/node_modules/ai-gateway-provider/dist/providers/unified.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/providers/unified.ts\nimport { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";\nvar createUnified = (arg) => {\n return createOpenAICompatible({\n baseURL: \"https://gateway.ai.cloudflare.com/v1/compat\",\n // intercepted and replaced with actual base URL later\n name: \"Unified\",\n ...arg || {}\n });\n};\nvar unified = createUnified();\nexport {\n createUnified,\n unified\n};\n//# sourceMappingURL=unified.mjs.map" | ||
| ], | ||
| "mappings": ";qUAEA,IAAI,EAAgB,CAAC,IACZ,EAAuB,CAC5B,QAAS,8CAET,KAAM,aACH,GAAO,CAAC,CACb,CAAC,EAEC,EAAU,EAAc", | ||
| "debugId": "536076D66CA5456864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/runtime.queue.ts"], | ||
| "sourcesContent": [ | ||
| "// Serial prompt queue for direct interactive mode.\n//\n// Prompts arrive from the footer (user types and hits enter) and local\n// operations drain one at a time. Ordinary prompts submitted during an active\n// ordinary turn are admitted immediately to the server's durable queue.\n//\n// The queue also handles local session commands, empty-prompt rejection,\n// and tracks per-turn wall-clock duration for the footer status line.\n//\n// Resolves when the footer closes and all in-flight work finishes.\nimport { SessionMessage } from \"@opencode-ai/schema/session-message\"\nimport { Locale } from \"../util/locale\"\nimport { isCompactCommand, isExitCommand, isNewCommand } from \"./prompt.shared\"\nimport type { FooterApi, FooterEvent, RunDelivery, RunPrompt } from \"./types\"\n\ntype Trace = {\n write(type: string, data?: unknown): void\n}\n\nexport type QueueInput = {\n footer: FooterApi\n initialInput?: string\n trace?: Trace\n onSend?: (prompt: RunPrompt, delivery: RunDelivery) => void\n onAdmissionError?: (prompt: RunPrompt, error: unknown) => void | Promise<void>\n onNewSession?: () => void | Promise<void>\n onCompact?: () => void | Promise<void>\n admit: (prompt: RunPrompt, delivery: RunDelivery, signal: AbortSignal) => Promise<void>\n settle: () => Promise<void>\n run: (prompt: RunPrompt, signal: AbortSignal, admitted: () => void) => Promise<void>\n}\n\ntype State = {\n queue: RunPrompt[]\n active?: RunPrompt\n admission?: Promise<void>\n ctrl?: AbortController\n closed: boolean\n}\n\n// Runs the prompt queue until the footer closes.\n//\n// Subscribes to footer prompt events and drains operations through input.run().\n// Ordinary prompts submitted during an ordinary active turn are admitted as\n// durable queued work instead of remaining editable process-local state.\nexport async function runPromptQueue(input: QueueInput): Promise<void> {\n const stop = Promise.withResolvers<{ type: \"closed\" }>()\n const done = Promise.withResolvers<void>()\n const state: State = {\n queue: [],\n closed: input.footer.isClosed,\n }\n let draining: Promise<void> | undefined\n let admissions = Promise.resolve()\n let admissionVersion = 0\n const admissionController = new AbortController()\n\n const emit = (next: FooterEvent, row: Record<string, unknown>) => {\n input.trace?.write(\"ui.patch\", row)\n input.footer.event(next)\n }\n\n const finish = () => {\n if (!state.closed || draining) {\n return\n }\n\n done.resolve()\n }\n\n const close = () => {\n if (state.closed) {\n return\n }\n\n state.closed = true\n state.queue.length = 0\n // Ordinary turn signals map to session.interrupt; exiting should only detach the TUI.\n if (state.active?.mode === \"shell\") state.ctrl?.abort()\n admissionController.abort()\n stop.resolve({ type: \"closed\" })\n finish()\n }\n\n const drain = () => {\n if (draining || state.closed || state.queue.length === 0) {\n return\n }\n\n draining = (async () => {\n try {\n while (!state.closed && state.queue.length > 0) {\n const prompt = state.queue.shift()!\n\n if (prompt.mode !== \"shell\" && isNewCommand(prompt.text)) {\n if (!input.onNewSession) {\n emit(\n {\n type: \"stream.patch\",\n patch: {\n status: \"new sessions unavailable\",\n },\n },\n {\n status: \"new sessions unavailable\",\n },\n )\n continue\n }\n\n emit(\n {\n type: \"stream.patch\",\n patch: {\n phase: \"running\",\n status: \"starting new session\",\n },\n },\n {\n phase: \"running\",\n status: \"starting new session\",\n },\n )\n await input.onNewSession()\n continue\n }\n\n if (prompt.mode !== \"shell\" && isCompactCommand(prompt.text)) {\n emit(\n {\n type: \"stream.patch\",\n patch: {\n phase: \"running\",\n status: \"compacting session\",\n },\n },\n {\n phase: \"running\",\n status: \"compacting session\",\n },\n )\n await input.onCompact?.()\n continue\n }\n\n const sent =\n prompt.mode === \"shell\"\n ? prompt\n : {\n ...prompt,\n messageID: prompt.messageID ?? SessionMessage.ID.create(),\n }\n state.active = sent\n\n emit(\n { type: \"turn.send\" },\n {\n phase: \"running\",\n status: \"sending prompt\",\n },\n )\n const start = Date.now()\n const ctrl = new AbortController()\n const admission = Promise.withResolvers<void>()\n const version = admissionVersion\n state.ctrl = ctrl\n state.admission = admission.promise\n\n try {\n await input.footer.idle()\n if (state.closed) {\n break\n }\n\n if (sent.mode !== \"shell\") {\n const commit = {\n kind: \"user\",\n text: sent.text,\n phase: \"start\",\n source: \"system\",\n messageID: sent.messageID,\n } as const\n input.trace?.write(\"ui.commit\", commit)\n input.footer.append(commit)\n }\n input.onSend?.(sent, sent.delivery ?? \"steer\")\n\n if (state.closed) {\n break\n }\n\n const task = input.run(sent, ctrl.signal, admission.resolve).then(\n () => ({ type: \"done\" as const }),\n (error) => ({ type: \"error\" as const, error }),\n )\n\n const next = await Promise.race([task, stop.promise])\n if (next.type === \"closed\") {\n break\n }\n\n if (next.type === \"error\") {\n throw next.error\n }\n if (sent.mode !== \"shell\" && admissionVersion !== version) {\n do {\n const current = admissionVersion\n await admissions\n if (state.closed) break\n await input.settle()\n if (current === admissionVersion) break\n } while (!state.closed)\n }\n } finally {\n admission.resolve()\n if (state.ctrl === ctrl) {\n state.ctrl = undefined\n }\n if (state.admission === admission.promise) state.admission = undefined\n\n if (sent.mode !== \"shell\") {\n const duration = Locale.duration(Math.max(0, Date.now() - start))\n emit(\n {\n type: \"turn.duration\",\n duration,\n },\n {\n duration,\n },\n )\n }\n state.active = undefined\n }\n }\n } catch (error) {\n done.reject(error)\n return\n } finally {\n draining = undefined\n emit(\n { type: \"turn.idle\" },\n {\n phase: \"idle\",\n status: \"\",\n },\n )\n }\n\n finish()\n })()\n }\n\n const submit = (prompt: RunPrompt) => {\n if (!prompt.text.trim() || state.closed) {\n return\n }\n\n if (prompt.mode !== \"shell\" && isExitCommand(prompt.text)) {\n input.footer.close()\n return\n }\n\n const active = state.active\n if (\n active &&\n active.mode !== \"shell\" &&\n prompt.mode !== \"shell\" &&\n prompt.command?.source !== \"skill\" &&\n !isNewCommand(prompt.text) &&\n !isCompactCommand(prompt.text) &&\n !state.queue.some((item) => item.mode !== \"shell\" && (isNewCommand(item.text) || isCompactCommand(item.text)))\n ) {\n const sent = { ...prompt, messageID: SessionMessage.ID.create() }\n const admission = state.admission\n admissionVersion += 1\n const delivery = prompt.delivery ?? \"queue\"\n input.onSend?.(sent, delivery)\n admissions = admissions\n .then(() => admission)\n .then(() => input.admit(sent, delivery, admissionController.signal))\n .catch((error) => (state.closed ? undefined : input.onAdmissionError?.(sent, error)))\n return\n }\n\n state.queue.push(prompt)\n if (prompt.mode !== \"shell\" && (isNewCommand(prompt.text) || isCompactCommand(prompt.text))) {\n drain()\n return\n }\n\n emit(\n {\n type: \"first\",\n first: false,\n },\n {\n first: false,\n },\n )\n drain()\n }\n\n const offPrompt = input.footer.onPrompt((prompt) => {\n submit(prompt)\n })\n const offClose = input.footer.onClose(() => {\n close()\n })\n try {\n if (state.closed) {\n return\n }\n\n submit({\n text: input.initialInput ?? \"\",\n parts: [],\n })\n finish()\n await done.promise\n } finally {\n offPrompt()\n offClose()\n close()\n await draining?.catch(() => {})\n await admissions\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6FBE83711DF83E5864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/anthropic-compatible.ts", "../ai/src/providers/anthropic.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nexport const id = ProviderID.make(\"anthropic-compatible\")\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly provider?: string\n readonly baseURL: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly apiKey?: string; readonly authToken?: never }\n | { readonly apiKey?: never; readonly authToken?: string }\n ) & {\n readonly baseURL: string\n readonly provider?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport const routes = [AnthropicMessages.route]\n\nconst auth = (input: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in input && input.auth) return input.auth\n return Auth.optional(\"apiKey\" in input ? input.apiKey : undefined, \"apiKey\").pipe(Auth.header(\"x-api-key\"))\n}\n\nexport const configure = (input: Config) => {\n if (!input.baseURL) throw new Error(\"Anthropic-compatible providers require a baseURL\")\n const provider = input.provider ?? \"anthropic-compatible\"\n const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input\n const route = AnthropicMessages.route.with({\n ...rest,\n provider,\n endpoint: { baseURL },\n auth: auth(input),\n })\n return {\n id: ProviderID.make(provider),\n model: (modelID: string | ModelID) => route.model<AnthropicMessages.ProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined && settings.authToken !== undefined)\n throw new Error(\"Anthropic-compatible apiKey cannot be combined with authToken\")\n return configure({\n ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n provider: settings.provider,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n\nexport * as AnthropicCompatible from \"./anthropic-compatible.js\"\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { AnthropicCompatible } from \"./anthropic-compatible.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nexport const id = ProviderID.make(\"anthropic\")\n\nexport const routes = [AnthropicMessages.route]\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly apiKey?: string; readonly authToken?: never }\n | { readonly apiKey?: never; readonly authToken?: string }\n ) & {\n readonly baseURL?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in options && options.auth) return options.auth\n return Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"ANTHROPIC_API_KEY\"))\n .pipe(Auth.header(\"x-api-key\"))\n}\n\nexport const configure = (input: Config = {}) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n const compatible = AnthropicCompatible.configure({\n ...rest,\n auth: auth(input),\n baseURL: baseURL ?? AnthropicMessages.DEFAULT_BASE_URL,\n provider: id,\n })\n return {\n id,\n model: (modelID: string | ModelID) => compatible.model(modelID),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined && settings.authToken !== undefined)\n throw new Error(\"Anthropic apiKey cannot be combined with authToken\")\n return configure({\n ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";8mBAWO,IAAM,EAAK,EAAW,KAAK,sBAAsB,EAmB3C,EAAS,CAAC,EAAkB,KAAK,EAExC,EAAO,CAAC,IAA0C,CACtD,GAAI,SAAU,GAAS,EAAM,KAAM,OAAO,EAAM,KAChD,OAAO,EAAK,SAAS,WAAY,EAAQ,EAAM,OAAS,OAAW,QAAQ,EAAE,KAAK,EAAK,OAAO,WAAW,CAAC,GAG/F,EAAY,CAAC,IAAkB,CAC1C,GAAI,CAAC,EAAM,QAAS,MAAU,MAAM,kDAAkD,EACtF,IAAM,EAAW,EAAM,UAAY,wBAC3B,SAAU,EAAG,UAAS,OAAQ,EAAS,KAAM,KAAU,GAAS,EAClE,EAAQ,EAAkB,MAAM,KAAK,IACtC,EACH,WACA,SAAU,CAAE,SAAQ,EACpB,KAAM,EAAK,CAAK,CAClB,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,CAAQ,EAC5B,MAAO,CAAC,IAA8B,EAAM,MAA8C,CAAE,GAAI,CAAQ,CAAC,EACzG,WACF,GAGW,EAAW,CACtB,KACA,WACF,EAEa,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,QAAa,EAAS,YAAc,OAC1D,MAAU,MAAM,+DAA+D,EACjF,OAAO,EAAU,IACX,EAAS,YAAc,OAAY,CAAE,OAAQ,EAAS,MAAO,EAAI,CAAE,KAAM,EAAK,OAAO,EAAS,SAAS,CAAE,EAC7G,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO,GC5DX,IAAM,EAAK,EAAW,KAAK,WAAW,EAEhC,EAAS,CAAC,EAAkB,KAAK,EAiBxC,EAAO,CAAC,IAA4C,CACxD,GAAI,SAAU,GAAW,EAAQ,KAAM,OAAO,EAAQ,KACtD,OAAO,EAAK,SAAS,WAAY,EAAU,EAAQ,OAAS,OAAW,QAAQ,EAC5E,OAAO,EAAK,OAAO,mBAAmB,CAAC,EACvC,KAAK,EAAK,OAAO,WAAW,CAAC,GAGrB,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAQ,OAAQ,EAAG,KAAM,EAAO,aAAY,GAAS,EAC/C,EAAa,EAAoB,UAAU,IAC5C,EACH,KAAM,EAAK,CAAK,EAChB,QAAS,GAAW,EAAkB,iBACtC,SAAU,CACZ,CAAC,EACD,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAW,MAAM,CAAO,EAC9D,WACF,GAGW,EAAW,EAAU,EACrB,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,QAAa,EAAS,YAAc,OAC1D,MAAU,MAAM,oDAAoD,EACtE,OAAO,EAAU,IACX,EAAS,YAAc,OAAY,CAAE,OAAQ,EAAS,MAAO,EAAI,CAAE,KAAM,EAAK,OAAO,EAAS,SAAS,CAAE,EAC7G,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "35D431E2F7D5733E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/command.ts", "../schema/src/websearch.ts", "../schema/src/reference.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Command from \"./command.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"command.updated\", schema: {} })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n name: Schema.String,\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Command.Info\" })\n\nexport const Event = {\n Updated,\n Definitions: inventory(Updated),\n}\n", | ||
| "export * as WebSearch from \"./websearch.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"WebSearch.ID\"))\nexport type ID = typeof ID.Type\n\nexport interface Provider extends Schema.Schema.Type<typeof Provider> {}\nexport const Provider = Schema.Struct({\n id: ID,\n name: Schema.String,\n}).annotate({ identifier: \"WebSearch.Provider\" })\n\nexport interface Input extends Schema.Schema.Type<typeof Input> {}\nexport const Input = Schema.Struct({\n query: Schema.String,\n providerID: ID.pipe(optional),\n}).annotate({ identifier: \"WebSearch.Input\" })\nexport type ProviderInput = Pick<Input, \"query\">\n\nexport interface Result extends Schema.Schema.Type<typeof Result> {}\nexport const Result = Schema.Struct({\n url: Schema.String,\n title: Schema.String.pipe(optional),\n content: Schema.String.pipe(optional),\n time: Schema.Struct({\n published: Schema.Finite.pipe(optional),\n }),\n}).annotate({ identifier: \"WebSearch.Result\" })\n\nexport class Response extends Schema.Class<Response>(\"WebSearch.Response\")({\n providerID: ID,\n results: Schema.Array(Result),\n}) {}\n\nconst Updated = ephemeral({\n type: \"websearch.updated\",\n schema: {},\n})\nexport const Event = { Updated, Definitions: inventory(Updated) }\n", | ||
| "export * as Reference from \"./reference.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { AbsolutePath } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"reference.updated\", schema: {} })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n\nexport interface LocalSource extends Schema.Schema.Type<typeof LocalSource> {}\nexport const LocalSource = Schema.Struct({\n type: Schema.Literal(\"local\"),\n path: AbsolutePath,\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Reference.LocalSource\" })\n\nexport interface GitSource extends Schema.Schema.Type<typeof GitSource> {}\nexport const GitSource = Schema.Struct({\n type: Schema.Literal(\"git\"),\n repository: Schema.String,\n branch: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Reference.GitSource\" })\n\nexport const Source = Schema.Union([LocalSource, GitSource])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Reference.Source\" })\nexport type Source = typeof Source.Type\n\nexport const Info = Schema.Struct({\n name: Schema.String,\n path: AbsolutePath,\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n source: Source,\n}).annotate({ identifier: \"Reference.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n" | ||
| ], | ||
| "mappings": ";qRAMA,IAAM,EAAU,EAAU,CAAE,KAAM,kBAAmB,OAAQ,CAAC,CAAE,CAAC,EAGpD,EAAO,EAAO,OAAO,CAChC,KAAM,EAAO,OACb,YAAa,EAAO,OAAO,KAAK,CAAQ,CAC1C,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAE7B,EAAQ,CACnB,UACA,YAAa,EAAU,CAAO,CAChC,8GCXO,IAAM,EAAK,EAAO,OAAO,KAAK,EAAO,MAAM,cAAc,CAAC,EAIpD,EAAW,EAAO,OAAO,CACpC,GAAI,EACJ,KAAM,EAAO,MACf,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAQ,EAAO,OAAO,CACjC,MAAO,EAAO,OACd,WAAY,EAAG,KAAK,CAAQ,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,EAIhC,EAAS,EAAO,OAAO,CAClC,IAAK,EAAO,OACZ,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,QAAS,EAAO,OAAO,KAAK,CAAQ,EACpC,KAAM,EAAO,OAAO,CAClB,UAAW,EAAO,OAAO,KAAK,CAAQ,CACxC,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAEvC,MAAM,UAAiB,EAAO,MAAgB,oBAAoB,EAAE,CACzE,WAAY,EACZ,QAAS,EAAO,MAAM,CAAM,CAC9B,CAAC,CAAE,CAAC,CAEJ,IAAM,EAAU,EAAU,CACxB,KAAM,oBACN,OAAQ,CAAC,CACX,CAAC,EACY,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,wGClChE,IAAM,EAAU,EAAU,CAAE,KAAM,oBAAqB,OAAQ,CAAC,CAAE,CAAC,EACtD,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,EAGnD,EAAc,EAAO,OAAO,CACvC,KAAM,EAAO,QAAQ,OAAO,EAC5B,KAAM,EACN,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,EAAY,EAAO,OAAO,CACrC,KAAM,EAAO,QAAQ,KAAK,EAC1B,WAAY,EAAO,OACnB,OAAQ,EAAO,OAAO,KAAK,CAAQ,EACnC,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,EAEpC,EAAS,EAAO,MAAM,CAAC,EAAa,CAAS,CAAC,EACxD,KAAK,EAAO,cAAc,MAAM,CAAC,EACjC,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAGjC,EAAO,EAAO,OAAO,CAChC,KAAM,EAAO,OACb,KAAM,EACN,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,EACpC,OAAQ,CACV,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC", | ||
| "debugId": "979BD88C4ED43FBD64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/services/service-config.ts"], | ||
| "sourcesContent": [ | ||
| "import { Global } from \"@opencode-ai/util/global\"\nimport { OPENCODE_CHANNEL, OPENCODE_VERSION } from \"../version\"\nimport { Hash } from \"@opencode-ai/util/hash\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, FileSystem, Option, Schema } from \"effect\"\nimport { randomBytes } from \"crypto\"\nimport path from \"path\"\nimport { selfCommand } from \"../util/process\"\n\n// The CLI's service configuration file, plus the Service.EnsureOptions binding that\n// points the client package's service operations at this CLI: which\n// registration file (by channel), which version, and how to spawn opencode.\n\nexport const Info = Schema.Struct({\n hostname: Schema.optional(Schema.String),\n port: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(65_535))),\n password: Schema.optional(Schema.String),\n env: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n})\nexport type Info = typeof Info.Type\n\nconst keys = [\"hostname\", \"port\", \"password\", \"env\"] as const\ntype Key = (typeof keys)[number]\n\nconst decodeInfo = Schema.decodeUnknownEffect(Schema.fromJsonString(Info))\nconst decodeRegistration = Schema.decodeUnknownEffect(Schema.fromJsonString(Service.Info))\n\nexport function filename(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"dev\" || channel === \"beta\" || channel === \"next\") return \"service.json\"\n return `service-${channel.replace(/[^a-zA-Z0-9._-]/g, \"-\")}.json`\n}\n\nexport function defaultPort(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"dev\" || channel === \"beta\" || channel === \"next\") return 0xc0de\n if (channel === \"local\") return 0xc0df\n return 10_000 + (Number.parseInt(Hash.fast(channel).slice(0, 8), 16) % 50_000)\n}\n\nexport function legacyFilename(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"local\") return\n return `service-${Hash.fast(channel)}.json`\n}\n\nexport function versionBelongsToChannel(\n version: string | undefined,\n channel = OPENCODE_CHANNEL,\n installedVersion = OPENCODE_VERSION,\n) {\n if (version === undefined) return false\n if (version === installedVersion) return true\n const prefix = `0.0.0-${channel}-`\n if (!version.startsWith(prefix)) return false\n return /^\\d+(?:\\.\\d+)?$/.test(version.slice(prefix.length))\n}\n\nexport const migrateRegistration = Effect.fnUntraced(function* (\n legacy: string,\n file: string,\n channel = OPENCODE_CHANNEL,\n installedVersion = OPENCODE_VERSION,\n) {\n const fs = yield* FileSystem.FileSystem\n const text = yield* fs.readFileString(legacy).pipe(Effect.option)\n if (Option.isNone(text)) return\n const registration = yield* decodeRegistration(text.value).pipe(Effect.option)\n if (Option.isNone(registration)) return\n if (!versionBelongsToChannel(registration.value.version, channel, installedVersion)) return\n yield* fs.writeFileString(file, text.value, { flag: \"wx\", mode: 0o600 }).pipe(Effect.ignore)\n})\n\nexport const migrateConfig = Effect.fnUntraced(function* (legacy: string, file: string) {\n const fs = yield* FileSystem.FileSystem\n const text = yield* fs.readFileString(legacy).pipe(Effect.option)\n if (Option.isNone(text)) return\n if (Option.isNone(yield* decodeInfo(text.value).pipe(Effect.option))) return\n yield* fs.writeFileString(file, text.value, { flag: \"wx\", mode: 0o600 }).pipe(Effect.ignore)\n})\n\nfunction configKey(key: string): Key {\n if (key === \"hostname\" || key === \"port\" || key === \"password\" || key === \"env\") return key\n throw new Error(`Unknown service config key: ${key}`)\n}\n\nconst paths = Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem\n const global = yield* Global.Service\n const name = filename()\n const legacy = legacyFilename()\n const file = path.join(global.state, name)\n return {\n fs,\n file,\n legacyConfigFile: legacy ? path.join(global.config, legacy) : undefined,\n legacyRegistrationFiles: [\n ...(legacy ? [path.join(global.state, legacy)] : []),\n ...(name !== \"service.json\" && OPENCODE_CHANNEL !== \"local\" ? [path.join(global.state, \"service.json\")] : []),\n ],\n configFile: path.join(global.config, name),\n }\n})\n\nexport const options = Effect.fnUntraced(function* (input: { readonly checkVersion?: boolean } = {}) {\n const { file, legacyRegistrationFiles } = yield* paths\n yield* Effect.forEach(legacyRegistrationFiles, (legacy) => migrateRegistration(legacy, file))\n return {\n file,\n version: input.checkVersion ? OPENCODE_VERSION : undefined,\n env: (yield* read()).env,\n command: [\n ...selfCommand(),\n \"serve\",\n \"--service\",\n ],\n }\n})\n\nexport const read = Effect.fn(\"cli.service-config.read\")(function* () {\n const { fs, configFile, legacyConfigFile } = yield* paths\n if (legacyConfigFile) yield* migrateConfig(legacyConfigFile, configFile)\n return yield* fs.readFileString(configFile).pipe(\n Effect.flatMap(decodeInfo),\n Effect.orElseSucceed(() => ({}) as Info),\n )\n})\n\nconst write = Effect.fn(\"cli.service-config.write\")(function* (value: Info) {\n const { fs, configFile } = yield* paths\n const temp = configFile + \".tmp\"\n yield* fs.makeDirectory(path.dirname(configFile), { recursive: true })\n yield* fs.writeFileString(temp, JSON.stringify(value, null, 2) + \"\\n\", { mode: 0o600 })\n yield* fs.rename(temp, configFile)\n})\n\nexport const password = Effect.fn(\"cli.service-config.password\")(function* (value?: string) {\n const existing = yield* read()\n if (value === undefined && existing.password) return existing.password\n const next = value ?? randomBytes(32).toString(\"base64url\")\n\n // Keep one private credential across server restarts so discovered clients\n // can reconnect without exposing a password flag or environment variable.\n yield* write({ ...existing, password: next })\n return next\n})\n\nexport const get = Effect.fn(\"cli.service-config.get\")(function* (key?: string, name?: string) {\n if (key === undefined) {\n const { password: _password, ...safe } = yield* read()\n return JSON.stringify(safe, null, 2)\n }\n const selected = configKey(key)\n if (selected !== \"env\" && name !== undefined) throw new Error(`Usage: opencode service get ${selected}`)\n switch (selected) {\n case \"hostname\": {\n return (yield* read()).hostname ?? \"\"\n }\n case \"port\": {\n const port = (yield* read()).port\n return port === undefined ? \"\" : String(port)\n }\n case \"password\": {\n return yield* password()\n }\n case \"env\": {\n const env = (yield* read()).env ?? {}\n return name === undefined ? JSON.stringify(env, null, 2) : (env[name] ?? \"\")\n }\n }\n throw new Error(`Unknown service config key: ${key}`)\n})\n\nexport const set = Effect.fn(\"cli.service-config.set\")(function* (key: string, value: string, nestedValue?: string) {\n const selected = configKey(key)\n if (selected !== \"env\" && nestedValue !== undefined)\n throw new Error(`Usage: opencode service set ${selected} <value>`)\n switch (selected) {\n case \"hostname\": {\n yield* Service.stop(yield* options())\n yield* write({ ...(yield* read()), hostname: value })\n return\n }\n case \"port\": {\n const port = Number(value)\n if (!Number.isInteger(port) || port < 1 || port > 65_535) throw new Error(\"Port must be between 1 and 65535\")\n yield* Service.stop(yield* options())\n yield* write({ ...(yield* read()), port })\n return\n }\n case \"password\": {\n yield* Service.stop(yield* options())\n yield* password(value)\n return\n }\n case \"env\": {\n if (nestedValue === undefined) throw new Error(\"Usage: opencode service set env <key> <value>\")\n yield* Service.stop(yield* options())\n const existing = yield* read()\n yield* write({ ...existing, env: { ...existing.env, [value]: nestedValue } })\n return\n }\n }\n})\n\nexport const unset = Effect.fn(\"cli.service-config.unset\")(function* (key: string, name?: string) {\n const selected = configKey(key)\n if (selected !== \"env\" && name !== undefined) throw new Error(`Usage: opencode service unset ${selected}`)\n switch (selected) {\n case \"hostname\": {\n yield* Service.stop(yield* options())\n const { hostname: _hostname, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"port\": {\n yield* Service.stop(yield* options())\n const { port: _port, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"password\": {\n yield* Service.stop(yield* options())\n const { password: _password, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"env\": {\n if (name === undefined) throw new Error(\"Usage: opencode service unset env <key>\")\n yield* Service.stop(yield* options())\n const existing = yield* read()\n const { [name]: _removed, ...env } = existing.env ?? {}\n const { env: _existingEnv, ...rest } = existing\n yield* write(Object.keys(env).length === 0 ? rest : { ...rest, env })\n return\n }\n }\n})\n\nexport * as ServiceConfig from \"./service-config\"\n" | ||
| ], | ||
| "mappings": ";ylBAKA,sBAAS,eACT,oBAOO,IAAM,EAAO,EAAO,OAAO,CAChC,SAAU,EAAO,SAAS,EAAO,MAAM,EACvC,KAAM,EAAO,SAAS,EAAO,IAAI,MAAM,EAAO,uBAAuB,CAAC,EAAG,EAAO,oBAAoB,KAAM,CAAC,CAAC,EAC5G,SAAU,EAAO,SAAS,EAAO,MAAM,EACvC,IAAK,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,MAAM,CAAC,CAClE,CAAC,EAMD,IAAM,EAAa,EAAO,oBAAoB,EAAO,eAAe,CAAI,CAAC,EACnE,EAAqB,EAAO,oBAAoB,EAAO,eAAe,EAAQ,IAAI,CAAC,EAElF,SAAS,CAAQ,CAAC,EAAU,EAAkB,CACnD,GAAI,IAAY,UAAY,IAAY,OAAS,IAAY,QAAU,IAAY,OAAQ,MAAO,eAClG,MAAO,WAAW,EAAQ,QAAQ,mBAAoB,GAAG,SAGpD,SAAS,CAAW,CAAC,EAAU,EAAkB,CACtD,GAAI,IAAY,UAAY,IAAY,OAAS,IAAY,QAAU,IAAY,OAAQ,MAAO,OAClG,GAAI,IAAY,QAAS,MAAO,OAChC,MAAO,KAAU,OAAO,SAAS,EAAK,KAAK,CAAO,EAAE,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,MAGlE,SAAS,CAAc,CAAC,EAAU,EAAkB,CACzD,GAAI,IAAY,UAAY,IAAY,QAAS,OACjD,MAAO,WAAW,EAAK,KAAK,CAAO,SAG9B,SAAS,CAAuB,CACrC,EACA,EAAU,EACV,EAAmB,EACnB,CACA,GAAI,IAAY,OAAW,MAAO,GAClC,GAAI,IAAY,EAAkB,MAAO,GACzC,IAAM,EAAS,SAAS,KACxB,GAAI,CAAC,EAAQ,WAAW,CAAM,EAAG,MAAO,GACxC,MAAO,kBAAkB,KAAK,EAAQ,MAAM,EAAO,MAAM,CAAC,EAGrD,IAAM,EAAsB,EAAO,WAAW,SAAU,CAC7D,EACA,EACA,EAAU,EACV,EAAmB,EACnB,CACA,IAAM,EAAK,MAAO,EAAW,WACvB,EAAO,MAAO,EAAG,eAAe,CAAM,EAAE,KAAK,EAAO,MAAM,EAChE,GAAI,EAAO,OAAO,CAAI,EAAG,OACzB,IAAM,EAAe,MAAO,EAAmB,EAAK,KAAK,EAAE,KAAK,EAAO,MAAM,EAC7E,GAAI,EAAO,OAAO,CAAY,EAAG,OACjC,GAAI,CAAC,EAAwB,EAAa,MAAM,QAAS,EAAS,CAAgB,EAAG,OACrF,MAAO,EAAG,gBAAgB,EAAM,EAAK,MAAO,CAAE,KAAM,KAAM,KAAM,GAAM,CAAC,EAAE,KAAK,EAAO,MAAM,EAC5F,EAEY,EAAgB,EAAO,WAAW,SAAU,CAAC,EAAgB,EAAc,CACtF,IAAM,EAAK,MAAO,EAAW,WACvB,EAAO,MAAO,EAAG,eAAe,CAAM,EAAE,KAAK,EAAO,MAAM,EAChE,GAAI,EAAO,OAAO,CAAI,EAAG,OACzB,GAAI,EAAO,OAAO,MAAO,EAAW,EAAK,KAAK,EAAE,KAAK,EAAO,MAAM,CAAC,EAAG,OACtE,MAAO,EAAG,gBAAgB,EAAM,EAAK,MAAO,CAAE,KAAM,KAAM,KAAM,GAAM,CAAC,EAAE,KAAK,EAAO,MAAM,EAC5F,EAED,SAAS,CAAS,CAAC,EAAkB,CACnC,GAAI,IAAQ,YAAc,IAAQ,QAAU,IAAQ,YAAc,IAAQ,MAAO,OAAO,EACxF,MAAU,MAAM,+BAA+B,GAAK,EAGtD,IAAM,EAAQ,EAAO,IAAI,SAAU,EAAG,CACpC,IAAM,EAAK,MAAO,EAAW,WACvB,EAAS,MAAO,EAAO,QACvB,EAAO,EAAS,EAChB,EAAS,EAAe,EACxB,EAAO,EAAK,KAAK,EAAO,MAAO,CAAI,EACzC,MAAO,CACL,KACA,OACA,iBAAkB,EAAS,EAAK,KAAK,EAAO,OAAQ,CAAM,EAAI,OAC9D,wBAAyB,CACvB,GAAI,EAAS,CAAC,EAAK,KAAK,EAAO,MAAO,CAAM,CAAC,EAAI,CAAC,EAClD,GAAI,IAAS,gBAAkB,IAAqB,QAAU,CAAC,EAAK,KAAK,EAAO,MAAO,cAAc,CAAC,EAAI,CAAC,CAC7G,EACA,WAAY,EAAK,KAAK,EAAO,OAAQ,CAAI,CAC3C,EACD,EAEY,EAAU,EAAO,WAAW,SAAU,CAAC,EAA6C,CAAC,EAAG,CACnG,IAAQ,OAAM,2BAA4B,MAAO,EAEjD,OADA,MAAO,EAAO,QAAQ,EAAyB,CAAC,IAAW,EAAoB,EAAQ,CAAI,CAAC,EACrF,CACL,OACA,QAAS,EAAM,aAAe,EAAmB,OACjD,KAAM,MAAO,EAAK,GAAG,IACrB,QAAS,CACP,GAAG,EAAY,EACf,QACA,WACF,CACF,EACD,EAEY,EAAO,EAAO,GAAG,yBAAyB,EAAE,SAAU,EAAG,CACpE,IAAQ,KAAI,aAAY,oBAAqB,MAAO,EACpD,GAAI,EAAkB,MAAO,EAAc,EAAkB,CAAU,EACvE,OAAO,MAAO,EAAG,eAAe,CAAU,EAAE,KAC1C,EAAO,QAAQ,CAAU,EACzB,EAAO,cAAc,KAAO,CAAC,EAAU,CACzC,EACD,EAEK,EAAQ,EAAO,GAAG,0BAA0B,EAAE,SAAU,CAAC,EAAa,CAC1E,IAAQ,KAAI,cAAe,MAAO,EAC5B,EAAO,EAAa,OAC1B,MAAO,EAAG,cAAc,EAAK,QAAQ,CAAU,EAAG,CAAE,UAAW,EAAK,CAAC,EACrE,MAAO,EAAG,gBAAgB,EAAM,KAAK,UAAU,EAAO,KAAM,CAAC,EAAI;AAAA,EAAM,CAAE,KAAM,GAAM,CAAC,EACtF,MAAO,EAAG,OAAO,EAAM,CAAU,EAClC,EAEY,EAAW,EAAO,GAAG,6BAA6B,EAAE,SAAU,CAAC,EAAgB,CAC1F,IAAM,EAAW,MAAO,EAAK,EAC7B,GAAI,IAAU,QAAa,EAAS,SAAU,OAAO,EAAS,SAC9D,IAAM,EAAO,GAAS,EAAY,EAAE,EAAE,SAAS,WAAW,EAK1D,OADA,MAAO,EAAM,IAAK,EAAU,SAAU,CAAK,CAAC,EACrC,EACR,EAEY,EAAM,EAAO,GAAG,wBAAwB,EAAE,SAAU,CAAC,EAAc,EAAe,CAC7F,GAAI,IAAQ,OAAW,CACrB,IAAQ,SAAU,KAAc,GAAS,MAAO,EAAK,EACrD,OAAO,KAAK,UAAU,EAAM,KAAM,CAAC,EAErC,IAAM,EAAW,EAAU,CAAG,EAC9B,GAAI,IAAa,OAAS,IAAS,OAAW,MAAU,MAAM,+BAA+B,GAAU,EACvG,OAAQ,OACD,WACH,OAAQ,MAAO,EAAK,GAAG,UAAY,OAEhC,OAAQ,CACX,IAAM,GAAQ,MAAO,EAAK,GAAG,KAC7B,OAAO,IAAS,OAAY,GAAK,OAAO,CAAI,CAC9C,KACK,WACH,OAAO,MAAO,EAAS,MAEpB,MAAO,CACV,IAAM,GAAO,MAAO,EAAK,GAAG,KAAO,CAAC,EACpC,OAAO,IAAS,OAAY,KAAK,UAAU,EAAK,KAAM,CAAC,EAAK,EAAI,IAAS,EAC3E,EAEF,MAAU,MAAM,+BAA+B,GAAK,EACrD,EAEY,EAAM,EAAO,GAAG,wBAAwB,EAAE,SAAU,CAAC,EAAa,EAAe,EAAsB,CAClH,IAAM,EAAW,EAAU,CAAG,EAC9B,GAAI,IAAa,OAAS,IAAgB,OACxC,MAAU,MAAM,+BAA+B,WAAkB,EACnE,OAAQ,OACD,WAAY,CACf,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,MAAO,EAAM,IAAM,MAAO,EAAK,EAAI,SAAU,CAAM,CAAC,EACpD,MACF,KACK,OAAQ,CACX,IAAM,EAAO,OAAO,CAAK,EACzB,GAAI,CAAC,OAAO,UAAU,CAAI,GAAK,EAAO,GAAK,EAAO,MAAQ,MAAU,MAAM,kCAAkC,EAC5G,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,MAAO,EAAM,IAAM,MAAO,EAAK,EAAI,MAAK,CAAC,EACzC,MACF,KACK,WAAY,CACf,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,MAAO,EAAS,CAAK,EACrB,MACF,KACK,MAAO,CACV,GAAI,IAAgB,OAAW,MAAU,MAAM,+CAA+C,EAC9F,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,IAAM,EAAW,MAAO,EAAK,EAC7B,MAAO,EAAM,IAAK,EAAU,IAAK,IAAK,EAAS,KAAM,GAAQ,CAAY,CAAE,CAAC,EAC5E,MACF,GAEH,EAEY,EAAQ,EAAO,GAAG,0BAA0B,EAAE,SAAU,CAAC,EAAa,EAAe,CAChG,IAAM,EAAW,EAAU,CAAG,EAC9B,GAAI,IAAa,OAAS,IAAS,OAAW,MAAU,MAAM,iCAAiC,GAAU,EACzG,OAAQ,OACD,WAAY,CACf,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,IAAQ,SAAU,KAAc,GAAS,MAAO,EAAK,EACrD,MAAO,EAAM,CAAI,EACjB,MACF,KACK,OAAQ,CACX,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,IAAQ,KAAM,KAAU,GAAS,MAAO,EAAK,EAC7C,MAAO,EAAM,CAAI,EACjB,MACF,KACK,WAAY,CACf,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,IAAQ,SAAU,KAAc,GAAS,MAAO,EAAK,EACrD,MAAO,EAAM,CAAI,EACjB,MACF,KACK,MAAO,CACV,GAAI,IAAS,OAAW,MAAU,MAAM,yCAAyC,EACjF,MAAO,EAAQ,KAAK,MAAO,EAAQ,CAAC,EACpC,IAAM,EAAW,MAAO,EAAK,IACpB,GAAO,KAAa,GAAQ,EAAS,KAAO,CAAC,GAC9C,IAAK,KAAiB,GAAS,EACvC,MAAO,EAAM,OAAO,KAAK,CAAG,EAAE,SAAW,EAAI,EAAO,IAAK,EAAM,KAAI,CAAC,EACpE,MACF,GAEH", | ||
| "debugId": "777983BEE114586C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "A91E5F7BEA4F422564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/debug/config.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.debug.commands.config,\n Effect.fn(\"cli.debug.config\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const entries = yield* Effect.promise(() => client.config.get({ location: { directory: process.cwd() } }))\n process.stdout.write(JSON.stringify(entries, null, 2) + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,MAAM,SAAS,OACjC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAU,MAAO,EAAO,QAAQ,IAAM,EAAO,OAAO,IAAI,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EACzG,QAAQ,OAAO,MAAM,KAAK,UAAU,EAAS,KAAM,CAAC,EAAI,CAAG,EAC5D,CACH", | ||
| "debugId": "973BD8103802038364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsJson1_1Protocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n case \"GetId\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst m = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = \"stringEquals\", h = { [m]: \"Endpoint\" }, i = { [m]: d }, j = { [m]: \"Region\" }, k = {}, l = [j];\nconst _data = {\n conditions: [\n [c, [h]],\n [c, l],\n [\"aws.partition\", l, d],\n [e, [{ [m]: \"UseFIPS\" }, b]],\n [e, [{ fn: f, argv: [i, \"supportsFIPS\"] }, b]],\n [e, [{ [m]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [i, \"supportsDualStack\"] }, b]],\n [g, [{ fn: f, argv: [i, \"name\"] }, \"aws\"]],\n [g, [j, \"us-east-1\"]],\n [g, [j, \"us-east-2\"]],\n [g, [j, \"us-west-1\"]],\n [g, [j, \"us-west-2\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [h, k],\n [\"https://cognito-identity-fips.us-east-1.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-east-2.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-west-1.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-west-2.amazonaws.com\", k],\n [\"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", k],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://cognito-identity.{Region}.amazonaws.com\", k],\n [\"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", k],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 17, 3,\n 1, 4, r + 16,\n 2, 5, r + 16,\n 3, 9, 6,\n 5, 7, r + 15,\n 6, 8, r + 14,\n 7, r + 12, r + 13,\n 4, 11, 10,\n 5, r + 9, r + 11,\n 5, 12, r + 10,\n 6, 13, r + 9,\n 8, r + 4, 14,\n 9, r + 5, 15,\n 10, r + 6, 16,\n 11, r + 7, r + 8,\n 3, r + 1, 18,\n 5, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass CognitoIdentityServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype);\n }\n}\n\nclass ExternalServiceException extends CognitoIdentityServiceException {\n name = \"ExternalServiceException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ExternalServiceException.prototype);\n }\n}\nclass InternalErrorException extends CognitoIdentityServiceException {\n name = \"InternalErrorException\";\n $fault = \"server\";\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalErrorException.prototype);\n }\n}\nclass InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n name = \"InvalidIdentityPoolConfigurationException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype);\n }\n}\nclass InvalidParameterException extends CognitoIdentityServiceException {\n name = \"InvalidParameterException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidParameterException.prototype);\n }\n}\nclass NotAuthorizedException extends CognitoIdentityServiceException {\n name = \"NotAuthorizedException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NotAuthorizedException.prototype);\n }\n}\nclass ResourceConflictException extends CognitoIdentityServiceException {\n name = \"ResourceConflictException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceConflictException.prototype);\n }\n}\nclass ResourceNotFoundException extends CognitoIdentityServiceException {\n name = \"ResourceNotFoundException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nclass TooManyRequestsException extends CognitoIdentityServiceException {\n name = \"TooManyRequestsException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n }\n}\nclass LimitExceededException extends CognitoIdentityServiceException {\n name = \"LimitExceededException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, LimitExceededException.prototype);\n }\n}\n\nconst _AI = \"AccountId\";\nconst _AKI = \"AccessKeyId\";\nconst _C = \"Credentials\";\nconst _CRA = \"CustomRoleArn\";\nconst _E = \"Expiration\";\nconst _ESE = \"ExternalServiceException\";\nconst _GCFI = \"GetCredentialsForIdentity\";\nconst _GCFII = \"GetCredentialsForIdentityInput\";\nconst _GCFIR = \"GetCredentialsForIdentityResponse\";\nconst _GI = \"GetId\";\nconst _GII = \"GetIdInput\";\nconst _GIR = \"GetIdResponse\";\nconst _IEE = \"InternalErrorException\";\nconst _II = \"IdentityId\";\nconst _IIPCE = \"InvalidIdentityPoolConfigurationException\";\nconst _IPE = \"InvalidParameterException\";\nconst _IPI = \"IdentityPoolId\";\nconst _IPT = \"IdentityProviderToken\";\nconst _L = \"Logins\";\nconst _LEE = \"LimitExceededException\";\nconst _LM = \"LoginsMap\";\nconst _NAE = \"NotAuthorizedException\";\nconst _RCE = \"ResourceConflictException\";\nconst _RNFE = \"ResourceNotFoundException\";\nconst _SK = \"SecretKey\";\nconst _SKS = \"SecretKeyString\";\nconst _ST = \"SessionToken\";\nconst _TMRE = \"TooManyRequestsException\";\nconst _c = \"client\";\nconst _e = \"error\";\nconst _hE = \"httpError\";\nconst _m = \"message\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity\";\nconst _se = \"server\";\nconst n0 = \"com.amazonaws.cognitoidentity\";\nconst _s_registry = TypeRegistry.for(_s);\nvar CognitoIdentityServiceException$ = [-3, _s, \"CognitoIdentityServiceException\", 0, [], []];\n_s_registry.registerError(CognitoIdentityServiceException$, CognitoIdentityServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar ExternalServiceException$ = [-3, n0, _ESE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(ExternalServiceException$, ExternalServiceException);\nvar InternalErrorException$ = [-3, n0, _IEE,\n { [_e]: _se },\n [_m],\n [0]\n];\nn0_registry.registerError(InternalErrorException$, InternalErrorException);\nvar InvalidIdentityPoolConfigurationException$ = [-3, n0, _IIPCE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidIdentityPoolConfigurationException$, InvalidIdentityPoolConfigurationException);\nvar InvalidParameterException$ = [-3, n0, _IPE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidParameterException$, InvalidParameterException);\nvar LimitExceededException$ = [-3, n0, _LEE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(LimitExceededException$, LimitExceededException);\nvar NotAuthorizedException$ = [-3, n0, _NAE,\n { [_e]: _c, [_hE]: 403 },\n [_m],\n [0]\n];\nn0_registry.registerError(NotAuthorizedException$, NotAuthorizedException);\nvar ResourceConflictException$ = [-3, n0, _RCE,\n { [_e]: _c, [_hE]: 409 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceConflictException$, ResourceConflictException);\nvar ResourceNotFoundException$ = [-3, n0, _RNFE,\n { [_e]: _c, [_hE]: 404 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException);\nvar TooManyRequestsException$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_m],\n [0]\n];\nn0_registry.registerError(TooManyRequestsException$, TooManyRequestsException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar IdentityProviderToken = [0, n0, _IPT, 8, 0];\nvar SecretKeyString = [0, n0, _SKS, 8, 0];\nvar Credentials$ = [3, n0, _C,\n 0,\n [_AKI, _SK, _ST, _E],\n [0, [() => SecretKeyString, 0], 0, 4]\n];\nvar GetCredentialsForIdentityInput$ = [3, n0, _GCFII,\n 0,\n [_II, _L, _CRA],\n [0, [() => LoginsMap, 0], 0], 1\n];\nvar GetCredentialsForIdentityResponse$ = [3, n0, _GCFIR,\n 0,\n [_II, _C],\n [0, [() => Credentials$, 0]]\n];\nvar GetIdInput$ = [3, n0, _GII,\n 0,\n [_IPI, _AI, _L],\n [0, 0, [() => LoginsMap, 0]], 1\n];\nvar GetIdResponse$ = [3, n0, _GIR,\n 0,\n [_II],\n [0]\n];\nvar LoginsMap = [2, n0, _LM,\n 0, [0,\n 0],\n [() => IdentityProviderToken,\n 0]\n];\nvar GetCredentialsForIdentity$ = [9, n0, _GCFI,\n 0, () => GetCredentialsForIdentityInput$, () => GetCredentialsForIdentityResponse$\n];\nvar GetId$ = [9, n0, _GI,\n 0, () => GetIdInput$, () => GetIdResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsJson1_1Protocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.cognitoidentity\",\n errorTypeRegistries,\n xmlNamespace: \"http://cognito-identity.amazonaws.com/doc/2014-06-30/\",\n version: \"2014-06-30\",\n serviceTarget: \"AWSCognitoIdentityService\",\n },\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass CognitoIdentityClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultCognitoIdentityHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"AWSCognitoIdentityService\", \"CognitoIdentityClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass GetCredentialsForIdentityCommand extends command(_ep0, _mw0, \"GetCredentialsForIdentity\", GetCredentialsForIdentity$) {\n}\n\nclass GetIdCommand extends command(_ep0, _mw0, \"GetId\", GetId$) {\n}\n\nconst commands = {\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n};\nclass CognitoIdentity extends CognitoIdentityClient {\n}\ncreateAggregatedClient(commands, CognitoIdentity);\n\nexports.CognitoIdentity = CognitoIdentity;\nexports.CognitoIdentityClient = CognitoIdentityClient;\nexports.CognitoIdentityServiceException = CognitoIdentityServiceException;\nexports.CognitoIdentityServiceException$ = CognitoIdentityServiceException$;\nexports.Credentials$ = Credentials$;\nexports.ExternalServiceException = ExternalServiceException;\nexports.ExternalServiceException$ = ExternalServiceException$;\nexports.GetCredentialsForIdentity$ = GetCredentialsForIdentity$;\nexports.GetCredentialsForIdentityCommand = GetCredentialsForIdentityCommand;\nexports.GetCredentialsForIdentityInput$ = GetCredentialsForIdentityInput$;\nexports.GetCredentialsForIdentityResponse$ = GetCredentialsForIdentityResponse$;\nexports.GetId$ = GetId$;\nexports.GetIdCommand = GetIdCommand;\nexports.GetIdInput$ = GetIdInput$;\nexports.GetIdResponse$ = GetIdResponse$;\nexports.InternalErrorException = InternalErrorException;\nexports.InternalErrorException$ = InternalErrorException$;\nexports.InvalidIdentityPoolConfigurationException = InvalidIdentityPoolConfigurationException;\nexports.InvalidIdentityPoolConfigurationException$ = InvalidIdentityPoolConfigurationException$;\nexports.InvalidParameterException = InvalidParameterException;\nexports.InvalidParameterException$ = InvalidParameterException$;\nexports.LimitExceededException = LimitExceededException;\nexports.LimitExceededException$ = LimitExceededException$;\nexports.NotAuthorizedException = NotAuthorizedException;\nexports.NotAuthorizedException$ = NotAuthorizedException$;\nexports.ResourceConflictException = ResourceConflictException;\nexports.ResourceConflictException$ = ResourceConflictException$;\nexports.ResourceNotFoundException = ResourceNotFoundException;\nexports.ResourceNotFoundException$ = ResourceNotFoundException$;\nexports.TooManyRequestsException = TooManyRequestsException;\nexports.TooManyRequestsException$ = TooManyRequestsException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F10BC957C9ABE1FC64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-web-identity@3.972.75/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-web-identity@3.972.75/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, externalDataInterceptor } from \"@smithy/core/config\";\nimport { readFileSync } from \"node:fs\";\nimport { fromWebToken } from \"./fromWebToken\";\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nexport const fromTokenFile = (init = {}) => async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromTokenFile\");\n const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE];\n const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN];\n const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new CredentialsProviderError(\"Web identity configuration not specified\", {\n logger: init.logger,\n });\n }\n const credentials = await fromWebToken({\n ...init,\n webIdentityToken: externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ??\n readFileSync(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })(awsIdentityProperties);\n if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) {\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN\", \"h\");\n }\n return credentials;\n};\n", | ||
| "export const fromWebToken = (init) => async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await import(\"@aws-sdk/nested-clients/sts\");\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: {\n ...awsIdentityProperties?.callerClientConfig,\n ...init.parentClientConfig,\n },\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eACA,WACA,uBAAS,WCFF,IAAM,EAAe,CAAC,IAAS,MAAO,IAA0B,CACnE,EAAK,QAAQ,MAAM,0DAA0D,EAC7E,IAAQ,UAAS,kBAAiB,mBAAkB,aAAY,aAAY,SAAQ,mBAAoB,GAClG,8BAA+B,EACrC,GAAI,CAAC,EAA4B,CAC7B,IAAQ,wCAAyC,KAAa,0CAC9D,EAA6B,EAAqC,IAC3D,EAAK,aACR,yBAA0B,EAAK,OAC/B,mBAAoB,IACb,GAAuB,sBACvB,EAAK,kBACZ,CACJ,EAAG,EAAK,aAAa,EAEzB,OAAO,EAA2B,CAC9B,QAAS,EACT,gBAAiB,GAAmB,sBAAsB,KAAK,IAAI,IACnE,iBAAkB,EAClB,WAAY,EACZ,WAAY,EACZ,OAAQ,EACR,gBAAiB,CACrB,CAAC,GDnBL,IAAM,EAAiB,8BACjB,EAAe,eACf,EAAwB,wBACjB,EAAgB,CAAC,EAAO,CAAC,IAAM,MAAO,IAA0B,CACzE,EAAK,QAAQ,MAAM,2DAA2D,EAC9E,IAAM,EAAuB,GAAM,sBAAwB,QAAQ,IAAI,GACjE,EAAU,GAAM,SAAW,QAAQ,IAAI,GACvC,EAAkB,GAAM,iBAAmB,QAAQ,IAAI,GAC7D,GAAI,CAAC,GAAwB,CAAC,EAC1B,MAAM,IAAI,2BAAyB,2CAA4C,CAC3E,OAAQ,EAAK,MACjB,CAAC,EAEL,IAAM,EAAc,MAAM,EAAa,IAChC,EACH,iBAAkB,2BAAyB,iBAAiB,EAAE,IAC1D,EAAa,EAAsB,CAAE,SAAU,OAAQ,CAAC,EAC5D,UACA,iBACJ,CAAC,EAAE,CAAqB,EACxB,GAAI,IAAyB,QAAQ,IAAI,GACrC,uBAAqB,EAAa,wCAAyC,GAAG,EAElF,OAAO", | ||
| "debugId": "3EA3731CEC174B8764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/restart.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.restart,\n Effect.fn(\"cli.service.restart\")(function* () {\n const options = yield* ServiceConfig.options()\n yield* Service.stop(options)\n const transport = yield* Service.ensure(options)\n process.stdout.write(transport.url + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,QACnC,EAAO,GAAG,qBAAqB,EAAE,SAAU,EAAG,CAC5C,IAAM,EAAU,MAAO,EAAc,QAAQ,EAC7C,MAAO,EAAQ,KAAK,CAAO,EAC3B,IAAM,EAAY,MAAO,EAAQ,OAAO,CAAO,EAC/C,QAAQ,OAAO,MAAM,EAAU,IAAM,CAAG,EACzC,CACH", | ||
| "debugId": "89DA284D29CF57BE64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/remove.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { readFile, rename, writeFile } from \"node:fs/promises\"\nimport { Effect } from \"effect\"\nimport { applyEdits, modify, parse, type ParseError } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Config } from \"../../../config\"\nimport { resolveConfigPath } from \"../mcp/add\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.remove,\n Effect.fn(\"cli.plugin.remove\")(function* (input) {\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(global.config))\n const server = yield* Effect.promise(() => removePluginConfig(configPath, input.package))\n const config = yield* Config.Service\n const info = yield* config.get()\n const tui = configured(info.plugins, input.package)\n if (tui)\n yield* config.update((draft) => {\n draft.plugins = draft.plugins?.filter((entry) => !matches(entry, input.package))\n })\n\n const removed = [server ? configPath : undefined, tui ? config.path : undefined].filter(\n (file) => file !== undefined,\n )\n process.stdout.write(\n removed.length\n ? `Plugin \"${input.package}\" removed from ${removed.join(\", \")}${EOL}`\n : `Plugin \"${input.package}\" is not configured${EOL}`,\n )\n }),\n)\n\nexport async function removePluginConfig(configPath: string, spec: string) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return undefined\n throw error\n })\n if (text === undefined) return false\n const errors: ParseError[] = []\n const config: unknown = parse(text, errors, { allowTrailingComma: true })\n if (errors.length || typeof config !== \"object\" || config === null || Array.isArray(config))\n throw new Error(`Invalid global configuration: ${configPath}`)\n const plugins = \"plugins\" in config ? config.plugins : undefined\n if (plugins !== undefined && !Array.isArray(plugins)) throw new Error(`Invalid plugins configuration: ${configPath}`)\n if (!configured(plugins, spec)) return false\n\n const updated = applyEdits(\n text,\n modify(\n text,\n [\"plugins\"],\n plugins?.filter((entry) => !matches(entry, spec)),\n {\n formattingOptions: { tabSize: 2, insertSpaces: true },\n },\n ),\n )\n const temporary = configPath + \".tmp\"\n await writeFile(temporary, updated.endsWith(\"\\n\") ? updated : updated + \"\\n\", { mode: 0o600 })\n await rename(temporary, configPath)\n return true\n}\n\nfunction configured(plugins: readonly unknown[] | undefined, spec: string) {\n return plugins?.some((entry) => matches(entry, spec)) ?? false\n}\n\nfunction matches(entry: unknown, spec: string) {\n return entry === spec || (typeof entry === \"object\" && entry !== null && \"package\" in entry && entry.package === spec)\n}\n" | ||
| ], | ||
| "mappings": ";itBAAA,cAAS,WAET,mBAAS,YAAU,eAAQ,oBAS3B,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,OAClC,EAAO,GAAG,mBAAmB,EAAE,SAAU,CAAC,EAAO,CAC/C,IAAM,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAO,MAAM,CAAC,EACzE,EAAS,MAAO,EAAO,QAAQ,IAAM,EAAmB,EAAY,EAAM,OAAO,CAAC,EAClF,EAAS,MAAO,EAAO,QACvB,EAAO,MAAO,EAAO,IAAI,EACzB,EAAM,EAAW,EAAK,QAAS,EAAM,OAAO,EAClD,GAAI,EACF,MAAO,EAAO,OAAO,CAAC,IAAU,CAC9B,EAAM,QAAU,EAAM,SAAS,OAAO,CAAC,IAAU,CAAC,EAAQ,EAAO,EAAM,OAAO,CAAC,EAChF,EAEH,IAAM,EAAU,CAAC,EAAS,EAAa,OAAW,EAAM,EAAO,KAAO,MAAS,EAAE,OAC/E,CAAC,IAAS,IAAS,MACrB,EACA,QAAQ,OAAO,MACb,EAAQ,OACJ,WAAW,EAAM,yBAAyB,EAAQ,KAAK,IAAI,IAAI,IAC/D,WAAW,EAAM,6BAA6B,GACpD,EACD,CACH,EAEA,eAAsB,CAAkB,CAAC,EAAoB,EAAc,CACzE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,OAC/F,MAAM,EACP,EACD,GAAI,IAAS,OAAW,MAAO,GAC/B,IAAM,EAAuB,CAAC,EACxB,EAAkB,EAAM,EAAM,EAAQ,CAAE,mBAAoB,EAAK,CAAC,EACxE,GAAI,EAAO,QAAU,OAAO,IAAW,UAAY,IAAW,MAAQ,MAAM,QAAQ,CAAM,EACxF,MAAU,MAAM,iCAAiC,GAAY,EAC/D,IAAM,EAAU,YAAa,EAAS,EAAO,QAAU,OACvD,GAAI,IAAY,QAAa,CAAC,MAAM,QAAQ,CAAO,EAAG,MAAU,MAAM,kCAAkC,GAAY,EACpH,GAAI,CAAC,EAAW,EAAS,CAAI,EAAG,MAAO,GAEvC,IAAM,EAAU,EACd,EACA,EACE,EACA,CAAC,SAAS,EACV,GAAS,OAAO,CAAC,IAAU,CAAC,EAAQ,EAAO,CAAI,CAAC,EAChD,CACE,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CACtD,CACF,CACF,EACM,EAAY,EAAa,OAG/B,OAFA,MAAM,EAAU,EAAW,EAAQ,SAAS;AAAA,CAAI,EAAI,EAAU,EAAU;AAAA,EAAM,CAAE,KAAM,GAAM,CAAC,EAC7F,MAAM,EAAO,EAAW,CAAU,EAC3B,GAGT,SAAS,CAAU,CAAC,EAAyC,EAAc,CACzE,OAAO,GAAS,KAAK,CAAC,IAAU,EAAQ,EAAO,CAAI,CAAC,GAAK,GAG3D,SAAS,CAAO,CAAC,EAAgB,EAAc,CAC7C,OAAO,IAAU,GAAS,OAAO,IAAU,UAAY,IAAU,MAAQ,YAAa,GAAS,EAAM,UAAY", | ||
| "debugId": "E957B5E1830CF8D664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+deepinfra@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/deepinfra/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/deepinfra-provider.ts\nimport {\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel\n} from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/deepinfra-image-model.ts\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n convertToFormData,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n downloadBlob,\n postFormDataToApi,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\nvar DeepInfraImageModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n this.maxImagesPerCall = 1;\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n if (files != null && files.length > 0) {\n const { value: response2, responseHeaders: responseHeaders2 } = await postFormDataToApi({\n url: this.getEditUrl(),\n headers: combineHeaders(this.config.headers(), headers),\n formData: convertToFormData(\n {\n model: this.modelId,\n prompt,\n image: await Promise.all(files.map((file) => fileToBlob(file))),\n mask: mask != null ? await fileToBlob(mask) : void 0,\n n,\n size,\n ...(_d = providerOptions.deepinfra) != null ? _d : {}\n },\n { useArrayBrackets: false }\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraEditErrorSchema,\n errorToMessage: (error) => {\n var _a2, _b2;\n return (_b2 = (_a2 = error.error) == null ? void 0 : _a2.message) != null ? _b2 : \"Unknown error\";\n }\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraEditResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response2.data.map((item) => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders2\n }\n };\n }\n const splitSize = size == null ? void 0 : size.split(\"x\");\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n prompt,\n num_images: n,\n ...aspectRatio && { aspect_ratio: aspectRatio },\n ...splitSize && { width: splitSize[0], height: splitSize[1] },\n ...seed != null && { seed },\n ...(_e = providerOptions.deepinfra) != null ? _e : {}\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraErrorSchema,\n errorToMessage: (error) => error.detail.error\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraImageResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response.images.map(\n (image) => image.replace(/^data:image\\/\\w+;base64,/, \"\")\n ),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders\n }\n };\n }\n getEditUrl() {\n const baseUrl = this.config.baseURL.replace(\"/inference\", \"/openai\");\n return `${baseUrl}/images/edits`;\n }\n};\nvar deepInfraErrorSchema = z.object({\n detail: z.object({\n error: z.string()\n })\n});\nvar deepInfraImageResponseSchema = z.object({\n images: z.array(z.string())\n});\nvar deepInfraEditErrorSchema = z.object({\n error: z.object({\n message: z.string()\n }).optional()\n});\nvar deepInfraEditResponseSchema = z.object({\n data: z.array(z.object({ b64_json: z.string() }))\n});\nasync function fileToBlob(file) {\n if (file.type === \"url\") {\n return downloadBlob(file.url);\n }\n const data = file.data instanceof Uint8Array ? file.data : convertBase64ToUint8Array(file.data);\n return new Blob([data], { type: file.mediaType });\n}\n\n// src/deepinfra-chat-language-model.ts\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nvar DeepInfraChatLanguageModel = class extends OpenAICompatibleChatLanguageModel {\n constructor(modelId, config) {\n super(modelId, config);\n }\n /**\n * Fixes incorrect token usage for Gemini/Gemma models from DeepInfra.\n *\n * DeepInfra's API returns completion_tokens that don't include reasoning_tokens\n * for Gemini/Gemma models, which violates the OpenAI-compatible spec.\n * According to the spec, completion_tokens should include reasoning_tokens.\n *\n * Example of incorrect data from DeepInfra:\n * {\n * \"completion_tokens\": 84, // text-only tokens\n * \"completion_tokens_details\": {\n * \"reasoning_tokens\": 1081 // reasoning tokens not included above\n * }\n * }\n *\n * This would result in negative text tokens: 84 - 1081 = -997\n *\n * The fix: If reasoning_tokens > completion_tokens, add reasoning_tokens\n * to completion_tokens: 84 + 1081 = 1165\n */\n fixUsageForGeminiModels(usage) {\n var _a, _b;\n if (!usage || !((_a = usage.completion_tokens_details) == null ? void 0 : _a.reasoning_tokens)) {\n return usage;\n }\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = usage.completion_tokens_details.reasoning_tokens;\n if (reasoningTokens > completionTokens) {\n const correctedCompletionTokens = completionTokens + reasoningTokens;\n return {\n ...usage,\n // Add reasoning_tokens to completion_tokens to get the correct total\n completion_tokens: correctedCompletionTokens,\n // Update total_tokens if present\n total_tokens: usage.total_tokens != null ? usage.total_tokens + reasoningTokens : void 0\n };\n }\n return usage;\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const result = await super.doGenerate(options);\n if ((_a = result.usage) == null ? void 0 : _a.raw) {\n const fixedRawUsage = this.fixUsageForGeminiModels(result.usage.raw);\n if (fixedRawUsage !== result.usage.raw) {\n const promptTokens = (_b = fixedRawUsage.prompt_tokens) != null ? _b : 0;\n const completionTokens = (_c = fixedRawUsage.completion_tokens) != null ? _c : 0;\n const cacheReadTokens = (_e = (_d = fixedRawUsage.prompt_tokens_details) == null ? void 0 : _d.cached_tokens) != null ? _e : 0;\n const reasoningTokens = (_g = (_f = fixedRawUsage.completion_tokens_details) == null ? void 0 : _f.reasoning_tokens) != null ? _g : 0;\n return {\n ...result,\n usage: {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: fixedRawUsage\n }\n };\n }\n }\n return result;\n }\n async doStream(options) {\n const result = await super.doStream(options);\n const originalStream = result.stream;\n const fixUsage = this.fixUsageForGeminiModels.bind(this);\n const transformedStream = new ReadableStream({\n async start(controller) {\n var _a, _b, _c, _d, _e, _f, _g;\n const reader = originalStream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value.type === \"finish\" && ((_a = value.usage) == null ? void 0 : _a.raw)) {\n const fixedRawUsage = fixUsage(value.usage.raw);\n if (fixedRawUsage !== value.usage.raw) {\n const promptTokens = (_b = fixedRawUsage.prompt_tokens) != null ? _b : 0;\n const completionTokens = (_c = fixedRawUsage.completion_tokens) != null ? _c : 0;\n const cacheReadTokens = (_e = (_d = fixedRawUsage.prompt_tokens_details) == null ? void 0 : _d.cached_tokens) != null ? _e : 0;\n const reasoningTokens = (_g = (_f = fixedRawUsage.completion_tokens_details) == null ? void 0 : _f.reasoning_tokens) != null ? _g : 0;\n controller.enqueue({\n ...value,\n usage: {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: fixedRawUsage\n }\n });\n } else {\n controller.enqueue(value);\n }\n } else {\n controller.enqueue(value);\n }\n }\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n }\n });\n return {\n ...result,\n stream: transformedStream\n };\n }\n};\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/deepinfra-provider.ts\nfunction createDeepInfra(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.deepinfra.com/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"DEEPINFRA_API_KEY\",\n description: \"DeepInfra's API key\"\n })}`,\n ...options.headers\n },\n `ai-sdk/deepinfra/${VERSION}`\n );\n const getCommonModelConfig = (modelType) => ({\n provider: `deepinfra.${modelType}`,\n url: ({ path }) => `${baseURL}/openai${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new DeepInfraChatLanguageModel(\n modelId,\n getCommonModelConfig(\"chat\")\n );\n };\n const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig(\"completion\")\n );\n const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig(\"embedding\")\n );\n const createImageModel = (modelId) => new DeepInfraImageModel(modelId, {\n ...getCommonModelConfig(\"image\"),\n baseURL: baseURL ? `${baseURL}/inference` : \"https://api.deepinfra.com/v1/inference\"\n });\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.languageModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n return provider;\n}\nvar deepinfra = createDeepInfra();\nexport {\n VERSION,\n createDeepInfra,\n deepinfra\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "837A4EEC6593965464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/theme/color.ts", "../tui/src/theme/resolve.ts"], | ||
| "sourcesContent": [ | ||
| "import { RGBA } from \"@opentui/core\"\n\nexport function ansiToRgba(code: number): RGBA {\n if (code < 16) {\n const ansiColors = [\n \"#000000\",\n \"#800000\",\n \"#008000\",\n \"#808000\",\n \"#000080\",\n \"#800080\",\n \"#008080\",\n \"#c0c0c0\",\n \"#808080\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#ffffff\",\n ]\n return RGBA.fromHex(ansiColors[code] ?? \"#000000\")\n }\n\n if (code < 232) {\n const index = code - 16\n const b = index % 6\n const g = Math.floor(index / 6) % 6\n const r = Math.floor(index / 36)\n const val = (x: number) => (x === 0 ? 0 : x * 40 + 55)\n return RGBA.fromInts(val(r), val(g), val(b))\n }\n\n if (code < 256) {\n const gray = (code - 232) * 10 + 8\n return RGBA.fromInts(gray, gray, gray)\n }\n\n return RGBA.fromInts(0, 0, 0)\n}\n\nexport function tint(base: RGBA, overlay: RGBA, alpha: number): RGBA {\n const r = base.r + (overlay.r - base.r) * alpha\n const g = base.g + (overlay.g - base.g) * alpha\n const b = base.b + (overlay.b - base.b) * alpha\n return RGBA.fromInts(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255))\n}\n", | ||
| "import { RGBA } from \"@opentui/core\"\nimport { ansiToRgba } from \"./color\"\nimport type { ColorValue, Theme, ThemeColor, ThemeV1Json } from \"./v1\"\n\nexport function resolveThemeColors(\n theme: ThemeV1Json,\n mode: \"dark\" | \"light\",\n resolveAnsi: (code: number) => RGBA = ansiToRgba,\n) {\n const defs = theme.defs ?? {}\n function resolveColor(color: ColorValue, chain: string[] = []): RGBA {\n if (color instanceof RGBA) return color\n if (typeof color === \"string\") {\n if (color === \"transparent\" || color === \"none\") return RGBA.fromInts(0, 0, 0, 0)\n\n if (color.startsWith(\"#\")) return RGBA.fromHex(color)\n\n if (chain.includes(color)) {\n throw new Error(`Circular color reference: ${[...chain, color].join(\" -> \")}`)\n }\n\n const next = defs[color] ?? theme.theme[color as ThemeColor]\n if (next === undefined) {\n throw new Error(`Color reference \"${color}\" not found in defs or theme`)\n }\n return resolveColor(next, [...chain, color])\n }\n if (typeof color === \"number\") return resolveAnsi(color)\n return resolveColor(color[mode], chain)\n }\n\n const resolved = Object.fromEntries(\n Object.entries(theme.theme)\n .filter(([key]) => key !== \"selectedListItemText\" && key !== \"backgroundMenu\" && key !== \"thinkingOpacity\")\n .map(([key, value]) => [key, resolveColor(value as ColorValue)]),\n ) as Partial<Record<ThemeColor, RGBA>>\n\n const hasSelectedListItemText = theme.theme.selectedListItemText !== undefined\n return {\n theme: {\n ...(resolved as Record<ThemeColor, RGBA>),\n selectedListItemText: hasSelectedListItemText\n ? resolveColor(theme.theme.selectedListItemText!)\n : resolved.background!,\n backgroundMenu:\n theme.theme.backgroundMenu === undefined\n ? resolved.backgroundElement!\n : resolveColor(theme.theme.backgroundMenu),\n } satisfies Omit<Theme, \"_hasSelectedListItemText\" | \"thinkingOpacity\">,\n hasSelectedListItemText,\n thinkingOpacity: theme.theme.thinkingOpacity ?? 0.6,\n }\n}\n" | ||
| ], | ||
| "mappings": ";oDAEO,SAAS,CAAU,CAAC,EAAoB,CAC7C,GAAI,EAAO,GAAI,CACb,IAAM,EAAa,CACjB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAO,EAAK,QAAQ,EAAW,IAAS,SAAS,EAGnD,GAAI,EAAO,IAAK,CACd,IAAM,EAAQ,EAAO,GACf,EAAI,EAAQ,EACZ,EAAI,KAAK,MAAM,EAAQ,CAAC,EAAI,EAC5B,EAAI,KAAK,MAAM,EAAQ,EAAE,EACzB,EAAM,CAAC,IAAe,IAAM,EAAI,EAAI,EAAI,GAAK,GACnD,OAAO,EAAK,SAAS,EAAI,CAAC,EAAG,EAAI,CAAC,EAAG,EAAI,CAAC,CAAC,EAG7C,GAAI,EAAO,IAAK,CACd,IAAM,GAAQ,EAAO,KAAO,GAAK,EACjC,OAAO,EAAK,SAAS,EAAM,EAAM,CAAI,EAGvC,OAAO,EAAK,SAAS,EAAG,EAAG,CAAC,EAGvB,SAAS,CAAI,CAAC,EAAY,EAAe,EAAqB,CACnE,IAAM,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EACpC,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EACpC,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EAC1C,OAAO,EAAK,SAAS,KAAK,MAAM,EAAI,GAAG,EAAG,KAAK,MAAM,EAAI,GAAG,EAAG,KAAK,MAAM,EAAI,GAAG,CAAC,EC1C7E,SAAS,CAAkB,CAChC,EACA,EACA,EAAsC,EACtC,CACA,IAAM,EAAO,EAAM,MAAQ,CAAC,EAC5B,SAAS,CAAY,CAAC,EAAmB,EAAkB,CAAC,EAAS,CACnE,GAAI,aAAiB,EAAM,OAAO,EAClC,GAAI,OAAO,IAAU,SAAU,CAC7B,GAAI,IAAU,eAAiB,IAAU,OAAQ,OAAO,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EAEhF,GAAI,EAAM,WAAW,GAAG,EAAG,OAAO,EAAK,QAAQ,CAAK,EAEpD,GAAI,EAAM,SAAS,CAAK,EACtB,MAAU,MAAM,6BAA6B,CAAC,GAAG,EAAO,CAAK,EAAE,KAAK,MAAM,GAAG,EAG/E,IAAM,EAAO,EAAK,IAAU,EAAM,MAAM,GACxC,GAAI,IAAS,OACX,MAAU,MAAM,oBAAoB,+BAAmC,EAEzE,OAAO,EAAa,EAAM,CAAC,GAAG,EAAO,CAAK,CAAC,EAE7C,GAAI,OAAO,IAAU,SAAU,OAAO,EAAY,CAAK,EACvD,OAAO,EAAa,EAAM,GAAO,CAAK,EAGxC,IAAM,EAAW,OAAO,YACtB,OAAO,QAAQ,EAAM,KAAK,EACvB,OAAO,EAAE,KAAS,IAAQ,wBAA0B,IAAQ,kBAAoB,IAAQ,iBAAiB,EACzG,IAAI,EAAE,EAAK,KAAW,CAAC,EAAK,EAAa,CAAmB,CAAC,CAAC,CACnE,EAEM,EAA0B,EAAM,MAAM,uBAAyB,OACrE,MAAO,CACL,MAAO,IACD,EACJ,qBAAsB,EAClB,EAAa,EAAM,MAAM,oBAAqB,EAC9C,EAAS,WACb,eACE,EAAM,MAAM,iBAAmB,OAC3B,EAAS,kBACT,EAAa,EAAM,MAAM,cAAc,CAC/C,EACA,0BACA,gBAAiB,EAAM,MAAM,iBAAmB,GAClD", | ||
| "debugId": "785967397BB3D63164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/route/auth-options.ts"], | ||
| "sourcesContent": [ | ||
| "import type { Config, Redacted } from \"effect\"\nimport { Auth } from \"./auth.js\"\n\nexport type ApiKeyMode = \"optional\" | \"required\"\n\nexport type AuthOverride = {\n readonly auth: Auth.Definition\n readonly apiKey?: never\n}\n\nexport type OptionalApiKeyAuth = {\n readonly apiKey?: string | Redacted.Redacted<string> | Config.Config<string | Redacted.Redacted<string>>\n readonly auth?: never\n}\n\nexport type RequiredApiKeyAuth = {\n readonly apiKey: string | Redacted.Redacted<string> | Config.Config<string | Redacted.Redacted<string>>\n readonly auth?: never\n}\n\nexport type ProviderAuthOption<Mode extends ApiKeyMode> =\n | AuthOverride\n | (Mode extends \"optional\" ? OptionalApiKeyAuth : RequiredApiKeyAuth)\n\nexport type LanguageModelOptions<Base, Mode extends ApiKeyMode> = Omit<Base, \"apiKey\" | \"auth\"> &\n ProviderAuthOption<Mode>\n\nexport type LanguageModelArgs<Base, Mode extends ApiKeyMode> = Mode extends \"optional\"\n ? readonly [options?: LanguageModelOptions<Base, Mode>]\n : readonly [options: LanguageModelOptions<Base, Mode>]\n\nexport type LanguageModelFactory<Base, Mode extends ApiKeyMode, LanguageModel> = (\n id: string,\n ...args: LanguageModelArgs<Base, Mode>\n) => LanguageModel\n\n/**\n * Require at least one of the keys in `T`. Use for option shapes where any\n * subset of fields is acceptable but at least one must be present (e.g. Azure\n * accepts `resourceName` or `baseURL`).\n */\nexport type AtLeastOne<T> = {\n [K in keyof T]: Required<Pick<T, K>> & Partial<Omit<T, K>>\n}[keyof T]\n\n/**\n * Standard bearer-auth resolution for providers: honor an explicit `auth`\n * override, otherwise resolve `apiKey` (option > config var) and apply it as\n * a bearer token.\n */\nexport const bearer = (\n options: ProviderAuthOption<\"optional\">,\n envVar: string | ReadonlyArray<string>,\n): Auth.Definition => {\n if (\"auth\" in options && options.auth) return options.auth\n return (Array.isArray(envVar) ? envVar : [envVar])\n .reduce(\n (auth, name) => auth.orElse(Auth.config(name)),\n Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\"),\n )\n .bearer()\n}\n\nexport * as AuthOptions from \"./auth-options.js\"\n" | ||
| ], | ||
| "mappings": ";uJAkDO,IAAM,EAAS,CACpB,EACA,IACoB,CACpB,GAAI,SAAU,GAAW,EAAQ,KAAM,OAAO,EAAQ,KACtD,OAAQ,MAAM,QAAQ,CAAM,EAAI,EAAS,CAAC,CAAM,GAC7C,OACC,CAAC,EAAM,IAAS,EAAK,OAAO,EAAK,OAAO,CAAI,CAAC,EAC7C,EAAK,SAAS,WAAY,EAAU,EAAQ,OAAS,OAAW,QAAQ,CAC1E,EACC,OAAO", | ||
| "debugId": "9DA02457F3B8A18264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/partial-json-options.ts", "../ai/src/protocols/utils/partial-json.ts", "../ai/src/protocols/utils/tool-stream.ts"], | ||
| "sourcesContent": [ | ||
| "/*\n * Adapted from partial-json by the Promplate Dev Team:\n * https://github.com/promplate/partial-json-parser-js/blob/main/src/options.ts\n * Licensed under the MIT License; see partial-json.ts for the complete notice.\n */\n\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello `\n */\nexport const STR = 0b000000001\n\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexport const NUM = 0b000000010\n\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexport const ARR = 0b000000100\n\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexport const OBJ = 0b000001000\n\n/**\n * allow `nu` to be parsed as `null`\n */\nexport const NULL = 0b000010000\n\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexport const BOOL = 0b000100000\n\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexport const NAN = 0b001000000\n\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexport const INFINITY = 0b010000000\n\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexport const _INFINITY = 0b100000000\n\nexport const INF = INFINITY | _INFINITY\nexport const SPECIAL = NULL | BOOL | INF | NAN\nexport const ATOM = STR | NUM | SPECIAL\nexport const COLLECTION = ARR | OBJ\nexport const ALL = ATOM | COLLECTION\n\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 cases is the best option.\n */\nexport const Allow = { STR, NUM, ARR, OBJ, NULL, BOOL, NAN, INFINITY, _INFINITY, INF, SPECIAL, ATOM, COLLECTION, ALL }\n\nexport default Allow\n", | ||
| "/*\n * Adapted from partial-json by the Promplate Dev Team:\n * https://github.com/promplate/partial-json-parser-js\n *\n * MIT License\n *\n * Copyright (c) 2023 Promplate Dev Team\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { Schema } from \"effect\"\nimport { Allow } from \"./partial-json-options.js\"\nexport * from \"./partial-json-options.js\"\n\nexport class PartialJSON extends Error {}\nexport class MalformedJSON extends Error {}\n\nconst decodeJson = Schema.decodeUnknownSync(Schema.fromJsonString(Schema.Unknown))\n\n/** Parse complete or incomplete JSON, restricted by the supplied partial-value flags. */\nexport function parseJSON(jsonString: string, allowPartial = Allow.ALL): unknown {\n if (typeof jsonString !== \"string\") throw new TypeError(`expecting str, got ${typeof jsonString}`)\n const input = jsonString.trim()\n if (!input) throw new Error(`${jsonString} is empty`)\n try {\n return decodeJson(input)\n } catch {}\n\n const repaired = repairJSON(input)\n if (repaired !== input) {\n try {\n return decodeJson(repaired)\n } catch {}\n }\n\n try {\n return _parseJSON(input, allowPartial)\n } catch (error) {\n if (repaired !== input) return _parseJSON(repaired, allowPartial)\n throw error\n }\n}\n\nconst repairJSON = (input: string) => {\n let repaired = \"\"\n let quoted = false\n\n for (let index = 0; index < input.length; index++) {\n const character = input[index]\n if (!quoted) {\n repaired += character\n if (character === '\"') quoted = true\n continue\n }\n\n if (character === '\"') {\n repaired += character\n quoted = false\n continue\n }\n\n if (character === \"\\\\\") {\n const next = input[index + 1]\n if (next === \"u\" && /^[0-9a-fA-F]{4}$/.test(input.slice(index + 2, index + 6))) {\n repaired += input.slice(index, index + 6)\n index += 5\n continue\n }\n if (next !== undefined && '\"\\\\/bfnrtu'.includes(next)) {\n repaired += `\\\\${next}`\n index++\n continue\n }\n repaired += \"\\\\\\\\\"\n continue\n }\n\n const code = character.charCodeAt(0)\n repaired += code <= 0x1f ? `\\\\u${code.toString(16).padStart(4, \"0\")}` : character\n }\n\n return repaired\n}\n\nconst _parseJSON = (jsonString: string, allow: number) => {\n const length = jsonString.length\n let index = 0\n\n const markPartialJSON = (message: string): never => {\n throw new PartialJSON(`${message} at position ${index}`)\n }\n\n const throwMalformedError = (message: string): never => {\n throw new MalformedJSON(`${message} at position ${index}`)\n }\n\n const parseAny = (): unknown => {\n skipBlank()\n if (index >= length) markPartialJSON(\"Unexpected end of input\")\n if (jsonString[index] === '\"') return parseStr()\n if (jsonString[index] === \"{\") return parseObj()\n if (jsonString[index] === \"[\") return parseArr()\n if (\n jsonString.substring(index, index + 4) === \"null\" ||\n (Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))\n ) {\n index += 4\n return null\n }\n if (\n jsonString.substring(index, index + 4) === \"true\" ||\n (Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))\n ) {\n index += 4\n return true\n }\n if (\n jsonString.substring(index, index + 5) === \"false\" ||\n (Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))\n ) {\n index += 5\n return false\n }\n if (\n jsonString.substring(index, index + 8) === \"Infinity\" ||\n (Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))\n ) {\n index += 8\n return Infinity\n }\n if (\n jsonString.substring(index, index + 9) === \"-Infinity\" ||\n (Allow._INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n \"-Infinity\".startsWith(jsonString.substring(index)))\n ) {\n index += 9\n return -Infinity\n }\n if (\n jsonString.substring(index, index + 3) === \"NaN\" ||\n (Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))\n ) {\n index += 3\n return NaN\n }\n return parseNum()\n }\n\n const parseStr = (): string => {\n const start = index\n let escape = false\n index++\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 decodeJson(jsonString.substring(start, ++index - Number(escape))) as string\n } catch (error) {\n throwMalformedError(String(error))\n }\n }\n if (Allow.STR & allow) {\n try {\n return decodeJson(`${jsonString.substring(start, index - Number(escape))}\"`) as string\n } catch {\n return decodeJson(`${jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\"))}\"`) as string\n }\n }\n return markPartialJSON(\"Unterminated string literal\")\n }\n\n const parseObj = (): Record<string, unknown> => {\n index++\n skipBlank()\n const object: Record<string, unknown> = {}\n try {\n while (jsonString[index] !== \"}\") {\n skipBlank()\n if (index >= length && Allow.OBJ & allow) return object\n const key = parseStr()\n skipBlank()\n index++\n try {\n Object.defineProperty(object, key, {\n value: parseAny(),\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } catch (error) {\n if (Allow.OBJ & allow) return object\n throw error\n }\n skipBlank()\n if (jsonString[index] === \",\") index++\n }\n } catch {\n if (Allow.OBJ & allow) return object\n return markPartialJSON(\"Expected '}' at end of object\")\n }\n index++\n return object\n }\n\n const parseArr = (): unknown[] => {\n index++\n const array: unknown[] = []\n try {\n while (jsonString[index] !== \"]\") {\n array.push(parseAny())\n skipBlank()\n if (jsonString[index] === \",\") index++\n }\n } catch {\n if (Allow.ARR & allow) return array\n return markPartialJSON(\"Expected ']' at end of array\")\n }\n index++\n return array\n }\n\n const parseNum = (): unknown => {\n if (index === 0) {\n if (jsonString === \"-\") throwMalformedError(\"Not sure what '-' is\")\n try {\n return decodeJson(jsonString)\n } catch (error) {\n if (Allow.NUM & allow) {\n try {\n return decodeJson(jsonString.substring(0, jsonString.lastIndexOf(\"e\")))\n } catch {}\n }\n throwMalformedError(String(error))\n }\n }\n\n const start = index\n if (jsonString[index] === \"-\") index++\n while (jsonString[index] && !\",]}\".includes(jsonString[index])) index++\n if (index === length && !(Allow.NUM & allow)) markPartialJSON(\"Unterminated number literal\")\n\n try {\n return decodeJson(jsonString.substring(start, index))\n } catch (error) {\n if (jsonString.substring(start, index) === \"-\") markPartialJSON(\"Not sure what '-' is\")\n try {\n return decodeJson(jsonString.substring(start, jsonString.lastIndexOf(\"e\")))\n } catch {\n throwMalformedError(String(error))\n }\n }\n }\n\n const skipBlank = () => {\n while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) index++\n }\n\n return parseAny()\n}\n\nexport const parse = parseJSON\n", | ||
| "import { Effect, Option } from \"effect\"\nimport { AIError, LLMEvent, type ProviderMetadata, type ToolCall } from \"../../schema/index.js\"\nimport { eventError, parseToolInput, type ToolAccumulator } from \"../shared.js\"\nimport { parse } from \"./partial-json.js\"\n\ntype StreamKey = string | number\nconst parsePartialInput = Option.liftThrowable(parse)\n\n/**\n * One pending streamed tool call. Providers emit the tool identity and JSON\n * argument text across separate chunks; `input` is the raw JSON string collected\n * so far, not the parsed object.\n */\nexport interface PendingTool extends ToolAccumulator {\n readonly providerExecuted?: boolean\n readonly providerMetadata?: ProviderMetadata\n}\n\n/**\n * Sparse parser state keyed by the provider's stream-local tool identifier.\n *\n * This key is not the final tool-call id (`call_...`). It is the id/index the\n * provider uses while streaming a partial call: OpenAI Chat / Anthropic /\n * Bedrock use numeric content indexes, while OpenAI Responses uses string\n * `item_id`s. The generic keeps each protocol internally consistent.\n */\nexport type State<K extends StreamKey> = Partial<Record<K, PendingTool>>\n\n/**\n * Result of adding argument text to one pending tool call. It returns both the\n * next `tools` state and the updated `tool` because parsers often need the\n * current id/name immediately. `events` contains lifecycle and delta events\n * produced by the append; metadata-only deltas update identity without output.\n */\nexport interface AppendOutcome<K extends StreamKey> {\n readonly tools: State<K>\n readonly tool: PendingTool\n readonly events: ReadonlyArray<LLMEvent>\n}\n\n/** Create empty accumulator state for one provider stream. */\nexport const empty = <K extends StreamKey>(): State<K> => ({})\n\nconst withTool = <K extends StreamKey>(tools: State<K>, key: K, tool: PendingTool): State<K> => {\n return { ...tools, [key]: tool }\n}\n\nconst withoutTool = <K extends StreamKey>(tools: State<K>, key: K): State<K> => {\n const next = { ...tools }\n delete next[key]\n return next\n}\n\nconst inputStart = (tool: PendingTool) =>\n LLMEvent.toolInputStart({\n id: tool.id,\n name: tool.name,\n providerExecuted: tool.providerExecuted ? true : undefined,\n providerMetadata: tool.providerMetadata,\n })\n\nconst inputDelta = (tool: PendingTool, text: string) =>\n LLMEvent.toolInputDelta({\n id: tool.id,\n name: tool.name,\n text,\n input: Option.getOrElse(parsePartialInput(tool.input), () => ({})),\n })\n\nconst toolCall = (route: string, tool: PendingTool, inputOverride?: string) => {\n const raw = inputOverride ?? tool.input\n return parseToolInput(route, tool.name, raw).pipe(\n Effect.catch((error) =>\n tool.providerExecuted\n ? Effect.fail(error)\n : Effect.succeed(\n Option.getOrElse(\n Option.map(parsePartialInput(raw), (input) => input ?? {}),\n () => ({}),\n ),\n ),\n ),\n Effect.map(\n (input): ToolCall =>\n LLMEvent.toolCall({\n id: tool.id,\n name: tool.name,\n input,\n providerExecuted: tool.providerExecuted ? true : undefined,\n providerMetadata: tool.providerMetadata,\n }),\n ),\n )\n}\n\nconst finishEvents = (tool: PendingTool, event: ToolCall): ReadonlyArray<LLMEvent> => [\n LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }),\n event,\n]\n\n/** Store the updated tool and produce the optional public delta event. */\nconst appendTool = <K extends StreamKey>(\n tools: State<K>,\n key: K,\n tool: PendingTool,\n text: string,\n): AppendOutcome<K> => {\n const events: LLMEvent[] = []\n if (!tools[key]) events.push(inputStart(tool))\n if (text.length > 0) events.push(inputDelta(tool, text))\n return {\n tools: withTool(tools, key, tool),\n tool,\n events,\n }\n}\n\nexport const isError = <K extends StreamKey>(result: AppendOutcome<K> | AIError): result is AIError =>\n result instanceof AIError\n\n/**\n * Register a tool call whose start event arrived before any argument deltas.\n * Used by Anthropic `content_block_start`, Bedrock `contentBlockStart`, and\n * OpenAI Responses `response.output_item.added`.\n */\nexport const start = <K extends StreamKey>(\n tools: State<K>,\n key: K,\n tool: Omit<PendingTool, \"input\"> & { readonly input?: string },\n) => withTool(tools, key, { ...tool, input: tool.input ?? \"\" })\n\n/**\n * Append a streamed argument delta, starting the tool if this provider encodes\n * identity on the first delta instead of a separate start event. OpenAI Chat has\n * this shape: `tool_calls[].index` is the stream key, and `id` / `name` may only\n * appear on the first delta for that index.\n */\nexport const appendOrStart = <K extends StreamKey>(\n route: string,\n tools: State<K>,\n key: K,\n delta: { readonly id?: string; readonly name?: string; readonly text: string },\n missingToolMessage: string,\n): AppendOutcome<K> | AIError => {\n const current = tools[key]\n const id = current?.id ?? delta.id\n const name = current?.name ?? delta.name\n if (!id || !name) return eventError(route, missingToolMessage)\n\n const tool = {\n id,\n name,\n input: `${current?.input ?? \"\"}${delta.text}`,\n providerExecuted: current?.providerExecuted,\n providerMetadata: current?.providerMetadata,\n }\n if (current && delta.text.length === 0 && current.id === id && current.name === name)\n return { tools, tool: current, events: [] }\n return appendTool(tools, key, tool, delta.text)\n}\n\n/**\n * Append argument text to a tool that must already have been started. This keeps\n * protocols honest when their stream grammar promises a start event before any\n * argument delta.\n */\nexport const appendExisting = <K extends StreamKey>(\n route: string,\n tools: State<K>,\n key: K,\n text: string,\n missingToolMessage: string,\n): AppendOutcome<K> | AIError => {\n const current = tools[key]\n if (!current) return eventError(route, missingToolMessage)\n if (text.length === 0) return { tools, tool: current, events: [] }\n return appendTool(tools, key, { ...current, input: `${current.input}${text}` }, text)\n}\n\n/**\n * Finalize one pending tool call: parse the accumulated raw JSON, remove it\n * from state, and recover incomplete local arguments when needed.\n * Missing keys are a no-op because some providers emit stop events for\n * non-tool content blocks.\n */\nexport const finish = <K extends StreamKey>(route: string, tools: State<K>, key: K) =>\n Effect.gen(function* () {\n const tool = tools[key]\n if (!tool) return { tools }\n return {\n tools: withoutTool(tools, key),\n events: finishEvents(tool, yield* toolCall(route, tool)),\n }\n })\n\n/**\n * Finalize one pending tool call with an authoritative final input string.\n * OpenAI Responses can send accumulated deltas and then repeat the completed\n * arguments on `response.output_item.done`; the final value wins.\n */\nexport const finishWithInput = <K extends StreamKey>(route: string, tools: State<K>, key: K, input: string) =>\n Effect.gen(function* () {\n const tool = tools[key]\n if (!tool) return { tools }\n return {\n tools: withoutTool(tools, key),\n events: finishEvents(tool, yield* toolCall(route, tool, input)),\n }\n })\n\n/**\n * Finalize every pending tool call at once. OpenAI Chat has this shape: it does\n * not emit per-tool stop events, so all accumulated calls finish independently\n * when the choice receives a terminal `finish_reason`.\n */\nexport const finishAll = <K extends StreamKey>(route: string, tools: State<K>) =>\n Effect.gen(function* () {\n const pending = Object.values<PendingTool | undefined>(tools).filter(\n (tool): tool is PendingTool => tool !== undefined,\n )\n return {\n tools: empty<K>(),\n events: yield* Effect.forEach(pending, (tool) =>\n toolCall(route, tool).pipe(Effect.map((event) => finishEvents(tool, event))),\n ).pipe(Effect.map((events) => events.flat())),\n }\n })\n\nexport * as ToolStream from \"./tool-stream.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BD4A90F418B7917C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../util/src/process.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Duration, Effect, Fiber, Layer, Schema, Stream } from \"effect\"\nimport type { PlatformError } from \"effect/PlatformError\"\nimport { ChildProcess } from \"effect/unstable/process\"\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport { CrossSpawnSpawner } from \"./cross-spawn-spawner.js\"\nimport { makeGlobalNode } from \"./effect/app-node.js\"\n\nexport class AppProcessError extends Schema.TaggedError<AppProcessError>()(\"AppProcessError\", {\n command: Schema.String,\n exitCode: Schema.optional(Schema.Number),\n stderr: Schema.optional(Schema.String),\n cause: Schema.optional(Schema.Defect()),\n}) {\n override get message() {\n const detail =\n this.stderr?.trim() || (this.cause instanceof Error ? this.cause.message : this.cause && String(this.cause))\n const status = this.exitCode === undefined ? \"\" : ` (exit ${this.exitCode})`\n return `Command failed${status}: ${this.command}${detail ? `: ${detail}` : \"\"}`\n }\n}\n\nexport interface RunOptions {\n readonly combineOutput?: boolean\n readonly maxOutputBytes?: number\n readonly maxErrorBytes?: number\n readonly signal?: AbortSignal\n readonly timeout?: Duration.Input\n readonly stdin?: string | Uint8Array | Stream.Stream<Uint8Array, PlatformError>\n}\n\nexport interface RunStreamOptions {\n readonly signal?: AbortSignal\n readonly includeStderr?: boolean\n readonly okExitCodes?: ReadonlyArray<number>\n readonly maxErrorBytes?: number\n}\n\nexport interface RunResult {\n readonly command: string\n readonly exitCode: number\n readonly output?: Buffer\n readonly stdout: Buffer\n readonly stderr: Buffer\n readonly outputTruncated?: boolean\n readonly stdoutTruncated: boolean\n readonly stderrTruncated: boolean\n}\n\nexport type Interface = ChildProcessSpawner[\"Service\"] & {\n readonly run: (command: ChildProcess.Command, options?: RunOptions) => Effect.Effect<RunResult, AppProcessError>\n readonly runStream: (\n command: ChildProcess.Command,\n options?: RunStreamOptions,\n ) => Stream.Stream<string, AppProcessError>\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/AppProcess\") {}\n\nexport const requireSuccess = (result: RunResult): Effect.Effect<RunResult, AppProcessError> =>\n result.exitCode === 0\n ? Effect.succeed(result)\n : Effect.fail(\n new AppProcessError({\n command: result.command,\n exitCode: result.exitCode,\n stderr: result.stderr.toString(\"utf8\"),\n }),\n )\n\nexport const requireExitIn =\n (codes: ReadonlyArray<number>) =>\n (result: RunResult): Effect.Effect<RunResult, AppProcessError> =>\n codes.includes(result.exitCode)\n ? Effect.succeed(result)\n : Effect.fail(\n new AppProcessError({\n command: result.command,\n exitCode: result.exitCode,\n stderr: result.stderr.toString(\"utf8\"),\n }),\n )\n\nconst describeCommand = (command: ChildProcess.Command): string => {\n if (command._tag === \"StandardCommand\") {\n return command.args.length ? `${command.command} ${command.args.join(\" \")}` : command.command\n }\n return `${describeCommand(command.left)} | ${describeCommand(command.right)}`\n}\n\nconst wrapError = (description: string, cause: unknown): AppProcessError =>\n cause instanceof AppProcessError ? cause : new AppProcessError({ command: description, cause })\n\nexport const abortError = (signal: AbortSignal): Error => {\n const reason = signal.reason\n if (reason instanceof Error) return reason\n const err = new Error(\"Aborted\")\n err.name = \"AbortError\"\n return err\n}\n\nexport const waitForAbort = (signal: AbortSignal) =>\n Effect.callback<never, Error>((resume) => {\n if (signal.aborted) {\n resume(Effect.fail(abortError(signal)))\n return\n }\n const onabort = () => resume(Effect.fail(abortError(signal)))\n signal.addEventListener(\"abort\", onabort, { once: true })\n return Effect.sync(() => signal.removeEventListener(\"abort\", onabort))\n })\n\nconst normalizeStdin = (\n input: string | Uint8Array | Stream.Stream<Uint8Array, PlatformError>,\n): Stream.Stream<Uint8Array, PlatformError> =>\n typeof input === \"string\"\n ? Stream.make(new TextEncoder().encode(input))\n : input instanceof Uint8Array\n ? Stream.make(input)\n : input\n\nexport const collectStream = (stream: Stream.Stream<Uint8Array, PlatformError>, maxOutputBytes: number | undefined) =>\n Stream.runFold(\n stream,\n () => ({ chunks: [] as Uint8Array[], bytes: 0, truncated: false }),\n (acc, chunk) => {\n if (maxOutputBytes === undefined) {\n acc.chunks.push(chunk)\n acc.bytes += chunk.length\n return acc\n }\n const remaining = maxOutputBytes - acc.bytes\n if (remaining > 0) acc.chunks.push(remaining >= chunk.length ? chunk : chunk.slice(0, remaining))\n acc.bytes += chunk.length\n acc.truncated = acc.truncated || acc.bytes > maxOutputBytes\n return acc\n },\n ).pipe(Effect.map((x) => ({ buffer: Buffer.concat(x.chunks), truncated: x.truncated })))\n\nconst layer = Layer.effect(\n Service,\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner\n\n const runCommand = (command: ChildProcess.Command, options?: RunOptions) => {\n const description = describeCommand(command)\n const collect = Effect.scoped(\n Effect.gen(function* () {\n const handle = yield* spawner.spawn(command)\n if (options?.combineOutput) {\n const [output, exitCode] = yield* Effect.all(\n [collectStream(handle.all, options.maxOutputBytes), handle.exitCode],\n { concurrency: \"unbounded\" },\n )\n return {\n command: description,\n exitCode,\n output: output.buffer,\n stdout: Buffer.alloc(0),\n stderr: Buffer.alloc(0),\n outputTruncated: output.truncated,\n stdoutTruncated: false,\n stderrTruncated: false,\n } satisfies RunResult\n }\n const [stdout, stderr, exitCode] = yield* Effect.all(\n [\n collectStream(handle.stdout, options?.maxOutputBytes),\n collectStream(handle.stderr, options?.maxErrorBytes),\n handle.exitCode,\n ],\n { concurrency: \"unbounded\" },\n )\n return {\n command: description,\n exitCode,\n stdout: stdout.buffer,\n stderr: stderr.buffer,\n stdoutTruncated: stdout.truncated,\n stderrTruncated: stderr.truncated,\n } satisfies RunResult\n }),\n )\n const timed = options?.timeout\n ? Effect.timeoutOrElse(collect, {\n duration: options.timeout,\n orElse: () => Effect.fail(new AppProcessError({ command: description, cause: new Error(\"Timed out\") })),\n })\n : collect\n const aborted = options?.signal\n ? timed.pipe(\n Effect.raceFirst(\n waitForAbort(options.signal).pipe(Effect.mapError((cause) => wrapError(description, cause))),\n ),\n )\n : timed\n return aborted.pipe(Effect.catch((cause) => Effect.fail(wrapError(description, cause))))\n }\n\n const run = Effect.fn(\"AppProcess.run\")(function* (command: ChildProcess.Command, options?: RunOptions) {\n if (options?.stdin === undefined) return yield* runCommand(command, options)\n if (command._tag !== \"StandardCommand\") {\n return yield* new AppProcessError({\n command: describeCommand(command),\n cause: new Error(\"stdin option only supports StandardCommand; received PipedCommand\"),\n })\n }\n const next = ChildProcess.make(command.command, command.args, {\n ...command.options,\n stdin: normalizeStdin(options.stdin),\n })\n return yield* runCommand(next, options)\n })\n\n const runStream = (\n command: ChildProcess.Command,\n options?: RunStreamOptions,\n ): Stream.Stream<string, AppProcessError> => {\n const description = describeCommand(command)\n const okExitCodes = options?.okExitCodes\n const built: Stream.Stream<string, AppProcessError | PlatformError> = Stream.unwrap(\n Effect.gen(function* () {\n const handle = yield* spawner.spawn(command)\n const stderrFiber = yield* Effect.forkScoped(\n collectStream(handle.stderr, options?.maxErrorBytes).pipe(Effect.map((x) => x.buffer.toString(\"utf8\"))),\n )\n const source = options?.includeStderr === true ? handle.all : handle.stdout\n const lines = source.pipe(\n Stream.decodeText,\n Stream.splitLines,\n Stream.filter((line) => line.length > 0),\n )\n const tail = Stream.unwrap(\n Effect.gen(function* () {\n const code = yield* handle.exitCode\n if (okExitCodes && okExitCodes.length > 0 && !okExitCodes.includes(code)) {\n const stderr = yield* Fiber.join(stderrFiber)\n return Stream.fail(new AppProcessError({ command: description, exitCode: code, stderr }))\n }\n return Stream.empty\n }),\n )\n return Stream.concat(lines, tail) as Stream.Stream<string, AppProcessError | PlatformError>\n }),\n )\n const mapped = built.pipe(\n Stream.catch((cause): Stream.Stream<string, AppProcessError> => Stream.fail(wrapError(description, cause))),\n )\n if (!options?.signal) return mapped\n const signal = options.signal\n return mapped.pipe(\n Stream.interruptWhen(waitForAbort(signal).pipe(Effect.mapError((cause) => wrapError(description, cause)))),\n )\n }\n\n return Service.of({ ...spawner, run, runStream })\n }),\n)\n\nexport const node = makeGlobalNode({ service: Service, layer: layer, deps: [CrossSpawnSpawner.node] })\n\nexport * as AppProcess from \"./process.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8BD4AFBF3F4C0EA864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "25A59142213E177864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "DF277B9E7C639E3864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+perplexity@3.0.26+d6123d32214422cb/node_modules/@ai-sdk/perplexity/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/perplexity-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/perplexity-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/convert-perplexity-usage.ts\nfunction convertPerplexityUsage(usage) {\n var _a, _b, _c;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = (_a = usage.prompt_tokens) != null ? _a : 0;\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = (_c = usage.reasoning_tokens) != null ? _c : 0;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: usage\n };\n}\n\n// src/convert-to-perplexity-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToPerplexityMessages(prompt) {\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\":\n case \"assistant\": {\n const hasMultipartContent = content.some(\n (part) => part.type === \"file\" && part.mediaType.startsWith(\"image/\") || part.type === \"file\" && part.mediaType === \"application/pdf\"\n );\n const messageContent = content.map((part, index) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return {\n type: \"text\",\n text: part.text\n };\n }\n case \"file\": {\n if (part.mediaType === \"application/pdf\") {\n return part.data instanceof URL ? {\n type: \"file_url\",\n file_url: {\n url: part.data.toString()\n },\n file_name: part.filename\n } : {\n type: \"file_url\",\n file_url: {\n url: typeof part.data === \"string\" ? part.data : convertUint8ArrayToBase64(part.data)\n },\n file_name: part.filename || `document-${index}.pdf`\n };\n } else if (part.mediaType.startsWith(\"image/\")) {\n return part.data instanceof URL ? {\n type: \"image_url\",\n image_url: {\n url: part.data.toString()\n }\n } : {\n type: \"image_url\",\n image_url: {\n url: `data:${(_a = part.mediaType) != null ? _a : \"image/jpeg\"};base64,${typeof part.data === \"string\" ? part.data : convertUint8ArrayToBase64(part.data)}`\n }\n };\n }\n }\n }\n }).filter(Boolean);\n messages.push({\n role,\n content: hasMultipartContent ? messageContent : messageContent.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\")\n });\n break;\n }\n case \"tool\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"Tool messages\"\n });\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/map-perplexity-finish-reason.ts\nfunction mapPerplexityFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n case \"length\":\n return finishReason;\n default:\n return \"other\";\n }\n}\n\n// src/perplexity-language-model.ts\nvar PerplexityLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.provider = \"perplexity\";\n this.supportedUrls = {\n // No URLs are supported.\n };\n this.modelId = modelId;\n this.config = config;\n }\n getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions\n }) {\n var _a;\n const warnings = [];\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n if (stopSequences != null) {\n warnings.push({ type: \"unsupported\", feature: \"stopSequences\" });\n }\n if (seed != null) {\n warnings.push({ type: \"unsupported\", feature: \"seed\" });\n }\n return {\n args: {\n // model id:\n model: this.modelId,\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? {\n type: \"json_schema\",\n json_schema: { schema: responseFormat.schema }\n } : void 0,\n // provider extensions\n ...(_a = providerOptions == null ? void 0 : providerOptions.perplexity) != null ? _a : {},\n // messages:\n messages: convertToPerplexityMessages(prompt)\n },\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n const { args: body, warnings } = this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: \"text\", text });\n }\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: \"source\",\n sourceType: \"url\",\n id: this.config.generateId(),\n url\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: (_a = choice.finish_reason) != null ? _a : void 0\n },\n usage: convertPerplexityUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images: (_c = (_b = response.images) == null ? void 0 : _b.map((image) => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width\n }))) != null ? _c : null,\n usage: {\n citationTokens: (_e = (_d = response.usage) == null ? void 0 : _d.citation_tokens) != null ? _e : null,\n numSearchQueries: (_g = (_f = response.usage) == null ? void 0 : _f.num_search_queries) != null ? _g : null\n },\n cost: ((_h = response.usage) == null ? void 0 : _h.cost) ? {\n inputTokensCost: (_i = response.usage.cost.input_tokens_cost) != null ? _i : null,\n outputTokensCost: (_j = response.usage.cost.output_tokens_cost) != null ? _j : null,\n requestCost: (_k = response.usage.cost.request_cost) != null ? _k : null,\n totalCost: (_l = response.usage.cost.total_cost) != null ? _l : null\n } : null\n }\n }\n };\n }\n async doStream(options) {\n const { args, warnings } = this.getArgs(options);\n const body = { ...args, stream: true };\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n const providerMetadata = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null\n },\n cost: null,\n images: null\n }\n };\n let isFirstChunk = true;\n let isActive = false;\n const self = this;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (isFirstChunk) {\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n (_a = value.citations) == null ? void 0 : _a.forEach((url) => {\n controller.enqueue({\n type: \"source\",\n sourceType: \"url\",\n id: self.config.generateId(),\n url\n });\n });\n isFirstChunk = false;\n }\n if (value.usage != null) {\n usage = value.usage;\n providerMetadata.perplexity.usage = {\n citationTokens: (_b = value.usage.citation_tokens) != null ? _b : null,\n numSearchQueries: (_c = value.usage.num_search_queries) != null ? _c : null\n };\n providerMetadata.perplexity.cost = value.usage.cost ? {\n inputTokensCost: (_d = value.usage.cost.input_tokens_cost) != null ? _d : null,\n outputTokensCost: (_e = value.usage.cost.output_tokens_cost) != null ? _e : null,\n requestCost: (_f = value.usage.cost.request_cost) != null ? _f : null,\n totalCost: (_g = value.usage.cost.total_cost) != null ? _g : null\n } : null;\n }\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map((image) => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width\n }));\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n const textContent = delta.content;\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: \"text-start\", id: \"0\" });\n isActive = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"0\",\n delta: textContent\n });\n }\n },\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertPerplexityUsage(usage),\n providerMetadata\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1e3)\n };\n}\nvar perplexityCostSchema = z.object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n total_cost: z.number().nullish()\n});\nvar perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n cost: perplexityCostSchema.nullish()\n});\nvar perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: z.number()\n});\nvar perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal(\"assistant\"),\n content: z.string()\n }),\n finish_reason: z.string().nullish()\n })\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish()\n});\nvar perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal(\"assistant\"),\n content: z.string()\n }),\n finish_reason: z.string().nullish()\n })\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish()\n});\nvar perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish()\n })\n});\nvar errorToMessage = (data) => {\n var _a, _b;\n return (_b = (_a = data.error.message) != null ? _a : data.error.type) != null ? _b : \"unknown error\";\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.26\" : \"0.0.0-test\";\n\n// src/perplexity-provider.ts\nfunction createPerplexity(options = {}) {\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"PERPLEXITY_API_KEY\",\n description: \"Perplexity\"\n })}`,\n ...options.headers\n },\n `ai-sdk/perplexity/${VERSION}`\n );\n const createLanguageModel = (modelId) => {\n var _a;\n return new PerplexityLanguageModel(modelId, {\n baseURL: withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.perplexity.ai\"\n ),\n headers: getHeaders,\n generateId,\n fetch: options.fetch\n });\n };\n const provider = (modelId) => createLanguageModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar perplexity = createPerplexity();\nexport {\n VERSION,\n createPerplexity,\n perplexity\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F91D21DF87384FCA64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/content.ts"], | ||
| "sourcesContent": [ | ||
| "export function normalizePromptContent(content: string) {\n if (content.endsWith(\"\\r\\n\")) {\n const body = content.slice(0, -2)\n return !body.includes(\"\\n\") && !body.includes(\"\\r\") ? body : content\n }\n\n if (content.endsWith(\"\\n\")) {\n const body = content.slice(0, -1)\n return !body.includes(\"\\n\") && !body.includes(\"\\r\") ? body : content\n }\n\n return content\n}\n" | ||
| ], | ||
| "mappings": ";AAAO,SAAS,CAAsB,CAAC,EAAiB,CACtD,GAAI,EAAQ,SAAS;AAAA,CAAM,EAAG,CAC5B,IAAM,EAAO,EAAQ,MAAM,EAAG,EAAE,EAChC,MAAO,CAAC,EAAK,SAAS;AAAA,CAAI,GAAK,CAAC,EAAK,SAAS,IAAI,EAAI,EAAO,EAG/D,GAAI,EAAQ,SAAS;AAAA,CAAI,EAAG,CAC1B,IAAM,EAAO,EAAQ,MAAM,EAAG,EAAE,EAChC,MAAO,CAAC,EAAK,SAAS;AAAA,CAAI,GAAK,CAAC,EAAK,SAAS,IAAI,EAAI,EAAO,EAG/D,OAAO", | ||
| "debugId": "3E56DD35C460C64764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/auth.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport {\n OpenCode,\n type IntegrationAttemptStatus,\n type IntegrationOAuthMethod,\n type OpenCodeClient,\n} from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { resolveIntegration } from \"./resolve\"\n\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.auth,\n Effect.fn(\"cli.mcp.auth\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n\n const integration = yield* resolveIntegration(client, input.name, location)\n if (!integration)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" is not an OAuth-capable remote server`))\n const method = integration.methods.find(\n (candidate): candidate is IntegrationOAuthMethod => candidate.type === \"oauth\",\n )\n if (!method)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" is not an OAuth-capable remote server`))\n\n const started = yield* Effect.promise(() =>\n client.integration.oauth.connect({ integrationID: integration.id, methodID: method.id, location }),\n )\n const attempt = started.data\n if (attempt.mode === \"code\")\n return yield* Effect.fail(new Error(\"This server requires manual code entry, which the CLI does not support\"))\n\n process.stdout.write(attempt.instructions + EOL + attempt.url + EOL)\n\n const result = yield* poll(client, integration.id, attempt.attemptID)\n if (result.status === \"complete\") {\n process.stdout.write(`Authenticated with ${input.name}` + EOL)\n return\n }\n const reason = result.status === \"failed\" ? `: ${result.message}` : \"\"\n return yield* Effect.fail(new Error(`Authentication ${result.status}${reason}`))\n }),\n)\n\nconst poll = (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n): Effect.Effect<Exclude<IntegrationAttemptStatus, { status: \"pending\" }>> =>\n Effect.gen(function* () {\n const status = yield* Effect.promise(() =>\n client.integration.oauth.status({ integrationID, attemptID, location }),\n ).pipe(Effect.map((result) => result.data))\n if (status.status === \"pending\") {\n yield* Effect.sleep(\"1 second\")\n return yield* poll(client, integrationID, attemptID)\n }\n return status\n })\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAcT,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAE7B,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,KAC/B,EAAO,GAAG,cAAc,EAAE,SAAU,CAAC,EAAO,CAC1C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,EAAc,MAAO,EAAmB,EAAQ,EAAM,KAAM,CAAQ,EAC1E,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,eAAe,EAAM,6CAA6C,CAAC,EACzG,IAAM,EAAS,EAAY,QAAQ,KACjC,CAAC,IAAmD,EAAU,OAAS,OACzE,EACA,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,eAAe,EAAM,6CAA6C,CAAC,EAKzG,IAAM,GAHU,MAAO,EAAO,QAAQ,IACpC,EAAO,YAAY,MAAM,QAAQ,CAAE,cAAe,EAAY,GAAI,SAAU,EAAO,GAAI,UAAS,CAAC,CACnG,GACwB,KACxB,GAAI,EAAQ,OAAS,OACnB,OAAO,MAAO,EAAO,KAAS,MAAM,wEAAwE,CAAC,EAE/G,QAAQ,OAAO,MAAM,EAAQ,aAAe,EAAM,EAAQ,IAAM,CAAG,EAEnE,IAAM,EAAS,MAAO,EAAK,EAAQ,EAAY,GAAI,EAAQ,SAAS,EACpE,GAAI,EAAO,SAAW,WAAY,CAChC,QAAQ,OAAO,MAAM,sBAAsB,EAAM,OAAS,CAAG,EAC7D,OAEF,IAAM,EAAS,EAAO,SAAW,SAAW,KAAK,EAAO,UAAY,GACpE,OAAO,MAAO,EAAO,KAAS,MAAM,kBAAkB,EAAO,SAAS,GAAQ,CAAC,EAChF,CACH,EAEM,EAAO,CACX,EACA,EACA,IAEA,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAS,MAAO,EAAO,QAAQ,IACnC,EAAO,YAAY,MAAM,OAAO,CAAE,gBAAe,YAAW,UAAS,CAAC,CACxE,EAAE,KAAK,EAAO,IAAI,CAAC,IAAW,EAAO,IAAI,CAAC,EAC1C,GAAI,EAAO,SAAW,UAEpB,OADA,MAAO,EAAO,MAAM,UAAU,EACvB,MAAO,EAAK,EAAQ,EAAe,CAAS,EAErD,OAAO,EACR", | ||
| "debugId": "169E48FB55C9B58764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-compatible-responses.ts", "../ai/src/providers/google-vertex-responses.ts"], | ||
| "sourcesContent": [ | ||
| "import { Route, type RouteRoutedLanguageModelInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { OpenResponses } from \"./open-responses.js\"\n\nconst ADAPTER = \"openai-compatible-responses\"\n\nexport type OpenAICompatibleResponsesLanguageModelInput = RouteRoutedLanguageModelInput\n\n/**\n * Deployment adapter for providers that expose an Open Responses-compatible\n * `/responses` endpoint. Provider helpers configure identity, endpoint, and\n * auth while the semantic protocol remains provider-neutral.\n */\nexport const route = Route.make({\n id: ADAPTER,\n providerMetadataKey: \"openresponses\",\n protocol: OpenResponses.protocol,\n endpoint: Endpoint.path(OpenResponses.PATH),\n transport: OpenResponses.httpTransport,\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nexport * as OpenAICompatibleResponses from \"./openai-compatible-responses.js\"\n", | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAICompatibleResponses } from \"../protocols/openai-compatible-responses.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\nimport type { OpenResponsesProviderOptionsInput } from \"./open-responses-options.js\"\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenResponsesProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenResponsesProviderOptionsInput\n}\n\nconst route = OpenAICompatibleResponses.route.with({\n id: \"google-vertex-responses\",\n provider: id,\n providerOptions: { store: false },\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined)\n throw new Error(\"Google Vertex Responses does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenResponsesProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenResponsesProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Responses does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";2nBAIA,IAAM,EAAU,8BASH,EAAQ,EAAM,KAAK,CAC9B,GAAI,EACJ,oBAAqB,gBACrB,SAAU,EAAc,SACxB,SAAU,EAAS,KAAK,EAAc,IAAI,EAC1C,UAAW,EAAc,cACzB,SAAU,CAAE,gBAAiB,CAAE,MAAO,GAAO,QAAS,CAAC,6BAA6B,CAAE,CAAE,CAC1F,CAAC,ECbM,IAAM,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAA0B,MAAM,KAAK,CACjD,GAAI,0BACJ,SAAU,EACV,gBAAiB,CAAE,MAAO,EAAM,CAClC,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OACxC,MAAU,MAAM,mDAAmD,EACrE,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,iDAAiD,EAAmB,eAAe,CAAO,eAAe,qBAC7G,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAAyC,CAAE,GAAI,CAAQ,CAAC,EACpG,WACF,GAQK,IAAM,EAA0F,CACrG,EACA,IACG,CACH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,mDAAmD,EACtG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "D0B4DC838350C05864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+cohere@3.0.27+d6123d32214422cb/node_modules/@ai-sdk/cohere/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/cohere-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/cohere-chat-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/cohere-chat-options.ts\nimport { z } from \"zod/v4\";\nvar cohereLanguageModelOptions = z.object({\n /**\n * Configuration for reasoning features (optional)\n *\n * Can be set to an object with the two properties `type` and `tokenBudget`. `type` can be set to `'enabled'` or `'disabled'` (defaults to `'enabled'`).\n * `tokenBudget` is the maximum number of tokens the model can use for thinking, which must be set to a positive integer. The model will stop thinking if it reaches the thinking token budget and will proceed with the response\n *\n * @see https://docs.cohere.com/reference/chat#request.body.thinking\n */\n thinking: z.object({\n type: z.enum([\"enabled\", \"disabled\"]).optional(),\n tokenBudget: z.number().optional()\n }).optional()\n});\n\n// src/cohere-error.ts\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar cohereErrorDataSchema = z2.object({\n message: z2.string()\n});\nvar cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: (data) => data.message\n});\n\n// src/cohere-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n tools,\n toolChoice\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const cohereTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n } else {\n cohereTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n return { tools: cohereTools, toolChoice: void 0, toolWarnings };\n case \"none\":\n return { tools: cohereTools, toolChoice: \"NONE\", toolWarnings };\n case \"required\":\n return { tools: cohereTools, toolChoice: \"REQUIRED\", toolWarnings };\n case \"tool\":\n return {\n tools: cohereTools.filter(\n (tool) => tool.function.name === toolChoice.toolName\n ),\n toolChoice: \"REQUIRED\",\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/convert-cohere-usage.ts\nfunction convertCohereUsage(tokens) {\n if (tokens == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const inputTokens = tokens.input_tokens;\n const outputTokens = tokens.output_tokens;\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: void 0\n },\n raw: tokens\n };\n}\n\n// src/convert-to-cohere-chat-prompt.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction convertToCohereChatPrompt(prompt) {\n const messages = [];\n const documents = [];\n const warnings = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return part.text;\n }\n case \"file\": {\n let textContent;\n if (typeof part.data === \"string\") {\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n if (!(((_a = part.mediaType) == null ? void 0 : _a.startsWith(\"text/\")) || part.mediaType === \"application/json\")) {\n throw new UnsupportedFunctionalityError2({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError2({\n functionality: \"File URL data\",\n message: \"URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.\"\n });\n }\n documents.push({\n data: {\n text: textContent,\n title: part.filename\n }\n });\n return \"\";\n }\n }\n }).join(\"\")\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: toolCalls.length > 0 ? void 0 : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0,\n tool_plan: void 0\n });\n break;\n }\n case \"tool\": {\n messages.push(\n ...content.filter((toolResult) => toolResult.type !== \"tool-approval-response\").map((toolResult) => {\n var _a;\n const output = toolResult.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n return {\n role: \"tool\",\n content: contentValue,\n tool_call_id: toolResult.toolCallId\n };\n })\n );\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return { messages, documents, warnings };\n}\n\n// src/map-cohere-finish-reason.ts\nfunction mapCohereFinishReason(finishReason) {\n switch (finishReason) {\n case \"COMPLETE\":\n case \"STOP_SEQUENCE\":\n return \"stop\";\n case \"MAX_TOKENS\":\n return \"length\";\n case \"ERROR\":\n return \"error\";\n case \"TOOL_CALL\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/cohere-chat-language-model.ts\nvar CohereChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n // No URLs are supported.\n };\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions\n }) {\n var _a, _b;\n const cohereOptions = (_a = await parseProviderOptions({\n provider: \"cohere\",\n providerOptions,\n schema: cohereLanguageModelOptions\n })) != null ? _a : {};\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings\n } = convertToCohereChatPrompt(prompt);\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings\n } = prepareTools({ tools, toolChoice });\n return {\n args: {\n // model id:\n model: this.modelId,\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? { type: \"json_object\", json_schema: responseFormat.schema } : void 0,\n // messages:\n messages: chatPrompt,\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n // documents for RAG:\n ...cohereDocuments.length > 0 && { documents: cohereDocuments },\n // reasoning\n ...cohereOptions.thinking && {\n thinking: {\n type: (_b = cohereOptions.thinking.type) != null ? _b : \"enabled\",\n token_budget: cohereOptions.thinking.tokenBudget\n }\n }\n },\n warnings: [...toolWarnings, ...promptWarnings]\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { args, warnings } = await this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const content = [];\n for (const item of (_a = response.message.content) != null ? _a : []) {\n if (item.type === \"text\" && item.text.length > 0) {\n content.push({ type: \"text\", text: item.text });\n continue;\n }\n if (item.type === \"thinking\" && item.thinking.length > 0) {\n content.push({ type: \"reasoning\", text: item.thinking });\n continue;\n }\n }\n for (const citation of (_b = response.message.citations) != null ? _b : []) {\n content.push({\n type: \"source\",\n sourceType: \"document\",\n id: this.config.generateId(),\n mediaType: \"text/plain\",\n title: ((_d = (_c = citation.sources[0]) == null ? void 0 : _c.document) == null ? void 0 : _d.title) || \"Document\",\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...citation.type && { citationType: citation.type }\n }\n }\n });\n }\n for (const toolCall of (_e = response.message.tool_calls) != null ? _e : []) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, \"{}\")\n });\n }\n return {\n content,\n finishReason: {\n unified: mapCohereFinishReason(response.finish_reason),\n raw: (_f = response.finish_reason) != null ? _f : void 0\n },\n usage: convertCohereUsage(response.usage.tokens),\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: (_g = response.generation_id) != null ? _g : void 0,\n headers: responseHeaders,\n body: rawResponse\n },\n warnings\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let pendingToolCall = null;\n let isActiveReasoning = false;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n finishReason = { unified: \"error\", raw: void 0 };\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n const type = value.type;\n switch (type) {\n case \"content-start\": {\n if (value.delta.message.content.type === \"thinking\") {\n controller.enqueue({\n type: \"reasoning-start\",\n id: String(value.index)\n });\n isActiveReasoning = true;\n return;\n }\n controller.enqueue({\n type: \"text-start\",\n id: String(value.index)\n });\n return;\n }\n case \"content-delta\": {\n if (\"thinking\" in value.delta.message.content) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: String(value.index),\n delta: value.delta.message.content.thinking\n });\n return;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: String(value.index),\n delta: value.delta.message.content.text\n });\n return;\n }\n case \"content-end\": {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: String(value.index)\n });\n isActiveReasoning = false;\n return;\n }\n controller.enqueue({\n type: \"text-end\",\n id: String(value.index)\n });\n return;\n }\n case \"tool-call-start\": {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs = value.delta.message.tool_calls.function.arguments;\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false\n };\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolId,\n toolName\n });\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolId,\n delta: initialArgs\n });\n }\n return;\n }\n case \"tool-call-delta\": {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta = value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n controller.enqueue({\n type: \"tool-input-delta\",\n id: pendingToolCall.id,\n delta: argsDelta\n });\n }\n return;\n }\n case \"tool-call-end\": {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: pendingToolCall.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(((_a = pendingToolCall.arguments) == null ? void 0 : _a.trim()) || \"{}\")\n )\n });\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n case \"message-start\": {\n controller.enqueue({\n type: \"response-metadata\",\n id: (_b = value.id) != null ? _b : void 0\n });\n return;\n }\n case \"message-end\": {\n finishReason = {\n unified: mapCohereFinishReason(value.delta.finish_reason),\n raw: value.delta.finish_reason\n };\n usage = value.delta.usage.tokens;\n return;\n }\n default: {\n return;\n }\n }\n },\n flush(controller) {\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertCohereUsage(usage)\n });\n }\n })\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders }\n };\n }\n};\nvar cohereChatResponseSchema = z3.object({\n generation_id: z3.string().nullish(),\n message: z3.object({\n role: z3.string(),\n content: z3.array(\n z3.union([\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.string()\n })\n ])\n ).nullish(),\n tool_plan: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n ).nullish(),\n citations: z3.array(\n z3.object({\n start: z3.number(),\n end: z3.number(),\n text: z3.string(),\n sources: z3.array(\n z3.object({\n type: z3.string().optional(),\n id: z3.string().optional(),\n document: z3.object({\n id: z3.string().optional(),\n text: z3.string(),\n title: z3.string()\n })\n })\n ),\n type: z3.string().optional()\n })\n ).nullish()\n }),\n finish_reason: z3.string(),\n usage: z3.object({\n billed_units: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n }),\n tokens: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n })\n })\n});\nvar cohereChatChunkSchema = z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"citation-start\")\n }),\n z3.object({\n type: z3.literal(\"citation-end\")\n }),\n z3.object({\n type: z3.literal(\"content-start\"),\n index: z3.number(),\n delta: z3.object({\n message: z3.object({\n content: z3.union([\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.string()\n })\n ])\n })\n })\n }),\n z3.object({\n type: z3.literal(\"content-delta\"),\n index: z3.number(),\n delta: z3.object({\n message: z3.object({\n content: z3.union([\n z3.object({\n text: z3.string()\n }),\n z3.object({\n thinking: z3.string()\n })\n ])\n })\n })\n }),\n z3.object({\n type: z3.literal(\"content-end\"),\n index: z3.number()\n }),\n z3.object({\n type: z3.literal(\"message-start\"),\n id: z3.string().nullish()\n }),\n z3.object({\n type: z3.literal(\"message-end\"),\n delta: z3.object({\n finish_reason: z3.string(),\n usage: z3.object({\n tokens: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n })\n })\n })\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z3.object({\n type: z3.literal(\"tool-plan-delta\"),\n delta: z3.object({\n message: z3.object({\n tool_plan: z3.string()\n })\n })\n }),\n z3.object({\n type: z3.literal(\"tool-call-start\"),\n delta: z3.object({\n message: z3.object({\n tool_calls: z3.object({\n id: z3.string(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n })\n })\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z3.object({\n type: z3.literal(\"tool-call-delta\"),\n delta: z3.object({\n message: z3.object({\n tool_calls: z3.object({\n function: z3.object({\n arguments: z3.string()\n })\n })\n })\n })\n }),\n z3.object({\n type: z3.literal(\"tool-call-end\")\n })\n]);\n\n// src/cohere-embedding-model.ts\nimport {\n TooManyEmbeddingValuesForCallError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders as combineHeaders2,\n createJsonResponseHandler as createJsonResponseHandler2,\n parseProviderOptions as parseProviderOptions2,\n postJsonToApi as postJsonToApi2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\n\n// src/cohere-embedding-options.ts\nimport { z as z4 } from \"zod/v4\";\nvar cohereEmbeddingModelOptions = z4.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z4.enum([\"search_document\", \"search_query\", \"classification\", \"clustering\"]).optional(),\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z4.enum([\"NONE\", \"START\", \"END\"]).optional(),\n /**\n * The number of dimensions of the output embedding.\n * Only available for `embed-v4.0` and newer models.\n *\n * Possible values are `256`, `512`, `1024`, and `1536`.\n * The default is `1536`.\n */\n outputDimension: z4.union([z4.literal(256), z4.literal(512), z4.literal(1024), z4.literal(1536)]).optional()\n});\n\n// src/cohere-embedding-model.ts\nvar CohereEmbeddingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.maxEmbeddingsPerCall = 96;\n this.supportsParallelCalls = true;\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions\n }) {\n var _a;\n const embeddingOptions = await parseProviderOptions2({\n provider: \"cohere\",\n providerOptions,\n schema: cohereEmbeddingModelOptions\n });\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi2({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings. Note that the Cohere API\n // supports other embedding types, but they are not currently supported by the AI SDK.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: [\"float\"],\n texts: values,\n input_type: (_a = embeddingOptions == null ? void 0 : embeddingOptions.inputType) != null ? _a : \"search_query\",\n truncate: embeddingOptions == null ? void 0 : embeddingOptions.truncate,\n output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n cohereTextEmbeddingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n warnings: [],\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue }\n };\n }\n};\nvar cohereTextEmbeddingResponseSchema = z5.object({\n embeddings: z5.object({\n float: z5.array(z5.array(z5.number()))\n }),\n meta: z5.object({\n billed_units: z5.object({\n input_tokens: z5.number()\n })\n })\n});\n\n// src/reranking/cohere-reranking-model.ts\nimport {\n combineHeaders as combineHeaders3,\n createJsonResponseHandler as createJsonResponseHandler3,\n parseProviderOptions as parseProviderOptions3,\n postJsonToApi as postJsonToApi3\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/cohere-reranking-api.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar cohereRerankingResponseSchema = lazySchema(\n () => zodSchema(\n z6.object({\n id: z6.string().nullish(),\n results: z6.array(\n z6.object({\n index: z6.number(),\n relevance_score: z6.number()\n })\n ),\n meta: z6.any()\n })\n )\n);\n\n// src/reranking/cohere-reranking-options.ts\nimport { lazySchema as lazySchema2, zodSchema as zodSchema2 } from \"@ai-sdk/provider-utils\";\nimport { z as z7 } from \"zod/v4\";\nvar cohereRerankingModelOptionsSchema = lazySchema2(\n () => zodSchema2(\n z7.object({\n maxTokensPerDoc: z7.number().optional(),\n priority: z7.number().optional()\n })\n )\n);\n\n// src/reranking/cohere-reranking-model.ts\nvar CohereRerankingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n // current implementation is based on v2 of the API: https://docs.cohere.com/v2/reference/rerank\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions\n }) {\n var _a;\n const rerankingOptions = await parseProviderOptions3({\n provider: \"cohere\",\n providerOptions,\n schema: cohereRerankingModelOptionsSchema\n });\n const warnings = [];\n if (documents.type === \"object\") {\n warnings.push({\n type: \"compatibility\",\n feature: \"object documents\",\n details: \"Object documents are converted to strings.\"\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi3({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders3(this.config.headers(), headers),\n body: {\n model: this.modelId,\n query,\n documents: documents.type === \"text\" ? documents.values : documents.values.map((value) => JSON.stringify(value)),\n top_n: topN,\n max_tokens_per_doc: rerankingOptions == null ? void 0 : rerankingOptions.maxTokensPerDoc,\n priority: rerankingOptions == null ? void 0 : rerankingOptions.priority\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler3(\n cohereRerankingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n ranking: response.results.map((result) => ({\n index: result.index,\n relevanceScore: result.relevance_score\n })),\n warnings,\n response: {\n id: (_a = response.id) != null ? _a : void 0,\n headers: responseHeaders,\n body: rawValue\n }\n };\n }\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.27\" : \"0.0.0-test\";\n\n// src/cohere-provider.ts\nfunction createCohere(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.cohere.com/v2\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"COHERE_API_KEY\",\n description: \"Cohere\"\n })}`,\n ...options.headers\n },\n `ai-sdk/cohere/${VERSION}`\n );\n const createChatModel = (modelId) => {\n var _a2;\n return new CohereChatLanguageModel(modelId, {\n provider: \"cohere.chat\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: (_a2 = options.generateId) != null ? _a2 : generateId\n });\n };\n const createEmbeddingModel = (modelId) => new CohereEmbeddingModel(modelId, {\n provider: \"cohere.textEmbedding\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createRerankingModel = (modelId) => new CohereRerankingModel(modelId, {\n provider: \"cohere.reranking\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const provider = function(modelId) {\n if (new.target) {\n throw new Error(\n \"The Cohere model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar cohere = createCohere();\nexport {\n VERSION,\n cohere,\n createCohere\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "C27916C7A4324B4E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/shared.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport { OpenCode, type IntegrationInfo, type IntegrationMethod, type OpenCodeClient } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServerConnection } from \"../../../services/server-connection\"\n\nexport const location = { directory: process.cwd() }\n\nexport const createClient = Effect.fn(\"cli.auth.client\")(function* (input: ServerConnection.Args) {\n const server = yield* ServerConnection.resolve(input)\n return OpenCode.make({ baseUrl: server.endpoint.url, headers: Service.headers(server.endpoint) })\n})\n\nexport function request<A>(run: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({ try: run, catch: (cause) => cause })\n}\n\nexport const loadIntegrations = Effect.fn(\"cli.auth.integrations\")(function* (client: OpenCodeClient) {\n // The model endpoint is the existing public readiness boundary for the initial plugin generation.\n yield* request((signal) => client.model.default({ location }, { signal }))\n return yield* request((signal) => client.integration.list({ location }, { signal })).pipe(\n Effect.map((response) => response.data),\n )\n})\n\nexport const resolveIntegration = Effect.fn(\"cli.auth.resolve-integration\")(function* (\n integrations: IntegrationInfo[],\n target: string,\n) {\n const normalized = target.replace(/\\/+$/, \"\")\n const byID = integrations.find((integration) => integration.id === normalized)\n if (byID) return byID\n const matches = integrations.filter((integration) => integration.name.toLowerCase() === normalized.toLowerCase())\n if (matches.length === 1) return matches[0]\n if (matches.length > 1) {\n return yield* Effect.fail(\n new Error(\n `Integration name \"${target}\" is ambiguous: ${matches.map((integration) => integration.id).join(\", \")}`,\n ),\n )\n }\n return yield* Effect.fail(new Error(`Integration not found: ${target}`))\n})\n\nexport type ConnectMethod = Exclude<IntegrationMethod, { type: \"env\" }>\n\nexport function connectMethods(integration: IntegrationInfo) {\n return integration.methods\n .filter((method): method is ConnectMethod => method.type !== \"env\")\n .toSorted((a, b) => Number(a.type === \"key\") - Number(b.type === \"key\"))\n}\n\nexport const resolveMethod = Effect.fn(\"cli.auth.resolve-method\")(function* (methods: ConnectMethod[], target: string) {\n const normalized = target.toLowerCase()\n const matches = methods.filter((method) => {\n if (method.type === \"key\") return normalized === \"key\" || method.label?.toLowerCase() === normalized\n return method.id === target || method.label.toLowerCase() === normalized\n })\n if (matches.length === 1) return matches[0]\n if (matches.length > 1) return yield* Effect.fail(new Error(`Authentication method \"${target}\" is ambiguous`))\n const available = methods.map((method) => (method.type === \"key\" ? \"key\" : method.id)).join(\", \")\n return yield* Effect.fail(\n new Error(`Authentication method not found: ${target}${available ? `. Available: ${available}` : \"\"}`),\n )\n})\n" | ||
| ], | ||
| "mappings": ";gNAKO,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAEtC,EAAe,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAA8B,CAChG,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAAK,EACpD,OAAO,EAAS,KAAK,CAAE,QAAS,EAAO,SAAS,IAAK,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAAE,CAAC,EACjG,EAEM,SAAS,CAAU,CAAC,EAA0C,CACnE,OAAO,EAAO,WAAW,CAAE,IAAK,EAAK,MAAO,CAAC,IAAU,CAAM,CAAC,EAGzD,IAAM,EAAmB,EAAO,GAAG,uBAAuB,EAAE,SAAU,CAAC,EAAwB,CAGpG,OADA,MAAO,EAAQ,CAAC,IAAW,EAAO,MAAM,QAAQ,CAAE,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EAClE,MAAO,EAAQ,CAAC,IAAW,EAAO,YAAY,KAAK,CAAE,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EAAE,KACnF,EAAO,IAAI,CAAC,IAAa,EAAS,IAAI,CACxC,EACD,EAEY,EAAqB,EAAO,GAAG,8BAA8B,EAAE,SAAU,CACpF,EACA,EACA,CACA,IAAM,EAAa,EAAO,QAAQ,OAAQ,EAAE,EACtC,EAAO,EAAa,KAAK,CAAC,IAAgB,EAAY,KAAO,CAAU,EAC7E,GAAI,EAAM,OAAO,EACjB,IAAM,EAAU,EAAa,OAAO,CAAC,IAAgB,EAAY,KAAK,YAAY,IAAM,EAAW,YAAY,CAAC,EAChH,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GACzC,GAAI,EAAQ,OAAS,EACnB,OAAO,MAAO,EAAO,KACf,MACF,qBAAqB,oBAAyB,EAAQ,IAAI,CAAC,IAAgB,EAAY,EAAE,EAAE,KAAK,IAAI,GACtG,CACF,EAEF,OAAO,MAAO,EAAO,KAAS,MAAM,0BAA0B,GAAQ,CAAC,EACxE,EAIM,SAAS,CAAc,CAAC,EAA8B,CAC3D,OAAO,EAAY,QAChB,OAAO,CAAC,IAAoC,EAAO,OAAS,KAAK,EACjE,SAAS,CAAC,EAAG,IAAM,OAAO,EAAE,OAAS,KAAK,EAAI,OAAO,EAAE,OAAS,KAAK,CAAC,EAGpE,IAAM,EAAgB,EAAO,GAAG,yBAAyB,EAAE,SAAU,CAAC,EAA0B,EAAgB,CACrH,IAAM,EAAa,EAAO,YAAY,EAChC,EAAU,EAAQ,OAAO,CAAC,IAAW,CACzC,GAAI,EAAO,OAAS,MAAO,OAAO,IAAe,OAAS,EAAO,OAAO,YAAY,IAAM,EAC1F,OAAO,EAAO,KAAO,GAAU,EAAO,MAAM,YAAY,IAAM,EAC/D,EACD,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GACzC,GAAI,EAAQ,OAAS,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,0BAA0B,iBAAsB,CAAC,EAC7G,IAAM,EAAY,EAAQ,IAAI,CAAC,IAAY,EAAO,OAAS,MAAQ,MAAQ,EAAO,EAAG,EAAE,KAAK,IAAI,EAChG,OAAO,MAAO,EAAO,KACf,MAAM,oCAAoC,IAAS,EAAY,gBAAgB,IAAc,IAAI,CACvG,EACD", | ||
| "debugId": "026284FE5606441C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/server-process.ts", "src/services/service-registration.ts", "src/services/web-ui.ts", "src/app-assets.ts", "src/commands/handlers/serve.ts"], | ||
| "sourcesContent": [ | ||
| "export * as ServerProcess from \"./server-process\"\n\nimport { NodeServices } from \"@effect/platform-node\"\nimport { Service, type DiscoverOptions } from \"@opencode-ai/client/effect/service\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { OPENCODE_CHANNEL, OPENCODE_VERSION } from \"./version\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { randomBytes, randomUUID } from \"node:crypto\"\nimport { Effect, Option, Redacted, Schedule } from \"effect\"\nimport { HttpServer } from \"effect/unstable/http\"\nimport { Env } from \"./env\"\nimport { ServiceConfig } from \"./services/service-config\"\nimport { ServiceRegistration } from \"./services/service-registration\"\nimport { Updater } from \"./services/updater\"\nimport { WebUi } from \"./services/web-ui\"\n\nexport type Mode = \"default\" | \"service\" | \"stdio\"\n\nexport type Options = {\n readonly mode: Mode\n readonly hostname?: string\n readonly port?: number\n}\n\n// The process effect lives until server shutdown; tracing it would parent every request to one process-lifetime trace.\nexport const run = Effect.fnUntraced(function* (options: Options) {\n return yield* processEffect(options).pipe(\n Effect.provide(Updater.layer),\n Effect.provide(\n LayerNode.compile(LayerNode.group([Global.node, AppProcess.node]), [\n [\n Global.node,\n Global.layerWith(process.env.OPENCODE_CONFIG_DIR ? { config: process.env.OPENCODE_CONFIG_DIR } : {}),\n ],\n ]),\n ),\n Effect.provide(NodeServices.layer),\n )\n})\n\nconst processEffect = Effect.fnUntraced(function* (options: Options) {\n const global = yield* Global.Service\n if (options.mode === \"service\") yield* Effect.sync(() => process.chdir(global.home))\n return yield* Effect.scoped(\n Effect.gen(function* () {\n const foreground = options.mode === \"default\"\n const serviceOptions = options.mode === \"service\" ? yield* ServiceConfig.options() : undefined\n const config = options.mode === \"service\" ? yield* ServiceConfig.read() : {}\n const hostname = options.hostname ?? config.hostname ?? \"127.0.0.1\"\n const port = options.port ?? config.port ?? (options.mode === \"service\" ? ServiceConfig.defaultPort() : undefined)\n const incumbent =\n serviceOptions !== undefined && port !== undefined\n ? yield* Service.incumbent({ ...serviceOptions, url: serviceURL(hostname, port) })\n : undefined\n if (incumbent !== undefined) return\n const { start } = yield* Effect.promise(() => import(\"@opencode-ai/server/process\"))\n const environmentPassword = yield* Env.password\n // Keep the lease credential out of the environment inherited by tools.\n if (options.mode === \"stdio\") {\n delete process.env.OPENCODE_PASSWORD\n delete process.env.OPENCODE_SERVER_PASSWORD\n }\n const password =\n options.mode === \"service\"\n ? config.password || randomBytes(32).toString(\"base64url\")\n : environmentPassword\n ? Redacted.value(environmentPassword)\n : randomBytes(32).toString(\"base64url\")\n if (!password) return yield* Effect.fail(new Error(\"Missing server password\"))\n const instanceID = randomUUID()\n const transform = yield* WebUi.handler()\n const server = yield* start(\n {\n app: {\n name: process.env.OPENCODE_CLIENT ?? \"cli\",\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n },\n hostname,\n port,\n password,\n simulation: truthy(process.env.OPENCODE_SIMULATE),\n database: {\n path:\n process.env.OPENCODE_DB ??\n ([\"latest\", \"dev\", \"beta\", \"next\", \"prod\"].includes(OPENCODE_CHANNEL) ||\n process.env.OPENCODE_DISABLE_CHANNEL_DB === \"1\" ||\n process.env.OPENCODE_DISABLE_CHANNEL_DB === \"true\"\n ? \"opencode.db\"\n : `opencode-${OPENCODE_CHANNEL.replace(/[^a-zA-Z0-9._-]/g, \"-\")}.db`),\n },\n models: {\n url: process.env.OPENCODE_MODELS_URL,\n file: process.env.OPENCODE_MODELS_PATH,\n fetch: !truthy(process.env.OPENCODE_DISABLE_MODELS_FETCH),\n },\n config: {\n directory: process.env.OPENCODE_CONFIG_DIR,\n project: !truthy(\n process.env.OPENCODE_CONFIG_PROJECT_DISABLE ?? process.env.OPENCODE_DISABLE_PROJECT_CONFIG,\n ),\n file: process.env.OPENCODE_CONFIG,\n content: process.env.OPENCODE_CONFIG_CONTENT,\n },\n windows: {\n gitbash: process.env.OPENCODE_GIT_BASH_PATH,\n },\n fs: {\n filewatcher: !truthy(process.env.OPENCODE_FILEWATCHER_DISABLE ?? process.env.OPENCODE_DISABLE_FILEWATCHER),\n fff:\n process.env.OPENCODE_DISABLE_FFF === undefined\n ? process.platform !== \"win32\"\n : !truthy(process.env.OPENCODE_DISABLE_FFF),\n },\n },\n serviceOptions === undefined\n ? undefined\n : {\n onListen: (address, shutdown) =>\n Effect.gen(function* () {\n if (!config.password) yield* ServiceConfig.password(password)\n return yield* ServiceRegistration.register({\n address,\n password,\n id: instanceID,\n file: serviceOptions.file,\n shutdown,\n })\n }),\n },\n transform,\n ).pipe(\n Effect.catch((error) => {\n if (serviceOptions === undefined || port === undefined || !addressInUse(error)) return Effect.fail(error)\n return recognizeIncumbent(serviceOptions, hostname, port).pipe(\n Effect.flatMap((found) =>\n found\n ? Effect.void\n : Effect.fail(\n new Error(\n `Managed service port ${port} on ${hostname} is already in use by another process. ` +\n \"Configure another port with `opencode service set port <port>` and start the service again.\",\n { cause: error },\n ),\n ),\n ),\n )\n }),\n )\n if (server === undefined) return\n const url = HttpServer.formatAddress(server.address)\n console.log(options.mode === \"stdio\" ? JSON.stringify({ url }) : `server listening on ${url}`)\n if (foreground && !environmentPassword) console.log(`server password ${password}`)\n const updater = yield* Updater.Service\n yield* updater.check().pipe(Effect.schedule(Schedule.spaced(\"10 minutes\")), Effect.forkScoped)\n return yield* options.mode === \"service\"\n ? server.shutdown\n : options.mode === \"stdio\"\n ? waitForStdinClose()\n : Effect.never\n }).pipe(Effect.annotateLogs({ role: \"server\" })),\n )\n})\n\nconst recognizeIncumbent = Effect.fnUntraced(function* (options: DiscoverOptions, hostname: string, port: number) {\n const found = yield* Service.incumbent({ ...options, url: serviceURL(hostname, port) }).pipe(\n Effect.filterOrFail((value) => value !== undefined),\n Effect.retry(Schedule.spaced(\"100 millis\")),\n Effect.timeoutOption(\"15 seconds\"),\n )\n return Option.isSome(found)\n})\n\nfunction serviceURL(hostname: string, port: number) {\n return `http://${hostname.includes(\":\") ? `[${hostname}]` : hostname}:${port}`\n}\n\nfunction truthy(value?: string) {\n return value === \"1\" || value?.toLowerCase() === \"true\"\n}\n\nfunction addressInUse(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null) return false\n if (\"code\" in error && error.code === \"EADDRINUSE\") return true\n return \"cause\" in error && addressInUse(error.cause)\n}\n\nfunction waitForStdinClose() {\n return Effect.callback<void>((resume) => {\n const close = () => resume(Effect.void)\n process.stdin.once(\"end\", close)\n process.stdin.once(\"close\", close)\n process.stdin.resume()\n if (process.stdin.readableEnded || process.stdin.destroyed) close()\n return Effect.sync(() => {\n process.stdin.off(\"end\", close)\n process.stdin.off(\"close\", close)\n process.stdin.pause()\n })\n })\n}\n", | ||
| "export * as ServiceRegistration from \"./service-registration\"\n\nimport { Service, type Info } from \"@opencode-ai/client/effect/service\"\nimport path from \"node:path\"\nimport { Effect, FileSystem, Schedule, Schema } from \"effect\"\nimport { HttpServer } from \"effect/unstable/http\"\nimport { OPENCODE_VERSION } from \"../version\"\n\nconst infoJson = Schema.fromJsonString(Service.Info)\nconst encodeInfo = Schema.encodeEffect(infoJson)\nconst decodeInfo = Schema.decodeUnknownEffect(infoJson)\n\nexport const register = Effect.fnUntraced(function* (options: {\n readonly address: HttpServer.Address\n readonly password: string\n readonly id: string\n readonly file: string\n readonly shutdown: Effect.Effect<void>\n}) {\n const fs = yield* FileSystem.FileSystem\n const temp = options.file + \".\" + options.id + \".tmp\"\n yield* fs.makeDirectory(path.dirname(options.file), { recursive: true })\n const info = {\n id: options.id,\n version: OPENCODE_VERSION,\n url: HttpServer.formatAddress(options.address),\n pid: process.pid,\n password: options.password,\n }\n const encoded = yield* encodeInfo(info)\n const current = fs.readFileString(options.file).pipe(Effect.flatMap(decodeInfo))\n const owns = (found: Info) =>\n found.id === info.id &&\n found.version === info.version &&\n found.url === info.url &&\n found.pid === info.pid &&\n found.password === info.password\n yield* fs.writeFileString(temp, encoded, { mode: 0o600 }).pipe(Effect.andThen(fs.rename(temp, options.file)))\n yield* current.pipe(\n Effect.catchCause((cause) =>\n Effect.logWarning(\"managed service registration check failed; shutting down\", {\n cause,\n serviceID: options.id,\n servicePID: process.pid,\n registration: options.file,\n }).pipe(Effect.andThen(Effect.failCause(cause))),\n ),\n Effect.tap((found) =>\n owns(found)\n ? Effect.void\n : Effect.logWarning(\"managed service registration replaced; shutting down\", {\n serviceID: options.id,\n servicePID: process.pid,\n registration: options.file,\n observedServiceID: found.id,\n observedServicePID: found.pid,\n observedVersion: found.version,\n observedURL: found.url,\n }),\n ),\n Effect.filterOrFail(owns),\n Effect.repeat(Schedule.spaced(\"5 seconds\")),\n Effect.ignore,\n Effect.andThen(options.shutdown),\n Effect.forkScoped,\n )\n return current.pipe(\n Effect.flatMap((found) => (owns(found) ? fs.remove(options.file) : Effect.void)),\n Effect.ignore,\n )\n})\n", | ||
| "import { FSUtil } from \"@opencode-ai/util/fs-util\"\nimport { Effect, FileSystem } from \"effect\"\nimport { HttpServerError, HttpServerRequest, HttpServerResponse } from \"effect/unstable/http\"\nimport { createHash } from \"node:crypto\"\nimport { load, type AssetMap } from \"../app-assets\"\n\nexport const handler = Effect.fn(\"cli.web-ui.handler\")(function* (options?: { readonly assets?: AssetMap }) {\n const fileSystem = yield* FileSystem.FileSystem\n const assets = options?.assets\n ? Effect.succeed(options.assets)\n : yield* Effect.cached(load().pipe(Effect.provideService(FileSystem.FileSystem, fileSystem)))\n return <E, R>(api: Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>) =>\n api.pipe(\n Effect.catchIf(isRouteNotFound, () =>\n HttpServerRequest.HttpServerRequest.pipe(\n Effect.flatMap((request) => {\n const url = new URL(request.url, \"http://localhost\")\n if (url.pathname === \"/api\" || url.pathname.startsWith(\"/api/\"))\n return Effect.succeed(HttpServerResponse.empty({ status: 404 }))\n return assets.pipe(Effect.flatMap((files) => serveUI(request, url, files)))\n }),\n ),\n ),\n )\n})\n\nfunction serveUI(request: HttpServerRequest.HttpServerRequest, url: URL, assets: AssetMap) {\n const key = url.pathname.replace(/^\\//, \"\")\n const name = assets[key] !== undefined ? key : \"index.html\"\n const file = assets[name]\n if (!file) return Effect.succeed(HttpServerResponse.empty({ status: 404 }))\n if (request.method !== \"GET\" && request.method !== \"HEAD\")\n return Effect.succeed(HttpServerResponse.empty({ status: 405 }))\n const html = name === \"index.html\"\n const revalidate = html || name === \"sw.js\" || name === \"registerSW.js\"\n const headers = {\n \"content-type\": FSUtil.mimeType(name),\n \"cache-control\": revalidate ? \"no-cache\" : \"public, max-age=31536000, immutable\",\n \"content-security-policy\": html\n ? cspForHtml(typeof file === \"string\" ? file : Buffer.from(file).toString())\n : csp(),\n \"x-content-type-options\": \"nosniff\",\n }\n return Effect.succeed(\n request.method === \"HEAD\"\n ? HttpServerResponse.empty({ headers })\n : HttpServerResponse.raw(file, { headers, contentType: headers[\"content-type\"] }),\n )\n}\n\nfunction isRouteNotFound(error: unknown) {\n return error instanceof HttpServerError.HttpServerError && error.reason._tag === \"RouteNotFound\"\n}\n\nfunction csp(hash = \"\") {\n return `default-src 'self'; script-src 'self' 'wasm-unsafe-eval'${hash ? ` 'sha256-${hash}'` : \"\"}; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; media-src 'self' data:; connect-src * data: blob:`\n}\n\nfunction cspForHtml(body: string) {\n const match = body.match(\n /<script\\b(?![^>]*\\bsrc\\s*=)[^>]*\\bid=([\"'])oc-theme-preload-script\\1[^>]*>([\\s\\S]*?)<\\/script>/i,\n )\n return csp(match ? createHash(\"sha256\").update(match[2]).digest(\"base64\") : \"\")\n}\n\nexport * as WebUi from \"./web-ui\"\n", | ||
| "import { Effect, FileSystem, Option } from \"effect\"\nimport path from \"node:path\"\nimport { brotliDecompressSync } from \"node:zlib\"\nimport { OPENCODE_LOCAL } from \"./version\"\n\nexport type AssetMap = Readonly<Record<string, string | Uint8Array>>\ntype EncodedAssetMap = Readonly<Record<string, { readonly content: string; readonly encoding: \"utf8\" | \"base64\" }>>\n\nexport const load = Effect.fn(\"cli.app-assets.load\")(function* () {\n const embedded = yield* Effect.tryPromise(() => import(\"virtual:opencode-app-assets\")).pipe(Effect.option)\n if (Option.isSome(embedded) && embedded.value.default.length > 0) return decodeArchive(embedded.value.default)\n if (!OPENCODE_LOCAL) return yield* Effect.fail(new Error(\"Web UI assets are missing from the CLI build\"))\n return decode(yield* sourceAssets())\n})\n\nfunction decodeArchive(archive: string) {\n const body = brotliDecompressSync(Buffer.from(archive, \"base64\")).toString()\n return decode(JSON.parse(body) as EncodedAssetMap)\n}\n\nconst sourceAssets = Effect.fnUntraced(function* () {\n const fs = yield* FileSystem.FileSystem\n const root = path.resolve(import.meta.dirname, \"../../app/dist\")\n const files = yield* fs.readDirectory(root, { recursive: true })\n return Object.fromEntries(\n (yield* Effect.forEach(\n files.filter((file) => !file.endsWith(\".map\")),\n Effect.fnUntraced(function* (file) {\n const target = path.join(root, file)\n if ((yield* fs.stat(target)).type === \"Directory\") return\n const body = Buffer.from(yield* fs.readFile(target))\n const encoding = isText(file) ? \"utf8\" : \"base64\"\n return [file, { encoding, content: body.toString(encoding) }] as const\n }),\n { concurrency: \"unbounded\" },\n )).filter((asset) => asset !== undefined),\n )\n})\n\nfunction decode(assets: EncodedAssetMap): AssetMap {\n return Object.fromEntries(\n Object.entries(assets).map(([key, asset]) => [\n key,\n asset.encoding === \"utf8\" ? asset.content : Buffer.from(asset.content, \"base64\"),\n ]),\n )\n}\n\nfunction isText(file: string) {\n return file === \"_headers\" || /\\.(?:css|html|js|json|svg|txt|webmanifest|xml)$/.test(file)\n}\n", | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerProcess } from \"../../server-process\"\n\nexport default Runtime.handler(\n Commands.commands.serve,\n Effect.fnUntraced(function* (input) {\n if (input.service && input.stdio) return yield* Effect.fail(new Error(\"--service and --stdio cannot be combined\"))\n return yield* ServerProcess.run({\n mode: input.service ? \"service\" : input.stdio ? \"stdio\" : \"default\",\n hostname: Option.getOrUndefined(input.hostname),\n port: Option.getOrUndefined(input.port),\n })\n }),\n)\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F4D803603FAFD42B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "28D52151AB3FCC8D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../util/src/session-title-fallback.ts"], | ||
| "sourcesContent": [ | ||
| "export * as SessionTitleFallback from \"./session-title-fallback.js\"\n\nconst pattern = /^(New session|Child session) - \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/\n\ninterface Info {\n readonly title?: string\n readonly parentID?: string\n readonly time: {\n readonly created: number\n }\n}\n\n/** Supplies the timestamped title required by compatibility surfaces. */\nexport function withTimestampedFallback(info: Info) {\n return info.title ?? fallback(info)\n}\n\n/** Supplies a compact human label and collapses historical timestamped fallbacks. */\nexport function displayLabel(info: Pick<Info, \"title\" | \"parentID\">) {\n if (!info.title) return info.parentID ? \"Child session\" : \"New session\"\n return info.title.match(pattern)?.[1] ?? info.title\n}\n\n/** Recognizes missing and historical root or child fallback titles. */\nexport function isFallbackTitle(title?: string) {\n return title === undefined || pattern.test(title)\n}\n\n/** Recognizes a missing title or the exact root fallback for this session. */\nexport function isExactRootFallback(info: Pick<Info, \"title\" | \"time\">) {\n return info.title === undefined || info.title === fallback({ time: info.time })\n}\n\nfunction fallback(info: Pick<Info, \"parentID\" | \"time\">) {\n return `${info.parentID ? \"Child\" : \"New\"} session - ${new Date(info.time.created).toISOString()}`\n}\n" | ||
| ], | ||
| "mappings": ";AAEA,IAAM,EAAU,8EAWT,SAAS,CAAuB,CAAC,EAAY,CAClD,OAAO,EAAK,OAAS,EAAS,CAAI,EAU7B,SAAS,CAAe,CAAC,EAAgB,CAC9C,OAAO,IAAU,QAAa,EAAQ,KAAK,CAAK,EAI3C,SAAS,CAAmB,CAAC,EAAoC,CACtE,OAAO,EAAK,QAAU,QAAa,EAAK,QAAU,EAAS,CAAE,KAAM,EAAK,IAAK,CAAC,EAGhF,SAAS,CAAQ,CAAC,EAAuC,CACvD,MAAO,GAAG,EAAK,SAAW,QAAU,mBAAmB,IAAI,KAAK,EAAK,KAAK,OAAO,EAAE,YAAY", | ||
| "debugId": "63BF8553DDC6353F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode, type McpServer } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.list,\n Effect.fn(\"cli.mcp.list\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.mcp.list({ location: { directory: process.cwd() } }))\n const servers = response.data.toSorted((a, b) => a.name.localeCompare(b.name))\n if (servers.length === 0) {\n process.stdout.write(\"No MCP servers configured\" + EOL)\n return\n }\n const width = Math.max(...servers.map((server) => server.name.length))\n const lines = servers.map(\n (server) => `${icon(server.status)} ${server.name.padEnd(width)} ${describe(server.status)}`,\n )\n process.stdout.write(lines.join(EOL) + EOL)\n }),\n)\n\nfunction icon(status: McpServer[\"status\"]) {\n switch (status.status) {\n case \"connected\":\n return \"✓\"\n case \"needs_auth\":\n return \"⚠\"\n case \"failed\":\n return \"✗\"\n default:\n return \"○\"\n }\n}\n\nfunction describe(status: McpServer[\"status\"]) {\n switch (status.status) {\n case \"needs_auth\":\n return \"needs authentication\"\n case \"failed\":\n return `failed: ${status.error}`\n default:\n return status.status\n }\n}\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,KAC/B,EAAO,GAAG,cAAc,EAAE,SAAU,EAAG,CACrC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,GADW,MAAO,EAAO,QAAQ,IAAM,EAAO,IAAI,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,GAC/E,KAAK,SAAS,CAAC,EAAG,IAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,EAC7E,GAAI,EAAQ,SAAW,EAAG,CACxB,QAAQ,OAAO,MAAM,4BAA8B,CAAG,EACtD,OAEF,IAAM,EAAQ,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAW,EAAO,KAAK,MAAM,CAAC,EAC/D,EAAQ,EAAQ,IACpB,CAAC,IAAW,GAAG,EAAK,EAAO,MAAM,KAAK,EAAO,KAAK,OAAO,CAAK,MAAM,EAAS,EAAO,MAAM,GAC5F,EACA,QAAQ,OAAO,MAAM,EAAM,KAAK,CAAG,EAAI,CAAG,EAC3C,CACH,EAEA,SAAS,CAAI,CAAC,EAA6B,CACzC,OAAQ,EAAO,YACR,YACH,MAAO,aACJ,aACH,MAAO,aACJ,SACH,MAAO,iBAEP,MAAO,UAIb,SAAS,CAAQ,CAAC,EAA6B,CAC7C,OAAQ,EAAO,YACR,aACH,MAAO,2BACJ,SACH,MAAO,WAAW,EAAO,gBAEzB,OAAO,EAAO", | ||
| "debugId": "05DCE6464E3C52B164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/pair.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode } from \"@opencode-ai/client/promise\"\nimport { renderUnicodeCompact } from \"uqr\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServiceConfig } from \"../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.pair,\n Effect.fn(\"cli.pair\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const password = yield* ServiceConfig.password()\n const server = yield* Effect.tryPromise(() =>\n OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) }).server.get(),\n )\n const info = { urls: server.urls, username: \"opencode\", password }\n process.stdout.write(\n [\n \"\",\n ` URLs ${info.urls[0] ?? \"(none)\"}`,\n ...info.urls.slice(1).map((url) => ` ${url}`),\n ` Username ${info.username}`,\n ` Password ${info.password}`,\n \"\",\n \" Scan to pair\",\n \"\",\n renderUnicodeCompact(JSON.stringify(info), { border: 2 })\n .split(EOL)\n .map((line) => \" \" + line)\n .join(EOL),\n \"\",\n ].join(EOL) + EOL,\n )\n\n const hostname = new URL(endpoint.url).hostname\n if (![\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(hostname)) return\n process.stderr.write(` Run \\`opencode service set hostname 0.0.0.0\\` to access the service remotely.${EOL}${EOL}`)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAST,IAAe,IAAQ,QACrB,EAAS,SAAS,KAClB,EAAO,GAAG,UAAU,EAAE,SAAU,EAAG,CACjC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAW,MAAO,EAAc,SAAS,EAIzC,EAAO,CAAE,MAHA,MAAO,EAAO,WAAW,IACtC,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAAE,OAAO,IAAI,CAC1F,GAC4B,KAAM,SAAU,WAAY,UAAS,EACjE,QAAQ,OAAO,MACb,CACE,GACA,eAAe,EAAK,KAAK,IAAM,WAC/B,GAAG,EAAK,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAQ,eAAe,GAAK,EACvD,eAAe,EAAK,WACpB,eAAe,EAAK,WACpB,GACA,iBACA,GACA,EAAqB,KAAK,UAAU,CAAI,EAAG,CAAE,OAAQ,CAAE,CAAC,EACrD,MAAM,CAAG,EACT,IAAI,CAAC,IAAS,KAAO,CAAI,EACzB,KAAK,CAAG,EACX,EACF,EAAE,KAAK,CAAG,EAAI,CAChB,EAEA,IAAM,EAAW,IAAI,IAAI,EAAS,GAAG,EAAE,SACvC,GAAI,CAAC,CAAC,YAAa,YAAa,OAAO,EAAE,SAAS,CAAQ,EAAG,OAC7D,QAAQ,OAAO,MAAM,kFAAkF,IAAM,GAAK,EACnH,CACH", | ||
| "debugId": "0838F14C9678708C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/open-responses-options.ts"], | ||
| "sourcesContent": [ | ||
| "import { Option, Schema } from \"effect\"\nimport type { LLMRequest } from \"../../schema/index.js\"\n\nexport const ReasoningEfforts = [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const\nexport type ReasoningEffort = (typeof ReasoningEfforts)[number] | (string & {})\nexport const ReasoningEffort = Schema.declare<ReasoningEffort>(\n (value): value is ReasoningEffort => typeof value === \"string\",\n { title: \"ReasoningEffort\" },\n)\n\nexport const TextVerbosities = [\"low\", \"medium\", \"high\"] as const\nexport type TextVerbosity = (typeof TextVerbosities)[number] | (string & {})\nexport const TextVerbosity = Schema.declare<TextVerbosity>(\n (value): value is TextVerbosity => typeof value === \"string\",\n { title: \"TextVerbosity\" },\n)\n\nexport const ResponseIncludables = [\n \"file_search_call.results\",\n \"web_search_call.results\",\n \"web_search_call.action.sources\",\n \"message.input_image.image_url\",\n \"computer_call_output.output.image_url\",\n \"code_interpreter_call.outputs\",\n \"reasoning.encrypted_content\",\n \"message.output_text.logprobs\",\n] as const\nexport type ResponseIncludable = (typeof ResponseIncludables)[number] | (string & {})\n\nexport const ServiceTiers = [\"auto\", \"default\", \"flex\", \"priority\"] as const\nexport type ServiceTier = (typeof ServiceTiers)[number] | (string & {})\nexport const ServiceTier = Schema.declare<ServiceTier>(\n (value): value is ServiceTier => typeof value === \"string\",\n { title: \"ServiceTier\" },\n)\n\nexport const Truncations = [\"auto\", \"disabled\"] as const\nexport type Truncation = (typeof Truncations)[number]\n\nexport const TextVerbositySchema = TextVerbosity\nexport const ResponseIncludableSchema = Schema.declare<ResponseIncludable>(\n (value): value is ResponseIncludable => typeof value === \"string\",\n { title: \"ResponseIncludable\" },\n)\nexport const ServiceTierSchema = ServiceTier\nexport const TruncationSchema = Schema.Literals(Truncations)\n\nexport const AllowedTools = Schema.Struct({\n toolNames: Schema.Array(Schema.String),\n mode: Schema.optional(Schema.Literals([\"auto\", \"none\", \"required\"])),\n})\nexport type AllowedTools = typeof AllowedTools.Type\n\nexport const StreamOptions = Schema.Struct({\n includeObfuscation: Schema.optional(Schema.Boolean),\n})\n\nexport const Options = Schema.Struct({\n instructions: Schema.optional(Schema.String),\n store: Schema.optional(Schema.Boolean),\n metadata: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n safetyIdentifier: Schema.optional(Schema.String),\n streamOptions: Schema.optional(StreamOptions),\n topLogprobs: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 20 }))),\n reasoningEffort: Schema.optional(ReasoningEffort),\n reasoningSummary: Schema.optional(Schema.Literals([\"auto\", \"concise\", \"detailed\"])),\n include: Schema.optional(Schema.Array(ResponseIncludableSchema)),\n textVerbosity: Schema.optional(TextVerbositySchema),\n serviceTier: Schema.optional(ServiceTierSchema),\n truncation: Schema.optional(TruncationSchema),\n allowedTools: Schema.optional(AllowedTools),\n maxToolCalls: Schema.optional(Schema.Int),\n parallelToolCalls: Schema.optional(Schema.Boolean),\n})\nexport type Options = typeof Options.Type\n\nexport type Resolved = Omit<Options, \"allowedTools\"> & {\n readonly allowedTools?: AllowedTools & { readonly mode: NonNullable<AllowedTools[\"mode\"]> }\n}\n\nconst decodeOptions = Schema.decodeUnknownOption(Options)\n\nexport const resolve = (request: LLMRequest): Resolved => {\n const input = Option.getOrUndefined(decodeOptions(request.providerOptions))\n if (!input) return {}\n return {\n ...input,\n include: input.include?.length ? input.include : undefined,\n allowedTools:\n input.allowedTools && input.allowedTools.toolNames.length > 0\n ? { ...input.allowedTools, mode: input.allowedTools.mode ?? \"auto\" }\n : undefined,\n }\n}\n\nexport * as OpenResponsesOptions from \"./open-responses-options.js\"\n" | ||
| ], | ||
| "mappings": ";8eAGO,IAAM,EAAmB,CAAC,OAAQ,UAAW,MAAO,SAAU,OAAQ,QAAS,KAAK,EAE9E,EAAkB,EAAO,QACpC,CAAC,IAAoC,OAAO,IAAU,SACtD,CAAE,MAAO,iBAAkB,CAC7B,EAEa,EAAkB,CAAC,MAAO,SAAU,MAAM,EAE1C,EAAgB,EAAO,QAClC,CAAC,IAAkC,OAAO,IAAU,SACpD,CAAE,MAAO,eAAgB,CAC3B,EAEa,EAAsB,CACjC,2BACA,0BACA,iCACA,gCACA,wCACA,gCACA,8BACA,8BACF,EAGa,EAAe,CAAC,OAAQ,UAAW,OAAQ,UAAU,EAErD,EAAc,EAAO,QAChC,CAAC,IAAgC,OAAO,IAAU,SAClD,CAAE,MAAO,aAAc,CACzB,EAEa,EAAc,CAAC,OAAQ,UAAU,EAGjC,EAAsB,EACtB,EAA2B,EAAO,QAC7C,CAAC,IAAuC,OAAO,IAAU,SACzD,CAAE,MAAO,oBAAqB,CAChC,EACa,EAAoB,EACpB,EAAmB,EAAO,SAAS,CAAW,EAE9C,EAAe,EAAO,OAAO,CACxC,UAAW,EAAO,MAAM,EAAO,MAAM,EACrC,KAAM,EAAO,SAAS,EAAO,SAAS,CAAC,OAAQ,OAAQ,UAAU,CAAC,CAAC,CACrE,CAAC,EAGY,EAAgB,EAAO,OAAO,CACzC,mBAAoB,EAAO,SAAS,EAAO,OAAO,CACpD,CAAC,EAEY,EAAU,EAAO,OAAO,CACnC,aAAc,EAAO,SAAS,EAAO,MAAM,EAC3C,MAAO,EAAO,SAAS,EAAO,OAAO,EACrC,SAAU,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,MAAM,CAAC,EACrE,iBAAkB,EAAO,SAAS,EAAO,MAAM,EAC/C,cAAe,EAAO,SAAS,CAAa,EAC5C,YAAa,EAAO,SAAS,EAAO,IAAI,MAAM,EAAO,UAAU,CAAE,QAAS,EAAG,QAAS,EAAG,CAAC,CAAC,CAAC,EAC5F,gBAAiB,EAAO,SAAS,CAAe,EAChD,iBAAkB,EAAO,SAAS,EAAO,SAAS,CAAC,OAAQ,UAAW,UAAU,CAAC,CAAC,EAClF,QAAS,EAAO,SAAS,EAAO,MAAM,CAAwB,CAAC,EAC/D,cAAe,EAAO,SAAS,CAAmB,EAClD,YAAa,EAAO,SAAS,CAAiB,EAC9C,WAAY,EAAO,SAAS,CAAgB,EAC5C,aAAc,EAAO,SAAS,CAAY,EAC1C,aAAc,EAAO,SAAS,EAAO,GAAG,EACxC,kBAAmB,EAAO,SAAS,EAAO,OAAO,CACnD,CAAC,EAOK,EAAgB,EAAO,oBAAoB,CAAO,EAE3C,EAAU,CAAC,IAAkC,CACxD,IAAM,EAAQ,EAAO,eAAe,EAAc,EAAQ,eAAe,CAAC,EAC1E,GAAI,CAAC,EAAO,MAAO,CAAC,EACpB,MAAO,IACF,EACH,QAAS,EAAM,SAAS,OAAS,EAAM,QAAU,OACjD,aACE,EAAM,cAAgB,EAAM,aAAa,UAAU,OAAS,EACxD,IAAK,EAAM,aAAc,KAAM,EAAM,aAAa,MAAQ,MAAO,EACjE,MACR", | ||
| "debugId": "F14B33BE214B67D264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/debug/paths.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\n\nexport default Runtime.handler(\n Commands.commands.debug.commands.paths,\n Effect.fn(\"cli.debug.paths\")(function* () {\n const global = yield* Global.Service\n process.stdout.write(\n Object.entries(global)\n .map(([key, value]) => `${key.padEnd(10)} ${value}${EOL}`)\n .join(\"\"),\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";wnBAAA,cAAS,WAMT,IAAe,IAAQ,QACrB,EAAS,SAAS,MAAM,SAAS,MACjC,EAAO,GAAG,iBAAiB,EAAE,SAAU,EAAG,CACxC,IAAM,EAAS,MAAO,EAAO,QAC7B,QAAQ,OAAO,MACb,OAAO,QAAQ,CAAM,EAClB,IAAI,EAAE,EAAK,KAAW,GAAG,EAAI,OAAO,EAAE,KAAK,IAAQ,GAAK,EACxD,KAAK,EAAE,CACZ,EACD,CACH", | ||
| "debugId": "EBCE16C05965866764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js"], | ||
| "sourcesContent": [ | ||
| "import { getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { resolveProfileData } from \"./resolveProfileData\";\nexport const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-ini - fromIni\");\n const profiles = await parseKnownFiles(init);\n return resolveProfileData(getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n }), profiles, init, callerClientConfig);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { isAssumeRoleProfile, resolveAssumeRoleCredentials } from \"./resolveAssumeRoleCredentials\";\nimport { isLoginProfile, resolveLoginCredentials } from \"./resolveLoginCredentials\";\nimport { isProcessProfile, resolveProcessCredentials } from \"./resolveProcessCredentials\";\nimport { isSsoProfile, resolveSsoCredentials } from \"./resolveSsoCredentials\";\nimport { isStaticCredsProfile, resolveStaticCredentials } from \"./resolveStaticCredentials\";\nimport { isWebIdentityProfile, resolveWebIdentityCredentials } from \"./resolveWebIdentityCredentials\";\nexport const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options, callerClientConfig);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, data, options, callerClientConfig);\n }\n if (isLoginProfile(data)) {\n return resolveLoginCredentials(profileName, options, callerClientConfig);\n }\n throw new CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger });\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, getProfileName } from \"@smithy/core/config\";\nimport { resolveCredentialSource } from \"./resolveCredentialSource\";\nexport const isAssumeRoleProfile = (arg, { profile = \"default\", logger } = {}) => {\n return (Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 &&\n (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger })));\n};\nconst isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => {\n const withSourceProfile = typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\";\n if (withSourceProfile) {\n logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);\n }\n return withSourceProfile;\n};\nconst isCredentialSourceProfile = (arg, { profile, logger }) => {\n const withProviderProfile = typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\";\n if (withProviderProfile) {\n logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);\n }\n return withProviderProfile;\n};\nexport const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)\");\n const profileData = profiles[profileName];\n const { source_profile, region } = profileData;\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer } = await import(\"@aws-sdk/nested-clients/sts\");\n options.roleAssumer = getDefaultRoleAssumer({\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: {\n ...callerClientConfig,\n ...options?.parentClientConfig,\n region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region,\n },\n }, options.clientPlugins);\n }\n if (source_profile && source_profile in visitedProfiles) {\n throw new CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` +\n ` ${getProfileName(options)}. Profiles visited: ` +\n Object.keys(visitedProfiles).join(\", \"), { logger: options.logger });\n }\n options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`);\n const sourceCredsProvider = source_profile\n ? resolveProfileData(source_profile, profiles, options, callerClientConfig, {\n ...visitedProfiles,\n [source_profile]: true,\n }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {}))\n : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))();\n if (isCredentialSourceWithoutRoleArn(profileData)) {\n return sourceCredsProvider.then((creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SOURCE_PROFILE\", \"o\"));\n }\n else {\n const params = {\n RoleArn: profileData.role_arn,\n RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: profileData.external_id,\n DurationSeconds: parseInt(profileData.duration_seconds || \"3600\", 10),\n };\n const { mfa_serial } = profileData;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false });\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SOURCE_PROFILE\", \"o\"));\n }\n};\nconst isCredentialSourceWithoutRoleArn = (section) => {\n return !section.role_arn && !!section.credential_source;\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { chain, CredentialsProviderError } from \"@smithy/core/config\";\nexport const resolveCredentialSource = (credentialSource, profileName, logger) => {\n const sourceProvidersMap = {\n EcsContainer: async (options) => {\n const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n const { fromContainerMetadata } = await import(\"@smithy/credential-provider-imds\");\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is EcsContainer\");\n return async () => chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider);\n },\n Ec2InstanceMetadata: async (options) => {\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata\");\n const { fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n return async () => fromInstanceMetadata(options)().then(setNamedProvider);\n },\n Environment: async (options) => {\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is Environment\");\n const { fromEnv } = await import(\"@aws-sdk/credential-provider-env\");\n return async () => fromEnv(options)().then(setNamedProvider);\n },\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n }\n else {\n throw new CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` +\n `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger });\n }\n};\nconst setNamedProvider = (creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_NAMED_PROVIDER\", \"p\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isLoginProfile = (data) => {\n return Boolean(data && data.login_session);\n};\nexport const resolveLoginCredentials = async (profileName, options, callerClientConfig) => {\n const { fromLoginCredentials } = await import(\"@aws-sdk/credential-provider-login\");\n const credentials = await fromLoginCredentials({\n ...options,\n profile: profileName,\n })({ callerClientConfig });\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_LOGIN\", \"AC\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isProcessProfile = (arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\";\nexport const resolveProcessCredentials = async (options, profile) => {\n const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n const credentials = await fromProcess({\n ...options,\n profile,\n })();\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_PROCESS\", \"v\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => {\n const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n return fromSSO({\n profile,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig,\n clientConfig: options.clientConfig,\n })({\n callerClientConfig,\n }).then((creds) => {\n if (profileData.sso_session) {\n return setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SSO\", \"r\");\n }\n else {\n return setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SSO_LEGACY\", \"t\");\n }\n });\n};\nexport const isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_session === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isStaticCredsProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.aws_access_key_id === \"string\" &&\n typeof arg.aws_secret_access_key === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.aws_account_id) > -1;\nexport const resolveStaticCredentials = async (profile, options) => {\n options?.logger?.debug(\"@aws-sdk/credential-provider-ini - resolveStaticCredentials\");\n const credentials = {\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }),\n ...(profile.aws_account_id && { accountId: profile.aws_account_id }),\n };\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE\", \"n\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isWebIdentityProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.web_identity_token_file === \"string\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1;\nexport const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => {\n const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n const credentials = await fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig,\n })({\n callerClientConfig,\n });\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN\", \"q\");\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BD457E0C97B328BC64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/node-http.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js"], | ||
| "sourcesContent": [ | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { fromImdsCredentials, isImdsCredentials } from \"./remoteProvider/ImdsCredentials\";\nimport { providerConfigFromInit } from \"./remoteProvider/RemoteProviderInit\";\nimport { httpRequest } from \"./remoteProvider/httpRequest\";\nimport { retry } from \"./remoteProvider/retry\";\nexport const ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nexport const ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nexport const ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nexport const fromContainerMetadata = (init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri({ logger: init.logger });\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger,\n });\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n};\nconst requestFromEcsImds = async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN],\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout,\n });\n return buffer.toString();\n};\nconst CMDS_IP = \"169.254.170.2\";\nconst GREENGRASS_HOSTS = new Set([\"localhost\", \"127.0.0.1\"]);\nconst GREENGRASS_PROTOCOLS = new Set([\"http:\", \"https:\"]);\nconst getCmdsUri = async ({ logger }) => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI],\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n let parsed;\n try {\n parsed = new URL(process.env[ENV_CMDS_FULL_URI]);\n }\n catch {\n throw new CredentialsProviderError(`${process.env[ENV_CMDS_FULL_URI]} is not a valid container metadata service URL`, { tryNextLink: false, logger });\n }\n if (!parsed.hostname || !GREENGRASS_HOSTS.has(parsed.hostname)) {\n throw new CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {\n tryNextLink: false,\n logger,\n });\n }\n if (!parsed.protocol || !GREENGRASS_PROTOCOLS.has(parsed.protocol)) {\n throw new CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {\n tryNextLink: false,\n logger,\n });\n }\n return {\n protocol: parsed.protocol,\n hostname: parsed.hostname,\n path: parsed.pathname + parsed.search,\n port: parsed.port ? parseInt(parsed.port, 10) : undefined,\n };\n }\n throw new CredentialsProviderError(\"The container metadata credential provider cannot be used unless\" +\n ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` +\n \" variable is set\", {\n tryNextLink: false,\n logger,\n });\n};\n", | ||
| "export const isImdsCredentials = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.AccessKeyId === \"string\" &&\n typeof arg.SecretAccessKey === \"string\" &&\n typeof arg.Token === \"string\" &&\n typeof arg.Expiration === \"string\";\nexport const fromImdsCredentials = (creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration),\n ...(creds.AccountId && { accountId: creds.AccountId }),\n});\n", | ||
| "export const DEFAULT_TIMEOUT = 1000;\nexport const DEFAULT_MAX_RETRIES = 0;\nexport const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout });\n", | ||
| "import { ProviderError } from \"@smithy/core/config\";\nimport { node_http } from \"./node-http\";\nexport function httpRequest(options) {\n return new Promise((resolve, reject) => {\n const req = node_http.request({\n method: \"GET\",\n ...options,\n hostname: options.hostname?.replace(/^\\[(.+)\\]$/, \"$1\"),\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(Object.assign(new ProviderError(\"Error response received from instance metadata service\"), { statusCode }));\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n", | ||
| "import node_http from \"node:http\";\nexport { node_http };\n", | ||
| "export const retry = (toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n};\n", | ||
| "import { CredentialsProviderError, loadConfig } from \"@smithy/core/config\";\nimport { InstanceMetadataV1FallbackError } from \"./error/InstanceMetadataV1FallbackError\";\nimport { fromImdsCredentials, isImdsCredentials } from \"./remoteProvider/ImdsCredentials\";\nimport { providerConfigFromInit } from \"./remoteProvider/RemoteProviderInit\";\nimport { httpRequest } from \"./remoteProvider/httpRequest\";\nimport { retry } from \"./remoteProvider/retry\";\nimport { getInstanceMetadataEndpoint } from \"./utils/getInstanceMetadataEndpoint\";\nimport { staticStabilityProvider } from \"./utils/staticStabilityProvider\";\nconst IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nconst IMDS_TOKEN_PATH = \"/latest/api/token\";\nconst AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nconst PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nconst X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nexport const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger });\nconst getInstanceMetadataProvider = (init = {}) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = async (maxRetries, options) => {\n const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await loadConfig({\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === undefined) {\n throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger });\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile) => {\n const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false,\n }, {\n profile,\n })();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\", \")}].`);\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile;\n try {\n profile = await getProfile(options);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile;\n }, maxRetries)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options, init);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries);\n };\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger?.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n }\n catch (error) {\n if (error?.statusCode === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\",\n });\n }\n else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger?.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token,\n },\n timeout,\n });\n }\n };\n};\nconst getMetadataToken = async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\",\n },\n});\nconst getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString();\nconst getCredentialsFromProfile = async (profile, options, init) => {\n const credentialsResponse = JSON.parse((await httpRequest({\n ...options,\n path: IMDS_PATH + profile,\n })).toString());\n if (!isImdsCredentials(credentialsResponse)) {\n throw new CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger,\n });\n }\n return fromImdsCredentials(credentialsResponse);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nexport class InstanceMetadataV1FallbackError extends CredentialsProviderError {\n tryNextLink;\n name = \"InstanceMetadataV1FallbackError\";\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype);\n }\n}\n", | ||
| "import { loadConfig } from \"@smithy/core/config\";\nimport { parseUrl } from \"@smithy/core/protocols\";\nimport { Endpoint as InstanceMetadataEndpoint } from \"../config/Endpoint\";\nimport { ENDPOINT_CONFIG_OPTIONS } from \"../config/EndpointConfigOptions\";\nimport { EndpointMode } from \"../config/EndpointMode\";\nimport { ENDPOINT_MODE_CONFIG_OPTIONS, } from \"../config/EndpointModeConfigOptions\";\nexport const getInstanceMetadataEndpoint = async () => parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig()));\nconst getFromEndpointConfig = async () => loadConfig(ENDPOINT_CONFIG_OPTIONS)();\nconst getFromEndpointModeConfig = async () => {\n const endpointMode = await loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case EndpointMode.IPv4:\n return InstanceMetadataEndpoint.IPv4;\n case EndpointMode.IPv6:\n return InstanceMetadataEndpoint.IPv6;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`);\n }\n};\n", | ||
| "export var Endpoint;\n(function (Endpoint) {\n Endpoint[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n})(Endpoint || (Endpoint = {}));\n", | ||
| "export const ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nexport const CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nexport const ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: undefined,\n};\n", | ||
| "export var EndpointMode;\n(function (EndpointMode) {\n EndpointMode[\"IPv4\"] = \"IPv4\";\n EndpointMode[\"IPv6\"] = \"IPv6\";\n})(EndpointMode || (EndpointMode = {}));\n", | ||
| "import { EndpointMode } from \"./EndpointMode\";\nexport const ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nexport const CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nexport const ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: EndpointMode.IPv4,\n};\n", | ||
| "const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nconst STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nconst STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nexport const getExtendedInstanceMetadataCredentials = (credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS +\n Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1000);\n logger.warn(\"Attempting credential expiration extension due to a credential service availability issue. A refresh of these \" +\n `credentials will be attempted after ${new Date(newExpiration)}.\\nFor more information, please visit: ` +\n STATIC_STABILITY_DOC_URL);\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...(originalExpiration ? { originalExpiration } : {}),\n expiration: newExpiration,\n };\n};\n", | ||
| "import { getExtendedInstanceMetadataCredentials } from \"./getExtendedInstanceMetadataCredentials\";\nexport const staticStabilityProvider = (provider, options = {}) => {\n const logger = options?.logger || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n }\n catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n }\n else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "5BE0E13F88278DCE64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "2DCECBA9FA2F532464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/session.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Session from \"./session.js\"\n\nimport { Schema } from \"effect\"\nimport { Agent } from \"./agent.js\"\nimport { Location } from \"./location.js\"\nimport { Model } from \"./model.js\"\nimport { Project } from \"./project.js\"\nimport { DateTimeUtcFromMillis, optional, RelativePath } from \"./schema.js\"\nimport { SessionEvent } from \"./session-event.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { Money } from \"./money.js\"\nimport { TokenUsage } from \"./token-usage.js\"\nimport { Revert } from \"./session-revert.js\"\nimport { SessionFork } from \"./session-fork.js\"\n\nexport const ID = SessionID\nexport type ID = SessionID\n\nexport const Event = SessionEvent\n\nexport { Revert }\nexport const ForkBoundary = SessionFork.Boundary\nexport type ForkBoundary = SessionFork.Boundary\nexport const ForkRequestBoundary = SessionFork.RequestBoundary\nexport type ForkRequestBoundary = SessionFork.RequestBoundary\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n parentID: ID.pipe(optional),\n fork: Schema.Struct({\n sessionID: ID,\n boundary: ForkBoundary,\n }).pipe(optional),\n projectID: Project.ID,\n agent: Agent.ID.pipe(optional),\n model: Model.Ref.pipe(optional),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n /** Outcome of the last completed execution, recorded at `time.idle`. Absent until a run reaches a terminal transition. */\n outcome: Schema.Literals([\"succeeded\", \"failed\", \"interrupted\"]).pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n updated: DateTimeUtcFromMillis,\n idle: DateTimeUtcFromMillis.pipe(optional),\n viewed: DateTimeUtcFromMillis.pipe(optional),\n archived: DateTimeUtcFromMillis.pipe(optional),\n }),\n title: Schema.String.pipe(optional),\n location: Location.Ref,\n subpath: RelativePath.pipe(optional),\n revert: Revert.pipe(optional),\n}).annotate({ identifier: \"Session.Info\" })\n\nexport const ListAnchor = Schema.Struct({\n id: ID,\n time: Schema.Finite,\n direction: Schema.Literals([\"previous\", \"next\"]),\n}).annotate({ identifier: \"Session.ListAnchor\" })\nexport interface ListAnchor extends Schema.Schema.Type<typeof ListAnchor> {}\n" | ||
| ], | ||
| "mappings": ";qjBAeO,IAAM,EAAK,EAGL,EAAQ,EAGd,IAAM,EAAe,EAAY,SAE3B,EAAsB,EAAY,gBAIlC,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,SAAU,EAAG,KAAK,CAAQ,EAC1B,KAAM,EAAO,OAAO,CAClB,UAAW,EACX,SAAU,CACZ,CAAC,EAAE,KAAK,CAAQ,EAChB,UAAW,EAAQ,GACnB,MAAO,EAAM,GAAG,KAAK,CAAQ,EAC7B,MAAO,EAAM,IAAI,KAAK,CAAQ,EAC9B,KAAM,EAAM,IACZ,OAAQ,EAAW,KAEnB,QAAS,EAAO,SAAS,CAAC,YAAa,SAAU,aAAa,CAAC,EAAE,KAAK,CAAQ,EAC9E,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,QAAS,EACT,KAAM,EAAsB,KAAK,CAAQ,EACzC,OAAQ,EAAsB,KAAK,CAAQ,EAC3C,SAAU,EAAsB,KAAK,CAAQ,CAC/C,CAAC,EACD,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,SAAU,EAAS,IACnB,QAAS,EAAa,KAAK,CAAQ,EACnC,OAAQ,EAAO,KAAK,CAAQ,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAE7B,EAAa,EAAO,OAAO,CACtC,GAAI,EACJ,KAAM,EAAO,OACb,UAAW,EAAO,SAAS,CAAC,WAAY,MAAM,CAAC,CACjD,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC", | ||
| "debugId": "441DB03FE989F61164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/stop.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { ServerConnection } from \"../../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.stop,\n Effect.fn(\"cli.service.stop\")(function* () {\n const options = yield* ServiceConfig.options()\n yield* ServerConnection.shutdownPersistentPty(options).pipe(Effect.ignore)\n yield* Service.stop(options)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";whCAOA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,KACnC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAU,MAAO,EAAc,QAAQ,EAC7C,MAAO,EAAiB,sBAAsB,CAAO,EAAE,KAAK,EAAO,MAAM,EACzE,MAAO,EAAQ,KAAK,CAAO,EAC5B,CACH", | ||
| "debugId": "F359EACBFAF153D964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "9946D304BADDFB4364756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "31032846FB9F803A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "E319FE713AFB5E3B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-images.ts", "../ai/src/providers/openai.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest, HttpClientResponse } from \"effect/unstable/http\"\nimport {\n ImageModel,\n GeneratedImage,\n ImageResponse,\n type ImageInput,\n type ImageRequestFor,\n type ImageRoute,\n} from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n} from \"../schema/index.js\"\nimport { ProviderShared } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\nimport { OpenAIImage } from \"./utils/openai-image.js\"\n\nconst ADAPTER = \"openai-images\"\nexport const DEFAULT_BASE_URL = \"https://api.openai.com/v1\"\nexport const PATH = \"/images/generations\"\nexport const EDIT_PATH = \"/images/edits\"\n\nexport type OpenAIImageString<Known extends string> = Known | (string & {})\n\nexport type OpenAIImageOptions = {\n readonly mask?: ImageInput\n readonly n?: number\n readonly size?: OpenAIImageString<\n \"auto\" | \"256x256\" | \"512x512\" | \"1024x1024\" | \"1536x1024\" | \"1024x1536\" | \"1792x1024\" | \"1024x1792\"\n >\n readonly quality?: OpenAIImageString<\"auto\" | \"low\" | \"medium\" | \"high\" | \"standard\" | \"hd\">\n readonly background?: OpenAIImageString<\"auto\" | \"opaque\" | \"transparent\">\n readonly moderation?: OpenAIImageString<\"auto\" | \"low\">\n readonly outputFormat?: OpenAIImageString<\"png\" | \"jpeg\" | \"webp\">\n readonly outputCompression?: number\n} & Record<string, unknown>\n\nexport type OpenAIImageBody = Record<string, unknown> & {\n readonly model: string\n readonly prompt: string\n}\n\nconst OpenAIImageResponse = Schema.Struct({\n data: Schema.Array(\n Schema.Struct({\n b64_json: Schema.optional(Schema.String),\n url: Schema.optional(Schema.String),\n revised_prompt: Schema.optional(Schema.String),\n }),\n ),\n output_format: Schema.optional(Schema.String),\n usage: Schema.optional(\n Schema.Struct({\n input_tokens: Schema.optional(Schema.Number),\n output_tokens: Schema.optional(Schema.Number),\n total_tokens: Schema.optional(Schema.Number),\n input_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n output_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n }),\n ),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: OpenAIImageOptions | undefined) => {\n if (!options) return undefined\n const { mask: _, outputFormat, outputCompression, ...native } = options\n return {\n output_format: outputFormat,\n output_compression: outputCompression,\n ...native,\n }\n}\n\nconst invalidOutput = (message: string) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<OpenAIImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"OpenAIImages.generate\")(function* (request: ImageRequestFor<OpenAIImageOptions>, execute) {\n const mask = request.options?.mask\n if (mask !== undefined && (request.images?.length ?? 0) === 0)\n return yield* ImageInputs.invalid(ADAPTER, \"An OpenAI image mask requires at least one input image\")\n const http = mergeHttpOptions(request.model.http, request.http)\n const sourceImages = request.images ?? []\n const multipartImages = yield* Effect.forEach(sourceImages, (image) => {\n if (image.type === \"bytes\") return Effect.succeed({ data: image.data, mediaType: image.mediaType })\n if (image.type === \"url\") return ImageInputs.decodeDataUrl(image.url, ADAPTER)\n return Effect.undefined\n })\n const multipartMask =\n mask === undefined\n ? undefined\n : mask.type === \"bytes\"\n ? { data: mask.data, mediaType: mask.mediaType }\n : mask.type === \"url\"\n ? yield* ImageInputs.decodeDataUrl(mask.url, ADAPTER)\n : undefined\n const useMultipart =\n sourceImages.length > 0 &&\n multipartImages.every((image) => image !== undefined) &&\n (mask === undefined || multipartMask !== undefined)\n const path = sourceImages.length === 0 ? PATH : EDIT_PATH\n const url = applyQuery(`${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}${path}`, http?.query)\n\n if (useMultipart) {\n const form = new FormData()\n form.append(\"model\", request.model.id)\n form.append(\"prompt\", request.prompt)\n Object.entries(mergeJsonRecords(nativeOptions(request.options), http?.body) ?? {}).forEach(([key, value]) => {\n if ([\"model\", \"prompt\", \"image\", \"image[]\", \"images\", \"mask\"].includes(key)) return\n form.append(key, typeof value === \"string\" ? value : ProviderShared.encodeJson(value))\n })\n multipartImages.forEach((image, index) => {\n if (image === undefined) return\n form.append(\"image[]\", imageBlob(image.data, image.mediaType), `image-${index}`)\n })\n if (multipartMask !== undefined)\n form.append(\"mask\", imageBlob(multipartMask.data, multipartMask.mediaType), \"mask\")\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: \"[multipart/form-data]\",\n headers: Headers.remove(Headers.fromInput({ ...input.headers, ...http?.headers }), \"content-type\"),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(HttpClientRequest.setHeaders(headers), HttpClientRequest.bodyFormData(form)),\n )\n return yield* parseResponse(response, request.options, http?.body)\n }\n\n const references = sourceImages.map((image) => {\n if (image.type === \"bytes\") return { image_url: ImageInputs.dataUrl(image) }\n if (image.type === \"url\") return { image_url: image.url }\n if (image.type === \"file-id\") return { file_id: image.id }\n return undefined\n })\n if (references.some((image) => image === undefined))\n return yield* ImageInputs.invalid(ADAPTER, \"OpenAI Images accepts image URLs, data URLs, bytes, and file IDs\")\n const maskReference =\n mask === undefined\n ? undefined\n : mask.type === \"bytes\"\n ? { image_url: ImageInputs.dataUrl(mask) }\n : mask.type === \"url\"\n ? { image_url: mask.url }\n : mask.type === \"file-id\"\n ? { file_id: mask.id }\n : undefined\n if (mask !== undefined && maskReference === undefined)\n return yield* ImageInputs.invalid(ADAPTER, \"OpenAI Images accepts masks as URLs, data URLs, bytes, or file IDs\")\n const requestBody = mergeJsonRecords(\n {\n model: request.model.id,\n prompt: request.prompt,\n images: references.length === 0 ? undefined : references,\n mask: maskReference,\n },\n nativeOptions(request.options),\n http?.body,\n ) as OpenAIImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n return yield* parseResponse(response, request.options, http?.body)\n }),\n }\n return ImageModel.make<OpenAIImageOptions>({ id: input.id, provider: \"openai\", route, http: input.http })\n}\n\nconst parseResponse = Effect.fn(\"OpenAIImages.parseResponse\")(function* (\n response: HttpClientResponse.HttpClientResponse,\n options: OpenAIImageOptions | undefined,\n overlay: Record<string, unknown> | undefined,\n) {\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the OpenAI Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(OpenAIImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"OpenAI Images returned an invalid response\")),\n )\n const requestBody = mergeJsonRecords(nativeOptions(options), overlay)\n const format =\n decoded.output_format ?? (typeof requestBody?.output_format === \"string\" ? requestBody.output_format : \"png\")\n const images = yield* Effect.forEach(decoded.data, (item, index) => {\n if (item.b64_json)\n return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe(\n Effect.mapError(() => invalidOutput(`OpenAI Images result ${index} contains invalid base64 data`)),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType: `image/${format}`,\n data,\n providerMetadata:\n item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } },\n }),\n ),\n )\n if (item.url)\n return Effect.succeed(\n new GeneratedImage({\n mediaType: `image/${format}`,\n data: item.url,\n providerMetadata:\n item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } },\n }),\n )\n return Effect.fail(invalidOutput(`OpenAI Images result ${index} has neither image data nor a URL`))\n })\n if (images.length === 0) return yield* invalidOutput(\"OpenAI Images returned no images\")\n return new ImageResponse({\n images,\n usage:\n decoded.usage === undefined\n ? undefined\n : new Usage({\n inputTokens: decoded.usage.input_tokens,\n outputTokens: decoded.usage.output_tokens,\n totalTokens: decoded.usage.total_tokens,\n providerMetadata: { openai: decoded.usage },\n }),\n providerMetadata: { openai: { outputFormat: format } },\n })\n})\n\nconst imageBlob = (data: Uint8Array, mediaType: string) => {\n const buffer = new ArrayBuffer(data.byteLength)\n new Uint8Array(buffer).set(data)\n return new Blob([buffer], { type: mediaType })\n}\n\nexport const OpenAIImages = {\n model,\n} as const\n", | ||
| "import { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { Route, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { HttpOptions, ProviderID, ToolDefinition, mergeHttpOptions, type ModelID } from \"../schema/index.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport * as OpenAIResponses from \"../protocols/openai-responses.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\nimport { OpenAIImages, type OpenAIImageString } from \"../protocols/openai-images.js\"\n\nexport type { OpenAIOptionsInput, OpenAIResponseIncludable } from \"./openai-options.js\"\nexport type { OpenAIImageOptions } from \"../protocols/openai-images.js\"\n\nexport const id = ProviderID.make(\"openai\")\n\nexport const routes = [OpenAIResponses.route, OpenAIChat.route]\n\n// This provider facade wraps the lower-level Responses and Chat model factories\n// with OpenAI-specific conveniences: typed options, API-key sugar, env fallback,\n// and default option normalization.\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly queryParams?: Record<string, string>\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface ImageGenerationOptions {\n readonly action?: OpenAIImageString<\"auto\" | \"generate\" | \"edit\">\n readonly background?: OpenAIImageString<\"auto\" | \"opaque\" | \"transparent\">\n readonly inputFidelity?: OpenAIImageString<\"low\" | \"high\">\n readonly outputCompression?: number\n readonly outputFormat?: OpenAIImageString<\"png\" | \"jpeg\" | \"webp\">\n readonly partialImages?: number\n readonly quality?: OpenAIImageString<\"auto\" | \"low\" | \"medium\" | \"high\" | \"standard\" | \"hd\">\n readonly size?: OpenAIImageString<\n \"auto\" | \"256x256\" | \"512x512\" | \"1024x1024\" | \"1536x1024\" | \"1024x1536\" | \"1792x1024\" | \"1024x1792\"\n >\n}\n\nexport const imageGeneration = (options: ImageGenerationOptions = {}) =>\n ToolDefinition.make({\n name: \"image_generation\",\n description: \"Generate or edit an image using OpenAI's hosted image generation tool.\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n native: {\n openai: {\n type: \"image_generation\",\n action: options.action,\n background: options.background,\n input_fidelity: options.inputFidelity,\n output_compression: options.outputCompression,\n output_format: options.outputFormat,\n partial_images: options.partialImages,\n quality: options.quality,\n size: options.size,\n },\n },\n })\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly organization?: string\n readonly project?: string\n readonly queryParams?: Readonly<Record<string, string>>\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => AuthOptions.bearer(options, \"OPENAI_API_KEY\")\n\nconst defaults = (input: Config) => {\n const { apiKey: _, auth: _auth, baseURL: _baseURL, queryParams: _queryParams, ...rest } = input\n return rest\n}\n\nconst configuredRoute = <Body, Prepared>(route: Route<Body, Prepared>, input: Config) =>\n route.with({\n auth: auth(input),\n endpoint: { baseURL: input.baseURL, query: input.queryParams },\n })\n\nexport const configure = (input: Config = {}) => {\n const responsesRoute = configuredRoute(OpenAIResponses.route, input)\n const chatRoute = configuredRoute(OpenAIChat.route, input)\n const modelDefaults = defaults(input)\n const responses = (id: string | ModelID) =>\n responsesRoute\n .with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true }))\n .model<OpenAIProviderOptionsInput>({ id })\n const chat = (id: string | ModelID) =>\n chatRoute.with(withOpenAIOptions(id, modelDefaults)).model<OpenAIProviderOptionsInput>({ id })\n const image = (modelID: string | ModelID) =>\n OpenAIImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL,\n headers: input.headers,\n http: mergeHttpOptions(\n input.http === undefined ? undefined : HttpOptions.make(input.http),\n input.queryParams === undefined ? undefined : new HttpOptions({ query: input.queryParams }),\n ),\n })\n\n return {\n id,\n model: responses,\n responses,\n chat,\n image,\n configure,\n }\n}\n\nexport const provider = configure()\n\nconst config = (settings: Settings): Config => {\n const headers = {\n ...(settings.organization === undefined ? {} : { \"OpenAI-Organization\": settings.organization }),\n ...(settings.project === undefined ? {} : { \"OpenAI-Project\": settings.project }),\n ...settings.headers,\n }\n return {\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: Object.keys(headers).length === 0 ? undefined : headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams },\n }\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n return configure(config(settings)).responses(modelID)\n}\n\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const responses = provider.responses\nexport const chat = provider.chat\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": ";whBAuBA,IAAM,EAAU,gBACH,GAAmB,4BACnB,GAAO,sBACP,GAAY,gBAsBnB,GAAsB,EAAO,OAAO,CACxC,KAAM,EAAO,MACX,EAAO,OAAO,CACZ,SAAU,EAAO,SAAS,EAAO,MAAM,EACvC,IAAK,EAAO,SAAS,EAAO,MAAM,EAClC,eAAgB,EAAO,SAAS,EAAO,MAAM,CAC/C,CAAC,CACH,EACA,cAAe,EAAO,SAAS,EAAO,MAAM,EAC5C,MAAO,EAAO,SACZ,EAAO,OAAO,CACZ,aAAc,EAAO,SAAS,EAAO,MAAM,EAC3C,cAAe,EAAO,SAAS,EAAO,MAAM,EAC5C,aAAc,EAAO,SAAS,EAAO,MAAM,EAC3C,qBAAsB,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,CAAC,EAClF,sBAAuB,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,CAAC,CACrF,CAAC,CACH,CACF,CAAC,EAUK,EAAgB,CAAC,IAA4C,CACjE,GAAI,CAAC,EAAS,OACd,IAAQ,KAAM,EAAG,eAAc,uBAAsB,GAAW,EAChE,MAAO,CACL,cAAe,EACf,mBAAoB,KACjB,CACL,GAGI,EAAgB,CAAC,IACrB,IAAI,EAAQ,CACV,OAAQ,EACR,OAAQ,WACR,OAAQ,IAAI,EAA4B,CAAE,UAAS,MAAO,CAAQ,CAAC,CACrE,CAAC,EAEG,GAAa,CAAC,EAAa,IAA8C,CAC7E,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAO,IAAI,IAAI,CAAG,EAExB,OADA,OAAO,QAAQ,CAAK,EAAE,QAAQ,EAAE,EAAK,KAAW,EAAK,aAAa,IAAI,EAAK,CAAK,CAAC,EAC1E,EAAK,SAAS,GAGV,GAAQ,CAAC,IAAsB,CAC1C,IAAM,EAAwC,CAC5C,GAAI,EACJ,SAAU,EAAO,GAAG,uBAAuB,EAAE,SAAU,CAAC,EAA8C,EAAS,CAC7G,IAAM,EAAO,EAAQ,SAAS,KAC9B,GAAI,IAAS,SAAc,EAAQ,QAAQ,QAAU,KAAO,EAC1D,OAAO,MAAO,EAAY,QAAQ,EAAS,wDAAwD,EACrG,IAAM,EAAO,EAAiB,EAAQ,MAAM,KAAM,EAAQ,IAAI,EACxD,EAAe,EAAQ,QAAU,CAAC,EAClC,EAAkB,MAAO,EAAO,QAAQ,EAAc,CAAC,IAAU,CACrE,GAAI,EAAM,OAAS,QAAS,OAAO,EAAO,QAAQ,CAAE,KAAM,EAAM,KAAM,UAAW,EAAM,SAAU,CAAC,EAClG,GAAI,EAAM,OAAS,MAAO,OAAO,EAAY,cAAc,EAAM,IAAK,CAAO,EAC7E,OAAO,EAAO,UACf,EACK,EACJ,IAAS,OACL,OACA,EAAK,OAAS,QACZ,CAAE,KAAM,EAAK,KAAM,UAAW,EAAK,SAAU,EAC7C,EAAK,OAAS,MACZ,MAAO,EAAY,cAAc,EAAK,IAAK,CAAO,EAClD,OACJ,EACJ,EAAa,OAAS,GACtB,EAAgB,MAAM,CAAC,IAAU,IAAU,MAAS,IACnD,IAAS,QAAa,IAAkB,QACrC,EAAO,EAAa,SAAW,EAAI,GAAO,GAC1C,EAAM,GAAW,IAAI,EAAM,SAAW,IAAkB,QAAQ,MAAO,EAAE,IAAI,IAAQ,GAAM,KAAK,EAEtG,GAAI,EAAc,CAChB,IAAM,EAAO,IAAI,SAWjB,GAVA,EAAK,OAAO,QAAS,EAAQ,MAAM,EAAE,EACrC,EAAK,OAAO,SAAU,EAAQ,MAAM,EACpC,OAAO,QAAQ,EAAiB,EAAc,EAAQ,OAAO,EAAG,GAAM,IAAI,GAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAK,KAAW,CAC3G,GAAI,CAAC,QAAS,SAAU,QAAS,UAAW,SAAU,MAAM,EAAE,SAAS,CAAG,EAAG,OAC7E,EAAK,OAAO,EAAK,OAAO,IAAU,SAAW,EAAQ,EAAe,WAAW,CAAK,CAAC,EACtF,EACD,EAAgB,QAAQ,CAAC,EAAO,IAAU,CACxC,GAAI,IAAU,OAAW,OACzB,EAAK,OAAO,UAAW,EAAU,EAAM,KAAM,EAAM,SAAS,EAAG,SAAS,GAAO,EAChF,EACG,IAAkB,OACpB,EAAK,OAAO,OAAQ,EAAU,EAAc,KAAM,EAAc,SAAS,EAAG,MAAM,EACpF,IAAM,GAAU,MAAO,EAAK,SAAS,EAAM,IAAI,EAAE,CAC/C,UACA,OAAQ,OACR,MACA,KAAM,wBACN,QAAS,EAAQ,OAAO,EAAQ,UAAU,IAAK,EAAM,WAAY,GAAM,OAAQ,CAAC,EAAG,cAAc,CACnG,CAAC,EACK,GAAW,MAAO,EACtB,EAAkB,KAAK,CAAG,EAAE,KAAK,EAAkB,WAAW,EAAO,EAAG,EAAkB,aAAa,CAAI,CAAC,CAC9G,EACA,OAAO,MAAO,EAAc,GAAU,EAAQ,QAAS,GAAM,IAAI,EAGnE,IAAM,EAAa,EAAa,IAAI,CAAC,IAAU,CAC7C,GAAI,EAAM,OAAS,QAAS,MAAO,CAAE,UAAW,EAAY,QAAQ,CAAK,CAAE,EAC3E,GAAI,EAAM,OAAS,MAAO,MAAO,CAAE,UAAW,EAAM,GAAI,EACxD,GAAI,EAAM,OAAS,UAAW,MAAO,CAAE,QAAS,EAAM,EAAG,EACzD,OACD,EACD,GAAI,EAAW,KAAK,CAAC,IAAU,IAAU,MAAS,EAChD,OAAO,MAAO,EAAY,QAAQ,EAAS,kEAAkE,EAC/G,IAAM,EACJ,IAAS,OACL,OACA,EAAK,OAAS,QACZ,CAAE,UAAW,EAAY,QAAQ,CAAI,CAAE,EACvC,EAAK,OAAS,MACZ,CAAE,UAAW,EAAK,GAAI,EACtB,EAAK,OAAS,UACZ,CAAE,QAAS,EAAK,EAAG,EACnB,OACZ,GAAI,IAAS,QAAa,IAAkB,OAC1C,OAAO,MAAO,EAAY,QAAQ,EAAS,oEAAoE,EACjH,IAAM,EAAc,EAClB,CACE,MAAO,EAAQ,MAAM,GACrB,OAAQ,EAAQ,OAChB,OAAQ,EAAW,SAAW,EAAI,OAAY,EAC9C,KAAM,CACR,EACA,EAAc,EAAQ,OAAO,EAC7B,GAAM,IACR,EACM,EAAO,EAAe,WAAW,CAAW,EAC5C,GAAU,MAAO,EAAK,SAAS,EAAM,IAAI,EAAE,CAC/C,UACA,OAAQ,OACR,MACA,KAAM,EACN,QAAS,EAAQ,UAAU,IAAK,EAAM,WAAY,GAAM,OAAQ,CAAC,CACnE,CAAC,EACK,GAAW,MAAO,EACtB,EAAkB,KAAK,CAAG,EAAE,KAC1B,EAAkB,WAAW,EAAO,EACpC,EAAkB,SAAS,EAAM,kBAAkB,CACrD,CACF,EACA,OAAO,MAAO,EAAc,GAAU,EAAQ,QAAS,GAAM,IAAI,EAClE,CACH,EACA,OAAO,EAAW,KAAyB,CAAE,GAAI,EAAM,GAAI,SAAU,SAAU,QAAO,KAAM,EAAM,IAAK,CAAC,GAGpG,EAAgB,EAAO,GAAG,4BAA4B,EAAE,SAAU,CACtE,EACA,EACA,EACA,CACA,IAAM,EAAU,MAAO,EAAS,KAAK,KACnC,EAAO,SAAS,IAAM,EAAc,2CAA2C,CAAC,CAClF,EACM,EAAU,MAAO,EAAO,oBAAoB,EAAmB,EAAE,CAAO,EAAE,KAC9E,EAAO,SAAS,IAAM,EAAc,4CAA4C,CAAC,CACnF,EACM,EAAc,EAAiB,EAAc,CAAO,EAAG,CAAO,EAC9D,EACJ,EAAQ,gBAAkB,OAAO,GAAa,gBAAkB,SAAW,EAAY,cAAgB,OACnG,EAAS,MAAO,EAAO,QAAQ,EAAQ,KAAM,CAAC,EAAM,IAAU,CAClE,GAAI,EAAK,SACP,OAAO,EAAO,WAAW,EAAS,aAAa,EAAK,QAAQ,CAAC,EAAE,KAC7D,EAAO,SAAS,IAAM,EAAc,wBAAwB,gCAAoC,CAAC,EACjG,EAAO,IACL,CAAC,IACC,IAAI,EAAe,CACjB,UAAW,SAAS,IACpB,OACA,iBACE,EAAK,iBAAmB,OAAY,OAAY,CAAE,OAAQ,CAAE,cAAe,EAAK,cAAe,CAAE,CACrG,CAAC,CACL,CACF,EACF,GAAI,EAAK,IACP,OAAO,EAAO,QACZ,IAAI,EAAe,CACjB,UAAW,SAAS,IACpB,KAAM,EAAK,IACX,iBACE,EAAK,iBAAmB,OAAY,OAAY,CAAE,OAAQ,CAAE,cAAe,EAAK,cAAe,CAAE,CACrG,CAAC,CACH,EACF,OAAO,EAAO,KAAK,EAAc,wBAAwB,oCAAwC,CAAC,EACnG,EACD,GAAI,EAAO,SAAW,EAAG,OAAO,MAAO,EAAc,kCAAkC,EACvF,OAAO,IAAI,EAAc,CACvB,SACA,MACE,EAAQ,QAAU,OACd,OACA,IAAI,EAAM,CACR,YAAa,EAAQ,MAAM,aAC3B,aAAc,EAAQ,MAAM,cAC5B,YAAa,EAAQ,MAAM,aAC3B,iBAAkB,CAAE,OAAQ,EAAQ,KAAM,CAC5C,CAAC,EACP,iBAAkB,CAAE,OAAQ,CAAE,aAAc,CAAO,CAAE,CACvD,CAAC,EACF,EAEK,EAAY,CAAC,EAAkB,IAAsB,CACzD,IAAM,EAAS,IAAI,YAAY,EAAK,UAAU,EAE9C,OADA,IAAI,WAAW,CAAM,EAAE,IAAI,CAAI,EACxB,IAAI,KAAK,CAAC,CAAM,EAAG,CAAE,KAAM,CAAU,CAAC,GAGlC,EAAe,CAC1B,QACF,ECjQO,IAAM,GAAK,EAAW,KAAK,QAAQ,EAE7B,GAAS,CAAiB,EAAkB,CAAK,EAyBjD,GAAkB,CAAC,EAAkC,CAAC,IACjE,EAAe,KAAK,CAClB,KAAM,mBACN,YAAa,yEACb,YAAa,CAAE,KAAM,SAAU,WAAY,CAAC,EAAG,qBAAsB,EAAM,EAC3E,OAAQ,CACN,OAAQ,CACN,KAAM,mBACN,OAAQ,EAAQ,OAChB,WAAY,EAAQ,WACpB,eAAgB,EAAQ,cACxB,mBAAoB,EAAQ,kBAC5B,cAAe,EAAQ,aACvB,eAAgB,EAAQ,cACxB,QAAS,EAAQ,QACjB,KAAM,EAAQ,IAChB,CACF,CACF,CAAC,EAWG,EAAO,CAAC,IAA4C,EAAY,OAAO,EAAS,gBAAgB,EAEhG,GAAW,CAAC,IAAkB,CAClC,IAAQ,OAAQ,EAAG,KAAM,EAAO,QAAS,EAAU,YAAa,KAAiB,GAAS,EAC1F,OAAO,GAGH,EAAkB,CAAiB,EAA8B,IACrE,EAAM,KAAK,CACT,KAAM,EAAK,CAAK,EAChB,SAAU,CAAE,QAAS,EAAM,QAAS,MAAO,EAAM,WAAY,CAC/D,CAAC,EAEU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAiB,EAAgC,EAAO,CAAK,EAC7D,EAAY,EAA2B,EAAO,CAAK,EACnD,EAAgB,GAAS,CAAK,EAC9B,EAAY,CAAC,IACjB,EACG,KAAK,EAAkB,EAAI,EAAe,CAAE,cAAe,EAAK,CAAC,CAAC,EAClE,MAAkC,CAAE,IAAG,CAAC,EAe7C,MAAO,CACL,MACA,MAAO,EACP,YACA,KAlBW,CAAC,IACZ,EAAU,KAAK,EAAkB,EAAI,CAAa,CAAC,EAAE,MAAkC,CAAE,IAAG,CAAC,EAkB7F,MAjBY,CAAC,IACb,EAAa,MAAM,CACjB,GAAI,EACJ,KAAM,EAAK,CAAK,EAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,KAAM,EACJ,EAAM,OAAS,OAAY,OAAY,EAAY,KAAK,EAAM,IAAI,EAClE,EAAM,cAAgB,OAAY,OAAY,IAAI,EAAY,CAAE,MAAO,EAAM,WAAY,CAAC,CAC5F,CACF,CAAC,EAQD,WACF,GAGW,EAAW,EAAU,EAE5B,EAAS,CAAC,IAA+B,CAC7C,IAAM,EAAU,IACV,EAAS,eAAiB,OAAY,CAAC,EAAI,CAAE,sBAAuB,EAAS,YAAa,KAC1F,EAAS,UAAY,OAAY,CAAC,EAAI,CAAE,iBAAkB,EAAS,OAAQ,KAC5E,EAAS,OACd,EACA,MAAO,CACL,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,QAAS,OAAO,KAAK,CAAO,EAAE,SAAW,EAAI,OAAY,EACzD,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,gBAC1B,YAAa,EAAS,cAAgB,OAAY,OAAY,IAAK,EAAS,WAAY,CAC1F,GAGW,GAAmF,CAAC,EAAS,IACjG,EAAU,EAAO,CAAQ,CAAC,EAAE,UAAU,CAAO,EAGzC,GAAuF,CAClG,EACA,IACG,EAAU,EAAO,CAAQ,CAAC,EAAE,KAAK,CAAO,EAChC,GAAY,EAAS,UACrB,GAAO,EAAS,KAChB,GAAQ,EAAS", | ||
| "debugId": "342022939392ED1564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { Gemini } from \"../protocols/gemini.js\"\nimport { ProviderShared } from \"../protocols/shared.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { ProviderID, type LLMRequest, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\n\nexport interface GeminiOptionsInput extends Gemini.OptionsInput {\n readonly labels?: Readonly<Record<string, string>>\n}\n\nexport type GeminiProviderOptionsInput = GeminiOptionsInput\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.ApiKeyOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: GeminiProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly accessToken?: string; readonly apiKey?: never }\n | { readonly accessToken?: never; readonly apiKey?: string }\n ) & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: GeminiProviderOptionsInput\n }\n\nconst fromRequest = Effect.fn(\"GoogleVertex.fromRequest\")(function* (request: LLMRequest) {\n const body = yield* Gemini.protocol.body.from(request)\n // Vertex's native REST schema rejects `id` on FunctionCall/FunctionResponse parts with HTTP 400,\n // unlike AI Studio, so history minted there cannot be lowered verbatim.\n const contents = body.contents.map((content) => ({\n ...content,\n parts: (content.parts ?? []).map((part) => {\n if (\"functionCall\" in part) return { ...part, functionCall: { ...part.functionCall, id: undefined } }\n if (\"functionResponse\" in part) return { ...part, functionResponse: { ...part.functionResponse, id: undefined } }\n return part\n }),\n }))\n const value = request.providerOptions?.labels\n const labels = ProviderShared.isRecord(value)\n ? Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === \"string\"),\n )\n : undefined\n return { ...body, contents, labels }\n})\n\nconst protocol = {\n ...Gemini.protocol,\n body: {\n ...Gemini.protocol.body,\n from: fromRequest,\n },\n}\n\nconst route = Route.make({\n id: \"google-vertex-gemini\",\n provider: id,\n providerMetadataKey: \"google\",\n protocol,\n endpoint: Endpoint.path(({ request }) => {\n const model = String(request.model.id)\n return `/${model.startsWith(\"endpoints/\") ? model : `models/${model}`}:streamGenerateContent?alt=sse`\n }),\n auth: Auth.none,\n framing: Framing.sse,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config, modelID: string | ModelID) => {\n const {\n accessToken: _accessToken,\n apiKey: _apiKey,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const apiKey = GoogleVertexShared.apiKey(input)\n const endpointModel = String(modelID).startsWith(\"endpoints/\")\n if (apiKey !== undefined && endpointModel)\n throw new Error(\"Google Vertex tuned models do not support Express Mode API keys\")\n const location = GoogleVertexShared.location(inputLocation, \"us-central1\")\n const project = GoogleVertexShared.project(inputProject)\n const endpoint =\n baseURL ??\n (apiKey\n ? \"https://aiplatform.googleapis.com/v1/publishers/google\"\n : `https://${GoogleVertexShared.host(location)}/v1beta1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}${endpointModel ? \"\" : \"/publishers/google\"}`)\n return route.with({\n ...rest,\n endpoint: { baseURL: endpoint },\n auth: apiKey === undefined ? GoogleVertexShared.oauth(input, project) : Auth.header(\"x-goog-api-key\", apiKey),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n return {\n id,\n model: (modelID: string | ModelID) =>\n configuredRoute(input, modelID).model<GeminiProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\nexport const model: ProviderPackage.Definition<Settings, GeminiProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n if (settings.apiKey !== undefined && settings.accessToken !== undefined)\n throw new Error(\"Google Vertex apiKey cannot be combined with accessToken or auth\")\n return configure({\n ...(settings.apiKey === undefined ? { accessToken: settings.accessToken } : { apiKey: settings.apiKey }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";wPAiBO,IAAM,EAAK,EAAW,KAAK,eAAe,EAqB3C,EAAc,EAAO,GAAG,0BAA0B,EAAE,SAAU,CAAC,EAAqB,CACxF,IAAM,EAAO,MAAO,EAAO,SAAS,KAAK,KAAK,CAAO,EAG/C,EAAW,EAAK,SAAS,IAAI,CAAC,KAAa,IAC5C,EACH,OAAQ,EAAQ,OAAS,CAAC,GAAG,IAAI,CAAC,IAAS,CACzC,GAAI,iBAAkB,EAAM,MAAO,IAAK,EAAM,aAAc,IAAK,EAAK,aAAc,GAAI,MAAU,CAAE,EACpG,GAAI,qBAAsB,EAAM,MAAO,IAAK,EAAM,iBAAkB,IAAK,EAAK,iBAAkB,GAAI,MAAU,CAAE,EAChH,OAAO,EACR,CACH,EAAE,EACI,EAAQ,EAAQ,iBAAiB,OACjC,EAAS,EAAe,SAAS,CAAK,EACxC,OAAO,YACL,OAAO,QAAQ,CAAK,EAAE,OAAO,CAAC,IAAqC,OAAO,EAAM,KAAO,QAAQ,CACjG,EACA,OACJ,MAAO,IAAK,EAAM,WAAU,QAAO,EACpC,EAEK,EAAW,IACZ,EAAO,SACV,KAAM,IACD,EAAO,SAAS,KACnB,KAAM,CACR,CACF,EAEM,EAAQ,EAAM,KAAK,CACvB,GAAI,uBACJ,SAAU,EACV,oBAAqB,SACrB,WACA,SAAU,EAAS,KAAK,EAAG,aAAc,CACvC,IAAM,EAAQ,OAAO,EAAQ,MAAM,EAAE,EACrC,MAAO,IAAI,EAAM,WAAW,YAAY,EAAI,EAAQ,UAAU,oCAC/D,EACD,KAAM,EAAK,KACX,QAAS,EAAQ,GACnB,CAAC,EAEY,EAAS,CAAC,CAAK,EAEtB,EAAkB,CAAC,EAAe,IAA8B,CACpE,IACE,YAAa,EACb,OAAQ,EACR,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAS,EAAmB,OAAO,CAAK,EACxC,EAAgB,OAAO,CAAO,EAAE,WAAW,YAAY,EAC7D,GAAI,IAAW,QAAa,EAC1B,MAAU,MAAM,iEAAiE,EACnF,IAAM,EAAW,EAAmB,SAAS,EAAe,aAAa,EACnE,EAAU,EAAmB,QAAQ,CAAY,EACjD,EACJ,IACC,EACG,yDACA,WAAW,EAAmB,KAAK,CAAQ,sBAAsB,EAAmB,eAAe,CAAO,eAAe,IAAW,EAAgB,GAAK,wBAC/J,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CAAE,QAAS,CAAS,EAC9B,KAAM,IAAW,OAAY,EAAmB,MAAM,EAAO,CAAO,EAAI,EAAK,OAAO,iBAAkB,CAAM,CAC9G,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,KAClC,CACL,KACA,MAAO,CAAC,IACN,EAAgB,EAAO,CAAO,EAAE,MAAkC,CAAE,GAAI,CAAQ,CAAC,EACnF,WACF,GAGW,EAAW,CACtB,KACA,WACF,EACa,EAAmF,CAAC,EAAS,IAAa,CACrH,GAAI,EAAS,SAAW,QAAa,EAAS,cAAgB,OAC5D,MAAU,MAAM,kEAAkE,EACpF,OAAO,EAAU,IACX,EAAS,SAAW,OAAY,CAAE,YAAa,EAAS,WAAY,EAAI,CAAE,OAAQ,EAAS,MAAO,EACtG,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "BE2C4980EF98C9EA64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/stats.ts"], | ||
| "sourcesContent": [ | ||
| "import { ClientError, OpenCode, type SessionStatsInfo } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { errorMessage } from \"../../util/error\"\n\nconst handler = Effect.fn(\"cli.stats\")(function* (input: Runtime.Input<typeof Commands.commands.stats>) {\n const days = Option.getOrUndefined(input.days)\n const year = Option.getOrUndefined(input.year)\n const project = Option.getOrUndefined(input.project)\n if ([days !== undefined, year !== undefined, input.all].filter(Boolean).length > 1)\n yield* Effect.fail(new Error(\"--days, --year, and --all cannot be combined\"))\n\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({ baseUrl: server.endpoint.url, headers: Service.headers(server.endpoint) })\n const range = statsRange({ days, year, all: input.all })\n const projectID =\n project === \".\"\n ? yield* request(server.endpoint.url, (signal) =>\n client.location\n .get({ location: { directory: process.cwd() } }, { signal })\n .then((location) => location.project.id),\n )\n : project\n const details = input.models || input.tools || input.cost || input.full\n const stats = yield* request(server.endpoint.url, (signal) =>\n client.session.stats(\n {\n from: range.from,\n to: range.to,\n project: projectID,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || \"UTC\",\n tools: input.json || input.tools || input.full ? \"detail\" : details ? \"none\" : \"summary\",\n },\n { signal },\n ),\n )\n const output = input.json\n ? JSON.stringify(stats, null, 2)\n : renderStats(stats, {\n label: range.label,\n scope: project === undefined ? \"all projects\" : project === \".\" ? \"current project\" : \"selected project\",\n models: input.models || input.full,\n tools: input.tools || input.full,\n cost: input.cost || input.full,\n limit: input.limit,\n color: process.stdout.isTTY && process.env.NO_COLOR === undefined,\n width: process.stdout.columns ?? 80,\n })\n process.stdout.write(output + EOL)\n})\n\nexport default Runtime.handler(Commands.commands.stats, (input) =>\n handler(input).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n)\n\nexport function request<A>(url: string, run: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({\n try: () => run(AbortSignal.timeout(30_000)),\n catch: (cause) =>\n cause instanceof ClientError && cause.reason === \"Transport\"\n ? new Error(`Could not reach server at ${url}`, { cause })\n : cause,\n })\n}\n\ntype RenderOptions = {\n label: string\n scope: string\n models: boolean\n tools: boolean\n cost: boolean\n limit: number\n color: boolean\n width: number\n}\n\nconst colors = terminalPalette()\n\nexport function renderStats(stats: SessionStatsInfo, options: RenderOptions) {\n const totalTokens = tokenTotal(stats.tokens)\n const toolTotals = stats.tools.mode === \"none\" ? undefined : stats.tools.totals\n const terminalTools = toolTotals ? toolTotals.succeeded + toolTotals.failed : 0\n const toolRate = !toolTotals || terminalTools === 0 ? undefined : (toolTotals.succeeded / terminalTools) * 100\n const primary = `1;${colors.primary}`\n const sessionLine = [\n metricCount(stats.sessions, \"session\", options.color),\n stats.subagents > 0 ? metricCount(stats.subagents, \"subagent\", options.color) : undefined,\n ]\n .filter((value) => value !== undefined)\n .join(\" · \")\n const toolSummary = !toolTotals\n ? \"tool stats unavailable\"\n : toolRate === undefined\n ? \"no tool calls\"\n : `${style(formatPercent(toolRate), primary, options.color)} tool success`\n const details = options.models || options.tools || options.cost\n const empty = stats.sessions === 0 && stats.prompts === 0 && stats.steps === 0\n const heading = `${style(\"opencode stats\", primary, options.color)} ${style(`· ${options.label} · ${options.scope}`, \"2\", options.color)}`\n const lines = details\n ? [style(`${options.label} · ${options.scope}`, \"2\", options.color)]\n : empty\n ? [\n heading,\n \"\",\n style(\"no activity in this range\", \"2\", options.color),\n \"\",\n style(\"opencode.ai\", \"2\", options.color),\n ]\n : [\n heading,\n \"\",\n ...renderActivity(stats.activity, stats.range.from, stats.range.to, options.color, options.width),\n \"\",\n sessionLine,\n `${metricCount(stats.prompts, \"prompt\", options.color)} · ${metricCount(stats.steps, \"step\", options.color)} · ${metricCount(totalTokens, \"token\", options.color)}`,\n `${toolSummary} · ${metricCount(stats.activeDays, \"active day\", options.color)} · best streak ${style(stats.streak.toString(), primary, options.color)} day${stats.streak === 1 ? \"\" : \"s\"}`,\n \"\",\n style(\"opencode.ai\", \"2\", options.color),\n ]\n\n if (options.cost) lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderCost(stats))\n if (options.models)\n lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderModels(stats, options.limit, options.width))\n if (options.tools) lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderTools(stats, options.limit, options.width))\n return lines.join(EOL)\n}\n\nfunction statsRange(input: { days?: number; year?: number; all: boolean }) {\n const now = new Date()\n const to = now.getTime() + 1\n if (input.all) return { from: undefined, to, label: \"all time\" }\n if (input.days !== undefined) {\n const from = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n from.setDate(from.getDate() - Math.max(0, input.days - 1))\n return {\n from: from.getTime(),\n to,\n label: input.days === 0 || input.days === 1 ? \"today\" : `last ${input.days} days`,\n }\n }\n const year = input.year ?? now.getFullYear()\n return {\n from: new Date(year, 0, 1).getTime(),\n to: year === now.getFullYear() ? to : new Date(year + 1, 0, 1).getTime(),\n label: year === now.getFullYear() ? `${year} so far` : year.toString(),\n }\n}\n\nfunction renderActivity(\n activity: SessionStatsInfo[\"activity\"],\n from: number,\n to: number,\n color: boolean,\n width: number,\n) {\n const values = new Map(activity.map((day) => [day.date, day.steps]))\n const rangeStart = dateOrdinal(new Date(from))\n const rangeEnd = dateOrdinal(new Date(to - 1))\n const end = new Date(to - 1)\n end.setHours(12, 0, 0, 0)\n end.setDate(end.getDate() + (7 - mondayIndex(end) - 1))\n const start = new Date(from)\n start.setHours(12, 0, 0, 0)\n start.setDate(start.getDate() - mondayIndex(start))\n const maxWeeks = Math.max(1, Math.min(53, width - 4))\n const totalWeeks = Math.floor((dateOrdinal(end) - dateOrdinal(start)) / 7) + 1\n const latest = new Date(end)\n latest.setDate(latest.getDate() - (maxWeeks - 1) * 7)\n if (start < latest) start.setTime(latest.getTime())\n\n const active = [...values.values()].filter((value) => value > 0)\n const levels = [...new Set(active)].sort((a, b) => a - b)\n const weekStarts = Array.from({ length: Math.floor((dateOrdinal(end) - dateOrdinal(start)) / 7) + 1 }, (_, week) => {\n const date = new Date(start)\n date.setDate(date.getDate() + week * 7)\n return date\n })\n const weeks = weekStarts.map((week) =>\n Array.from({ length: 7 }, (_, day) => {\n const date = new Date(week)\n date.setDate(date.getDate() + day)\n const ordinal = dateOrdinal(date)\n if (ordinal < rangeStart || ordinal > rangeEnd) return \" \"\n return activityGlyph(values.get(dateKey(date)) ?? 0, levels, color)\n }),\n )\n const weekdays = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"]\n return [\n style(totalWeeks > maxWeeks ? `activity · last ${maxWeeks} weeks` : \"activity\", `1;${colors.primary}`, color),\n ` ${style(monthLabels(weekStarts), \"2\", color)}`,\n ...weekdays.flatMap((label, day) => [\n `${style(label, \"2\", color)} ${weeks.map((week) => week[day]).join(\"\")}`,\n ...(day === weekdays.length - 1 ? [] : [\"\"]),\n ]),\n \"\",\n ` ${style(\"less\", \"2\", color)} ${[0, 1, 2, 3, 4].map((level) => paintActivity(level, color)).join(\"\")} ${style(\"more\", \"2\", color)}`,\n ]\n}\n\nfunction renderCost(stats: SessionStatsInfo) {\n const input = stats.tokens.input + stats.tokens.cache.read + stats.tokens.cache.write\n const cached = input === 0 ? 0 : (stats.tokens.cache.read / input) * 100\n return [\n \"COST & TOKENS\",\n row(\"cost\", `$${stats.cost.toFixed(2)}`),\n row(\"input\", formatNumber(stats.tokens.input)),\n row(\"output\", formatNumber(stats.tokens.output)),\n row(\"reasoning\", formatNumber(stats.tokens.reasoning)),\n row(\"cache read\", formatNumber(stats.tokens.cache.read)),\n row(\"cache write\", formatNumber(stats.tokens.cache.write)),\n row(\"cached input\", formatPercent(cached)),\n ]\n}\n\nfunction renderModels(stats: SessionStatsInfo, limit: number, width: number) {\n if (stats.models.length === 0) return [\"MODELS\", \" no model usage\"]\n const models = stats.models.slice(0, limit)\n const more = stats.models.length - models.length\n if (width < 68)\n return [\n \"MODELS\",\n ...models.flatMap((item) => [\n truncate(\n `${item.model.providerID}/${item.model.id}${item.model.variant ? `#${item.model.variant}` : \"\"}`,\n width,\n ),\n ` ${formatNumber(tokenTotal(item.tokens))} tokens · ${formatNumber(item.steps)} steps · $${item.cost.toFixed(2)}`,\n ]),\n ...(more > 0 ? [\"\", `+${more.toLocaleString(\"en-US\")} more model${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n return [\n \"MODELS\",\n tableHeader(\"model\", \"tokens\", \"steps\", \"cost\"),\n ...models.map((item) =>\n tableRow(\n `${item.model.providerID}/${item.model.id}${item.model.variant ? `#${item.model.variant}` : \"\"}`,\n formatNumber(tokenTotal(item.tokens)),\n formatNumber(item.steps),\n `$${item.cost.toFixed(2)}`,\n ),\n ),\n ...(more > 0 ? [\"\", `+${more.toLocaleString(\"en-US\")} more model${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n}\n\nfunction renderTools(stats: SessionStatsInfo, limit: number, width: number) {\n if (stats.tools.mode !== \"detail\") return [\"TOOL RELIABILITY\", \" tool details unavailable\"]\n if (stats.tools.usage.length === 0) return [\"TOOL RELIABILITY\", \" no tool calls\"]\n const tools = stats.tools.usage.slice(0, limit)\n const more = stats.tools.usage.length - tools.length\n if (width < 68)\n return [\n \"TOOL RELIABILITY\",\n ...tools.flatMap((tool) => {\n const terminal = tool.succeeded + tool.failed\n return [\n truncate(tool.name, width),\n ` ${formatNumber(tool.calls)} calls · ${terminal === 0 ? \"-\" : formatPercent((tool.failed / terminal) * 100)} error · ${tool.durationP50 === undefined ? \"-\" : formatDuration(tool.durationP50)} p50`,\n ]\n }),\n \"\",\n `${formatNumber(stats.tools.totals.succeeded + stats.tools.totals.failed)} finished calls · ${formatNumber(stats.tools.totals.unfinished)} unfinished`,\n ...(more > 0 ? [`+${more.toLocaleString(\"en-US\")} more tool${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n return [\n \"TOOL RELIABILITY\",\n tableHeader(\"tool\", \"calls\", \"error\", \"p50\"),\n ...tools.map((tool) => {\n const terminal = tool.succeeded + tool.failed\n return tableRow(\n tool.name,\n formatNumber(tool.calls),\n terminal === 0 ? \"-\" : formatPercent((tool.failed / terminal) * 100),\n tool.durationP50 === undefined ? \"-\" : formatDuration(tool.durationP50),\n )\n }),\n \"\",\n `${formatNumber(stats.tools.totals.succeeded + stats.tools.totals.failed)} finished calls · ${formatNumber(stats.tools.totals.unfinished)} unfinished`,\n ...(more > 0 ? [`+${more.toLocaleString(\"en-US\")} more tool${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n}\n\nfunction row(label: string, value: string) {\n return ` ${label.padEnd(20)}${value}`\n}\n\nfunction tableHeader(label: string, second: string, third: string, fourth: string) {\n return tableRow(label, second, third, fourth)\n}\n\nfunction tableRow(label: string, second: string, third: string, fourth: string) {\n return `${truncate(label, 34).padEnd(34)}${second.padStart(10)}${third.padStart(12)}${fourth.padStart(12)}`\n}\n\nfunction truncate(value: string, width: number) {\n return value.length <= width ? value : value.slice(0, width - 1) + \"…\"\n}\n\nfunction tokenTotal(tokens: SessionStatsInfo[\"tokens\"]) {\n return tokens.input + tokens.output + tokens.reasoning + tokens.cache.read + tokens.cache.write\n}\n\nfunction formatNumber(value: number) {\n if (value >= 1_000_000_000) return `${trimDecimal(value / 1_000_000_000)}b`\n if (value >= 1_000_000) return `${trimDecimal(value / 1_000_000)}m`\n if (value >= 1_000) return `${trimDecimal(value / 1_000)}k`\n return Math.round(value).toLocaleString(\"en-US\")\n}\n\nfunction trimDecimal(value: number) {\n return value.toFixed(1).replace(/\\.0$/, \"\")\n}\n\nfunction formatPercent(value: number) {\n return `${value.toFixed(value >= 10 ? 1 : 2)}%`\n}\n\nfunction formatDuration(value: number) {\n if (value < 1_000) return `${Math.round(value)}ms`\n return `${trimDecimal(value / 1_000)}s`\n}\n\nfunction metricCount(value: number, noun: string, color: boolean) {\n return `${style(formatNumber(value), `1;${colors.primary}`, color)} ${noun}${value === 1 ? \"\" : \"s\"}`\n}\n\nfunction style(value: string, code: string, color: boolean) {\n return color ? `\\x1b[${code}m${value}\\x1b[0m` : value\n}\n\nfunction activityGlyph(value: number, levels: number[], color: boolean) {\n if (value === 0) return paintActivity(0, color)\n const index = levels.indexOf(value)\n const level = Math.max(1, Math.ceil(((index + 1) / levels.length) * 4))\n return paintActivity(level, color)\n}\n\nfunction paintActivity(level: number, color: boolean) {\n const glyph = [\"·\", \"░\", \"▒\", \"▓\", \"█\"][level]\n if (!color) return glyph\n if (level === 0) return `\\x1b[2m${glyph}\\x1b[22m`\n return `\\x1b[${colors.activity[level - 1]}m${glyph}\\x1b[39m`\n}\n\nfunction terminalPalette() {\n const background = Number(process.env.COLORFGBG?.split(\";\").at(-1))\n if (Number.isFinite(background) && background >= 7)\n return {\n primary: \"38;2;59;125;216\",\n activity: [\"38;2;153;169;192\", \"38;2;122;155;200\", \"38;2;90;140;208\", \"38;2;59;125;216\"],\n }\n if (Number.isFinite(background))\n return {\n primary: \"38;2;250;178;131\",\n activity: [\"38;2;117;99;87\", \"38;2;161;125;102\", \"38;2;206;152;116\", \"38;2;250;178;131\"],\n }\n return { primary: \"36\", activity: [\"2;36\", \"36\", \"1;36\", \"1;96\"] }\n}\n\nfunction monthLabels(weeks: Date[]) {\n const line: string[] = []\n weeks.reduce((previous, week, index) => {\n const middle = new Date(week)\n middle.setDate(middle.getDate() + 3)\n const month = middle.getMonth()\n if (month === previous) return previous\n Intl.DateTimeFormat(\"en-US\", { month: \"short\" })\n .format(middle)\n .split(\"\")\n .forEach((character, offset) => {\n line[index + offset] = character\n })\n return month\n }, -1)\n return Array.from({ length: Math.max(weeks.length, line.length) }, (_, index) => line[index] ?? \" \")\n .join(\"\")\n .trimEnd()\n}\n\nfunction mondayIndex(date: Date) {\n return (date.getDay() + 6) % 7\n}\n\nfunction dateKey(date: Date) {\n return [\n date.getFullYear(),\n String(date.getMonth() + 1).padStart(2, \"0\"),\n String(date.getDate()).padStart(2, \"0\"),\n ].join(\"-\")\n}\n\nfunction dateOrdinal(date: Date) {\n return Math.floor(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / 86_400_000)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CE4F0C0BFC913B7764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/export.ts"], | ||
| "sourcesContent": [ | ||
| "import { autocomplete, cancel, intro, isCancel, log, outro } from \"@clack/prompts\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { errorMessage } from \"../../util/error\"\n\nexport default Runtime.handler(\n Commands.commands.export,\n Effect.fn(\"cli.export\")((input) =>\n Effect.gen(function* () {\n const requested = Option.getOrUndefined(input.session)\n if (!requested && !process.stdin.isTTY) {\n yield* Effect.fail(new Error(\"Pass a session ID when running without an interactive terminal\"))\n }\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const sessionID = requested\n ? requested\n : yield* Effect.gen(function* () {\n intro(\"Export session\", { output: process.stderr })\n const location = yield* Effect.tryPromise({\n try: () => client.location.get({ location: { directory: process.cwd() } }),\n catch: (cause) => cause,\n })\n const page = yield* Effect.tryPromise({\n try: () =>\n client.session.list({\n directory: location.directory,\n workspace: location.workspaceID,\n parentID: null,\n order: \"desc\",\n limit: 50,\n }),\n catch: (cause) => cause,\n })\n if (page.data.length === 0) {\n log.error(\"No sessions found\", { output: process.stderr })\n outro(\"Done\", { output: process.stderr })\n return undefined\n }\n const selected = yield* Effect.tryPromise({\n try: () =>\n autocomplete({\n message: \"Select session to export\",\n maxItems: 10,\n options: page.data.map((session) => ({\n label: session.title,\n value: session.id,\n hint: `${new Date(session.time.updated).toLocaleString()} - ${session.id.slice(-8)}`,\n })),\n output: process.stderr,\n }),\n catch: (cause) => cause,\n })\n if (isCancel(selected)) {\n cancel(\"Cancelled\", { output: process.stderr })\n process.exitCode = 130\n return undefined\n }\n outro(\"Exporting session...\", { output: process.stderr })\n return selected\n })\n if (!sessionID) return\n const data = yield* Effect.tryPromise({\n try: () => client.session.export({ sessionID, sanitize: input.sanitize }),\n catch: (cause) => cause,\n })\n process.stdout.write(JSON.stringify(data, null, 2) + EOL)\n }).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n ),\n)\n" | ||
| ], | ||
| "mappings": ";utCAIA,cAAS,WAMT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,CAAC,IACvB,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAY,EAAO,eAAe,EAAM,OAAO,EACrD,GAAI,CAAC,GAAa,CAAC,QAAQ,MAAM,MAC/B,MAAO,EAAO,KAAS,MAAM,gEAAgE,CAAC,EAEhG,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EACK,EAAY,EACd,EACA,MAAO,EAAO,IAAI,SAAU,EAAG,CAC7B,EAAM,iBAAkB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EAClD,IAAM,EAAW,MAAO,EAAO,WAAW,CACxC,IAAK,IAAM,EAAO,SAAS,IAAI,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,EACzE,MAAO,CAAC,IAAU,CACpB,CAAC,EACK,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IACH,EAAO,QAAQ,KAAK,CAClB,UAAW,EAAS,UACpB,UAAW,EAAS,YACpB,SAAU,KACV,MAAO,OACP,MAAO,EACT,CAAC,EACH,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,GAAI,EAAK,KAAK,SAAW,EAAG,CAC1B,EAAI,MAAM,oBAAqB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACzD,EAAM,OAAQ,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACxC,OAEF,IAAM,EAAW,MAAO,EAAO,WAAW,CACxC,IAAK,IACH,EAAa,CACX,QAAS,2BACT,SAAU,GACV,QAAS,EAAK,KAAK,IAAI,CAAC,KAAa,CACnC,MAAO,EAAQ,MACf,MAAO,EAAQ,GACf,KAAM,GAAG,IAAI,KAAK,EAAQ,KAAK,OAAO,EAAE,eAAe,OAAO,EAAQ,GAAG,MAAM,EAAE,GACnF,EAAE,EACF,OAAQ,QAAQ,MAClB,CAAC,EACH,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,GAAI,EAAS,CAAQ,EAAG,CACtB,EAAO,YAAa,CAAE,OAAQ,QAAQ,MAAO,CAAC,EAC9C,QAAQ,SAAW,IACnB,OAGF,OADA,EAAM,uBAAwB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACjD,EACR,EACL,GAAI,CAAC,EAAW,OAChB,IAAM,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IAAM,EAAO,QAAQ,OAAO,CAAE,YAAW,SAAU,EAAM,QAAS,CAAC,EACxE,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,QAAQ,OAAO,MAAM,KAAK,UAAU,EAAM,KAAM,CAAC,EAAI,CAAG,EACzD,EAAE,KACD,EAAO,MAAM,CAAC,IACZ,EAAO,KAAK,IAAM,CAChB,QAAQ,OAAO,MAAM,EAAa,CAAK,EAAI,CAAG,EAC9C,QAAQ,SAAW,EACpB,CACH,CACF,CACF,CACF", | ||
| "debugId": "6A0493BAB1D25B8F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "E7084A47E285638664756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/get.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.get,\n Effect.fn(\"cli.service.get\")(function* (input) {\n process.stdout.write(\n (yield* ServiceConfig.get(Option.getOrUndefined(input.key), Option.getOrUndefined(input.name))) + EOL,\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAAA,cAAS,WAMT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,IACnC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,QAAQ,OAAO,OACZ,MAAO,EAAc,IAAI,EAAO,eAAe,EAAM,GAAG,EAAG,EAAO,eAAe,EAAM,IAAI,CAAC,GAAK,CACpG,EACD,CACH", | ||
| "debugId": "55EC5B9F131A8E3B64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/editor.ts", "../tui/src/editor-zed-sqlite.bun.ts", "../tui/src/editor-zed.ts"], | ||
| "sourcesContent": [ | ||
| "import type { CliRenderer } from \"@opentui/core\"\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\"\nimport { readFile, rm, writeFile } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { spawn } from \"node:child_process\"\nimport type { Stream } from \"node:stream\"\nimport { resolveZedDbPath, resolveZedSelection } from \"./editor-zed\"\n\nexport { normalizePromptContent } from \"./prompt/content\"\n\ntype EditorStdio = \"inherit\" | \"pipe\" | \"ignore\" | number | Stream\n\nexport async function openEditor(input: { value: string; renderer: CliRenderer; cwd?: string; stdin?: EditorStdio }) {\n const editor = process.env.VISUAL || process.env.EDITOR\n if (!editor) return\n const file = path.join(os.tmpdir(), `${Date.now()}.md`)\n await writeFile(file, input.value)\n input.renderer.suspend()\n input.renderer.currentRenderBuffer.clear()\n try {\n await new Promise<void>((resolve, reject) => {\n const parts = editor.split(\" \")\n const child = spawn(parts[0]!, [...parts.slice(1), file], {\n cwd: input.cwd && existsSync(input.cwd) ? input.cwd : process.cwd(),\n stdio: [input.stdin ?? \"inherit\", \"inherit\", \"inherit\"],\n shell: process.platform === \"win32\",\n })\n child.on(\"error\", reject)\n child.on(\"exit\", (code, signal) => {\n if (code === 0) return resolve()\n reject(new Error(`Editor exited with ${signal ? `signal ${signal}` : `code ${code}`}`))\n })\n })\n return (await readFile(file, \"utf8\")) || undefined\n } finally {\n await rm(file, { force: true }).catch(() => {})\n input.renderer.currentRenderBuffer.clear()\n input.renderer.resume()\n input.renderer.requestRender()\n }\n}\n\nexport function discoverEditorConnection(directory: string) {\n const root = path.join(os.homedir(), \".claude\", \"ide\")\n const contains = (parent: string) => {\n const resolved = path.resolve(parent)\n const relative = path.relative(resolved, path.resolve(directory))\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative)) ? resolved.length : 0\n }\n try {\n return readdirSync(root)\n .filter((entry) => entry.endsWith(\".lock\"))\n .flatMap((entry) => {\n const file = path.join(root, entry)\n const port = Number.parseInt(path.basename(file, \".lock\"), 10)\n if (!Number.isInteger(port) || port <= 0 || port > 65535) return []\n try {\n const value = JSON.parse(readFileSync(file, \"utf8\")) as Record<string, unknown>\n if (value.transport !== undefined && value.transport !== \"ws\") return []\n const folders = Array.isArray(value.workspaceFolders)\n ? value.workspaceFolders.filter((item): item is string => typeof item === \"string\")\n : []\n const score = Math.max(0, ...folders.map(contains))\n if (!score) return []\n return [\n {\n url: `ws://127.0.0.1:${port}`,\n authToken: typeof value.authToken === \"string\" ? value.authToken : undefined,\n source: `lock:${port}`,\n score,\n mtime: statSync(file).mtimeMs,\n },\n ]\n } catch {\n return []\n }\n })\n .sort((left, right) => right.score - left.score || right.mtime - left.mtime)\n .map(({ url, authToken, source }) => ({ url, authToken, source }))[0]\n } catch {\n return undefined\n }\n}\n\nexport const editorIntegration = {\n connection: discoverEditorConnection,\n selection: (directory: string) => resolveZedSelection(resolveZedDbPath() ?? \"\", directory),\n}\n", | ||
| "export { Database } from \"bun:sqlite\"\n", | ||
| "import { Database } from \"#zed-sqlite\"\nimport { statSync } from \"node:fs\"\nimport { readFile as readFileAsync } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { Option, Schema } from \"effect\"\nimport type { EditorSelection } from \"./context/editor\"\n\nconst ZedEditorRowSchema = Schema.Struct({\n item_kind: Schema.String,\n editor_id: Schema.NullOr(Schema.Number),\n workspace_id: Schema.Number,\n workspace_paths: Schema.NullOr(Schema.String),\n timestamp: Schema.String,\n buffer_path: Schema.NullOr(Schema.String),\n})\n\nconst ZedSelectionRowSchema = Schema.Struct({\n selection_start: Schema.NullOr(Schema.Number),\n selection_end: Schema.NullOr(Schema.Number),\n})\n\nconst ZedEditorContentsSchema = Schema.Struct({\n contents: Schema.NullOr(Schema.String),\n})\n\nconst decodeZedEditorRow = Schema.decodeUnknownOption(ZedEditorRowSchema)\nconst decodeZedSelectionRow = Schema.decodeUnknownOption(ZedSelectionRowSchema)\nconst decodeZedEditorContents = Schema.decodeUnknownOption(ZedEditorContentsSchema)\n\nconst utf8 = new TextEncoder()\n\ntype ZedEditorRow = Schema.Schema.Type<typeof ZedEditorRowSchema>\ntype ZedActiveEditorRow = ZedEditorRow & { item_kind: \"Editor\"; editor_id: number }\n\nexport type ZedSelectionResult =\n | { type: \"selection\"; selection: EditorSelection }\n | { type: \"empty\" }\n | { type: \"unavailable\" }\n\nexport async function resolveZedSelection(dbPath: string, cwd = process.cwd()): Promise<ZedSelectionResult> {\n const active = queryZedActiveEditor(dbPath, cwd)\n if (active.type !== \"row\") return active\n\n const row = active.row\n if (!row.buffer_path) return { type: \"empty\" }\n\n const selections = queryZedEditorSelections(dbPath, row)\n if (selections.type !== \"selections\") return selections\n const byteRanges = selections.selections\n .flatMap((selection) => {\n if (selection.selection_start == null || selection.selection_end == null) return []\n return [\n {\n start: Math.min(selection.selection_start, selection.selection_end),\n end: Math.max(selection.selection_start, selection.selection_end),\n },\n ]\n })\n .sort((left, right) => left.start - right.start || left.end - right.end)\n if (byteRanges.length === 0) return { type: \"unavailable\" }\n\n const contents = queryZedEditorContents(dbPath, row)\n const text =\n contents.type === \"contents\" && contents.contents != null\n ? contents.contents\n : await readFileAsync(row.buffer_path, \"utf8\").catch(() => undefined)\n if (text == null) return { type: \"unavailable\" }\n\n const ranges = byteRanges.map((range) => {\n const startOffset = utf8ByteOffsetToStringIndex(text, range.start)\n const endOffset = utf8ByteOffsetToStringIndex(text, range.end)\n return {\n text: text.slice(startOffset, endOffset),\n selection: offsetsToSelection(text, startOffset, endOffset),\n }\n })\n\n return {\n type: \"selection\",\n selection: {\n filePath: row.buffer_path,\n source: \"zed\",\n ranges,\n },\n }\n}\n\nfunction queryZedActiveEditor(dbPath: string, cwd: string) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const raw = db\n .query(\n `select\n i.kind as item_kind,\n e.item_id as editor_id,\n i.workspace_id as workspace_id,\n w.paths as workspace_paths,\n w.timestamp as timestamp,\n e.buffer_path as buffer_path\n from items i\n join panes p on p.pane_id = i.pane_id and p.workspace_id = i.workspace_id\n join workspaces w on w.workspace_id = i.workspace_id\n left join editors e on e.item_id = i.item_id and e.workspace_id = i.workspace_id\n where i.active = 1 and p.active = 1\n order by w.timestamp desc`,\n )\n .all()\n\n const rows = raw.flatMap((row) => {\n const parsed = decodeZedEditorRow(row)\n return Option.isSome(parsed) ? [parsed.value] : []\n })\n\n if (raw.length > 0 && rows.length === 0) return { type: \"unavailable\" as const }\n\n const row = rows\n .map((row) => ({ row, score: scoreZedWorkspace(row.workspace_paths, cwd) }))\n .filter((entry) => entry.score > 0)\n .sort((left, right) => right.score - left.score || right.row.timestamp.localeCompare(left.row.timestamp))[0]?.row\n if (!row) return { type: \"empty\" as const }\n if (row.item_kind !== \"Editor\") return { type: \"unavailable\" as const }\n if (!isZedActiveEditorRow(row)) return { type: \"empty\" as const }\n return { type: \"row\" as const, row }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction queryZedEditorSelections(dbPath: string, row: ZedActiveEditorRow) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const raw = db\n .query(\n `select\n start as selection_start,\n end as selection_end\n from editor_selections\n where editor_id = $editorID and workspace_id = $workspaceID`,\n )\n .all({ $editorID: row.editor_id, $workspaceID: row.workspace_id })\n\n const selections = raw.flatMap((selection) => {\n const parsed = decodeZedSelectionRow(selection)\n return Option.isSome(parsed) ? [parsed.value] : []\n })\n\n if (raw.length > 0 && selections.length === 0) return { type: \"unavailable\" as const }\n return { type: \"selections\" as const, selections }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction queryZedEditorContents(dbPath: string, row: ZedActiveEditorRow) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const parsed = decodeZedEditorContents(\n db\n .query(\n `select contents\n from editors\n where item_id = $editorID and workspace_id = $workspaceID`,\n )\n .get({ $editorID: row.editor_id, $workspaceID: row.workspace_id }),\n )\n if (Option.isNone(parsed)) return { type: \"unavailable\" as const }\n return { type: \"contents\" as const, contents: parsed.value.contents }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction isZedActiveEditorRow(row: ZedEditorRow): row is ZedActiveEditorRow {\n return row.item_kind === \"Editor\" && row.editor_id != null\n}\n\nexport function resolveZedDbPath() {\n const candidates = [\n process.env.OPENCODE_ZED_DB,\n path.join(os.homedir(), \"Library\", \"Application Support\", \"Zed\", \"db\", \"0-stable\", \"db.sqlite\"),\n path.join(os.homedir(), \".local\", \"share\", \"zed\", \"db\", \"0-stable\", \"db.sqlite\"),\n ].filter((item): item is string => Boolean(item))\n\n return candidates.find((item) => isFile(item))\n}\n\nfunction isFile(item: string) {\n try {\n return statSync(item).isFile()\n } catch {\n return false\n }\n}\n\nfunction scoreZedWorkspace(workspacePaths: string | null, cwd: string) {\n return zedWorkspacePaths(workspacePaths).reduce((score, item) => {\n if (pathContains(item, cwd)) return Math.max(score, path.resolve(item).length)\n return score\n }, 0)\n}\n\nfunction zedWorkspacePaths(value: string | null) {\n if (!value) return []\n const parsed = parseJson(value)\n if (Array.isArray(parsed)) return parsed.filter((item): item is string => typeof item === \"string\")\n return value.split(/\\r?\\n/).filter(Boolean)\n}\n\nfunction utf8ByteOffsetToStringIndex(text: string, byteOffset: number) {\n if (byteOffset <= 0) return 0\n\n let bytes = 0\n for (let index = 0; index < text.length; ) {\n const codePoint = text.codePointAt(index)\n if (codePoint === undefined) return text.length\n\n const nextIndex = index + (codePoint > 0xffff ? 2 : 1)\n bytes += utf8.encode(text.slice(index, nextIndex)).length\n if (bytes >= byteOffset) return nextIndex\n index = nextIndex\n }\n\n return text.length\n}\n\nfunction offsetsToSelection(text: string, startOffset: number, endOffset: number) {\n const start = Math.max(0, Math.min(startOffset, text.length))\n const end = Math.max(0, Math.min(endOffset, text.length))\n let line = 1\n let lineStart = 0\n let startPosition = position(line, lineStart, start)\n let endPosition = position(line, lineStart, end)\n\n for (let index = 0; index <= end; index++) {\n if (index === start) startPosition = position(line, lineStart, index)\n if (index === end) {\n endPosition = position(line, lineStart, index)\n break\n }\n if (text[index] === \"\\n\") {\n line += 1\n lineStart = index + 1\n }\n }\n\n return { start: startPosition, end: endPosition }\n}\n\nfunction position(line: number, lineStart: number, offset: number) {\n return {\n line,\n character: offset - lineStart + 1,\n }\n}\n\nfunction pathContains(parent: string, child: string) {\n const relative = path.relative(path.resolve(parent), path.resolve(child))\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n}\n\nfunction parseJson(value: string) {\n try {\n return JSON.parse(value) as unknown\n } catch {\n return\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8F6AC31B9713216164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/status.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.status,\n Effect.fn(\"cli.service.status\")(function* () {\n const options = yield* ServiceConfig.options()\n const found = yield* Service.discover({ ...options, version: undefined })\n process.stdout.write((found?.url ?? \"stopped\") + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,OACnC,EAAO,GAAG,oBAAoB,EAAE,SAAU,EAAG,CAC3C,IAAM,EAAU,MAAO,EAAc,QAAQ,EACvC,EAAQ,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,EACxE,QAAQ,OAAO,OAAO,GAAO,KAAO,WAAa,CAAG,EACrD,CACH", | ||
| "debugId": "C52917D7849D674664756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/theme/system.ts"], | ||
| "sourcesContent": [ | ||
| "import { RGBA, type TerminalColors } from \"@opentui/core\"\nimport { ansiToRgba, tint } from \"./color\"\n\nexport function terminalMode(colors: TerminalColors): \"dark\" | \"light\" | undefined {\n const bg = colors.defaultBackground\n if (!bg) return\n const { r, g, b } = RGBA.fromHex(bg)\n return 0.299 * r + 0.587 * g + 0.114 * b > 0.5 ? \"light\" : \"dark\"\n}\n\nexport function generateSystem(colors: TerminalColors, mode: \"dark\" | \"light\") {\n const bg = RGBA.fromHex(colors.defaultBackground ?? colors.palette[0]!)\n const fg = RGBA.fromHex(colors.defaultForeground ?? colors.palette[7]!)\n const transparent = RGBA.fromValues(bg.r, bg.g, bg.b, 0)\n const isDark = mode === \"dark\"\n\n const col = (index: number) => {\n const value = colors.palette[index]\n if (value) return RGBA.fromHex(value)\n return ansiToRgba(index)\n }\n\n const grays = generateGrayScale(bg, isDark)\n const textMuted = generateMutedTextColor(bg, isDark)\n const ansiColors = {\n red: col(1),\n green: col(2),\n yellow: col(3),\n blue: col(4),\n magenta: col(5),\n cyan: col(6),\n redBright: col(9),\n greenBright: col(10),\n }\n\n const diffAlpha = isDark ? 0.22 : 0.14\n const diffAddedBg = tint(bg, ansiColors.green, diffAlpha)\n const diffRemovedBg = tint(bg, ansiColors.red, diffAlpha)\n const diffContextBg = grays[2]\n const diffAddedLineNumberBg = tint(diffContextBg, ansiColors.green, diffAlpha)\n const diffRemovedLineNumberBg = tint(diffContextBg, ansiColors.red, diffAlpha)\n\n return {\n theme: {\n primary: ansiColors.cyan,\n secondary: ansiColors.magenta,\n accent: ansiColors.cyan,\n error: ansiColors.red,\n warning: ansiColors.yellow,\n success: ansiColors.green,\n info: ansiColors.cyan,\n text: fg,\n textMuted,\n selectedListItemText: bg,\n background: transparent,\n backgroundPanel: grays[2],\n backgroundElement: grays[3],\n backgroundMenu: grays[3],\n borderSubtle: grays[6],\n border: grays[7],\n borderActive: grays[8],\n diffAdded: ansiColors.green,\n diffRemoved: ansiColors.red,\n diffContext: grays[7],\n diffHunkHeader: grays[7],\n diffHighlightAdded: ansiColors.greenBright,\n diffHighlightRemoved: ansiColors.redBright,\n diffAddedBg,\n diffRemovedBg,\n diffContextBg,\n diffLineNumber: textMuted,\n diffAddedLineNumberBg,\n diffRemovedLineNumberBg,\n markdownText: fg,\n markdownHeading: fg,\n markdownLink: ansiColors.blue,\n markdownLinkText: ansiColors.cyan,\n markdownCode: ansiColors.green,\n markdownBlockQuote: ansiColors.yellow,\n markdownEmph: ansiColors.yellow,\n markdownStrong: fg,\n markdownHorizontalRule: grays[7],\n markdownListItem: ansiColors.blue,\n markdownListEnumeration: ansiColors.cyan,\n markdownImage: ansiColors.blue,\n markdownImageText: ansiColors.cyan,\n markdownCodeBlock: fg,\n syntaxComment: textMuted,\n syntaxKeyword: ansiColors.magenta,\n syntaxFunction: ansiColors.blue,\n syntaxVariable: fg,\n syntaxString: ansiColors.green,\n syntaxNumber: ansiColors.yellow,\n syntaxType: ansiColors.cyan,\n syntaxOperator: ansiColors.cyan,\n syntaxPunctuation: fg,\n },\n }\n}\n\nfunction generateGrayScale(bg: RGBA, isDark: boolean): Record<number, RGBA> {\n const grays: Record<number, RGBA> = {}\n const bgR = bg.r * 255\n const bgG = bg.g * 255\n const bgB = bg.b * 255\n const luminance = 0.299 * bgR + 0.587 * bgG + 0.114 * bgB\n\n for (let i = 1; i <= 12; i++) {\n const factor = i / 12\n\n if (isDark && luminance < 10) {\n const gray = Math.floor(factor * 0.4 * 255)\n grays[i] = RGBA.fromInts(gray, gray, gray)\n continue\n }\n\n if (!isDark && luminance > 245) {\n const gray = Math.floor(255 - factor * 0.4 * 255)\n grays[i] = RGBA.fromInts(gray, gray, gray)\n continue\n }\n\n const next = isDark ? luminance + (255 - luminance) * factor * 0.4 : luminance * (1 - factor * 0.4)\n const ratio = next / luminance\n grays[i] = RGBA.fromInts(\n Math.floor(Math.min(Math.max(bgR * ratio, 0), 255)),\n Math.floor(Math.min(Math.max(bgG * ratio, 0), 255)),\n Math.floor(Math.min(Math.max(bgB * ratio, 0), 255)),\n )\n }\n\n return grays\n}\n\nfunction generateMutedTextColor(bg: RGBA, isDark: boolean): RGBA {\n const luminance = 0.299 * bg.r * 255 + 0.587 * bg.g * 255 + 0.114 * bg.b * 255\n if (isDark) {\n const gray = luminance < 10 ? 180 : Math.min(Math.floor(160 + luminance * 0.3), 200)\n return RGBA.fromInts(gray, gray, gray)\n }\n\n const gray = luminance > 245 ? 75 : Math.max(Math.floor(100 - (255 - luminance) * 0.2), 60)\n return RGBA.fromInts(gray, gray, gray)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "756DACC02E40355964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/aws4fetch@1.0.20/node_modules/aws4fetch/dist/aws4fetch.esm.mjs"], | ||
| "sourcesContent": [ | ||
| "/**\n * @license MIT <https://opensource.org/licenses/MIT>\n * @copyright Michael Hart 2024\n */\nconst encoder = new TextEncoder();\nconst HOST_SERVICES = {\n appstream2: 'appstream',\n cloudhsmv2: 'cloudhsm',\n email: 'ses',\n marketplace: 'aws-marketplace',\n mobile: 'AWSMobileHubService',\n pinpoint: 'mobiletargeting',\n queue: 'sqs',\n 'git-codecommit': 'codecommit',\n 'mturk-requester-sandbox': 'mturk-requester',\n 'personalize-runtime': 'personalize',\n};\nconst UNSIGNABLE_HEADERS = new Set([\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n 'presigned-expires',\n 'expect',\n 'x-amzn-trace-id',\n 'range',\n 'connection',\n]);\nclass AwsClient {\n constructor({ accessKeyId, secretAccessKey, sessionToken, service, region, cache, retries, initRetryMs }) {\n if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n this.accessKeyId = accessKeyId;\n this.secretAccessKey = secretAccessKey;\n this.sessionToken = sessionToken;\n this.service = service;\n this.region = region;\n this.cache = cache || new Map();\n this.retries = retries != null ? retries : 10;\n this.initRetryMs = initRetryMs || 50;\n }\n async sign(input, init) {\n if (input instanceof Request) {\n const { method, url, headers, body } = input;\n init = Object.assign({ method, url, headers }, init);\n if (init.body == null && headers.has('Content-Type')) {\n init.body = body != null && headers.has('X-Amz-Content-Sha256') ? body : await input.clone().arrayBuffer();\n }\n input = url;\n }\n const signer = new AwsV4Signer(Object.assign({ url: input.toString() }, init, this, init && init.aws));\n const signed = Object.assign({}, init, await signer.sign());\n delete signed.aws;\n try {\n return new Request(signed.url.toString(), signed)\n } catch (e) {\n if (e instanceof TypeError) {\n return new Request(signed.url.toString(), Object.assign({ duplex: 'half' }, signed))\n }\n throw e\n }\n }\n async fetch(input, init) {\n for (let i = 0; i <= this.retries; i++) {\n const fetched = fetch(await this.sign(input, init));\n if (i === this.retries) {\n return fetched\n }\n const res = await fetched;\n if (res.status < 500 && res.status !== 429) {\n return res\n }\n await new Promise(resolve => setTimeout(resolve, Math.random() * this.initRetryMs * Math.pow(2, i)));\n }\n throw new Error('An unknown error occurred, ensure retries is not negative')\n }\n}\nclass AwsV4Signer {\n constructor({ method, url, headers, body, accessKeyId, secretAccessKey, sessionToken, service, region, cache, datetime, signQuery, appendSessionToken, allHeaders, singleEncode }) {\n if (url == null) throw new TypeError('url is a required option')\n if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n this.method = method || (body ? 'POST' : 'GET');\n this.url = new URL(url);\n this.headers = new Headers(headers || {});\n this.body = body;\n this.accessKeyId = accessKeyId;\n this.secretAccessKey = secretAccessKey;\n this.sessionToken = sessionToken;\n let guessedService, guessedRegion;\n if (!service || !region) {\n[guessedService, guessedRegion] = guessServiceRegion(this.url, this.headers);\n }\n this.service = service || guessedService || '';\n this.region = region || guessedRegion || 'us-east-1';\n this.cache = cache || new Map();\n this.datetime = datetime || new Date().toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n this.signQuery = signQuery;\n this.appendSessionToken = appendSessionToken || this.service === 'iotdevicegateway';\n this.headers.delete('Host');\n if (this.service === 's3' && !this.signQuery && !this.headers.has('X-Amz-Content-Sha256')) {\n this.headers.set('X-Amz-Content-Sha256', 'UNSIGNED-PAYLOAD');\n }\n const params = this.signQuery ? this.url.searchParams : this.headers;\n params.set('X-Amz-Date', this.datetime);\n if (this.sessionToken && !this.appendSessionToken) {\n params.set('X-Amz-Security-Token', this.sessionToken);\n }\n this.signableHeaders = ['host', ...this.headers.keys()]\n .filter(header => allHeaders || !UNSIGNABLE_HEADERS.has(header))\n .sort();\n this.signedHeaders = this.signableHeaders.join(';');\n this.canonicalHeaders = this.signableHeaders\n .map(header => header + ':' + (header === 'host' ? this.url.host : (this.headers.get(header) || '').replace(/\\s+/g, ' ')))\n .join('\\n');\n this.credentialString = [this.datetime.slice(0, 8), this.region, this.service, 'aws4_request'].join('/');\n if (this.signQuery) {\n if (this.service === 's3' && !params.has('X-Amz-Expires')) {\n params.set('X-Amz-Expires', '86400');\n }\n params.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n params.set('X-Amz-Credential', this.accessKeyId + '/' + this.credentialString);\n params.set('X-Amz-SignedHeaders', this.signedHeaders);\n }\n if (this.service === 's3') {\n try {\n this.encodedPath = decodeURIComponent(this.url.pathname.replace(/\\+/g, ' '));\n } catch (e) {\n this.encodedPath = this.url.pathname;\n }\n } else {\n this.encodedPath = this.url.pathname.replace(/\\/+/g, '/');\n }\n if (!singleEncode) {\n this.encodedPath = encodeURIComponent(this.encodedPath).replace(/%2F/g, '/');\n }\n this.encodedPath = encodeRfc3986(this.encodedPath);\n const seenKeys = new Set();\n this.encodedSearch = [...this.url.searchParams]\n .filter(([k]) => {\n if (!k) return false\n if (this.service === 's3') {\n if (seenKeys.has(k)) return false\n seenKeys.add(k);\n }\n return true\n })\n .map(pair => pair.map(p => encodeRfc3986(encodeURIComponent(p))))\n .sort(([k1, v1], [k2, v2]) => k1 < k2 ? -1 : k1 > k2 ? 1 : v1 < v2 ? -1 : v1 > v2 ? 1 : 0)\n .map(pair => pair.join('='))\n .join('&');\n }\n async sign() {\n if (this.signQuery) {\n this.url.searchParams.set('X-Amz-Signature', await this.signature());\n if (this.sessionToken && this.appendSessionToken) {\n this.url.searchParams.set('X-Amz-Security-Token', this.sessionToken);\n }\n } else {\n this.headers.set('Authorization', await this.authHeader());\n }\n return {\n method: this.method,\n url: this.url,\n headers: this.headers,\n body: this.body,\n }\n }\n async authHeader() {\n return [\n 'AWS4-HMAC-SHA256 Credential=' + this.accessKeyId + '/' + this.credentialString,\n 'SignedHeaders=' + this.signedHeaders,\n 'Signature=' + (await this.signature()),\n ].join(', ')\n }\n async signature() {\n const date = this.datetime.slice(0, 8);\n const cacheKey = [this.secretAccessKey, date, this.region, this.service].join();\n let kCredentials = this.cache.get(cacheKey);\n if (!kCredentials) {\n const kDate = await hmac('AWS4' + this.secretAccessKey, date);\n const kRegion = await hmac(kDate, this.region);\n const kService = await hmac(kRegion, this.service);\n kCredentials = await hmac(kService, 'aws4_request');\n this.cache.set(cacheKey, kCredentials);\n }\n return buf2hex(await hmac(kCredentials, await this.stringToSign()))\n }\n async stringToSign() {\n return [\n 'AWS4-HMAC-SHA256',\n this.datetime,\n this.credentialString,\n buf2hex(await hash(await this.canonicalString())),\n ].join('\\n')\n }\n async canonicalString() {\n return [\n this.method.toUpperCase(),\n this.encodedPath,\n this.encodedSearch,\n this.canonicalHeaders + '\\n',\n this.signedHeaders,\n await this.hexBodyHash(),\n ].join('\\n')\n }\n async hexBodyHash() {\n let hashHeader = this.headers.get('X-Amz-Content-Sha256') || (this.service === 's3' && this.signQuery ? 'UNSIGNED-PAYLOAD' : null);\n if (hashHeader == null) {\n if (this.body && typeof this.body !== 'string' && !('byteLength' in this.body)) {\n throw new Error('body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header')\n }\n hashHeader = buf2hex(await hash(this.body || ''));\n }\n return hashHeader\n }\n}\nasync function hmac(key, string) {\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n typeof key === 'string' ? encoder.encode(key) : key,\n { name: 'HMAC', hash: { name: 'SHA-256' } },\n false,\n ['sign'],\n );\n return crypto.subtle.sign('HMAC', cryptoKey, encoder.encode(string))\n}\nasync function hash(content) {\n return crypto.subtle.digest('SHA-256', typeof content === 'string' ? encoder.encode(content) : content)\n}\nconst HEX_CHARS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\nfunction buf2hex(arrayBuffer) {\n const buffer = new Uint8Array(arrayBuffer);\n let out = '';\n for (let idx = 0; idx < buffer.length; idx++) {\n const n = buffer[idx];\n out += HEX_CHARS[(n >>> 4) & 0xF];\n out += HEX_CHARS[n & 0xF];\n }\n return out\n}\nfunction encodeRfc3986(urlEncodedStr) {\n return urlEncodedStr.replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase())\n}\nfunction guessServiceRegion(url, headers) {\n const { hostname, pathname } = url;\n if (hostname.endsWith('.on.aws')) {\n const match = hostname.match(/^[^.]{1,63}\\.lambda-url\\.([^.]{1,63})\\.on\\.aws$/);\n return match != null ? ['lambda', match[1] || ''] : ['', '']\n }\n if (hostname.endsWith('.r2.cloudflarestorage.com')) {\n return ['s3', 'auto']\n }\n if (hostname.endsWith('.backblazeb2.com')) {\n const match = hostname.match(/^(?:[^.]{1,63}\\.)?s3\\.([^.]{1,63})\\.backblazeb2\\.com$/);\n return match != null ? ['s3', match[1] || ''] : ['', '']\n }\n const match = hostname.replace('dualstack.', '').match(/([^.]{1,63})\\.(?:([^.]{0,63})\\.)?amazonaws\\.com(?:\\.cn)?$/);\n let service = (match && match[1]) || '';\n let region = match && match[2];\n if (region === 'us-gov') {\n region = 'us-gov-west-1';\n } else if (region === 's3' || region === 's3-accelerate') {\n region = 'us-east-1';\n service = 's3';\n } else if (service === 'iot') {\n if (hostname.startsWith('iot.')) {\n service = 'execute-api';\n } else if (hostname.startsWith('data.jobs.iot.')) {\n service = 'iot-jobs-data';\n } else {\n service = pathname === '/mqtt' ? 'iotdevicegateway' : 'iotdata';\n }\n } else if (service === 'autoscaling') {\n const targetPrefix = (headers.get('X-Amz-Target') || '').split('.')[0];\n if (targetPrefix === 'AnyScaleFrontendService') {\n service = 'application-autoscaling';\n } else if (targetPrefix === 'AnyScaleScalingPlannerFrontendService') {\n service = 'autoscaling-plans';\n }\n } else if (region == null && service.startsWith('s3-')) {\n region = service.slice(3).replace(/^fips-|^external-1/, '');\n service = 's3';\n } else if (service.endsWith('-fips')) {\n service = service.slice(0, -5);\n } else if (region && /-\\d$/.test(service) && !/-\\d$/.test(region)) {\n[service, region] = [region, service];\n }\n return [HOST_SERVICES[service] || service, region || '']\n}\n\nexport { AwsClient, AwsV4Signer };\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "C0308B3C55F2D11A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/google-images.ts", "../ai/src/providers/google.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest } from \"effect/unstable/http\"\nimport {\n GeneratedImage,\n ImageModel,\n ImageResponse,\n type ImageInput,\n type ImageRequestFor,\n type ImageRoute,\n} from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n type ProviderMetadata,\n} from \"../schema/index.js\"\nimport { ProviderShared } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\n\nconst ADAPTER = \"google-images\"\nexport const DEFAULT_BASE_URL = \"https://generativelanguage.googleapis.com/v1beta\"\n\nexport type GoogleImageString<Known extends string> = Known | (string & {})\n\nexport type GoogleImageOptions = {\n readonly aspectRatio?: GoogleImageString<\n \"1:1\" | \"2:3\" | \"3:2\" | \"3:4\" | \"4:3\" | \"4:5\" | \"5:4\" | \"9:16\" | \"16:9\" | \"21:9\"\n >\n readonly imageSize?: GoogleImageString<\"1K\" | \"2K\" | \"4K\">\n readonly seed?: number\n readonly thinkingLevel?: GoogleImageString<\"MINIMAL\" | \"LOW\" | \"MEDIUM\" | \"HIGH\">\n readonly includeThoughts?: boolean\n} & Record<string, unknown>\n\nexport type GoogleImageBody = Record<string, unknown> & {\n readonly contents: ReadonlyArray<{\n readonly role: \"user\"\n readonly parts: ReadonlyArray<Record<string, unknown>>\n }>\n readonly generationConfig: Record<string, unknown>\n}\n\nconst GoogleUsage = Schema.StructWithRest(\n Schema.Struct({\n cachedContentTokenCount: Schema.optional(Schema.Number),\n thoughtsTokenCount: Schema.optional(Schema.Number),\n promptTokenCount: Schema.optional(Schema.Number),\n candidatesTokenCount: Schema.optional(Schema.Number),\n totalTokenCount: Schema.optional(Schema.Number),\n promptTokensDetails: Schema.optional(Schema.Unknown),\n candidatesTokensDetails: Schema.optional(Schema.Unknown),\n }),\n [Schema.Record(Schema.String, Schema.Unknown)],\n)\n\nconst GoogleImageResponse = Schema.Struct({\n candidates: Schema.optional(\n Schema.Array(\n Schema.Struct({\n index: Schema.optional(Schema.Number),\n content: Schema.optional(\n Schema.Struct({\n parts: Schema.Array(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n thought: Schema.optional(Schema.Boolean),\n thoughtSignature: Schema.optional(Schema.String),\n inlineData: Schema.optional(\n Schema.Struct({\n mimeType: Schema.String,\n data: Schema.String,\n }),\n ),\n }),\n ),\n }),\n ),\n finishReason: Schema.optional(Schema.String),\n finishMessage: Schema.optional(Schema.String),\n safetyRatings: Schema.optional(Schema.Unknown),\n citationMetadata: Schema.optional(Schema.Unknown),\n groundingMetadata: Schema.optional(Schema.Unknown),\n }),\n ),\n ),\n usageMetadata: Schema.optional(GoogleUsage),\n modelVersion: Schema.optional(Schema.String),\n responseId: Schema.optional(Schema.String),\n promptFeedback: Schema.optional(Schema.Unknown),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: GoogleImageOptions | undefined) => {\n const { aspectRatio, imageSize, seed, thinkingLevel, includeThoughts, ...native } = options ?? {}\n const image = {\n aspectRatio,\n imageSize,\n }\n const thinkingConfig = {\n thinkingLevel,\n includeThoughts,\n }\n return (\n mergeJsonRecords(\n {\n responseModalities: [\"IMAGE\"],\n imageConfig: Object.values(image).some((value) => value !== undefined) ? image : undefined,\n seed,\n thinkingConfig: Object.values(thinkingConfig).some((value) => value !== undefined) ? thinkingConfig : undefined,\n },\n native,\n ) ?? { responseModalities: [\"IMAGE\"] }\n )\n}\n\nconst invalidOutput = (message: string, providerMetadata?: ProviderMetadata) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER, providerMetadata }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<GoogleImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"GoogleImages.generate\")(function* (request: ImageRequestFor<GoogleImageOptions>, execute) {\n const imageParts = yield* Effect.forEach(request.images ?? [], googleImagePart)\n const http = mergeHttpOptions(request.model.http, request.http)\n const requestBody = mergeJsonRecords(\n {\n contents: [{ role: \"user\", parts: [{ text: request.prompt }, ...imageParts] }],\n generationConfig: nativeOptions(request.options),\n },\n http?.body,\n ) as GoogleImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const url = applyQuery(\n `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}/models/${request.model.id}:generateContent`,\n http?.query,\n )\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the Google Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(GoogleImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"Google Images returned an invalid response\")),\n )\n const candidates = decoded.candidates ?? []\n const candidateMetadata = candidates.map((candidate, candidateIndex) => ({\n index: candidate.index ?? candidateIndex,\n finishReason: candidate.finishReason,\n finishMessage: candidate.finishMessage,\n safetyRatings: candidate.safetyRatings,\n citationMetadata: candidate.citationMetadata,\n groundingMetadata: candidate.groundingMetadata,\n parts: (candidate.content?.parts ?? []).map((part) =>\n part.inlineData === undefined\n ? {\n type: \"text\",\n text: part.text,\n thought: part.thought,\n thoughtSignature: part.thoughtSignature,\n }\n : {\n type: \"inlineData\",\n mediaType: part.inlineData.mimeType,\n thought: part.thought,\n thoughtSignature: part.thoughtSignature,\n },\n ),\n }))\n const encoded = candidates.flatMap((candidate, candidateIndex) =>\n (candidate.content?.parts ?? []).flatMap((part, partIndex) =>\n part.inlineData === undefined || part.thought === true\n ? []\n : [{ candidate, candidateIndex, partIndex, inlineData: part.inlineData }],\n ),\n )\n const images = yield* Effect.forEach(encoded, (item) =>\n Effect.fromResult(Encoding.decodeBase64(item.inlineData.data)).pipe(\n Effect.mapError(() =>\n invalidOutput(\n `Google Images candidate ${item.candidateIndex} part ${item.partIndex} contains invalid base64 data`,\n ),\n ),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType: item.inlineData.mimeType,\n data,\n providerMetadata: {\n google: {\n candidateIndex: item.candidate.index ?? item.candidateIndex,\n partIndex: item.partIndex,\n finishReason: item.candidate.finishReason,\n safetyRatings: item.candidate.safetyRatings,\n citationMetadata: item.candidate.citationMetadata,\n groundingMetadata: item.candidate.groundingMetadata,\n thoughtSignature: item.candidate.content?.parts[item.partIndex]?.thoughtSignature,\n },\n },\n }),\n ),\n ),\n )\n if (images.length === 0) {\n const finishReasons = candidates.flatMap((candidate) =>\n candidate.finishReason === undefined ? [] : [candidate.finishReason],\n )\n return yield* invalidOutput(\n `Google Images returned no final images${\n finishReasons.length === 0 ? \"\" : ` (finish reasons: ${finishReasons.join(\", \")})`\n }; inspect reason.providerMetadata.google for prompt feedback and candidate details`,\n {\n google: {\n promptFeedback: decoded.promptFeedback,\n candidates: candidateMetadata,\n },\n },\n )\n }\n const usage = decoded.usageMetadata\n const outputTokens =\n usage?.candidatesTokenCount === undefined\n ? undefined\n : usage.candidatesTokenCount + (usage.thoughtsTokenCount ?? 0)\n return new ImageResponse({\n images,\n usage:\n usage === undefined\n ? undefined\n : new Usage({\n inputTokens: usage.promptTokenCount,\n outputTokens,\n nonCachedInputTokens: ProviderShared.subtractTokens(\n usage.promptTokenCount,\n usage.cachedContentTokenCount,\n ),\n cacheReadInputTokens: usage.cachedContentTokenCount,\n reasoningTokens: usage.thoughtsTokenCount,\n totalTokens: ProviderShared.totalTokens(usage.promptTokenCount, outputTokens, usage.totalTokenCount),\n providerMetadata: { google: usage },\n }),\n providerMetadata: {\n google: {\n modelVersion: decoded.modelVersion,\n responseId: decoded.responseId,\n promptFeedback: decoded.promptFeedback,\n candidates: candidateMetadata,\n },\n },\n })\n }),\n }\n return ImageModel.make<GoogleImageOptions>({ id: input.id, provider: \"google\", route, http: input.http })\n}\n\nconst googleImagePart = (image: ImageInput): Effect.Effect<Record<string, unknown>, AIError> => {\n if (image.type === \"bytes\")\n return Effect.succeed({ inlineData: { mimeType: image.mediaType, data: Encoding.encodeBase64(image.data) } })\n if (image.type === \"file-uri\") return Effect.succeed({ fileData: { mimeType: image.mediaType, fileUri: image.uri } })\n if (image.type === \"url\")\n return ImageInputs.decodeDataUrl(image.url, ADAPTER).pipe(\n Effect.flatMap((decoded) => {\n if (decoded === undefined)\n return Effect.fail(\n ImageInputs.invalid(\n ADAPTER,\n \"Google generateContent does not fetch public image URLs; use bytes, a data URL, or a Gemini file URI\",\n ),\n )\n return Effect.succeed({\n inlineData: { mimeType: decoded.mediaType, data: Encoding.encodeBase64(decoded.data) },\n })\n }),\n )\n return Effect.fail(\n ImageInputs.invalid(ADAPTER, \"Google generateContent requires Gemini file URIs rather than provider file IDs\"),\n )\n}\n\nexport const GoogleImages = {\n model,\n} as const\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { HttpOptions, ProviderID, mergeHttpOptions, type ModelID } from \"../schema/index.js\"\nimport { Gemini } from \"../protocols/gemini.js\"\nimport { GoogleImages } from \"../protocols/google-images.js\"\n\nexport type { GoogleImageOptions } from \"../protocols/google-images.js\"\nexport type GeminiOptionsInput = Gemini.OptionsInput\nexport type GeminiProviderOptionsInput = Gemini.ProviderOptionsInput\n\nexport const id = ProviderID.make(\"google\")\n\nexport const routes = [Gemini.route]\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: Gemini.ProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: Gemini.ProviderOptionsInput\n}\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in options && options.auth) return options.auth\n return Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"GOOGLE_GENERATIVE_AI_API_KEY\"))\n .pipe(Auth.header(\"x-goog-api-key\"))\n}\n\nconst configuredRoute = (input: Config) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return Gemini.route.with({ ...rest, endpoint: { baseURL }, auth: auth(input) })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n const image = (modelID: string | ModelID) =>\n GoogleImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL,\n headers: input.headers,\n http: mergeHttpOptions(input.http === undefined ? undefined : HttpOptions.make(input.http)),\n })\n return {\n id,\n model: (modelID: string | ModelID) => route.model<Gemini.ProviderOptionsInput>({ id: modelID }),\n image,\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, Gemini.ProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "3FF24934D24877A764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "45D6D6A93304CD9D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mini.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Effect, FileSystem, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { Config } from \"../../config\"\nimport { resolve } from \"@opencode-ai/tui/config\"\nimport { Global } from \"@opencode-ai/util/global\"\n\nexport default Runtime.handler(Commands.commands.mini, (input) =>\n Effect.gen(function* () {\n const { runMini, validateMiniTerminal } = yield* Effect.promise(() => import(\"../../mini\"))\n yield* Effect.promise(async () => validateMiniTerminal())\n const serverURL = Option.getOrUndefined(input.server)\n const server = yield* ServerConnection.resolve({\n server: serverURL,\n standalone: input.standalone,\n mismatch: \"replace\",\n })\n const config = yield* Config.Service\n const global = yield* Global.Service\n const resolved = resolve(yield* config.get(), { terminalSuspend: process.platform !== \"win32\" })\n const fileSystem = yield* FileSystem.FileSystem\n const runServicePromise = Effect.runPromiseWith(Context.make(FileSystem.FileSystem, fileSystem))\n const service = server.service\n yield* Effect.promise(() =>\n runMini({\n server: {\n endpoint: server.endpoint,\n reconnect: service ? (signal) => runServicePromise(service.reconnect(), { signal }) : undefined,\n },\n continue: input.continue,\n session: Option.getOrUndefined(input.session),\n fork: input.fork,\n model: Option.getOrUndefined(input.model),\n agent: Option.getOrUndefined(input.agent),\n prompt: Option.getOrUndefined(input.prompt),\n replay: Option.getOrUndefined(input.replay) ?? resolved.mini?.replay ?? true,\n replayLimit: Option.getOrUndefined(input.replayLimit) ?? resolved.mini?.replay_limit,\n demo: input.demo,\n tuiConfig: resolved,\n config: {\n update: (update) => runServicePromise(config.update(update)),\n },\n paths: { home: global.home, state: global.state, log: global.log },\n }),\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";qkCAQA,IAAe,IAAQ,QAAQ,EAAS,SAAS,KAAM,CAAC,IACtD,EAAO,IAAI,SAAU,EAAG,CACtB,IAAQ,UAAS,wBAAyB,MAAO,EAAO,QAAQ,IAAa,wCAAa,EAC1F,MAAO,EAAO,QAAQ,SAAY,EAAqB,CAAC,EACxD,IAAM,EAAY,EAAO,eAAe,EAAM,MAAM,EAC9C,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EACR,WAAY,EAAM,WAClB,SAAU,SACZ,CAAC,EACK,EAAS,MAAO,EAAO,QACvB,EAAS,MAAO,EAAO,QACvB,EAAW,EAAQ,MAAO,EAAO,IAAI,EAAG,CAAE,gBAAiB,EAA6B,CAAC,EACzF,EAAa,MAAO,EAAW,WAC/B,EAAoB,EAAO,eAAe,EAAQ,KAAK,EAAW,WAAY,CAAU,CAAC,EACzF,EAAU,EAAO,QACvB,MAAO,EAAO,QAAQ,IACpB,EAAQ,CACN,OAAQ,CACN,SAAU,EAAO,SACjB,UAAW,EAAU,CAAC,IAAW,EAAkB,EAAQ,UAAU,EAAG,CAAE,QAAO,CAAC,EAAI,MACxF,EACA,SAAU,EAAM,SAChB,QAAS,EAAO,eAAe,EAAM,OAAO,EAC5C,KAAM,EAAM,KACZ,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,OAAQ,EAAO,eAAe,EAAM,MAAM,GAAK,EAAS,MAAM,QAAU,GACxE,YAAa,EAAO,eAAe,EAAM,WAAW,GAAK,EAAS,MAAM,aACxE,KAAM,EAAM,KACZ,UAAW,EACX,OAAQ,CACN,OAAQ,CAAC,IAAW,EAAkB,EAAO,OAAO,CAAM,CAAC,CAC7D,EACA,MAAO,CAAE,KAAM,EAAO,KAAM,MAAO,EAAO,MAAO,IAAK,EAAO,GAAI,CACnE,CAAC,CACH,EACD,CACH", | ||
| "debugId": "AC0C7238FB75614064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/lifecycle.ts", "../ai/src/protocols/utils/gemini-tool-schema.ts", "../ai/src/protocols/utils/tool-schema.ts"], | ||
| "sourcesContent": [ | ||
| "import { LLMEvent, type FinishReasonDetails, type ProviderMetadata, type Usage } from \"../../schema/index.js\"\n\nexport interface State {\n readonly stepStarted: boolean\n readonly text: ReadonlySet<string>\n readonly reasoning: ReadonlySet<string>\n}\n\nexport const initial = (): State => ({ stepStarted: false, text: new Set(), reasoning: new Set() })\n\nexport const stepStart = (state: State, events: LLMEvent[]): State => {\n if (state.stepStarted) return state\n events.push(LLMEvent.stepStart({ index: 0 }))\n return { ...state, stepStarted: true }\n}\n\nexport const textStart = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => {\n if (state.text.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.textStart({ id, providerMetadata }))\n return { ...stepped, text: new Set([...stepped.text, id]) }\n}\n\nexport const textDelta = (\n state: State,\n events: LLMEvent[],\n id: string,\n text: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n const started = textStart(state, events, id)\n events.push(LLMEvent.textDelta({ id, text, providerMetadata }))\n return started\n}\n\nexport const reasoningStart = (\n state: State,\n events: LLMEvent[],\n id: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n if (state.reasoning.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.reasoningStart({ id, providerMetadata }))\n return { ...stepped, reasoning: new Set([...stepped.reasoning, id]) }\n}\n\nexport const reasoningDelta = (\n state: State,\n events: LLMEvent[],\n id: string,\n text: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n const started = reasoningStart(state, events, id, providerMetadata)\n events.push(LLMEvent.reasoningDelta({ id, text, providerMetadata }))\n return started\n}\n\nexport const reasoningEnd = (\n state: State,\n events: LLMEvent[],\n id: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n if (!state.reasoning.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.reasoningEnd({ id, providerMetadata }))\n const reasoning = new Set(stepped.reasoning)\n reasoning.delete(id)\n return { ...stepped, reasoning }\n}\n\nexport const textEnd = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => {\n if (!state.text.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.textEnd({ id, providerMetadata }))\n const text = new Set(stepped.text)\n text.delete(id)\n return { ...stepped, text }\n}\n\nconst closeOpenBlocks = (state: State, events: LLMEvent[]): State => {\n for (const id of state.reasoning) events.push(LLMEvent.reasoningEnd({ id }))\n for (const id of state.text) events.push(LLMEvent.textEnd({ id }))\n return { ...state, text: new Set(), reasoning: new Set() }\n}\n\nexport const finish = (\n state: State,\n events: LLMEvent[],\n input: {\n readonly reason: FinishReasonDetails\n readonly usage?: Usage\n readonly providerMetadata?: ProviderMetadata\n },\n): State => {\n const stepped = closeOpenBlocks(stepStart(state, events), events)\n events.push(\n LLMEvent.stepFinish({\n index: 0,\n reason: input.reason,\n usage: input.usage,\n providerMetadata: input.providerMetadata,\n }),\n LLMEvent.finish(input),\n )\n return { ...stepped, stepStarted: false }\n}\n\nexport * as Lifecycle from \"./lifecycle.js\"\n", | ||
| "import { isRecord } from \"../../utils/record.js\"\n\n// Gemini accepts a JSON Schema-like dialect for tool parameters, but rejects a\n// handful of common JSON Schema shapes. Keep this projection isolated so the\n// Gemini protocol file still reads like the other protocol modules.\nconst SCHEMA_INTENT_KEYS = [\n \"type\",\n \"properties\",\n \"items\",\n \"prefixItems\",\n \"enum\",\n \"const\",\n \"$ref\",\n \"additionalProperties\",\n \"patternProperties\",\n \"required\",\n \"not\",\n \"if\",\n \"then\",\n \"else\",\n]\n\nconst hasCombiner = (schema: unknown) =>\n isRecord(schema) && (Array.isArray(schema.anyOf) || Array.isArray(schema.oneOf) || Array.isArray(schema.allOf))\n\nconst hasSchemaIntent = (schema: unknown) =>\n isRecord(schema) && (hasCombiner(schema) || SCHEMA_INTENT_KEYS.some((key) => key in schema))\n\nconst sanitizeNode = (schema: unknown): unknown => {\n if (!isRecord(schema)) return Array.isArray(schema) ? schema.map(sanitizeNode) : schema\n\n const result: Record<string, unknown> = Object.fromEntries(\n Object.entries(schema).map(([key, value]) => [\n key,\n key === \"enum\" && Array.isArray(value) ? value.map(String) : sanitizeNode(value),\n ]),\n )\n\n if (Array.isArray(result.enum) && (result.type === \"integer\" || result.type === \"number\")) result.type = \"string\"\n\n const properties = result.properties\n if (result.type === \"object\" && isRecord(properties) && Array.isArray(result.required)) {\n result.required = result.required.filter((field) => typeof field === \"string\" && field in properties)\n }\n\n if (result.type === \"array\" && !hasCombiner(result)) {\n result.items = result.items ?? {}\n if (isRecord(result.items) && !hasSchemaIntent(result.items)) result.items = { ...result.items, type: \"string\" }\n }\n\n if (typeof result.type === \"string\" && result.type !== \"object\" && !hasCombiner(result)) {\n delete result.properties\n delete result.required\n }\n\n return result\n}\n\nconst emptyObjectSchema = (schema: Record<string, unknown>) =>\n schema.type === \"object\" &&\n (!isRecord(schema.properties) || Object.keys(schema.properties).length === 0) &&\n !schema.additionalProperties\n\nconst projectNode = (schema: unknown, nested = false): Record<string, unknown> | undefined => {\n if (!isRecord(schema)) return undefined\n if (!nested && emptyObjectSchema(schema)) return undefined\n const types = Array.isArray(schema.type) ? schema.type.filter((type) => type !== \"null\") : undefined\n const anyOf = Array.isArray(schema.anyOf) ? schema.anyOf : undefined\n const hasNullAnyOf = anyOf?.some((item) => isRecord(item) && item.type === \"null\") ?? false\n const anyOfTypes = hasNullAnyOf ? anyOf?.filter((item) => !isRecord(item) || item.type !== \"null\") : anyOf\n const flattenedAnyOf = hasNullAnyOf && anyOfTypes?.length === 1 ? projectNode(anyOfTypes[0], true) : undefined\n const result = Object.fromEntries(\n [\n [\"description\", schema.description],\n [\"required\", schema.required],\n [\"format\", schema.format],\n [\"type\", types ? (types.length === 0 ? \"null\" : undefined) : schema.type],\n [\n \"nullable\",\n (Array.isArray(schema.type) && schema.type.includes(\"null\") && types && types.length > 0) || hasNullAnyOf\n ? true\n : undefined,\n ],\n [\"enum\", schema.const !== undefined ? [schema.const] : schema.enum],\n [\n \"properties\",\n isRecord(schema.properties)\n ? Object.fromEntries(Object.entries(schema.properties).map(([key, value]) => [key, projectNode(value, true)]))\n : undefined,\n ],\n [\n \"items\",\n Array.isArray(schema.items)\n ? schema.items.map((item) => projectNode(item, true))\n : schema.items === undefined\n ? undefined\n : projectNode(schema.items, true),\n ],\n [\"allOf\", Array.isArray(schema.allOf) ? schema.allOf.map((item) => projectNode(item, true)) : undefined],\n [\n \"anyOf\",\n anyOfTypes\n ? hasNullAnyOf && anyOfTypes.length === 1\n ? undefined\n : anyOfTypes.map((item) => projectNode(item, true))\n : types && types.length > 0\n ? types.map((type) => ({ type }))\n : undefined,\n ],\n [\"oneOf\", Array.isArray(schema.oneOf) ? schema.oneOf.map((item) => projectNode(item, true)) : undefined],\n [\"minLength\", schema.minLength],\n ].filter((entry) => entry[1] !== undefined),\n )\n return flattenedAnyOf ? { ...result, ...flattenedAnyOf } : result\n}\n\nexport const convert = (schema: unknown) => projectNode(sanitizeNode(schema))\n\nexport * as GeminiToolSchema from \"./gemini-tool-schema.js\"\n", | ||
| "import type { JsonSchema, LanguageModelToolSchemaCompatibility } from \"../../schema/index.js\"\nimport { isRecord } from \"../../utils/record.js\"\nimport { GeminiToolSchema } from \"./gemini-tool-schema.js\"\n\nconst tupleItemsSchema = (items: ReadonlyArray<unknown>) => {\n const projected = items.map(moonshotNode)\n if (projected.length === 0) return {}\n if (projected.length === 1) return projected[0]\n return { anyOf: projected }\n}\n\nconst moonshotNode = (schema: unknown): unknown => {\n if (Array.isArray(schema)) return schema.map(moonshotNode)\n if (!isRecord(schema)) return schema\n if (typeof schema.$ref === \"string\") return { $ref: schema.$ref }\n return Object.fromEntries(\n Object.entries(schema).flatMap(([key, value]) => {\n if (key === \"items\" && Array.isArray(value)) return [[key, tupleItemsSchema(value)]]\n if (key === \"prefixItems\") {\n if (\"items\" in schema) return []\n return [[\"items\", tupleItemsSchema(Array.isArray(value) ? value : [])]]\n }\n if (key === \"unevaluatedItems\") return []\n return [[key, moonshotNode(value)]]\n }),\n )\n}\n\nconst moonshot = (schema: JsonSchema): JsonSchema => {\n const projected = moonshotNode(schema)\n return isRecord(projected) ? projected : {}\n}\n\nconst openAI = (schema: JsonSchema): JsonSchema => schema\nconst responses = openAI\n\nconst gemini = (schema: JsonSchema): JsonSchema => GeminiToolSchema.convert(schema) ?? {}\n\nconst modelCompatibility = (\n schema: JsonSchema,\n compatibility: LanguageModelToolSchemaCompatibility | undefined,\n): JsonSchema => {\n if (compatibility === undefined) return schema\n switch (compatibility) {\n case \"gemini\":\n return gemini(schema)\n case \"moonshot\":\n return moonshot(schema)\n }\n}\n\nexport const ToolSchemaProjection = {\n gemini,\n modelCompatibility,\n moonshot,\n openAI,\n responses,\n} as const\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "260921EFD4D3D46364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/import.ts"], | ||
| "sourcesContent": [ | ||
| "import { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Session } from \"@opencode-ai/schema/session\"\nimport { SessionTransfer } from \"@opencode-ai/schema/session-transfer\"\nimport { Effect, Option, Schema } from \"effect\"\nimport { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.import,\n Effect.fn(\"cli.import\")(function* (input) {\n const text = yield* Effect.tryPromise({\n try: () =>\n input.file.startsWith(\"http://\") || input.file.startsWith(\"https://\")\n ? fetch(input.file).then((response) => {\n if (!response.ok) throw new Error(`Failed to fetch session data: ${response.statusText}`)\n return response.text()\n })\n : Bun.file(input.file).text(),\n catch: (cause) =>\n new Error(`Failed to read session data: ${cause instanceof Error ? cause.message : String(cause)}`),\n })\n const data = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(SessionTransfer.Data))(text)\n const encoded = Schema.encodeSync(SessionTransfer.Data)(data)\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const location = yield* Effect.promise(() =>\n client.location.get({\n location: { directory: path.resolve(Option.getOrElse(input.directory, () => process.cwd())) },\n }),\n )\n const response = yield* Effect.promise(() =>\n fetch(new URL(\"/api/session/import\", server.endpoint.url), {\n method: \"POST\",\n headers: { ...Service.headers(server.endpoint), \"content-type\": \"application/json\" },\n body: JSON.stringify({\n ...encoded,\n location: { directory: location.directory, workspaceID: location.workspaceID },\n }),\n }),\n )\n if (response.status === 409) {\n process.stderr.write(`Session already exists${EOL}`)\n return\n }\n if (!response.ok) yield* Effect.fail(new Error(`Failed to import session: ${response.statusText}`))\n const imported = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.Struct({ data: Session.Info })))(\n yield* Effect.promise(() => response.text()),\n )\n process.stdout.write(`Imported session: ${imported.data.id}${EOL}`)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";03CAKA,cAAS,WACT,oBAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,SAAU,CAAC,EAAO,CACxC,IAAM,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IACH,EAAM,KAAK,WAAW,SAAS,GAAK,EAAM,KAAK,WAAW,UAAU,EAChE,MAAM,EAAM,IAAI,EAAE,KAAK,CAAC,IAAa,CACnC,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,iCAAiC,EAAS,YAAY,EACxF,OAAO,EAAS,KAAK,EACtB,EACD,IAAI,KAAK,EAAM,IAAI,EAAE,KAAK,EAChC,MAAO,CAAC,IACF,MAAM,gCAAgC,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAAG,CACtG,CAAC,EACK,EAAO,MAAO,EAAO,oBAAoB,EAAO,eAAe,EAAgB,IAAI,CAAC,EAAE,CAAI,EAC1F,EAAU,EAAO,WAAW,EAAgB,IAAI,EAAE,CAAI,EACtD,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EACK,EAAW,MAAO,EAAO,QAAQ,IACrC,EAAO,SAAS,IAAI,CAClB,SAAU,CAAE,UAAW,EAAK,QAAQ,EAAO,UAAU,EAAM,UAAW,IAAM,QAAQ,IAAI,CAAC,CAAC,CAAE,CAC9F,CAAC,CACH,EACM,EAAW,MAAO,EAAO,QAAQ,IACrC,MAAM,IAAI,IAAI,sBAAuB,EAAO,SAAS,GAAG,EAAG,CACzD,OAAQ,OACR,QAAS,IAAK,EAAQ,QAAQ,EAAO,QAAQ,EAAG,eAAgB,kBAAmB,EACnF,KAAM,KAAK,UAAU,IAChB,EACH,SAAU,CAAE,UAAW,EAAS,UAAW,YAAa,EAAS,WAAY,CAC/E,CAAC,CACH,CAAC,CACH,EACA,GAAI,EAAS,SAAW,IAAK,CAC3B,QAAQ,OAAO,MAAM,yBAAyB,GAAK,EACnD,OAEF,GAAI,CAAC,EAAS,GAAI,MAAO,EAAO,KAAS,MAAM,6BAA6B,EAAS,YAAY,CAAC,EAClG,IAAM,EAAW,MAAO,EAAO,oBAAoB,EAAO,eAAe,EAAO,OAAO,CAAE,KAAM,EAAQ,IAAK,CAAC,CAAC,CAAC,EAC7G,MAAO,EAAO,QAAQ,IAAM,EAAS,KAAK,CAAC,CAC7C,EACA,QAAQ,OAAO,MAAM,qBAAqB,EAAS,KAAK,KAAK,GAAK,EACnE,CACH", | ||
| "debugId": "D784A777A243D34464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/openai-image.ts", "../ai/src/protocols/openai-responses.ts", "../ai/src/providers/openai-options.ts"], | ||
| "sourcesContent": [ | ||
| "import { Schema } from \"effect\"\n\nconst dimensions = (value: string) => {\n const match = /^(\\d+)x(\\d+)$/.exec(value)\n if (!match) return undefined\n return { width: Number(match[1]), height: Number(match[2]) }\n}\n\nexport const Size = Schema.String.check(\n Schema.makeFilter((value) => {\n if (value === \"auto\") return undefined\n const parsed = dimensions(value)\n if (!parsed) return \"image size must be `auto` or `{width}x{height}`\"\n return parsed.width > 0 && parsed.height > 0 ? undefined : \"image dimensions must be positive integers\"\n }),\n)\n\nexport const OpenAIImage = {\n Size,\n} as const\n", | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Route } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { HttpTransport } from \"../route/transport/index.js\"\nimport { LLMRequest, type JsonSchema, type ToolDefinition } from \"../schema/index.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { optionalArray, ProviderShared } from \"./shared.js\"\nimport { OpenAIImage } from \"./utils/openai-image.js\"\nimport { ResponsesHostedTools } from \"./utils/responses-hosted-tools.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\nimport { OpenResponsesChannel } from \"./open-responses-channel.js\"\n\nconst ADAPTER = \"openai-responses\"\nconst NAME = \"OpenAI Responses\"\nconst WEBSOCKET_PROTOCOL_HEADER = \"responses_websockets=2026-02-06\"\nconst WEBSOCKET_ROTATE_AFTER_MS = 55 * 60 * 1000\nexport const DEFAULT_BASE_URL = \"https://api.openai.com/v1\"\nexport const PATH = OpenResponses.PATH\n\nconst OpenAIResponsesImageGenerationTool = Schema.Struct({\n type: Schema.tag(\"image_generation\"),\n action: Schema.optional(Schema.Literals([\"auto\", \"generate\", \"edit\"])),\n background: Schema.optional(Schema.Literals([\"auto\", \"opaque\", \"transparent\"])),\n input_fidelity: Schema.optional(Schema.Literals([\"low\", \"high\"])),\n output_compression: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 100 }))),\n output_format: Schema.optional(Schema.Literals([\"png\", \"jpeg\", \"webp\"])),\n partial_images: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n quality: Schema.optional(Schema.Literals([\"auto\", \"low\", \"medium\", \"high\"])),\n size: Schema.optional(OpenAIImage.Size),\n})\n\nconst OpenAIResponsesTools = Schema.Union([OpenResponses.Tool, OpenAIResponsesImageGenerationTool])\n\nconst OpenAIResponsesToolChoice = Schema.Union([\n OpenResponses.ToolChoice,\n Schema.Struct({ type: Schema.tag(\"image_generation\") }),\n])\n\nconst OpenAIResponsesCoreFields = {\n ...OpenResponses.coreFields,\n tools: optionalArray(OpenAIResponsesTools),\n tool_choice: Schema.optional(OpenAIResponsesToolChoice),\n}\n\nconst OpenAIResponsesBody = Schema.Struct({\n ...OpenAIResponsesCoreFields,\n stream: Schema.Literal(true),\n})\nexport type OpenAIResponsesBody = Schema.Schema.Type<typeof OpenAIResponsesBody>\n\n// Replayed items are paired with stored server state by id, so a foreign or\n// synthetic token can fail request validation even when `call_id` pairing is\n// intact. Only resend ids in each item kind's own grammar; hosted tool\n// references keep generic validation because every hosted tool mints its own\n// prefix. The same allowlist approach codex uses before resending history\n// (codex-rs core/src/client.rs, `prepare_response_items_for_request`).\nconst ITEM_ID_PREFIXES: Record<OpenResponses.ItemKind, ReadonlyArray<string>> = {\n message: [\"msg_\"],\n reasoning: [\"rs_\"],\n \"function-call\": [\"fc_\"],\n // Every hosted tool mints its own id prefix, so references keep generic\n // validation only.\n reference: [],\n}\n\nconst extension = {\n id: ADAPTER,\n name: NAME,\n acceptsItemID: (kind: OpenResponses.ItemKind, id: string) => {\n const prefixes = ITEM_ID_PREFIXES[kind]\n return prefixes.length === 0 || prefixes.some((prefix) => id.startsWith(prefix))\n },\n} satisfies OpenResponses.Extension\n\nconst nativeImageToolInput = (tool: ToolDefinition) => {\n const native = tool.native?.openai\n return ProviderShared.isRecord(native) && native.type === \"image_generation\" ? native : undefined\n}\n\nconst nativeImageTool = (tool: ToolDefinition) => {\n const native = nativeImageToolInput(tool)\n return Schema.is(OpenAIResponsesImageGenerationTool)(native) ? native : undefined\n}\n\nconst lowerTool = Effect.fn(\"OpenAIResponses.lowerTool\")(function* (tool: ToolDefinition, inputSchema: JsonSchema) {\n const native = nativeImageToolInput(tool)\n if (native !== undefined) {\n if (Schema.is(OpenAIResponsesImageGenerationTool)(native)) return native\n return yield* ProviderShared.invalidRequest(\"OpenAI Responses image generation tool options are invalid\")\n }\n return yield* OpenResponses.lowerTool(NAME, tool, inputSchema)\n})\n\nconst lowerToolChoice = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>, tools: ReadonlyArray<ToolDefinition>) =>\n ProviderShared.matchToolChoice(NAME, toolChoice, {\n auto: () => \"auto\" as const,\n none: () => \"none\" as const,\n required: () => \"required\" as const,\n tool: (name) =>\n tools.some((tool) => tool.name === name && nativeImageTool(tool) !== undefined)\n ? ({ type: \"image_generation\" } as const)\n : { type: \"function\" as const, name },\n })\n\nconst fromRequest = Effect.fn(\"OpenAIResponses.fromRequest\")(function* (request: LLMRequest) {\n const body = yield* OpenResponses.fromRequestWithExtension(\n LLMRequest.update(request, { tools: [], toolChoice: undefined }),\n extension,\n )\n const toolSchemaCompatibility = request.model.compatibility?.toolSchema\n const parallelToolCalls = OpenResponses.resolveParallelToolCalls(request)\n return {\n ...body,\n ...(parallelToolCalls === undefined ? {} : { parallel_tool_calls: parallelToolCalls }),\n tools:\n request.tools.length === 0\n ? undefined\n : yield* Effect.forEach(request.tools, (tool) =>\n lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)),\n ),\n tool_choice:\n body.tool_choice ?? (request.toolChoice ? yield* lowerToolChoice(request.toolChoice, request.tools) : undefined),\n } satisfies OpenAIResponsesBody\n})\n\nconst hostedToolResult = Effect.fn(\"OpenAIResponses.hostedToolResult\")(function* (item: ResponsesHostedTools.Item) {\n const isError = item.error !== undefined && item.error !== null\n if (item.type === \"image_generation_call\" && item.result) {\n yield* Effect.fromResult(Encoding.decodeBase64(item.result)).pipe(\n Effect.mapError(() => ProviderShared.eventError(ADAPTER, \"OpenAI Responses returned invalid image base64\")),\n )\n const format = item.output_format ?? \"png\"\n return {\n type: \"content\" as const,\n value: [\n {\n type: \"file\" as const,\n uri: `data:image/${format};base64,${item.result}`,\n mime: `image/${format}`,\n },\n ],\n }\n }\n return isError ? { type: \"error\" as const, value: item.error } : { type: \"json\" as const, value: item }\n})\n\nconst HOSTED_TOOLS = {\n web_search_call: { name: \"web_search\", input: (item) => item.action ?? {} },\n web_search_preview_call: { name: \"web_search_preview\", input: (item) => item.action ?? {} },\n file_search_call: { name: \"file_search\", input: (item) => ({ queries: item.queries ?? [] }) },\n code_interpreter_call: {\n name: \"code_interpreter\",\n input: (item) => ({ code: item.code, container_id: item.container_id }),\n },\n computer_call: { name: \"computer_use\", input: (item) => item.action ?? {} },\n image_generation_call: { name: \"image_generation\", input: () => ({}), result: hostedToolResult },\n mcp_call: {\n name: \"mcp\",\n input: (item) => ({ server_label: item.server_label, name: item.name, arguments: item.arguments }),\n },\n} as const satisfies ResponsesHostedTools.Definitions\n\nconst step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => {\n if (event.type === \"response.reasoning_text.delta\")\n return event.item_id\n ? Effect.succeed(\n OpenResponses.onReasoningDelta(state, event, OpenResponses.outputItemID(state, event) ?? event.item_id),\n )\n : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`)\n if (event.type === \"response.output_item.done\" && event.item && ResponsesHostedTools.isItem(event.item, HOSTED_TOOLS))\n return ResponsesHostedTools.onDone(state, event.item, HOSTED_TOOLS)\n return OpenResponses.step(state, event)\n}\n\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: OpenAIResponsesBody,\n from: fromRequest,\n },\n stream: {\n event: OpenResponses.protocol.stream.event,\n initial: (request) => OpenResponses.initial(request, extension),\n step,\n terminal: OpenResponses.terminal,\n },\n})\n\nconst endpoint = Endpoint.path<OpenAIResponsesBody>(PATH, { baseURL: DEFAULT_BASE_URL })\nconst auth = Auth.none\n\nexport const httpTransport = HttpTransport.sseJson.with<OpenAIResponsesBody>()\nexport const channelTransport = OpenResponsesChannel.transport<OpenAIResponsesBody>\nexport const transport = channelTransport({\n id: ADAPTER,\n name: NAME,\n rotateAfterMs: WEBSOCKET_ROTATE_AFTER_MS,\n headers: (headers) => Headers.set(headers, \"openai-beta\", headers[\"openai-beta\"] ?? WEBSOCKET_PROTOCOL_HEADER),\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"openai\",\n providerMetadataKey: \"openai\",\n protocol,\n endpoint,\n auth,\n transport,\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nexport * as OpenAIResponses from \"./openai-responses.js\"\n", | ||
| "import { mergeProviderOptions, type ProviderOptions } from \"../schema/index.js\"\nimport type { OpenAIServiceTier } from \"../protocols/utils/openai-options.js\"\nimport type { Options } from \"../protocols/utils/open-responses-options.js\"\n\nexport type { OpenAIResponseIncludable, OpenAIServiceTier } from \"../protocols/utils/openai-options.js\"\n\nexport type OpenAIOptionsInput = Omit<Options, \"serviceTier\"> & {\n readonly serviceTier?: OpenAIServiceTier\n readonly [key: string]: unknown\n}\n\nexport type OpenAIProviderOptionsInput = OpenAIOptionsInput\n\nconst definedEntries = (input: Record<string, unknown>) =>\n Object.entries(input).filter((entry) => entry[1] !== undefined)\n\nconst openAIProviderOptions = (options: OpenAIOptionsInput | undefined): ProviderOptions | undefined => {\n const result = Object.fromEntries(\n definedEntries({\n store: options?.store,\n reasoningEffort: options?.reasoningEffort,\n reasoningSummary: options?.reasoningSummary,\n include: options?.include,\n textVerbosity: options?.textVerbosity,\n serviceTier: options?.serviceTier,\n }),\n )\n if (Object.keys(result).length === 0) return undefined\n return result\n}\n\nexport const gpt5DefaultOptions = (\n modelID: string,\n options: { readonly textVerbosity?: boolean } = {},\n): ProviderOptions | undefined => {\n const id = modelID.toLowerCase()\n if (!id.includes(\"gpt-5\") || id.includes(\"gpt-5-chat\") || id.includes(\"gpt-5-pro\")) return undefined\n return openAIProviderOptions({\n reasoningEffort: \"medium\",\n reasoningSummary: \"auto\",\n // GPT-5 reasoning models are configured stateless (`store: false`) by\n // `openAIDefaultOptions` below, so the only way a follow-up turn can\n // carry reasoning state is via the encrypted reasoning include. Without\n // this, callers using the default model facade get reasoning summaries\n // they cannot replay statelessly.\n include: [\"reasoning.encrypted_content\"],\n textVerbosity:\n options.textVerbosity === true && id.includes(\"gpt-5.\") && !id.includes(\"codex\") && !id.includes(\"-chat\")\n ? \"low\"\n : undefined,\n })\n}\n\nexport const openAIDefaultOptions = (\n modelID: string,\n options: { readonly textVerbosity?: boolean } = {},\n): ProviderOptions | undefined =>\n mergeProviderOptions(openAIProviderOptions({ store: false }), gpt5DefaultOptions(modelID, options))\n\nexport const withOpenAIOptions = <Options extends { readonly providerOptions?: OpenAIProviderOptionsInput }>(\n modelID: string,\n options: Options,\n defaults: { readonly textVerbosity?: boolean } = {},\n): Omit<Options, \"providerOptions\"> & { readonly providerOptions?: ProviderOptions } => {\n return {\n ...options,\n providerOptions: mergeProviderOptions(openAIDefaultOptions(modelID, defaults), options.providerOptions),\n }\n}\n\nexport * as OpenAIProviderOptions from \"./openai-options.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CB14698F8FC6C7D464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/config/new-session-location.ts", "../tui/src/logo.ts"], | ||
| "sourcesContent": [ | ||
| "import type { LocationRef } from \"@opencode-ai/client/promise\"\n\nexport function newSessionLocation(\n mode: \"launch\" | \"inherit\",\n launchDirectory: string,\n current?: LocationRef,\n unavailable?: LocationRef,\n): LocationRef {\n if (\n mode === \"inherit\" &&\n current &&\n (current.directory !== unavailable?.directory || current.workspaceID !== unavailable.workspaceID)\n )\n return current\n return { directory: launchDirectory }\n}\n", | ||
| "export const logo = {\n left: [\" \", \"█▀▀█ █▀▀█ █▀▀█ █▀▀▄\", \"█__█ █__█ █^^^ █__█\", \"▀▀▀▀ █▀▀▀ ▀▀▀▀ ▀~~▀\"],\n right: [\" ▄ \", \"█▀▀▀ █▀▀█ █▀▀█ █▀▀█\", \"█___ █__█ █__█ █^^^\", \"▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀\"],\n}\n\nexport const go = {\n left: [\" \", \"█▀▀▀\", \"█_^█\", \"▀▀▀▀\"],\n right: [\" \", \"█▀▀█\", \"█__█\", \"▀▀▀▀\"],\n}\n" | ||
| ], | ||
| "mappings": ";AAEO,SAAS,CAAkB,CAChC,EACA,EACA,EACA,EACa,CACb,GACE,IAAS,WACT,IACC,EAAQ,YAAc,GAAa,WAAa,EAAQ,cAAgB,EAAY,aAErF,OAAO,EACT,MAAO,CAAE,UAAW,CAAgB,ECd/B,IAAM,EAAO,CAClB,KAAM,CAAC,sBAAuB,sGAAuB,yDAAuB,2FAAqB,EACjG,MAAO,CAAC,2BAAuB,sGAAuB,oDAAuB,qGAAqB,CACpG,EAEa,EAAK,CAChB,KAAM,CAAC,OAAQ,2BAAQ,iBAAQ,0BAAM,EACrC,MAAO,CAAC,OAAQ,2BAAQ,iBAAQ,0BAAM,CACxC", | ||
| "debugId": "18ACCE9ABB83811F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "1C9C464C4427143264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "063BE2024805F48264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-messages.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Schema, Struct } from \"effect\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nconst VERSION = \"vertex-2023-10-16\" as const\nconst HEADER_VERSION = \"2023-06-01\" as const\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n}\n\nconst route = Route.make({\n id: \"google-vertex-messages\",\n provider: id,\n providerMetadataKey: \"anthropic\",\n protocol: Protocol.make({\n id: AnthropicMessages.protocol.id,\n body: {\n schema: Schema.Struct({\n ...Struct.omit(AnthropicMessages.AnthropicMessagesBody.fields, [\"model\"]),\n anthropic_version: Schema.Literal(VERSION),\n }),\n from: (request) =>\n AnthropicMessages.protocol.body.from(request).pipe(\n Effect.map((body) => ({\n ...Struct.omit(body, [\"model\"]),\n anthropic_version: VERSION,\n })),\n ),\n },\n stream: AnthropicMessages.protocol.stream,\n }),\n endpoint: Endpoint.path(({ request }) => `/${request.model.id}:streamRawPredict`),\n auth: Auth.none,\n framing: AnthropicMessages.framing,\n headers: () => ({ \"anthropic-version\": HEADER_VERSION }),\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined)\n throw new Error(\"Google Vertex Messages does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://${GoogleVertexShared.host(location)}/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/publishers/anthropic/models`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<AnthropicMessages.ProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Messages does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";+lBAcA,IAAM,EAAU,oBACV,EAAiB,aAEV,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAAM,KAAK,CACvB,GAAI,yBACJ,SAAU,EACV,oBAAqB,YACrB,SAAU,EAAS,KAAK,CACtB,GAAI,EAAkB,SAAS,GAC/B,KAAM,CACJ,OAAQ,EAAO,OAAO,IACjB,EAAO,KAAK,EAAkB,sBAAsB,OAAQ,CAAC,OAAO,CAAC,EACxE,kBAAmB,EAAO,QAAQ,CAAO,CAC3C,CAAC,EACD,KAAM,CAAC,IACL,EAAkB,SAAS,KAAK,KAAK,CAAO,EAAE,KAC5C,EAAO,IAAI,CAAC,KAAU,IACjB,EAAO,KAAK,EAAM,CAAC,OAAO,CAAC,EAC9B,kBAAmB,CACrB,EAAE,CACJ,CACJ,EACA,OAAQ,EAAkB,SAAS,MACrC,CAAC,EACD,SAAU,EAAS,KAAK,EAAG,aAAc,IAAI,EAAQ,MAAM,qBAAqB,EAChF,KAAM,EAAK,KACX,QAAS,EAAkB,QAC3B,QAAS,KAAO,CAAE,oBAAqB,CAAe,EACxD,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OACxC,MAAU,MAAM,kDAAkD,EACpE,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,WAAW,EAAmB,KAAK,CAAQ,iBAAiB,EAAmB,eAAe,CAAO,eAAe,+BACxH,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAA8C,CAAE,GAAI,CAAQ,CAAC,EACzG,WACF,GAQK,IAAM,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,kDAAkD,EACrG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "04A90E4FC0535E3464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/createCredentialChain.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentity.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromContainerMetadata.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromEnv.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromIni.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromInstanceMetadata.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromNodeProviderChain.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromProcess.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromSSO.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.base.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTokenFile.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromWebToken.js"], | ||
| "sourcesContent": [ | ||
| "import { ProviderError } from \"@smithy/core/config\";\nexport const createCredentialChain = (...credentialProviders) => {\n let expireAfter = -1;\n const baseFunction = async (awsIdentityProperties) => {\n const credentials = await propertyProviderChain(...credentialProviders)(awsIdentityProperties);\n if (!credentials.expiration && expireAfter !== -1) {\n credentials.expiration = new Date(Date.now() + expireAfter);\n }\n return credentials;\n };\n const withOptions = Object.assign(baseFunction, {\n expireAfter(milliseconds) {\n if (milliseconds < 5 * 60_000) {\n throw new Error(\"@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes.\");\n }\n expireAfter = milliseconds;\n return withOptions;\n },\n });\n return withOptions;\n};\nexport const propertyProviderChain = (...providers) => async (awsIdentityProperties) => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\", { tryNextLink: false });\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n return await provider(awsIdentityProperties);\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentity(parameters) {\n return async (awsIdentityProperties) => {\n parameters.logger?.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity.js\");\n const fromConfigs = (property) => parameters.clientConfig?.[property] ??\n parameters.parentClientConfig?.[property] ??\n awsIdentityProperties?.callerClientConfig?.[property];\n const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters.logger), SessionToken, } = throwOnMissingCredentials(parameters.logger), } = await (parameters.client ??\n new CognitoIdentityClient(Object.assign({}, parameters.clientConfig ?? {}, {\n region: fromConfigs(\"region\"),\n profile: fromConfigs(\"profile\"),\n userAgentAppId: fromConfigs(\"userAgentAppId\"),\n }))).send(new GetCredentialsForIdentityCommand({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined,\n }));\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n };\n };\n}\nfunction throwOnMissingAccessKeyId(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\", { logger });\n}\nfunction throwOnMissingCredentials(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\", { logger });\n}\nfunction throwOnMissingSecretKey(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\", { logger });\n}\n", | ||
| "export function resolveLogins(logins) {\n return Promise.all(Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n }\n else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])).then((resolvedPairs) => resolvedPairs.reduce((logins, [key, value]) => {\n logins[key] = value;\n return logins;\n }, {}));\n}\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { fromCognitoIdentity } from \"./fromCognitoIdentity\";\nimport { localStorage } from \"./localStorage\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentityPool({ accountId, cache = localStorage(), client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : undefined, logger, parentClientConfig, }) {\n logger?.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const cacheKey = userIdentifier\n ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}`\n : undefined;\n let provider = async (awsIdentityProperties) => {\n const { GetIdCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity.js\");\n const fromConfigs = (property) => clientConfig?.[property] ??\n parentClientConfig?.[property] ??\n awsIdentityProperties?.callerClientConfig?.[property];\n const _client = client ??\n new CognitoIdentityClient(Object.assign({}, clientConfig ?? {}, {\n region: fromConfigs(\"region\"),\n profile: fromConfigs(\"profile\"),\n userAgentAppId: fromConfigs(\"userAgentAppId\"),\n }));\n let identityId = (cacheKey && (await cache.getItem(cacheKey)));\n if (!identityId) {\n const { IdentityId = throwOnMissingId(logger) } = await _client.send(new GetIdCommand({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : undefined,\n }));\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => { });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId,\n });\n return provider(awsIdentityProperties);\n };\n return (awsIdentityProperties) => provider(awsIdentityProperties).catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => { });\n }\n throw err;\n });\n}\nfunction throwOnMissingId(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\", { logger });\n}\n", | ||
| "const STORE_NAME = \"IdentityIds\";\nexport class IndexedDbStorage {\n dbName;\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n}\n", | ||
| "export class InMemoryStorage {\n store;\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n}\n", | ||
| "import { IndexedDbStorage } from \"./IndexedDbStorage\";\nimport { InMemoryStorage } from \"./InMemoryStorage\";\nconst inMemoryStorage = new InMemoryStorage();\nexport function localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n", | ||
| "import { fromCognitoIdentity as _fromCognitoIdentity } from \"@aws-sdk/credential-provider-cognito-identity\";\nexport const fromCognitoIdentity = (options) => _fromCognitoIdentity({\n ...options,\n});\n", | ||
| "import { fromCognitoIdentityPool as _fromCognitoIdentityPool } from \"@aws-sdk/credential-provider-cognito-identity\";\nexport const fromCognitoIdentityPool = (options) => _fromCognitoIdentityPool({\n ...options,\n});\n", | ||
| "import { fromContainerMetadata as _fromContainerMetadata } from \"@smithy/credential-provider-imds\";\nexport const fromContainerMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return _fromContainerMetadata(init);\n};\n", | ||
| "import { fromEnv as _fromEnv } from \"@aws-sdk/credential-provider-env\";\nexport const fromEnv = (init) => _fromEnv(init);\n", | ||
| "import { fromIni as _fromIni } from \"@aws-sdk/credential-provider-ini\";\nexport const fromIni = (init = {}) => _fromIni({\n ...init,\n});\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { fromInstanceMetadata as _fromInstanceMetadata } from \"@smithy/credential-provider-imds\";\nexport const fromInstanceMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return async () => _fromInstanceMetadata(init)().then((creds) => setCredentialFeature(creds, \"CREDENTIALS_IMDS\", \"0\"));\n};\n", | ||
| "import { fromLoginCredentials as _fromLoginCredentials, } from \"@aws-sdk/credential-provider-login\";\nexport const fromLoginCredentials = (init) => _fromLoginCredentials({\n ...init,\n});\n", | ||
| "import { ENV_KEY, ENV_SECRET, fromEnv } from \"@aws-sdk/credential-provider-env\";\nimport { CredentialsProviderError, ENV_PROFILE } from \"@smithy/core/config\";\nimport { remoteProvider } from \"./remoteProvider\";\nimport { memoizeChain } from \"./runtime/memoize-chain\";\nlet multipleCredentialSourceWarningEmitted = false;\nexport const defaultProvider = (init = {}) => memoizeChain([\n async () => {\n const profile = init.profile ?? process.env[ENV_PROFILE];\n if (profile) {\n const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET];\n if (envStaticCredentialsAreSet) {\n if (!multipleCredentialSourceWarningEmitted) {\n const warnFn = init.logger?.warn && init.logger?.constructor?.name !== \"NoOpLogger\"\n ? init.logger.warn.bind(init.logger)\n : console.warn;\n warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n Multiple credential sources detected: \n Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n This SDK will proceed with the AWS_PROFILE value.\n \n However, a future version may change this behavior to prefer the ENV static credentials.\n Please ensure that your environment only sets either the AWS_PROFILE or the\n AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`);\n multipleCredentialSourceWarningEmitted = true;\n }\n }\n throw new CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n logger: init.logger,\n tryNextLink: true,\n });\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n return fromEnv(init)();\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new CredentialsProviderError(\"Skipping SSO provider in default chain (inputs do not include SSO fields).\", { logger: init.logger });\n }\n const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n return fromSSO(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n const { fromIni } = await import(\"@aws-sdk/credential-provider-ini\");\n return fromIni(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n return fromProcess(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n return fromTokenFile(init)(awsIdentityProperties);\n },\n async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new CredentialsProviderError(\"Could not load credentials from any providers\", {\n tryNextLink: false,\n logger: init.logger,\n });\n },\n], credentialsTreatedAsExpired);\nexport const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined;\nexport const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;\n", | ||
| "import { chain, CredentialsProviderError } from \"@smithy/core/config\";\nexport const ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexport const remoteProvider = async (init) => {\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n return chain(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== \"false\") {\n return async () => {\n throw new CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n };\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n};\n", | ||
| "export function memoizeChain(providers, treatAsExpired) {\n const chain = internalCreateChain(providers);\n let activeLock;\n let passiveLock;\n let credentials;\n let forceRefreshLock;\n const provider = async (options) => {\n if (options?.forceRefresh) {\n if (!forceRefreshLock) {\n forceRefreshLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n forceRefreshLock = undefined;\n });\n }\n await forceRefreshLock;\n return credentials;\n }\n if (credentials?.expiration) {\n if (credentials?.expiration?.getTime() < Date.now()) {\n credentials = undefined;\n }\n }\n if (activeLock) {\n await activeLock;\n }\n else if (!credentials || treatAsExpired?.(credentials)) {\n if (credentials) {\n if (!passiveLock) {\n passiveLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n passiveLock = undefined;\n });\n }\n }\n else {\n activeLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n activeLock = undefined;\n });\n return provider(options);\n }\n }\n return credentials;\n };\n return provider;\n}\nexport const internalCreateChain = (providers) => async (awsIdentityProperties) => {\n let lastProviderError;\n for (const provider of providers) {\n try {\n return await provider(awsIdentityProperties);\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n", | ||
| "import { defaultProvider } from \"@aws-sdk/credential-provider-node\";\nexport const fromNodeProviderChain = (init = {}) => defaultProvider({\n ...init,\n});\n", | ||
| "import { fromProcess as _fromProcess } from \"@aws-sdk/credential-provider-process\";\nexport const fromProcess = (init) => _fromProcess(init);\n", | ||
| "import { fromSSO as _fromSSO } from \"@aws-sdk/credential-provider-sso\";\nexport const fromSSO = (init = {}) => {\n return _fromSSO({ ...init });\n};\n", | ||
| "import { loadConfig, NODE_REGION_CONFIG_FILE_OPTIONS } from \"@smithy/core/config\";\nimport { fromNodeProviderChain } from \"./fromNodeProviderChain\";\nimport { fromTemporaryCredentials as fromTemporaryCredentialsBase } from \"./fromTemporaryCredentials.base\";\nexport const fromTemporaryCredentials = (options) => {\n return fromTemporaryCredentialsBase(options, fromNodeProviderChain, async ({ profile = process.env.AWS_PROFILE }) => loadConfig({\n environmentVariableSelector: (env) => env.AWS_REGION,\n configFileSelector: (profileData) => {\n return profileData.region;\n },\n default: () => undefined,\n }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, profile })());\n};\n", | ||
| "import { normalizeProvider } from \"@smithy/core\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nconst ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nexport const fromTemporaryCredentials = (options, credentialDefaultProvider, regionProvider) => {\n let stsClient;\n return async (awsIdentityProperties = {}) => {\n const { callerClientConfig } = awsIdentityProperties;\n const profile = options.clientConfig?.profile ?? callerClientConfig?.profile;\n const logger = options.logger ?? callerClientConfig?.logger;\n logger?.debug(\"@aws-sdk/credential-providers - fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? \"aws-sdk-js-\" + Date.now() };\n if (params?.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new CredentialsProviderError(`Temporary credential requires multi-factor authentication, but no MFA code callback was provided.`, {\n tryNextLink: false,\n logger,\n });\n }\n params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await import(\"./loadSts.js\");\n if (!stsClient) {\n const defaultCredentialsOrError = typeof credentialDefaultProvider === \"function\" ? credentialDefaultProvider() : undefined;\n const credentialSources = [\n options.masterCredentials,\n options.clientConfig?.credentials,\n void callerClientConfig?.credentials,\n callerClientConfig?.credentialDefaultProvider?.(),\n defaultCredentialsOrError,\n ];\n let credentialSource = \"STS client default credentials\";\n if (credentialSources[0]) {\n credentialSource = \"options.masterCredentials\";\n }\n else if (credentialSources[1]) {\n credentialSource = \"options.clientConfig.credentials\";\n }\n else if (credentialSources[2]) {\n credentialSource = \"caller client's credentials\";\n throw new Error(\"fromTemporaryCredentials recursion in callerClientConfig.credentials\");\n }\n else if (credentialSources[3]) {\n credentialSource = \"caller client's credentialDefaultProvider\";\n }\n else if (credentialSources[4]) {\n credentialSource = \"AWS SDK default credentials\";\n }\n const regionSources = [\n options.clientConfig?.region,\n callerClientConfig?.region,\n await regionProvider?.({\n profile,\n }),\n ASSUME_ROLE_DEFAULT_REGION,\n ];\n let regionSource = \"default partition's default region\";\n if (regionSources[0]) {\n regionSource = \"options.clientConfig.region\";\n }\n else if (regionSources[1]) {\n regionSource = \"caller client's region\";\n }\n else if (regionSources[2]) {\n regionSource = \"file or env region\";\n }\n const requestHandlerSources = [\n filterRequestHandler(options.clientConfig?.requestHandler),\n filterRequestHandler(callerClientConfig?.requestHandler),\n ];\n let requestHandlerSource = \"STS default requestHandler\";\n if (requestHandlerSources[0]) {\n requestHandlerSource = \"options.clientConfig.requestHandler\";\n }\n else if (requestHandlerSources[1]) {\n requestHandlerSource = \"caller client's requestHandler\";\n }\n logger?.debug?.(`@aws-sdk/credential-providers - fromTemporaryCredentials STS client init with ` +\n `${regionSource}=${await normalizeProvider(coalesce(regionSources))()}, ${credentialSource}, ${requestHandlerSource}.`);\n stsClient = new STSClient({\n userAgentAppId: callerClientConfig?.userAgentAppId,\n ...options.clientConfig,\n credentials: coalesce(credentialSources),\n logger,\n profile,\n region: coalesce(regionSources),\n requestHandler: coalesce(requestHandlerSources),\n });\n }\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, {\n logger,\n });\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nconst filterRequestHandler = (requestHandler) => {\n return requestHandler?.metadata?.handlerProtocol === \"h2\" ? undefined : requestHandler;\n};\nconst coalesce = (args) => {\n for (const item of args) {\n if (item !== undefined) {\n return item;\n }\n }\n};\n", | ||
| "import { fromTokenFile as _fromTokenFile } from \"@aws-sdk/credential-provider-web-identity\";\nexport const fromTokenFile = (init = {}) => _fromTokenFile({\n ...init,\n});\n", | ||
| "import { fromWebToken as _fromWebToken } from \"@aws-sdk/credential-provider-web-identity\";\nexport const fromWebToken = (init) => _fromWebToken({\n ...init,\n});\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "11688E8685D40C8264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"signin\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSigninHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateOAuth2Token\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"signin\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst s = \"ref\";\nconst a = -1, b = false, c = true, d = \"isSet\", e = \"booleanEquals\", f = \"coalesce\", g = \"PartitionResult\", h = \"stringEquals\", i = \"getAttr\", j = \"https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}\", k = { [s]: \"Endpoint\" }, l = { \"fn\": i, \"argv\": [{ [s]: g }, \"name\"] }, m = { [s]: \"Region\" }, n = { [s]: g }, o = { \"authSchemes\": [{ \"name\": \"sigv4\", \"signingName\": \"signin\", \"signingRegion\": \"{Region}\" }] }, p = {}, q = [m];\nconst _data = {\n conditions: [\n [d, q],\n [e, [{ fn: f, argv: [{ [s]: \"IsControlPlane\" }, b] }, c]],\n [d, [k]],\n [\"aws.partition\", q, g],\n [e, [{ [s]: \"UseFIPS\" }, c]],\n [h, [l, \"aws\"]],\n [e, [{ fn: f, argv: [{ [s]: \"IsOAuthEndpoint\" }, b] }, c]],\n [e, [{ [s]: \"UseDualStack\" }, c]],\n [h, [l, \"aws-cn\"]],\n [h, [m, \"us-gov-west-1\"]],\n [h, [l, \"aws-us-gov\"]],\n [e, [{ fn: i, argv: [n, \"supportsFIPS\"] }, c]],\n [h, [l, \"aws-iso\"]],\n [h, [l, \"aws-iso-b\"]],\n [h, [l, \"aws-iso-f\"]],\n [h, [l, \"aws-iso-e\"]],\n [h, [l, \"aws-eusc\"]],\n [e, [{ fn: i, argv: [n, \"supportsDualStack\"] }, c]]\n ],\n results: [\n [a],\n [\"https://signin.{Region}.api.aws\", o],\n [\"https://signin.{Region}.api.amazonwebservices.com.cn\", o],\n [j, o],\n [a, \"FIPS endpoints are not supported for OAuth operations. Disable FIPS or use a non-OAuth operation.\"],\n [\"https://{Region}.oauth.signin.aws\", o],\n [\"https://{Region}.signin.aws.amazon.com\", p],\n [\"https://{Region}.signin.amazonaws.cn\", p],\n [\"https://{Region}.signin.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin.c2shome.ic.gov\", p],\n [\"https://{Region}.signin.sc2shome.sgov.gov\", p],\n [\"https://{Region}.signin.csphome.hci.ic.gov\", p],\n [\"https://{Region}.signin.csphome.adc-e.uk\", p],\n [\"https://{Region}.signin.amazonaws-eusc.eu\", p],\n [\"https://signin-fips.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin-fips.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin.{PartitionResult#dnsSuffix}\", p],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [k, p],\n [\"https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", p],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://signin-fips.{Region}.{PartitionResult#dnsSuffix}\", p],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [j, p],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://signin.{Region}.{PartitionResult#dnsSuffix}\", p],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 6, 3,\n 2, 36, 4,\n 4, 5, r + 27,\n 6, r + 4, r + 27,\n 1, 29, 7,\n 2, 36, 8,\n 3, 9, 31,\n 4, 22, 10,\n 5, 19, 11,\n 7, 21, 12,\n 8, r + 7, 13,\n 10, r + 8, 14,\n 12, r + 9, 15,\n 13, r + 10, 16,\n 14, r + 11, 17,\n 15, r + 12, 18,\n 16, r + 13, r + 16,\n 6, r + 5, 20,\n 7, 21, r + 6,\n 17, r + 24, r + 25,\n 6, r + 4, 23,\n 7, 27, 24,\n 9, r + 14, 25,\n 10, r + 15, 26,\n 11, r + 22, r + 23,\n 11, 28, r + 21,\n 17, r + 20, r + 21,\n 2, 35, 30,\n 3, 39, 31,\n 4, 32, r + 27,\n 6, r + 4, 33,\n 7, r + 27, 34,\n 9, r + 14, r + 27,\n 3, 39, 36,\n 4, 38, 37,\n 7, r + 18, r + 19,\n 6, r + 4, r + 17,\n 5, r + 1, 40,\n 8, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"IsControlPlane\", \"IsOAuthEndpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SigninServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SigninServiceException.prototype);\n }\n}\n\nclass AccessDeniedException extends SigninServiceException {\n name = \"AccessDeniedException\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AccessDeniedException.prototype);\n this.error = opts.error;\n }\n}\nclass InternalServerException extends SigninServiceException {\n name = \"InternalServerException\";\n $fault = \"server\";\n error;\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalServerException.prototype);\n this.error = opts.error;\n }\n}\nclass TooManyRequestsError extends SigninServiceException {\n name = \"TooManyRequestsError\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"TooManyRequestsError\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsError.prototype);\n this.error = opts.error;\n }\n}\nclass ValidationException extends SigninServiceException {\n name = \"ValidationException\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"ValidationException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ValidationException.prototype);\n this.error = opts.error;\n }\n}\n\nconst _ADE = \"AccessDeniedException\";\nconst _AT = \"AccessToken\";\nconst _COAT = \"CreateOAuth2Token\";\nconst _COATR = \"CreateOAuth2TokenRequest\";\nconst _COATRB = \"CreateOAuth2TokenRequestBody\";\nconst _COATRBr = \"CreateOAuth2TokenResponseBody\";\nconst _COATRr = \"CreateOAuth2TokenResponse\";\nconst _COATWIAM = \"CreateOAuth2TokenWithIAM\";\nconst _COATWIAMR = \"CreateOAuth2TokenWithIAMRequest\";\nconst _COATWIAMRr = \"CreateOAuth2TokenWithIAMResponse\";\nconst _ISE = \"InternalServerException\";\nconst _OAAT = \"OAuthAccessToken\";\nconst _RT = \"RefreshToken\";\nconst _TMRE = \"TooManyRequestsError\";\nconst _VE = \"ValidationException\";\nconst _aKI = \"accessKeyId\";\nconst _aT = \"accessToken\";\nconst _at = \"access_token\";\nconst _c = \"client\";\nconst _cI = \"clientId\";\nconst _cV = \"codeVerifier\";\nconst _co = \"code\";\nconst _e = \"error\";\nconst _eI = \"expiresIn\";\nconst _ei = \"expires_in\";\nconst _gT = \"grantType\";\nconst _gt = \"grant_type\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _iT = \"idToken\";\nconst _jN = \"jsonName\";\nconst _m = \"message\";\nconst _r = \"resource\";\nconst _rT = \"refreshToken\";\nconst _rU = \"redirectUri\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.signin\";\nconst _sAK = \"secretAccessKey\";\nconst _sT = \"sessionToken\";\nconst _se = \"server\";\nconst _tI = \"tokenInput\";\nconst _tO = \"tokenOutput\";\nconst _tT = \"tokenType\";\nconst _tt = \"token_type\";\nconst n0 = \"com.amazonaws.signin\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SigninServiceException$ = [-3, _s, \"SigninServiceException\", 0, [], []];\n_s_registry.registerError(SigninServiceException$, SigninServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar AccessDeniedException$ = [-3, n0, _ADE,\n { [_e]: _c },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(AccessDeniedException$, AccessDeniedException);\nvar InternalServerException$ = [-3, n0, _ISE,\n { [_e]: _se, [_hE]: 500 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(InternalServerException$, InternalServerException);\nvar TooManyRequestsError$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(TooManyRequestsError$, TooManyRequestsError);\nvar ValidationException$ = [-3, n0, _VE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(ValidationException$, ValidationException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar OAuthAccessToken = [0, n0, _OAAT, 8, 0];\nvar RefreshToken = [0, n0, _RT, 8, 0];\nvar AccessToken$ = [3, n0, _AT,\n 8,\n [_aKI, _sAK, _sT],\n [[0, { [_jN]: _aKI }], [0, { [_jN]: _sAK }], [0, { [_jN]: _sT }]], 3\n];\nvar CreateOAuth2TokenRequest$ = [3, n0, _COATR,\n 0,\n [_tI],\n [[() => CreateOAuth2TokenRequestBody$, 16]], 1\n];\nvar CreateOAuth2TokenRequestBody$ = [3, n0, _COATRB,\n 0,\n [_cI, _gT, _co, _rU, _cV, _rT],\n [[0, { [_jN]: _cI }], [0, { [_jN]: _gT }], 0, [0, { [_jN]: _rU }], [0, { [_jN]: _cV }], [() => RefreshToken, { [_jN]: _rT }]], 2\n];\nvar CreateOAuth2TokenResponse$ = [3, n0, _COATRr,\n 0,\n [_tO],\n [[() => CreateOAuth2TokenResponseBody$, 16]], 1\n];\nvar CreateOAuth2TokenResponseBody$ = [3, n0, _COATRBr,\n 0,\n [_aT, _tT, _eI, _rT, _iT],\n [[() => AccessToken$, { [_jN]: _aT }], [0, { [_jN]: _tT }], [1, { [_jN]: _eI }], [() => RefreshToken, { [_jN]: _rT }], [0, { [_jN]: _iT }]], 4\n];\nvar CreateOAuth2TokenWithIAMRequest$ = [3, n0, _COATWIAMR,\n 0,\n [_gT, _r],\n [[0, { [_jN]: _gt }], 0], 2\n];\nvar CreateOAuth2TokenWithIAMResponse$ = [3, n0, _COATWIAMRr,\n 0,\n [_aT, _tT, _eI],\n [[() => OAuthAccessToken, { [_jN]: _at }], [0, { [_jN]: _tt }], [1, { [_jN]: _ei }]], 3\n];\nvar CreateOAuth2Token$ = [9, n0, _COAT,\n { [_h]: [\"POST\", \"/v1/token\", 200] }, () => CreateOAuth2TokenRequest$, () => CreateOAuth2TokenResponse$\n];\nvar CreateOAuth2TokenWithIAM$ = [9, n0, _COATWIAM,\n { [_h]: [\"POST\", \"/v1/token?x-amz-client-auth-method=iam\", 200] }, () => CreateOAuth2TokenWithIAMRequest$, () => CreateOAuth2TokenWithIAMResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2023-01-01\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.signin\",\n errorTypeRegistries,\n version: \"2023-01-01\",\n serviceTarget: \"Signin\",\n },\n serviceId: config?.serviceId ?? \"Signin\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SigninClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"Signin\", \"SigninClient\", getEndpointPlugin);\nconst _ep0 = {\n IsControlPlane: { type: \"staticContextParams\", value: false },\n};\nconst _ep1 = {\n IsOAuthEndpoint: { type: \"staticContextParams\", value: true },\n};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass CreateOAuth2TokenCommand extends command(_ep0, _mw0, \"CreateOAuth2Token\", CreateOAuth2Token$) {\n}\n\nclass CreateOAuth2TokenWithIAMCommand extends command(_ep1, _mw0, \"CreateOAuth2TokenWithIAM\", CreateOAuth2TokenWithIAM$) {\n}\n\nconst commands = {\n CreateOAuth2TokenCommand,\n CreateOAuth2TokenWithIAMCommand,\n};\nclass Signin extends SigninClient {\n}\ncreateAggregatedClient(commands, Signin);\n\nconst OAuth2ErrorCode = {\n AUTHCODE_EXPIRED: \"AUTHCODE_EXPIRED\",\n CONFLICT: \"CONFLICT\",\n INSUFFICIENT_PERMISSIONS: \"INSUFFICIENT_PERMISSIONS\",\n INVALID_REQUEST: \"INVALID_REQUEST\",\n RESOURCE_NOT_FOUND: \"RESOURCE_NOT_FOUND\",\n SERVER_ERROR: \"server_error\",\n SERVICE_QUOTA_EXCEEDED: \"SERVICE_QUOTA_EXCEEDED\",\n TOKEN_EXPIRED: \"TOKEN_EXPIRED\",\n USER_CREDENTIALS_CHANGED: \"USER_CREDENTIALS_CHANGED\",\n};\n\nexports.AccessDeniedException = AccessDeniedException;\nexports.AccessDeniedException$ = AccessDeniedException$;\nexports.AccessToken$ = AccessToken$;\nexports.CreateOAuth2Token$ = CreateOAuth2Token$;\nexports.CreateOAuth2TokenCommand = CreateOAuth2TokenCommand;\nexports.CreateOAuth2TokenRequest$ = CreateOAuth2TokenRequest$;\nexports.CreateOAuth2TokenRequestBody$ = CreateOAuth2TokenRequestBody$;\nexports.CreateOAuth2TokenResponse$ = CreateOAuth2TokenResponse$;\nexports.CreateOAuth2TokenResponseBody$ = CreateOAuth2TokenResponseBody$;\nexports.CreateOAuth2TokenWithIAM$ = CreateOAuth2TokenWithIAM$;\nexports.CreateOAuth2TokenWithIAMCommand = CreateOAuth2TokenWithIAMCommand;\nexports.CreateOAuth2TokenWithIAMRequest$ = CreateOAuth2TokenWithIAMRequest$;\nexports.CreateOAuth2TokenWithIAMResponse$ = CreateOAuth2TokenWithIAMResponse$;\nexports.InternalServerException = InternalServerException;\nexports.InternalServerException$ = InternalServerException$;\nexports.OAuth2ErrorCode = OAuth2ErrorCode;\nexports.Signin = Signin;\nexports.SigninClient = SigninClient;\nexports.SigninServiceException = SigninServiceException;\nexports.SigninServiceException$ = SigninServiceException$;\nexports.TooManyRequestsError = TooManyRequestsError;\nexports.TooManyRequestsError$ = TooManyRequestsError$;\nexports.ValidationException = ValidationException;\nexports.ValidationException$ = ValidationException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9722DA8AE23C1CD564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/session-transfer.ts"], | ||
| "sourcesContent": [ | ||
| "export * as SessionTransfer from \"./session-transfer.js\"\n\nimport { Schema } from \"effect\"\nimport { Session } from \"./session.js\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport interface Data extends Schema.Schema.Type<typeof Data> {}\nexport const Data = Schema.Struct({\n info: Session.Info,\n messages: Schema.Array(SessionMessage.Info),\n}).annotate({ identifier: \"SessionTransfer.Data\" })\n" | ||
| ], | ||
| "mappings": ";iQAOO,IAAM,EAAO,EAAO,OAAO,CAChC,KAAM,EAAQ,KACd,SAAU,EAAO,MAAM,EAAe,IAAI,CAC5C,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC", | ||
| "debugId": "B92671BD18E36EE664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/util/io.ts", "src/session-target.ts"], | ||
| "sourcesContent": [ | ||
| "import { text } from \"node:stream/consumers\"\n\nexport function readStdin() {\n return text(process.stdin)\n}\n", | ||
| "import type { LocationGetOutput, ModelRef, OpenCodeClient, SessionInfo } from \"@opencode-ai/client/promise\"\nimport { Model } from \"@opencode-ai/schema/model\"\n\nconst SESSION_PAGE_LIMIT = 50\n\nexport type SessionTarget = {\n session: SessionInfo\n location: LocationGetOutput\n model: ModelRef | undefined\n agent: string | undefined\n resume: boolean\n}\n\nexport type SessionTargetPreparation = (input: {\n client: OpenCodeClient\n location: LocationGetOutput\n session: SessionInfo | undefined\n model: ModelRef | undefined\n agent: string | undefined\n signal?: AbortSignal\n}) => Promise<{ model: ModelRef | undefined; agent: string | undefined }>\n\nexport class SessionTargetMutationError extends Error {\n override readonly name = \"SessionTargetMutationError\"\n\n constructor(cause: unknown) {\n super(cause instanceof Error ? cause.message : \"Session target mutation failed\", { cause })\n }\n}\n\nexport async function resolveSessionTarget(input: {\n client: OpenCodeClient\n location?: { directory?: string; workspace?: string }\n continue?: boolean\n session?: string\n fork?: boolean\n model?: ModelRef\n agent?: string\n environment?: Readonly<Record<string, string>>\n prepare: SessionTargetPreparation\n signal?: AbortSignal\n}): Promise<SessionTarget> {\n const selection = await selectSession(input)\n const selected = selection.session\n const location =\n selection.location ??\n (await resolveLocation(\n input.client,\n selected ? { directory: selected.location.directory, workspace: selected.location.workspaceID } : input.location,\n input.signal,\n ))\n const prepared = await input.prepare({\n client: input.client,\n location,\n session: selected,\n model: input.model ?? selected?.model,\n agent: input.agent ?? selected?.agent,\n signal: input.signal,\n })\n const session =\n selected ??\n (await input.client.session\n .create(\n {\n agent: prepared.agent,\n model: prepared.model,\n location: { directory: location.directory, workspaceID: location.workspaceID },\n },\n ...requestOptions(input.signal),\n )\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n }))\n if (input.environment !== undefined && location.workspaceID === undefined)\n await input.client.session\n .environment({ sessionID: session.id, variables: input.environment }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n return {\n session,\n location,\n model: prepared.model,\n agent: prepared.agent ?? session.agent,\n resume: selected !== undefined,\n }\n}\n\nexport function parseSessionTargetModel(value?: string): ModelRef | undefined {\n if (!value) return\n const model = Model.Ref.parse(value)\n return { providerID: model.providerID, id: model.id, variant: model.variant }\n}\n\nasync function selectSession(input: {\n client: OpenCodeClient\n location?: { directory?: string; workspace?: string }\n continue?: boolean\n session?: string\n fork?: boolean\n signal?: AbortSignal\n}) {\n const explicit = input.session\n ? await input.client.session.get({ sessionID: input.session }, ...requestOptions(input.signal)).catch((error) => {\n if (error && typeof error === \"object\" && Reflect.get(error, \"_tag\") === \"SessionNotFoundError\")\n return undefined\n throw error\n })\n : undefined\n if (input.session && !explicit) throw new Error(\"Session not found\")\n if (explicit)\n return {\n session: input.fork\n ? await input.client.session\n .fork({ sessionID: explicit.id, boundary: { type: \"through\" } }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n : explicit,\n }\n if (!input.continue) return { session: undefined }\n\n const location = await resolveLocation(input.client, input.location, input.signal)\n const selected = await latestSession(input.client, location, undefined, input.signal)\n if (!selected) return { session: undefined, location }\n return {\n session: input.fork\n ? await input.client.session\n .fork({ sessionID: selected.id, boundary: { type: \"through\" } }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n : selected,\n }\n}\n\nasync function latestSession(\n client: OpenCodeClient,\n location: LocationGetOutput,\n cursor?: string,\n signal?: AbortSignal,\n): Promise<SessionInfo | undefined> {\n const page = await client.session.list(\n {\n directory: location.directory,\n workspace: location.workspaceID,\n parentID: null,\n limit: SESSION_PAGE_LIMIT,\n order: \"desc\",\n ...(cursor ? { cursor } : {}),\n },\n ...requestOptions(signal),\n )\n const selected = page.data.find(\n (session) =>\n session.location.directory === location.directory && session.location.workspaceID === location.workspaceID,\n )\n if (selected) return selected\n if (!page.cursor.next || page.data.length === 0) return\n return latestSession(client, location, page.cursor.next, signal)\n}\n\nfunction resolveLocation(\n client: OpenCodeClient,\n location?: { directory?: string; workspace?: string },\n signal?: AbortSignal,\n) {\n if (!location && !signal) return client.location.get()\n if (!location) return client.location.get(undefined, { signal })\n return client.location.get({ location }, ...requestOptions(signal))\n}\n\nfunction requestOptions(signal?: AbortSignal): [] | [{ signal: AbortSignal }] {\n return signal ? [{ signal }] : []\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "43104C8DC63C750264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport fs from \"node:fs/promises\";\nimport { checkUrl } from \"./checkUrl\";\nimport { createGetRequest, getCredentials } from \"./requestHelpers\";\nimport { retryWrapper } from \"./retry-wrapper\";\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nexport const fromHttp = (options = {}) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-http - fromHttp\");\n let host;\n const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n const warn = options.logger?.constructor?.name === \"NoOpLogger\" || !options.logger?.warn\n ? console.warn\n : options.logger.warn.bind(options.logger);\n if (relative && full) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n warn(\"awsContainerCredentialsRelativeUri will take precedence.\");\n }\n if (token && tokenFile) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n warn(\"awsContainerAuthorizationTokenFile will take precedence.\");\n }\n if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else if (full) {\n host = full;\n }\n else {\n throw new CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger });\n }\n const url = new URL(host);\n checkUrl(url, options.logger);\n const requestHandler = NodeHttpHandler.create({ connectionTimeout: options.timeout ?? 1000 });\n const requestTimeout = options.timeout ?? 1000;\n const provider = retryWrapper(async () => {\n const request = createGetRequest(url);\n if (tokenFile) {\n request.headers.Authorization = validateToken((await fs.readFile(tokenFile)).toString());\n }\n else if (token) {\n request.headers.Authorization = validateToken(token);\n }\n try {\n const result = await requestHandler.handle(request, { requestTimeout });\n return getCredentials(result.response).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_HTTP\", \"z\"));\n }\n catch (e) {\n throw new CredentialsProviderError(String(e), { logger: options.logger });\n }\n }, options.maxRetries ?? 3, options.timeout ?? 1000);\n return async () => {\n try {\n return await provider();\n }\n finally {\n requestHandler.destroy?.();\n }\n };\n};\nconst validateToken = (token) => {\n if (token.includes(\"\\r\\n\")) {\n throw new CredentialsProviderError(\"Authorization token contains invalid \\\\r\\\\n sequence.\");\n }\n return token;\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nexport const checkUrl = (url, logger) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger });\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nimport { parseRfc3339DateTime } from \"@smithy/core/serde\";\nimport { sdkStreamMixin } from \"@smithy/core/serde\";\nexport function createGetRequest(url) {\n return new HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexport async function getCredentials(response, logger) {\n const stream = sdkStreamMixin(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\", { logger });\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: parseRfc3339DateTime(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger });\n}\n", | ||
| "export const retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "19FD2B087CCA66FA64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/cli-spinners@3.4.0/node_modules/cli-spinners/index.js", "../../node_modules/.bun/opentui-spinner@0.0.7+a7de680a49296111/node_modules/opentui-spinner/dist/src-DjeqLSfu.mjs", "../../node_modules/.bun/opentui-spinner@0.0.7+a7de680a49296111/node_modules/opentui-spinner/dist/solid.mjs", "../tui/src/component/register-spinner.ts"], | ||
| "sourcesContent": [ | ||
| "import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n", | ||
| "import{Renderable as e,parseColor as t,resolveRenderLib as n}from\"@opentui/core\";import r from\"cli-spinners\";const i=1e3/60,a=1e3;function o(e){if(!Number.isFinite(e)||e<i||e>a)throw RangeError(`Spinner interval must be a finite number between ${i}ms and ${a}ms`);return e}const s={now:()=>performance.now(),setInterval:(e,t)=>{let n=setInterval(e,t);return n.unref(),n},clearInterval:e=>clearInterval(e)},c=new class{active=new Map;heap=[];timer=null;timerDueAt=0;generation=0;lastWakeAt=-1/0;clock;constructor(e=s,t=16){this.denseTickThreshold=t,this.clock=e}setClock(e){if(this.active.size>0||this.timer!==null)throw Error(`Cannot replace the spinner scheduler clock while active`);this.clock=e}start(e,t,n){if(this.active.has(e))return;let r={spinner:e,interval:t,nextDueAt:this.clock.now()+t,advance:n};this.active.set(e,r),this.push(r),this.armNext()}reschedule(e,t){let n=this.active.get(e);if(!n)return;let r={spinner:e,interval:t,nextDueAt:this.clock.now()+t,advance:n.advance};this.active.set(e,r),this.push(r),this.compactIfNeeded(),this.armNext()}stop(e){this.active.delete(e)&&(this.compactIfNeeded(),this.armNext())}armNext(){this.discardStaleRoots();let e=this.heap[0];if(!e){this.cancelTimer(),this.lastWakeAt=-1/0;return}let t=this.clock.now(),n=Math.max(e.nextDueAt,this.lastWakeAt+i);if(this.timer!==null&&this.timerDueAt===n)return;this.cancelTimer();let r=this.generation,a=Math.max(n-t,0);this.timerDueAt=n,this.timer=this.clock.setInterval(()=>this.tick(r),a)}cancelTimer(){this.timer!==null&&(this.generation++,this.clock.clearInterval(this.timer),this.timer=null)}tick(e){if(e!==this.generation||this.timer===null)return;let t=this.timer;this.generation++,this.timer=null,this.clock.clearInterval(t);let n=this.clock.now();this.discardStaleRoots();let r=!1,i=0,a=[];for(;this.heap[0]&&this.heap[0].nextDueAt<=n;){let e=this.pop();if(!(!e||!this.isCurrent(e))){try{e.advance()}catch(e){a.push(e)}if(r=!0,this.isCurrent(e)&&(e.nextDueAt=n+e.interval,this.push(e),i++,i===this.denseTickThreshold)){let e=this.heap;this.heap=[];for(let t of e)if(this.isCurrent(t)){if(t.nextDueAt<=n){try{t.advance()}catch(e){a.push(e)}if(r=!0,!this.isCurrent(t))continue;t.nextDueAt=n+t.interval}this.heap.push(t)}this.heapify();break}}}if(r&&(this.lastWakeAt=n),this.compactIfNeeded(),this.armNext(),a.length===1)throw a[0];if(a.length>1)throw AggregateError(a,`Multiple spinner callbacks failed`)}isCurrent(e){return this.active.get(e.spinner)===e}discardStaleRoots(){for(;this.heap[0]&&!this.isCurrent(this.heap[0]);)this.pop()}compactIfNeeded(){this.heap.length<=this.active.size*2+16||(this.heap=Array.from(this.active.values()),this.heapify())}heapify(){for(let e=Math.floor(this.heap.length/2)-1;e>=0;e--)this.siftDown(e)}push(e){this.heap.push(e);let t=this.heap.length-1;for(;t>0;){let n=Math.floor((t-1)/2);if(this.heap[n].nextDueAt<=e.nextDueAt)break;this.heap[t]=this.heap[n],t=n}this.heap[t]=e}pop(){let e=this.heap[0],t=this.heap.pop();return!e||!t||this.heap.length===0?e:(this.heap[0]=t,this.siftDown(0),e)}siftDown(e){let t=this.heap[e],n=e;for(;;){let e=n*2+1;if(e>=this.heap.length)break;let r=e+1,i=r<this.heap.length&&this.heap[r].nextDueAt<this.heap[e].nextDueAt?r:e;if(this.heap[i].nextDueAt>=t.nextDueAt)break;this.heap[n]=this.heap[i],n=i}this.heap[n]=t}};function l(e,t=1){if(e.length===0)throw RangeError(`createPulse requires at least one color`);return n=>e[Math.floor(n*t)%e.length]}function u(e){if(e.length===0)throw RangeError(`createWave requires at least one color`);return(t,n,r,i)=>{let a=(n+t)%i;return e[Math.floor(a/i*e.length)]??e[0]}}function d(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}var f=class extends e{_name;_frames;_interval;_autoplay;_backgroundColor;_parsedBackgroundColor;_color;_parsedColor;_currentFrameIndex=0;_encodedFrames={};_lib=n();_isRunning=!1;_advanceFrame=()=>{!this._isRunning||this.isDestroyed||(this._currentFrameIndex=(this._currentFrameIndex+1)%this._frames.length,this.requestRender())};_defaultOptions={name:`dots`,frames:r.dots.frames,interval:r.dots.interval,autoplay:!0,backgroundColor:`transparent`,color:`white`};constructor(e,n){super(e,n),this._name=n.name,this._frames=n.frames?.length?n.frames:this._name?r[this._name].frames:this._defaultOptions.frames,this._interval=o(n.interval??(this._name?r[this._name].interval:this._defaultOptions.interval)),this._autoplay=n.autoplay??this._defaultOptions.autoplay,this._backgroundColor=n.backgroundColor??this._defaultOptions.backgroundColor,this._parsedBackgroundColor=t(this._backgroundColor),this._color=n.color??this._defaultOptions.color,this._parsedColor=typeof this._color==`function`?t(this._defaultOptions.color):t(this._color),this.height=1,this._encodeFrames(),this._autoplay&&this.start()}_encodeFrames(){let e=0;for(let t of this._frames){if(this._encodedFrames[t])continue;let n=this._lib.encodeUnicode(t,this.ctx.widthMethod);n&&(this._encodedFrames[t]=n,e=Math.max(e,n.data.reduce((e,t)=>e+t.width,0)))}this.width=e}_freeFrames(){for(let e in this._encodedFrames)this._encodedFrames[e]&&this._lib.freeUnicode(this._encodedFrames[e]);this._encodedFrames={}}get interval(){return this._interval}set interval(e){this._interval=o(e),this._isRunning&&c.reschedule(this,this._interval)}get name(){return this._name}set name(e){let t=e?r[e].frames:this._defaultOptions.frames,n=o(e?r[e].interval:this._defaultOptions.interval),i=!d(this._frames,t),a=this._interval!==n;this._name=e,this._interval=n,i&&(this._freeFrames(),this._frames=t,this._currentFrameIndex=0,this._encodeFrames(),this.visible&&this.requestRender()),this._isRunning&&a&&c.reschedule(this,n)}get frames(){return this._frames}set frames(e){let t=e.length===0?this._defaultOptions.frames:e;if(d(this._frames,t)){this._frames=t;return}this._freeFrames(),this._frames=t,this._currentFrameIndex=0,this._encodeFrames(),this.visible&&this.requestRender()}get color(){return this._color}set color(e){this._color=e,typeof e!=`function`&&(this._parsedColor=t(e)),this.visible&&this.requestRender()}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e,this._parsedBackgroundColor=t(e),this.visible&&this.requestRender()}get visible(){return super.visible}set visible(e){e!==super.visible&&(super.visible=e,this._isRunning&&(e?c.start(this,this._interval,this._advanceFrame):c.stop(this)))}get autoplay(){return this._autoplay}set autoplay(e){this._autoplay=e,e?this.start():this.stop()}start(){this._isRunning||this.isDestroyed||(this._isRunning=!0,this.visible&&c.start(this,this._interval,this._advanceFrame))}stop(){this._isRunning&&(this._isRunning=!1,c.stop(this))}renderSelf(e){if(!this.visible)return;let n=this._frames[this._currentFrameIndex];if(!n)return;let r=this._encodedFrames[n];if(!r)return;let i=this.x;for(let n=0;n<r.data.length;n++){let a=typeof this._color==`function`?t(this._color(this._currentFrameIndex,n,this._frames.length,r.data.length)):this._parsedColor;e.drawChar(r.data[n].char,i,this.y,a,this._parsedBackgroundColor),i+=r.data[n].width}}destroySelf(){this.stop(),this._freeFrames(),super.destroySelf()}};export{l as n,u as r,f as t};", | ||
| "import{t as e}from\"./src-DjeqLSfu.mjs\";import{extend as t}from\"@opentui/solid/components\";function n(){t({spinner:e})}n();export{n as registerSpinner};", | ||
| "import { getComponentCatalogue } from \"@opentui/solid/components\"\nimport { registerSpinner } from \"opentui-spinner/solid\"\n\nexport function registerOpencodeSpinner() {\n if (!getComponentCatalogue().spinner) registerSpinner()\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "4646C2F6D3B4B24264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-env@3.972.69/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nexport const ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nexport const ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nexport const ENV_SESSION = \"AWS_SESSION_TOKEN\";\nexport const ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nexport const ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nexport const ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nexport const fromEnv = (init) => async () => {\n init?.logger?.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n const credentials = {\n accessKeyId,\n secretAccessKey,\n ...(sessionToken && { sessionToken }),\n ...(expiry && { expiration: new Date(expiry) }),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS\", \"g\");\n return credentials;\n }\n throw new CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init?.logger });\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eACA,WACa,EAAU,oBACV,EAAa,wBACb,EAAc,oBACd,EAAiB,4BACjB,EAAuB,uBACvB,EAAiB,iBACjB,EAAU,CAAC,IAAS,SAAY,CACzC,GAAM,QAAQ,MAAM,4CAA4C,EAChE,IAAM,EAAc,QAAQ,IAAI,GAC1B,EAAkB,QAAQ,IAAI,GAC9B,EAAe,QAAQ,IAAI,GAC3B,EAAS,QAAQ,IAAI,GACrB,EAAkB,QAAQ,IAAI,GAC9B,EAAY,QAAQ,IAAI,GAC9B,GAAI,GAAe,EAAiB,CAChC,IAAM,EAAc,CAChB,cACA,qBACI,GAAgB,CAAE,cAAa,KAC/B,GAAU,CAAE,WAAY,IAAI,KAAK,CAAM,CAAE,KACzC,GAAmB,CAAE,iBAAgB,KACrC,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,uBAAwB,GAAG,EACtD,EAEX,MAAM,IAAI,2BAAyB,mDAAoD,CAAE,OAAQ,GAAM,MAAO,CAAC", | ||
| "debugId": "FF459871C8696AC964756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/project-id.ts", "../schema/src/identifier.ts", "../schema/src/workspace-id.ts", "../schema/src/location.ts", "../schema/src/event.ts", "../schema/src/integration-id.ts", "../schema/src/form.ts", "../schema/src/credential.ts"], | ||
| "sourcesContent": [ | ||
| "import { Schema } from \"effect\"\nimport { statics } from \"./schema.js\"\n\nexport const ProjectID = Schema.String.pipe(\n Schema.brand(\"Project.ID\"),\n statics((schema) => ({ global: schema.make(\"global\") })),\n)\nexport type ProjectID = typeof ProjectID.Type\n", | ||
| "const length = 26\nconst chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"\nlet lastTimestamp = 0\nlet counter = 0\n\nexport function ascending() {\n return create(false)\n}\n\nexport function descending() {\n return create(true)\n}\n\nexport function create(descending: boolean, timestamp = Date.now()) {\n if (timestamp !== lastTimestamp) {\n lastTimestamp = timestamp\n counter = 0\n }\n counter++\n\n const current = BigInt(timestamp) * 0x1000n + BigInt(counter)\n const value = descending ? ~current : current\n const time = Array.from({ length: 6 }, (_, index) =>\n Number((value >> BigInt(40 - 8 * index)) & 0xffn)\n .toString(16)\n .padStart(2, \"0\"),\n ).join(\"\")\n const bytes = crypto.getRandomValues(new Uint8Array(length - 12))\n return time + Array.from(bytes, (byte) => chars[byte % 62]).join(\"\")\n}\n", | ||
| "import { Schema } from \"effect\"\nimport { ascending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\n\nexport const WorkspaceID = Schema.String.check(Schema.isStartsWith(\"wrk\")).pipe(\n Schema.brand(\"Workspace.ID\"),\n statics((schema) => {\n const create = () => schema.make(\"wrk_\" + ascending())\n return {\n ascending: (id?: string) => {\n if (!id) return create()\n if (!id.startsWith(\"wrk\")) throw new Error(`ID ${id} does not start with wrk`)\n return schema.make(id)\n },\n create,\n }\n }),\n)\nexport type WorkspaceID = typeof WorkspaceID.Type\n", | ||
| "export * as Location from \"./location.js\"\n\nimport { Schema } from \"effect\"\nimport { AbsolutePath, optional } from \"./schema.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\nexport const Ref = Schema.Struct({\n directory: AbsolutePath,\n workspaceID: optional(WorkspaceID),\n}).annotate({ identifier: \"Location.Ref\" })\n\nexport class Info extends Schema.Class<Info>(\"Location.Info\")({\n directory: AbsolutePath,\n workspaceID: optional(WorkspaceID),\n project: Schema.Struct({\n id: ProjectID,\n directory: AbsolutePath,\n canonical: AbsolutePath,\n }),\n}) {}\n\nexport function response<S extends Schema.Top>(data: S) {\n return Schema.Struct({ location: Info, data })\n}\n", | ||
| "export * as Event from \"./event.js\"\n\nimport { Schema, SchemaTransformation } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ascending } from \"./identifier.js\"\nimport { Location } from \"./location.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"evt_\")).pipe(\n Schema.brand(\"Event.ID\"),\n statics((schema) => ({ create: () => schema.make(\"evt_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\n/**\n * Position in one aggregate's durable log. Values originate from the durable\n * event envelope and synced markers;\n * `after` cursors accept only values that came from those sources.\n */\nexport const Seq = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)).pipe(Schema.brand(\"Event.Seq\"))\nexport type Seq = typeof Seq.Type\n\n/** Durable schema version of one event type, from the event definition that committed it. */\nexport const Version = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).pipe(Schema.brand(\"Event.Version\"))\nexport type Version = typeof Version.Type\n\nconst DurableEnvelope = Schema.Struct({ aggregateID: Schema.String, seq: Seq, version: Version })\nexport type DurableEnvelope = typeof DurableEnvelope.Type\n\nexport type DurableDefinition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = Schema.Top & {\n readonly type: Type\n readonly durability: \"durable\"\n readonly durable: {\n readonly version: number\n readonly aggregate: string\n }\n readonly data: DataSchema\n}\n\nexport type EphemeralDefinition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = Schema.Top & {\n readonly type: Type\n readonly durability: \"ephemeral\"\n readonly durable?: never\n readonly data: DataSchema\n}\n\nexport type Definition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = DurableDefinition<Type, DataSchema> | EphemeralDefinition<Type, DataSchema>\n\nexport type Data<D extends Definition> = Schema.Schema.Type<D[\"data\"]>\n\ntype PayloadBase<D extends Definition> = {\n readonly id: ID\n readonly type: D[\"type\"]\n readonly created: number\n readonly data: Data<D>\n readonly location?: Location.Ref\n readonly metadata?: Record<string, unknown>\n}\n\nexport type Payload<D extends Definition = Definition> = D extends DurableDefinition\n ? PayloadBase<D> & { readonly durable: DurableEnvelope }\n : PayloadBase<D> & { readonly durable?: never }\n\ntype Input<Type extends string, Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>> = {\n readonly type: Type\n readonly identifier?: string\n readonly durable?: {\n readonly version: number\n readonly aggregate: string\n }\n readonly schema: Fields\n}\n\nexport function durable<\n const Type extends string,\n const Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>,\n>(input: Input<Type, Fields> & { readonly durable: NonNullable<Input<Type, Fields>[\"durable\"]> }) {\n const data = Schema.Struct(input.schema)\n const durable = Schema.Struct({\n aggregateID: DurableEnvelope.fields.aggregateID,\n seq: DurableEnvelope.fields.seq,\n version: Schema.Literal(input.durable.version).pipe(\n Schema.decodeTo(\n Schema.toType(Version),\n SchemaTransformation.transform({\n decode: () => Version.make(input.durable.version),\n encode: () => input.durable.version,\n }),\n ),\n ),\n })\n return Schema.Struct({\n id: ID,\n created: Schema.Finite,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n type: Schema.Literal(input.type),\n durable,\n location: optional(Location.Ref),\n data,\n })\n .annotate({ identifier: input.identifier ?? input.type })\n .pipe(\n statics(() => ({\n type: input.type,\n durability: \"durable\" as const,\n durable: input.durable,\n data,\n })),\n ) satisfies DurableDefinition<Type, typeof data>\n}\n\nexport function ephemeral<\n const Type extends string,\n const Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>,\n>(input: Omit<Input<Type, Fields>, \"durable\">) {\n const data = Schema.Struct(input.schema)\n return Schema.Struct({\n id: ID,\n created: Schema.Finite,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n type: Schema.Literal(input.type),\n location: optional(Location.Ref),\n data,\n })\n .annotate({ identifier: input.identifier ?? input.type })\n .pipe(\n statics(() => ({\n type: input.type,\n durability: \"ephemeral\" as const,\n durable: undefined,\n data,\n })),\n ) satisfies EphemeralDefinition<Type, typeof data>\n}\n\nexport function inventory<const Definitions extends ReadonlyArray<Definition>>(...definitions: Definitions) {\n return Object.freeze(definitions)\n}\n\nexport function latest(definitions: ReadonlyArray<Definition>) {\n return readonlyMap(\n definitions.reduce((result, definition) => {\n const existing = result.get(definition.type)\n if (!existing) {\n result.set(definition.type, definition)\n return result\n }\n if (definition.durable && existing.durable && definition.durable.version !== existing.durable.version) {\n if (definition.durable.version > existing.durable.version) result.set(definition.type, definition)\n return result\n }\n if (definition !== existing) throw new Error(`Duplicate latest event definition for ${definition.type}`)\n return result\n }, new Map<string, Definition>()),\n )\n}\n\nexport function versionedType(type: string, version: number) {\n return `${type}.${version}`\n}\n\nexport function durableMap<const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) {\n return readonlyMap(\n definitions.reduce((result, definition) => {\n if (definition.durability !== \"durable\") return result\n const key = versionedType(definition.type, definition.durable.version)\n if (result.has(key)) throw new Error(`Duplicate durable event definition for ${key}`)\n result.set(key, definition)\n return result\n }, new Map<string, DurableDefinition>()),\n )\n}\n\nfunction readonlyMap<Key, Value>(map: Map<Key, Value>): ReadonlyMap<Key, Value> {\n const result: ReadonlyMap<Key, Value> = Object.freeze({\n get size() {\n return map.size\n },\n entries: () => map.entries(),\n forEach: (callback: (value: Value, key: Key, map: ReadonlyMap<Key, Value>) => void, thisArg?: unknown) =>\n map.forEach((value, key) => callback.call(thisArg, value, key, result)),\n get: (key: Key) => map.get(key),\n has: (key: Key) => map.has(key),\n keys: () => map.keys(),\n values: () => map.values(),\n [Symbol.iterator]: () => map[Symbol.iterator](),\n })\n return result\n}\n", | ||
| "import { Schema } from \"effect\"\n\nexport const IntegrationID = Schema.String.pipe(Schema.brand(\"Integration.ID\"))\nexport type IntegrationID = typeof IntegrationID.Type\n\nexport const IntegrationMethodID = Schema.String.pipe(Schema.brand(\"Integration.MethodID\"))\nexport type IntegrationMethodID = typeof IntegrationMethodID.Type\n", | ||
| "export * as Form from \"./form.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, optional, statics } from \"./schema.js\"\n\nconst IDSchema = Schema.String.check(Schema.isStartsWith(\"frm_\")).pipe(Schema.brand(\"Form.ID\"))\n\nexport const ID = IDSchema.pipe(\n statics((schema: typeof IDSchema) => ({ create: (id?: string) => schema.make(id ?? \"frm_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Metadata = Schema.Record(Schema.String, Schema.Unknown).annotate({ identifier: \"Form.Metadata\" })\nexport type Metadata = typeof Metadata.Type\n\nexport const Option = Schema.Struct({\n value: Schema.String,\n label: Schema.String,\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Form.Option\" })\nexport interface Option extends Schema.Schema.Type<typeof Option> {}\n\n// One visibility condition on a field. A field's `when` is a list of conditions that must all\n// hold (AND) against the current answers for the field to be active. Semantics:\n// - `value` must match the referenced field's type; against a multiselect answer, `eq` means\n// \"selection includes value\" and `neq` means \"selection does not include value\".\n// - An unanswered referenced field makes the condition false for both ops.\n// - `key` must reference a field defined earlier in the form's field list.\n// Inactive fields are neither required nor answerable.\nexport const When = Schema.Struct({\n key: Schema.String,\n op: Schema.Literals([\"eq\", \"neq\"]),\n value: Schema.Union([Schema.String, Schema.Number, Schema.Boolean]),\n}).annotate({ identifier: \"Form.When\" })\nexport interface When extends Schema.Schema.Type<typeof When> {}\n\nconst FieldBase = {\n key: Schema.String,\n title: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n required: Schema.Boolean.pipe(optional),\n when: Schema.Array(When).pipe(optional),\n}\n\nexport const StringField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"string\"),\n format: Schema.Literals([\"email\", \"uri\", \"date\", \"date-time\"]).pipe(optional),\n minLength: NonNegativeInt.pipe(optional),\n maxLength: NonNegativeInt.pipe(optional),\n pattern: Schema.String.pipe(optional),\n placeholder: Schema.String.pipe(optional),\n default: Schema.String.pipe(optional),\n options: Schema.Array(Option).pipe(optional),\n custom: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Form.StringField\" })\nexport interface StringField extends Schema.Schema.Type<typeof StringField> {}\n\nexport const NumberField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"number\"),\n minimum: Schema.Number.pipe(optional),\n maximum: Schema.Number.pipe(optional),\n default: Schema.Number.pipe(optional),\n}).annotate({ identifier: \"Form.NumberField\" })\nexport interface NumberField extends Schema.Schema.Type<typeof NumberField> {}\n\nexport const IntegerField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"integer\"),\n minimum: Schema.Number.pipe(optional),\n maximum: Schema.Number.pipe(optional),\n default: Schema.Number.pipe(optional),\n}).annotate({ identifier: \"Form.IntegerField\" })\nexport interface IntegerField extends Schema.Schema.Type<typeof IntegerField> {}\n\nexport const BooleanField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"boolean\"),\n default: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Form.BooleanField\" })\nexport interface BooleanField extends Schema.Schema.Type<typeof BooleanField> {}\n\nexport const MultiselectField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"multiselect\"),\n options: Schema.Array(Option),\n minItems: NonNegativeInt.pipe(optional),\n maxItems: NonNegativeInt.pipe(optional),\n custom: Schema.Boolean.pipe(optional),\n default: Schema.Array(Schema.String).pipe(optional),\n}).annotate({ identifier: \"Form.MultiselectField\" })\nexport interface MultiselectField extends Schema.Schema.Type<typeof MultiselectField> {}\n\nexport const ExternalField = Schema.Struct({\n key: Schema.String,\n type: Schema.Literal(\"external\"),\n url: Schema.String,\n title: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Form.ExternalField\" })\nexport interface ExternalField extends Schema.Schema.Type<typeof ExternalField> {}\n\nexport const Field = Schema.Union([\n StringField,\n NumberField,\n IntegerField,\n BooleanField,\n MultiselectField,\n ExternalField,\n]).pipe(Schema.toTaggedUnion(\"type\"), Schema.annotate({ identifier: \"Form.Field\" }))\nexport type Field = StringField | NumberField | IntegerField | BooleanField | MultiselectField | ExternalField\n\nexport const Fields = Schema.NonEmptyArray(Field).annotate({ identifier: \"Form.Fields\" })\nexport type Fields = typeof Fields.Type\n\nconst InfoBase = {\n id: ID,\n // This should be typed as SessionID. It is a plain string only because MCP elicitation\n // temporarily needs the `\"global\"` sentinel owner, which is not a real session. Once\n // elicitations can be attributed to real sessions, revert this to SessionID. Do not rely\n // on non-session owners anywhere else.\n sessionID: Schema.String,\n title: Schema.String,\n metadata: Metadata.pipe(optional),\n}\n\nexport const Info = Schema.Struct({\n ...InfoBase,\n fields: Fields,\n}).annotate({ identifier: \"Form.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Value = Schema.Union([Schema.String, Schema.Number, Schema.Boolean, Schema.Array(Schema.String)]).annotate(\n {\n identifier: \"Form.Value\",\n },\n)\nexport type Value = typeof Value.Type\n\nexport const Answer = Schema.Record(Schema.String, Value).annotate({ identifier: \"Form.Answer\" })\nexport type Answer = typeof Answer.Type\n\nexport const State = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\") }),\n Schema.Struct({ status: Schema.Literal(\"answered\"), answer: Answer }),\n Schema.Struct({ status: Schema.Literal(\"cancelled\") }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Form.State\" })\nexport type State = typeof State.Type\n\nexport const Reply = Schema.Struct({\n answer: Answer,\n}).annotate({ identifier: \"Form.Reply\" })\nexport interface Reply extends Schema.Schema.Type<typeof Reply> {}\n\nconst Created = ephemeral({ type: \"form.created\", schema: { form: Info } })\nconst Replied = ephemeral({ type: \"form.replied\", schema: { id: ID, sessionID: Schema.String, answer: Answer } })\nconst Cancelled = ephemeral({ type: \"form.cancelled\", schema: { id: ID, sessionID: Schema.String } })\n\nexport const Event = { Created, Replied, Cancelled, Definitions: inventory(Created, Replied, Cancelled) }\n", | ||
| "export * as Credential from \"./credential.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { IntegrationID, IntegrationMethodID } from \"./integration-id.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, statics } from \"./schema.js\"\nimport { Form } from \"./form.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"Credential.ID\"),\n statics((schema) => ({ create: () => schema.make(\"cred_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nconst Updated = ephemeral({\n type: \"credential.updated\",\n schema: {},\n})\nconst Switched = ephemeral({\n type: \"credential.switched\",\n schema: { integrationID: IntegrationID, credentialID: Schema.NullOr(ID) },\n})\nexport const Event = {\n Updated,\n Switched,\n Definitions: inventory(Updated, Switched),\n}\n\nexport interface OAuth extends Schema.Schema.Type<typeof OAuth> {}\nexport const OAuth = Schema.Struct({\n type: Schema.Literal(\"oauth\"),\n methodID: IntegrationMethodID,\n refresh: Schema.String,\n access: Schema.String,\n expires: NonNegativeInt,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n}).annotate({ identifier: \"Credential.OAuth\" })\n\nexport interface Key extends Schema.Schema.Type<typeof Key> {}\nexport const Key = Schema.Struct({\n type: Schema.Literal(\"key\"),\n key: Schema.String,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n configuration: optional(Form.Answer),\n}).annotate({ identifier: \"Credential.Key\" })\n\nexport const Value = Schema.Union([OAuth, Key])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Credential.Value\" })\nexport type Value = Schema.Schema.Type<typeof Value>\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F59F441F2AA8194464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/filesystem.ts"], | ||
| "sourcesContent": [ | ||
| "export * as FileSystem from \"./filesystem.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { NonNegativeInt, PositiveInt, RelativePath } from \"./schema.js\"\n\nconst Changed = ephemeral({\n type: \"filesystem.changed\",\n schema: {\n file: Schema.String,\n event: Schema.Literals([\"add\", \"change\", \"unlink\"]),\n },\n})\nexport const Event = { Changed, Definitions: inventory(Changed) }\n\nexport interface Entry extends Schema.Schema.Type<typeof Entry> {}\nexport const Entry = Schema.Struct({\n path: RelativePath,\n type: Schema.Literals([\"file\", \"directory\"]),\n}).annotate({ identifier: \"FileSystem.Entry\" })\n\nexport interface Submatch extends Schema.Schema.Type<typeof Submatch> {}\nexport const Submatch = Schema.Struct({\n text: Schema.String,\n start: NonNegativeInt,\n end: NonNegativeInt,\n}).annotate({ identifier: \"FileSystem.Submatch\" })\n\nexport interface Match extends Schema.Schema.Type<typeof Match> {}\nexport const Match = Schema.Struct({\n entry: Entry,\n line: PositiveInt,\n offset: NonNegativeInt,\n text: Schema.String,\n submatches: Schema.Array(Submatch),\n}).annotate({ identifier: \"FileSystem.Match\" })\n\nexport class FindInput extends Schema.Class<FindInput>(\"FileSystem.FindInput\")({\n query: Schema.String,\n type: Schema.Literals([\"file\", \"directory\"]).pipe(optional),\n limit: PositiveInt.pipe(optional),\n}) {}\n" | ||
| ], | ||
| "mappings": ";oVAOA,IAAM,EAAU,EAAU,CACxB,KAAM,qBACN,OAAQ,CACN,KAAM,EAAO,OACb,MAAO,EAAO,SAAS,CAAC,MAAO,SAAU,QAAQ,CAAC,CACpD,CACF,CAAC,EACY,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,EAGnD,EAAQ,EAAO,OAAO,CACjC,KAAM,EACN,KAAM,EAAO,SAAS,CAAC,OAAQ,WAAW,CAAC,CAC7C,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAGjC,EAAW,EAAO,OAAO,CACpC,KAAM,EAAO,OACb,MAAO,EACP,IAAK,CACP,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,EAGpC,EAAQ,EAAO,OAAO,CACjC,MAAO,EACP,KAAM,EACN,OAAQ,EACR,KAAM,EAAO,OACb,WAAY,EAAO,MAAM,CAAQ,CACnC,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAEvC,MAAM,UAAkB,EAAO,MAAiB,sBAAsB,EAAE,CAC7E,MAAO,EAAO,OACd,KAAM,EAAO,SAAS,CAAC,OAAQ,WAAW,CAAC,EAAE,KAAK,CAAQ,EAC1D,MAAO,EAAY,KAAK,CAAQ,CAClC,CAAC,CAAE,CAAC", | ||
| "debugId": "CA4B3FA47C1A6D7764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/config/mcp.ts"], | ||
| "sourcesContent": [ | ||
| "export * as ConfigMCP from \"./mcp.js\"\n\nimport { Schema } from \"effect\"\nimport { Mcp } from \"../mcp.js\"\nimport { optional } from \"../schema.js\"\n\nexport const Timeout = Mcp.TimeoutConfig\nexport type Timeout = Mcp.TimeoutConfig\nexport const Local = Mcp.LocalConfig\nexport type Local = Mcp.LocalConfig\nexport const OAuth = Mcp.OAuthConfig\nexport type OAuth = Mcp.OAuthConfig\nexport const Remote = Mcp.RemoteConfig\nexport type Remote = Mcp.RemoteConfig\nexport const Server = Mcp.ServerConfig\n\nexport class Info extends Schema.Class<Info>(\"Config.MCP\")({\n timeout: Timeout.pipe(optional),\n servers: Schema.Record(Schema.String, Server).pipe(optional),\n}) {}\n" | ||
| ], | ||
| "mappings": ";2TAMO,IAAM,EAAU,EAAI,cAEd,EAAQ,EAAI,YAEZ,EAAQ,EAAI,YAEZ,EAAS,EAAI,aAEb,EAAS,EAAI,aAEnB,MAAM,UAAa,EAAO,MAAY,YAAY,EAAE,CACzD,QAAS,EAAQ,KAAK,CAAQ,EAC9B,QAAS,EAAO,OAAO,EAAO,OAAQ,CAAM,EAAE,KAAK,CAAQ,CAC7D,CAAC,CAAE,CAAC", | ||
| "debugId": "D3841DDF0C25798764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/image-client.ts", "../ai/src/image.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Effect, Layer } from \"effect\"\nimport { RequestExecutor } from \"./route/executor.js\"\nimport { mergeHttpOptions, type AIError } from \"./schema/index.js\"\nimport { sanitizeSurrogates } from \"./utils/sanitize.js\"\nimport type { ImageOptions, ImageRequest, ImageRequestFor, ImageResponse } from \"./image.js\"\n\nexport type Execute = RequestExecutor.Interface[\"execute\"]\n\nexport interface Interface {\n readonly generate: <Options extends ImageOptions>(\n request: ImageRequestFor<Options>,\n ) => Effect.Effect<ImageResponse, AIError>\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/ImageClient\") {}\n\nexport const generate = <Options extends ImageOptions>(\n request: ImageRequestFor<Options>,\n): Effect.Effect<ImageResponse, AIError, Service> =>\n Effect.gen(function* () {\n const client = yield* Service\n return yield* client.generate(request)\n })\n\nexport const layer: Layer.Layer<Service, never, RequestExecutor.Service> = Layer.effect(\n Service,\n Effect.gen(function* () {\n const executor = yield* RequestExecutor.Service\n return Service.of({\n generate: (request) =>\n request.model.route.generate(\n {\n ...sanitizeSurrogates({\n ...request,\n model: undefined,\n http: mergeHttpOptions(request.model.http, request.http),\n }),\n model: request.model,\n },\n executor.execute,\n ),\n })\n }),\n)\n\nexport const ImageClient = {\n Service,\n layer,\n generate,\n} as const\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport {\n HttpOptions,\n InvalidRequestReason,\n AIError,\n ModelID,\n ProviderID,\n ProviderMetadata,\n Usage,\n} from \"./schema/index.js\"\nimport { ImageClient, Service, type Execute as ImageExecute } from \"./image-client.js\"\n\nexport interface ImageRoute<Options extends ImageOptions = ImageOptions> {\n readonly id: string\n readonly generate: (request: ImageRequestFor<Options>, execute: ImageExecute) => Effect.Effect<ImageResponse, AIError>\n}\n\nexport type ImageOptions = Record<string, unknown>\n\nexport class ImageModel<Options extends ImageOptions = ImageOptions> {\n declare protected readonly _Options: (options: Options) => Options\n readonly id: ModelID\n readonly provider: ProviderID\n readonly route: ImageRoute<Options>\n readonly http?: HttpOptions\n\n constructor(input: ImageModel.Input<Options>) {\n this.id = input.id\n this.provider = input.provider\n this.route = input.route\n this.http = input.http\n }\n\n static make<Options extends ImageOptions = ImageOptions>(input: ImageModel.MakeInput<Options>) {\n return new ImageModel<Options>({\n id: ModelID.make(input.id),\n provider: ProviderID.make(input.provider),\n route: input.route,\n http: input.http,\n })\n }\n}\n\nexport namespace ImageModel {\n export interface Input<Options extends ImageOptions = ImageOptions> {\n readonly id: ModelID\n readonly provider: ProviderID\n readonly route: ImageRoute<Options>\n readonly http?: HttpOptions\n }\n\n export interface MakeInput<Options extends ImageOptions = ImageOptions>\n extends Omit<Input<Options>, \"id\" | \"provider\"> {\n readonly id: string | ModelID\n readonly provider: string | ProviderID\n }\n}\n\nexport const ImageModelSchema = Schema.declare((value): value is ImageModel => value instanceof ImageModel, {\n expected: \"Image.Model\",\n})\n\nconst ImageBytesInput = Schema.Struct({\n type: Schema.Literal(\"bytes\"),\n data: Schema.Uint8Array,\n mediaType: Schema.String,\n})\nconst ImageUrlInput = Schema.Struct({\n type: Schema.Literal(\"url\"),\n url: Schema.String,\n})\nconst ImageFileIDInput = Schema.Struct({\n type: Schema.Literal(\"file-id\"),\n id: Schema.String,\n})\nconst ImageFileURIInput = Schema.Struct({\n type: Schema.Literal(\"file-uri\"),\n uri: Schema.String,\n mediaType: Schema.String,\n})\n\nexport const ImageInputSchema = Schema.Union([\n ImageBytesInput,\n ImageUrlInput,\n ImageFileIDInput,\n ImageFileURIInput,\n]).pipe(Schema.toTaggedUnion(\"type\"))\nexport type ImageInput = Schema.Schema.Type<typeof ImageInputSchema>\n\nexport const ImageInput = {\n bytes: (data: Uint8Array, mediaType: string): ImageInput => ({ type: \"bytes\", data, mediaType }),\n url: (url: string): ImageInput => ({ type: \"url\", url }),\n file: (id: string): ImageInput => ({ type: \"file-id\", id }),\n fileUri: (uri: string, mediaType: string): ImageInput => ({ type: \"file-uri\", uri, mediaType }),\n} as const\n\nexport class ImageRequest extends Schema.Class<ImageRequest>(\"Image.Request\")({\n model: ImageModelSchema,\n prompt: Schema.String,\n images: Schema.optional(Schema.Array(ImageInputSchema)),\n options: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n http: Schema.optional(HttpOptions),\n}) {\n declare protected readonly _ImageRequest: void\n}\n\nexport type ImageRequestFor<Options extends ImageOptions = ImageOptions> = Omit<ImageRequest, \"model\" | \"options\"> & {\n readonly model: ImageModel<Options>\n readonly options?: Options\n}\n\nexport type ImageModelOptions<Model> = Model extends ImageModel<infer Options> ? Options : never\n\nexport type ImageRequestInput<Model extends object = ImageModel> = Omit<\n ConstructorParameters<typeof ImageRequest>[0],\n \"model\" | \"options\" | \"http\"\n> & {\n readonly model: Model\n readonly options?: NoInfer<ImageModelOptions<Model>>\n readonly http?: HttpOptions.Input\n} & (Model extends ImageModel<ImageModelOptions<Model>> ? unknown : never)\n\nexport class GeneratedImage extends Schema.Class<GeneratedImage>(\"Image.Generated\")({\n mediaType: Schema.String,\n data: Schema.Union([Schema.String, Schema.Uint8Array]),\n providerMetadata: Schema.optional(ProviderMetadata),\n}) {}\n\nexport class ImageResponse extends Schema.Class<ImageResponse>(\"Image.Response\")({\n images: Schema.Array(GeneratedImage),\n usage: Schema.optional(Usage),\n providerMetadata: Schema.optional(ProviderMetadata),\n}) {\n get image() {\n return this.images[0]\n }\n}\n\nexport function request<const Model extends object>(\n input: ImageRequestInput<Model>,\n): ImageRequestFor<ImageModelOptions<Model>>\nexport function request(input: ImageRequest): ImageRequest\nexport function request(input: ImageRequest | ImageRequestInput) {\n if (input instanceof ImageRequest) return input\n return new ImageRequest({\n ...input,\n model: input.model as unknown as ImageModel,\n http: input.http === undefined ? undefined : HttpOptions.make(input.http),\n })\n}\n\nexport function generate<const Model extends object>(\n input: ImageRequestInput<Model>,\n): Effect.Effect<ImageResponse, AIError, Service>\nexport function generate(input: ImageRequest): Effect.Effect<ImageResponse, AIError, Service>\nexport function generate(input: ImageRequest | ImageRequestInput) {\n return Effect.try({\n try: () => (input instanceof ImageRequest ? input : request(input)),\n catch: (error) =>\n new AIError({\n module: \"Image\",\n method: \"generate\",\n reason: new InvalidRequestReason({ message: error instanceof Error ? error.message : String(error) }),\n }),\n }).pipe(Effect.flatMap((request) => ImageClient.generate(request as unknown as ImageRequestFor<ImageOptions>)))\n}\n\nexport const Image = {\n request,\n generate,\n} as const\n" | ||
| ], | ||
| "mappings": ";wLAcO,MAAM,UAAgB,EAAQ,QAA4B,EAAE,uBAAuB,CAAE,CAAC,CAUtF,IAAM,EAA8D,EAAM,OAC/E,EACA,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAW,MAAO,EAAgB,QACxC,OAAO,EAAQ,GAAG,CAChB,SAAU,CAAC,IACT,EAAQ,MAAM,MAAM,SAClB,IACK,EAAmB,IACjB,EACH,MAAO,OACP,KAAM,EAAiB,EAAQ,MAAM,KAAM,EAAQ,IAAI,CACzD,CAAC,EACD,MAAO,EAAQ,KACjB,EACA,EAAS,OACX,CACJ,CAAC,EACF,CACH,ECxBO,MAAM,CAAwD,CAE1D,GACA,SACA,MACA,KAET,WAAW,CAAC,EAAkC,CAC5C,KAAK,GAAK,EAAM,GAChB,KAAK,SAAW,EAAM,SACtB,KAAK,MAAQ,EAAM,MACnB,KAAK,KAAO,EAAM,WAGb,KAAiD,CAAC,EAAsC,CAC7F,OAAO,IAAI,EAAoB,CAC7B,GAAI,EAAQ,KAAK,EAAM,EAAE,EACzB,SAAU,EAAW,KAAK,EAAM,QAAQ,EACxC,MAAO,EAAM,MACb,KAAM,EAAM,IACd,CAAC,EAEL,CAiBO,IAAM,EAAmB,EAAO,QAAQ,CAAC,IAA+B,aAAiB,EAAY,CAC1G,SAAU,aACZ,CAAC,EAEK,EAAkB,EAAO,OAAO,CACpC,KAAM,EAAO,QAAQ,OAAO,EAC5B,KAAM,EAAO,WACb,UAAW,EAAO,MACpB,CAAC,EACK,EAAgB,EAAO,OAAO,CAClC,KAAM,EAAO,QAAQ,KAAK,EAC1B,IAAK,EAAO,MACd,CAAC,EACK,EAAmB,EAAO,OAAO,CACrC,KAAM,EAAO,QAAQ,SAAS,EAC9B,GAAI,EAAO,MACb,CAAC,EACK,EAAoB,EAAO,OAAO,CACtC,KAAM,EAAO,QAAQ,UAAU,EAC/B,IAAK,EAAO,OACZ,UAAW,EAAO,MACpB,CAAC,EAEY,EAAmB,EAAO,MAAM,CAC3C,EACA,EACA,EACA,CACF,CAAC,EAAE,KAAK,EAAO,cAAc,MAAM,CAAC,EAU7B,MAAM,UAAqB,EAAO,MAAoB,eAAe,EAAE,CAC5E,MAAO,EACP,OAAQ,EAAO,OACf,OAAQ,EAAO,SAAS,EAAO,MAAM,CAAgB,CAAC,EACtD,QAAS,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,CAAC,EACrE,KAAM,EAAO,SAAS,CAAW,CACnC,CAAC,CAAE,CAEH,CAkBO,MAAM,UAAuB,EAAO,MAAsB,iBAAiB,EAAE,CAClF,UAAW,EAAO,OAClB,KAAM,EAAO,MAAM,CAAC,EAAO,OAAQ,EAAO,UAAU,CAAC,EACrD,iBAAkB,EAAO,SAAS,CAAgB,CACpD,CAAC,CAAE,CAAC,CAEG,MAAM,UAAsB,EAAO,MAAqB,gBAAgB,EAAE,CAC/E,OAAQ,EAAO,MAAM,CAAc,EACnC,MAAO,EAAO,SAAS,CAAK,EAC5B,iBAAkB,EAAO,SAAS,CAAgB,CACpD,CAAC,CAAE,IACG,MAAK,EAAG,CACV,OAAO,KAAK,OAAO,GAEvB", | ||
| "debugId": "25F6A194D702F2F664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/permission-saved.ts", "../schema/src/vcs.ts"], | ||
| "sourcesContent": [ | ||
| "export * as PermissionSaved from \"./permission-saved.js\"\n\nimport { Schema } from \"effect\"\nimport { ascending } from \"./identifier.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"PermissionSaved.ID\"),\n statics((schema) => ({ create: () => schema.make(\"psv_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Info = Schema.Struct({\n id: ID,\n projectID: ProjectID,\n action: Schema.String,\n resource: Schema.String,\n}).annotate({ identifier: \"PermissionSaved.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n", | ||
| "export * as Vcs from \"./vcs.js\"\n\nimport { Schema } from \"effect\"\nimport { NonNegativeInt, optional } from \"./schema.js\"\n\nexport const Branch = Schema.Struct({\n current: optional(Schema.String),\n default: optional(Schema.String),\n}).annotate({ identifier: \"Vcs.Branch\" })\nexport interface Branch extends Schema.Schema.Type<typeof Branch> {}\n\nexport const Info = Schema.Struct({\n branch: Branch,\n}).annotate({ identifier: \"Vcs.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const BranchList = Schema.Array(Schema.String).annotate({ identifier: \"Vcs.BranchList\" })\nexport type BranchList = typeof BranchList.Type\n\nexport const Mode = Schema.Literals([\"working\", \"branch\"]).annotate({ identifier: \"Vcs.Mode\" })\nexport type Mode = typeof Mode.Type\n\nexport const FileStatus = Schema.Struct({\n file: Schema.String,\n additions: NonNegativeInt,\n deletions: NonNegativeInt,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]),\n}).annotate({ identifier: \"Vcs.FileStatus\" })\nexport interface FileStatus extends Schema.Schema.Type<typeof FileStatus> {}\n" | ||
| ], | ||
| "mappings": ";kSAOO,IAAM,EAAK,EAAO,OAAO,KAC9B,EAAO,MAAM,oBAAoB,EACjC,EAAQ,CAAC,KAAY,CAAE,OAAQ,IAAM,EAAO,KAAK,OAAS,EAAU,CAAC,CAAE,EAAE,CAC3E,EAGa,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,UAAW,EACX,OAAQ,EAAO,OACf,SAAU,EAAO,MACnB,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,iGCb3C,IAAM,EAAS,EAAO,OAAO,CAClC,QAAS,EAAS,EAAO,MAAM,EAC/B,QAAS,EAAS,EAAO,MAAM,CACjC,CAAC,EAAE,SAAS,CAAE,WAAY,YAAa,CAAC,EAG3B,EAAO,EAAO,OAAO,CAChC,OAAQ,CACV,CAAC,EAAE,SAAS,CAAE,WAAY,UAAW,CAAC,EAGzB,EAAa,EAAO,MAAM,EAAO,MAAM,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC,EAGlF,EAAO,EAAO,SAAS,CAAC,UAAW,QAAQ,CAAC,EAAE,SAAS,CAAE,WAAY,UAAW,CAAC,EAGjF,EAAa,EAAO,OAAO,CACtC,KAAM,EAAO,OACb,UAAW,EACX,UAAW,EACX,OAAQ,EAAO,SAAS,CAAC,QAAS,UAAW,UAAU,CAAC,CAC1D,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC", | ||
| "debugId": "99BA15A1E222B0BD64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/logout.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { resolveIntegration } from \"./resolve\"\n\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.logout,\n Effect.fn(\"cli.mcp.logout\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n\n const integration = yield* resolveIntegration(client, input.name, location)\n if (!integration) {\n process.stdout.write(`No stored credentials for ${input.name}` + EOL)\n return\n }\n\n const credentials = integration.connections.filter((connection) => connection.type === \"credential\")\n if (credentials.length === 0) {\n process.stdout.write(`No stored credentials for ${input.name}` + EOL)\n return\n }\n\n yield* Effect.forEach(\n credentials,\n (connection) => Effect.promise(() => client.credential.remove({ credentialID: connection.id, location })),\n { discard: true },\n )\n process.stdout.write(`Removed OAuth credentials for ${input.name}` + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAST,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAE7B,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,OAC/B,EAAO,GAAG,gBAAgB,EAAE,SAAU,CAAC,EAAO,CAC5C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,EAAc,MAAO,EAAmB,EAAQ,EAAM,KAAM,CAAQ,EAC1E,GAAI,CAAC,EAAa,CAChB,QAAQ,OAAO,MAAM,6BAA6B,EAAM,OAAS,CAAG,EACpE,OAGF,IAAM,EAAc,EAAY,YAAY,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACnG,GAAI,EAAY,SAAW,EAAG,CAC5B,QAAQ,OAAO,MAAM,6BAA6B,EAAM,OAAS,CAAG,EACpE,OAGF,MAAO,EAAO,QACZ,EACA,CAAC,IAAe,EAAO,QAAQ,IAAM,EAAO,WAAW,OAAO,CAAE,aAAc,EAAW,GAAI,UAAS,CAAC,CAAC,EACxG,CAAE,QAAS,EAAK,CAClB,EACA,QAAQ,OAAO,MAAM,iCAAiC,EAAM,OAAS,CAAG,EACzE,CACH", | ||
| "debugId": "F376B64DA7B78FE464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/effect@4.0.0-rc.111/node_modules/effect/dist/unstable/http/FetchHttpClient.js"], | ||
| "sourcesContent": [ | ||
| "/**\n * Fetch-based implementation of the Effect HTTP client service.\n *\n * This module provides an `HttpClient` layer that executes requests through a\n * Web Fetch API implementation. It is the transport to use in browsers, edge\n * runtimes, and Node.js environments where `globalThis.fetch` is available, or\n * anywhere a compatible fetch function can be supplied.\n *\n * @since 4.0.0\n */\nimport * as Context from \"../../Context.js\";\nimport * as Effect from \"../../Effect.js\";\nimport * as Stream from \"../../Stream.js\";\nimport * as Headers from \"./Headers.js\";\nimport * as HttpClient from \"./HttpClient.js\";\nimport * as HttpClientError from \"./HttpClientError.js\";\nimport * as HttpClientResponse from \"./HttpClientResponse.js\";\n/**\n * Context reference for the `fetch` implementation used by the fetch-based HTTP client.\n *\n * **Details**\n *\n * Defaults to `globalThis.fetch`.\n *\n * @category services\n * @since 4.0.0\n */\nexport const Fetch = /*#__PURE__*/Context.Reference(\"effect/http/FetchHttpClient/Fetch\", {\n defaultValue: () => globalThis.fetch\n});\n/**\n * Service that contains default fetch options for the fetch-based HTTP client.\n *\n * **When to use**\n *\n * Use to provide default credentials, cache, redirect, integrity, or other\n * fetch options for outgoing HTTP requests.\n *\n * **Details**\n *\n * Request-specific method, headers, body, and abort signal are supplied by the client when a request is executed.\n *\n * @category services\n * @since 4.0.0\n */\nexport class RequestInit extends /*#__PURE__*/Context.Service()(\"effect/http/FetchHttpClient/RequestInit\") {}\nconst fetch = /*#__PURE__*/HttpClient.make((request, url, signal, fiber) => {\n const fetch = fiber.getRef(Fetch);\n const options = Context.getOrUndefined(fiber.context, RequestInit) ?? {};\n let headers = options.headers ? Headers.merge(Headers.fromInput(options.headers), request.headers) : request.headers;\n if (headers[\"content-length\"]) {\n headers = Headers.remove(headers, \"content-length\");\n }\n const send = body => Effect.map(Effect.tryPromise({\n try: () => fetch(url, {\n ...options,\n method: request.method,\n headers,\n body,\n duplex: request.body._tag === \"Stream\" ? \"half\" : undefined,\n signal\n }),\n catch: cause => new HttpClientError.HttpClientError({\n reason: new HttpClientError.TransportError({\n request,\n cause\n })\n })\n }), response => HttpClientResponse.fromWeb(request, response));\n switch (request.body._tag) {\n case \"Raw\":\n case \"Uint8Array\":\n return send(request.body.body);\n case \"FormData\":\n return send(request.body.formData);\n case \"Stream\":\n return Effect.flatMap(Stream.toReadableStreamEffect(request.body.stream), send);\n }\n return send(undefined);\n});\n/**\n * Layer that provides an `HttpClient` implementation backed by the configured\n * `Fetch` function.\n *\n * **When to use**\n *\n * Use when an Effect program should execute `HttpClient` requests through the\n * platform `fetch` implementation, especially in browser, edge, or Node.js\n * runtimes with `globalThis.fetch`.\n *\n * **Details**\n *\n * The layer uses the current `Fetch` reference and optional `RequestInit`\n * service for each request. Request-specific method, headers, body, and abort\n * signal are supplied by the client and override matching `RequestInit` fields.\n *\n * **Gotchas**\n *\n * Fetch behavior comes from the runtime's implementation, so CORS, cookies,\n * redirects, abort handling, and streaming support can vary by platform. Stream\n * request bodies are sent as Web streams with `duplex: \"half\"`, and any\n * `content-length` header is removed before calling `fetch`.\n *\n * @see {@link Fetch} for supplying the fetch implementation used by this layer\n * @see {@link RequestInit} for default `RequestInit` options applied before request-specific fields\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/HttpClient.layerMergedContext(/*#__PURE__*/Effect.succeed(fetch));\n//# sourceMappingURL=FetchHttpClient.js.map" | ||
| ], | ||
| "mappings": ";sUA2BO,IAAM,EAA6B,EAAU,oCAAqC,CACvF,aAAc,IAAM,WAAW,KACjC,CAAC,EAgBM,MAAM,UAAyC,EAAQ,EAAE,yCAAyC,CAAE,CAAC,CAC5G,IAAM,EAAgC,EAAK,CAAC,EAAS,EAAK,EAAQ,IAAU,CAC1E,IAAM,EAAQ,EAAM,OAAO,CAAK,EAC1B,EAAkB,EAAe,EAAM,QAAS,CAAW,GAAK,CAAC,EACnE,EAAU,EAAQ,QAAkB,EAAc,EAAU,EAAQ,OAAO,EAAG,EAAQ,OAAO,EAAI,EAAQ,QAC7G,GAAI,EAAQ,kBACV,EAAkB,EAAO,EAAS,gBAAgB,EAEpD,IAAM,EAAO,KAAe,EAAW,EAAW,CAChD,IAAK,IAAM,EAAM,EAAK,IACjB,EACH,OAAQ,EAAQ,OAChB,UACA,OACA,OAAQ,EAAQ,KAAK,OAAS,SAAW,OAAS,OAClD,QACF,CAAC,EACD,MAAO,KAAS,IAAoB,EAAgB,CAClD,OAAQ,IAAoB,EAAe,CACzC,UACA,OACF,CAAC,CACH,CAAC,CACH,CAAC,EAAG,KAA+B,EAAQ,EAAS,CAAQ,CAAC,EAC7D,OAAQ,EAAQ,KAAK,UACd,UACA,aACH,OAAO,EAAK,EAAQ,KAAK,IAAI,MAC1B,WACH,OAAO,EAAK,EAAQ,KAAK,QAAQ,MAC9B,SACH,OAAc,EAAe,EAAuB,EAAQ,KAAK,MAAM,EAAG,CAAI,EAElF,OAAO,EAAK,MAAS,EACtB,EA8BY,EAAgC,EAAuC,EAAQ,CAAK,CAAC", | ||
| "debugId": "9A42A8048FD0428D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/form.ts", "src/commands/handlers/auth/login.ts"], | ||
| "sourcesContent": [ | ||
| "import { confirm, log, multiselect, password, select, text, type Option } from \"@clack/prompts\"\nimport { Effect } from \"effect\"\nimport type { FormAnswer, FormField, FormFields } from \"@opencode-ai/client\"\nimport { openUrl, prompt, requireInteractive } from \"../../../ui/prompt\"\n\nconst skip = Symbol(\"skip\")\nconst custom = Symbol(\"custom\")\n\nexport const answerForm = Effect.fn(\"cli.auth.form\")(function* (fields: FormFields | undefined) {\n if (!fields) return undefined\n yield* requireInteractive(\"Authentication form input requires an interactive terminal\")\n const answer: FormAnswer = {}\n for (const field of fields) {\n if (!active(field, answer)) continue\n const value = yield* answerField(field)\n if (value !== undefined) answer[field.key] = value\n }\n return answer\n})\n\nexport const secret = Effect.fn(\"cli.auth.secret\")(function* (message: string) {\n yield* requireInteractive(\"API key input requires an interactive terminal\")\n return yield* prompt<string>(() => password({ message, validate: (value) => (!value ? \"Required\" : undefined) }))\n})\n\nconst answerField = Effect.fn(\"cli.auth.form.field\")(function* (field: FormField) {\n const message = field.title ?? field.key\n if (field.description) log.info(field.description)\n if (field.type === \"external\") {\n log.info(field.url)\n yield* openUrl(field.url)\n const acknowledged = yield* prompt<boolean>(() =>\n confirm({ message: message || \"Continue after completing this step?\", initialValue: true }),\n )\n if (!acknowledged) return yield* Effect.fail(new Error(`${message || \"External step\"} is required`))\n return true\n }\n if (field.type === \"boolean\") {\n if (field.required) return yield* prompt<boolean>(() => confirm({ message, initialValue: field.default ?? true }))\n const options: Array<Option<boolean | typeof skip>> = [\n { value: true, label: \"Yes\" },\n { value: false, label: \"No\" },\n { value: skip, label: \"Skip\" },\n ]\n const value = yield* prompt<boolean | typeof skip>(() =>\n select<boolean | typeof skip>({\n message,\n options,\n initialValue: field.default ?? skip,\n }),\n )\n if (value === skip) return undefined\n return value\n }\n if (field.type === \"multiselect\") {\n const options: Array<Option<string | typeof custom>> = field.options.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.description,\n }))\n if (field.custom) options.push({ value: custom, label: \"Type another value\" })\n const values = yield* prompt<Array<string | typeof custom>>(() =>\n multiselect<string | typeof custom>({\n message,\n options,\n initialValues: field.default,\n required: field.required || (field.minItems ?? 0) > 0,\n }),\n )\n const selected = values.filter((value): value is string => value !== custom)\n if (values.includes(custom)) {\n selected.push(yield* prompt<string>(() => text({ message: \"Enter value\", validate: required })))\n }\n if (field.minItems !== undefined && selected.length < field.minItems) {\n return yield* Effect.fail(new Error(`Select at least ${field.minItems}`))\n }\n if (field.maxItems !== undefined && selected.length > field.maxItems) {\n return yield* Effect.fail(new Error(`Select at most ${field.maxItems}`))\n }\n return selected\n }\n if (field.type === \"string\" && field.options) {\n const options: Array<Option<string | typeof custom | typeof skip>> = field.options.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.description,\n }))\n if (field.custom) options.push({ value: custom, label: \"Type your own answer\" })\n if (!field.required) options.push({ value: skip, label: \"Skip\" })\n const value = yield* prompt<string | typeof custom | typeof skip>(() =>\n select<string | typeof custom | typeof skip>({ message, options, initialValue: field.default }),\n )\n if (value === skip) return undefined\n if (value !== custom) return value\n }\n const value = yield* prompt<string>(() =>\n text({\n message,\n placeholder: field.type === \"string\" ? field.placeholder : undefined,\n initialValue: field.default === undefined ? undefined : String(field.default),\n validate: (input) => validateText(field, input),\n }),\n )\n if (!value && !field.required) return undefined\n if (field.type === \"string\") return value\n return Number(value)\n})\n\nfunction active(field: FormField, answer: FormAnswer) {\n if (field.type === \"external\" || !field.when) return true\n return field.when.every((condition) => {\n const value = answer[condition.key]\n if (value === undefined) return false\n const matches = Array.isArray(value) ? value.includes(String(condition.value)) : value === condition.value\n return condition.op === \"eq\" ? matches : !matches\n })\n}\n\nfunction required(value: string | undefined) {\n return value ? undefined : \"Required\"\n}\n\nfunction validateText(field: Exclude<FormField, { type: \"boolean\" | \"external\" | \"multiselect\" }>, value?: string) {\n if (!value) return field.required ? \"Required\" : undefined\n if (field.type === \"number\" || field.type === \"integer\") {\n const number = Number(value)\n if (!Number.isFinite(number)) return \"Expected a number\"\n if (field.type === \"integer\" && !Number.isInteger(number)) return \"Expected an integer\"\n if (typeof field.minimum === \"number\" && number < field.minimum) return `Must be at least ${field.minimum}`\n if (typeof field.maximum === \"number\" && number > field.maximum) return `Must be at most ${field.maximum}`\n return undefined\n }\n if (field.minLength !== undefined && value.length < field.minLength)\n return `Must be at least ${field.minLength} characters`\n if (field.maxLength !== undefined && value.length > field.maxLength)\n return `Must be at most ${field.maxLength} characters`\n if (field.pattern) {\n try {\n if (!new RegExp(field.pattern).test(value)) return \"Invalid format\"\n } catch {\n return \"Invalid format\"\n }\n }\n if (field.format === \"uri\" && !URL.canParse(value)) return \"Expected a URL\"\n if (field.format === \"email\" && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)) return \"Expected an email address\"\n if (field.format === \"date\") {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return \"Expected a date\"\n const date = new Date(`${value}T00:00:00.000Z`)\n if (Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value) return \"Expected a date\"\n }\n if (field.format === \"date-time\" && Number.isNaN(Date.parse(value))) return \"Expected a date and time\"\n return undefined\n}\n", | ||
| "import { autocomplete, intro, log, outro, select, spinner, text } from \"@clack/prompts\"\nimport { Effect, Option } from \"effect\"\nimport type { FormAnswer, IntegrationInfo, OpenCodeClient } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { handlePromptErrors, openUrl, prompt, requireInteractive } from \"../../../ui/prompt\"\nimport { answerForm, secret } from \"./form\"\nimport {\n createClient,\n connectMethods,\n loadIntegrations,\n location,\n request,\n resolveIntegration,\n resolveMethod,\n type ConnectMethod,\n} from \"./shared\"\n\nconst integrationPriority = new Map([\n [\"opencode\", 0],\n [\"opencode-go\", 1],\n [\"openai\", 2],\n [\"github-copilot\", 3],\n [\"google\", 4],\n [\"anthropic\", 5],\n [\"openrouter\", 6],\n [\"vercel\", 7],\n])\n\nexport default Runtime.handler(\n Commands.commands.auth.commands.login,\n Effect.fn(\"cli.auth.login\")((input) =>\n login({\n target: Option.getOrUndefined(input.target),\n method: Option.getOrUndefined(input.method),\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n }).pipe(handlePromptErrors),\n ),\n)\n\nconst login = Effect.fn(\"cli.auth.login.run\")(function* (input: {\n target?: string\n method?: string\n server?: string\n standalone: boolean\n}) {\n if (!input.target)\n yield* requireInteractive(\"Pass an integration ID or name when running without an interactive terminal\")\n intro(\"Connect an integration\")\n const client = yield* createClient({ server: input.server, standalone: input.standalone })\n const integration = yield* findIntegration(client, input.target)\n const methods = connectMethods(integration)\n if (methods.length === 0) yield* Effect.fail(new Error(`${integration.name} has no interactive login methods`))\n const method = yield* chooseMethod(methods, input.method)\n const answer = method.type === \"command\" ? undefined : yield* answerForm(method.form)\n yield* authenticate(client, integration, method, answer)\n outro(\"Done\")\n})\n\nconst findIntegration = Effect.fn(\"cli.auth.login.integration\")(function* (client: OpenCodeClient, target?: string) {\n if (target && URL.canParse(target)) {\n const protocol = new URL(target).protocol\n if (protocol === \"http:\" || protocol === \"https:\") {\n const progress = spinner()\n progress.start(\"Discovering authentication provider...\")\n yield* request((signal) => client.integration.wellknown.add({ url: target, location }, { signal })).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(\"Authentication provider discovered\"))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Discovery failed\", 1))),\n )\n }\n }\n const integrations = yield* loadIntegrations(client)\n if (target) return yield* resolveIntegration(integrations, target)\n const available = integrations\n .filter((integration) => connectMethods(integration).length > 0)\n .toSorted(\n (a, b) =>\n (integrationPriority.get(a.id) ?? integrationPriority.size) -\n (integrationPriority.get(b.id) ?? integrationPriority.size) ||\n a.name.localeCompare(b.name) ||\n a.id.localeCompare(b.id),\n )\n if (available.length === 0) return yield* Effect.fail(new Error(\"No authentication integrations are available\"))\n const id = yield* prompt<string>(() =>\n autocomplete({\n message: \"Select integration\",\n maxItems: 8,\n options: available.map((integration) => {\n const option = { value: integration.id, label: integration.name, hint: integration.id }\n if (integration.connections.length > 0) return { ...option, hint: \"connected\" }\n if (integration.id === \"opencode\") return { ...option, hint: \"recommended\" }\n return option\n }),\n }),\n )\n return yield* resolveIntegration(available, id)\n})\n\nconst chooseMethod = Effect.fn(\"cli.auth.login.method\")(function* (methods: ConnectMethod[], target?: string) {\n if (target) return yield* resolveMethod(methods, target)\n if (methods.length === 1) return methods[0]\n yield* requireInteractive(\"Pass --method when running without an interactive terminal\")\n const id = yield* prompt<string>(() =>\n select({\n message: \"Select login method\",\n options: methods.map((method) => {\n if (method.type === \"key\") return { value: \"key\", label: method.label ?? \"API key\" }\n return { value: method.id, label: method.label }\n }),\n }),\n )\n return yield* resolveMethod(methods, id)\n})\n\nconst authenticate = Effect.fn(\"cli.auth.login.authenticate\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: ConnectMethod,\n answer?: FormAnswer,\n) {\n if (method.type === \"key\") return yield* keyLogin(client, integration, method, answer)\n if (method.type === \"command\") return yield* commandLogin(client, integration, method)\n return yield* oauthLogin(client, integration, method, answer)\n})\n\nconst keyLogin = Effect.fn(\"cli.auth.login.key\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"key\" }>,\n answer?: FormAnswer,\n) {\n const key = yield* secret(method.label ?? `Enter your ${integration.name} API key`)\n const progress = spinner()\n progress.start(\"Saving credential...\")\n yield* request((signal) =>\n client.integration.connect.key({ integrationID: integration.id, key, answer, location }, { signal }),\n ).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(`Connected to ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))),\n )\n})\n\nconst oauthLogin = Effect.fn(\"cli.auth.login.oauth\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"oauth\" }>,\n answer?: FormAnswer,\n) {\n const progress = spinner()\n progress.start(\"Starting authorization...\")\n const started = yield* request((signal) =>\n client.integration.oauth.connect(\n { integrationID: integration.id, methodID: method.id, answer, location },\n { signal },\n ),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n const attempt = started.data\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.oauth.cancel(\n { integrationID: integration.id, attemptID: attempt.attemptID, location },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n progress.stop(\"Authorization started\")\n log.info(attempt.instructions)\n log.info(attempt.url)\n if (process.stdin.isTTY && process.stdout.isTTY) yield* openUrl(attempt.url)\n\n if (attempt.mode === \"code\") {\n yield* requireInteractive(\"This login requires an interactive terminal to enter the authorization code\")\n const code = yield* prompt<string>(() =>\n text({ message: \"Paste the authorization code\", validate: (value) => (!value ? \"Required\" : undefined) }),\n )\n const completing = spinner()\n completing.start(\"Completing authorization...\")\n yield* request((signal) =>\n client.integration.oauth.complete(\n { integrationID: integration.id, attemptID: attempt.attemptID, code, location },\n { signal },\n ),\n ).pipe(\n Effect.tap(() => Effect.sync(() => completing.stop(`Connected to ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => completing.stop(\"Authentication failed\", 1))),\n )\n return\n }\n\n const waiting = spinner()\n waiting.start(\"Waiting for authorization...\")\n const status = yield* waitForOAuth(client, integration.id, attempt.attemptID).pipe(\n Effect.tapCause(() => Effect.sync(() => waiting.stop(\"Authentication failed\", 1))),\n )\n if (status.status === \"complete\") {\n waiting.stop(`Connected to ${integration.name}`)\n return\n }\n waiting.stop(\"Authentication failed\", 1)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n yield* Effect.fail(new Error(\"Authorization expired\"))\n})\n\nconst commandLogin = Effect.fn(\"cli.auth.login.command\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"command\" }>,\n) {\n const progress = spinner()\n progress.start(\"Starting authentication command...\")\n const started = yield* request((signal) =>\n client.integration.command.connect({ integrationID: integration.id, methodID: method.id, location }, { signal }),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.command.cancel(\n {\n integrationID: integration.id,\n attemptID: started.data.attemptID,\n location,\n },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n const status = yield* waitForCommand(client, integration.id, started.data.attemptID, (message) =>\n progress.message(message.trim() || \"Waiting for authentication command...\"),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n if (status.status === \"complete\") {\n progress.stop(`Connected to ${integration.name}`)\n return\n }\n progress.stop(\"Authentication failed\", 1)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n yield* Effect.fail(new Error(\"Authentication expired\"))\n})\n\nconst waitForOAuth = Effect.fn(\"cli.auth.login.oauth.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.oauth.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n yield* Effect.sleep(500)\n }\n})\n\nconst waitForCommand = Effect.fn(\"cli.auth.login.command.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n update: (message: string) => void,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.command.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n if (response.data.message) update(response.data.message)\n yield* Effect.sleep(500)\n }\n})\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "1C44B4C543E5BE4964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/version.ts"], | ||
| "sourcesContent": [ | ||
| "declare const OPENCODE_VERSION: string\ndeclare const OPENCODE_CHANNEL: string\n\nconst version = typeof OPENCODE_VERSION === \"string\" ? OPENCODE_VERSION : \"local\"\nconst channel = typeof OPENCODE_CHANNEL === \"string\" ? OPENCODE_CHANNEL : \"local\"\n\nexport { version as OPENCODE_VERSION, channel as OPENCODE_CHANNEL }\nexport const OPENCODE_LOCAL = channel === \"local\"\n" | ||
| ], | ||
| "mappings": ";AAGA,IAAM,EAAiD,kBACjD,EAAiD,MAGhD,IAAM,EAAiB", | ||
| "debugId": "2D53CA16CFFBE8DD64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/set.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.set,\n Effect.fn(\"cli.service.set\")(function* (input) {\n yield* ServiceConfig.set(input.key, input.value, Option.getOrUndefined(input.nestedValue))\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,IACnC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,MAAO,EAAc,IAAI,EAAM,IAAK,EAAM,MAAO,EAAO,eAAe,EAAM,WAAW,CAAC,EAC1F,CACH", | ||
| "debugId": "92EB89DFA7E4790C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "1B2B56C90C275DC864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+provider@3.0.14/node_modules/@ai-sdk/provider/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n constructor({\n value,\n cause,\n context\n }) {\n let contextPrefix = \"Type validation failed\";\n if (context == null ? void 0 : context.field) {\n contextPrefix += ` for ${context.field}`;\n }\n if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {\n contextPrefix += \" (\";\n const parts = [];\n if (context.entityName) {\n parts.push(context.entityName);\n }\n if (context.entityId) {\n parts.push(`id: \"${context.entityId}\"`);\n }\n contextPrefix += parts.join(\", \");\n contextPrefix += \")\";\n }\n super({\n name: name12,\n message: `${contextPrefix}: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n this.context = context;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value and context, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n context\n }) {\n var _a15, _b15, _c;\n if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a15 = cause.context) == null ? void 0 : _a15.field) === (context == null ? void 0 : context.field) && ((_b15 = cause.context) == null ? void 0 : _b15.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {\n return cause;\n }\n return new _TypeValidationError({ value, cause, context });\n }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "83B8F4A1ED962E4E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/logout.ts"], | ||
| "sourcesContent": [ | ||
| "import { autocomplete, intro, outro, spinner } from \"@clack/prompts\"\nimport { Effect, Option } from \"effect\"\nimport type { IntegrationInfo } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { handlePromptErrors, prompt, requireInteractive } from \"../../../ui/prompt\"\nimport { createClient, loadIntegrations, location, request, resolveIntegration } from \"./shared\"\n\nexport default Runtime.handler(\n Commands.commands.auth.commands.logout,\n Effect.fn(\"cli.auth.logout\")((input) =>\n logout({\n target: Option.getOrUndefined(input.target),\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n }).pipe(handlePromptErrors),\n ),\n)\n\nconst logout = Effect.fn(\"cli.auth.logout.run\")(function* (input: {\n target?: string\n server?: string\n standalone: boolean\n}) {\n if (!input.target)\n yield* requireInteractive(\"Pass an integration ID or name when running without an interactive terminal\")\n intro(\"Remove credential\")\n const client = yield* createClient({ server: input.server, standalone: input.standalone })\n const integrations = yield* loadIntegrations(client)\n const integration = yield* chooseIntegration(integrations, input.target)\n const credentials = integration.connections.filter((connection) => connection.type === \"credential\")\n if (credentials.length === 0) {\n const environment = integration.connections\n .filter((connection) => connection.type === \"env\")\n .map((connection) => connection.name)\n if (environment.length) {\n yield* Effect.fail(\n new Error(\n `${integration.name} is authenticated through ${environment.join(\", \")}; unset the environment variable to disconnect`,\n ),\n )\n }\n yield* Effect.fail(new Error(`No stored credentials for ${integration.name}`))\n }\n const progress = spinner()\n progress.start(\"Removing credential...\")\n yield* Effect.forEach(\n credentials,\n (connection) =>\n request((signal) => client.credential.remove({ credentialID: connection.id, location }, { signal })),\n { concurrency: \"unbounded\", discard: true },\n ).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(`Disconnected from ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Failed to remove credential\", 1))),\n )\n outro(\"Done\")\n})\n\nconst chooseIntegration = Effect.fn(\"cli.auth.logout.integration\")(function* (\n integrations: IntegrationInfo[],\n target?: string,\n) {\n if (target) return yield* resolveIntegration(integrations, target)\n const configured = integrations.filter((integration) =>\n integration.connections.some((connection) => connection.type === \"credential\"),\n )\n if (configured.length === 0) return yield* Effect.fail(new Error(\"No stored credentials found\"))\n const id = yield* prompt<string>(() =>\n autocomplete({\n message: \"Select integration\",\n maxItems: 8,\n options: configured.map((integration) => ({\n value: integration.id,\n label: integration.name,\n hint: integration.connections\n .filter((connection) => connection.type === \"credential\")\n .map((connection) => connection.label)\n .join(\", \"),\n })),\n }),\n )\n return yield* resolveIntegration(configured, id)\n})\n" | ||
| ], | ||
| "mappings": ";2yCAQA,IAAe,IAAQ,QACrB,EAAS,SAAS,KAAK,SAAS,OAChC,EAAO,GAAG,iBAAiB,EAAE,CAAC,IAC5B,EAAO,CACL,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EAAE,KAAK,CAAkB,CAC5B,CACF,EAEM,EAAS,EAAO,GAAG,qBAAqB,EAAE,SAAU,CAAC,EAIxD,CACD,GAAI,CAAC,EAAM,OACT,MAAO,EAAmB,6EAA6E,EACzG,EAAM,mBAAmB,EACzB,IAAM,EAAS,MAAO,EAAa,CAAE,OAAQ,EAAM,OAAQ,WAAY,EAAM,UAAW,CAAC,EACnF,EAAe,MAAO,EAAiB,CAAM,EAC7C,EAAc,MAAO,EAAkB,EAAc,EAAM,MAAM,EACjE,EAAc,EAAY,YAAY,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACnG,GAAI,EAAY,SAAW,EAAG,CAC5B,IAAM,EAAc,EAAY,YAC7B,OAAO,CAAC,IAAe,EAAW,OAAS,KAAK,EAChD,IAAI,CAAC,IAAe,EAAW,IAAI,EACtC,GAAI,EAAY,OACd,MAAO,EAAO,KACR,MACF,GAAG,EAAY,iCAAiC,EAAY,KAAK,IAAI,iDACvE,CACF,EAEF,MAAO,EAAO,KAAS,MAAM,6BAA6B,EAAY,MAAM,CAAC,EAE/E,IAAM,EAAW,EAAQ,EACzB,EAAS,MAAM,wBAAwB,EACvC,MAAO,EAAO,QACZ,EACA,CAAC,IACC,EAAQ,CAAC,IAAW,EAAO,WAAW,OAAO,CAAE,aAAc,EAAW,GAAI,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EACrG,CAAE,YAAa,YAAa,QAAS,EAAK,CAC5C,EAAE,KACA,EAAO,IAAI,IAAM,EAAO,KAAK,IAAM,EAAS,KAAK,qBAAqB,EAAY,MAAM,CAAC,CAAC,EAC1F,EAAO,SAAS,IAAM,EAAO,KAAK,IAAM,EAAS,KAAK,8BAA+B,CAAC,CAAC,CAAC,CAC1F,EACA,EAAM,MAAM,EACb,EAEK,EAAoB,EAAO,GAAG,6BAA6B,EAAE,SAAU,CAC3E,EACA,EACA,CACA,GAAI,EAAQ,OAAO,MAAO,EAAmB,EAAc,CAAM,EACjE,IAAM,EAAa,EAAa,OAAO,CAAC,IACtC,EAAY,YAAY,KAAK,CAAC,IAAe,EAAW,OAAS,YAAY,CAC/E,EACA,GAAI,EAAW,SAAW,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,6BAA6B,CAAC,EAC/F,IAAM,EAAK,MAAO,EAAe,IAC/B,EAAa,CACX,QAAS,qBACT,SAAU,EACV,QAAS,EAAW,IAAI,CAAC,KAAiB,CACxC,MAAO,EAAY,GACnB,MAAO,EAAY,KACnB,KAAM,EAAY,YACf,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACvD,IAAI,CAAC,IAAe,EAAW,KAAK,EACpC,KAAK,IAAI,CACd,EAAE,CACJ,CAAC,CACH,EACA,OAAO,MAAO,EAAmB,EAAY,CAAE,EAChD", | ||
| "debugId": "B8BA1734BEE20AF264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/tool-display.ts", "../tui/src/util/path-format.ts", "../tui/src/util/filetype.ts", "../../node_modules/.bun/ansi-regex@6.3.0/node_modules/ansi-regex/index.js", "../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js"], | ||
| "sourcesContent": [ | ||
| "export function canonicalToolName(name: string) {\n if (name === \"bash\") return \"shell\"\n if (name === \"task\") return \"subagent\"\n if (name === \"apply_patch\") return \"patch\"\n return name\n}\n\nexport function finiteNumber(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return\n return value\n}\n\nexport function primitiveInputSummary(input: Record<string, unknown>, omit: readonly string[] = []) {\n const entries = Object.entries(input).filter(([key, value]) => {\n if (omit.includes(key)) return false\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\"\n })\n if (entries.length === 0) return \"\"\n return `[${entries.map(([key, value]) => `${key}=${String(value)}`).join(\", \")}]`\n}\n\nexport function webSearchProviderLabel(provider: unknown) {\n if (typeof provider !== \"string\" || !provider) return \"Web Search\"\n return `Web Search via ${provider[0].toUpperCase()}${provider.slice(1)}`\n}\n\nexport function toolDisplayMetadata(state: unknown): Record<string, unknown> {\n if (!state || typeof state !== \"object\" || Array.isArray(state)) return {}\n if (!(\"status\" in state) || state.status === \"streaming\") return {}\n if (!(\"metadata\" in state) || !state.metadata || typeof state.metadata !== \"object\") return {}\n if (Array.isArray(state.metadata)) return {}\n return state.metadata as Record<string, unknown>\n}\n\nexport function toolDisplayContent(state: SessionMessageAssistantTool[\"state\"]) {\n if (state.status === \"streaming\" || state.status === \"running\") return []\n return state.content ?? []\n}\n\nexport function nonEmptyToolContent<T>(content: ReadonlyArray<T> | undefined): [T, ...T[]] | undefined {\n if (!content) return undefined\n const [first, ...rest] = content\n return first === undefined ? undefined : [first, ...rest]\n}\nimport type { SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\n", | ||
| "import path from \"path\"\n\nexport function abbreviateHome(input: string, home: string) {\n if (!home) return input\n const paths = windowsPath(home) ? path.win32 : path.posix\n const relative = paths.relative(home, input)\n if (!relative) return \"~\"\n if (relative === \"..\" || relative.startsWith(\"..\" + paths.sep) || paths.isAbsolute(relative)) return input\n return \"~/\" + relative.split(paths.sep).join(\"/\")\n}\n\nexport function formatPath(\n input: string | undefined,\n options: { base: string; home?: string; forwardSlashes?: boolean },\n) {\n if (!input) return \"\"\n const windows = windowsPath(options.base)\n if (!windows && windowsPath(input)) {\n return options.forwardSlashes ? input.replaceAll(\"\\\\\", \"/\") : input\n }\n\n const paths = windows ? path.win32 : path.posix\n const absolute = paths.isAbsolute(input) ? input : paths.resolve(options.base, input)\n const relative = paths.relative(options.base, absolute)\n const formatted = !relative\n ? \".\"\n : relative !== \"..\" && !relative.startsWith(\"..\" + paths.sep) && !paths.isAbsolute(relative)\n ? relative\n : options.home\n ? abbreviateHome(absolute, options.home)\n : absolute\n return options.forwardSlashes ? formatted.replaceAll(\"\\\\\", \"/\") : formatted\n}\n\nfunction windowsPath(input: string) {\n return /^[A-Za-z]:[\\\\/]/.test(input) || input.startsWith(\"\\\\\\\\\")\n}\n", | ||
| "import path from \"node:path\"\n\nexport const LANGUAGE_EXTENSIONS: Record<string, string> = {\n \".abap\": \"abap\",\n \".bat\": \"bat\",\n \".bib\": \"bibtex\",\n \".bibtex\": \"bibtex\",\n \".clj\": \"clojure\",\n \".cljs\": \"clojure\",\n \".cljc\": \"clojure\",\n \".edn\": \"clojure\",\n \".coffee\": \"coffeescript\",\n \".c\": \"c\",\n \".cpp\": \"cpp\",\n \".cxx\": \"cpp\",\n \".cc\": \"cpp\",\n \".c++\": \"cpp\",\n \".cs\": \"csharp\",\n \".csx\": \"csharp\",\n \".css\": \"css\",\n \".d\": \"d\",\n \".pas\": \"pascal\",\n \".pascal\": \"pascal\",\n \".diff\": \"diff\",\n \".patch\": \"diff\",\n \".dart\": \"dart\",\n \".dockerfile\": \"dockerfile\",\n \".ex\": \"elixir\",\n \".exs\": \"elixir\",\n \".erl\": \"erlang\",\n \".ets\": \"typescript\",\n \".hrl\": \"erlang\",\n \".fs\": \"fsharp\",\n \".fsi\": \"fsharp\",\n \".fsx\": \"fsharp\",\n \".fsscript\": \"fsharp\",\n \".gitcommit\": \"git-commit\",\n \".gitrebase\": \"git-rebase\",\n \".go\": \"go\",\n \".groovy\": \"groovy\",\n \".gleam\": \"gleam\",\n \".hbs\": \"handlebars\",\n \".handlebars\": \"handlebars\",\n \".hs\": \"haskell\",\n \".lhs\": \"haskell\",\n \".html\": \"html\",\n \".htm\": \"html\",\n \".ini\": \"ini\",\n \".java\": \"java\",\n \".jl\": \"julia\",\n \".js\": \"javascript\",\n \".kt\": \"kotlin\",\n \".kts\": \"kotlin\",\n \".jsx\": \"javascriptreact\",\n \".json\": \"json\",\n \".tex\": \"latex\",\n \".latex\": \"latex\",\n \".less\": \"less\",\n \".lua\": \"lua\",\n \".makefile\": \"makefile\",\n makefile: \"makefile\",\n \".md\": \"markdown\",\n \".markdown\": \"markdown\",\n \".m\": \"objective-c\",\n \".mm\": \"objective-cpp\",\n \".pl\": \"perl\",\n \".pm\": \"perl\",\n \".pm6\": \"perl6\",\n \".php\": \"php\",\n \".ps1\": \"powershell\",\n \".psm1\": \"powershell\",\n \".pug\": \"jade\",\n \".jade\": \"jade\",\n \".py\": \"python\",\n \".r\": \"r\",\n \".cshtml\": \"razor\",\n \".razor\": \"razor\",\n \".rb\": \"ruby\",\n \".rake\": \"ruby\",\n \".gemspec\": \"ruby\",\n \".ru\": \"ruby\",\n \".erb\": \"erb\",\n \".html.erb\": \"erb\",\n \".js.erb\": \"erb\",\n \".css.erb\": \"erb\",\n \".json.erb\": \"erb\",\n \".rs\": \"rust\",\n \".scss\": \"scss\",\n \".sass\": \"sass\",\n \".scala\": \"scala\",\n \".shader\": \"shaderlab\",\n \".sh\": \"bash\",\n \".bash\": \"bash\",\n \".zsh\": \"bash\",\n \".ksh\": \"bash\",\n \".sql\": \"sql\",\n \".svelte\": \"svelte\",\n \".swift\": \"swift\",\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".mtsx\": \"typescriptreact\",\n \".ctsx\": \"typescriptreact\",\n \".xml\": \"xml\",\n \".xsl\": \"xsl\",\n \".yaml\": \"yaml\",\n \".yml\": \"yaml\",\n \".mjs\": \"javascript\",\n \".cjs\": \"javascript\",\n \".vue\": \"vue\",\n \".zig\": \"zig\",\n \".zon\": \"zig\",\n \".astro\": \"astro\",\n \".ml\": \"ocaml\",\n \".mli\": \"ocaml\",\n \".tf\": \"terraform\",\n \".tfvars\": \"terraform-vars\",\n \".hcl\": \"hcl\",\n \".nix\": \"nix\",\n \".typ\": \"typst\",\n \".typc\": \"typst\",\n}\n\nexport function filetype(input?: string) {\n if (!input) return \"none\"\n const language = LANGUAGE_EXTENSIONS[path.extname(input)]\n if ([\"typescriptreact\", \"javascriptreact\", \"javascript\"].includes(language)) return \"typescript\"\n return language\n}\n", | ||
| "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST\n\t// The payload stops at the first terminator character rather than scanning ahead for one, so an unterminated `ESC ]` cannot rescan the rest of the input. Terminals likewise abort a control string on an unexpected ESC.\n\tconst osc = `(?:\\\\u001B\\\\][^\\\\u0007\\\\u001B\\\\u009C]*${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", | ||
| "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B09CE85D746D505E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/debug/agents.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.debug.commands.agents,\n Effect.fn(\"cli.debug.agents\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.agent.list({ location: { directory: process.cwd() } }))\n process.stdout.write(\n JSON.stringify(\n response.data.toSorted((a, b) => a.id.localeCompare(b.id)),\n null,\n 2,\n ) + EOL,\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,MAAM,SAAS,OACjC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAW,MAAO,EAAO,QAAQ,IAAM,EAAO,MAAM,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EAC1G,QAAQ,OAAO,MACb,KAAK,UACH,EAAS,KAAK,SAAS,CAAC,EAAG,IAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC,EACzD,KACA,CACF,EAAI,CACN,EACD,CACH", | ||
| "debugId": "19B46DD29A3C686264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "5AEC15452574D77264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/add.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { readFile, stat, writeFile } from \"node:fs/promises\"\nimport { Effect, Option } from \"effect\"\nimport { applyEdits, modify } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.add,\n Effect.fn(\"cli.mcp.add\")(function* (input) {\n const url = Option.getOrUndefined(input.url)\n const headers = Option.getOrUndefined(input.header)\n const environment = Option.getOrUndefined(input.env)\n // The CLI framework strands `--` operands on the root command, so read the local server command\n // straight from argv after `--`. This also lets the command carry its own flags (e.g. `npx -y`).\n const dash = process.argv.indexOf(\"--\")\n const command = dash === -1 ? [...input.command] : process.argv.slice(dash + 1)\n\n const hasCommand = command.length > 0\n if (url && hasCommand)\n return yield* Effect.fail(new Error(\"Provide either --url <url> or a command after --, not both\"))\n if (!url && !hasCommand) return yield* Effect.fail(new Error(\"Provide either --url <url> or a command after --\"))\n if (url && !URL.canParse(url)) return yield* Effect.fail(new Error(`Invalid URL: ${url}`))\n if (url && environment) return yield* Effect.fail(new Error(\"--env is only valid for local MCP servers\"))\n if (hasCommand && headers) return yield* Effect.fail(new Error(\"--header is only valid for remote MCP servers\"))\n\n const server = url\n ? { type: \"remote\" as const, url, ...(headers ? { headers } : {}) }\n : { type: \"local\" as const, command, ...(environment ? { environment } : {}) }\n\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(input.global ? global.config : process.cwd()))\n yield* Effect.promise(() => write(configPath, input.name, server))\n process.stdout.write(`MCP server \"${input.name}\" added to ${configPath}` + EOL)\n }),\n)\n\nexport async function resolveConfigPath(directory: string) {\n const candidates = [\n path.join(directory, \"opencode.json\"),\n path.join(directory, \"opencode.jsonc\"),\n path.join(directory, \".opencode\", \"opencode.json\"),\n path.join(directory, \".opencode\", \"opencode.jsonc\"),\n ]\n for (const candidate of candidates) {\n if (\n await stat(candidate).then(\n (info) => info.isFile(),\n () => false,\n )\n )\n return candidate\n }\n return candidates[0]\n}\n\nasync function write(configPath: string, name: string, server: unknown) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return \"{}\"\n throw error\n })\n const edits = modify(text, [\"mcp\", \"servers\", name], server, {\n formattingOptions: { tabSize: 2, insertSpaces: true },\n })\n await writeFile(configPath, applyEdits(text, edits))\n}\n" | ||
| ], | ||
| "mappings": ";wOAAA,cAAS,WACT,oBACA,mBAAS,UAAU,eAAM,oBAOzB,IAAe,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,IAC/B,EAAO,GAAG,aAAa,EAAE,SAAU,CAAC,EAAO,CACzC,IAAM,EAAM,EAAO,eAAe,EAAM,GAAG,EACrC,EAAU,EAAO,eAAe,EAAM,MAAM,EAC5C,EAAc,EAAO,eAAe,EAAM,GAAG,EAG7C,EAAO,QAAQ,KAAK,QAAQ,IAAI,EAChC,EAAU,IAAS,GAAK,CAAC,GAAG,EAAM,OAAO,EAAI,QAAQ,KAAK,MAAM,EAAO,CAAC,EAExE,EAAa,EAAQ,OAAS,EACpC,GAAI,GAAO,EACT,OAAO,MAAO,EAAO,KAAS,MAAM,4DAA4D,CAAC,EACnG,GAAI,CAAC,GAAO,CAAC,EAAY,OAAO,MAAO,EAAO,KAAS,MAAM,kDAAkD,CAAC,EAChH,GAAI,GAAO,CAAC,IAAI,SAAS,CAAG,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,gBAAgB,GAAK,CAAC,EACzF,GAAI,GAAO,EAAa,OAAO,MAAO,EAAO,KAAS,MAAM,2CAA2C,CAAC,EACxG,GAAI,GAAc,EAAS,OAAO,MAAO,EAAO,KAAS,MAAM,+CAA+C,CAAC,EAE/G,IAAM,EAAS,EACX,CAAE,KAAM,SAAmB,SAAS,EAAU,CAAE,SAAQ,EAAI,CAAC,CAAG,EAChE,CAAE,KAAM,QAAkB,aAAa,EAAc,CAAE,aAAY,EAAI,CAAC,CAAG,EAEzE,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAM,OAAS,EAAO,OAAS,QAAQ,IAAI,CAAC,CAAC,EAC9G,MAAO,EAAO,QAAQ,IAAM,EAAM,EAAY,EAAM,KAAM,CAAM,CAAC,EACjE,QAAQ,OAAO,MAAM,eAAe,EAAM,kBAAkB,IAAe,CAAG,EAC/E,CACH,EAEA,eAAsB,CAAiB,CAAC,EAAmB,CACzD,IAAM,EAAa,CACjB,EAAK,KAAK,EAAW,eAAe,EACpC,EAAK,KAAK,EAAW,gBAAgB,EACrC,EAAK,KAAK,EAAW,YAAa,eAAe,EACjD,EAAK,KAAK,EAAW,YAAa,gBAAgB,CACpD,EACA,QAAW,KAAa,EACtB,GACE,MAAM,EAAK,CAAS,EAAE,KACpB,CAAC,IAAS,EAAK,OAAO,EACtB,IAAM,EACR,EAEA,OAAO,EAEX,OAAO,EAAW,GAGpB,eAAe,CAAK,CAAC,EAAoB,EAAc,EAAiB,CACtE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,MAAO,KACtG,MAAM,EACP,EACK,EAAQ,EAAO,EAAM,CAAC,MAAO,UAAW,CAAI,EAAG,EAAQ,CAC3D,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CACtD,CAAC,EACD,MAAM,EAAU,EAAY,EAAW,EAAM,CAAK,CAAC", | ||
| "debugId": "B5DCE32CF9BA7CD764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/workspace/driver.ts", "../core/src/workspace/sql.ts", "../core/src/workspace.ts", "../core/src/environment/files.ts", "../core/src/environment/exec-defaults.ts", "../core/src/environment/local.ts", "../core/src/environment/memory.ts", "../core/src/environment/environment.ts", "../core/src/environment/index.ts"], | ||
| "sourcesContent": [ | ||
| "export * as WorkspaceDriver from \"./driver.js\"\n\nimport { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { makeGlobalNode } from \"@opencode-ai/util/effect/app-node\"\nimport { Context, Effect, Layer, Schema } from \"effect\"\nimport type { Scope } from \"effect\"\nimport type { Driver as EnvironmentDriver } from \"../environment/driver.js\"\n\n/**\n * Smallest provider-owned JSON value required to reconnect to the same\n * provider resource. Core stores it opaquely and hands it back; only the\n * owning driver reads inside.\n */\nexport const Binding = Schema.Record(Schema.String, Schema.Json)\nexport type Binding = typeof Binding.Type\n\nexport class Error extends Schema.TaggedError<Error>()(\"WorkspaceDriver.Error\", {\n message: Schema.optional(Schema.String),\n cause: Schema.optional(Schema.Defect()),\n}) {}\n\nexport class ProviderNotFound extends Schema.TaggedError<ProviderNotFound>()(\"WorkspaceDriver.ProviderNotFound\", {\n provider: Schema.String,\n}) {}\n\nexport interface Interface {\n /**\n * Get-or-create the provider resource backing this logical workspace.\n *\n * MUST be idempotent per `workspaceID`: core retries the same ID after\n * failures and process crashes, including a crash between a successful\n * create and the binding being persisted, and another process may race the\n * same ID. Key the resource by `workspaceID` (a provider tag or a\n * deterministic name) and adopt an existing match instead of creating a\n * duplicate.\n */\n readonly create: (input: {\n readonly workspaceID: Workspace.ID\n }) => Effect.Effect<{ readonly binding: Binding }, Error>\n readonly connect: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding\n readonly saveBinding: (binding: Binding) => Effect.Effect<void>\n }) => Effect.Effect<EnvironmentDriver, Error, Scope.Scope>\n readonly suspendForIdle: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding\n readonly saveBinding: (binding: Binding) => Effect.Effect<void>\n }) => Effect.Effect<void, Error>\n /**\n * Release the provider resource for this workspace.\n *\n * `binding` is null when none was persisted: the workspace was never\n * provisioned, or provisioning was interrupted mid-create. Look up any\n * resource previously created for `workspaceID` and clean it up, treating\n * absence as success.\n */\n readonly destroy: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding | null\n }) => Effect.Effect<void, Error>\n}\n\nexport const make = (driver: Interface) => driver\n\nexport interface Registry {\n readonly get: (provider: string) => Effect.Effect<Interface, ProviderNotFound>\n}\n\nexport class RegistryService extends Context.Service<RegistryService, Registry>()(\n \"@opencode/WorkspaceDriverRegistry\",\n) {}\n\nexport const registry = (drivers: Readonly<Record<string, Interface>>): Registry => ({\n get: (provider) => {\n const driver = Object.hasOwn(drivers, provider) ? drivers[provider] : undefined\n return driver ? Effect.succeed(driver) : Effect.fail(new ProviderNotFound({ provider }))\n },\n})\n\nexport const registryNode = (drivers: Readonly<Record<string, Interface>>) =>\n makeGlobalNode({\n service: RegistryService,\n layer: Layer.succeed(RegistryService, RegistryService.of(registry(drivers))),\n deps: [],\n })\n\nexport const node = registryNode({})\n", | ||
| "import { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { integer, sqliteTable, text } from \"drizzle-orm/sqlite-core\"\nimport type { WorkspaceDriver } from \"./driver.js\"\n\nexport const WorkspaceTable = sqliteTable(\"workspace\", {\n id: text().$type<Workspace.ID>().primaryKey(),\n provider: text().notNull(),\n binding: text({ mode: \"json\" }).$type<WorkspaceDriver.Binding>(),\n created_at: integer().notNull(),\n last_used_at: integer().notNull(),\n})\n", | ||
| "export * as Workspace from \"./workspace.js\"\n\nimport { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { makeGlobalNode } from \"@opencode-ai/util/effect/app-node\"\nimport { eq } from \"drizzle-orm\"\nimport { Clock, Context, Deferred, Duration, Effect, Exit, FiberSet, Layer, Ref, Schedule, Schema, Scope } from \"effect\"\nimport { systemError } from \"effect/PlatformError\"\nimport { make } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver as EnvironmentDriver } from \"./environment/driver.js\"\nimport { Database } from \"./database/database.js\"\nimport { KeyedMutex } from \"./effect/keyed-mutex.js\"\nimport { WorkspaceDriver } from \"./workspace/driver.js\"\nimport { WorkspaceTable } from \"./workspace/sql.js\"\n\nexport const ID = Workspace.ID\nexport type ID = Workspace.ID\n\nexport class Info extends Schema.Class<Info>(\"Workspace.Info\")({\n id: ID,\n provider: Schema.String,\n binding: WorkspaceDriver.Binding,\n createdAt: Schema.Number,\n lastUsedAt: Schema.Number,\n}) {}\n\nexport class NotFound extends Schema.TaggedError<NotFound>()(\"Workspace.NotFound\", { workspaceID: ID }) {}\n\nexport class CreateConflict extends Schema.TaggedError<CreateConflict>()(\"Workspace.CreateConflict\", {\n workspaceID: ID,\n provider: Schema.String,\n existingProvider: Schema.String,\n}) {}\n\nexport interface Interface {\n /** Instantly commits a logical workspace ID. No provider work happens here. */\n readonly create: (input: {\n readonly id?: ID\n readonly provider: string\n }) => Effect.Effect<ID, CreateConflict | WorkspaceDriver.ProviderNotFound>\n /** Starts or joins the shared attempt that makes the backing resource real, then returns it. */\n readonly provision: (\n workspaceID: ID,\n ) => Effect.Effect<Info, NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound>\n readonly connect: (\n workspaceID: ID,\n ) => Effect.Effect<EnvironmentDriver, NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound>\n /** Makes the workspace absent; reports whether this call destroyed an existing workspace. */\n readonly destroy: (workspaceID: ID) => Effect.Effect<\n Workspace.DestroyResult,\n WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound\n >\n}\n\nexport interface Options {\n readonly idleThreshold?: Duration.Input\n readonly pollInterval?: Duration.Input\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/Workspace\") {}\n\ninterface Connection {\n readonly driver: WorkspaceDriver.Interface\n readonly environment: EnvironmentDriver\n readonly saveBinding: (binding: WorkspaceDriver.Binding) => Effect.Effect<void>\n readonly lastActivity: Ref.Ref<number>\n readonly active: Ref.Ref<number>\n readonly scope: Scope.Closeable\n}\n\ntype ReadinessError = NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound\n\nexport const configured = (options: Options = {}) =>\n makeGlobalNode({\n service: Service,\n layer: layer(options),\n deps: [Database.node, WorkspaceDriver.node],\n })\n\nconst layer = (options: Options) =>\n Layer.effect(\n Service,\n Effect.gen(function* () {\n const db = (yield* Database.Service).db\n const registry = yield* WorkspaceDriver.RegistryService\n const lifetime = yield* Scope.Scope\n const connections = new Map<ID, Connection>()\n // Destroy cancels the racing provision body by settling the deferred.\n const attempts = new Map<ID, Deferred.Deferred<Info, ReadinessError>>()\n const locks = KeyedMutex.makeUnsafe<ID>()\n const fork = yield* FiberSet.makeRuntime<never, void, never>()\n const idleThreshold = Duration.toMillis(options.idleThreshold ?? Duration.minutes(20))\n\n const find = (workspaceID: ID) =>\n db\n .select()\n .from(WorkspaceTable)\n .where(eq(WorkspaceTable.id, workspaceID))\n .get()\n .pipe(Effect.orDie)\n\n const load = Effect.fn(\"Workspace.load\")(function* (workspaceID: ID) {\n const row = yield* find(workspaceID)\n if (!row) return yield* new NotFound({ workspaceID })\n return row\n })\n\n const saveBinding = (workspaceID: ID, binding: WorkspaceDriver.Binding) =>\n db.update(WorkspaceTable).set({ binding }).where(eq(WorkspaceTable.id, workspaceID)).run().pipe(Effect.orDie)\n\n const info = (row: typeof WorkspaceTable.$inferSelect, binding: WorkspaceDriver.Binding) =>\n new Info({\n id: row.id,\n provider: row.provider,\n binding,\n createdAt: row.created_at,\n lastUsedAt: row.last_used_at,\n })\n\n const provision = Effect.fn(\"Workspace.provision\")((workspaceID: ID) =>\n Effect.suspend(() => {\n const existing = attempts.get(workspaceID)\n if (existing) return Deferred.await(existing)\n\n const attempt = Deferred.makeUnsafe<Info, ReadinessError>()\n attempts.set(workspaceID, attempt)\n fork(\n locks\n .withLock(workspaceID)(\n Effect.gen(function* () {\n const row = yield* load(workspaceID)\n if (row.binding) return info(row, row.binding)\n const driver = yield* registry.get(row.provider)\n const result = yield* driver.create({ workspaceID })\n yield* saveBinding(workspaceID, result.binding)\n return info(row, result.binding)\n }),\n )\n .pipe(\n Effect.raceFirst(Deferred.await(attempt)),\n Effect.onExit((exit) =>\n Effect.sync(() => {\n if (attempts.get(workspaceID) === attempt) attempts.delete(workspaceID)\n Deferred.doneUnsafe(attempt, exit)\n }),\n ),\n Effect.exit,\n Effect.asVoid,\n ),\n )\n return Deferred.await(attempt)\n }),\n )\n\n const open = Effect.fn(\"Workspace.open\")(function* (workspaceID: ID) {\n const existing = connections.get(workspaceID)\n if (existing) return existing\n\n const row = yield* load(workspaceID)\n // Bindings are persisted before provision resolves and never nulled; a raced\n // destroy deletes the whole row and surfaces as NotFound from load above.\n if (!row.binding) return yield* Effect.die(`workspace ${workspaceID} has no binding after provision`)\n const driver = yield* registry.get(row.provider)\n const persistBinding = (binding: WorkspaceDriver.Binding) => saveBinding(workspaceID, binding)\n const scope = yield* Scope.fork(lifetime)\n const environment = yield* driver\n .connect({ workspaceID, binding: row.binding, saveBinding: persistBinding })\n .pipe(\n Effect.provideService(Scope.Scope, scope),\n Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))),\n )\n const now = yield* Clock.currentTimeMillis\n const connection: Connection = {\n driver,\n environment,\n saveBinding: persistBinding,\n lastActivity: yield* Ref.make(now),\n active: yield* Ref.make(0),\n scope,\n }\n connections.set(workspaceID, connection)\n yield* db\n .update(WorkspaceTable)\n .set({ last_used_at: now })\n .where(eq(WorkspaceTable.id, workspaceID))\n .run()\n .pipe(Effect.orDie)\n return connection\n })\n\n yield* Effect.gen(function* () {\n const now = yield* Clock.currentTimeMillis\n yield* Effect.forEach(\n [...connections.entries()],\n ([workspaceID, expected]) =>\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const connection = connections.get(workspaceID)\n if (connection !== expected || (yield* Ref.get(connection.active)) > 0) return\n const lastActivity = yield* Ref.get(connection.lastActivity)\n if (now - lastActivity < idleThreshold) return\n const row = yield* load(workspaceID)\n if (!row.binding) return\n // Deliberate: a racing spawn blocks, then wakes cleanly. Unlocking mid-suspend could reattach a sandbox being terminated.\n yield* connection.driver.suspendForIdle({\n workspaceID,\n binding: row.binding,\n saveBinding: connection.saveBinding,\n })\n yield* db\n .update(WorkspaceTable)\n .set({ last_used_at: lastActivity })\n .where(eq(WorkspaceTable.id, workspaceID))\n .run()\n .pipe(Effect.orDie)\n connections.delete(workspaceID)\n yield* Scope.close(connection.scope, Exit.void)\n }).pipe(Effect.catchCause((cause) => Effect.logError(\"workspace idle suspension failed\", cause))),\n ),\n { concurrency: \"unbounded\", discard: true },\n )\n }).pipe(Effect.repeat(Schedule.spaced(options.pollInterval ?? Duration.minutes(1))), Effect.forkScoped)\n\n return Service.of({\n create: Effect.fn(\"Workspace.create\")(function* (input) {\n const workspaceID = input.id ?? ID.create()\n const existing = yield* db\n .select({ provider: WorkspaceTable.provider })\n .from(WorkspaceTable)\n .where(eq(WorkspaceTable.id, workspaceID))\n .get()\n .pipe(Effect.orDie)\n if (existing) {\n if (existing.provider === input.provider) return workspaceID\n return yield* new CreateConflict({\n workspaceID,\n provider: input.provider,\n existingProvider: existing.provider,\n })\n }\n yield* registry.get(input.provider)\n const now = yield* Clock.currentTimeMillis\n const inserted = yield* db\n .insert(WorkspaceTable)\n .values({ id: workspaceID, provider: input.provider, binding: null, created_at: now, last_used_at: now })\n .onConflictDoNothing()\n .returning({ id: WorkspaceTable.id })\n .get()\n .pipe(Effect.orDie)\n if (inserted) return workspaceID\n const row = yield* load(workspaceID).pipe(Effect.orDie)\n if (row.provider !== input.provider)\n return yield* new CreateConflict({\n workspaceID,\n provider: input.provider,\n existingProvider: row.provider,\n })\n return workspaceID\n }),\n provision,\n connect: Effect.fn(\"Workspace.connect\")(function* (workspaceID) {\n const spawner = make((command) =>\n Effect.acquireRelease(\n // A live connection implies the binding is already persisted, so skip the provision hop.\n Effect.suspend(() => (connections.has(workspaceID) ? Effect.void : provision(workspaceID))).pipe(\n Effect.andThen(\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const connection = yield* open(workspaceID)\n yield* Ref.set(connection.lastActivity, yield* Clock.currentTimeMillis)\n yield* Ref.update(connection.active, (active) => active + 1)\n return connection\n }),\n ),\n ),\n Effect.mapError((cause) =>\n systemError({\n _tag: \"Unknown\",\n module: \"Workspace\",\n method: \"spawn\",\n description: `Failed to wake workspace ${workspaceID}`,\n cause,\n }),\n ),\n ),\n (connection) =>\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n yield* Ref.update(connection.active, (active) => active - 1)\n yield* Ref.set(connection.lastActivity, yield* Clock.currentTimeMillis)\n }),\n ),\n ).pipe(Effect.flatMap((connection) => connection.environment.spawner.spawn(command))),\n )\n // Overrides are connection-bound; per-spawn routing is required before any driver ships them, so they are deliberately omitted.\n return { spawner }\n }),\n destroy: Effect.fn(\"Workspace.destroy\")(function* (workspaceID) {\n // Settling the shared attempt cancels its racing provision body and fails\n // waiters with NotFound before teardown commits. Accepted tradeoffs: if the\n // locked teardown below fails, those waiters saw NotFound for a workspace\n // that still exists (the next provision retries it), and a provision racing\n // this window may briefly succeed before teardown destroys its fresh binding.\n const attempt = attempts.get(workspaceID)\n if (attempt) {\n attempts.delete(workspaceID)\n Deferred.doneUnsafe(attempt, Exit.fail(new NotFound({ workspaceID })))\n }\n return yield* locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const row = yield* find(workspaceID)\n if (!row) return { destroyed: false }\n const connection = connections.get(workspaceID)\n connections.delete(workspaceID)\n if (connection) yield* Scope.close(connection.scope, Exit.void)\n // Null binding still reaches the driver: an interrupted or crashed\n // provision may have created a resource that was never persisted. A\n // provider missing from the registry cannot block deleting a\n // never-provisioned row.\n yield* registry.get(row.provider).pipe(\n Effect.flatMap((driver) => driver.destroy({ workspaceID, binding: row.binding })),\n Effect.catchTag(\"WorkspaceDriver.ProviderNotFound\", (error) =>\n row.binding ? Effect.fail(error) : Effect.void,\n ),\n )\n yield* db.delete(WorkspaceTable).where(eq(WorkspaceTable.id, workspaceID)).run().pipe(Effect.orDie)\n return { destroyed: true }\n }),\n )\n }),\n })\n }),\n )\n\nexport const node = configured()\n\n// TODO(workspace-plan): add the boot janitor and ~23h safety snapshot rotation in a later PR.\n// TODO(workspace-plan): make cold wake interruptible with a re-pin loop against janitor races.\n// TODO(workspace-plan): consider extracting a keyed shared-attempt helper (join/cancel, drop-on-settle) beside\n// KeyedMutex at end-of-series consolidation; filesystem/search.ts and session/run-coordinator.ts hand-roll the same\n// shape. Audited stdlib alternatives (rc.111): RcMap fails twice (refcount release cancels in-flight work when the\n// last waiter leaves, and one finalizer path cannot express idle-suspend vs destroy); Cache interrupts the shared\n// lookup when its last awaiter is interrupted and cannot fail waiters with NotFound on invalidation.\n", | ||
| "import { Effect, Schema } from \"effect\"\n\nexport const FileType = Schema.Literals([\"file\", \"directory\", \"symlink\", \"other\"])\nexport type FileType = typeof FileType.Type\n\nexport interface FileInfo {\n readonly type: FileType\n readonly size: number\n readonly mtimeMs: number\n}\n\nexport interface DirEntry {\n readonly name: string\n readonly type: FileType\n}\n\nexport class NotFound extends Schema.TaggedError<NotFound>()(\"Environment.NotFound\", {\n path: Schema.String,\n}) {}\n\nexport class WrongKind extends Schema.TaggedError<WrongKind>()(\"Environment.WrongKind\", {\n path: Schema.String,\n actual: FileType,\n}) {}\n\nexport class Failed extends Schema.TaggedError<Failed>()(\"Environment.Failed\", {\n path: Schema.String,\n cause: Schema.Defect(),\n}) {}\n\nexport interface FilesImpl {\n /**\n * Content operations (`read`, `list`) follow final symlinks; metadata operations (`stat` and entry\n * tags returned by `list`) do not. `info` describes the target file whose bytes are returned.\n * The process-backed default caps collected output at 64 MiB; larger whole-file reads fail with\n * `Failed`, so callers must use ranges for larger files.\n */\n readonly read: (\n path: string,\n range?: { readonly offset: number; readonly length: number },\n ) => Effect.Effect<{ readonly info: FileInfo; readonly bytes: Uint8Array }, NotFound | WrongKind | Failed>\n readonly write: (path: string, bytes: Uint8Array) => Effect.Effect<void, Failed>\n /** Describes the path entry itself, so a final symlink is reported as `symlink` rather than followed. */\n readonly stat: (path: string) => Effect.Effect<FileInfo, NotFound | Failed>\n /** Follows a final symlink to the listed directory while preserving each returned entry's own type. */\n readonly list: (path: string) => Effect.Effect<ReadonlyArray<DirEntry>, NotFound | WrongKind | Failed>\n readonly remove: (path: string) => Effect.Effect<void, Failed>\n readonly move: (from: string, to: string) => Effect.Effect<void, NotFound | Failed>\n readonly mkdir: (path: string) => Effect.Effect<void, Failed>\n}\n\nexport interface Files extends FilesImpl {}\n\n/**\n * Derives a follow-stat kind from the lstat-like Files contract. A dangling\n * symlink fails with `NotFound`.\n */\nexport const typeFollowing = (files: Files, path: string) =>\n files.stat(path).pipe(\n Effect.flatMap((info) =>\n info.type === \"symlink\"\n ? files.read(path, { offset: 0, length: 0 }).pipe(\n Effect.map((result) => result.info.type),\n Effect.catchTag(\"Environment.WrongKind\", (error) => Effect.succeed(error.actual)),\n )\n : Effect.succeed(info.type),\n ),\n )\n\nexport * as EnvironmentFiles from \"./files.js\"\n", | ||
| "import { Effect, Stream } from \"effect\"\nimport { ChildProcess } from \"effect/unstable/process\"\nimport type { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport { collectStream } from \"@opencode-ai/util/process\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FileType, type FilesImpl } from \"./files.js\"\n\n/**\n * Files derived from spawning processes: one process per intent, \"$1\" is\n * always the target path. Scripts report classification through an exit-code\n * protocol (44/45/46) so failures never require parsing localized error text;\n * LC_ALL=C pins the one stderr match that remains. Requires GNU coreutils and\n * findutils in the target image — BSD and busybox userlands will not work.\n * Malformed output from these scripts is our own bug and dies as a defect.\n */\n\nconst MAX_DATA_BYTES = 64 * 1024 * 1024\nconst MAX_ERROR_BYTES = 64 * 1024\nconst NOT_FOUND = 44\nconst WRONG_KIND = 45\nconst FAILED = 46\nconst TAB = \"\\t\"\n\nconst loadMetadata = (flags = \"\") => `\nmetadata=$(stat ${flags} -c '%F${TAB}%s${TAB}%Y' -- \"$1\" 2>&1) || {\n case \"$metadata\" in\n *'No such file or directory'*|*'Not a directory'*) exit ${NOT_FOUND} ;;\n *) printf '%s' \"$metadata\" >&2; exit ${FAILED} ;;\n esac\n}\n`\n\nconst statScript = `\n${loadMetadata()}\nprintf '%s\\n' \"$metadata\"\n`\n\nconst readScript = `\n${loadMetadata(\"-L\")}\nkind=\\${metadata%%${TAB}*}\nif [ \"$kind\" != 'regular file' ] && [ \"$kind\" != 'regular empty file' ]; then\n printf '%s' \"$kind\" >&2\n exit ${WRONG_KIND}\nfi\nprintf '%s\\n' \"$metadata\"\nif [ \"$2\" = range ]; then\n dd if=\"$1\" iflag=skip_bytes,count_bytes skip=\"$3\" count=\"$4\" status=none\nelse\n cat -- \"$1\"\nfi\n`\n\nconst listScript = `\n${loadMetadata(\"-L\")}\nkind=\\${metadata%%${TAB}*}\nif [ \"$kind\" != directory ]; then\n printf '%s' \"$kind\" >&2\n exit ${WRONG_KIND}\nfi\nfind -H \"$1\" -mindepth 1 -maxdepth 1 -printf '%y\\\\0%f\\\\0'\n`\n\nconst moveScript = `\n${loadMetadata()}\nmv -- \"$1\" \"$2\"\n`\n\ninterface Result {\n readonly exitCode: number\n readonly stdout: Uint8Array\n readonly stderr: Uint8Array\n}\n\nexport const execDefaults = (spawner: ChildProcessSpawner[\"Service\"]): FilesImpl => {\n const run = (\n path: string,\n script: string,\n args: ReadonlyArray<string> = [],\n stdin?: Uint8Array,\n ): Effect.Effect<Result, Failed> =>\n Effect.scoped(\n Effect.gen(function* () {\n const command = ChildProcess.make(\"sh\", [\"-c\", script, \"sh\", path, ...args], {\n env: { LC_ALL: \"C\" },\n extendEnv: true,\n stdin: stdin === undefined ? undefined : Stream.make(stdin),\n })\n const handle = yield* spawner.spawn(command).pipe(Effect.mapError((cause) => new Failed({ path, cause })))\n const [stdout, stderr, exitCode] = yield* Effect.all(\n [\n collectStream(handle.stdout, MAX_DATA_BYTES),\n collectStream(handle.stderr, MAX_ERROR_BYTES),\n handle.exitCode,\n ],\n { concurrency: \"unbounded\" },\n ).pipe(Effect.mapError((cause) => new Failed({ path, cause })))\n if (stdout.truncated || stderr.truncated) {\n return yield* new Failed({ path, cause: new Error(\"Process output exceeded its collection limit\") })\n }\n return { exitCode, stdout: stdout.buffer, stderr: stderr.buffer }\n }),\n )\n\n const classify = <A>(\n path: string,\n result: Result,\n success: (stdout: Uint8Array) => A,\n ): Effect.Effect<A, NotFound | WrongKind | Failed> => {\n if (result.exitCode === 0) return Effect.sync(() => success(result.stdout))\n if (result.exitCode === NOT_FOUND) return Effect.fail(new NotFound({ path }))\n if (result.exitCode === WRONG_KIND) {\n return Effect.fail(new WrongKind({ path, actual: parseType(new TextDecoder().decode(result.stderr)) }))\n }\n return Effect.fail(processFailure(path, result))\n }\n\n const complete = (path: string, result: Result) =>\n result.exitCode === 0 ? Effect.void : Effect.fail(processFailure(path, result))\n\n return {\n stat: (path) => run(path, statScript).pipe(Effect.flatMap((result) => classifyPlain(path, result, parseInfo))),\n read: (path, range) =>\n run(\n path,\n readScript,\n range === undefined ? [\"whole\"] : [\"range\", String(range.offset), String(range.length)],\n ).pipe(\n Effect.flatMap((result) =>\n classify(path, result, (stdout) => {\n const newline = stdout.indexOf(10)\n if (newline < 0) throw new Error(\"Missing read metadata header\")\n return {\n info: parseInfo(stdout.slice(0, newline)),\n bytes: stdout.slice(newline + 1),\n }\n }),\n ),\n ),\n write: (path, bytes) =>\n run(path, `mkdir -p \"$(dirname \"$1\")\" && cat > \"$1\"`, [], bytes).pipe(\n Effect.flatMap((result) => complete(path, result)),\n ),\n list: (path) => run(path, listScript).pipe(Effect.flatMap((result) => classify(path, result, parseList))),\n remove: (path) => run(path, `rm -rf -- \"$1\"`).pipe(Effect.flatMap((result) => complete(path, result))),\n move: (from, to) =>\n run(from, moveScript, [to]).pipe(Effect.flatMap((result) => classifyPlain(from, result, () => undefined))),\n mkdir: (path) => run(path, `mkdir -p -- \"$1\"`).pipe(Effect.flatMap((result) => complete(path, result))),\n }\n}\n\n/** `classify` for scripts whose protocol never reports WrongKind. */\nconst classifyPlain = <A>(\n path: string,\n result: Result,\n success: (stdout: Uint8Array) => A,\n): Effect.Effect<A, NotFound | Failed> => {\n if (result.exitCode === 0) return Effect.sync(() => success(result.stdout))\n if (result.exitCode === NOT_FOUND) return Effect.fail(new NotFound({ path }))\n return Effect.fail(processFailure(path, result))\n}\n\nconst processFailure = (path: string, result: Result) =>\n new Failed({\n path,\n cause: new Error(new TextDecoder().decode(result.stderr).trim() || `Process exited with code ${result.exitCode}`),\n })\n\nconst parseInfo = (bytes: Uint8Array): FileInfo => {\n const [rawType, rawSize, rawMtime] = new TextDecoder().decode(bytes).trim().split(TAB)\n const size = Number(rawSize)\n const mtimeMs = Number(rawMtime) * 1_000\n if (!rawType || !Number.isFinite(size) || !Number.isFinite(mtimeMs)) throw new Error(\"Invalid stat output\")\n return { type: parseType(rawType), size, mtimeMs }\n}\n\nconst parseType = (value: string): FileType => {\n if (value === \"regular file\" || value === \"regular empty file\" || value === \"f\") return \"file\"\n if (value === \"directory\" || value === \"d\") return \"directory\"\n if (value === \"symbolic link\" || value === \"l\") return \"symlink\"\n return \"other\"\n}\n\nconst parseList = (bytes: Uint8Array) => {\n const fields = new TextDecoder().decode(bytes).split(\"\\0\")\n fields.pop()\n if (fields.length % 2 !== 0) throw new Error(\"Invalid find output\")\n return Array.from({ length: fields.length / 2 }, (_, index) => ({\n name: fields[index * 2 + 1],\n type: parseType(fields[index * 2]),\n }))\n}\n\nexport * as EnvironmentExecDefaults from \"./exec-defaults.js\"\n", | ||
| "import fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { Effect } from \"effect\"\nimport type { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver } from \"./driver.js\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from \"./files.js\"\n\n/**\n * The host filesystem binding. Deliberately raw node:fs rather than effect's\n * FileSystem service or FSUtil: the contract needs lstat semantics (stat\n * reports \"symlink\") and typed directory entries, and effect's node\n * FileSystem provides neither — its stat always follows symlinks and\n * readDirectory returns names only. FSUtil hits the same gap and its\n * readDirectoryEntries already bypasses to raw node readdir internally.\n * Nothing above the environment seam touches node:fs.\n */\nexport const makeLocalDriver = (spawner: ChildProcessSpawner[\"Service\"]): Driver => {\n const overrides: FilesImpl = {\n read: (value, range) =>\n Effect.gen(function* () {\n const info = yield* stat(value, true)\n if (info.type !== \"file\") return yield* new WrongKind({ path: value, actual: info.type })\n if (range === undefined) {\n const bytes = yield* attempt(value, () => fs.readFile(value), true)\n return { info, bytes }\n }\n const bytes = yield* attempt(\n value,\n async () => {\n const handle = await fs.open(value, \"r\")\n try {\n const buffer = new Uint8Array(range.length)\n const result = await handle.read(buffer, 0, range.length, range.offset)\n return buffer.subarray(0, result.bytesRead)\n } finally {\n await handle.close()\n }\n },\n true,\n )\n return { info, bytes }\n }),\n stat: (value) => stat(value, false),\n list: (value) =>\n Effect.gen(function* () {\n const info = yield* stat(value, true)\n if (info.type !== \"directory\") return yield* new WrongKind({ path: value, actual: info.type })\n const entries = yield* attempt(value, () => fs.readdir(value, { withFileTypes: true }), true)\n return entries.map((entry) => ({ name: entry.name, type: fileType(entry) }))\n }),\n write: (value, bytes) =>\n attempt(value, async () => {\n await fs.mkdir(path.dirname(value), { recursive: true })\n await fs.writeFile(value, bytes)\n }),\n remove: (value) => attempt(value, () => fs.rm(value, { recursive: true, force: true })),\n move: (from, to) =>\n Effect.gen(function* () {\n yield* stat(from, false)\n const destination = yield* stat(to, false).pipe(\n Effect.map((info) => (info.type === \"directory\" ? path.join(to, path.basename(from)) : to)),\n Effect.catchIf(\n (error) => error instanceof NotFound,\n () => Effect.succeed(to),\n ),\n )\n yield* attempt(from, () => fs.rename(from, destination))\n }),\n mkdir: (value) => attempt(value, () => fs.mkdir(value, { recursive: true }).then(() => undefined)),\n }\n\n return { spawner, overrides }\n}\n\nconst stat = (value: string, follow: boolean) =>\n attempt(value, () => (follow ? fs.stat(value) : fs.lstat(value)), true).pipe(\n Effect.map((stats): FileInfo => ({ type: fileType(stats), size: stats.size, mtimeMs: stats.mtimeMs })),\n )\n\nconst fileType = (entry: { isFile(): boolean; isDirectory(): boolean; isSymbolicLink(): boolean }): FileType => {\n if (entry.isFile()) return \"file\"\n if (entry.isDirectory()) return \"directory\"\n if (entry.isSymbolicLink()) return \"symlink\"\n return \"other\"\n}\n\nfunction attempt<A>(value: string, run: () => Promise<A>): Effect.Effect<A, Failed>\nfunction attempt<A>(value: string, run: () => Promise<A>, missing: true): Effect.Effect<A, NotFound | Failed>\nfunction attempt<A>(value: string, run: () => Promise<A>, missing = false) {\n return Effect.tryPromise({\n try: run,\n catch: (cause) =>\n missing && isMissing(cause) ? new NotFound({ path: value }) : new Failed({ path: value, cause }),\n })\n}\n\nconst isMissing = (cause: unknown) =>\n cause !== null &&\n typeof cause === \"object\" &&\n \"code\" in cause &&\n (cause.code === \"ENOENT\" || cause.code === \"ENOTDIR\")\n\nexport * as EnvironmentLocal from \"./local.js\"\n", | ||
| "import path from \"node:path\"\nimport { Effect, PlatformError } from \"effect\"\nimport { make } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver } from \"./driver.js\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from \"./files.js\"\n\ntype Node =\n | { readonly type: \"file\"; readonly bytes: Uint8Array; readonly mtimeMs: number }\n | { readonly type: \"directory\"; readonly mtimeMs: number }\n | { readonly type: \"symlink\"; readonly target: string; readonly mtimeMs: number }\n\nexport interface MemoryDriver extends Driver {\n readonly symlink: (target: string, path: string) => Effect.Effect<void, Failed>\n}\n\nexport const makeMemoryDriver = (): MemoryDriver => {\n const nodes = new Map<string, Node>([[\"/\", { type: \"directory\", mtimeMs: Date.now() }]])\n const key = (value: string) => path.posix.resolve(\"/\", value)\n const info = (node: Node): FileInfo => ({\n type: node.type,\n size:\n node.type === \"file\"\n ? node.bytes.length\n : node.type === \"symlink\"\n ? new TextEncoder().encode(node.target).length\n : 0,\n mtimeMs: node.mtimeMs,\n })\n const resolveKey = (value: string, followFinal: boolean, seen = new Set<string>()): string | undefined => {\n const normalized = key(value)\n const parts = normalized.split(\"/\").filter(Boolean)\n const base = \"/\"\n const walk = (current: string, index: number): string | undefined => {\n if (index === parts.length) return current\n const part = parts[index]\n const candidate = path.posix.join(current, part)\n const node = nodes.get(candidate)\n if (node?.type !== \"symlink\" || (!followFinal && index === parts.length - 1)) return walk(candidate, index + 1)\n if (seen.has(candidate)) return undefined\n seen.add(candidate)\n const target = path.posix.resolve(path.posix.dirname(candidate), node.target)\n return resolveKey(path.posix.join(target, ...parts.slice(index + 1)), followFinal, seen)\n }\n return walk(base, 0)\n }\n const lookup = (value: string) => nodes.get(resolveKey(value, false) ?? key(value))\n const requireParent = (value: string) => {\n const parentPath = path.posix.dirname(key(value))\n const parent = nodes.get(resolveKey(parentPath, true) ?? parentPath)\n if (!parent) throw new Error(`Parent directory does not exist: ${path.posix.dirname(value)}`)\n if (parent.type !== \"directory\") throw new Error(`Parent is not a directory: ${path.posix.dirname(value)}`)\n }\n const mkdirSync = (value: string) => {\n const target = resolveKey(value, false) ?? key(value)\n const existing = nodes.get(target)\n if (existing?.type === \"directory\") return\n if (existing) throw new Error(`Path is not a directory: ${value}`)\n const parent = path.posix.dirname(target)\n if (parent !== target) mkdirSync(parent)\n nodes.set(target, { type: \"directory\", mtimeMs: Date.now() })\n }\n const failed = (value: string, cause: unknown) => new Failed({ path: value, cause })\n const overrides: FilesImpl = {\n stat: (value) => {\n const node = lookup(value)\n return node ? Effect.succeed(info(node)) : Effect.fail(new NotFound({ path: value }))\n },\n read: (value, range) => {\n const original = lookup(value)\n if (!original) return Effect.fail(new NotFound({ path: value }))\n if (original.type === \"directory\") return Effect.fail(new WrongKind({ path: value, actual: \"directory\" }))\n const resolved = resolveKey(value, true)\n const node = resolved === undefined ? undefined : nodes.get(resolved)\n if (!node) return Effect.fail(new NotFound({ path: value }))\n if (node.type !== \"file\") return Effect.fail(new WrongKind({ path: value, actual: node.type }))\n const bytes = range === undefined ? node.bytes : node.bytes.subarray(range.offset, range.offset + range.length)\n return Effect.succeed({ info: info(node), bytes: bytes.slice() })\n },\n write: (value, bytes) =>\n Effect.try({\n try: () => {\n mkdirSync(path.posix.dirname(key(value)))\n const existing = lookup(value)\n if (existing?.type === \"directory\") throw new Error(`Path is a directory: ${value}`)\n const target = existing?.type === \"symlink\" ? resolveKey(value, true) : resolveKey(value, false)\n if (!target) throw new Error(`Cannot resolve symlink: ${value}`)\n requireParent(target)\n nodes.set(target, { type: \"file\", bytes: bytes.slice(), mtimeMs: Date.now() })\n },\n catch: (cause) => failed(value, cause),\n }),\n list: (value) => {\n const target = resolveKey(value, true) ?? key(value)\n const node = nodes.get(target)\n if (!node) return Effect.fail(new NotFound({ path: value }))\n if (node.type !== \"directory\") return Effect.fail(new WrongKind({ path: value, actual: node.type }))\n const entries = [...nodes.entries()]\n .filter(([entry]) => entry !== target && path.posix.dirname(entry) === target)\n .map(([entry, child]) => ({ name: path.posix.basename(entry), type: child.type satisfies FileType }))\n .sort((a, b) => a.name.localeCompare(b.name))\n return Effect.succeed(entries)\n },\n remove: (value) =>\n Effect.sync(() => {\n const target = resolveKey(value, false) ?? key(value)\n for (const entry of nodes.keys()) {\n if (entry === target || entry.startsWith(`${target}/`)) nodes.delete(entry)\n }\n }),\n move: (from, to) => {\n const source = resolveKey(from, false) ?? key(from)\n const node = nodes.get(source)\n if (!node) return Effect.fail(new NotFound({ path: from }))\n return Effect.try({\n try: () => {\n const requested = resolveKey(to, false) ?? key(to)\n const destination =\n nodes.get(requested)?.type === \"directory\"\n ? path.posix.join(requested, path.posix.basename(source))\n : requested\n if (node.type === \"directory\" && destination.startsWith(`${source}/`)) {\n throw new Error(`Cannot move a directory into itself: ${from}`)\n }\n const existing = nodes.get(destination)\n if (node.type === \"directory\" && existing && existing.type !== \"directory\") {\n throw new Error(`Cannot overwrite a non-directory with a directory: ${to}`)\n }\n requireParent(destination)\n const moved = [...nodes.entries()].filter(([entry]) => entry === source || entry.startsWith(`${source}/`))\n for (const [entry] of moved) nodes.delete(entry)\n for (const [entry, child] of moved) nodes.set(`${destination}${entry.slice(source.length)}`, child)\n },\n catch: (cause) => failed(from, cause),\n })\n },\n mkdir: (value) => Effect.try({ try: () => mkdirSync(value), catch: (cause) => failed(value, cause) }),\n }\n\n const spawner = make((command) =>\n Effect.suspend(() => {\n const description = command._tag === \"StandardCommand\" ? command.command : \"pipeline\"\n return Effect.fail(\n PlatformError.systemError({\n _tag: \"Unknown\",\n module: \"EnvironmentMemory\",\n method: \"spawn\",\n pathOrDescriptor: description,\n cause: failed(description, new Error(\"The memory driver cannot spawn processes\")),\n }),\n )\n }),\n )\n\n return {\n spawner,\n overrides,\n symlink: (target, value) =>\n Effect.try({\n try: () => {\n requireParent(value)\n nodes.set(resolveKey(value, false) ?? key(value), { type: \"symlink\", target, mtimeMs: Date.now() })\n },\n catch: (cause) => failed(value, cause),\n }),\n }\n}\n\nexport * as EnvironmentMemory from \"./memory.js\"\n", | ||
| "import { CrossSpawnSpawner } from \"@opencode-ai/util/cross-spawn-spawner\"\nimport { makeLocationNode } from \"@opencode-ai/util/effect/app-node\"\nimport { Context, Effect, Layer } from \"effect\"\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Files } from \"./files.js\"\nimport { makeFiles } from \"./index.js\"\nimport { makeLocalDriver } from \"./local.js\"\nimport { Location } from \"../location.js\"\nimport { Workspace } from \"../workspace.js\"\n\nexport interface Interface {\n readonly files: Files\n readonly spawner: ChildProcessSpawner[\"Service\"]\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/Environment\") {}\n\nconst layer = Layer.effect(\n Service,\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner\n const location = yield* Location.Service\n const workspace = yield* Workspace.Service\n const driver = location.workspaceID\n ? yield* workspace.connect(location.workspaceID).pipe(\n // Environment has no error channel; an unknown or destroyed placement is a configuration defect by design.\n Effect.mapError(\n (cause) => new Error(`Failed to bind Environment to workspace ${location.workspaceID}`, { cause }),\n ),\n Effect.orDie,\n )\n : makeLocalDriver(spawner)\n return Service.of({ files: makeFiles(driver), spawner: driver.spawner })\n }),\n)\n\nexport const node = makeLocationNode({\n service: Service,\n layer,\n deps: [CrossSpawnSpawner.node, Location.node, Workspace.node],\n})\n\nexport * as EnvironmentService from \"./environment.js\"\n", | ||
| "export * as Environment from \"./index.js\"\n\nexport { type Driver } from \"./driver.js\"\nexport {\n type DirEntry,\n Failed,\n type FileInfo,\n type Files,\n type FilesImpl,\n type FileType,\n NotFound,\n typeFollowing,\n WrongKind,\n} from \"./files.js\"\nexport { execDefaults } from \"./exec-defaults.js\"\nexport { makeLocalDriver } from \"./local.js\"\nexport { makeMemoryDriver, type MemoryDriver } from \"./memory.js\"\nexport { type Interface, node, Service } from \"./environment.js\"\n\nimport type { Driver } from \"./driver.js\"\nimport { execDefaults } from \"./exec-defaults.js\"\nimport type { Files } from \"./files.js\"\n\nexport const makeFiles = (driver: Driver): Files => ({\n ...execDefaults(driver.spawner),\n ...driver.overrides,\n})\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "0FBBD3114CB5D56464756E2164756E21", | ||
| "names": [] | ||
| } |
+3
-3
@@ -7,7 +7,7 @@ { | ||
| "export * as CpuProfile from \"./cpu-profile\"\n\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Effect, FileSystem, Queue } from \"effect\"\nimport { Session } from \"node:inspector\"\nimport path from \"node:path\"\n\nexport const listen = Effect.gen(function* () {\n const global = yield* Global.Service\n if (process.platform === \"win32\") return\n const signals = yield* Queue.dropping<void>(1)\n yield* Effect.acquireRelease(\n Effect.sync(() => {\n const handler = () => Queue.offerUnsafe(signals, undefined)\n process.on(\"SIGPROF\", handler)\n return handler\n }),\n (handler) => Effect.sync(() => process.off(\"SIGPROF\", handler)),\n )\n yield* Effect.gen(function* () {\n yield* Queue.take(signals)\n const file = path.join(\n global.log,\n `cpu-${process.pid}-${new Date().toISOString().replace(/[:.]/g, \"\")}.cpuprofile`,\n )\n yield* run(file, Effect.sleep(\"10 seconds\")).pipe(\n Effect.catchCause((cause) => Effect.logError(\"Failed to capture CPU profile\", { path: file, cause })),\n )\n yield* Queue.poll(signals)\n }).pipe(Effect.forever, Effect.forkScoped({ startImmediately: true }))\n})\n\nfunction run<A, E, R>(file: string, effect: Effect.Effect<A, E, R>) {\n const target = path.resolve(file)\n return Effect.acquireUseRelease(\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem\n yield* fs.makeDirectory(path.dirname(target), { recursive: true })\n const session = new Session()\n session.connect()\n yield* command(session, \"Profiler.enable\")\n yield* command(session, \"Profiler.start\")\n yield* Effect.logInfo(\"CPU profile started\", { path: target })\n return session\n }),\n () => effect,\n (session) =>\n Effect.tryPromise(\n () =>\n new Promise<void>((resolve, reject) => {\n session.post(\"Profiler.stop\", (error, result) => {\n session.disconnect()\n if (error) return reject(error)\n Bun.write(target, JSON.stringify(result.profile)).then(() => resolve(), reject)\n })\n }),\n ).pipe(\n Effect.andThen(Effect.logInfo(\"CPU profile written\", { path: target })),\n Effect.catchCause((cause) => Effect.logError(\"Failed to write CPU profile\", { path: target, cause })),\n ),\n )\n}\n\nfunction command(session: Session, method: \"Profiler.enable\" | \"Profiler.start\") {\n return Effect.tryPromise(\n () =>\n new Promise<void>((resolve, reject) => {\n session.post(method, (error) => (error ? reject(error) : resolve()))\n }),\n )\n}\n", | ||
| "#!/usr/bin/env bun\n\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\"\nimport { Effect } from \"effect\"\nimport { Commands } from \"./commands/commands\"\nimport { Runtime } from \"./framework/runtime\"\nimport { Observability } from \"@opencode-ai/util/observability\"\nimport { Updater } from \"./services/updater\"\nimport { OPENCODE_CHANNEL, OPENCODE_LOCAL, OPENCODE_VERSION } from \"./version\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { Config } from \"./config\"\nimport { Npm } from \"@opencode-ai/util/npm\"\nimport { Heap } from \"./heap\"\nimport { CpuProfile } from \"./cpu-profile\"\n\nconst Handlers = Runtime.handlers(Commands, {\n $: () => import(\"./commands/handlers/default\"),\n acp: () => import(\"./commands/handlers/acp\"),\n api: () => import(\"./commands/handlers/api\"),\n auth: {\n list: () => import(\"./commands/handlers/auth/list\"),\n login: () => import(\"./commands/handlers/auth/login\"),\n logout: () => import(\"./commands/handlers/auth/logout\"),\n },\n debug: {\n agents: () => import(\"./commands/handlers/debug/agents\"),\n config: () => import(\"./commands/handlers/debug/config\"),\n },\n console: {\n login: () => import(\"./commands/handlers/console/login\"),\n },\n mcp: {\n list: () => import(\"./commands/handlers/mcp/list\"),\n add: () => import(\"./commands/handlers/mcp/add\"),\n auth: () => import(\"./commands/handlers/mcp/auth\"),\n logout: () => import(\"./commands/handlers/mcp/logout\"),\n },\n plugin: {\n list: () => import(\"./commands/handlers/plugin/list\"),\n add: () => import(\"./commands/handlers/plugin/add\"),\n remove: () => import(\"./commands/handlers/plugin/remove\"),\n },\n models: () => import(\"./commands/handlers/models\"),\n stats: () => import(\"./commands/handlers/stats\"),\n export: () => import(\"./commands/handlers/export\"),\n import: () => import(\"./commands/handlers/import\"),\n mini: () => import(\"./commands/handlers/mini\"),\n run: () => import(\"./commands/handlers/run\"),\n pair: () => import(\"./commands/handlers/pair\"),\n service: {\n start: () => import(\"./commands/handlers/service/start\"),\n restart: () => import(\"./commands/handlers/service/restart\"),\n status: () => import(\"./commands/handlers/service/status\"),\n stop: () => import(\"./commands/handlers/service/stop\"),\n get: () => import(\"./commands/handlers/service/get\"),\n set: () => import(\"./commands/handlers/service/set\"),\n unset: () => import(\"./commands/handlers/service/unset\"),\n },\n serve: () => import(\"./commands/handlers/serve\"),\n})\n\nEffect.gen(function* () {\n yield* Heap.listen\n yield* CpuProfile.listen\n const runFork = Effect.runForkWith(yield* Effect.context<never>())\n const uncaughtException = (cause: Error, origin: \"uncaughtException\" | \"unhandledRejection\") => {\n runFork(Effect.logError(\"uncaught exception\", { cause, origin }))\n }\n const unhandledRejection = (cause: unknown) => {\n runFork(Effect.logError(\"unhandled rejection\", { cause }))\n }\n process.on(\"uncaughtException\", uncaughtException)\n process.on(\"unhandledRejection\", unhandledRejection)\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n process.off(\"uncaughtException\", uncaughtException)\n process.off(\"unhandledRejection\", unhandledRejection)\n }),\n )\n yield* Effect.logInfo(\"cli starting\", {\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n local: OPENCODE_LOCAL,\n args: process.argv.slice(2),\n })\n return yield* Runtime.run(Commands, Handlers, { version: OPENCODE_VERSION })\n}).pipe(\n Effect.catchCause((cause) =>\n Effect.logError(\"cli process failed\", {\n cause,\n args: process.argv.slice(2),\n }).pipe(Effect.andThen(Effect.failCause(cause))),\n ),\n Effect.annotateLogs({ role: \"cli\" }),\n Effect.provide(Config.layer),\n Effect.provide(Updater.layer),\n Effect.provide(\n LayerNode.compile(LayerNode.group([Global.node, AppProcess.node, Npm.node]), [\n [\n Global.node,\n Global.layerWith(process.env.OPENCODE_CONFIG_DIR ? { config: process.env.OPENCODE_CONFIG_DIR } : {}),\n ],\n ]),\n ),\n Effect.provide(\n Observability.layer({\n endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,\n headers: process.env.OTEL_EXPORTER_OTLP_HEADERS,\n client: process.env.OPENCODE_CLIENT ?? \"cli\",\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n }),\n ),\n Effect.provide(NodeServices.layer),\n Effect.scoped,\n Effect.tap(() => Effect.sync(() => process.exit(process.exitCode ?? 0))),\n NodeRuntime.runMain,\n)\n" | ||
| "#!/usr/bin/env bun\n\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\"\nimport { Effect } from \"effect\"\nimport { Commands } from \"./commands/commands\"\nimport { Runtime } from \"./framework/runtime\"\nimport { Observability } from \"@opencode-ai/util/observability\"\nimport { Updater } from \"./services/updater\"\nimport { OPENCODE_CHANNEL, OPENCODE_LOCAL, OPENCODE_VERSION } from \"./version\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { Config } from \"./config\"\nimport { Npm } from \"@opencode-ai/util/npm\"\nimport { Heap } from \"./heap\"\nimport { CpuProfile } from \"./cpu-profile\"\n\nconst Handlers = Runtime.handlers(Commands, {\n $: () => import(\"./commands/handlers/default\"),\n acp: () => import(\"./commands/handlers/acp\"),\n api: () => import(\"./commands/handlers/api\"),\n auth: {\n list: () => import(\"./commands/handlers/auth/list\"),\n login: () => import(\"./commands/handlers/auth/login\"),\n logout: () => import(\"./commands/handlers/auth/logout\"),\n },\n debug: {\n agents: () => import(\"./commands/handlers/debug/agents\"),\n config: () => import(\"./commands/handlers/debug/config\"),\n paths: () => import(\"./commands/handlers/debug/paths\"),\n },\n console: {\n login: () => import(\"./commands/handlers/console/login\"),\n },\n mcp: {\n list: () => import(\"./commands/handlers/mcp/list\"),\n add: () => import(\"./commands/handlers/mcp/add\"),\n auth: () => import(\"./commands/handlers/mcp/auth\"),\n logout: () => import(\"./commands/handlers/mcp/logout\"),\n },\n plugin: {\n list: () => import(\"./commands/handlers/plugin/list\"),\n add: () => import(\"./commands/handlers/plugin/add\"),\n remove: () => import(\"./commands/handlers/plugin/remove\"),\n },\n models: () => import(\"./commands/handlers/models\"),\n stats: () => import(\"./commands/handlers/stats\"),\n export: () => import(\"./commands/handlers/export\"),\n import: () => import(\"./commands/handlers/import\"),\n mini: () => import(\"./commands/handlers/mini\"),\n run: () => import(\"./commands/handlers/run\"),\n pair: () => import(\"./commands/handlers/pair\"),\n service: {\n start: () => import(\"./commands/handlers/service/start\"),\n restart: () => import(\"./commands/handlers/service/restart\"),\n status: () => import(\"./commands/handlers/service/status\"),\n stop: () => import(\"./commands/handlers/service/stop\"),\n get: () => import(\"./commands/handlers/service/get\"),\n set: () => import(\"./commands/handlers/service/set\"),\n unset: () => import(\"./commands/handlers/service/unset\"),\n },\n serve: () => import(\"./commands/handlers/serve\"),\n})\n\nEffect.gen(function* () {\n yield* Heap.listen\n yield* CpuProfile.listen\n const runFork = Effect.runForkWith(yield* Effect.context<never>())\n const uncaughtException = (cause: Error, origin: \"uncaughtException\" | \"unhandledRejection\") => {\n runFork(Effect.logError(\"uncaught exception\", { cause, origin }))\n }\n const unhandledRejection = (cause: unknown) => {\n runFork(Effect.logError(\"unhandled rejection\", { cause }))\n }\n process.on(\"uncaughtException\", uncaughtException)\n process.on(\"unhandledRejection\", unhandledRejection)\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n process.off(\"uncaughtException\", uncaughtException)\n process.off(\"unhandledRejection\", unhandledRejection)\n }),\n )\n yield* Effect.logInfo(\"cli starting\", {\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n local: OPENCODE_LOCAL,\n args: process.argv.slice(2),\n })\n return yield* Runtime.run(Commands, Handlers, { version: OPENCODE_VERSION })\n}).pipe(\n Effect.catchCause((cause) =>\n Effect.logError(\"cli process failed\", {\n cause,\n args: process.argv.slice(2),\n }).pipe(Effect.andThen(Effect.failCause(cause))),\n ),\n Effect.annotateLogs({ role: \"cli\" }),\n Effect.provide(Config.layer),\n Effect.provide(Updater.layer),\n Effect.provide(\n LayerNode.compile(LayerNode.group([Global.node, AppProcess.node, Npm.node]), [\n [\n Global.node,\n Global.layerWith(process.env.OPENCODE_CONFIG_DIR ? { config: process.env.OPENCODE_CONFIG_DIR } : {}),\n ],\n ]),\n ),\n Effect.provide(\n Observability.layer({\n endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,\n headers: process.env.OTEL_EXPORTER_OTLP_HEADERS,\n client: process.env.OPENCODE_CLIENT ?? \"cli\",\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n }),\n ),\n Effect.provide(NodeServices.layer),\n Effect.scoped,\n Effect.tap(() => Effect.sync(() => process.exit(process.exitCode ?? 0))),\n NodeRuntime.runMain,\n)\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "83DA69D8FB5EF4EC64756E2164756E21", | ||
| "mappings": "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", | ||
| "debugId": "99AFB95AD83F609964756E2164756E21", | ||
| "names": [] | ||
| } |
+1
-1
| { | ||
| "name": "@opencode-ai/cli-linux-x64", | ||
| "version": "0.0.0-dev-18227", | ||
| "version": "0.0.0-dev-18229", | ||
| "license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "7CFFCC39442263AB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "F0AE3AEC92BE0B7264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../util/src/process.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Duration, Effect, Fiber, Layer, Schema, Stream } from \"effect\"\nimport type { PlatformError } from \"effect/PlatformError\"\nimport { ChildProcess } from \"effect/unstable/process\"\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport { CrossSpawnSpawner } from \"./cross-spawn-spawner.js\"\nimport { makeGlobalNode } from \"./effect/app-node.js\"\n\nexport class AppProcessError extends Schema.TaggedError<AppProcessError>()(\"AppProcessError\", {\n command: Schema.String,\n exitCode: Schema.optional(Schema.Number),\n stderr: Schema.optional(Schema.String),\n cause: Schema.optional(Schema.Defect()),\n}) {\n override get message() {\n const detail =\n this.stderr?.trim() || (this.cause instanceof Error ? this.cause.message : this.cause && String(this.cause))\n const status = this.exitCode === undefined ? \"\" : ` (exit ${this.exitCode})`\n return `Command failed${status}: ${this.command}${detail ? `: ${detail}` : \"\"}`\n }\n}\n\nexport interface RunOptions {\n readonly combineOutput?: boolean\n readonly maxOutputBytes?: number\n readonly maxErrorBytes?: number\n readonly signal?: AbortSignal\n readonly timeout?: Duration.Input\n readonly stdin?: string | Uint8Array | Stream.Stream<Uint8Array, PlatformError>\n}\n\nexport interface RunStreamOptions {\n readonly signal?: AbortSignal\n readonly includeStderr?: boolean\n readonly okExitCodes?: ReadonlyArray<number>\n readonly maxErrorBytes?: number\n}\n\nexport interface RunResult {\n readonly command: string\n readonly exitCode: number\n readonly output?: Buffer\n readonly stdout: Buffer\n readonly stderr: Buffer\n readonly outputTruncated?: boolean\n readonly stdoutTruncated: boolean\n readonly stderrTruncated: boolean\n}\n\nexport type Interface = ChildProcessSpawner[\"Service\"] & {\n readonly run: (command: ChildProcess.Command, options?: RunOptions) => Effect.Effect<RunResult, AppProcessError>\n readonly runStream: (\n command: ChildProcess.Command,\n options?: RunStreamOptions,\n ) => Stream.Stream<string, AppProcessError>\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/AppProcess\") {}\n\nexport const requireSuccess = (result: RunResult): Effect.Effect<RunResult, AppProcessError> =>\n result.exitCode === 0\n ? Effect.succeed(result)\n : Effect.fail(\n new AppProcessError({\n command: result.command,\n exitCode: result.exitCode,\n stderr: result.stderr.toString(\"utf8\"),\n }),\n )\n\nexport const requireExitIn =\n (codes: ReadonlyArray<number>) =>\n (result: RunResult): Effect.Effect<RunResult, AppProcessError> =>\n codes.includes(result.exitCode)\n ? Effect.succeed(result)\n : Effect.fail(\n new AppProcessError({\n command: result.command,\n exitCode: result.exitCode,\n stderr: result.stderr.toString(\"utf8\"),\n }),\n )\n\nconst describeCommand = (command: ChildProcess.Command): string => {\n if (command._tag === \"StandardCommand\") {\n return command.args.length ? `${command.command} ${command.args.join(\" \")}` : command.command\n }\n return `${describeCommand(command.left)} | ${describeCommand(command.right)}`\n}\n\nconst wrapError = (description: string, cause: unknown): AppProcessError =>\n cause instanceof AppProcessError ? cause : new AppProcessError({ command: description, cause })\n\nexport const abortError = (signal: AbortSignal): Error => {\n const reason = signal.reason\n if (reason instanceof Error) return reason\n const err = new Error(\"Aborted\")\n err.name = \"AbortError\"\n return err\n}\n\nexport const waitForAbort = (signal: AbortSignal) =>\n Effect.callback<never, Error>((resume) => {\n if (signal.aborted) {\n resume(Effect.fail(abortError(signal)))\n return\n }\n const onabort = () => resume(Effect.fail(abortError(signal)))\n signal.addEventListener(\"abort\", onabort, { once: true })\n return Effect.sync(() => signal.removeEventListener(\"abort\", onabort))\n })\n\nconst normalizeStdin = (\n input: string | Uint8Array | Stream.Stream<Uint8Array, PlatformError>,\n): Stream.Stream<Uint8Array, PlatformError> =>\n typeof input === \"string\"\n ? Stream.make(new TextEncoder().encode(input))\n : input instanceof Uint8Array\n ? Stream.make(input)\n : input\n\nexport const collectStream = (stream: Stream.Stream<Uint8Array, PlatformError>, maxOutputBytes: number | undefined) =>\n Stream.runFold(\n stream,\n () => ({ chunks: [] as Uint8Array[], bytes: 0, truncated: false }),\n (acc, chunk) => {\n if (maxOutputBytes === undefined) {\n acc.chunks.push(chunk)\n acc.bytes += chunk.length\n return acc\n }\n const remaining = maxOutputBytes - acc.bytes\n if (remaining > 0) acc.chunks.push(remaining >= chunk.length ? chunk : chunk.slice(0, remaining))\n acc.bytes += chunk.length\n acc.truncated = acc.truncated || acc.bytes > maxOutputBytes\n return acc\n },\n ).pipe(Effect.map((x) => ({ buffer: Buffer.concat(x.chunks), truncated: x.truncated })))\n\nconst layer = Layer.effect(\n Service,\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner\n\n const runCommand = (command: ChildProcess.Command, options?: RunOptions) => {\n const description = describeCommand(command)\n const collect = Effect.scoped(\n Effect.gen(function* () {\n const handle = yield* spawner.spawn(command)\n if (options?.combineOutput) {\n const [output, exitCode] = yield* Effect.all(\n [collectStream(handle.all, options.maxOutputBytes), handle.exitCode],\n { concurrency: \"unbounded\" },\n )\n return {\n command: description,\n exitCode,\n output: output.buffer,\n stdout: Buffer.alloc(0),\n stderr: Buffer.alloc(0),\n outputTruncated: output.truncated,\n stdoutTruncated: false,\n stderrTruncated: false,\n } satisfies RunResult\n }\n const [stdout, stderr, exitCode] = yield* Effect.all(\n [\n collectStream(handle.stdout, options?.maxOutputBytes),\n collectStream(handle.stderr, options?.maxErrorBytes),\n handle.exitCode,\n ],\n { concurrency: \"unbounded\" },\n )\n return {\n command: description,\n exitCode,\n stdout: stdout.buffer,\n stderr: stderr.buffer,\n stdoutTruncated: stdout.truncated,\n stderrTruncated: stderr.truncated,\n } satisfies RunResult\n }),\n )\n const timed = options?.timeout\n ? Effect.timeoutOrElse(collect, {\n duration: options.timeout,\n orElse: () => Effect.fail(new AppProcessError({ command: description, cause: new Error(\"Timed out\") })),\n })\n : collect\n const aborted = options?.signal\n ? timed.pipe(\n Effect.raceFirst(\n waitForAbort(options.signal).pipe(Effect.mapError((cause) => wrapError(description, cause))),\n ),\n )\n : timed\n return aborted.pipe(Effect.catch((cause) => Effect.fail(wrapError(description, cause))))\n }\n\n const run = Effect.fn(\"AppProcess.run\")(function* (command: ChildProcess.Command, options?: RunOptions) {\n if (options?.stdin === undefined) return yield* runCommand(command, options)\n if (command._tag !== \"StandardCommand\") {\n return yield* new AppProcessError({\n command: describeCommand(command),\n cause: new Error(\"stdin option only supports StandardCommand; received PipedCommand\"),\n })\n }\n const next = ChildProcess.make(command.command, command.args, {\n ...command.options,\n stdin: normalizeStdin(options.stdin),\n })\n return yield* runCommand(next, options)\n })\n\n const runStream = (\n command: ChildProcess.Command,\n options?: RunStreamOptions,\n ): Stream.Stream<string, AppProcessError> => {\n const description = describeCommand(command)\n const okExitCodes = options?.okExitCodes\n const built: Stream.Stream<string, AppProcessError | PlatformError> = Stream.unwrap(\n Effect.gen(function* () {\n const handle = yield* spawner.spawn(command)\n const stderrFiber = yield* Effect.forkScoped(\n collectStream(handle.stderr, options?.maxErrorBytes).pipe(Effect.map((x) => x.buffer.toString(\"utf8\"))),\n )\n const source = options?.includeStderr === true ? handle.all : handle.stdout\n const lines = source.pipe(\n Stream.decodeText,\n Stream.splitLines,\n Stream.filter((line) => line.length > 0),\n )\n const tail = Stream.unwrap(\n Effect.gen(function* () {\n const code = yield* handle.exitCode\n if (okExitCodes && okExitCodes.length > 0 && !okExitCodes.includes(code)) {\n const stderr = yield* Fiber.join(stderrFiber)\n return Stream.fail(new AppProcessError({ command: description, exitCode: code, stderr }))\n }\n return Stream.empty\n }),\n )\n return Stream.concat(lines, tail) as Stream.Stream<string, AppProcessError | PlatformError>\n }),\n )\n const mapped = built.pipe(\n Stream.catch((cause): Stream.Stream<string, AppProcessError> => Stream.fail(wrapError(description, cause))),\n )\n if (!options?.signal) return mapped\n const signal = options.signal\n return mapped.pipe(\n Stream.interruptWhen(waitForAbort(signal).pipe(Effect.mapError((cause) => wrapError(description, cause)))),\n )\n }\n\n return Service.of({ ...spawner, run, runStream })\n }),\n)\n\nexport const node = makeGlobalNode({ service: Service, layer: layer, deps: [CrossSpawnSpawner.node] })\n\nexport * as AppProcess from \"./process.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "09554A6B7DBCE53564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/server-process.ts", "src/services/service-registration.ts", "src/services/web-ui.ts", "src/app-assets.ts", "src/commands/handlers/serve.ts"], | ||
| "sourcesContent": [ | ||
| "export * as ServerProcess from \"./server-process\"\n\nimport { NodeServices } from \"@effect/platform-node\"\nimport { Service, type DiscoverOptions } from \"@opencode-ai/client/effect/service\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { OPENCODE_CHANNEL, OPENCODE_VERSION } from \"./version\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { randomBytes, randomUUID } from \"node:crypto\"\nimport { Effect, Option, Redacted, Schedule } from \"effect\"\nimport { HttpServer } from \"effect/unstable/http\"\nimport { Env } from \"./env\"\nimport { ServiceConfig } from \"./services/service-config\"\nimport { ServiceRegistration } from \"./services/service-registration\"\nimport { Updater } from \"./services/updater\"\nimport { WebUi } from \"./services/web-ui\"\n\nexport type Mode = \"default\" | \"service\" | \"stdio\"\n\nexport type Options = {\n readonly mode: Mode\n readonly hostname?: string\n readonly port?: number\n}\n\n// The process effect lives until server shutdown; tracing it would parent every request to one process-lifetime trace.\nexport const run = Effect.fnUntraced(function* (options: Options) {\n return yield* processEffect(options).pipe(\n Effect.provide(Updater.layer),\n Effect.provide(\n LayerNode.compile(LayerNode.group([Global.node, AppProcess.node]), [\n [\n Global.node,\n Global.layerWith(process.env.OPENCODE_CONFIG_DIR ? { config: process.env.OPENCODE_CONFIG_DIR } : {}),\n ],\n ]),\n ),\n Effect.provide(NodeServices.layer),\n )\n})\n\nconst processEffect = Effect.fnUntraced(function* (options: Options) {\n const global = yield* Global.Service\n if (options.mode === \"service\") yield* Effect.sync(() => process.chdir(global.home))\n return yield* Effect.scoped(\n Effect.gen(function* () {\n const foreground = options.mode === \"default\"\n const serviceOptions = options.mode === \"service\" ? yield* ServiceConfig.options() : undefined\n const config = options.mode === \"service\" ? yield* ServiceConfig.read() : {}\n const hostname = options.hostname ?? config.hostname ?? \"127.0.0.1\"\n const port = options.port ?? config.port ?? (options.mode === \"service\" ? ServiceConfig.defaultPort() : undefined)\n const incumbent =\n serviceOptions !== undefined && port !== undefined\n ? yield* Service.incumbent({ ...serviceOptions, url: serviceURL(hostname, port) })\n : undefined\n if (incumbent !== undefined) return\n const { start } = yield* Effect.promise(() => import(\"@opencode-ai/server/process\"))\n const environmentPassword = yield* Env.password\n // Keep the lease credential out of the environment inherited by tools.\n if (options.mode === \"stdio\") {\n delete process.env.OPENCODE_PASSWORD\n delete process.env.OPENCODE_SERVER_PASSWORD\n }\n const password =\n options.mode === \"service\"\n ? config.password || randomBytes(32).toString(\"base64url\")\n : environmentPassword\n ? Redacted.value(environmentPassword)\n : randomBytes(32).toString(\"base64url\")\n if (!password) return yield* Effect.fail(new Error(\"Missing server password\"))\n const instanceID = randomUUID()\n const transform = yield* WebUi.handler()\n const server = yield* start(\n {\n app: {\n name: process.env.OPENCODE_CLIENT ?? \"cli\",\n version: OPENCODE_VERSION,\n channel: OPENCODE_CHANNEL,\n },\n hostname,\n port,\n password,\n simulation: truthy(process.env.OPENCODE_SIMULATE),\n database: {\n path:\n process.env.OPENCODE_DB ??\n ([\"latest\", \"dev\", \"beta\", \"next\", \"prod\"].includes(OPENCODE_CHANNEL) ||\n process.env.OPENCODE_DISABLE_CHANNEL_DB === \"1\" ||\n process.env.OPENCODE_DISABLE_CHANNEL_DB === \"true\"\n ? \"opencode.db\"\n : `opencode-${OPENCODE_CHANNEL.replace(/[^a-zA-Z0-9._-]/g, \"-\")}.db`),\n },\n models: {\n url: process.env.OPENCODE_MODELS_URL,\n file: process.env.OPENCODE_MODELS_PATH,\n fetch: !truthy(process.env.OPENCODE_DISABLE_MODELS_FETCH),\n },\n config: {\n directory: process.env.OPENCODE_CONFIG_DIR,\n project: !truthy(\n process.env.OPENCODE_CONFIG_PROJECT_DISABLE ?? process.env.OPENCODE_DISABLE_PROJECT_CONFIG,\n ),\n file: process.env.OPENCODE_CONFIG,\n content: process.env.OPENCODE_CONFIG_CONTENT,\n },\n windows: {\n gitbash: process.env.OPENCODE_GIT_BASH_PATH,\n },\n fs: {\n filewatcher: !truthy(process.env.OPENCODE_FILEWATCHER_DISABLE ?? process.env.OPENCODE_DISABLE_FILEWATCHER),\n fff:\n process.env.OPENCODE_DISABLE_FFF === undefined\n ? process.platform !== \"win32\"\n : !truthy(process.env.OPENCODE_DISABLE_FFF),\n },\n },\n serviceOptions === undefined\n ? undefined\n : {\n onListen: (address, shutdown) =>\n Effect.gen(function* () {\n if (!config.password) yield* ServiceConfig.password(password)\n return yield* ServiceRegistration.register({\n address,\n password,\n id: instanceID,\n file: serviceOptions.file,\n shutdown,\n })\n }),\n },\n transform,\n ).pipe(\n Effect.catch((error) => {\n if (serviceOptions === undefined || port === undefined || !addressInUse(error)) return Effect.fail(error)\n return recognizeIncumbent(serviceOptions, hostname, port).pipe(\n Effect.flatMap((found) =>\n found\n ? Effect.void\n : Effect.fail(\n new Error(\n `Managed service port ${port} on ${hostname} is already in use by another process. ` +\n \"Configure another port with `opencode service set port <port>` and start the service again.\",\n { cause: error },\n ),\n ),\n ),\n )\n }),\n )\n if (server === undefined) return\n const url = HttpServer.formatAddress(server.address)\n console.log(options.mode === \"stdio\" ? JSON.stringify({ url }) : `server listening on ${url}`)\n if (foreground && !environmentPassword) console.log(`server password ${password}`)\n const updater = yield* Updater.Service\n yield* updater.check().pipe(Effect.schedule(Schedule.spaced(\"10 minutes\")), Effect.forkScoped)\n return yield* options.mode === \"service\"\n ? server.shutdown\n : options.mode === \"stdio\"\n ? waitForStdinClose()\n : Effect.never\n }).pipe(Effect.annotateLogs({ role: \"server\" })),\n )\n})\n\nconst recognizeIncumbent = Effect.fnUntraced(function* (options: DiscoverOptions, hostname: string, port: number) {\n const found = yield* Service.incumbent({ ...options, url: serviceURL(hostname, port) }).pipe(\n Effect.filterOrFail((value) => value !== undefined),\n Effect.retry(Schedule.spaced(\"100 millis\")),\n Effect.timeoutOption(\"15 seconds\"),\n )\n return Option.isSome(found)\n})\n\nfunction serviceURL(hostname: string, port: number) {\n return `http://${hostname.includes(\":\") ? `[${hostname}]` : hostname}:${port}`\n}\n\nfunction truthy(value?: string) {\n return value === \"1\" || value?.toLowerCase() === \"true\"\n}\n\nfunction addressInUse(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null) return false\n if (\"code\" in error && error.code === \"EADDRINUSE\") return true\n return \"cause\" in error && addressInUse(error.cause)\n}\n\nfunction waitForStdinClose() {\n return Effect.callback<void>((resume) => {\n const close = () => resume(Effect.void)\n process.stdin.once(\"end\", close)\n process.stdin.once(\"close\", close)\n process.stdin.resume()\n if (process.stdin.readableEnded || process.stdin.destroyed) close()\n return Effect.sync(() => {\n process.stdin.off(\"end\", close)\n process.stdin.off(\"close\", close)\n process.stdin.pause()\n })\n })\n}\n", | ||
| "export * as ServiceRegistration from \"./service-registration\"\n\nimport { Service, type Info } from \"@opencode-ai/client/effect/service\"\nimport path from \"node:path\"\nimport { Effect, FileSystem, Schedule, Schema } from \"effect\"\nimport { HttpServer } from \"effect/unstable/http\"\nimport { OPENCODE_VERSION } from \"../version\"\n\nconst infoJson = Schema.fromJsonString(Service.Info)\nconst encodeInfo = Schema.encodeEffect(infoJson)\nconst decodeInfo = Schema.decodeUnknownEffect(infoJson)\n\nexport const register = Effect.fnUntraced(function* (options: {\n readonly address: HttpServer.Address\n readonly password: string\n readonly id: string\n readonly file: string\n readonly shutdown: Effect.Effect<void>\n}) {\n const fs = yield* FileSystem.FileSystem\n const temp = options.file + \".\" + options.id + \".tmp\"\n yield* fs.makeDirectory(path.dirname(options.file), { recursive: true })\n const info = {\n id: options.id,\n version: OPENCODE_VERSION,\n url: HttpServer.formatAddress(options.address),\n pid: process.pid,\n password: options.password,\n }\n const encoded = yield* encodeInfo(info)\n const current = fs.readFileString(options.file).pipe(Effect.flatMap(decodeInfo))\n const owns = (found: Info) =>\n found.id === info.id &&\n found.version === info.version &&\n found.url === info.url &&\n found.pid === info.pid &&\n found.password === info.password\n yield* fs.writeFileString(temp, encoded, { mode: 0o600 }).pipe(Effect.andThen(fs.rename(temp, options.file)))\n yield* current.pipe(\n Effect.catchCause((cause) =>\n Effect.logWarning(\"managed service registration check failed; shutting down\", {\n cause,\n serviceID: options.id,\n servicePID: process.pid,\n registration: options.file,\n }).pipe(Effect.andThen(Effect.failCause(cause))),\n ),\n Effect.tap((found) =>\n owns(found)\n ? Effect.void\n : Effect.logWarning(\"managed service registration replaced; shutting down\", {\n serviceID: options.id,\n servicePID: process.pid,\n registration: options.file,\n observedServiceID: found.id,\n observedServicePID: found.pid,\n observedVersion: found.version,\n observedURL: found.url,\n }),\n ),\n Effect.filterOrFail(owns),\n Effect.repeat(Schedule.spaced(\"5 seconds\")),\n Effect.ignore,\n Effect.andThen(options.shutdown),\n Effect.forkScoped,\n )\n return current.pipe(\n Effect.flatMap((found) => (owns(found) ? fs.remove(options.file) : Effect.void)),\n Effect.ignore,\n )\n})\n", | ||
| "import { FSUtil } from \"@opencode-ai/util/fs-util\"\nimport { Effect, FileSystem } from \"effect\"\nimport { HttpServerError, HttpServerRequest, HttpServerResponse } from \"effect/unstable/http\"\nimport { createHash } from \"node:crypto\"\nimport { load, type AssetMap } from \"../app-assets\"\n\nexport const handler = Effect.fn(\"cli.web-ui.handler\")(function* (options?: { readonly assets?: AssetMap }) {\n const fileSystem = yield* FileSystem.FileSystem\n const assets = options?.assets\n ? Effect.succeed(options.assets)\n : yield* Effect.cached(load().pipe(Effect.provideService(FileSystem.FileSystem, fileSystem)))\n return <E, R>(api: Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>) =>\n api.pipe(\n Effect.catchIf(isRouteNotFound, () =>\n HttpServerRequest.HttpServerRequest.pipe(\n Effect.flatMap((request) => {\n const url = new URL(request.url, \"http://localhost\")\n if (url.pathname === \"/api\" || url.pathname.startsWith(\"/api/\"))\n return Effect.succeed(HttpServerResponse.empty({ status: 404 }))\n return assets.pipe(Effect.flatMap((files) => serveUI(request, url, files)))\n }),\n ),\n ),\n )\n})\n\nfunction serveUI(request: HttpServerRequest.HttpServerRequest, url: URL, assets: AssetMap) {\n const key = url.pathname.replace(/^\\//, \"\")\n const name = assets[key] !== undefined ? key : \"index.html\"\n const file = assets[name]\n if (!file) return Effect.succeed(HttpServerResponse.empty({ status: 404 }))\n if (request.method !== \"GET\" && request.method !== \"HEAD\")\n return Effect.succeed(HttpServerResponse.empty({ status: 405 }))\n const html = name === \"index.html\"\n const revalidate = html || name === \"sw.js\" || name === \"registerSW.js\"\n const headers = {\n \"content-type\": FSUtil.mimeType(name),\n \"cache-control\": revalidate ? \"no-cache\" : \"public, max-age=31536000, immutable\",\n \"content-security-policy\": html\n ? cspForHtml(typeof file === \"string\" ? file : Buffer.from(file).toString())\n : csp(),\n \"x-content-type-options\": \"nosniff\",\n }\n return Effect.succeed(\n request.method === \"HEAD\"\n ? HttpServerResponse.empty({ headers })\n : HttpServerResponse.raw(file, { headers, contentType: headers[\"content-type\"] }),\n )\n}\n\nfunction isRouteNotFound(error: unknown) {\n return error instanceof HttpServerError.HttpServerError && error.reason._tag === \"RouteNotFound\"\n}\n\nfunction csp(hash = \"\") {\n return `default-src 'self'; script-src 'self' 'wasm-unsafe-eval'${hash ? ` 'sha256-${hash}'` : \"\"}; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; media-src 'self' data:; connect-src * data: blob:`\n}\n\nfunction cspForHtml(body: string) {\n const match = body.match(\n /<script\\b(?![^>]*\\bsrc\\s*=)[^>]*\\bid=([\"'])oc-theme-preload-script\\1[^>]*>([\\s\\S]*?)<\\/script>/i,\n )\n return csp(match ? createHash(\"sha256\").update(match[2]).digest(\"base64\") : \"\")\n}\n\nexport * as WebUi from \"./web-ui\"\n", | ||
| "import { Effect, FileSystem, Option } from \"effect\"\nimport path from \"node:path\"\nimport { brotliDecompressSync } from \"node:zlib\"\nimport { OPENCODE_LOCAL } from \"./version\"\n\nexport type AssetMap = Readonly<Record<string, string | Uint8Array>>\ntype EncodedAssetMap = Readonly<Record<string, { readonly content: string; readonly encoding: \"utf8\" | \"base64\" }>>\n\nexport const load = Effect.fn(\"cli.app-assets.load\")(function* () {\n const embedded = yield* Effect.tryPromise(() => import(\"virtual:opencode-app-assets\")).pipe(Effect.option)\n if (Option.isSome(embedded) && embedded.value.default.length > 0) return decodeArchive(embedded.value.default)\n if (!OPENCODE_LOCAL) return yield* Effect.fail(new Error(\"Web UI assets are missing from the CLI build\"))\n return decode(yield* sourceAssets())\n})\n\nfunction decodeArchive(archive: string) {\n const body = brotliDecompressSync(Buffer.from(archive, \"base64\")).toString()\n return decode(JSON.parse(body) as EncodedAssetMap)\n}\n\nconst sourceAssets = Effect.fnUntraced(function* () {\n const fs = yield* FileSystem.FileSystem\n const root = path.resolve(import.meta.dirname, \"../../app/dist\")\n const files = yield* fs.readDirectory(root, { recursive: true })\n return Object.fromEntries(\n (yield* Effect.forEach(\n files.filter((file) => !file.endsWith(\".map\")),\n Effect.fnUntraced(function* (file) {\n const target = path.join(root, file)\n if ((yield* fs.stat(target)).type === \"Directory\") return\n const body = Buffer.from(yield* fs.readFile(target))\n const encoding = isText(file) ? \"utf8\" : \"base64\"\n return [file, { encoding, content: body.toString(encoding) }] as const\n }),\n { concurrency: \"unbounded\" },\n )).filter((asset) => asset !== undefined),\n )\n})\n\nfunction decode(assets: EncodedAssetMap): AssetMap {\n return Object.fromEntries(\n Object.entries(assets).map(([key, asset]) => [\n key,\n asset.encoding === \"utf8\" ? asset.content : Buffer.from(asset.content, \"base64\"),\n ]),\n )\n}\n\nfunction isText(file: string) {\n return file === \"_headers\" || /\\.(?:css|html|js|json|svg|txt|webmanifest|xml)$/.test(file)\n}\n", | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerProcess } from \"../../server-process\"\n\nexport default Runtime.handler(\n Commands.commands.serve,\n Effect.fnUntraced(function* (input) {\n if (input.service && input.stdio) return yield* Effect.fail(new Error(\"--service and --stdio cannot be combined\"))\n return yield* ServerProcess.run({\n mode: input.service ? \"service\" : input.stdio ? \"stdio\" : \"default\",\n hostname: Option.getOrUndefined(input.hostname),\n port: Option.getOrUndefined(input.port),\n })\n }),\n)\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "071E176D44FCF5D764756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "0B98ECA21A2B235664756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/image-client.ts", "../ai/src/image.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Effect, Layer } from \"effect\"\nimport { RequestExecutor } from \"./route/executor.js\"\nimport { mergeHttpOptions, type AIError } from \"./schema/index.js\"\nimport { sanitizeSurrogates } from \"./utils/sanitize.js\"\nimport type { ImageOptions, ImageRequest, ImageRequestFor, ImageResponse } from \"./image.js\"\n\nexport type Execute = RequestExecutor.Interface[\"execute\"]\n\nexport interface Interface {\n readonly generate: <Options extends ImageOptions>(\n request: ImageRequestFor<Options>,\n ) => Effect.Effect<ImageResponse, AIError>\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/ImageClient\") {}\n\nexport const generate = <Options extends ImageOptions>(\n request: ImageRequestFor<Options>,\n): Effect.Effect<ImageResponse, AIError, Service> =>\n Effect.gen(function* () {\n const client = yield* Service\n return yield* client.generate(request)\n })\n\nexport const layer: Layer.Layer<Service, never, RequestExecutor.Service> = Layer.effect(\n Service,\n Effect.gen(function* () {\n const executor = yield* RequestExecutor.Service\n return Service.of({\n generate: (request) =>\n request.model.route.generate(\n {\n ...sanitizeSurrogates({\n ...request,\n model: undefined,\n http: mergeHttpOptions(request.model.http, request.http),\n }),\n model: request.model,\n },\n executor.execute,\n ),\n })\n }),\n)\n\nexport const ImageClient = {\n Service,\n layer,\n generate,\n} as const\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport {\n HttpOptions,\n InvalidRequestReason,\n AIError,\n ModelID,\n ProviderID,\n ProviderMetadata,\n Usage,\n} from \"./schema/index.js\"\nimport { ImageClient, Service, type Execute as ImageExecute } from \"./image-client.js\"\n\nexport interface ImageRoute<Options extends ImageOptions = ImageOptions> {\n readonly id: string\n readonly generate: (request: ImageRequestFor<Options>, execute: ImageExecute) => Effect.Effect<ImageResponse, AIError>\n}\n\nexport type ImageOptions = Record<string, unknown>\n\nexport class ImageModel<Options extends ImageOptions = ImageOptions> {\n declare protected readonly _Options: (options: Options) => Options\n readonly id: ModelID\n readonly provider: ProviderID\n readonly route: ImageRoute<Options>\n readonly http?: HttpOptions\n\n constructor(input: ImageModel.Input<Options>) {\n this.id = input.id\n this.provider = input.provider\n this.route = input.route\n this.http = input.http\n }\n\n static make<Options extends ImageOptions = ImageOptions>(input: ImageModel.MakeInput<Options>) {\n return new ImageModel<Options>({\n id: ModelID.make(input.id),\n provider: ProviderID.make(input.provider),\n route: input.route,\n http: input.http,\n })\n }\n}\n\nexport namespace ImageModel {\n export interface Input<Options extends ImageOptions = ImageOptions> {\n readonly id: ModelID\n readonly provider: ProviderID\n readonly route: ImageRoute<Options>\n readonly http?: HttpOptions\n }\n\n export interface MakeInput<Options extends ImageOptions = ImageOptions>\n extends Omit<Input<Options>, \"id\" | \"provider\"> {\n readonly id: string | ModelID\n readonly provider: string | ProviderID\n }\n}\n\nexport const ImageModelSchema = Schema.declare((value): value is ImageModel => value instanceof ImageModel, {\n expected: \"Image.Model\",\n})\n\nconst ImageBytesInput = Schema.Struct({\n type: Schema.Literal(\"bytes\"),\n data: Schema.Uint8Array,\n mediaType: Schema.String,\n})\nconst ImageUrlInput = Schema.Struct({\n type: Schema.Literal(\"url\"),\n url: Schema.String,\n})\nconst ImageFileIDInput = Schema.Struct({\n type: Schema.Literal(\"file-id\"),\n id: Schema.String,\n})\nconst ImageFileURIInput = Schema.Struct({\n type: Schema.Literal(\"file-uri\"),\n uri: Schema.String,\n mediaType: Schema.String,\n})\n\nexport const ImageInputSchema = Schema.Union([\n ImageBytesInput,\n ImageUrlInput,\n ImageFileIDInput,\n ImageFileURIInput,\n]).pipe(Schema.toTaggedUnion(\"type\"))\nexport type ImageInput = Schema.Schema.Type<typeof ImageInputSchema>\n\nexport const ImageInput = {\n bytes: (data: Uint8Array, mediaType: string): ImageInput => ({ type: \"bytes\", data, mediaType }),\n url: (url: string): ImageInput => ({ type: \"url\", url }),\n file: (id: string): ImageInput => ({ type: \"file-id\", id }),\n fileUri: (uri: string, mediaType: string): ImageInput => ({ type: \"file-uri\", uri, mediaType }),\n} as const\n\nexport class ImageRequest extends Schema.Class<ImageRequest>(\"Image.Request\")({\n model: ImageModelSchema,\n prompt: Schema.String,\n images: Schema.optional(Schema.Array(ImageInputSchema)),\n options: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n http: Schema.optional(HttpOptions),\n}) {\n declare protected readonly _ImageRequest: void\n}\n\nexport type ImageRequestFor<Options extends ImageOptions = ImageOptions> = Omit<ImageRequest, \"model\" | \"options\"> & {\n readonly model: ImageModel<Options>\n readonly options?: Options\n}\n\nexport type ImageModelOptions<Model> = Model extends ImageModel<infer Options> ? Options : never\n\nexport type ImageRequestInput<Model extends object = ImageModel> = Omit<\n ConstructorParameters<typeof ImageRequest>[0],\n \"model\" | \"options\" | \"http\"\n> & {\n readonly model: Model\n readonly options?: NoInfer<ImageModelOptions<Model>>\n readonly http?: HttpOptions.Input\n} & (Model extends ImageModel<ImageModelOptions<Model>> ? unknown : never)\n\nexport class GeneratedImage extends Schema.Class<GeneratedImage>(\"Image.Generated\")({\n mediaType: Schema.String,\n data: Schema.Union([Schema.String, Schema.Uint8Array]),\n providerMetadata: Schema.optional(ProviderMetadata),\n}) {}\n\nexport class ImageResponse extends Schema.Class<ImageResponse>(\"Image.Response\")({\n images: Schema.Array(GeneratedImage),\n usage: Schema.optional(Usage),\n providerMetadata: Schema.optional(ProviderMetadata),\n}) {\n get image() {\n return this.images[0]\n }\n}\n\nexport function request<const Model extends object>(\n input: ImageRequestInput<Model>,\n): ImageRequestFor<ImageModelOptions<Model>>\nexport function request(input: ImageRequest): ImageRequest\nexport function request(input: ImageRequest | ImageRequestInput) {\n if (input instanceof ImageRequest) return input\n return new ImageRequest({\n ...input,\n model: input.model as unknown as ImageModel,\n http: input.http === undefined ? undefined : HttpOptions.make(input.http),\n })\n}\n\nexport function generate<const Model extends object>(\n input: ImageRequestInput<Model>,\n): Effect.Effect<ImageResponse, AIError, Service>\nexport function generate(input: ImageRequest): Effect.Effect<ImageResponse, AIError, Service>\nexport function generate(input: ImageRequest | ImageRequestInput) {\n return Effect.try({\n try: () => (input instanceof ImageRequest ? input : request(input)),\n catch: (error) =>\n new AIError({\n module: \"Image\",\n method: \"generate\",\n reason: new InvalidRequestReason({ message: error instanceof Error ? error.message : String(error) }),\n }),\n }).pipe(Effect.flatMap((request) => ImageClient.generate(request as unknown as ImageRequestFor<ImageOptions>)))\n}\n\nexport const Image = {\n request,\n generate,\n} as const\n" | ||
| ], | ||
| "mappings": ";wLAcO,MAAM,UAAgB,EAAQ,QAA4B,EAAE,uBAAuB,CAAE,CAAC,CAUtF,IAAM,EAA8D,EAAM,OAC/E,EACA,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAW,MAAO,EAAgB,QACxC,OAAO,EAAQ,GAAG,CAChB,SAAU,CAAC,IACT,EAAQ,MAAM,MAAM,SAClB,IACK,EAAmB,IACjB,EACH,MAAO,OACP,KAAM,EAAiB,EAAQ,MAAM,KAAM,EAAQ,IAAI,CACzD,CAAC,EACD,MAAO,EAAQ,KACjB,EACA,EAAS,OACX,CACJ,CAAC,EACF,CACH,ECxBO,MAAM,CAAwD,CAE1D,GACA,SACA,MACA,KAET,WAAW,CAAC,EAAkC,CAC5C,KAAK,GAAK,EAAM,GAChB,KAAK,SAAW,EAAM,SACtB,KAAK,MAAQ,EAAM,MACnB,KAAK,KAAO,EAAM,WAGb,KAAiD,CAAC,EAAsC,CAC7F,OAAO,IAAI,EAAoB,CAC7B,GAAI,EAAQ,KAAK,EAAM,EAAE,EACzB,SAAU,EAAW,KAAK,EAAM,QAAQ,EACxC,MAAO,EAAM,MACb,KAAM,EAAM,IACd,CAAC,EAEL,CAiBO,IAAM,EAAmB,EAAO,QAAQ,CAAC,IAA+B,aAAiB,EAAY,CAC1G,SAAU,aACZ,CAAC,EAEK,EAAkB,EAAO,OAAO,CACpC,KAAM,EAAO,QAAQ,OAAO,EAC5B,KAAM,EAAO,WACb,UAAW,EAAO,MACpB,CAAC,EACK,EAAgB,EAAO,OAAO,CAClC,KAAM,EAAO,QAAQ,KAAK,EAC1B,IAAK,EAAO,MACd,CAAC,EACK,EAAmB,EAAO,OAAO,CACrC,KAAM,EAAO,QAAQ,SAAS,EAC9B,GAAI,EAAO,MACb,CAAC,EACK,EAAoB,EAAO,OAAO,CACtC,KAAM,EAAO,QAAQ,UAAU,EAC/B,IAAK,EAAO,OACZ,UAAW,EAAO,MACpB,CAAC,EAEY,EAAmB,EAAO,MAAM,CAC3C,EACA,EACA,EACA,CACF,CAAC,EAAE,KAAK,EAAO,cAAc,MAAM,CAAC,EAU7B,MAAM,UAAqB,EAAO,MAAoB,eAAe,EAAE,CAC5E,MAAO,EACP,OAAQ,EAAO,OACf,OAAQ,EAAO,SAAS,EAAO,MAAM,CAAgB,CAAC,EACtD,QAAS,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,CAAC,EACrE,KAAM,EAAO,SAAS,CAAW,CACnC,CAAC,CAAE,CAEH,CAkBO,MAAM,UAAuB,EAAO,MAAsB,iBAAiB,EAAE,CAClF,UAAW,EAAO,OAClB,KAAM,EAAO,MAAM,CAAC,EAAO,OAAQ,EAAO,UAAU,CAAC,EACrD,iBAAkB,EAAO,SAAS,CAAgB,CACpD,CAAC,CAAE,CAAC,CAEG,MAAM,UAAsB,EAAO,MAAqB,gBAAgB,EAAE,CAC/E,OAAQ,EAAO,MAAM,CAAc,EACnC,MAAO,EAAO,SAAS,CAAK,EAC5B,iBAAkB,EAAO,SAAS,CAAgB,CACpD,CAAC,CAAE,IACG,MAAK,EAAG,CACV,OAAO,KAAK,OAAO,GAEvB", | ||
| "debugId": "4C349F478FB333B764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "D165821F7239A82A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "7875BFCE5E30982964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/shared.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport { OpenCode, type IntegrationInfo, type IntegrationMethod, type OpenCodeClient } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServerConnection } from \"../../../services/server-connection\"\n\nexport const location = { directory: process.cwd() }\n\nexport const createClient = Effect.fn(\"cli.auth.client\")(function* (input: ServerConnection.Args) {\n const server = yield* ServerConnection.resolve(input)\n return OpenCode.make({ baseUrl: server.endpoint.url, headers: Service.headers(server.endpoint) })\n})\n\nexport function request<A>(run: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({ try: run, catch: (cause) => cause })\n}\n\nexport const loadIntegrations = Effect.fn(\"cli.auth.integrations\")(function* (client: OpenCodeClient) {\n // The model endpoint is the existing public readiness boundary for the initial plugin generation.\n yield* request((signal) => client.model.default({ location }, { signal }))\n return yield* request((signal) => client.integration.list({ location }, { signal })).pipe(\n Effect.map((response) => response.data),\n )\n})\n\nexport const resolveIntegration = Effect.fn(\"cli.auth.resolve-integration\")(function* (\n integrations: IntegrationInfo[],\n target: string,\n) {\n const normalized = target.replace(/\\/+$/, \"\")\n const byID = integrations.find((integration) => integration.id === normalized)\n if (byID) return byID\n const matches = integrations.filter((integration) => integration.name.toLowerCase() === normalized.toLowerCase())\n if (matches.length === 1) return matches[0]\n if (matches.length > 1) {\n return yield* Effect.fail(\n new Error(\n `Integration name \"${target}\" is ambiguous: ${matches.map((integration) => integration.id).join(\", \")}`,\n ),\n )\n }\n return yield* Effect.fail(new Error(`Integration not found: ${target}`))\n})\n\nexport type ConnectMethod = Exclude<IntegrationMethod, { type: \"env\" }>\n\nexport function connectMethods(integration: IntegrationInfo) {\n return integration.methods\n .filter((method): method is ConnectMethod => method.type !== \"env\")\n .toSorted((a, b) => Number(a.type === \"key\") - Number(b.type === \"key\"))\n}\n\nexport const resolveMethod = Effect.fn(\"cli.auth.resolve-method\")(function* (methods: ConnectMethod[], target: string) {\n const normalized = target.toLowerCase()\n const matches = methods.filter((method) => {\n if (method.type === \"key\") return normalized === \"key\" || method.label?.toLowerCase() === normalized\n return method.id === target || method.label.toLowerCase() === normalized\n })\n if (matches.length === 1) return matches[0]\n if (matches.length > 1) return yield* Effect.fail(new Error(`Authentication method \"${target}\" is ambiguous`))\n const available = methods.map((method) => (method.type === \"key\" ? \"key\" : method.id)).join(\", \")\n return yield* Effect.fail(\n new Error(`Authentication method not found: ${target}${available ? `. Available: ${available}` : \"\"}`),\n )\n})\n" | ||
| ], | ||
| "mappings": ";gNAKO,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAEtC,EAAe,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAA8B,CAChG,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAAK,EACpD,OAAO,EAAS,KAAK,CAAE,QAAS,EAAO,SAAS,IAAK,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAAE,CAAC,EACjG,EAEM,SAAS,CAAU,CAAC,EAA0C,CACnE,OAAO,EAAO,WAAW,CAAE,IAAK,EAAK,MAAO,CAAC,IAAU,CAAM,CAAC,EAGzD,IAAM,EAAmB,EAAO,GAAG,uBAAuB,EAAE,SAAU,CAAC,EAAwB,CAGpG,OADA,MAAO,EAAQ,CAAC,IAAW,EAAO,MAAM,QAAQ,CAAE,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EAClE,MAAO,EAAQ,CAAC,IAAW,EAAO,YAAY,KAAK,CAAE,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EAAE,KACnF,EAAO,IAAI,CAAC,IAAa,EAAS,IAAI,CACxC,EACD,EAEY,EAAqB,EAAO,GAAG,8BAA8B,EAAE,SAAU,CACpF,EACA,EACA,CACA,IAAM,EAAa,EAAO,QAAQ,OAAQ,EAAE,EACtC,EAAO,EAAa,KAAK,CAAC,IAAgB,EAAY,KAAO,CAAU,EAC7E,GAAI,EAAM,OAAO,EACjB,IAAM,EAAU,EAAa,OAAO,CAAC,IAAgB,EAAY,KAAK,YAAY,IAAM,EAAW,YAAY,CAAC,EAChH,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GACzC,GAAI,EAAQ,OAAS,EACnB,OAAO,MAAO,EAAO,KACf,MACF,qBAAqB,oBAAyB,EAAQ,IAAI,CAAC,IAAgB,EAAY,EAAE,EAAE,KAAK,IAAI,GACtG,CACF,EAEF,OAAO,MAAO,EAAO,KAAS,MAAM,0BAA0B,GAAQ,CAAC,EACxE,EAIM,SAAS,CAAc,CAAC,EAA8B,CAC3D,OAAO,EAAY,QAChB,OAAO,CAAC,IAAoC,EAAO,OAAS,KAAK,EACjE,SAAS,CAAC,EAAG,IAAM,OAAO,EAAE,OAAS,KAAK,EAAI,OAAO,EAAE,OAAS,KAAK,CAAC,EAGpE,IAAM,EAAgB,EAAO,GAAG,yBAAyB,EAAE,SAAU,CAAC,EAA0B,EAAgB,CACrH,IAAM,EAAa,EAAO,YAAY,EAChC,EAAU,EAAQ,OAAO,CAAC,IAAW,CACzC,GAAI,EAAO,OAAS,MAAO,OAAO,IAAe,OAAS,EAAO,OAAO,YAAY,IAAM,EAC1F,OAAO,EAAO,KAAO,GAAU,EAAO,MAAM,YAAY,IAAM,EAC/D,EACD,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GACzC,GAAI,EAAQ,OAAS,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,0BAA0B,iBAAsB,CAAC,EAC7G,IAAM,EAAY,EAAQ,IAAI,CAAC,IAAY,EAAO,OAAS,MAAQ,MAAQ,EAAO,EAAG,EAAE,KAAK,IAAI,EAChG,OAAO,MAAO,EAAO,KACf,MAAM,oCAAoC,IAAS,EAAY,gBAAgB,IAAc,IAAI,CACvG,EACD", | ||
| "debugId": "026284FE5606441C64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/command.ts", "../schema/src/websearch.ts", "../schema/src/reference.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Command from \"./command.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"command.updated\", schema: {} })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n name: Schema.String,\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Command.Info\" })\n\nexport const Event = {\n Updated,\n Definitions: inventory(Updated),\n}\n", | ||
| "export * as WebSearch from \"./websearch.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"WebSearch.ID\"))\nexport type ID = typeof ID.Type\n\nexport interface Provider extends Schema.Schema.Type<typeof Provider> {}\nexport const Provider = Schema.Struct({\n id: ID,\n name: Schema.String,\n}).annotate({ identifier: \"WebSearch.Provider\" })\n\nexport interface Input extends Schema.Schema.Type<typeof Input> {}\nexport const Input = Schema.Struct({\n query: Schema.String,\n providerID: ID.pipe(optional),\n}).annotate({ identifier: \"WebSearch.Input\" })\nexport type ProviderInput = Pick<Input, \"query\">\n\nexport interface Result extends Schema.Schema.Type<typeof Result> {}\nexport const Result = Schema.Struct({\n url: Schema.String,\n title: Schema.String.pipe(optional),\n content: Schema.String.pipe(optional),\n time: Schema.Struct({\n published: Schema.Finite.pipe(optional),\n }),\n}).annotate({ identifier: \"WebSearch.Result\" })\n\nexport class Response extends Schema.Class<Response>(\"WebSearch.Response\")({\n providerID: ID,\n results: Schema.Array(Result),\n}) {}\n\nconst Updated = ephemeral({\n type: \"websearch.updated\",\n schema: {},\n})\nexport const Event = { Updated, Definitions: inventory(Updated) }\n", | ||
| "export * as Reference from \"./reference.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { AbsolutePath } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"reference.updated\", schema: {} })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n\nexport interface LocalSource extends Schema.Schema.Type<typeof LocalSource> {}\nexport const LocalSource = Schema.Struct({\n type: Schema.Literal(\"local\"),\n path: AbsolutePath,\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Reference.LocalSource\" })\n\nexport interface GitSource extends Schema.Schema.Type<typeof GitSource> {}\nexport const GitSource = Schema.Struct({\n type: Schema.Literal(\"git\"),\n repository: Schema.String,\n branch: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Reference.GitSource\" })\n\nexport const Source = Schema.Union([LocalSource, GitSource])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Reference.Source\" })\nexport type Source = typeof Source.Type\n\nexport const Info = Schema.Struct({\n name: Schema.String,\n path: AbsolutePath,\n description: Schema.String.pipe(optional),\n hidden: Schema.Boolean.pipe(optional),\n source: Source,\n}).annotate({ identifier: \"Reference.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n" | ||
| ], | ||
| "mappings": ";qRAMA,IAAM,EAAU,EAAU,CAAE,KAAM,kBAAmB,OAAQ,CAAC,CAAE,CAAC,EAGpD,EAAO,EAAO,OAAO,CAChC,KAAM,EAAO,OACb,YAAa,EAAO,OAAO,KAAK,CAAQ,CAC1C,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAE7B,EAAQ,CACnB,UACA,YAAa,EAAU,CAAO,CAChC,8GCXO,IAAM,EAAK,EAAO,OAAO,KAAK,EAAO,MAAM,cAAc,CAAC,EAIpD,EAAW,EAAO,OAAO,CACpC,GAAI,EACJ,KAAM,EAAO,MACf,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAQ,EAAO,OAAO,CACjC,MAAO,EAAO,OACd,WAAY,EAAG,KAAK,CAAQ,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,EAIhC,EAAS,EAAO,OAAO,CAClC,IAAK,EAAO,OACZ,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,QAAS,EAAO,OAAO,KAAK,CAAQ,EACpC,KAAM,EAAO,OAAO,CAClB,UAAW,EAAO,OAAO,KAAK,CAAQ,CACxC,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAEvC,MAAM,UAAiB,EAAO,MAAgB,oBAAoB,EAAE,CACzE,WAAY,EACZ,QAAS,EAAO,MAAM,CAAM,CAC9B,CAAC,CAAE,CAAC,CAEJ,IAAM,EAAU,EAAU,CACxB,KAAM,oBACN,OAAQ,CAAC,CACX,CAAC,EACY,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,wGClChE,IAAM,EAAU,EAAU,CAAE,KAAM,oBAAqB,OAAQ,CAAC,CAAE,CAAC,EACtD,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,EAGnD,EAAc,EAAO,OAAO,CACvC,KAAM,EAAO,QAAQ,OAAO,EAC5B,KAAM,EACN,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,EAAY,EAAO,OAAO,CACrC,KAAM,EAAO,QAAQ,KAAK,EAC1B,WAAY,EAAO,OACnB,OAAQ,EAAO,OAAO,KAAK,CAAQ,EACnC,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,EAEpC,EAAS,EAAO,MAAM,CAAC,EAAa,CAAS,CAAC,EACxD,KAAK,EAAO,cAAc,MAAM,CAAC,EACjC,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAGjC,EAAO,EAAO,OAAO,CAChC,KAAM,EAAO,OACb,KAAM,EACN,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,OAAQ,EAAO,QAAQ,KAAK,CAAQ,EACpC,OAAQ,CACV,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC", | ||
| "debugId": "21EFDE5755172FA764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/auth.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport {\n OpenCode,\n type IntegrationAttemptStatus,\n type IntegrationOAuthMethod,\n type OpenCodeClient,\n} from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { resolveIntegration } from \"./resolve\"\n\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.auth,\n Effect.fn(\"cli.mcp.auth\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n\n const integration = yield* resolveIntegration(client, input.name, location)\n if (!integration)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" is not an OAuth-capable remote server`))\n const method = integration.methods.find(\n (candidate): candidate is IntegrationOAuthMethod => candidate.type === \"oauth\",\n )\n if (!method)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" is not an OAuth-capable remote server`))\n\n const started = yield* Effect.promise(() =>\n client.integration.oauth.connect({ integrationID: integration.id, methodID: method.id, location }),\n )\n const attempt = started.data\n if (attempt.mode === \"code\")\n return yield* Effect.fail(new Error(\"This server requires manual code entry, which the CLI does not support\"))\n\n process.stdout.write(attempt.instructions + EOL + attempt.url + EOL)\n\n const result = yield* poll(client, integration.id, attempt.attemptID)\n if (result.status === \"complete\") {\n process.stdout.write(`Authenticated with ${input.name}` + EOL)\n return\n }\n const reason = result.status === \"failed\" ? `: ${result.message}` : \"\"\n return yield* Effect.fail(new Error(`Authentication ${result.status}${reason}`))\n }),\n)\n\nconst poll = (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n): Effect.Effect<Exclude<IntegrationAttemptStatus, { status: \"pending\" }>> =>\n Effect.gen(function* () {\n const status = yield* Effect.promise(() =>\n client.integration.oauth.status({ integrationID, attemptID, location }),\n ).pipe(Effect.map((result) => result.data))\n if (status.status === \"pending\") {\n yield* Effect.sleep(\"1 second\")\n return yield* poll(client, integrationID, attemptID)\n }\n return status\n })\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAcT,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAE7B,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,KAC/B,EAAO,GAAG,cAAc,EAAE,SAAU,CAAC,EAAO,CAC1C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,EAAc,MAAO,EAAmB,EAAQ,EAAM,KAAM,CAAQ,EAC1E,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,eAAe,EAAM,6CAA6C,CAAC,EACzG,IAAM,EAAS,EAAY,QAAQ,KACjC,CAAC,IAAmD,EAAU,OAAS,OACzE,EACA,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,eAAe,EAAM,6CAA6C,CAAC,EAKzG,IAAM,GAHU,MAAO,EAAO,QAAQ,IACpC,EAAO,YAAY,MAAM,QAAQ,CAAE,cAAe,EAAY,GAAI,SAAU,EAAO,GAAI,UAAS,CAAC,CACnG,GACwB,KACxB,GAAI,EAAQ,OAAS,OACnB,OAAO,MAAO,EAAO,KAAS,MAAM,wEAAwE,CAAC,EAE/G,QAAQ,OAAO,MAAM,EAAQ,aAAe,EAAM,EAAQ,IAAM,CAAG,EAEnE,IAAM,EAAS,MAAO,EAAK,EAAQ,EAAY,GAAI,EAAQ,SAAS,EACpE,GAAI,EAAO,SAAW,WAAY,CAChC,QAAQ,OAAO,MAAM,sBAAsB,EAAM,OAAS,CAAG,EAC7D,OAEF,IAAM,EAAS,EAAO,SAAW,SAAW,KAAK,EAAO,UAAY,GACpE,OAAO,MAAO,EAAO,KAAS,MAAM,kBAAkB,EAAO,SAAS,GAAQ,CAAC,EAChF,CACH,EAEM,EAAO,CACX,EACA,EACA,IAEA,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAS,MAAO,EAAO,QAAQ,IACnC,EAAO,YAAY,MAAM,OAAO,CAAE,gBAAe,YAAW,UAAS,CAAC,CACxE,EAAE,KAAK,EAAO,IAAI,CAAC,IAAW,EAAO,IAAI,CAAC,EAC1C,GAAI,EAAO,SAAW,UAEpB,OADA,MAAO,EAAO,MAAM,UAAU,EACvB,MAAO,EAAK,EAAQ,EAAe,CAAS,EAErD,OAAO,EACR", | ||
| "debugId": "169E48FB55C9B58764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/open-responses-options.ts"], | ||
| "sourcesContent": [ | ||
| "import { Option, Schema } from \"effect\"\nimport type { LLMRequest } from \"../../schema/index.js\"\n\nexport const ReasoningEfforts = [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const\nexport type ReasoningEffort = (typeof ReasoningEfforts)[number] | (string & {})\nexport const ReasoningEffort = Schema.declare<ReasoningEffort>(\n (value): value is ReasoningEffort => typeof value === \"string\",\n { title: \"ReasoningEffort\" },\n)\n\nexport const TextVerbosities = [\"low\", \"medium\", \"high\"] as const\nexport type TextVerbosity = (typeof TextVerbosities)[number] | (string & {})\nexport const TextVerbosity = Schema.declare<TextVerbosity>(\n (value): value is TextVerbosity => typeof value === \"string\",\n { title: \"TextVerbosity\" },\n)\n\nexport const ResponseIncludables = [\n \"file_search_call.results\",\n \"web_search_call.results\",\n \"web_search_call.action.sources\",\n \"message.input_image.image_url\",\n \"computer_call_output.output.image_url\",\n \"code_interpreter_call.outputs\",\n \"reasoning.encrypted_content\",\n \"message.output_text.logprobs\",\n] as const\nexport type ResponseIncludable = (typeof ResponseIncludables)[number] | (string & {})\n\nexport const ServiceTiers = [\"auto\", \"default\", \"flex\", \"priority\"] as const\nexport type ServiceTier = (typeof ServiceTiers)[number] | (string & {})\nexport const ServiceTier = Schema.declare<ServiceTier>(\n (value): value is ServiceTier => typeof value === \"string\",\n { title: \"ServiceTier\" },\n)\n\nexport const Truncations = [\"auto\", \"disabled\"] as const\nexport type Truncation = (typeof Truncations)[number]\n\nexport const TextVerbositySchema = TextVerbosity\nexport const ResponseIncludableSchema = Schema.declare<ResponseIncludable>(\n (value): value is ResponseIncludable => typeof value === \"string\",\n { title: \"ResponseIncludable\" },\n)\nexport const ServiceTierSchema = ServiceTier\nexport const TruncationSchema = Schema.Literals(Truncations)\n\nexport const AllowedTools = Schema.Struct({\n toolNames: Schema.Array(Schema.String),\n mode: Schema.optional(Schema.Literals([\"auto\", \"none\", \"required\"])),\n})\nexport type AllowedTools = typeof AllowedTools.Type\n\nexport const StreamOptions = Schema.Struct({\n includeObfuscation: Schema.optional(Schema.Boolean),\n})\n\nexport const Options = Schema.Struct({\n instructions: Schema.optional(Schema.String),\n store: Schema.optional(Schema.Boolean),\n metadata: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n safetyIdentifier: Schema.optional(Schema.String),\n streamOptions: Schema.optional(StreamOptions),\n topLogprobs: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 20 }))),\n reasoningEffort: Schema.optional(ReasoningEffort),\n reasoningSummary: Schema.optional(Schema.Literals([\"auto\", \"concise\", \"detailed\"])),\n include: Schema.optional(Schema.Array(ResponseIncludableSchema)),\n textVerbosity: Schema.optional(TextVerbositySchema),\n serviceTier: Schema.optional(ServiceTierSchema),\n truncation: Schema.optional(TruncationSchema),\n allowedTools: Schema.optional(AllowedTools),\n maxToolCalls: Schema.optional(Schema.Int),\n parallelToolCalls: Schema.optional(Schema.Boolean),\n})\nexport type Options = typeof Options.Type\n\nexport type Resolved = Omit<Options, \"allowedTools\"> & {\n readonly allowedTools?: AllowedTools & { readonly mode: NonNullable<AllowedTools[\"mode\"]> }\n}\n\nconst decodeOptions = Schema.decodeUnknownOption(Options)\n\nexport const resolve = (request: LLMRequest): Resolved => {\n const input = Option.getOrUndefined(decodeOptions(request.providerOptions))\n if (!input) return {}\n return {\n ...input,\n include: input.include?.length ? input.include : undefined,\n allowedTools:\n input.allowedTools && input.allowedTools.toolNames.length > 0\n ? { ...input.allowedTools, mode: input.allowedTools.mode ?? \"auto\" }\n : undefined,\n }\n}\n\nexport * as OpenResponsesOptions from \"./open-responses-options.js\"\n" | ||
| ], | ||
| "mappings": ";8eAGO,IAAM,EAAmB,CAAC,OAAQ,UAAW,MAAO,SAAU,OAAQ,QAAS,KAAK,EAE9E,EAAkB,EAAO,QACpC,CAAC,IAAoC,OAAO,IAAU,SACtD,CAAE,MAAO,iBAAkB,CAC7B,EAEa,EAAkB,CAAC,MAAO,SAAU,MAAM,EAE1C,EAAgB,EAAO,QAClC,CAAC,IAAkC,OAAO,IAAU,SACpD,CAAE,MAAO,eAAgB,CAC3B,EAEa,EAAsB,CACjC,2BACA,0BACA,iCACA,gCACA,wCACA,gCACA,8BACA,8BACF,EAGa,EAAe,CAAC,OAAQ,UAAW,OAAQ,UAAU,EAErD,EAAc,EAAO,QAChC,CAAC,IAAgC,OAAO,IAAU,SAClD,CAAE,MAAO,aAAc,CACzB,EAEa,EAAc,CAAC,OAAQ,UAAU,EAGjC,EAAsB,EACtB,EAA2B,EAAO,QAC7C,CAAC,IAAuC,OAAO,IAAU,SACzD,CAAE,MAAO,oBAAqB,CAChC,EACa,EAAoB,EACpB,EAAmB,EAAO,SAAS,CAAW,EAE9C,EAAe,EAAO,OAAO,CACxC,UAAW,EAAO,MAAM,EAAO,MAAM,EACrC,KAAM,EAAO,SAAS,EAAO,SAAS,CAAC,OAAQ,OAAQ,UAAU,CAAC,CAAC,CACrE,CAAC,EAGY,EAAgB,EAAO,OAAO,CACzC,mBAAoB,EAAO,SAAS,EAAO,OAAO,CACpD,CAAC,EAEY,EAAU,EAAO,OAAO,CACnC,aAAc,EAAO,SAAS,EAAO,MAAM,EAC3C,MAAO,EAAO,SAAS,EAAO,OAAO,EACrC,SAAU,EAAO,SAAS,EAAO,OAAO,EAAO,OAAQ,EAAO,MAAM,CAAC,EACrE,iBAAkB,EAAO,SAAS,EAAO,MAAM,EAC/C,cAAe,EAAO,SAAS,CAAa,EAC5C,YAAa,EAAO,SAAS,EAAO,IAAI,MAAM,EAAO,UAAU,CAAE,QAAS,EAAG,QAAS,EAAG,CAAC,CAAC,CAAC,EAC5F,gBAAiB,EAAO,SAAS,CAAe,EAChD,iBAAkB,EAAO,SAAS,EAAO,SAAS,CAAC,OAAQ,UAAW,UAAU,CAAC,CAAC,EAClF,QAAS,EAAO,SAAS,EAAO,MAAM,CAAwB,CAAC,EAC/D,cAAe,EAAO,SAAS,CAAmB,EAClD,YAAa,EAAO,SAAS,CAAiB,EAC9C,WAAY,EAAO,SAAS,CAAgB,EAC5C,aAAc,EAAO,SAAS,CAAY,EAC1C,aAAc,EAAO,SAAS,EAAO,GAAG,EACxC,kBAAmB,EAAO,SAAS,EAAO,OAAO,CACnD,CAAC,EAOK,EAAgB,EAAO,oBAAoB,CAAO,EAE3C,EAAU,CAAC,IAAkC,CACxD,IAAM,EAAQ,EAAO,eAAe,EAAc,EAAQ,eAAe,CAAC,EAC1E,GAAI,CAAC,EAAO,MAAO,CAAC,EACpB,MAAO,IACF,EACH,QAAS,EAAM,SAAS,OAAS,EAAM,QAAU,OACjD,aACE,EAAM,cAAgB,EAAM,aAAa,UAAU,OAAS,EACxD,IAAK,EAAM,aAAc,KAAM,EAAM,aAAa,MAAQ,MAAO,EACjE,MACR", | ||
| "debugId": "E4C080CE8800710D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/run.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(Commands.commands.run, (input) =>\n Effect.gen(function* () {\n const { runNonInteractive } = yield* Effect.promise(() => import(\"../../run/run\"))\n const separator = process.argv.indexOf(\"--\", 2)\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n yield* Effect.promise(() =>\n runNonInteractive({\n server,\n message: [...input.message, ...(separator === -1 ? [] : process.argv.slice(separator + 1))],\n continue: input.continue,\n session: Option.getOrUndefined(input.session),\n fork: input.fork,\n model: Option.getOrUndefined(input.model),\n agent: Option.getOrUndefined(input.agent),\n format: input.format,\n file: [...input.file],\n title: Option.getOrUndefined(input.title),\n thinking: input.thinking,\n auto: input.auto || input.yolo || input.dangerouslySkipPermissions,\n }),\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";mhCAKA,IAAe,IAAQ,QAAQ,EAAS,SAAS,IAAK,CAAC,IACrD,EAAO,IAAI,SAAU,EAAG,CACtB,IAAQ,qBAAsB,MAAO,EAAO,QAAQ,IAAa,wCAAgB,EAC3E,EAAY,QAAQ,KAAK,QAAQ,KAAM,CAAC,EACxC,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACD,MAAO,EAAO,QAAQ,IACpB,EAAkB,CAChB,SACA,QAAS,CAAC,GAAG,EAAM,QAAS,GAAI,IAAc,GAAK,CAAC,EAAI,QAAQ,KAAK,MAAM,EAAY,CAAC,CAAE,EAC1F,SAAU,EAAM,SAChB,QAAS,EAAO,eAAe,EAAM,OAAO,EAC5C,KAAM,EAAM,KACZ,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,OAAQ,EAAM,OACd,KAAM,CAAC,GAAG,EAAM,IAAI,EACpB,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,SAAU,EAAM,SAChB,KAAM,EAAM,MAAQ,EAAM,MAAQ,EAAM,0BAC1C,CAAC,CACH,EACD,CACH", | ||
| "debugId": "CA5438F326990D2064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/theme/system.ts"], | ||
| "sourcesContent": [ | ||
| "import { RGBA, type TerminalColors } from \"@opentui/core\"\nimport { ansiToRgba, tint } from \"./color\"\n\nexport function terminalMode(colors: TerminalColors): \"dark\" | \"light\" | undefined {\n const bg = colors.defaultBackground\n if (!bg) return\n const { r, g, b } = RGBA.fromHex(bg)\n return 0.299 * r + 0.587 * g + 0.114 * b > 0.5 ? \"light\" : \"dark\"\n}\n\nexport function generateSystem(colors: TerminalColors, mode: \"dark\" | \"light\") {\n const bg = RGBA.fromHex(colors.defaultBackground ?? colors.palette[0]!)\n const fg = RGBA.fromHex(colors.defaultForeground ?? colors.palette[7]!)\n const transparent = RGBA.fromValues(bg.r, bg.g, bg.b, 0)\n const isDark = mode === \"dark\"\n\n const col = (index: number) => {\n const value = colors.palette[index]\n if (value) return RGBA.fromHex(value)\n return ansiToRgba(index)\n }\n\n const grays = generateGrayScale(bg, isDark)\n const textMuted = generateMutedTextColor(bg, isDark)\n const ansiColors = {\n red: col(1),\n green: col(2),\n yellow: col(3),\n blue: col(4),\n magenta: col(5),\n cyan: col(6),\n redBright: col(9),\n greenBright: col(10),\n }\n\n const diffAlpha = isDark ? 0.22 : 0.14\n const diffAddedBg = tint(bg, ansiColors.green, diffAlpha)\n const diffRemovedBg = tint(bg, ansiColors.red, diffAlpha)\n const diffContextBg = grays[2]\n const diffAddedLineNumberBg = tint(diffContextBg, ansiColors.green, diffAlpha)\n const diffRemovedLineNumberBg = tint(diffContextBg, ansiColors.red, diffAlpha)\n\n return {\n theme: {\n primary: ansiColors.cyan,\n secondary: ansiColors.magenta,\n accent: ansiColors.cyan,\n error: ansiColors.red,\n warning: ansiColors.yellow,\n success: ansiColors.green,\n info: ansiColors.cyan,\n text: fg,\n textMuted,\n selectedListItemText: bg,\n background: transparent,\n backgroundPanel: grays[2],\n backgroundElement: grays[3],\n backgroundMenu: grays[3],\n borderSubtle: grays[6],\n border: grays[7],\n borderActive: grays[8],\n diffAdded: ansiColors.green,\n diffRemoved: ansiColors.red,\n diffContext: grays[7],\n diffHunkHeader: grays[7],\n diffHighlightAdded: ansiColors.greenBright,\n diffHighlightRemoved: ansiColors.redBright,\n diffAddedBg,\n diffRemovedBg,\n diffContextBg,\n diffLineNumber: textMuted,\n diffAddedLineNumberBg,\n diffRemovedLineNumberBg,\n markdownText: fg,\n markdownHeading: fg,\n markdownLink: ansiColors.blue,\n markdownLinkText: ansiColors.cyan,\n markdownCode: ansiColors.green,\n markdownBlockQuote: ansiColors.yellow,\n markdownEmph: ansiColors.yellow,\n markdownStrong: fg,\n markdownHorizontalRule: grays[7],\n markdownListItem: ansiColors.blue,\n markdownListEnumeration: ansiColors.cyan,\n markdownImage: ansiColors.blue,\n markdownImageText: ansiColors.cyan,\n markdownCodeBlock: fg,\n syntaxComment: textMuted,\n syntaxKeyword: ansiColors.magenta,\n syntaxFunction: ansiColors.blue,\n syntaxVariable: fg,\n syntaxString: ansiColors.green,\n syntaxNumber: ansiColors.yellow,\n syntaxType: ansiColors.cyan,\n syntaxOperator: ansiColors.cyan,\n syntaxPunctuation: fg,\n },\n }\n}\n\nfunction generateGrayScale(bg: RGBA, isDark: boolean): Record<number, RGBA> {\n const grays: Record<number, RGBA> = {}\n const bgR = bg.r * 255\n const bgG = bg.g * 255\n const bgB = bg.b * 255\n const luminance = 0.299 * bgR + 0.587 * bgG + 0.114 * bgB\n\n for (let i = 1; i <= 12; i++) {\n const factor = i / 12\n\n if (isDark && luminance < 10) {\n const gray = Math.floor(factor * 0.4 * 255)\n grays[i] = RGBA.fromInts(gray, gray, gray)\n continue\n }\n\n if (!isDark && luminance > 245) {\n const gray = Math.floor(255 - factor * 0.4 * 255)\n grays[i] = RGBA.fromInts(gray, gray, gray)\n continue\n }\n\n const next = isDark ? luminance + (255 - luminance) * factor * 0.4 : luminance * (1 - factor * 0.4)\n const ratio = next / luminance\n grays[i] = RGBA.fromInts(\n Math.floor(Math.min(Math.max(bgR * ratio, 0), 255)),\n Math.floor(Math.min(Math.max(bgG * ratio, 0), 255)),\n Math.floor(Math.min(Math.max(bgB * ratio, 0), 255)),\n )\n }\n\n return grays\n}\n\nfunction generateMutedTextColor(bg: RGBA, isDark: boolean): RGBA {\n const luminance = 0.299 * bg.r * 255 + 0.587 * bg.g * 255 + 0.114 * bg.b * 255\n if (isDark) {\n const gray = luminance < 10 ? 180 : Math.min(Math.floor(160 + luminance * 0.3), 200)\n return RGBA.fromInts(gray, gray, gray)\n }\n\n const gray = luminance > 245 ? 75 : Math.max(Math.floor(100 - (255 - luminance) * 0.2), 60)\n return RGBA.fromInts(gray, gray, gray)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "562DC08A60B2756564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/runtime.queue.ts"], | ||
| "sourcesContent": [ | ||
| "// Serial prompt queue for direct interactive mode.\n//\n// Prompts arrive from the footer (user types and hits enter) and local\n// operations drain one at a time. Ordinary prompts submitted during an active\n// ordinary turn are admitted immediately to the server's durable queue.\n//\n// The queue also handles local session commands, empty-prompt rejection,\n// and tracks per-turn wall-clock duration for the footer status line.\n//\n// Resolves when the footer closes and all in-flight work finishes.\nimport { SessionMessage } from \"@opencode-ai/schema/session-message\"\nimport { Locale } from \"../util/locale\"\nimport { isCompactCommand, isExitCommand, isNewCommand } from \"./prompt.shared\"\nimport type { FooterApi, FooterEvent, RunDelivery, RunPrompt } from \"./types\"\n\ntype Trace = {\n write(type: string, data?: unknown): void\n}\n\nexport type QueueInput = {\n footer: FooterApi\n initialInput?: string\n trace?: Trace\n onSend?: (prompt: RunPrompt, delivery: RunDelivery) => void\n onAdmissionError?: (prompt: RunPrompt, error: unknown) => void | Promise<void>\n onNewSession?: () => void | Promise<void>\n onCompact?: () => void | Promise<void>\n admit: (prompt: RunPrompt, delivery: RunDelivery, signal: AbortSignal) => Promise<void>\n settle: () => Promise<void>\n run: (prompt: RunPrompt, signal: AbortSignal, admitted: () => void) => Promise<void>\n}\n\ntype State = {\n queue: RunPrompt[]\n active?: RunPrompt\n admission?: Promise<void>\n ctrl?: AbortController\n closed: boolean\n}\n\n// Runs the prompt queue until the footer closes.\n//\n// Subscribes to footer prompt events and drains operations through input.run().\n// Ordinary prompts submitted during an ordinary active turn are admitted as\n// durable queued work instead of remaining editable process-local state.\nexport async function runPromptQueue(input: QueueInput): Promise<void> {\n const stop = Promise.withResolvers<{ type: \"closed\" }>()\n const done = Promise.withResolvers<void>()\n const state: State = {\n queue: [],\n closed: input.footer.isClosed,\n }\n let draining: Promise<void> | undefined\n let admissions = Promise.resolve()\n let admissionVersion = 0\n const admissionController = new AbortController()\n\n const emit = (next: FooterEvent, row: Record<string, unknown>) => {\n input.trace?.write(\"ui.patch\", row)\n input.footer.event(next)\n }\n\n const finish = () => {\n if (!state.closed || draining) {\n return\n }\n\n done.resolve()\n }\n\n const close = () => {\n if (state.closed) {\n return\n }\n\n state.closed = true\n state.queue.length = 0\n // Ordinary turn signals map to session.interrupt; exiting should only detach the TUI.\n if (state.active?.mode === \"shell\") state.ctrl?.abort()\n admissionController.abort()\n stop.resolve({ type: \"closed\" })\n finish()\n }\n\n const drain = () => {\n if (draining || state.closed || state.queue.length === 0) {\n return\n }\n\n draining = (async () => {\n try {\n while (!state.closed && state.queue.length > 0) {\n const prompt = state.queue.shift()!\n\n if (prompt.mode !== \"shell\" && isNewCommand(prompt.text)) {\n if (!input.onNewSession) {\n emit(\n {\n type: \"stream.patch\",\n patch: {\n status: \"new sessions unavailable\",\n },\n },\n {\n status: \"new sessions unavailable\",\n },\n )\n continue\n }\n\n emit(\n {\n type: \"stream.patch\",\n patch: {\n phase: \"running\",\n status: \"starting new session\",\n },\n },\n {\n phase: \"running\",\n status: \"starting new session\",\n },\n )\n await input.onNewSession()\n continue\n }\n\n if (prompt.mode !== \"shell\" && isCompactCommand(prompt.text)) {\n emit(\n {\n type: \"stream.patch\",\n patch: {\n phase: \"running\",\n status: \"compacting session\",\n },\n },\n {\n phase: \"running\",\n status: \"compacting session\",\n },\n )\n await input.onCompact?.()\n continue\n }\n\n const sent =\n prompt.mode === \"shell\"\n ? prompt\n : {\n ...prompt,\n messageID: prompt.messageID ?? SessionMessage.ID.create(),\n }\n state.active = sent\n\n emit(\n { type: \"turn.send\" },\n {\n phase: \"running\",\n status: \"sending prompt\",\n },\n )\n const start = Date.now()\n const ctrl = new AbortController()\n const admission = Promise.withResolvers<void>()\n const version = admissionVersion\n state.ctrl = ctrl\n state.admission = admission.promise\n\n try {\n await input.footer.idle()\n if (state.closed) {\n break\n }\n\n if (sent.mode !== \"shell\") {\n const commit = {\n kind: \"user\",\n text: sent.text,\n phase: \"start\",\n source: \"system\",\n messageID: sent.messageID,\n } as const\n input.trace?.write(\"ui.commit\", commit)\n input.footer.append(commit)\n }\n input.onSend?.(sent, sent.delivery ?? \"steer\")\n\n if (state.closed) {\n break\n }\n\n const task = input.run(sent, ctrl.signal, admission.resolve).then(\n () => ({ type: \"done\" as const }),\n (error) => ({ type: \"error\" as const, error }),\n )\n\n const next = await Promise.race([task, stop.promise])\n if (next.type === \"closed\") {\n break\n }\n\n if (next.type === \"error\") {\n throw next.error\n }\n if (sent.mode !== \"shell\" && admissionVersion !== version) {\n do {\n const current = admissionVersion\n await admissions\n if (state.closed) break\n await input.settle()\n if (current === admissionVersion) break\n } while (!state.closed)\n }\n } finally {\n admission.resolve()\n if (state.ctrl === ctrl) {\n state.ctrl = undefined\n }\n if (state.admission === admission.promise) state.admission = undefined\n\n if (sent.mode !== \"shell\") {\n const duration = Locale.duration(Math.max(0, Date.now() - start))\n emit(\n {\n type: \"turn.duration\",\n duration,\n },\n {\n duration,\n },\n )\n }\n state.active = undefined\n }\n }\n } catch (error) {\n done.reject(error)\n return\n } finally {\n draining = undefined\n emit(\n { type: \"turn.idle\" },\n {\n phase: \"idle\",\n status: \"\",\n },\n )\n }\n\n finish()\n })()\n }\n\n const submit = (prompt: RunPrompt) => {\n if (!prompt.text.trim() || state.closed) {\n return\n }\n\n if (prompt.mode !== \"shell\" && isExitCommand(prompt.text)) {\n input.footer.close()\n return\n }\n\n const active = state.active\n if (\n active &&\n active.mode !== \"shell\" &&\n prompt.mode !== \"shell\" &&\n prompt.command?.source !== \"skill\" &&\n !isNewCommand(prompt.text) &&\n !isCompactCommand(prompt.text) &&\n !state.queue.some((item) => item.mode !== \"shell\" && (isNewCommand(item.text) || isCompactCommand(item.text)))\n ) {\n const sent = { ...prompt, messageID: SessionMessage.ID.create() }\n const admission = state.admission\n admissionVersion += 1\n const delivery = prompt.delivery ?? \"queue\"\n input.onSend?.(sent, delivery)\n admissions = admissions\n .then(() => admission)\n .then(() => input.admit(sent, delivery, admissionController.signal))\n .catch((error) => (state.closed ? undefined : input.onAdmissionError?.(sent, error)))\n return\n }\n\n state.queue.push(prompt)\n if (prompt.mode !== \"shell\" && (isNewCommand(prompt.text) || isCompactCommand(prompt.text))) {\n drain()\n return\n }\n\n emit(\n {\n type: \"first\",\n first: false,\n },\n {\n first: false,\n },\n )\n drain()\n }\n\n const offPrompt = input.footer.onPrompt((prompt) => {\n submit(prompt)\n })\n const offClose = input.footer.onClose(() => {\n close()\n })\n try {\n if (state.closed) {\n return\n }\n\n submit({\n text: input.initialInput ?? \"\",\n parts: [],\n })\n finish()\n await done.promise\n } finally {\n offPrompt()\n offClose()\n close()\n await draining?.catch(() => {})\n await admissions\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6FBE83711DF83E5864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+vercel@2.0.39+d6123d32214422cb/node_modules/@ai-sdk/vercel/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/vercel-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"2.0.39\" : \"0.0.0-test\";\n\n// src/vercel-provider.ts\nfunction createVercel(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.v0.dev/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"VERCEL_API_KEY\",\n description: \"Vercel\"\n })}`,\n ...options.headers\n },\n `ai-sdk/vercel/${VERSION}`\n );\n const getCommonModelConfig = (modelType) => ({\n provider: `vercel.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig(\"chat\")\n });\n };\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar vercel = createVercel();\nexport {\n VERSION,\n createVercel,\n vercel\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";+WAYA,IAAI,EAAiB,SAGrB,SAAS,CAAY,CAAC,EAAU,CAAC,EAAG,CAClC,IAAI,EACJ,IAAM,EAAU,GACb,EAAK,EAAQ,UAAY,KAAO,EAAK,uBACxC,EACM,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,iBACzB,YAAa,QACf,CAAC,OACE,EAAQ,OACb,EACA,iBAAiB,GACnB,EACM,EAAuB,CAAC,KAAe,CAC3C,SAAU,UAAU,IACpB,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,KACjB,GACM,EAAkB,CAAC,IAChB,IAAI,EAAkC,EAAS,IACjD,EAAqB,MAAM,CAChC,CAAC,EAEG,EAAW,CAAC,IAAY,EAAgB,CAAO,EAUrD,OATA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,eAAiB,CAAC,IAAY,CACrC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,gBAAiB,CAAC,GAErE,EAAS,mBAAqB,EAAS,eACvC,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAE1D,EAET,IAAI,EAAS,EAAa", | ||
| "debugId": "1E2690A704DA798864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/session-transfer.ts"], | ||
| "sourcesContent": [ | ||
| "export * as SessionTransfer from \"./session-transfer.js\"\n\nimport { Schema } from \"effect\"\nimport { Session } from \"./session.js\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport interface Data extends Schema.Schema.Type<typeof Data> {}\nexport const Data = Schema.Struct({\n info: Session.Info,\n messages: Schema.Array(SessionMessage.Info),\n}).annotate({ identifier: \"SessionTransfer.Data\" })\n" | ||
| ], | ||
| "mappings": ";iQAOO,IAAM,EAAO,EAAO,OAAO,CAChC,KAAM,EAAQ,KACd,SAAU,EAAO,MAAM,EAAe,IAAI,CAC5C,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC", | ||
| "debugId": "B92671BD18E36EE664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/google-images.ts", "../ai/src/providers/google.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest } from \"effect/unstable/http\"\nimport {\n GeneratedImage,\n ImageModel,\n ImageResponse,\n type ImageInput,\n type ImageRequestFor,\n type ImageRoute,\n} from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n type ProviderMetadata,\n} from \"../schema/index.js\"\nimport { ProviderShared } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\n\nconst ADAPTER = \"google-images\"\nexport const DEFAULT_BASE_URL = \"https://generativelanguage.googleapis.com/v1beta\"\n\nexport type GoogleImageString<Known extends string> = Known | (string & {})\n\nexport type GoogleImageOptions = {\n readonly aspectRatio?: GoogleImageString<\n \"1:1\" | \"2:3\" | \"3:2\" | \"3:4\" | \"4:3\" | \"4:5\" | \"5:4\" | \"9:16\" | \"16:9\" | \"21:9\"\n >\n readonly imageSize?: GoogleImageString<\"1K\" | \"2K\" | \"4K\">\n readonly seed?: number\n readonly thinkingLevel?: GoogleImageString<\"MINIMAL\" | \"LOW\" | \"MEDIUM\" | \"HIGH\">\n readonly includeThoughts?: boolean\n} & Record<string, unknown>\n\nexport type GoogleImageBody = Record<string, unknown> & {\n readonly contents: ReadonlyArray<{\n readonly role: \"user\"\n readonly parts: ReadonlyArray<Record<string, unknown>>\n }>\n readonly generationConfig: Record<string, unknown>\n}\n\nconst GoogleUsage = Schema.StructWithRest(\n Schema.Struct({\n cachedContentTokenCount: Schema.optional(Schema.Number),\n thoughtsTokenCount: Schema.optional(Schema.Number),\n promptTokenCount: Schema.optional(Schema.Number),\n candidatesTokenCount: Schema.optional(Schema.Number),\n totalTokenCount: Schema.optional(Schema.Number),\n promptTokensDetails: Schema.optional(Schema.Unknown),\n candidatesTokensDetails: Schema.optional(Schema.Unknown),\n }),\n [Schema.Record(Schema.String, Schema.Unknown)],\n)\n\nconst GoogleImageResponse = Schema.Struct({\n candidates: Schema.optional(\n Schema.Array(\n Schema.Struct({\n index: Schema.optional(Schema.Number),\n content: Schema.optional(\n Schema.Struct({\n parts: Schema.Array(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n thought: Schema.optional(Schema.Boolean),\n thoughtSignature: Schema.optional(Schema.String),\n inlineData: Schema.optional(\n Schema.Struct({\n mimeType: Schema.String,\n data: Schema.String,\n }),\n ),\n }),\n ),\n }),\n ),\n finishReason: Schema.optional(Schema.String),\n finishMessage: Schema.optional(Schema.String),\n safetyRatings: Schema.optional(Schema.Unknown),\n citationMetadata: Schema.optional(Schema.Unknown),\n groundingMetadata: Schema.optional(Schema.Unknown),\n }),\n ),\n ),\n usageMetadata: Schema.optional(GoogleUsage),\n modelVersion: Schema.optional(Schema.String),\n responseId: Schema.optional(Schema.String),\n promptFeedback: Schema.optional(Schema.Unknown),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: GoogleImageOptions | undefined) => {\n const { aspectRatio, imageSize, seed, thinkingLevel, includeThoughts, ...native } = options ?? {}\n const image = {\n aspectRatio,\n imageSize,\n }\n const thinkingConfig = {\n thinkingLevel,\n includeThoughts,\n }\n return (\n mergeJsonRecords(\n {\n responseModalities: [\"IMAGE\"],\n imageConfig: Object.values(image).some((value) => value !== undefined) ? image : undefined,\n seed,\n thinkingConfig: Object.values(thinkingConfig).some((value) => value !== undefined) ? thinkingConfig : undefined,\n },\n native,\n ) ?? { responseModalities: [\"IMAGE\"] }\n )\n}\n\nconst invalidOutput = (message: string, providerMetadata?: ProviderMetadata) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER, providerMetadata }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<GoogleImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"GoogleImages.generate\")(function* (request: ImageRequestFor<GoogleImageOptions>, execute) {\n const imageParts = yield* Effect.forEach(request.images ?? [], googleImagePart)\n const http = mergeHttpOptions(request.model.http, request.http)\n const requestBody = mergeJsonRecords(\n {\n contents: [{ role: \"user\", parts: [{ text: request.prompt }, ...imageParts] }],\n generationConfig: nativeOptions(request.options),\n },\n http?.body,\n ) as GoogleImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const url = applyQuery(\n `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}/models/${request.model.id}:generateContent`,\n http?.query,\n )\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the Google Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(GoogleImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"Google Images returned an invalid response\")),\n )\n const candidates = decoded.candidates ?? []\n const candidateMetadata = candidates.map((candidate, candidateIndex) => ({\n index: candidate.index ?? candidateIndex,\n finishReason: candidate.finishReason,\n finishMessage: candidate.finishMessage,\n safetyRatings: candidate.safetyRatings,\n citationMetadata: candidate.citationMetadata,\n groundingMetadata: candidate.groundingMetadata,\n parts: (candidate.content?.parts ?? []).map((part) =>\n part.inlineData === undefined\n ? {\n type: \"text\",\n text: part.text,\n thought: part.thought,\n thoughtSignature: part.thoughtSignature,\n }\n : {\n type: \"inlineData\",\n mediaType: part.inlineData.mimeType,\n thought: part.thought,\n thoughtSignature: part.thoughtSignature,\n },\n ),\n }))\n const encoded = candidates.flatMap((candidate, candidateIndex) =>\n (candidate.content?.parts ?? []).flatMap((part, partIndex) =>\n part.inlineData === undefined || part.thought === true\n ? []\n : [{ candidate, candidateIndex, partIndex, inlineData: part.inlineData }],\n ),\n )\n const images = yield* Effect.forEach(encoded, (item) =>\n Effect.fromResult(Encoding.decodeBase64(item.inlineData.data)).pipe(\n Effect.mapError(() =>\n invalidOutput(\n `Google Images candidate ${item.candidateIndex} part ${item.partIndex} contains invalid base64 data`,\n ),\n ),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType: item.inlineData.mimeType,\n data,\n providerMetadata: {\n google: {\n candidateIndex: item.candidate.index ?? item.candidateIndex,\n partIndex: item.partIndex,\n finishReason: item.candidate.finishReason,\n safetyRatings: item.candidate.safetyRatings,\n citationMetadata: item.candidate.citationMetadata,\n groundingMetadata: item.candidate.groundingMetadata,\n thoughtSignature: item.candidate.content?.parts[item.partIndex]?.thoughtSignature,\n },\n },\n }),\n ),\n ),\n )\n if (images.length === 0) {\n const finishReasons = candidates.flatMap((candidate) =>\n candidate.finishReason === undefined ? [] : [candidate.finishReason],\n )\n return yield* invalidOutput(\n `Google Images returned no final images${\n finishReasons.length === 0 ? \"\" : ` (finish reasons: ${finishReasons.join(\", \")})`\n }; inspect reason.providerMetadata.google for prompt feedback and candidate details`,\n {\n google: {\n promptFeedback: decoded.promptFeedback,\n candidates: candidateMetadata,\n },\n },\n )\n }\n const usage = decoded.usageMetadata\n const outputTokens =\n usage?.candidatesTokenCount === undefined\n ? undefined\n : usage.candidatesTokenCount + (usage.thoughtsTokenCount ?? 0)\n return new ImageResponse({\n images,\n usage:\n usage === undefined\n ? undefined\n : new Usage({\n inputTokens: usage.promptTokenCount,\n outputTokens,\n nonCachedInputTokens: ProviderShared.subtractTokens(\n usage.promptTokenCount,\n usage.cachedContentTokenCount,\n ),\n cacheReadInputTokens: usage.cachedContentTokenCount,\n reasoningTokens: usage.thoughtsTokenCount,\n totalTokens: ProviderShared.totalTokens(usage.promptTokenCount, outputTokens, usage.totalTokenCount),\n providerMetadata: { google: usage },\n }),\n providerMetadata: {\n google: {\n modelVersion: decoded.modelVersion,\n responseId: decoded.responseId,\n promptFeedback: decoded.promptFeedback,\n candidates: candidateMetadata,\n },\n },\n })\n }),\n }\n return ImageModel.make<GoogleImageOptions>({ id: input.id, provider: \"google\", route, http: input.http })\n}\n\nconst googleImagePart = (image: ImageInput): Effect.Effect<Record<string, unknown>, AIError> => {\n if (image.type === \"bytes\")\n return Effect.succeed({ inlineData: { mimeType: image.mediaType, data: Encoding.encodeBase64(image.data) } })\n if (image.type === \"file-uri\") return Effect.succeed({ fileData: { mimeType: image.mediaType, fileUri: image.uri } })\n if (image.type === \"url\")\n return ImageInputs.decodeDataUrl(image.url, ADAPTER).pipe(\n Effect.flatMap((decoded) => {\n if (decoded === undefined)\n return Effect.fail(\n ImageInputs.invalid(\n ADAPTER,\n \"Google generateContent does not fetch public image URLs; use bytes, a data URL, or a Gemini file URI\",\n ),\n )\n return Effect.succeed({\n inlineData: { mimeType: decoded.mediaType, data: Encoding.encodeBase64(decoded.data) },\n })\n }),\n )\n return Effect.fail(\n ImageInputs.invalid(ADAPTER, \"Google generateContent requires Gemini file URIs rather than provider file IDs\"),\n )\n}\n\nexport const GoogleImages = {\n model,\n} as const\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { HttpOptions, ProviderID, mergeHttpOptions, type ModelID } from \"../schema/index.js\"\nimport { Gemini } from \"../protocols/gemini.js\"\nimport { GoogleImages } from \"../protocols/google-images.js\"\n\nexport type { GoogleImageOptions } from \"../protocols/google-images.js\"\nexport type GeminiOptionsInput = Gemini.OptionsInput\nexport type GeminiProviderOptionsInput = Gemini.ProviderOptionsInput\n\nexport const id = ProviderID.make(\"google\")\n\nexport const routes = [Gemini.route]\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: Gemini.ProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: Gemini.ProviderOptionsInput\n}\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in options && options.auth) return options.auth\n return Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"GOOGLE_GENERATIVE_AI_API_KEY\"))\n .pipe(Auth.header(\"x-goog-api-key\"))\n}\n\nconst configuredRoute = (input: Config) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return Gemini.route.with({ ...rest, endpoint: { baseURL }, auth: auth(input) })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n const image = (modelID: string | ModelID) =>\n GoogleImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL,\n headers: input.headers,\n http: mergeHttpOptions(input.http === undefined ? undefined : HttpOptions.make(input.http)),\n })\n return {\n id,\n model: (modelID: string | ModelID) => route.model<Gemini.ProviderOptionsInput>({ id: modelID }),\n image,\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, Gemini.ProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "477DDF92A011D5E764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/version.ts"], | ||
| "sourcesContent": [ | ||
| "declare const OPENCODE_VERSION: string\ndeclare const OPENCODE_CHANNEL: string\n\nconst version = typeof OPENCODE_VERSION === \"string\" ? OPENCODE_VERSION : \"local\"\nconst channel = typeof OPENCODE_CHANNEL === \"string\" ? OPENCODE_CHANNEL : \"local\"\n\nexport { version as OPENCODE_VERSION, channel as OPENCODE_CHANNEL }\nexport const OPENCODE_LOCAL = channel === \"local\"\n" | ||
| ], | ||
| "mappings": ";AAGA,IAAM,EAAiD,kBACjD,EAAiD,MAGhD,IAAM,EAAiB", | ||
| "debugId": "11E0D036B3C364E864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+cerebras@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/cerebras/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/cerebras-provider.ts\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/cerebras-provider.ts\nvar cerebrasErrorSchema = z.object({\n message: z.string(),\n type: z.string(),\n param: z.string(),\n code: z.string()\n});\nvar cerebrasErrorStructure = {\n errorSchema: cerebrasErrorSchema,\n errorToMessage: (data) => data.message\n};\nfunction createCerebras(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.cerebras.ai/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"CEREBRAS_API_KEY\",\n description: \"Cerebras API key\"\n })}`,\n ...options.headers\n },\n `ai-sdk/cerebras/${VERSION}`\n );\n const createLanguageModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `cerebras.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: cerebrasErrorStructure,\n supportsStructuredOutputs: true\n });\n };\n const provider = (modelId) => createLanguageModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar cerebras = createCerebras();\nexport {\n VERSION,\n cerebras,\n createCerebras\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": ";4XAaA,IAAI,EAAiB,SAGjB,EAAsB,EAAE,OAAO,CACjC,QAAS,EAAE,OAAO,EAClB,KAAM,EAAE,OAAO,EACf,MAAO,EAAE,OAAO,EAChB,KAAM,EAAE,OAAO,CACjB,CAAC,EACG,EAAyB,CAC3B,YAAa,EACb,eAAgB,CAAC,IAAS,EAAK,OACjC,EACA,SAAS,CAAc,CAAC,EAAU,CAAC,EAAG,CACpC,IAAI,EACJ,IAAM,EAAU,GACb,EAAK,EAAQ,UAAY,KAAO,EAAK,4BACxC,EACM,EAAa,IAAM,EACvB,CACE,cAAe,UAAU,EAAW,CAClC,OAAQ,EAAQ,OAChB,wBAAyB,mBACzB,YAAa,kBACf,CAAC,OACE,EAAQ,OACb,EACA,mBAAmB,GACrB,EACM,EAAsB,CAAC,IACpB,IAAI,EAAkC,EAAS,CACpD,SAAU,gBACV,IAAK,EAAG,UAAW,GAAG,IAAU,IAChC,QAAS,EACT,MAAO,EAAQ,MACf,eAAgB,EAChB,0BAA2B,EAC7B,CAAC,EAEG,EAAW,CAAC,IAAY,EAAoB,CAAO,EAWzD,OAVA,EAAS,qBAAuB,KAChC,EAAS,cAAgB,EACzB,EAAS,KAAO,EAChB,EAAS,eAAiB,CAAC,IAAY,CACrC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,gBAAiB,CAAC,GAErE,EAAS,mBAAqB,EAAS,eACvC,EAAS,WAAa,CAAC,IAAY,CACjC,MAAM,IAAI,EAAiB,CAAE,UAAS,UAAW,YAAa,CAAC,GAE1D,EAET,IAAI,EAAW,EAAe", | ||
| "debugId": "040961A6B315C5AF64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/services/service-config.ts"], | ||
| "sourcesContent": [ | ||
| "import { Global } from \"@opencode-ai/util/global\"\nimport { OPENCODE_CHANNEL, OPENCODE_VERSION } from \"../version\"\nimport { Hash } from \"@opencode-ai/util/hash\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, FileSystem, Option, Schema } from \"effect\"\nimport { randomBytes } from \"crypto\"\nimport path from \"path\"\nimport { selfCommand } from \"../util/process\"\n\n// The CLI's service configuration file, plus the Service.EnsureOptions binding that\n// points the client package's service operations at this CLI: which\n// registration file (by channel), which version, and how to spawn opencode.\n\nexport const Info = Schema.Struct({\n hostname: Schema.optional(Schema.String),\n port: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(65_535))),\n password: Schema.optional(Schema.String),\n env: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n})\nexport type Info = typeof Info.Type\n\nconst keys = [\"hostname\", \"port\", \"password\", \"env\"] as const\ntype Key = (typeof keys)[number]\n\nconst decodeInfo = Schema.decodeUnknownEffect(Schema.fromJsonString(Info))\nconst decodeRegistration = Schema.decodeUnknownEffect(Schema.fromJsonString(Service.Info))\n\nexport function filename(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"dev\" || channel === \"beta\" || channel === \"next\") return \"service.json\"\n return `service-${channel.replace(/[^a-zA-Z0-9._-]/g, \"-\")}.json`\n}\n\nexport function defaultPort(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"dev\" || channel === \"beta\" || channel === \"next\") return 0xc0de\n if (channel === \"local\") return 0xc0df\n return 10_000 + (Number.parseInt(Hash.fast(channel).slice(0, 8), 16) % 50_000)\n}\n\nexport function legacyFilename(channel = OPENCODE_CHANNEL) {\n if (channel === \"latest\" || channel === \"local\") return\n return `service-${Hash.fast(channel)}.json`\n}\n\nexport function versionBelongsToChannel(\n version: string | undefined,\n channel = OPENCODE_CHANNEL,\n installedVersion = OPENCODE_VERSION,\n) {\n if (version === undefined) return false\n if (version === installedVersion) return true\n const prefix = `0.0.0-${channel}-`\n if (!version.startsWith(prefix)) return false\n return /^\\d+(?:\\.\\d+)?$/.test(version.slice(prefix.length))\n}\n\nexport const migrateRegistration = Effect.fnUntraced(function* (\n legacy: string,\n file: string,\n channel = OPENCODE_CHANNEL,\n installedVersion = OPENCODE_VERSION,\n) {\n const fs = yield* FileSystem.FileSystem\n const text = yield* fs.readFileString(legacy).pipe(Effect.option)\n if (Option.isNone(text)) return\n const registration = yield* decodeRegistration(text.value).pipe(Effect.option)\n if (Option.isNone(registration)) return\n if (!versionBelongsToChannel(registration.value.version, channel, installedVersion)) return\n yield* fs.writeFileString(file, text.value, { flag: \"wx\", mode: 0o600 }).pipe(Effect.ignore)\n})\n\nexport const migrateConfig = Effect.fnUntraced(function* (legacy: string, file: string) {\n const fs = yield* FileSystem.FileSystem\n const text = yield* fs.readFileString(legacy).pipe(Effect.option)\n if (Option.isNone(text)) return\n if (Option.isNone(yield* decodeInfo(text.value).pipe(Effect.option))) return\n yield* fs.writeFileString(file, text.value, { flag: \"wx\", mode: 0o600 }).pipe(Effect.ignore)\n})\n\nfunction configKey(key: string): Key {\n if (key === \"hostname\" || key === \"port\" || key === \"password\" || key === \"env\") return key\n throw new Error(`Unknown service config key: ${key}`)\n}\n\nconst paths = Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem\n const global = yield* Global.Service\n const name = filename()\n const legacy = legacyFilename()\n const file = path.join(global.state, name)\n return {\n fs,\n file,\n legacyConfigFile: legacy ? path.join(global.config, legacy) : undefined,\n legacyRegistrationFiles: [\n ...(legacy ? [path.join(global.state, legacy)] : []),\n ...(name !== \"service.json\" && OPENCODE_CHANNEL !== \"local\" ? [path.join(global.state, \"service.json\")] : []),\n ],\n configFile: path.join(global.config, name),\n }\n})\n\nexport const options = Effect.fnUntraced(function* (input: { readonly checkVersion?: boolean } = {}) {\n const { file, legacyRegistrationFiles } = yield* paths\n yield* Effect.forEach(legacyRegistrationFiles, (legacy) => migrateRegistration(legacy, file))\n return {\n file,\n version: input.checkVersion ? OPENCODE_VERSION : undefined,\n env: (yield* read()).env,\n command: [\n ...selfCommand(),\n \"serve\",\n \"--service\",\n ],\n }\n})\n\nexport const read = Effect.fn(\"cli.service-config.read\")(function* () {\n const { fs, configFile, legacyConfigFile } = yield* paths\n if (legacyConfigFile) yield* migrateConfig(legacyConfigFile, configFile)\n return yield* fs.readFileString(configFile).pipe(\n Effect.flatMap(decodeInfo),\n Effect.orElseSucceed(() => ({}) as Info),\n )\n})\n\nconst write = Effect.fn(\"cli.service-config.write\")(function* (value: Info) {\n const { fs, configFile } = yield* paths\n const temp = configFile + \".tmp\"\n yield* fs.makeDirectory(path.dirname(configFile), { recursive: true })\n yield* fs.writeFileString(temp, JSON.stringify(value, null, 2) + \"\\n\", { mode: 0o600 })\n yield* fs.rename(temp, configFile)\n})\n\nexport const password = Effect.fn(\"cli.service-config.password\")(function* (value?: string) {\n const existing = yield* read()\n if (value === undefined && existing.password) return existing.password\n const next = value ?? randomBytes(32).toString(\"base64url\")\n\n // Keep one private credential across server restarts so discovered clients\n // can reconnect without exposing a password flag or environment variable.\n yield* write({ ...existing, password: next })\n return next\n})\n\nexport const get = Effect.fn(\"cli.service-config.get\")(function* (key?: string, name?: string) {\n if (key === undefined) {\n const { password: _password, ...safe } = yield* read()\n return JSON.stringify(safe, null, 2)\n }\n const selected = configKey(key)\n if (selected !== \"env\" && name !== undefined) throw new Error(`Usage: opencode service get ${selected}`)\n switch (selected) {\n case \"hostname\": {\n return (yield* read()).hostname ?? \"\"\n }\n case \"port\": {\n const port = (yield* read()).port\n return port === undefined ? \"\" : String(port)\n }\n case \"password\": {\n return yield* password()\n }\n case \"env\": {\n const env = (yield* read()).env ?? {}\n return name === undefined ? JSON.stringify(env, null, 2) : (env[name] ?? \"\")\n }\n }\n throw new Error(`Unknown service config key: ${key}`)\n})\n\nexport const set = Effect.fn(\"cli.service-config.set\")(function* (key: string, value: string, nestedValue?: string) {\n const selected = configKey(key)\n if (selected !== \"env\" && nestedValue !== undefined)\n throw new Error(`Usage: opencode service set ${selected} <value>`)\n switch (selected) {\n case \"hostname\": {\n yield* Service.stop(yield* options())\n yield* write({ ...(yield* read()), hostname: value })\n return\n }\n case \"port\": {\n const port = Number(value)\n if (!Number.isInteger(port) || port < 1 || port > 65_535) throw new Error(\"Port must be between 1 and 65535\")\n yield* Service.stop(yield* options())\n yield* write({ ...(yield* read()), port })\n return\n }\n case \"password\": {\n yield* Service.stop(yield* options())\n yield* password(value)\n return\n }\n case \"env\": {\n if (nestedValue === undefined) throw new Error(\"Usage: opencode service set env <key> <value>\")\n yield* Service.stop(yield* options())\n const existing = yield* read()\n yield* write({ ...existing, env: { ...existing.env, [value]: nestedValue } })\n return\n }\n }\n})\n\nexport const unset = Effect.fn(\"cli.service-config.unset\")(function* (key: string, name?: string) {\n const selected = configKey(key)\n if (selected !== \"env\" && name !== undefined) throw new Error(`Usage: opencode service unset ${selected}`)\n switch (selected) {\n case \"hostname\": {\n yield* Service.stop(yield* options())\n const { hostname: _hostname, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"port\": {\n yield* Service.stop(yield* options())\n const { port: _port, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"password\": {\n yield* Service.stop(yield* options())\n const { password: _password, ...next } = yield* read()\n yield* write(next)\n return\n }\n case \"env\": {\n if (name === undefined) throw new Error(\"Usage: opencode service unset env <key>\")\n yield* Service.stop(yield* options())\n const existing = yield* read()\n const { [name]: _removed, ...env } = existing.env ?? {}\n const { env: _existingEnv, ...rest } = existing\n yield* write(Object.keys(env).length === 0 ? rest : { ...rest, env })\n return\n }\n }\n})\n\nexport * as ServiceConfig from \"./service-config\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CEA0087C0B186AD464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/services/server-connection.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint, type EnsureOptions } from \"@opencode-ai/client/effect/service\"\nimport { ClientError, isUnauthorizedError, OpenCode } from \"@opencode-ai/client/promise\"\nimport { OPENCODE_VERSION } from \"../version\"\nimport { Effect, Redacted } from \"effect\"\nimport { Env } from \"../env\"\nimport { ServiceConfig } from \"./service-config\"\nimport { Standalone } from \"./standalone\"\n\nexport type Args = {\n readonly server?: string\n readonly standalone?: boolean\n readonly mismatch?: \"replace\" | \"ignore\" | \"error\"\n readonly onStart?: EnsureOptions[\"onStart\"]\n}\n\nexport type Resolved = {\n readonly endpoint: Endpoint\n readonly service?: ReturnType<typeof managedService>\n}\n\nexport const resolve = Effect.fn(\"cli.server-connection.resolve\")(function* (args: Args) {\n if (args.server !== undefined && args.standalone)\n return yield* Effect.fail(new Error(\"--server and --standalone cannot be combined\"))\n if (args.server !== undefined) {\n const password = yield* Env.password\n const endpoint = {\n url: args.server,\n auth: password ? { type: \"basic\" as const, username: \"opencode\", password: Redacted.value(password) } : undefined,\n } satisfies Endpoint\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const health = yield* Effect.tryPromise({\n try: () => client.health.get({ signal: AbortSignal.timeout(5_000) }),\n catch: (cause) => connectError(endpoint, cause),\n })\n if (health.version !== OPENCODE_VERSION)\n process.stderr.write(\n `Warning: Server at ${endpoint.url} has version ${health.version}; this client is ${OPENCODE_VERSION}. Continuing anyway.\\n`,\n )\n return { endpoint } satisfies Resolved\n }\n if (args.standalone) {\n return { endpoint: yield* Standalone.start() } satisfies Resolved\n }\n\n const mismatch = args.mismatch ?? \"ignore\"\n const options = yield* ServiceConfig.options({ checkVersion: mismatch !== \"ignore\" })\n return {\n endpoint: yield* resolveManaged({ ...options, onStart: args.onStart }, mismatch),\n service: managedService(options),\n } satisfies Resolved\n})\n\nfunction managedService(options: EnsureOptions) {\n const reconnectOptions = { ...options, version: undefined }\n return {\n reconnect: () => Service.ensure(reconnectOptions),\n restart: () =>\n Effect.gen(function* () {\n yield* Service.stop(options)\n yield* Service.ensure(reconnectOptions)\n }),\n }\n}\n\nexport const shutdownPersistentPty = Effect.fn(\"cli.server-connection.shutdown-persistent-pty\")(function* (\n options: EnsureOptions,\n) {\n const endpoint = yield* Service.discover({ ...options, version: undefined })\n if (!endpoint) return\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n yield* Effect.tryPromise(() => client.experimental.persistentPty.shutdown())\n})\n\nconst resolveManaged = Effect.fnUntraced(function* (options: EnsureOptions, mismatch: NonNullable<Args[\"mismatch\"]>) {\n if (mismatch === \"replace\") return yield* Service.ensure(options)\n if (mismatch === \"ignore\") return yield* Service.ensure({ ...options, version: undefined })\n\n const compatible = yield* Service.discover(options)\n if (compatible !== undefined) return compatible\n const existing = yield* Service.discover({ ...options, version: undefined })\n if (existing !== undefined)\n return yield* Effect.fail(new Error(\"Background server version does not match this client\"))\n return yield* Service.ensure(options)\n})\n\nfunction connectError(endpoint: Endpoint, cause: unknown) {\n if (isUnauthorizedError(cause)) {\n return new Error(\n endpoint.auth === undefined\n ? `Server at ${endpoint.url} requires a password; set OPENCODE_PASSWORD`\n : `Server at ${endpoint.url} rejected the password`,\n { cause },\n )\n }\n if (cause instanceof ClientError && cause.reason === \"Transport\")\n return new Error(`Could not reach server at ${endpoint.url}`, { cause })\n return new Error(`Server at ${endpoint.url} did not provide a compatible V2 health response`, { cause })\n}\n\nexport * as ServerConnection from \"./server-connection\"\n" | ||
| ], | ||
| "mappings": ";ygBAoBO,IAAM,EAAU,EAAO,GAAG,+BAA+B,EAAE,SAAU,CAAC,EAAY,CACvF,GAAI,EAAK,SAAW,QAAa,EAAK,WACpC,OAAO,MAAO,EAAO,KAAS,MAAM,8CAA8C,CAAC,EACrF,GAAI,EAAK,SAAW,OAAW,CAC7B,IAAM,EAAW,MAAO,EAAI,SACtB,EAAW,CACf,IAAK,EAAK,OACV,KAAM,EAAW,CAAE,KAAM,QAAkB,SAAU,WAAY,SAAU,EAAS,MAAM,CAAQ,CAAE,EAAI,MAC1G,EACM,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAS,MAAO,EAAO,WAAW,CACtC,IAAK,IAAM,EAAO,OAAO,IAAI,CAAE,OAAQ,YAAY,QAAQ,IAAK,CAAE,CAAC,EACnE,MAAO,CAAC,IAAU,EAAa,EAAU,CAAK,CAChD,CAAC,EACD,GAAI,EAAO,UAAY,EACrB,QAAQ,OAAO,MACb,sBAAsB,EAAS,mBAAmB,EAAO,2BAA2B;AAAA,CACtF,EACF,MAAO,CAAE,UAAS,EAEpB,GAAI,EAAK,WACP,MAAO,CAAE,SAAU,MAAO,EAAW,MAAM,CAAE,EAG/C,IAAM,EAAW,EAAK,UAAY,SAC5B,EAAU,MAAO,EAAc,QAAQ,CAAE,aAAc,IAAa,QAAS,CAAC,EACpF,MAAO,CACL,SAAU,MAAO,EAAe,IAAK,EAAS,QAAS,EAAK,OAAQ,EAAG,CAAQ,EAC/E,QAAS,EAAe,CAAO,CACjC,EACD,EAED,SAAS,CAAc,CAAC,EAAwB,CAC9C,IAAM,EAAmB,IAAK,EAAS,QAAS,MAAU,EAC1D,MAAO,CACL,UAAW,IAAM,EAAQ,OAAO,CAAgB,EAChD,QAAS,IACP,EAAO,IAAI,SAAU,EAAG,CACtB,MAAO,EAAQ,KAAK,CAAO,EAC3B,MAAO,EAAQ,OAAO,CAAgB,EACvC,CACL,EAGK,IAAM,EAAwB,EAAO,GAAG,+CAA+C,EAAE,SAAU,CACxG,EACA,CACA,IAAM,EAAW,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,EAC3E,GAAI,CAAC,EAAU,OACf,IAAM,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAC1F,MAAO,EAAO,WAAW,IAAM,EAAO,aAAa,cAAc,SAAS,CAAC,EAC5E,EAEK,EAAiB,EAAO,WAAW,SAAU,CAAC,EAAwB,EAAyC,CACnH,GAAI,IAAa,UAAW,OAAO,MAAO,EAAQ,OAAO,CAAO,EAChE,GAAI,IAAa,SAAU,OAAO,MAAO,EAAQ,OAAO,IAAK,EAAS,QAAS,MAAU,CAAC,EAE1F,IAAM,EAAa,MAAO,EAAQ,SAAS,CAAO,EAClD,GAAI,IAAe,OAAW,OAAO,EAErC,IADiB,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,KAC1D,OACf,OAAO,MAAO,EAAO,KAAS,MAAM,sDAAsD,CAAC,EAC7F,OAAO,MAAO,EAAQ,OAAO,CAAO,EACrC,EAED,SAAS,CAAY,CAAC,EAAoB,EAAgB,CACxD,GAAI,EAAoB,CAAK,EAC3B,OAAW,MACT,EAAS,OAAS,OACd,aAAa,EAAS,iDACtB,aAAa,EAAS,4BAC1B,CAAE,OAAM,CACV,EAEF,GAAI,aAAiB,GAAe,EAAM,SAAW,YACnD,OAAW,MAAM,6BAA6B,EAAS,MAAO,CAAE,OAAM,CAAC,EACzE,OAAW,MAAM,aAAa,EAAS,sDAAuD,CAAE,OAAM,CAAC", | ||
| "debugId": "17E15FE8B0DAACDC64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst k = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = { [k]: \"Endpoint\" }, h = { [k]: d }, i = {}, j = [{ [k]: \"Region\" }];\nconst _data = {\n conditions: [\n [c, [g]],\n [c, j],\n [\"aws.partition\", j, d],\n [e, [{ [k]: \"UseFIPS\" }, b]],\n [e, [{ [k]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [h, \"supportsDualStack\"] }, b]],\n [e, [{ fn: f, argv: [h, \"supportsFIPS\"] }, b]],\n [\"stringEquals\", [{ fn: f, argv: [h, \"name\"] }, \"aws-us-gov\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [g, i],\n [\"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://portal.sso.{Region}.amazonaws.com\", i],\n [\"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 13, 3,\n 1, 4, r + 12,\n 2, 5, r + 12,\n 3, 8, 6,\n 4, 7, r + 11,\n 5, r + 9, r + 10,\n 4, 11, 9,\n 6, 10, r + 8,\n 7, r + 6, r + 7,\n 5, 12, r + 5,\n 6, r + 4, r + 5,\n 3, r + 1, 14,\n 4, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SSOServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SSOServiceException.prototype);\n }\n}\n\nclass InvalidRequestException extends SSOServiceException {\n name = \"InvalidRequestException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidRequestException.prototype);\n }\n}\nclass ResourceNotFoundException extends SSOServiceException {\n name = \"ResourceNotFoundException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nclass TooManyRequestsException extends SSOServiceException {\n name = \"TooManyRequestsException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n }\n}\nclass UnauthorizedException extends SSOServiceException {\n name = \"UnauthorizedException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnauthorizedException.prototype);\n }\n}\n\nconst _ATT = \"AccessTokenType\";\nconst _GRC = \"GetRoleCredentials\";\nconst _GRCR = \"GetRoleCredentialsRequest\";\nconst _GRCRe = \"GetRoleCredentialsResponse\";\nconst _IRE = \"InvalidRequestException\";\nconst _RC = \"RoleCredentials\";\nconst _RNFE = \"ResourceNotFoundException\";\nconst _SAKT = \"SecretAccessKeyType\";\nconst _STT = \"SessionTokenType\";\nconst _TMRE = \"TooManyRequestsException\";\nconst _UE = \"UnauthorizedException\";\nconst _aI = \"accountId\";\nconst _aKI = \"accessKeyId\";\nconst _aT = \"accessToken\";\nconst _ai = \"account_id\";\nconst _c = \"client\";\nconst _e = \"error\";\nconst _ex = \"expiration\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _hH = \"httpHeader\";\nconst _hQ = \"httpQuery\";\nconst _m = \"message\";\nconst _rC = \"roleCredentials\";\nconst _rN = \"roleName\";\nconst _rn = \"role_name\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.sso\";\nconst _sAK = \"secretAccessKey\";\nconst _sT = \"sessionToken\";\nconst _xasbt = \"x-amz-sso_bearer_token\";\nconst n0 = \"com.amazonaws.sso\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SSOServiceException$ = [-3, _s, \"SSOServiceException\", 0, [], []];\n_s_registry.registerError(SSOServiceException$, SSOServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar InvalidRequestException$ = [-3, n0, _IRE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidRequestException$, InvalidRequestException);\nvar ResourceNotFoundException$ = [-3, n0, _RNFE,\n { [_e]: _c, [_hE]: 404 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException);\nvar TooManyRequestsException$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_m],\n [0]\n];\nn0_registry.registerError(TooManyRequestsException$, TooManyRequestsException);\nvar UnauthorizedException$ = [-3, n0, _UE,\n { [_e]: _c, [_hE]: 401 },\n [_m],\n [0]\n];\nn0_registry.registerError(UnauthorizedException$, UnauthorizedException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar AccessTokenType = [0, n0, _ATT, 8, 0];\nvar SecretAccessKeyType = [0, n0, _SAKT, 8, 0];\nvar SessionTokenType = [0, n0, _STT, 8, 0];\nvar GetRoleCredentialsRequest$ = [3, n0, _GRCR,\n 0,\n [_rN, _aI, _aT],\n [[0, { [_hQ]: _rn }], [0, { [_hQ]: _ai }], [() => AccessTokenType, { [_hH]: _xasbt }]], 3\n];\nvar GetRoleCredentialsResponse$ = [3, n0, _GRCRe,\n 0,\n [_rC],\n [[() => RoleCredentials$, 0]]\n];\nvar RoleCredentials$ = [3, n0, _RC,\n 0,\n [_aKI, _sAK, _sT, _ex],\n [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1]\n];\nvar GetRoleCredentials$ = [9, n0, _GRC,\n { [_h]: [\"GET\", \"/federation/credentials\", 200] }, () => GetRoleCredentialsRequest$, () => GetRoleCredentialsResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.sso\",\n errorTypeRegistries,\n version: \"2019-06-10\",\n serviceTarget: \"SWBPortalService\",\n },\n serviceId: config?.serviceId ?? \"SSO\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SSOClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSSOHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"SWBPortalService\", \"SSOClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass GetRoleCredentialsCommand extends command(_ep0, _mw0, \"GetRoleCredentials\", GetRoleCredentials$) {\n}\n\nconst commands = {\n GetRoleCredentialsCommand,\n};\nclass SSO extends SSOClient {\n}\ncreateAggregatedClient(commands, SSO);\n\nexports.GetRoleCredentials$ = GetRoleCredentials$;\nexports.GetRoleCredentialsCommand = GetRoleCredentialsCommand;\nexports.GetRoleCredentialsRequest$ = GetRoleCredentialsRequest$;\nexports.GetRoleCredentialsResponse$ = GetRoleCredentialsResponse$;\nexports.InvalidRequestException = InvalidRequestException;\nexports.InvalidRequestException$ = InvalidRequestException$;\nexports.ResourceNotFoundException = ResourceNotFoundException;\nexports.ResourceNotFoundException$ = ResourceNotFoundException$;\nexports.RoleCredentials$ = RoleCredentials$;\nexports.SSO = SSO;\nexports.SSOClient = SSOClient;\nexports.SSOServiceException = SSOServiceException;\nexports.SSOServiceException$ = SSOServiceException$;\nexports.TooManyRequestsException = TooManyRequestsException;\nexports.TooManyRequestsException$ = TooManyRequestsException$;\nexports.UnauthorizedException = UnauthorizedException;\nexports.UnauthorizedException$ = UnauthorizedException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "5CC3C7A87466530364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "98EC72F42AD2CAC864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/add.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\"\nimport { Effect } from \"effect\"\nimport { applyEdits, modify, parse, type ParseError } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Npm } from \"@opencode-ai/util/npm\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { resolveConfigPath } from \"../mcp/add\"\nimport { Config } from \"../../../config\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.add,\n Effect.fn(\"cli.plugin.add\")(function* (input) {\n if (!(yield* Effect.promise(() => Npm.isRegistryPackage(input.package))))\n return yield* Effect.fail(\n new Error(\"Plugin target must be an npm registry package name, version, tag, or semver range\"),\n )\n const npm = yield* Npm.Service\n const installed = yield* npm.add(input.package, { subpaths: [\"server\", \"\"] })\n const tui = yield* npm.resolve(input.package, { subpaths: [\"tui\"] })\n const target = configurationTarget(installed.entrypoint, tui.entrypoint)\n if (!target)\n return yield* Effect.fail(new Error(`Plugin package has no server or TUI entrypoint: ${input.package}`))\n\n if (target === \"server\") {\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(global.config))\n const changed = yield* Effect.promise(() => writePluginConfig(configPath, input.package))\n process.stdout.write(\n changed\n ? `Plugin \"${input.package}\" installed and added to ${configPath}${EOL}`\n : `Plugin \"${input.package}\" is already configured in ${configPath}${EOL}`,\n )\n return\n }\n\n const config = yield* Config.Service\n yield* config.update((draft) => {\n if (configured(draft.plugins, input.package)) return\n draft.plugins = [...(draft.plugins ?? []), input.package]\n })\n process.stdout.write(`TUI plugin \"${input.package}\" installed and added to ${config.path}${EOL}`)\n }),\n)\n\nexport function configurationTarget(server?: string, tui?: string) {\n if (server) return \"server\" as const\n if (tui) return \"tui\" as const\n}\n\nexport async function writePluginConfig(configPath: string, spec: string) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return \"{}\"\n throw error\n })\n const errors: ParseError[] = []\n const config: unknown = parse(text, errors, { allowTrailingComma: true })\n if (errors.length || typeof config !== \"object\" || config === null || Array.isArray(config))\n throw new Error(`Invalid global configuration: ${configPath}`)\n const plugins = \"plugins\" in config ? config.plugins : undefined\n if (plugins !== undefined && !Array.isArray(plugins)) throw new Error(`Invalid plugins configuration: ${configPath}`)\n if (configured(plugins, spec)) return false\n\n const updated = applyEdits(\n text,\n modify(text, [\"plugins\"], [...(plugins ?? []), spec], { formattingOptions: { tabSize: 2, insertSpaces: true } }),\n )\n await mkdir(path.dirname(configPath), { recursive: true })\n const temporary = configPath + \".tmp\"\n await writeFile(temporary, updated.endsWith(\"\\n\") ? updated : updated + \"\\n\", { mode: 0o600 })\n await rename(temporary, configPath)\n return true\n}\n\nfunction configured(plugins: readonly unknown[] | undefined, spec: string) {\n return plugins?.some(\n (entry) =>\n entry === spec || (typeof entry === \"object\" && entry !== null && \"package\" in entry && entry.package === spec),\n )\n}\n" | ||
| ], | ||
| "mappings": ";8tBAAA,cAAS,WACT,oBACA,gBAAS,cAAO,YAAU,eAAQ,oBAUlC,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,IAClC,EAAO,GAAG,gBAAgB,EAAE,SAAU,CAAC,EAAO,CAC5C,GAAI,EAAE,MAAO,EAAO,QAAQ,IAAM,EAAI,kBAAkB,EAAM,OAAO,CAAC,GACpE,OAAO,MAAO,EAAO,KACf,MAAM,mFAAmF,CAC/F,EACF,IAAM,EAAM,MAAO,EAAI,QACjB,EAAY,MAAO,EAAI,IAAI,EAAM,QAAS,CAAE,SAAU,CAAC,SAAU,EAAE,CAAE,CAAC,EACtE,EAAM,MAAO,EAAI,QAAQ,EAAM,QAAS,CAAE,SAAU,CAAC,KAAK,CAAE,CAAC,EAC7D,EAAS,EAAoB,EAAU,WAAY,EAAI,UAAU,EACvE,GAAI,CAAC,EACH,OAAO,MAAO,EAAO,KAAS,MAAM,mDAAmD,EAAM,SAAS,CAAC,EAEzG,GAAI,IAAW,SAAU,CACvB,IAAM,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAO,MAAM,CAAC,EACzE,EAAU,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAY,EAAM,OAAO,CAAC,EACxF,QAAQ,OAAO,MACb,EACI,WAAW,EAAM,mCAAmC,IAAa,IACjE,WAAW,EAAM,qCAAqC,IAAa,GACzE,EACA,OAGF,IAAM,EAAS,MAAO,EAAO,QAC7B,MAAO,EAAO,OAAO,CAAC,IAAU,CAC9B,GAAI,EAAW,EAAM,QAAS,EAAM,OAAO,EAAG,OAC9C,EAAM,QAAU,CAAC,GAAI,EAAM,SAAW,CAAC,EAAI,EAAM,OAAO,EACzD,EACD,QAAQ,OAAO,MAAM,eAAe,EAAM,mCAAmC,EAAO,OAAO,GAAK,EACjG,CACH,EAEO,SAAS,CAAmB,CAAC,EAAiB,EAAc,CACjE,GAAI,EAAQ,MAAO,SACnB,GAAI,EAAK,MAAO,MAGlB,eAAsB,CAAiB,CAAC,EAAoB,EAAc,CACxE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,MAAO,KACtG,MAAM,EACP,EACK,EAAuB,CAAC,EACxB,EAAkB,EAAM,EAAM,EAAQ,CAAE,mBAAoB,EAAK,CAAC,EACxE,GAAI,EAAO,QAAU,OAAO,IAAW,UAAY,IAAW,MAAQ,MAAM,QAAQ,CAAM,EACxF,MAAU,MAAM,iCAAiC,GAAY,EAC/D,IAAM,EAAU,YAAa,EAAS,EAAO,QAAU,OACvD,GAAI,IAAY,QAAa,CAAC,MAAM,QAAQ,CAAO,EAAG,MAAU,MAAM,kCAAkC,GAAY,EACpH,GAAI,EAAW,EAAS,CAAI,EAAG,MAAO,GAEtC,IAAM,EAAU,EACd,EACA,EAAO,EAAM,CAAC,SAAS,EAAG,CAAC,GAAI,GAAW,CAAC,EAAI,CAAI,EAAG,CAAE,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CAAE,CAAC,CACjH,EACA,MAAM,EAAM,EAAK,QAAQ,CAAU,EAAG,CAAE,UAAW,EAAK,CAAC,EACzD,IAAM,EAAY,EAAa,OAG/B,OAFA,MAAM,EAAU,EAAW,EAAQ,SAAS;AAAA,CAAI,EAAI,EAAU,EAAU;AAAA,EAAM,CAAE,KAAM,GAAM,CAAC,EAC7F,MAAM,EAAO,EAAW,CAAU,EAC3B,GAGT,SAAS,CAAU,CAAC,EAAyC,EAAc,CACzE,OAAO,GAAS,KACd,CAAC,IACC,IAAU,GAAS,OAAO,IAAU,UAAY,IAAU,OAAQ,YAAa,IAAS,EAAM,UAAY,CAC9G", | ||
| "debugId": "874DC6BDDF7D955D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/util/io.ts", "src/session-target.ts"], | ||
| "sourcesContent": [ | ||
| "import { text } from \"node:stream/consumers\"\n\nexport function readStdin() {\n return text(process.stdin)\n}\n", | ||
| "import type { LocationGetOutput, ModelRef, OpenCodeClient, SessionInfo } from \"@opencode-ai/client/promise\"\nimport { Model } from \"@opencode-ai/schema/model\"\n\nconst SESSION_PAGE_LIMIT = 50\n\nexport type SessionTarget = {\n session: SessionInfo\n location: LocationGetOutput\n model: ModelRef | undefined\n agent: string | undefined\n resume: boolean\n}\n\nexport type SessionTargetPreparation = (input: {\n client: OpenCodeClient\n location: LocationGetOutput\n session: SessionInfo | undefined\n model: ModelRef | undefined\n agent: string | undefined\n signal?: AbortSignal\n}) => Promise<{ model: ModelRef | undefined; agent: string | undefined }>\n\nexport class SessionTargetMutationError extends Error {\n override readonly name = \"SessionTargetMutationError\"\n\n constructor(cause: unknown) {\n super(cause instanceof Error ? cause.message : \"Session target mutation failed\", { cause })\n }\n}\n\nexport async function resolveSessionTarget(input: {\n client: OpenCodeClient\n location?: { directory?: string; workspace?: string }\n continue?: boolean\n session?: string\n fork?: boolean\n model?: ModelRef\n agent?: string\n environment?: Readonly<Record<string, string>>\n prepare: SessionTargetPreparation\n signal?: AbortSignal\n}): Promise<SessionTarget> {\n const selection = await selectSession(input)\n const selected = selection.session\n const location =\n selection.location ??\n (await resolveLocation(\n input.client,\n selected ? { directory: selected.location.directory, workspace: selected.location.workspaceID } : input.location,\n input.signal,\n ))\n const prepared = await input.prepare({\n client: input.client,\n location,\n session: selected,\n model: input.model ?? selected?.model,\n agent: input.agent ?? selected?.agent,\n signal: input.signal,\n })\n const session =\n selected ??\n (await input.client.session\n .create(\n {\n agent: prepared.agent,\n model: prepared.model,\n location: { directory: location.directory, workspaceID: location.workspaceID },\n },\n ...requestOptions(input.signal),\n )\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n }))\n if (input.environment !== undefined && location.workspaceID === undefined)\n await input.client.session\n .environment({ sessionID: session.id, variables: input.environment }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n return {\n session,\n location,\n model: prepared.model,\n agent: prepared.agent ?? session.agent,\n resume: selected !== undefined,\n }\n}\n\nexport function parseSessionTargetModel(value?: string): ModelRef | undefined {\n if (!value) return\n const model = Model.Ref.parse(value)\n return { providerID: model.providerID, id: model.id, variant: model.variant }\n}\n\nasync function selectSession(input: {\n client: OpenCodeClient\n location?: { directory?: string; workspace?: string }\n continue?: boolean\n session?: string\n fork?: boolean\n signal?: AbortSignal\n}) {\n const explicit = input.session\n ? await input.client.session.get({ sessionID: input.session }, ...requestOptions(input.signal)).catch((error) => {\n if (error && typeof error === \"object\" && Reflect.get(error, \"_tag\") === \"SessionNotFoundError\")\n return undefined\n throw error\n })\n : undefined\n if (input.session && !explicit) throw new Error(\"Session not found\")\n if (explicit)\n return {\n session: input.fork\n ? await input.client.session\n .fork({ sessionID: explicit.id, boundary: { type: \"through\" } }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n : explicit,\n }\n if (!input.continue) return { session: undefined }\n\n const location = await resolveLocation(input.client, input.location, input.signal)\n const selected = await latestSession(input.client, location, undefined, input.signal)\n if (!selected) return { session: undefined, location }\n return {\n session: input.fork\n ? await input.client.session\n .fork({ sessionID: selected.id, boundary: { type: \"through\" } }, ...requestOptions(input.signal))\n .catch((error) => {\n throw new SessionTargetMutationError(error)\n })\n : selected,\n }\n}\n\nasync function latestSession(\n client: OpenCodeClient,\n location: LocationGetOutput,\n cursor?: string,\n signal?: AbortSignal,\n): Promise<SessionInfo | undefined> {\n const page = await client.session.list(\n {\n directory: location.directory,\n workspace: location.workspaceID,\n parentID: null,\n limit: SESSION_PAGE_LIMIT,\n order: \"desc\",\n ...(cursor ? { cursor } : {}),\n },\n ...requestOptions(signal),\n )\n const selected = page.data.find(\n (session) =>\n session.location.directory === location.directory && session.location.workspaceID === location.workspaceID,\n )\n if (selected) return selected\n if (!page.cursor.next || page.data.length === 0) return\n return latestSession(client, location, page.cursor.next, signal)\n}\n\nfunction resolveLocation(\n client: OpenCodeClient,\n location?: { directory?: string; workspace?: string },\n signal?: AbortSignal,\n) {\n if (!location && !signal) return client.location.get()\n if (!location) return client.location.get(undefined, { signal })\n return client.location.get({ location }, ...requestOptions(signal))\n}\n\nfunction requestOptions(signal?: AbortSignal): [] | [{ signal: AbortSignal }] {\n return signal ? [{ signal }] : []\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "43104C8DC63C750264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/gemini.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option, Schema } from \"effect\"\nimport { Tool } from \"@opencode-ai/schema/tool\"\nimport { Route } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport {\n LLMEvent,\n Usage,\n type FinishReason,\n type JsonSchema,\n type LLMRequest,\n type MediaPart,\n type ProviderMetadata,\n type TextPart,\n type ToolCallPart,\n type ToolDefinition,\n} from \"../schema/index.js\"\nimport { JsonObject, optionalArray, optionalNull, ProviderShared } from \"./shared.js\"\nimport { GeminiToolSchema } from \"./utils/gemini-tool-schema.js\"\nimport { Lifecycle } from \"./utils/lifecycle.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\n\nconst ADAPTER = \"gemini\"\n// Google documents this sentinel for replaying Gemini 3 function calls after their original signature was lost.\nconst SKIP_THOUGHT_SIGNATURE_VALIDATOR = \"skip_thought_signature_validator\"\nexport const DEFAULT_BASE_URL = \"https://generativelanguage.googleapis.com/v1beta\"\n\n// Gemini 3 rejects replayed function calls without a thought signature. Google's SDKs avoid that in normal chats by\n// retaining complete model responses, but OpenCode reconstructs durable history and may encounter an unsigned call\n// from an older or external session. Model IDs are open-ended, so unknown Gemini aliases inherit current behavior.\nconst requiresThoughtSignatureFallback = (modelID: string) => {\n if (!/(^|\\/)gemini-/i.test(modelID)) return false\n if (/(^|\\/)gemini-(?:1|2)(?:[.-]|$)/i.test(modelID)) return false\n if (/(^|\\/)gemini-pro(?:-vision)?$/i.test(modelID)) return false\n return !/(^|\\/)gemini-robotics-er-1\\.5(?:[.-]|$)/i.test(modelID)\n}\n\n// Gemini 3 accepts media nested inside function responses; matched Gemini 2.5 variants reject it,\n// so their tool-result attachments lower as a separate user turn instead.\nconst routesLegacyToolMedia = (modelID: string) => /gemini-2[.-]5(?:[.-]|$)/i.test(modelID)\n\n// Blacklist: Gemini 1.x/2.x ignore or reject explicit function call ids.\n// Every other model id (Gemini 3+, gemma, anything unrecognized) gets them.\nconst omitsFunctionCallIds = (modelID: string) => {\n const match = /^gemini(?:-live)?-(\\d+)/i.exec(modelID)\n return match !== null && Number(match[1]) < 3\n}\n\nexport interface OptionsInput {\n readonly [key: string]: unknown\n readonly cachedContent?: string\n readonly safetySettings?: ReadonlyArray<{\n readonly category:\n | \"HARM_CATEGORY_UNSPECIFIED\"\n | \"HARM_CATEGORY_HATE_SPEECH\"\n | \"HARM_CATEGORY_DANGEROUS_CONTENT\"\n | \"HARM_CATEGORY_HARASSMENT\"\n | \"HARM_CATEGORY_SEXUALLY_EXPLICIT\"\n | \"HARM_CATEGORY_CIVIC_INTEGRITY\"\n | (string & {})\n readonly threshold:\n | \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\"\n | \"BLOCK_LOW_AND_ABOVE\"\n | \"BLOCK_MEDIUM_AND_ABOVE\"\n | \"BLOCK_ONLY_HIGH\"\n | \"BLOCK_NONE\"\n | \"OFF\"\n | (string & {})\n }>\n readonly serviceTier?: \"standard\" | \"flex\" | \"priority\" | (string & {})\n readonly thinkingConfig?: {\n readonly thinkingBudget?: number\n readonly includeThoughts?: boolean\n readonly thinkingLevel?: \"minimal\" | \"low\" | \"medium\" | \"high\" | (string & {})\n }\n}\n\nexport type ProviderOptionsInput = OptionsInput\n\n// =============================================================================\n// Request Body Schema\n// =============================================================================\n// Gemini is known to send explicit `null` for optional streaming fields\n// (usage counts, flags, whole subtrees), so every response-side optional uses\n// `optionalNull` instead of bare `Schema.optional`. The same part/content\n// schemas lower the outbound request body; encoding drops `undefined` keys,\n// so the shared schemas stay safe there.\nconst GeminiTextPart = Schema.Struct({\n text: Schema.String,\n thought: optionalNull(Schema.Boolean),\n thoughtSignature: optionalNull(Schema.String),\n})\n\nconst GeminiInlineDataPart = Schema.Struct({\n inlineData: Schema.Struct({\n mimeType: Schema.String,\n data: Schema.String,\n }),\n})\ntype GeminiInlineDataPart = Schema.Schema.Type<typeof GeminiInlineDataPart>\n\nconst GeminiFunctionCallPart = Schema.Struct({\n functionCall: Schema.Struct({\n id: optionalNull(Schema.String),\n name: Schema.String,\n args: Schema.optional(Schema.Unknown),\n }),\n thoughtSignature: optionalNull(Schema.String),\n})\n\nconst GeminiFunctionResponsePart = Schema.Struct({\n functionResponse: Schema.Struct({\n id: Schema.optional(Schema.String),\n name: Schema.String,\n response: Schema.Unknown,\n parts: Schema.optional(Schema.Array(GeminiInlineDataPart)),\n }),\n})\n\nconst GeminiContentPart = Schema.Union([\n GeminiTextPart,\n GeminiInlineDataPart,\n GeminiFunctionCallPart,\n GeminiFunctionResponsePart,\n])\nconst decodeGeminiContentPart = Schema.decodeUnknownOption(GeminiContentPart)\n\nconst GeminiContent = Schema.Struct({\n role: optionalNull(Schema.Literals([\"user\", \"model\"])),\n parts: optionalNull(Schema.Array(GeminiContentPart)),\n})\ntype GeminiContent = Schema.Schema.Type<typeof GeminiContent>\n\nconst GeminiResponseContent = Schema.Struct({\n role: optionalNull(Schema.Literals([\"user\", \"model\"])),\n parts: optionalNull(Schema.Array(Schema.Unknown)),\n})\n\nconst GeminiSystemInstruction = Schema.Struct({\n parts: Schema.Array(Schema.Struct({ text: Schema.String })),\n})\n\nconst GeminiFunctionDeclaration = Schema.Struct({\n name: Schema.String,\n description: Schema.String,\n parameters: Schema.optional(JsonObject),\n})\n\nconst GeminiTool = Schema.Struct({\n functionDeclarations: Schema.Array(GeminiFunctionDeclaration),\n})\n\nconst GeminiToolConfig = Schema.Struct({\n functionCallingConfig: Schema.Struct({\n mode: Schema.Literals([\"AUTO\", \"NONE\", \"ANY\"]),\n allowedFunctionNames: optionalArray(Schema.String),\n }),\n})\n\nconst GeminiThinkingConfig = Schema.Struct({\n thinkingBudget: Schema.optional(Schema.Number),\n includeThoughts: Schema.optional(Schema.Boolean),\n thinkingLevel: Schema.optional(Schema.String),\n})\n\nconst GeminiSafetySetting = Schema.Struct({\n category: Schema.String,\n threshold: Schema.String,\n})\n\nconst GeminiGenerationConfig = Schema.Struct({\n maxOutputTokens: Schema.optional(Schema.Number),\n temperature: Schema.optional(Schema.Number),\n topP: Schema.optional(Schema.Number),\n topK: Schema.optional(Schema.Number),\n frequencyPenalty: Schema.optional(Schema.Number),\n presencePenalty: Schema.optional(Schema.Number),\n seed: Schema.optional(Schema.Number),\n stopSequences: optionalArray(Schema.String),\n thinkingConfig: Schema.optional(GeminiThinkingConfig),\n})\n\nconst GeminiBodyFields = {\n cachedContent: Schema.optional(Schema.String),\n contents: Schema.Array(GeminiContent),\n labels: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n safetySettings: optionalArray(GeminiSafetySetting),\n serviceTier: Schema.optional(Schema.String),\n systemInstruction: Schema.optional(GeminiSystemInstruction),\n tools: optionalArray(GeminiTool),\n toolConfig: Schema.optional(GeminiToolConfig),\n generationConfig: Schema.optional(GeminiGenerationConfig),\n}\nconst GeminiBody = Schema.Struct(GeminiBodyFields)\nexport type GeminiBody = Schema.Schema.Type<typeof GeminiBody>\n\nconst GeminiUsage = Schema.Struct({\n cachedContentTokenCount: optionalNull(Schema.Number),\n thoughtsTokenCount: optionalNull(Schema.Number),\n promptTokenCount: optionalNull(Schema.Number),\n candidatesTokenCount: optionalNull(Schema.Number),\n totalTokenCount: optionalNull(Schema.Number),\n})\ntype GeminiUsage = Schema.Schema.Type<typeof GeminiUsage>\n\nconst GeminiCandidate = Schema.Struct({\n content: optionalNull(GeminiResponseContent),\n finishReason: optionalNull(Schema.String),\n})\n\nconst GeminiPromptFeedback = Schema.StructWithRest(\n Schema.Struct({\n blockReason: optionalNull(Schema.String),\n blockReasonMessage: optionalNull(Schema.String),\n safetyRatings: optionalNull(Schema.Unknown),\n }),\n [Schema.Record(Schema.String, Schema.Unknown)],\n)\ntype GeminiPromptFeedback = Schema.Schema.Type<typeof GeminiPromptFeedback>\n\nconst GeminiEvent = Schema.Struct({\n candidates: optionalNull(Schema.Array(GeminiCandidate)),\n promptFeedback: optionalNull(GeminiPromptFeedback),\n usageMetadata: optionalNull(GeminiUsage),\n})\ntype GeminiEvent = Schema.Schema.Type<typeof GeminiEvent>\n\ninterface ParserState {\n readonly route: string\n readonly finishReason?: string\n readonly hasToolCalls: boolean\n readonly promptFeedback?: GeminiPromptFeedback\n readonly usage?: Usage\n readonly lifecycle: Lifecycle.State\n readonly reasoningSignature?: string\n readonly textSignature?: string\n readonly seenCallIds?: ReadonlySet<string>\n}\n\n// =============================================================================\n// Tool Schema Conversion\n// =============================================================================\n// Tool-schema conversion has two distinct concerns:\n//\n// 1. Sanitize — fix common authoring mistakes Gemini rejects: integer/number\n// enums (must be strings), `required` entries that don't match a property,\n// untyped arrays (`items` must be present), and `properties`/`required`\n// keys on non-object scalars. Mirrors OpenCode's historical Gemini rules.\n//\n// 2. Project — lossy mapping from JSON Schema to Gemini's schema dialect:\n// drop empty root parameter schemas while preserving nested empty objects,\n// expand type arrays into `anyOf`, derive `nullable: true` from null members,\n// coerce `const` to `[const]` enum, recurse properties/items, and propagate\n// only an allowlisted set of keys (description, required, format, type,\n// nullable, enum, properties, items, allOf, anyOf, oneOf, minLength).\n// Anything outside the allowlist (e.g. `additionalProperties`, `$ref`) is\n// silently dropped.\n//\n// Sanitize runs first, then project. The implementation lives in\n// `utils/gemini-tool-schema` so this protocol keeps the same shape as the other\n// provider protocols.\n\n// =============================================================================\n// Request Lowering\n// =============================================================================\nconst lowerTool = (tool: ToolDefinition, inputSchema: JsonSchema) => ({\n name: tool.name,\n description: tool.description,\n parameters: GeminiToolSchema.convert(inputSchema),\n})\n\nconst lowerToolConfig = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>) =>\n ProviderShared.matchToolChoice(\"Gemini\", toolChoice, {\n auto: () => ({ functionCallingConfig: { mode: \"AUTO\" as const } }),\n none: () => ({ functionCallingConfig: { mode: \"NONE\" as const } }),\n required: () => ({ functionCallingConfig: { mode: \"ANY\" as const } }),\n tool: (name) => ({ functionCallingConfig: { mode: \"ANY\" as const, allowedFunctionNames: [name] } }),\n })\n\nconst lowerUserPart = Effect.fn(\"Gemini.lowerUserPart\")(function* (part: TextPart | MediaPart) {\n if (part.type === \"text\") return { text: part.text }\n const media = ProviderShared.normalizeMedia(part)\n return { inlineData: { mimeType: media.mime, data: media.base64 } }\n})\n\nconst googleMetadata = (metadata: Record<string, unknown>): ProviderMetadata => ({ google: metadata })\n\nconst thoughtSignature = (providerMetadata: ProviderMetadata | undefined) => {\n const google = providerMetadata?.google\n return ProviderShared.isRecord(google) && typeof google.thoughtSignature === \"string\"\n ? google.thoughtSignature\n : undefined\n}\n\nconst lowerToolCall = (part: ToolCallPart, omitIds: boolean) => ({\n functionCall: { ...(omitIds ? {} : { id: part.id }), name: part.name, args: part.input },\n thoughtSignature: thoughtSignature(part.providerMetadata),\n})\n\nconst lowerMessages = Effect.fn(\"Gemini.lowerMessages\")(function* (request: LLMRequest) {\n const contents: GeminiContent[] = []\n const omitCallIds = omitsFunctionCallIds(request.model.id)\n const legacyToolMedia = routesLegacyToolMedia(request.model.id)\n let pendingMedia: GeminiInlineDataPart[] | undefined\n const flushMedia = () => {\n if (!pendingMedia) return\n contents.push({ role: \"user\", parts: [{ text: \"Attached media from tool result:\" }, ...pendingMedia] })\n pendingMedia = undefined\n }\n\n for (const message of request.messages) {\n if (message.role !== \"tool\") flushMedia()\n if (message.role === \"system\") {\n const part = yield* ProviderShared.wrappedSystemUpdate(\"Gemini\", message)\n const previous = contents.at(-1)\n // Gemini rejects a continuation whose function-response turn carries extra\n // parts, so an update after a tool result starts its own user turn.\n if (previous?.role === \"user\" && !(previous.parts ?? []).some((item) => \"functionResponse\" in item))\n contents[contents.length - 1] = { role: \"user\", parts: [...(previous.parts ?? []), { text: part.text }] }\n else contents.push({ role: \"user\", parts: [{ text: part.text }] })\n continue\n }\n\n if (message.role === \"user\") {\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"media\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"user\", [\"text\", \"media\"])\n parts.push(yield* lowerUserPart(part))\n }\n contents.push({ role: \"user\", parts })\n continue\n }\n\n if (message.role === \"assistant\") {\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n // Parallel Gemini 3 calls may carry one signature on the first call; unsigned sibling calls are valid.\n let hasSignedToolCall = false\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"reasoning\", \"tool-call\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"assistant\", [\"text\", \"reasoning\", \"tool-call\"])\n if (part.type === \"text\") {\n parts.push({ text: part.text, thoughtSignature: thoughtSignature(part.providerMetadata) })\n continue\n }\n if (part.type === \"reasoning\") {\n parts.push({ text: part.text, thought: true, thoughtSignature: thoughtSignature(part.providerMetadata) })\n continue\n }\n if (part.type === \"tool-call\") {\n const lowered = lowerToolCall(part, omitCallIds)\n const signature = lowered.thoughtSignature\n parts.push({\n ...lowered,\n thoughtSignature:\n signature ??\n (requiresThoughtSignatureFallback(request.model.id) && !hasSignedToolCall\n ? SKIP_THOUGHT_SIGNATURE_VALIDATOR\n : undefined),\n })\n if (signature !== undefined) hasSignedToolCall = true\n continue\n }\n }\n contents.push({ role: \"model\", parts })\n continue\n }\n\n const parts: Array<Schema.Schema.Type<typeof GeminiContentPart>> = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"tool-result\"]))\n return yield* ProviderShared.unsupportedContent(\"Gemini\", \"tool\", [\"tool-result\"])\n if (part.result.type !== \"content\") {\n parts.push({\n functionResponse: {\n ...(omitCallIds ? {} : { id: part.id }),\n name: part.name,\n response: {\n name: part.name,\n content: ProviderShared.toolResultText(part),\n },\n },\n })\n continue\n }\n const content: ReadonlyArray<Tool.Content> = part.result.value\n const text = content.filter((item) => item.type === \"text\").map((item) => item.text)\n const media: GeminiInlineDataPart[] = []\n for (const item of content) {\n if (item.type === \"text\") continue\n const value = ProviderShared.normalizeToolFile(item)\n media.push({ inlineData: { mimeType: value.mime, data: value.base64 } })\n }\n if (legacyToolMedia && media.length > 0) (pendingMedia ??= []).push(...media)\n parts.push({\n functionResponse: {\n ...(omitCallIds ? {} : { id: part.id }),\n name: part.name,\n response: {\n name: part.name,\n content: text.join(\"\\n\"),\n },\n parts: legacyToolMedia || media.length === 0 ? undefined : media,\n },\n })\n }\n // Gemini requires every response to a parallel call batch in one user turn,\n // so consecutive tool results join the open function-response turn.\n const previous = contents.at(-1)\n if (previous?.role === \"user\" && (previous.parts ?? []).some((item) => \"functionResponse\" in item))\n contents[contents.length - 1] = { role: \"user\", parts: [...(previous.parts ?? []), ...parts] }\n else contents.push({ role: \"user\", parts })\n }\n\n flushMedia()\n return contents\n})\n\nconst resolveOptions = (request: LLMRequest) => {\n const input = request.providerOptions\n const value = input?.thinkingConfig\n const thinkingConfig = {\n thinkingBudget:\n ProviderShared.isRecord(value) && typeof value.thinkingBudget === \"number\" ? value.thinkingBudget : undefined,\n includeThoughts:\n ProviderShared.isRecord(value) && typeof value.includeThoughts === \"boolean\"\n ? value.includeThoughts\n : ProviderShared.isRecord(value)\n ? true\n : undefined,\n thinkingLevel:\n ProviderShared.isRecord(value) && typeof value.thinkingLevel === \"string\" ? value.thinkingLevel : undefined,\n }\n return {\n cachedContent: typeof input?.cachedContent === \"string\" ? input.cachedContent : undefined,\n safetySettings: mapSafetySettings(input?.safetySettings),\n serviceTier: typeof input?.serviceTier === \"string\" ? input.serviceTier : undefined,\n thinkingConfig: Object.values(thinkingConfig).some((item) => item !== undefined) ? thinkingConfig : undefined,\n }\n}\n\nfunction mapSafetySettings(value: unknown) {\n if (!Array.isArray(value)) return undefined\n const settings = value.flatMap((item) =>\n ProviderShared.isRecord(item) && typeof item.category === \"string\" && typeof item.threshold === \"string\"\n ? [{ category: item.category, threshold: item.threshold }]\n : [],\n )\n return settings\n}\n\nconst fromRequest = Effect.fn(\"Gemini.fromRequest\")(function* (request: LLMRequest) {\n const hasTools = request.tools.length > 0\n const generation = request.generation\n const options = resolveOptions(request)\n const toolSchemaCompatibility = request.model.compatibility?.toolSchema\n const generationConfig = {\n maxOutputTokens: generation?.maxTokens,\n temperature: generation?.temperature,\n topP: generation?.topP,\n topK: generation?.topK,\n frequencyPenalty: generation?.frequencyPenalty,\n presencePenalty: generation?.presencePenalty,\n seed: generation?.seed,\n stopSequences: generation?.stop,\n thinkingConfig: options.thinkingConfig,\n }\n\n return {\n cachedContent: options.cachedContent,\n contents: yield* lowerMessages(request),\n safetySettings: options.safetySettings,\n serviceTier: options.serviceTier,\n systemInstruction:\n request.system.length === 0 ? undefined : { parts: [{ text: ProviderShared.joinText(request.system) }] },\n tools: hasTools\n ? [\n {\n functionDeclarations: request.tools.map((tool) =>\n lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)),\n ),\n },\n ]\n : undefined,\n toolConfig: hasTools && request.toolChoice ? yield* lowerToolConfig(request.toolChoice) : undefined,\n generationConfig: Object.values(generationConfig).some((value) => value !== undefined)\n ? generationConfig\n : undefined,\n }\n})\n\n// =============================================================================\n// Stream Parsing\n// =============================================================================\n// Gemini reports `promptTokenCount` (inclusive total) with a\n// `cachedContentTokenCount` subset. `candidatesTokenCount` is *exclusive*\n// of `thoughtsTokenCount` — visible-only, not a total — so we sum the two\n// to produce the inclusive `outputTokens` the rest of the contract expects.\nconst mapUsage = (usage: GeminiUsage | undefined) => {\n if (!usage) return undefined\n // Explicit provider nulls decode as `null`; normalize to `undefined` so the\n // token arithmetic below treats them like absent counts.\n const promptTokens = usage.promptTokenCount ?? undefined\n const cached = usage.cachedContentTokenCount ?? undefined\n const thoughts = usage.thoughtsTokenCount ?? undefined\n const visible = usage.candidatesTokenCount ?? undefined\n const nonCached = ProviderShared.subtractTokens(promptTokens, cached)\n // `candidatesTokenCount` is visible-only; sum with thoughts to produce the\n // inclusive `outputTokens` the contract expects. Only compute the total\n // when the visible component is reported — otherwise we'd fabricate an\n // inclusive number from a partial breakdown.\n const outputTokens = visible !== undefined ? visible + (thoughts ?? 0) : undefined\n return new Usage({\n inputTokens: promptTokens,\n outputTokens,\n nonCachedInputTokens: nonCached,\n cacheReadInputTokens: cached,\n reasoningTokens: thoughts,\n totalTokens: ProviderShared.totalTokens(promptTokens, outputTokens, usage.totalTokenCount ?? undefined),\n providerMetadata: { google: usage },\n })\n}\n\nconst mapFinishReason = (finishReason: string | undefined, hasToolCalls: boolean): FinishReason => {\n if (finishReason === undefined) return hasToolCalls ? \"tool-calls\" : \"unknown\"\n if (finishReason === \"STOP\") return hasToolCalls ? \"tool-calls\" : \"stop\"\n if (finishReason === \"MAX_TOKENS\") return \"length\"\n if (\n finishReason === \"IMAGE_SAFETY\" ||\n finishReason === \"RECITATION\" ||\n finishReason === \"SAFETY\" ||\n finishReason === \"BLOCKLIST\" ||\n finishReason === \"PROHIBITED_CONTENT\" ||\n finishReason === \"SPII\" ||\n finishReason === \"MODEL_ARMOR\" ||\n finishReason === \"IMAGE_PROHIBITED_CONTENT\" ||\n finishReason === \"IMAGE_RECITATION\" ||\n finishReason === \"LANGUAGE\"\n )\n return \"content-filter\"\n if (\n finishReason === \"MALFORMED_FUNCTION_CALL\" ||\n finishReason === \"UNEXPECTED_TOOL_CALL\" ||\n finishReason === \"NO_IMAGE\" ||\n finishReason === \"TOO_MANY_TOOL_CALLS\" ||\n finishReason === \"MISSING_THOUGHT_SIGNATURE\" ||\n finishReason === \"MALFORMED_RESPONSE\"\n )\n return \"error\"\n return \"unknown\"\n}\n\nconst finish = (state: ParserState): ReadonlyArray<LLMEvent> => {\n // `?? undefined` normalizes an explicit `null` blockReason back to absent so\n // the \"nothing to finish\" check below keeps its meaning.\n const promptBlockReason =\n state.finishReason === undefined ? (state.promptFeedback?.blockReason ?? undefined) : undefined\n const finishReason = state.finishReason ?? promptBlockReason\n if (finishReason === undefined && state.usage === undefined) return []\n\n const events: LLMEvent[] = []\n let lifecycle = state.lifecycle\n if (state.reasoningSignature !== undefined)\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n googleMetadata({ thoughtSignature: state.reasoningSignature }),\n )\n if (state.textSignature !== undefined)\n lifecycle = Lifecycle.textEnd(lifecycle, events, \"text-0\", googleMetadata({ thoughtSignature: state.textSignature }))\n Lifecycle.finish(lifecycle, events, {\n reason: {\n normalized:\n promptBlockReason === undefined ? mapFinishReason(finishReason, state.hasToolCalls) : \"content-filter\",\n raw: finishReason,\n },\n usage: state.usage,\n providerMetadata:\n state.promptFeedback === undefined ? undefined : googleMetadata({ promptFeedback: state.promptFeedback }),\n })\n return events\n}\n\nconst step = (state: ParserState, event: GeminiEvent) => {\n const nextState = {\n ...state,\n promptFeedback: event.promptFeedback ?? state.promptFeedback,\n usage: event.usageMetadata ? (mapUsage(event.usageMetadata) ?? state.usage) : state.usage,\n }\n const candidate = event.candidates?.[0]\n if (!candidate?.content)\n return Effect.succeed([\n { ...nextState, finishReason: candidate?.finishReason ?? nextState.finishReason },\n [],\n ] as const)\n\n const events: LLMEvent[] = []\n let hasToolCalls = nextState.hasToolCalls\n let lifecycle = nextState.lifecycle\n let reasoningSignature = nextState.reasoningSignature\n let textSignature = nextState.textSignature\n // Supplier ids must be tracked across chunks of the same response, not just within one event's parts.\n const seenCallIds = new Set(nextState.seenCallIds)\n\n for (const input of candidate.content.parts ?? []) {\n if (\n ProviderShared.isRecord(input) &&\n !(\"text\" in input) &&\n !(\"inlineData\" in input) &&\n !(\"functionCall\" in input) &&\n !(\"functionResponse\" in input)\n )\n continue\n const decoded = decodeGeminiContentPart(input)\n if (Option.isNone(decoded))\n return Effect.fail(\n ProviderShared.eventError(ADAPTER, `Invalid ${state.route} stream event`, ProviderShared.encodeJson(event)),\n )\n const part = decoded.value\n const signature = \"thoughtSignature\" in part && part.thoughtSignature ? part.thoughtSignature : undefined\n // Gemini attaches replay signatures to thought parts, visible text, or function calls;\n // each block kind must retain the signature attached to its own parts.\n if (signature !== undefined && \"thought\" in part && part.thought) reasoningSignature = signature\n else if (signature !== undefined && \"text\" in part) textSignature = signature\n if (\"text\" in part && part.text.length > 0) {\n if (part.thought) {\n lifecycle = Lifecycle.reasoningDelta(\n lifecycle,\n events,\n \"reasoning-0\",\n part.text,\n signature ? googleMetadata({ thoughtSignature: signature }) : undefined,\n )\n continue\n }\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined,\n )\n lifecycle = Lifecycle.textDelta(\n lifecycle,\n events,\n \"text-0\",\n part.text,\n textSignature ? googleMetadata({ thoughtSignature: textSignature }) : undefined,\n )\n textSignature = undefined\n continue\n }\n\n if (\"functionCall\" in part) {\n const input = part.functionCall.args === undefined ? {} : part.functionCall.args\n // Gemini 2.0+ supplies a unique function call ID on the part; when omitted (e.g. Gemini 1.5),\n // generate a globally unique ID rather than a per-request counter to prevent cross-request collisions in downstream registries.\n // A repeated supplier id would replay as two identical calls, so only the first occurrence keeps it.\n // A `null` supplier id normalizes to absent so the generated-id fallback applies.\n const supplied = part.functionCall.id ?? undefined\n const duplicate = supplied !== undefined && seenCallIds.has(supplied)\n if (supplied !== undefined) seenCallIds.add(supplied)\n const id = supplied !== undefined && !duplicate ? supplied : `tool_${crypto.randomUUID().replaceAll(\"-\", \"\")}`\n lifecycle = Lifecycle.reasoningEnd(\n lifecycle,\n events,\n \"reasoning-0\",\n reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined,\n )\n lifecycle = Lifecycle.stepStart(lifecycle, events)\n events.push(\n LLMEvent.toolCall({\n id,\n name: part.functionCall.name,\n input,\n providerMetadata:\n part.thoughtSignature ? googleMetadata({ thoughtSignature: part.thoughtSignature }) : undefined,\n }),\n )\n hasToolCalls = true\n }\n }\n\n return Effect.succeed([\n {\n ...nextState,\n hasToolCalls,\n lifecycle,\n reasoningSignature,\n textSignature,\n seenCallIds,\n finishReason: candidate.finishReason ?? nextState.finishReason,\n },\n events,\n ] as const)\n}\n\n// =============================================================================\n// Protocol And Gemini Route\n// =============================================================================\n/**\n * The Gemini protocol — request body construction, body schema, and the\n * streaming-event state machine shared by Google AI Studio and Vertex Gemini.\n */\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: GeminiBody,\n from: fromRequest,\n },\n stream: {\n event: Protocol.jsonEvent(GeminiEvent),\n initial: (request) => ({\n route: `${request.model.provider}/${request.model.route.id}`,\n hasToolCalls: false,\n lifecycle: Lifecycle.initial(),\n }),\n step,\n onHalt: (state) => Effect.succeed(finish(state)),\n },\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"google\",\n providerMetadataKey: \"google\",\n protocol,\n // Gemini's path embeds the model id and pins SSE framing at the URL level.\n endpoint: Endpoint.path(({ request }) => `/models/${request.model.id}:streamGenerateContent?alt=sse`, {\n baseURL: DEFAULT_BASE_URL,\n }),\n auth: Auth.none,\n framing: Framing.sse,\n})\n\nexport * as Gemini from \"./gemini.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BD52CB680612EDBE64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/azure.ts"], | ||
| "sourcesContent": [ | ||
| "import { Headers } from \"effect/unstable/http\"\nimport { Auth } from \"../route/auth.js\"\nimport { type AtLeastOne, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { Route as RouteDef, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport * as OpenAIResponses from \"../protocols/openai-responses.js\"\nimport { ProviderShared } from \"../protocols/shared.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"azure\")\nconst routeAuth = Auth.remove(\"authorization\")\nconst RESPONSES_WEBSOCKET_ROTATE_AFTER_MS = 55 * 60 * 1000\n\n// Azure needs the customer's resource URL; supply either `resourceName`\n// (helper builds the URL) or `baseURL` directly.\ntype AzureURL = AtLeastOne<{ readonly resourceName: string; readonly baseURL: string }>\n\nexport type LanguageModelOptions = AzureURL &\n RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly apiVersion?: string\n readonly queryParams?: Record<string, string>\n readonly useDeploymentBasedUrls?: boolean\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\nexport type Config = LanguageModelOptions\n\nexport type Settings = ProviderPackage.Settings &\n AzureURL & {\n readonly apiKey?: string\n readonly apiVersion?: string\n readonly queryParams?: Readonly<Record<string, string>>\n readonly useDeploymentBasedUrls?: boolean\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nconst resourceBaseURL = (resourceName: string) => `https://${resourceName.trim()}.openai.azure.com/openai`\n\nconst responsesRoute = OpenAIResponses.route.with({\n id: \"azure-openai-responses\",\n provider: id,\n auth: routeAuth,\n transport: OpenAIResponses.channelTransport({\n id: \"azure-openai-responses\",\n name: \"Azure OpenAI Responses\",\n rotateAfterMs: RESPONSES_WEBSOCKET_ROTATE_AFTER_MS,\n enabled: (value) => {\n const url = new URL(value)\n return (\n url.protocol === \"https:\" &&\n url.hostname.endsWith(\".openai.azure.com\") &&\n url.pathname.endsWith(\"/openai/v1/responses\") &&\n url.searchParams.get(\"api-version\") === \"v1\"\n )\n },\n url: (value) => {\n const url = new URL(value)\n url.searchParams.delete(\"api-version\")\n return url.toString()\n },\n headers: (headers) => {\n const apiKey = headers[\"api-key\"]\n if (!apiKey) return headers\n return Headers.remove(Headers.set(headers, \"authorization\", `Bearer ${apiKey}`), \"api-key\")\n },\n }),\n})\n\nconst chatRoute = OpenAIChat.route.with({\n id: \"azure-openai-chat\",\n provider: id,\n auth: routeAuth,\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst defaults = (input: Config) => {\n const {\n apiKey: _,\n apiVersion: _apiVersion,\n resourceName: _resourceName,\n useDeploymentBasedUrls: _useDeploymentBasedUrls,\n baseURL: _baseURL,\n queryParams: _queryParams,\n ...rest\n } = input\n if (\"auth\" in rest) {\n const { auth: _, ...withoutAuth } = rest\n return withoutAuth\n }\n return rest\n}\n\nconst auth = (input: Config) => {\n if (\"auth\" in input && input.auth) return input.auth\n return Auth.remove(\"authorization\").andThen(\n Auth.optional(\"apiKey\" in input ? input.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"AZURE_OPENAI_API_KEY\"))\n .pipe(Auth.header(\"api-key\")),\n )\n}\n\nconst configuredRoute = <Body, Prepared>(route: RouteDef<Body, Prepared>, input: Config, modelID: string | ModelID) =>\n route.with({\n auth: auth(input),\n endpoint: endpoint(input, modelID),\n })\n\nfunction endpoint(input: Config, modelID: string | ModelID) {\n const baseURL = ProviderShared.trimBaseUrl(input.baseURL ?? resourceBaseURL(input.resourceName!))\n const query = { \"api-version\": input.apiVersion ?? \"v1\", ...input.queryParams }\n\n if (input.useDeploymentBasedUrls) return { baseURL: `${baseURL}/deployments/${modelID}`, query }\n if (input.baseURL !== undefined && !new URL(input.baseURL).hostname.endsWith(\".openai.azure.com\")) {\n return { baseURL, query: input.queryParams }\n }\n return { baseURL: `${baseURL}/v1`, query }\n}\n\nexport const configure = (input: Config) => {\n const modelDefaults = defaults(input)\n\n const responses = (modelID: string | ModelID) =>\n configuredRoute(responsesRoute, input, modelID)\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n const chat = (modelID: string | ModelID) =>\n configuredRoute(chatRoute, input, modelID)\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n return {\n id,\n model: responses,\n responses,\n chat,\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nconst config = (settings: Settings): Config => {\n const common = {\n apiKey: settings.apiKey,\n apiVersion: settings.apiVersion,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams },\n useDeploymentBasedUrls: settings.useDeploymentBasedUrls,\n }\n if (settings.baseURL !== undefined) return { ...common, baseURL: settings.baseURL }\n if (settings.resourceName !== undefined) return { ...common, resourceName: settings.resourceName }\n throw new Error(\"Azure requires resourceName or baseURL\")\n}\n\nexport const responsesModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).responses(modelID)\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const model = responsesModel\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6354714940D6566E64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/session.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ModelInfo, SessionMessageAssistant, SessionMessageInfo } from \"@opencode-ai/client\"\nimport { Locale } from \"./locale\"\n\ntype SessionNode = {\n id: string\n parentID?: string | null\n}\n\nexport function sessionFamily<T extends SessionNode>(sessions: readonly T[], sessionID: string) {\n const byID = new Map(sessions.map((session) => [session.id, session]))\n const current = byID.get(sessionID)\n if (!current) return []\n\n const children = new Map<string, T[]>()\n sessions.forEach((session) => {\n if (!session.parentID) return\n const group = children.get(session.parentID)\n if (group) group.push(session)\n else children.set(session.parentID, [session])\n })\n\n function root(session: T): T {\n const parent = session.parentID ? byID.get(session.parentID) : undefined\n return parent ? root(parent) : session\n }\n\n function walk(parentID: string, ancestors: boolean[]): Array<{ session: T; prefix: string }> {\n const group = children.get(parentID) ?? []\n return group.flatMap((session, index) => {\n const last = index === group.length - 1\n const prefix =\n ancestors.length === 0\n ? \"\"\n : ancestors\n .slice(1)\n .map((ancestor) => (ancestor ? \" \" : \"│ \"))\n .join(\"\") + (last ? \"└─ \" : \"├─ \")\n return [{ session, prefix }, ...walk(session.id, [...ancestors, last])]\n })\n }\n\n return walk(root(current).id, [])\n}\n\nexport function lastAssistantWithUsage(messages: ReadonlyArray<SessionMessageInfo>, boundary?: string) {\n const boundaryIndex = boundary ? messages.findIndex((message) => message.id === boundary) : -1\n if (boundary && boundaryIndex === -1) return undefined\n const end = boundaryIndex === -1 ? messages.length : boundaryIndex\n const compactionIndex = messages.findLastIndex(\n (message, index) => message.type === \"compaction\" && message.status === \"completed\" && index < end,\n )\n return messages.findLast(\n (message, index): message is SessionMessageAssistant & { tokens: NonNullable<SessionMessageAssistant[\"tokens\"]> } =>\n message.type === \"assistant\" && message.tokens !== undefined && index > compactionIndex && index < end,\n )\n}\n\nexport function contextUsage(\n messages: ReadonlyArray<SessionMessageInfo>,\n models: ReadonlyArray<ModelInfo> | undefined,\n boundary?: string,\n) {\n const last = lastAssistantWithUsage(messages, boundary)\n if (!last) return\n const tokens =\n last.tokens.input + last.tokens.output + last.tokens.reasoning + last.tokens.cache.read + last.tokens.cache.write\n if (tokens <= 0) return\n const model = models?.find((model) => model.providerID === last.model.providerID && model.id === last.model.id)\n return {\n tokens,\n percent: model?.limit.context ? Math.round((tokens / model.limit.context) * 100) : undefined,\n }\n}\n\nexport function formatContextUsage(tokens: number, percent?: number) {\n const value = Locale.number(tokens)\n return percent === undefined ? value : `${value} (${percent}%)`\n}\n" | ||
| ], | ||
| "mappings": ";oDAQO,SAAS,CAAoC,CAAC,EAAwB,EAAmB,CAC9F,IAAM,EAAO,IAAI,IAAI,EAAS,IAAI,CAAC,IAAY,CAAC,EAAQ,GAAI,CAAO,CAAC,CAAC,EAC/D,EAAU,EAAK,IAAI,CAAS,EAClC,GAAI,CAAC,EAAS,MAAO,CAAC,EAEtB,IAAM,EAAW,IAAI,IACrB,EAAS,QAAQ,CAAC,IAAY,CAC5B,GAAI,CAAC,EAAQ,SAAU,OACvB,IAAM,EAAQ,EAAS,IAAI,EAAQ,QAAQ,EAC3C,GAAI,EAAO,EAAM,KAAK,CAAO,EACxB,OAAS,IAAI,EAAQ,SAAU,CAAC,CAAO,CAAC,EAC9C,EAED,SAAS,CAAI,CAAC,EAAe,CAC3B,IAAM,EAAS,EAAQ,SAAW,EAAK,IAAI,EAAQ,QAAQ,EAAI,OAC/D,OAAO,EAAS,EAAK,CAAM,EAAI,EAGjC,SAAS,CAAI,CAAC,EAAkB,EAA6D,CAC3F,IAAM,EAAQ,EAAS,IAAI,CAAQ,GAAK,CAAC,EACzC,OAAO,EAAM,QAAQ,CAAC,EAAS,IAAU,CACvC,IAAM,EAAO,IAAU,EAAM,OAAS,EAChC,EACJ,EAAU,SAAW,EACjB,GACA,EACG,MAAM,CAAC,EACP,IAAI,CAAC,IAAc,EAAW,MAAQ,UAAM,EAC5C,KAAK,EAAE,GAAK,EAAO,gBAAQ,iBACpC,MAAO,CAAC,CAAE,UAAS,QAAO,EAAG,GAAG,EAAK,EAAQ,GAAI,CAAC,GAAG,EAAW,CAAI,CAAC,CAAC,EACvE,EAGH,OAAO,EAAK,EAAK,CAAO,EAAE,GAAI,CAAC,CAAC,EAG3B,SAAS,CAAsB,CAAC,EAA6C,EAAmB,CACrG,IAAM,EAAgB,EAAW,EAAS,UAAU,CAAC,IAAY,EAAQ,KAAO,CAAQ,EAAI,GAC5F,GAAI,GAAY,IAAkB,GAAI,OACtC,IAAM,EAAM,IAAkB,GAAK,EAAS,OAAS,EAC/C,EAAkB,EAAS,cAC/B,CAAC,EAAS,IAAU,EAAQ,OAAS,cAAgB,EAAQ,SAAW,aAAe,EAAQ,CACjG,EACA,OAAO,EAAS,SACd,CAAC,EAAS,IACR,EAAQ,OAAS,aAAe,EAAQ,SAAW,QAAa,EAAQ,GAAmB,EAAQ,CACvG,EAGK,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAO,EAAuB,EAAU,CAAQ,EACtD,GAAI,CAAC,EAAM,OACX,IAAM,EACJ,EAAK,OAAO,MAAQ,EAAK,OAAO,OAAS,EAAK,OAAO,UAAY,EAAK,OAAO,MAAM,KAAO,EAAK,OAAO,MAAM,MAC9G,GAAI,GAAU,EAAG,OACjB,IAAM,EAAQ,GAAQ,KAAK,CAAC,IAAU,EAAM,aAAe,EAAK,MAAM,YAAc,EAAM,KAAO,EAAK,MAAM,EAAE,EAC9G,MAAO,CACL,SACA,QAAS,GAAO,MAAM,QAAU,KAAK,MAAO,EAAS,EAAM,MAAM,QAAW,GAAG,EAAI,MACrF,EAGK,SAAS,CAAkB,CAAC,EAAgB,EAAkB,CACnE,IAAM,EAAQ,EAAO,OAAO,CAAM,EAClC,OAAO,IAAY,OAAY,EAAQ,GAAG,MAAU", | ||
| "debugId": "8DF07A2699972C4464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+cohere@3.0.27+d6123d32214422cb/node_modules/@ai-sdk/cohere/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/cohere-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/cohere-chat-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/cohere-chat-options.ts\nimport { z } from \"zod/v4\";\nvar cohereLanguageModelOptions = z.object({\n /**\n * Configuration for reasoning features (optional)\n *\n * Can be set to an object with the two properties `type` and `tokenBudget`. `type` can be set to `'enabled'` or `'disabled'` (defaults to `'enabled'`).\n * `tokenBudget` is the maximum number of tokens the model can use for thinking, which must be set to a positive integer. The model will stop thinking if it reaches the thinking token budget and will proceed with the response\n *\n * @see https://docs.cohere.com/reference/chat#request.body.thinking\n */\n thinking: z.object({\n type: z.enum([\"enabled\", \"disabled\"]).optional(),\n tokenBudget: z.number().optional()\n }).optional()\n});\n\n// src/cohere-error.ts\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar cohereErrorDataSchema = z2.object({\n message: z2.string()\n});\nvar cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: (data) => data.message\n});\n\n// src/cohere-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n tools,\n toolChoice\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const cohereTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n } else {\n cohereTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n return { tools: cohereTools, toolChoice: void 0, toolWarnings };\n case \"none\":\n return { tools: cohereTools, toolChoice: \"NONE\", toolWarnings };\n case \"required\":\n return { tools: cohereTools, toolChoice: \"REQUIRED\", toolWarnings };\n case \"tool\":\n return {\n tools: cohereTools.filter(\n (tool) => tool.function.name === toolChoice.toolName\n ),\n toolChoice: \"REQUIRED\",\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/convert-cohere-usage.ts\nfunction convertCohereUsage(tokens) {\n if (tokens == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const inputTokens = tokens.input_tokens;\n const outputTokens = tokens.output_tokens;\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: void 0\n },\n raw: tokens\n };\n}\n\n// src/convert-to-cohere-chat-prompt.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction convertToCohereChatPrompt(prompt) {\n const messages = [];\n const documents = [];\n const warnings = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return part.text;\n }\n case \"file\": {\n let textContent;\n if (typeof part.data === \"string\") {\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n if (!(((_a = part.mediaType) == null ? void 0 : _a.startsWith(\"text/\")) || part.mediaType === \"application/json\")) {\n throw new UnsupportedFunctionalityError2({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError2({\n functionality: \"File URL data\",\n message: \"URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.\"\n });\n }\n documents.push({\n data: {\n text: textContent,\n title: part.filename\n }\n });\n return \"\";\n }\n }\n }).join(\"\")\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: toolCalls.length > 0 ? void 0 : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0,\n tool_plan: void 0\n });\n break;\n }\n case \"tool\": {\n messages.push(\n ...content.filter((toolResult) => toolResult.type !== \"tool-approval-response\").map((toolResult) => {\n var _a;\n const output = toolResult.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n return {\n role: \"tool\",\n content: contentValue,\n tool_call_id: toolResult.toolCallId\n };\n })\n );\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return { messages, documents, warnings };\n}\n\n// src/map-cohere-finish-reason.ts\nfunction mapCohereFinishReason(finishReason) {\n switch (finishReason) {\n case \"COMPLETE\":\n case \"STOP_SEQUENCE\":\n return \"stop\";\n case \"MAX_TOKENS\":\n return \"length\";\n case \"ERROR\":\n return \"error\";\n case \"TOOL_CALL\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/cohere-chat-language-model.ts\nvar CohereChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n // No URLs are supported.\n };\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions\n }) {\n var _a, _b;\n const cohereOptions = (_a = await parseProviderOptions({\n provider: \"cohere\",\n providerOptions,\n schema: cohereLanguageModelOptions\n })) != null ? _a : {};\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings\n } = convertToCohereChatPrompt(prompt);\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings\n } = prepareTools({ tools, toolChoice });\n return {\n args: {\n // model id:\n model: this.modelId,\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? { type: \"json_object\", json_schema: responseFormat.schema } : void 0,\n // messages:\n messages: chatPrompt,\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n // documents for RAG:\n ...cohereDocuments.length > 0 && { documents: cohereDocuments },\n // reasoning\n ...cohereOptions.thinking && {\n thinking: {\n type: (_b = cohereOptions.thinking.type) != null ? _b : \"enabled\",\n token_budget: cohereOptions.thinking.tokenBudget\n }\n }\n },\n warnings: [...toolWarnings, ...promptWarnings]\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { args, warnings } = await this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const content = [];\n for (const item of (_a = response.message.content) != null ? _a : []) {\n if (item.type === \"text\" && item.text.length > 0) {\n content.push({ type: \"text\", text: item.text });\n continue;\n }\n if (item.type === \"thinking\" && item.thinking.length > 0) {\n content.push({ type: \"reasoning\", text: item.thinking });\n continue;\n }\n }\n for (const citation of (_b = response.message.citations) != null ? _b : []) {\n content.push({\n type: \"source\",\n sourceType: \"document\",\n id: this.config.generateId(),\n mediaType: \"text/plain\",\n title: ((_d = (_c = citation.sources[0]) == null ? void 0 : _c.document) == null ? void 0 : _d.title) || \"Document\",\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...citation.type && { citationType: citation.type }\n }\n }\n });\n }\n for (const toolCall of (_e = response.message.tool_calls) != null ? _e : []) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, \"{}\")\n });\n }\n return {\n content,\n finishReason: {\n unified: mapCohereFinishReason(response.finish_reason),\n raw: (_f = response.finish_reason) != null ? _f : void 0\n },\n usage: convertCohereUsage(response.usage.tokens),\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: (_g = response.generation_id) != null ? _g : void 0,\n headers: responseHeaders,\n body: rawResponse\n },\n warnings\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let pendingToolCall = null;\n let isActiveReasoning = false;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n finishReason = { unified: \"error\", raw: void 0 };\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n const type = value.type;\n switch (type) {\n case \"content-start\": {\n if (value.delta.message.content.type === \"thinking\") {\n controller.enqueue({\n type: \"reasoning-start\",\n id: String(value.index)\n });\n isActiveReasoning = true;\n return;\n }\n controller.enqueue({\n type: \"text-start\",\n id: String(value.index)\n });\n return;\n }\n case \"content-delta\": {\n if (\"thinking\" in value.delta.message.content) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: String(value.index),\n delta: value.delta.message.content.thinking\n });\n return;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: String(value.index),\n delta: value.delta.message.content.text\n });\n return;\n }\n case \"content-end\": {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: String(value.index)\n });\n isActiveReasoning = false;\n return;\n }\n controller.enqueue({\n type: \"text-end\",\n id: String(value.index)\n });\n return;\n }\n case \"tool-call-start\": {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs = value.delta.message.tool_calls.function.arguments;\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false\n };\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolId,\n toolName\n });\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolId,\n delta: initialArgs\n });\n }\n return;\n }\n case \"tool-call-delta\": {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta = value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n controller.enqueue({\n type: \"tool-input-delta\",\n id: pendingToolCall.id,\n delta: argsDelta\n });\n }\n return;\n }\n case \"tool-call-end\": {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: pendingToolCall.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(((_a = pendingToolCall.arguments) == null ? void 0 : _a.trim()) || \"{}\")\n )\n });\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n case \"message-start\": {\n controller.enqueue({\n type: \"response-metadata\",\n id: (_b = value.id) != null ? _b : void 0\n });\n return;\n }\n case \"message-end\": {\n finishReason = {\n unified: mapCohereFinishReason(value.delta.finish_reason),\n raw: value.delta.finish_reason\n };\n usage = value.delta.usage.tokens;\n return;\n }\n default: {\n return;\n }\n }\n },\n flush(controller) {\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertCohereUsage(usage)\n });\n }\n })\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders }\n };\n }\n};\nvar cohereChatResponseSchema = z3.object({\n generation_id: z3.string().nullish(),\n message: z3.object({\n role: z3.string(),\n content: z3.array(\n z3.union([\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.string()\n })\n ])\n ).nullish(),\n tool_plan: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n ).nullish(),\n citations: z3.array(\n z3.object({\n start: z3.number(),\n end: z3.number(),\n text: z3.string(),\n sources: z3.array(\n z3.object({\n type: z3.string().optional(),\n id: z3.string().optional(),\n document: z3.object({\n id: z3.string().optional(),\n text: z3.string(),\n title: z3.string()\n })\n })\n ),\n type: z3.string().optional()\n })\n ).nullish()\n }),\n finish_reason: z3.string(),\n usage: z3.object({\n billed_units: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n }),\n tokens: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n })\n })\n});\nvar cohereChatChunkSchema = z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"citation-start\")\n }),\n z3.object({\n type: z3.literal(\"citation-end\")\n }),\n z3.object({\n type: z3.literal(\"content-start\"),\n index: z3.number(),\n delta: z3.object({\n message: z3.object({\n content: z3.union([\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.string()\n })\n ])\n })\n })\n }),\n z3.object({\n type: z3.literal(\"content-delta\"),\n index: z3.number(),\n delta: z3.object({\n message: z3.object({\n content: z3.union([\n z3.object({\n text: z3.string()\n }),\n z3.object({\n thinking: z3.string()\n })\n ])\n })\n })\n }),\n z3.object({\n type: z3.literal(\"content-end\"),\n index: z3.number()\n }),\n z3.object({\n type: z3.literal(\"message-start\"),\n id: z3.string().nullish()\n }),\n z3.object({\n type: z3.literal(\"message-end\"),\n delta: z3.object({\n finish_reason: z3.string(),\n usage: z3.object({\n tokens: z3.object({\n input_tokens: z3.number(),\n output_tokens: z3.number()\n })\n })\n })\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z3.object({\n type: z3.literal(\"tool-plan-delta\"),\n delta: z3.object({\n message: z3.object({\n tool_plan: z3.string()\n })\n })\n }),\n z3.object({\n type: z3.literal(\"tool-call-start\"),\n delta: z3.object({\n message: z3.object({\n tool_calls: z3.object({\n id: z3.string(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n })\n })\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z3.object({\n type: z3.literal(\"tool-call-delta\"),\n delta: z3.object({\n message: z3.object({\n tool_calls: z3.object({\n function: z3.object({\n arguments: z3.string()\n })\n })\n })\n })\n }),\n z3.object({\n type: z3.literal(\"tool-call-end\")\n })\n]);\n\n// src/cohere-embedding-model.ts\nimport {\n TooManyEmbeddingValuesForCallError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders as combineHeaders2,\n createJsonResponseHandler as createJsonResponseHandler2,\n parseProviderOptions as parseProviderOptions2,\n postJsonToApi as postJsonToApi2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\n\n// src/cohere-embedding-options.ts\nimport { z as z4 } from \"zod/v4\";\nvar cohereEmbeddingModelOptions = z4.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z4.enum([\"search_document\", \"search_query\", \"classification\", \"clustering\"]).optional(),\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z4.enum([\"NONE\", \"START\", \"END\"]).optional(),\n /**\n * The number of dimensions of the output embedding.\n * Only available for `embed-v4.0` and newer models.\n *\n * Possible values are `256`, `512`, `1024`, and `1536`.\n * The default is `1536`.\n */\n outputDimension: z4.union([z4.literal(256), z4.literal(512), z4.literal(1024), z4.literal(1536)]).optional()\n});\n\n// src/cohere-embedding-model.ts\nvar CohereEmbeddingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.maxEmbeddingsPerCall = 96;\n this.supportsParallelCalls = true;\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions\n }) {\n var _a;\n const embeddingOptions = await parseProviderOptions2({\n provider: \"cohere\",\n providerOptions,\n schema: cohereEmbeddingModelOptions\n });\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi2({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings. Note that the Cohere API\n // supports other embedding types, but they are not currently supported by the AI SDK.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: [\"float\"],\n texts: values,\n input_type: (_a = embeddingOptions == null ? void 0 : embeddingOptions.inputType) != null ? _a : \"search_query\",\n truncate: embeddingOptions == null ? void 0 : embeddingOptions.truncate,\n output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n cohereTextEmbeddingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n warnings: [],\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue }\n };\n }\n};\nvar cohereTextEmbeddingResponseSchema = z5.object({\n embeddings: z5.object({\n float: z5.array(z5.array(z5.number()))\n }),\n meta: z5.object({\n billed_units: z5.object({\n input_tokens: z5.number()\n })\n })\n});\n\n// src/reranking/cohere-reranking-model.ts\nimport {\n combineHeaders as combineHeaders3,\n createJsonResponseHandler as createJsonResponseHandler3,\n parseProviderOptions as parseProviderOptions3,\n postJsonToApi as postJsonToApi3\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/cohere-reranking-api.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar cohereRerankingResponseSchema = lazySchema(\n () => zodSchema(\n z6.object({\n id: z6.string().nullish(),\n results: z6.array(\n z6.object({\n index: z6.number(),\n relevance_score: z6.number()\n })\n ),\n meta: z6.any()\n })\n )\n);\n\n// src/reranking/cohere-reranking-options.ts\nimport { lazySchema as lazySchema2, zodSchema as zodSchema2 } from \"@ai-sdk/provider-utils\";\nimport { z as z7 } from \"zod/v4\";\nvar cohereRerankingModelOptionsSchema = lazySchema2(\n () => zodSchema2(\n z7.object({\n maxTokensPerDoc: z7.number().optional(),\n priority: z7.number().optional()\n })\n )\n);\n\n// src/reranking/cohere-reranking-model.ts\nvar CohereRerankingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n // current implementation is based on v2 of the API: https://docs.cohere.com/v2/reference/rerank\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions\n }) {\n var _a;\n const rerankingOptions = await parseProviderOptions3({\n provider: \"cohere\",\n providerOptions,\n schema: cohereRerankingModelOptionsSchema\n });\n const warnings = [];\n if (documents.type === \"object\") {\n warnings.push({\n type: \"compatibility\",\n feature: \"object documents\",\n details: \"Object documents are converted to strings.\"\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi3({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders3(this.config.headers(), headers),\n body: {\n model: this.modelId,\n query,\n documents: documents.type === \"text\" ? documents.values : documents.values.map((value) => JSON.stringify(value)),\n top_n: topN,\n max_tokens_per_doc: rerankingOptions == null ? void 0 : rerankingOptions.maxTokensPerDoc,\n priority: rerankingOptions == null ? void 0 : rerankingOptions.priority\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler3(\n cohereRerankingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n ranking: response.results.map((result) => ({\n index: result.index,\n relevanceScore: result.relevance_score\n })),\n warnings,\n response: {\n id: (_a = response.id) != null ? _a : void 0,\n headers: responseHeaders,\n body: rawValue\n }\n };\n }\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.27\" : \"0.0.0-test\";\n\n// src/cohere-provider.ts\nfunction createCohere(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.cohere.com/v2\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"COHERE_API_KEY\",\n description: \"Cohere\"\n })}`,\n ...options.headers\n },\n `ai-sdk/cohere/${VERSION}`\n );\n const createChatModel = (modelId) => {\n var _a2;\n return new CohereChatLanguageModel(modelId, {\n provider: \"cohere.chat\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: (_a2 = options.generateId) != null ? _a2 : generateId\n });\n };\n const createEmbeddingModel = (modelId) => new CohereEmbeddingModel(modelId, {\n provider: \"cohere.textEmbedding\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createRerankingModel = (modelId) => new CohereRerankingModel(modelId, {\n provider: \"cohere.reranking\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const provider = function(modelId) {\n if (new.target) {\n throw new Error(\n \"The Cohere model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar cohere = createCohere();\nexport {\n VERSION,\n cohere,\n createCohere\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9F5CDBBEF0F5994F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "872E76DA967AF30564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-login@3.972.76/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-login@3.972.76/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { LoginCredentialsFetcher } from \"./LoginCredentialsFetcher\";\nexport const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => {\n init?.logger?.debug?.(\"@aws-sdk/credential-providers - fromLoginCredentials\");\n const profiles = await parseKnownFiles(init || {});\n const profileName = getProfileName({\n profile: init?.profile ?? callerClientConfig?.profile,\n });\n const profile = profiles[profileName];\n if (!profile?.login_session) {\n throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, {\n tryNextLink: true,\n logger: init?.logger,\n });\n }\n const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig);\n const credentials = await fetcher.loadCredentials();\n return setCredentialFeature(credentials, \"CREDENTIALS_LOGIN\", \"AD\");\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nimport { createHash, createPrivateKey, createPublicKey, sign } from \"node:crypto\";\nimport { promises as fs } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nexport class LoginCredentialsFetcher {\n profileData;\n init;\n callerClientConfig;\n static REFRESH_THRESHOLD = 5 * 60 * 1000;\n constructor(profileData, init, callerClientConfig) {\n this.profileData = profileData;\n this.init = init;\n this.callerClientConfig = callerClientConfig;\n }\n async loadCredentials() {\n const token = await this.loadToken();\n if (!token) {\n throw new CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger });\n }\n const accessToken = token.accessToken;\n const now = Date.now();\n const expiryTime = new Date(accessToken.expiresAt).getTime();\n const timeUntilExpiry = expiryTime - now;\n if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) {\n return this.refresh(token);\n }\n return this.toCredentials(token.accessToken);\n }\n get logger() {\n return this.init?.logger;\n }\n get loginSession() {\n return this.profileData.login_session;\n }\n toCredentials(token) {\n return {\n accessKeyId: token.accessKeyId,\n secretAccessKey: token.secretAccessKey,\n sessionToken: token.sessionToken,\n accountId: token.accountId,\n expiration: new Date(token.expiresAt),\n };\n }\n async refresh(token) {\n const diskToken = await this.loadToken().catch(() => token);\n const now = Date.now();\n const diskExpiry = new Date(diskToken.accessToken.expiresAt).getTime();\n const tokenExpiry = new Date(token.accessToken.expiresAt).getTime();\n const freshToken = diskExpiry <= now && tokenExpiry > now ? token : diskToken;\n const freshExpiry = new Date(freshToken.accessToken.expiresAt).getTime();\n if (freshExpiry - Date.now() > LoginCredentialsFetcher.REFRESH_THRESHOLD) {\n return this.toCredentials(freshToken.accessToken);\n }\n const { SigninClient, CreateOAuth2TokenCommand } = await import(\"@aws-sdk/nested-clients/signin\");\n const { logger, userAgentAppId } = this.callerClientConfig ?? {};\n const isH2 = (requestHandler) => {\n return requestHandler?.metadata?.handlerProtocol === \"h2\";\n };\n const requestHandler = isH2(this.callerClientConfig?.requestHandler)\n ? undefined\n : this.callerClientConfig?.requestHandler;\n const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION;\n const client = new SigninClient({\n credentials: {\n accessKeyId: \"\",\n secretAccessKey: \"\",\n },\n region,\n requestHandler,\n logger,\n userAgentAppId,\n ...this.init?.clientConfig,\n });\n this.createDPoPInterceptor(client.middlewareStack);\n const commandInput = {\n tokenInput: {\n clientId: freshToken.clientId,\n refreshToken: freshToken.refreshToken,\n grantType: \"refresh_token\",\n },\n };\n try {\n const response = await client.send(new CreateOAuth2TokenCommand(commandInput));\n const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {};\n const { refreshToken, expiresIn } = response.tokenOutput ?? {};\n if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) {\n throw new CredentialsProviderError(\"Token refresh response missing required fields\", {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n const expiresInMs = (expiresIn ?? 900) * 1000;\n const expiration = new Date(Date.now() + expiresInMs);\n const updatedToken = {\n ...freshToken,\n accessToken: {\n ...freshToken.accessToken,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiresAt: expiration.toISOString(),\n },\n refreshToken,\n };\n await this.saveToken(updatedToken);\n return this.toCredentials(updatedToken.accessToken);\n }\n catch (error) {\n if (error.name === \"AccessDeniedException\") {\n const errorType = error.error;\n let message;\n switch (errorType) {\n case \"TOKEN_EXPIRED\":\n message = \"Your session has expired. Please reauthenticate.\";\n break;\n case \"USER_CREDENTIALS_CHANGED\":\n message =\n \"Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.\";\n break;\n case \"INSUFFICIENT_PERMISSIONS\":\n message =\n \"Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.\";\n break;\n default:\n message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \\`aws login\\``;\n }\n throw new CredentialsProviderError(message, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n const tokenExpiry = new Date(freshToken.accessToken.expiresAt).getTime();\n if (tokenExpiry > Date.now()) {\n this.logger?.warn?.(`Failed to refresh token: ${String(error)}. Using existing token until expiry.`);\n return this.toCredentials(freshToken.accessToken);\n }\n throw new CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger });\n }\n }\n async loadToken() {\n const tokenFilePath = this.getTokenFilePath();\n try {\n const tokenData = await fs.readFile(tokenFilePath, \"utf8\");\n const token = JSON.parse(tokenData);\n const missingFields = [\"accessToken\", \"clientId\", \"refreshToken\", \"dpopKey\"].filter((k) => !token[k]);\n if (!token.accessToken?.accountId) {\n missingFields.push(\"accountId\");\n }\n if (missingFields.length > 0) {\n throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(\", \")}`, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n return token;\n }\n catch (error) {\n throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, {\n logger: this.logger,\n tryNextLink: false,\n });\n }\n }\n async saveToken(token) {\n const tokenFilePath = this.getTokenFilePath();\n const directory = dirname(tokenFilePath);\n try {\n await fs.mkdir(directory, { recursive: true });\n }\n catch (error) {\n }\n await fs.writeFile(tokenFilePath, JSON.stringify(token, null, 2), \"utf8\");\n }\n getTokenFilePath() {\n const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), \".aws\", \"login\", \"cache\");\n const loginSessionBytes = Buffer.from(this.loginSession, \"utf8\");\n const loginSessionSha256 = createHash(\"sha256\").update(loginSessionBytes).digest(\"hex\");\n return join(directory, `${loginSessionSha256}.json`);\n }\n derToRawSignature(derSignature) {\n let offset = 2;\n if (derSignature[offset] !== 0x02) {\n throw new Error(\"Invalid DER signature\");\n }\n offset++;\n const rLength = derSignature[offset++];\n let r = derSignature.subarray(offset, offset + rLength);\n offset += rLength;\n if (derSignature[offset] !== 0x02) {\n throw new Error(\"Invalid DER signature\");\n }\n offset++;\n const sLength = derSignature[offset++];\n let s = derSignature.subarray(offset, offset + sLength);\n r = r[0] === 0x00 ? r.subarray(1) : r;\n s = s[0] === 0x00 ? s.subarray(1) : s;\n const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]);\n const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]);\n return Buffer.concat([rPadded, sPadded]);\n }\n createDPoPInterceptor(middlewareStack) {\n middlewareStack.add((next) => async (args) => {\n if (HttpRequest.isInstance(args.request)) {\n const request = args.request;\n const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : \"\"}${request.path}`;\n const dpop = await this.generateDpop(request.method, actualEndpoint);\n request.headers = {\n ...request.headers,\n DPoP: dpop,\n };\n }\n return next(args);\n }, {\n step: \"finalizeRequest\",\n name: \"dpopInterceptor\",\n override: true,\n });\n }\n async generateDpop(method = \"POST\", endpoint) {\n const token = await this.loadToken();\n try {\n const privateKey = createPrivateKey({\n key: token.dpopKey,\n format: \"pem\",\n type: \"sec1\",\n });\n const publicKey = createPublicKey(privateKey);\n const publicDer = publicKey.export({ format: \"der\", type: \"spki\" });\n let pointStart = -1;\n for (let i = 0; i < publicDer.length; i++) {\n if (publicDer[i] === 0x04) {\n pointStart = i;\n break;\n }\n }\n const x = publicDer.slice(pointStart + 1, pointStart + 33);\n const y = publicDer.slice(pointStart + 33, pointStart + 65);\n const header = {\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: {\n kty: \"EC\",\n crv: \"P-256\",\n x: x.toString(\"base64url\"),\n y: y.toString(\"base64url\"),\n },\n };\n const payload = {\n jti: crypto.randomUUID(),\n htm: method,\n htu: endpoint,\n iat: Math.floor(Date.now() / 1000),\n };\n const headerB64 = Buffer.from(JSON.stringify(header)).toString(\"base64url\");\n const payloadB64 = Buffer.from(JSON.stringify(payload)).toString(\"base64url\");\n const message = `${headerB64}.${payloadB64}`;\n const asn1Signature = sign(\"sha256\", Buffer.from(message), privateKey);\n const rawSignature = this.derToRawSignature(asn1Signature);\n const signatureB64 = rawSignature.toString(\"base64url\");\n return `${message}.${signatureB64}`;\n }\n catch (error) {\n throw new CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false });\n }\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "71A004728E6CB91264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/services/standalone.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { CrossSpawnSpawner } from \"@opencode-ai/util/cross-spawn-spawner\"\nimport { LayerNode } from \"@opencode-ai/util/effect/layer-node\"\nimport { Deferred, Effect, Schema, Stream } from \"effect\"\nimport { ChildProcess, ChildProcessSpawner } from \"effect/unstable/process\"\nimport { randomBytes } from \"node:crypto\"\nimport { selfCommand } from \"../util/process\"\n\nconst Ready = Schema.Struct({ url: Schema.String })\nconst decodeReady = Schema.decodeUnknownPromise(Schema.fromJsonString(Ready))\n\ntype Options = {\n readonly command?: ReadonlyArray<string>\n}\n\nconst startupDirectory = process.cwd()\n\nfunction command(password: string, options: Options) {\n const [executable, ...args] = options.command ?? [...selfCommand(), \"serve\"]\n if (!executable) throw new Error(\"Failed to resolve standalone server command\")\n return ChildProcess.make(executable, [...args, \"--stdio\", \"--port\", \"0\"], {\n cwd: startupDirectory,\n // Explicit entry wins over anything inherited, so a user-exported\n // OPENCODE_PASSWORD cannot shadow the child's lease credential.\n env: { OPENCODE_PASSWORD: password },\n extendEnv: true,\n // The server treats EOF on this pipe as the end of its ownership lease.\n // The OS closes it even when the TUI is killed before Effect finalizers run.\n stdin: \"pipe\",\n stderr: process.env.OPENCODE_PRINT_LOGS === \"1\" ? \"inherit\" : \"ignore\",\n killSignal: \"SIGTERM\",\n forceKillAfter: \"3 seconds\",\n })\n}\n\nconst makeEndpoint = Effect.fn(\"cli.standalone.endpoint\")(\n function* (options: Options) {\n const password = randomBytes(32).toString(\"base64url\")\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner\n const proc = yield* spawner.spawn(command(password, options))\n const readyLine = yield* Deferred.make<string, Error>()\n // Keep draining stdout after readiness so later server writes cannot hit EPIPE.\n yield* proc.stdout.pipe(\n Stream.decodeText(),\n Stream.splitLines,\n Stream.runForEach((line) => Deferred.succeed(readyLine, line)),\n Effect.ensuring(Deferred.fail(readyLine, new Error(\"Standalone server exited before reporting readiness\"))),\n Effect.forkScoped,\n )\n const output = yield* Deferred.await(readyLine)\n const ready = yield* Effect.tryPromise(() => decodeReady(output))\n return {\n url: ready.url,\n auth: { type: \"basic\" as const, username: \"opencode\", password },\n pid: proc.pid,\n } satisfies Endpoint & { readonly pid: number }\n },\n Effect.provide(LayerNode.compile(CrossSpawnSpawner.node)),\n)\n\nexport function start(options: Options = {}) {\n return makeEndpoint(options)\n}\n\nexport * as Standalone from \"./standalone\"\n" | ||
| ], | ||
| "mappings": ";6SAKA,sBAAS,eAGT,IAAM,EAAQ,EAAO,OAAO,CAAE,IAAK,EAAO,MAAO,CAAC,EAC5C,EAAc,EAAO,qBAAqB,EAAO,eAAe,CAAK,CAAC,EAMtE,EAAmB,QAAQ,IAAI,EAErC,SAAS,CAAO,CAAC,EAAkB,EAAkB,CACnD,IAAO,KAAe,GAAQ,EAAQ,SAAW,CAAC,GAAG,EAAY,EAAG,OAAO,EAC3E,GAAI,CAAC,EAAY,MAAU,MAAM,6CAA6C,EAC9E,OAAO,EAAa,KAAK,EAAY,CAAC,GAAG,EAAM,UAAW,SAAU,GAAG,EAAG,CACxE,IAAK,EAGL,IAAK,CAAE,kBAAmB,CAAS,EACnC,UAAW,GAGX,MAAO,OACP,OAAQ,QAAQ,IAAI,sBAAwB,IAAM,UAAY,SAC9D,WAAY,UACZ,eAAgB,WAClB,CAAC,EAGH,IAAM,EAAe,EAAO,GAAG,yBAAyB,EACtD,SAAU,CAAC,EAAkB,CAC3B,IAAM,EAAW,EAAY,EAAE,EAAE,SAAS,WAAW,EAE/C,EAAO,OADG,MAAO,EAAoB,qBACf,MAAM,EAAQ,EAAU,CAAO,CAAC,EACtD,EAAY,MAAO,EAAS,KAAoB,EAEtD,MAAO,EAAK,OAAO,KACjB,EAAO,WAAW,EAClB,EAAO,WACP,EAAO,WAAW,CAAC,IAAS,EAAS,QAAQ,EAAW,CAAI,CAAC,EAC7D,EAAO,SAAS,EAAS,KAAK,EAAe,MAAM,qDAAqD,CAAC,CAAC,EAC1G,EAAO,UACT,EACA,IAAM,EAAS,MAAO,EAAS,MAAM,CAAS,EAE9C,MAAO,CACL,KAFY,MAAO,EAAO,WAAW,IAAM,EAAY,CAAM,CAAC,GAEnD,IACX,KAAM,CAAE,KAAM,QAAkB,SAAU,WAAY,UAAS,EAC/D,IAAK,EAAK,GACZ,GAEF,EAAO,QAAQ,EAAU,QAAQ,EAAkB,IAAI,CAAC,CAC1D,EAEO,SAAS,CAAK,CAAC,EAAmB,CAAC,EAAG,CAC3C,OAAO,EAAa,CAAO", | ||
| "debugId": "4713AF2DE632266E64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/tool-display.ts", "../tui/src/util/path-format.ts", "../tui/src/util/filetype.ts", "../../node_modules/.bun/ansi-regex@6.3.0/node_modules/ansi-regex/index.js", "../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js"], | ||
| "sourcesContent": [ | ||
| "export function canonicalToolName(name: string) {\n if (name === \"bash\") return \"shell\"\n if (name === \"task\") return \"subagent\"\n if (name === \"apply_patch\") return \"patch\"\n return name\n}\n\nexport function finiteNumber(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return\n return value\n}\n\nexport function primitiveInputSummary(input: Record<string, unknown>, omit: readonly string[] = []) {\n const entries = Object.entries(input).filter(([key, value]) => {\n if (omit.includes(key)) return false\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\"\n })\n if (entries.length === 0) return \"\"\n return `[${entries.map(([key, value]) => `${key}=${String(value)}`).join(\", \")}]`\n}\n\nexport function webSearchProviderLabel(provider: unknown) {\n if (typeof provider !== \"string\" || !provider) return \"Web Search\"\n return `Web Search via ${provider[0].toUpperCase()}${provider.slice(1)}`\n}\n\nexport function toolDisplayMetadata(state: unknown): Record<string, unknown> {\n if (!state || typeof state !== \"object\" || Array.isArray(state)) return {}\n if (!(\"status\" in state) || state.status === \"streaming\") return {}\n if (!(\"metadata\" in state) || !state.metadata || typeof state.metadata !== \"object\") return {}\n if (Array.isArray(state.metadata)) return {}\n return state.metadata as Record<string, unknown>\n}\n\nexport function toolDisplayContent(state: SessionMessageAssistantTool[\"state\"]) {\n if (state.status === \"streaming\" || state.status === \"running\") return []\n return state.content ?? []\n}\n\nexport function nonEmptyToolContent<T>(content: ReadonlyArray<T> | undefined): [T, ...T[]] | undefined {\n if (!content) return undefined\n const [first, ...rest] = content\n return first === undefined ? undefined : [first, ...rest]\n}\nimport type { SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\n", | ||
| "import path from \"path\"\n\nexport function abbreviateHome(input: string, home: string) {\n if (!home) return input\n const paths = windowsPath(home) ? path.win32 : path.posix\n const relative = paths.relative(home, input)\n if (!relative) return \"~\"\n if (relative === \"..\" || relative.startsWith(\"..\" + paths.sep) || paths.isAbsolute(relative)) return input\n return \"~/\" + relative.split(paths.sep).join(\"/\")\n}\n\nexport function formatPath(\n input: string | undefined,\n options: { base: string; home?: string; forwardSlashes?: boolean },\n) {\n if (!input) return \"\"\n const windows = windowsPath(options.base)\n if (!windows && windowsPath(input)) {\n return options.forwardSlashes ? input.replaceAll(\"\\\\\", \"/\") : input\n }\n\n const paths = windows ? path.win32 : path.posix\n const absolute = paths.isAbsolute(input) ? input : paths.resolve(options.base, input)\n const relative = paths.relative(options.base, absolute)\n const formatted = !relative\n ? \".\"\n : relative !== \"..\" && !relative.startsWith(\"..\" + paths.sep) && !paths.isAbsolute(relative)\n ? relative\n : options.home\n ? abbreviateHome(absolute, options.home)\n : absolute\n return options.forwardSlashes ? formatted.replaceAll(\"\\\\\", \"/\") : formatted\n}\n\nfunction windowsPath(input: string) {\n return /^[A-Za-z]:[\\\\/]/.test(input) || input.startsWith(\"\\\\\\\\\")\n}\n", | ||
| "import path from \"node:path\"\n\nexport const LANGUAGE_EXTENSIONS: Record<string, string> = {\n \".abap\": \"abap\",\n \".bat\": \"bat\",\n \".bib\": \"bibtex\",\n \".bibtex\": \"bibtex\",\n \".clj\": \"clojure\",\n \".cljs\": \"clojure\",\n \".cljc\": \"clojure\",\n \".edn\": \"clojure\",\n \".coffee\": \"coffeescript\",\n \".c\": \"c\",\n \".cpp\": \"cpp\",\n \".cxx\": \"cpp\",\n \".cc\": \"cpp\",\n \".c++\": \"cpp\",\n \".cs\": \"csharp\",\n \".csx\": \"csharp\",\n \".css\": \"css\",\n \".d\": \"d\",\n \".pas\": \"pascal\",\n \".pascal\": \"pascal\",\n \".diff\": \"diff\",\n \".patch\": \"diff\",\n \".dart\": \"dart\",\n \".dockerfile\": \"dockerfile\",\n \".ex\": \"elixir\",\n \".exs\": \"elixir\",\n \".erl\": \"erlang\",\n \".ets\": \"typescript\",\n \".hrl\": \"erlang\",\n \".fs\": \"fsharp\",\n \".fsi\": \"fsharp\",\n \".fsx\": \"fsharp\",\n \".fsscript\": \"fsharp\",\n \".gitcommit\": \"git-commit\",\n \".gitrebase\": \"git-rebase\",\n \".go\": \"go\",\n \".groovy\": \"groovy\",\n \".gleam\": \"gleam\",\n \".hbs\": \"handlebars\",\n \".handlebars\": \"handlebars\",\n \".hs\": \"haskell\",\n \".lhs\": \"haskell\",\n \".html\": \"html\",\n \".htm\": \"html\",\n \".ini\": \"ini\",\n \".java\": \"java\",\n \".jl\": \"julia\",\n \".js\": \"javascript\",\n \".kt\": \"kotlin\",\n \".kts\": \"kotlin\",\n \".jsx\": \"javascriptreact\",\n \".json\": \"json\",\n \".tex\": \"latex\",\n \".latex\": \"latex\",\n \".less\": \"less\",\n \".lua\": \"lua\",\n \".makefile\": \"makefile\",\n makefile: \"makefile\",\n \".md\": \"markdown\",\n \".markdown\": \"markdown\",\n \".m\": \"objective-c\",\n \".mm\": \"objective-cpp\",\n \".pl\": \"perl\",\n \".pm\": \"perl\",\n \".pm6\": \"perl6\",\n \".php\": \"php\",\n \".ps1\": \"powershell\",\n \".psm1\": \"powershell\",\n \".pug\": \"jade\",\n \".jade\": \"jade\",\n \".py\": \"python\",\n \".r\": \"r\",\n \".cshtml\": \"razor\",\n \".razor\": \"razor\",\n \".rb\": \"ruby\",\n \".rake\": \"ruby\",\n \".gemspec\": \"ruby\",\n \".ru\": \"ruby\",\n \".erb\": \"erb\",\n \".html.erb\": \"erb\",\n \".js.erb\": \"erb\",\n \".css.erb\": \"erb\",\n \".json.erb\": \"erb\",\n \".rs\": \"rust\",\n \".scss\": \"scss\",\n \".sass\": \"sass\",\n \".scala\": \"scala\",\n \".shader\": \"shaderlab\",\n \".sh\": \"bash\",\n \".bash\": \"bash\",\n \".zsh\": \"bash\",\n \".ksh\": \"bash\",\n \".sql\": \"sql\",\n \".svelte\": \"svelte\",\n \".swift\": \"swift\",\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".mtsx\": \"typescriptreact\",\n \".ctsx\": \"typescriptreact\",\n \".xml\": \"xml\",\n \".xsl\": \"xsl\",\n \".yaml\": \"yaml\",\n \".yml\": \"yaml\",\n \".mjs\": \"javascript\",\n \".cjs\": \"javascript\",\n \".vue\": \"vue\",\n \".zig\": \"zig\",\n \".zon\": \"zig\",\n \".astro\": \"astro\",\n \".ml\": \"ocaml\",\n \".mli\": \"ocaml\",\n \".tf\": \"terraform\",\n \".tfvars\": \"terraform-vars\",\n \".hcl\": \"hcl\",\n \".nix\": \"nix\",\n \".typ\": \"typst\",\n \".typc\": \"typst\",\n}\n\nexport function filetype(input?: string) {\n if (!input) return \"none\"\n const language = LANGUAGE_EXTENSIONS[path.extname(input)]\n if ([\"typescriptreact\", \"javascriptreact\", \"javascript\"].includes(language)) return \"typescript\"\n return language\n}\n", | ||
| "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST\n\t// The payload stops at the first terminator character rather than scanning ahead for one, so an unterminated `ESC ]` cannot rescan the rest of the input. Terminals likewise abort a control string on an unexpected ESC.\n\tconst osc = `(?:\\\\u001B\\\\][^\\\\u0007\\\\u001B\\\\u009C]*${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", | ||
| "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8196238B711D563C64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/ui/timeline.tsx", "src/commands/handlers/console/login.ts"], | ||
| "sourcesContent": [ | ||
| "import { createComponent as _$createComponent } from \"@opentui/solid\";\nimport { effect as _$effect } from \"@opentui/solid\";\nimport { createTextNode as _$createTextNode } from \"@opentui/solid\";\nimport { insertNode as _$insertNode } from \"@opentui/solid\";\nimport { insert as _$insert } from \"@opentui/solid\";\nimport { setProp as _$setProp } from \"@opentui/solid\";\nimport { createElement as _$createElement } from \"@opentui/solid\";\n/** @jsxImportSource @opentui/solid */\nimport { createCliRenderer, RGBA } from \"@opentui/core\";\nimport { createScrollbackWriter, render, useKeyboard } from \"@opentui/solid\";\nimport { registerOpencodeSpinner } from \"@opencode-ai/tui/component/register-spinner\";\nimport { Show, createSignal } from \"solid-js\";\nregisterOpencodeSpinner();\nconst SPINNER_FRAMES = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\nconst IDLE_TIMEOUT = 1_000;\nconst COLORS = {\n accent: RGBA.fromIndex(6),\n error: RGBA.fromIndex(1),\n foreground: RGBA.defaultForeground(),\n muted: RGBA.fromIndex(8),\n success: RGBA.fromIndex(2)\n};\nconst ROWS = {\n intro: {\n marker: \"┌\",\n color: COLORS.muted,\n connector: true\n },\n item: {\n marker: \"●\",\n color: COLORS.accent,\n connector: true\n },\n success: {\n marker: \"◇\",\n color: COLORS.success,\n connector: true\n },\n failure: {\n marker: \"■\",\n color: COLORS.error,\n connector: false\n },\n outro: {\n marker: \"└\",\n color: COLORS.muted,\n connector: false\n }\n};\nfunction row(kind, value) {\n const style = ROWS[kind];\n return createScrollbackWriter(() => (() => {\n var _el$ = _$createElement(\"box\"),\n _el$2 = _$createElement(\"box\"),\n _el$3 = _$createElement(\"text\"),\n _el$4 = _$createElement(\"text\");\n _$insertNode(_el$, _el$2);\n _$setProp(_el$, \"width\", \"100%\");\n _$setProp(_el$, \"minHeight\", 1);\n _$setProp(_el$, \"flexDirection\", \"column\");\n _$insertNode(_el$2, _el$3);\n _$insertNode(_el$2, _el$4);\n _$setProp(_el$2, \"width\", \"100%\");\n _$setProp(_el$2, \"minHeight\", 1);\n _$setProp(_el$2, \"flexDirection\", \"row\");\n _$setProp(_el$2, \"gap\", 1);\n _$setProp(_el$3, \"flexShrink\", 0);\n _$insert(_el$3, () => style.marker);\n _$setProp(_el$4, \"wrapMode\", \"word\");\n _$insert(_el$4, value);\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return style.connector;\n },\n get children() {\n var _el$5 = _$createElement(\"text\");\n _$insertNode(_el$5, _$createTextNode(`│`));\n _$effect(_$p => _$setProp(_el$5, \"fg\", COLORS.muted, _$p));\n return _el$5;\n }\n }), null);\n _$effect(_p$ => {\n var _v$ = style.color,\n _v$2 = COLORS.foreground;\n _v$ !== _p$.e && (_p$.e = _$setProp(_el$3, \"fg\", _v$, _p$.e));\n _v$2 !== _p$.t && (_p$.t = _$setProp(_el$4, \"fg\", _v$2, _p$.t));\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$;\n })(), {\n startOnNewLine: true,\n trailingNewline: !style.connector\n });\n}\nfunction TimelineFooter(props) {\n useKeyboard(event => {\n if (event.name !== \"escape\" && !(event.ctrl && event.name === \"c\")) return;\n event.preventDefault();\n props.cancel();\n });\n return (() => {\n var _el$7 = _$createElement(\"box\");\n _$setProp(_el$7, \"width\", \"100%\");\n _$setProp(_el$7, \"height\", 1);\n _$setProp(_el$7, \"flexDirection\", \"row\");\n _$setProp(_el$7, \"gap\", 1);\n _$insert(_el$7, _$createComponent(Show, {\n get when() {\n return props.pending();\n },\n children: text => [(() => {\n var _el$8 = _$createElement(\"spinner\");\n _$setProp(_el$8, \"frames\", SPINNER_FRAMES);\n _$setProp(_el$8, \"interval\", 80);\n _$effect(_$p => _$setProp(_el$8, \"color\", COLORS.accent, _$p));\n return _el$8;\n })(), (() => {\n var _el$9 = _$createElement(\"text\");\n _$setProp(_el$9, \"wrapMode\", \"none\");\n _$setProp(_el$9, \"truncate\", true);\n _$insert(_el$9, text);\n _$effect(_$p => _$setProp(_el$9, \"fg\", COLORS.foreground, _$p));\n return _el$9;\n })()]\n }));\n return _el$7;\n })();\n}\nfunction bounded(task) {\n return new Promise(resolve => {\n const timer = setTimeout(resolve, IDLE_TIMEOUT);\n timer.unref();\n const finish = () => {\n clearTimeout(timer);\n resolve();\n };\n void task.then(finish, finish);\n });\n}\nasync function shutdown(renderer) {\n await bounded(renderer.idle());\n try {\n renderer.externalOutputMode = \"passthrough\";\n } finally {\n try {\n renderer.screenMode = \"main-screen\";\n } finally {\n if (!renderer.isDestroyed) renderer.destroy();\n }\n }\n}\nexport async function createTimelineHost() {\n const stdout = process.stdout;\n const controller = new AbortController();\n const signals = [\"SIGINT\", \"SIGHUP\", \"SIGQUIT\"];\n const cancel = () => {\n if (!controller.signal.aborted) controller.abort();\n };\n signals.forEach(signal => process.on(signal, cancel));\n if (!stdout.isTTY || !process.stdin.isTTY) {\n let closed = false;\n let writing = false;\n let active;\n let closeTask;\n const write = async (kind, text) => {\n if (closed) throw new Error(\"timeline closed\");\n if (writing) throw new Error(\"timeline write already in progress\");\n writing = true;\n try {\n const style = kind === \"pending\" ? undefined : ROWS[kind];\n const marker = kind === \"pending\" ? \".\" : ROWS[kind].marker;\n const connector = style?.connector ? \"│\\n\" : \"\";\n active = new Promise((resolve, reject) => {\n stdout.write(`${marker} ${text}\\n${connector}`, error => error ? reject(error) : resolve());\n });\n await active;\n } finally {\n writing = false;\n active = undefined;\n }\n };\n const close = () => {\n if (closeTask) return closeTask;\n closed = true;\n closeTask = (async () => {\n await active?.catch(() => {});\n signals.forEach(signal => process.off(signal, cancel));\n })();\n return closeTask;\n };\n return {\n signal: controller.signal,\n intro: text => write(\"intro\", text),\n item: text => write(\"item\", text),\n pending: text => write(\"pending\", text),\n success: text => write(\"success\", text),\n failure: text => write(\"failure\", text),\n outro: text => write(\"outro\", text),\n close\n };\n }\n let renderer;\n try {\n // Start on a fresh row so delayed SSH cursor reports cannot make\n // split-footer overwrite the shell command.\n process.stdout.write(\"\\n\");\n renderer = await createCliRenderer({\n stdin: process.stdin,\n useMouse: false,\n autoFocus: false,\n openConsoleOnError: false,\n exitOnCtrlC: false,\n exitSignals: [],\n screenMode: \"split-footer\",\n footerHeight: 1,\n externalOutputMode: \"capture-stdout\",\n consoleMode: \"disabled\",\n clearOnShutdown: false\n });\n const activeRenderer = renderer;\n const [pending, setPending] = createSignal();\n const renderTask = render(() => _$createComponent(TimelineFooter, {\n pending: pending,\n cancel: cancel\n }), activeRenderer);\n void renderTask.catch(cancel);\n await bounded(activeRenderer.idle());\n let closed = false;\n let writing = false;\n let active;\n let closeTask;\n const write = (kind, text) => {\n if (closed) return Promise.reject(new Error(\"timeline closed\"));\n if (writing) return Promise.reject(new Error(\"timeline write already in progress\"));\n writing = true;\n active = (async () => {\n if (kind === \"pending\") {\n setPending(text);\n activeRenderer.requestRender();\n } else {\n if (kind === \"success\" || kind === \"failure\" || kind === \"outro\") setPending(undefined);\n activeRenderer.writeToScrollback(row(kind, text));\n activeRenderer.requestRender();\n }\n await bounded(activeRenderer.idle());\n })().finally(() => {\n writing = false;\n active = undefined;\n });\n return active;\n };\n const close = () => {\n if (closeTask) return closeTask;\n closed = true;\n closeTask = (async () => {\n await active?.catch(() => {});\n try {\n await shutdown(activeRenderer);\n await bounded(renderTask);\n } finally {\n signals.forEach(signal => process.off(signal, cancel));\n }\n })();\n return closeTask;\n };\n return {\n signal: controller.signal,\n intro: text => write(\"intro\", text),\n item: text => write(\"item\", text),\n pending: text => write(\"pending\", text),\n success: text => write(\"success\", text),\n failure: text => write(\"failure\", text),\n outro: text => write(\"outro\", text),\n close\n };\n } catch (error) {\n try {\n if (renderer) await shutdown(renderer);\n } finally {\n signals.forEach(signal => process.off(signal, cancel));\n }\n throw error;\n }\n}", | ||
| "import { Cause, Effect, Exit, Option } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode, type OpenCodeClient } from \"@opencode-ai/client/promise\"\nimport { AppProcess } from \"@opencode-ai/util/process\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { createTimelineHost, type TimelineHost } from \"../../../ui/timeline\"\nimport { errorMessage } from \"../../../util/error\"\n\nconst integrationID = \"opencode\"\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.console.commands.login,\n Effect.fn(\"cli.console.login\")(function* (input) {\n const timeline = yield* Effect.acquireRelease(\n Effect.promise(() => createTimelineHost()),\n (value) => request(() => value.close()).pipe(Effect.ignore),\n )\n const exit = yield* login(timeline, Option.getOrUndefined(input.url)).pipe(\n Effect.raceFirst(AppProcess.waitForAbort(timeline.signal)),\n Effect.exit,\n )\n if (Exit.isSuccess(exit)) return\n\n const cancelled = timeline.signal.aborted\n yield* request(() =>\n timeline.failure(cancelled ? \"Authorization cancelled\" : errorMessage(Cause.squash(exit.cause))),\n ).pipe(Effect.ignore)\n process.exitCode = cancelled ? 130 : 1\n }),\n)\n\nconst login = Effect.fn(\"cli.console.login.run\")(function* (timeline: TimelineHost, server?: string) {\n yield* request(() => timeline.intro(\"Log in\"))\n yield* request(() => timeline.pending(\"Connecting to OpenCode...\"))\n\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const found = yield* request((signal) => client.integration.get({ integrationID, location }, { signal }))\n const integration = yield* required(found.data, \"OpenCode Console integration is unavailable\")\n const method = yield* required(\n integration.methods.find((candidate) => candidate.type === \"oauth\"),\n \"OpenCode Console login is unavailable\",\n )\n\n yield* request(() => timeline.pending(\"Starting authorization...\"))\n const started = yield* request((signal) =>\n client.integration.oauth.connect(\n {\n integrationID,\n methodID: method.id,\n ...(server ? { answer: { server } } : {}),\n location,\n },\n { signal },\n ),\n )\n const attempt = started.data\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.oauth.cancel(\n { integrationID, attemptID: attempt.attemptID, location },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n if (attempt.mode !== \"auto\") yield* Effect.fail(new Error(\"OpenCode Console requires a device login\"))\n\n yield* request(() => timeline.item(`Go to: ${attempt.url}`))\n yield* request(() => timeline.item(attempt.instructions))\n yield* request(async () => {\n const { default: open } = await import(\"open\")\n await open(attempt.url)\n }).pipe(Effect.ignore)\n yield* request(() => timeline.pending(\"Waiting for authorization...\"))\n\n const status = yield* waitForConsoleLogin(client, integrationID, attempt.attemptID)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n if (status.status === \"expired\") yield* Effect.fail(new Error(\"Device code expired\"))\n\n yield* request(() => timeline.success(\"Connected to OpenCode Console\"))\n yield* request(() => timeline.outro(\"Done\"))\n})\n\nconst waitForConsoleLogin = Effect.fn(\"cli.console.login.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.oauth.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n yield* Effect.sleep(500)\n }\n})\n\nfunction request<A>(task: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({\n try: task,\n catch: (cause) => cause,\n })\n}\n\nfunction required<A>(value: A | null | undefined, message: string) {\n return value === null || value === undefined ? Effect.fail(new Error(message)) : Effect.succeed(value)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BDE41EBE0B5F013564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js"], | ||
| "sourcesContent": [ | ||
| "// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) keysSpacesBestScores[i] = NEGATIVE_INFINITY\r\n\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n target = tmpTargets[keyI]\r\n if(target === noTarget) { tmpResults[keyI] = noTarget; continue }\r\n\r\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/false, /*allowPartialMatch=*/containsSpace)\r\n if(tmpResults[keyI] === NULL) { tmpResults[keyI] = noTarget; continue }\r\n\r\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\r\n // if our second match isn't good we ignore it instead of averaging with it\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) {\r\n if(allowPartialMatchScores[i] > -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) { if(keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer }\r\n } else {\r\n var hasAtLeast1Match = false\r\n for(let i=0; i < keysLen; i++) { if(tmpResults[i]._score !== NEGATIVE_INFINITY) { hasAtLeast1Match = true; break } }\r\n if(!hasAtLeast1Match) continue\r\n }\r\n\r\n var objResults = new KeysResult(keysLen)\r\n for(let i=0; i < keysLen; i++) { objResults[i] = tmpResults[i] }\r\n\r\n if(containsSpace) {\r\n var score = 0\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) score += keysSpacesBestScores[i]\r\n } else {\r\n // todo could rewrite this scoring to be more similar to when there's spaces\r\n // if we match multiple keys give us bonus points\r\n var score = NEGATIVE_INFINITY\r\n for(let i=0; i<keysLen; i++) {\r\n var result = objResults[i]\r\n if(result._score > -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='<b>', close='</b>') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i<searches.length; i++) {\r\n if(searches[i] === '') continue\r\n var _info = prepareLowerInfo(searches[i])\r\n spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false})\r\n }\r\n }\r\n\r\n return {lowerCodes: info.lowerCodes, _lower: info._lower, containsSpace: info.containsSpace, bitflags: info.bitflags, spaceSearches: spaceSearches}\r\n }\r\n\r\n\r\n\r\n var getPrepared = (target) => {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var target = getValue(obj, options.key)\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n var result = new_result(target.target, {_score: target._score, obj: obj})\r\n results.push(result); if(results.length >= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var objResults = new KeysResult(options.keys.length)\r\n for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i<targets.length;i++) { var target = targets[i]\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n results.push(target); if(results.length >= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i<nextBeginningIndexes.length; i=nextBeginningIndexes[i]) {\r\n if(i <= substringIndex) continue\r\n\r\n for(var s=0; s<searchLen; s++) if(searchLowerCodes[s] !== prepared._targetLowerCodes[i+s]) break\r\n if(s === searchLen) { substringIndex = i; isSubstringBeginning = true; break }\r\n }\r\n }\r\n\r\n // tally up the score & keep track of matches for highlighting later\r\n // if it's a simple match, we'll switch to a substring match if a substring exists\r\n // if it's a strict match, we'll switch to a substring match only if that's a better score\r\n\r\n var calculateScore = matches => {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesBest)\r\n } else {\r\n if(isSubstringBeginning) {\r\n for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesSimple)\r\n } else {\r\n var matchesBest = matchesStrict\r\n var score = calculateScore(matchesStrict)\r\n }\r\n }\r\n\r\n prepared._score = score\r\n\r\n for(var i = 0; i < searchLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = searchLen\r\n\r\n const result = new Result()\r\n result.target = prepared.target\r\n result._score = prepared._score\r\n result._indexes = prepared._indexes\r\n return result\r\n }\r\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = NEGATIVE_INFINITY\r\n var search = searches[i]\r\n\r\n result = algorithm(search, target)\r\n if(allowPartialMatch) {\r\n if(result === NULL) continue\r\n hasAtLeast1Match = true\r\n } else {\r\n if(result === NULL) {resetNextBeginningIndexes(); return NULL}\r\n }\r\n\r\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\r\n var isTheLastSearch = i === searchesLen - 1\r\n if(!isTheLastSearch) {\r\n var indexes = result._indexes\r\n\r\n var indexesIsConsecutiveSubstring = true\r\n for(let i=0; i<indexes.len-1; i++) {\r\n if(indexes[i+1] - indexes[i] !== 1) {\r\n indexesIsConsecutiveSubstring = false; break;\r\n }\r\n }\r\n\r\n if(indexesIsConsecutiveSubstring) {\r\n var newBeginningIndex = indexes[indexes.len-1] + 1\r\n var toReplace = target._nextBeginningIndexes[newBeginningIndex-1]\r\n for(let i=newBeginningIndex-1; i>=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j<result._indexes.len; ++j) seen_indexes.add(result._indexes[j])\r\n }\r\n\r\n if(allowPartialMatch && !hasAtLeast1Match) return NULL\r\n\r\n resetNextBeginningIndexes()\r\n\r\n // allows a search with spaces that's an exact substring to score well\r\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/true)\r\n if(allowSpacesResult !== NULL && allowSpacesResult._score > score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen\r\n }\r\n }\r\n return allowSpacesResult\r\n }\r\n\r\n if(allowPartialMatch) result = target\r\n result._score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n // we use this instead of just .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') because that screws with japanese characters\r\n var remove_accents = (str) => str.replace(/\\p{Script=Latin}+/gu, match => match.normalize('NFD')).replace(/[\\u0300-\\u036f]/g, '')\r\n\r\n var prepareLowerInfo = (str) => {\r\n str = remove_accents(str)\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1<<bit\r\n }\r\n\r\n return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower}\r\n }\r\n var prepareBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n target = remove_accents(target)\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c<o;){var s=c+1;a=c,s<o&&e[s]._score<e[c]._score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score<e[f]._score;f=(a=f)-1>>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score<e[v]._score;v=(a=v)-1>>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "238DB1038299C2CB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openrouter.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Schema } from \"effect\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport { ProviderID, type CacheHint, type ModelID } from \"../schema/index.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport * as OpenAICompatibleProfiles from \"./openai-compatible-profile.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport { newBreakpoints, ttlBucket } from \"../protocols/utils/cache.js\"\nimport { isRecord } from \"../protocols/shared.js\"\n\nexport const profile = OpenAICompatibleProfiles.profiles.openrouter\nexport const id = ProviderID.make(profile.provider)\nconst ADAPTER = \"openrouter\"\n\ntype OpenRouterString<Known extends string> = Known | (string & {})\n\nexport interface OpenRouterProviderRouting {\n readonly [key: string]: unknown\n readonly order?: ReadonlyArray<string>\n readonly allow_fallbacks?: boolean\n readonly require_parameters?: boolean\n readonly data_collection?: OpenRouterString<\"allow\" | \"deny\">\n readonly only?: ReadonlyArray<string>\n readonly ignore?: ReadonlyArray<string>\n readonly quantizations?: ReadonlyArray<string>\n readonly sort?: OpenRouterString<\"price\" | \"throughput\" | \"latency\">\n readonly max_price?: Readonly<{\n prompt?: number | string\n completion?: number | string\n image?: number | string\n audio?: number | string\n request?: number | string\n }>\n readonly zdr?: boolean\n}\n\nexport type OpenRouterPlugin =\n | Readonly<{\n id: \"web\"\n max_results?: number\n search_prompt?: string\n engine?: OpenRouterString<\"native\" | \"exa\">\n }>\n | Readonly<{ id: \"file-parser\"; max_files?: number; pdf?: { engine?: string } }>\n | Readonly<{ id: \"moderation\" }>\n | Readonly<{ id: \"response-healing\" }>\n | Readonly<{ id: \"auto-router\"; allowed_models?: ReadonlyArray<string> }>\n | Readonly<{ id: string & {}; [key: string]: unknown }>\n\nexport interface OpenRouterOptions {\n readonly [key: string]: unknown\n readonly debug?: Readonly<{ echo_upstream_body?: boolean }>\n readonly models?: ReadonlyArray<string>\n readonly plugins?: ReadonlyArray<OpenRouterPlugin>\n readonly provider?: OpenRouterProviderRouting\n readonly reasoning?: Readonly<{\n enabled?: boolean\n exclude?: boolean\n effort?: OpenRouterString<\"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\">\n max_tokens?: number\n }>\n readonly usage?: boolean | Readonly<{ include: boolean }>\n readonly user?: string\n readonly web_search_options?: Readonly<{\n max_results?: number\n search_prompt?: string\n engine?: OpenRouterString<\"native\" | \"exa\">\n }>\n}\n\nexport type OpenRouterProviderOptionsInput = OpenRouterOptions\n\nexport type LanguageModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: OpenRouterProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: OpenRouterProviderOptionsInput\n}\n\nconst OpenRouterBody = Schema.StructWithRest(Schema.Struct(OpenAIChat.bodyFields), [\n Schema.Record(Schema.String, Schema.Any),\n])\nexport type OpenRouterBody = Schema.Schema.Type<typeof OpenRouterBody>\n\nexport const protocol = Protocol.make({\n id: \"openrouter-chat\",\n body: {\n schema: OpenRouterBody,\n from: (request) =>\n OpenAIChat.fromRequest(request, { cacheControl: cacheControl() }).pipe(\n Effect.map((body) => {\n const sourceAssistants = request.messages.filter((message) => message.role === \"assistant\")\n let assistantIndex = 0\n const messages = body.messages.map((message) => {\n if (message.role !== \"assistant\") return message\n const source = sourceAssistants[assistantIndex++]\n const reasoning = source?.content\n .filter((part) => part.type === \"reasoning\")\n .map((part) => part.text)\n .join(\"\")\n const reasoningDetails = Array.isArray(message.reasoning_details) ? message.reasoning_details : undefined\n return {\n ...message,\n reasoning_content: undefined,\n reasoning_text: undefined,\n reasoning: reasoning && reasoningDetails && reasoningDetails.length > 0 ? reasoning : undefined,\n reasoning_details: reasoningDetails,\n }\n })\n return {\n ...body,\n messages,\n ...bodyOptions(request.providerOptions),\n } as OpenRouterBody\n }),\n ),\n },\n stream: OpenAIChat.protocol.stream,\n})\n\nconst cacheControl = () => {\n const breakpoints = newBreakpoints(4)\n return (cache: CacheHint | undefined) => {\n if (cache === undefined || breakpoints.remaining === 0) return undefined\n breakpoints.remaining -= 1\n return {\n type: \"ephemeral\" as const,\n ...(ttlBucket(cache.ttlSeconds) === \"1h\" ? { ttl: \"1h\" } : {}),\n }\n }\n}\n\nconst bodyOptions = (input: unknown) => {\n const openrouter = isRecord(input) ? input : {}\n const { usage, models, provider, plugins, web_search_options, debug, user, reasoning, promptCacheKey, ...options } =\n openrouter\n return {\n ...options,\n ...(usage === undefined || usage === true\n ? { usage: { include: true } }\n : usage === false\n ? { usage: { include: false } }\n : isRecord(usage)\n ? { usage }\n : {}),\n ...(Array.isArray(models) ? { models } : {}),\n ...(isRecord(provider) ? { provider } : {}),\n ...(Array.isArray(plugins) ? { plugins } : {}),\n ...(isRecord(web_search_options) ? { web_search_options } : {}),\n ...(isRecord(debug) ? { debug } : {}),\n ...(typeof user === \"string\" ? { user } : {}),\n ...(isRecord(reasoning) ? { reasoning } : {}),\n }\n}\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: profile.provider,\n protocol,\n endpoint: Endpoint.path(\"/chat/completions\", { baseURL: profile.baseURL }),\n framing: Framing.sse,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return route.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? profile.baseURL },\n auth: AuthOptions.bearer(input, \"OPENROUTER_API_KEY\"),\n })\n}\n\nexport const configure = (input: LanguageModelOptions = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenRouterProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, OpenRouterProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B6B4A583C2C6DCB864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "1BC8D7C11953AA3664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/start.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.start,\n Effect.fn(\"cli.service.start\")(function* () {\n const transport = yield* Service.ensure(yield* ServiceConfig.options())\n process.stdout.write(transport.url + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,MACnC,EAAO,GAAG,mBAAmB,EAAE,SAAU,EAAG,CAC1C,IAAM,EAAY,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EACtE,QAAQ,OAAO,MAAM,EAAU,IAAM,CAAG,EACzC,CACH", | ||
| "debugId": "FD7250C66C68496964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/export.ts"], | ||
| "sourcesContent": [ | ||
| "import { autocomplete, cancel, intro, isCancel, log, outro } from \"@clack/prompts\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { errorMessage } from \"../../util/error\"\n\nexport default Runtime.handler(\n Commands.commands.export,\n Effect.fn(\"cli.export\")((input) =>\n Effect.gen(function* () {\n const requested = Option.getOrUndefined(input.session)\n if (!requested && !process.stdin.isTTY) {\n yield* Effect.fail(new Error(\"Pass a session ID when running without an interactive terminal\"))\n }\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const sessionID = requested\n ? requested\n : yield* Effect.gen(function* () {\n intro(\"Export session\", { output: process.stderr })\n const location = yield* Effect.tryPromise({\n try: () => client.location.get({ location: { directory: process.cwd() } }),\n catch: (cause) => cause,\n })\n const page = yield* Effect.tryPromise({\n try: () =>\n client.session.list({\n directory: location.directory,\n workspace: location.workspaceID,\n parentID: null,\n order: \"desc\",\n limit: 50,\n }),\n catch: (cause) => cause,\n })\n if (page.data.length === 0) {\n log.error(\"No sessions found\", { output: process.stderr })\n outro(\"Done\", { output: process.stderr })\n return undefined\n }\n const selected = yield* Effect.tryPromise({\n try: () =>\n autocomplete({\n message: \"Select session to export\",\n maxItems: 10,\n options: page.data.map((session) => ({\n label: session.title,\n value: session.id,\n hint: `${new Date(session.time.updated).toLocaleString()} - ${session.id.slice(-8)}`,\n })),\n output: process.stderr,\n }),\n catch: (cause) => cause,\n })\n if (isCancel(selected)) {\n cancel(\"Cancelled\", { output: process.stderr })\n process.exitCode = 130\n return undefined\n }\n outro(\"Exporting session...\", { output: process.stderr })\n return selected\n })\n if (!sessionID) return\n const data = yield* Effect.tryPromise({\n try: () => client.session.export({ sessionID, sanitize: input.sanitize }),\n catch: (cause) => cause,\n })\n process.stdout.write(JSON.stringify(data, null, 2) + EOL)\n }).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n ),\n)\n" | ||
| ], | ||
| "mappings": ";utCAIA,cAAS,WAMT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,CAAC,IACvB,EAAO,IAAI,SAAU,EAAG,CACtB,IAAM,EAAY,EAAO,eAAe,EAAM,OAAO,EACrD,GAAI,CAAC,GAAa,CAAC,QAAQ,MAAM,MAC/B,MAAO,EAAO,KAAS,MAAM,gEAAgE,CAAC,EAEhG,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EACK,EAAY,EACd,EACA,MAAO,EAAO,IAAI,SAAU,EAAG,CAC7B,EAAM,iBAAkB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EAClD,IAAM,EAAW,MAAO,EAAO,WAAW,CACxC,IAAK,IAAM,EAAO,SAAS,IAAI,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,EACzE,MAAO,CAAC,IAAU,CACpB,CAAC,EACK,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IACH,EAAO,QAAQ,KAAK,CAClB,UAAW,EAAS,UACpB,UAAW,EAAS,YACpB,SAAU,KACV,MAAO,OACP,MAAO,EACT,CAAC,EACH,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,GAAI,EAAK,KAAK,SAAW,EAAG,CAC1B,EAAI,MAAM,oBAAqB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACzD,EAAM,OAAQ,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACxC,OAEF,IAAM,EAAW,MAAO,EAAO,WAAW,CACxC,IAAK,IACH,EAAa,CACX,QAAS,2BACT,SAAU,GACV,QAAS,EAAK,KAAK,IAAI,CAAC,KAAa,CACnC,MAAO,EAAQ,MACf,MAAO,EAAQ,GACf,KAAM,GAAG,IAAI,KAAK,EAAQ,KAAK,OAAO,EAAE,eAAe,OAAO,EAAQ,GAAG,MAAM,EAAE,GACnF,EAAE,EACF,OAAQ,QAAQ,MAClB,CAAC,EACH,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,GAAI,EAAS,CAAQ,EAAG,CACtB,EAAO,YAAa,CAAE,OAAQ,QAAQ,MAAO,CAAC,EAC9C,QAAQ,SAAW,IACnB,OAGF,OADA,EAAM,uBAAwB,CAAE,OAAQ,QAAQ,MAAO,CAAC,EACjD,EACR,EACL,GAAI,CAAC,EAAW,OAChB,IAAM,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IAAM,EAAO,QAAQ,OAAO,CAAE,YAAW,SAAU,EAAM,QAAS,CAAC,EACxE,MAAO,CAAC,IAAU,CACpB,CAAC,EACD,QAAQ,OAAO,MAAM,KAAK,UAAU,EAAM,KAAM,CAAC,EAAI,CAAG,EACzD,EAAE,KACD,EAAO,MAAM,CAAC,IACZ,EAAO,KAAK,IAAM,CAChB,QAAQ,OAAO,MAAM,EAAa,CAAK,EAAI,CAAG,EAC9C,QAAQ,SAAW,EACpB,CACH,CACF,CACF,CACF", | ||
| "debugId": "6A0493BAB1D25B8F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/config/new-session-location.ts", "../tui/src/logo.ts"], | ||
| "sourcesContent": [ | ||
| "import type { LocationRef } from \"@opencode-ai/client/promise\"\n\nexport function newSessionLocation(\n mode: \"launch\" | \"inherit\",\n launchDirectory: string,\n current?: LocationRef,\n unavailable?: LocationRef,\n): LocationRef {\n if (\n mode === \"inherit\" &&\n current &&\n (current.directory !== unavailable?.directory || current.workspaceID !== unavailable.workspaceID)\n )\n return current\n return { directory: launchDirectory }\n}\n", | ||
| "export const logo = {\n left: [\" \", \"█▀▀█ █▀▀█ █▀▀█ █▀▀▄\", \"█__█ █__█ █^^^ █__█\", \"▀▀▀▀ █▀▀▀ ▀▀▀▀ ▀~~▀\"],\n right: [\" ▄ \", \"█▀▀▀ █▀▀█ █▀▀█ █▀▀█\", \"█___ █__█ █__█ █^^^\", \"▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀\"],\n}\n\nexport const go = {\n left: [\" \", \"█▀▀▀\", \"█_^█\", \"▀▀▀▀\"],\n right: [\" \", \"█▀▀█\", \"█__█\", \"▀▀▀▀\"],\n}\n" | ||
| ], | ||
| "mappings": ";AAEO,SAAS,CAAkB,CAChC,EACA,EACA,EACA,EACa,CACb,GACE,IAAS,WACT,IACC,EAAQ,YAAc,GAAa,WAAa,EAAQ,cAAgB,EAAY,aAErF,OAAO,EACT,MAAO,CAAE,UAAW,CAAgB,ECd/B,IAAM,EAAO,CAClB,KAAM,CAAC,sBAAuB,sGAAuB,yDAAuB,2FAAqB,EACjG,MAAO,CAAC,2BAAuB,sGAAuB,oDAAuB,qGAAqB,CACpG,EAEa,EAAK,CAChB,KAAM,CAAC,OAAQ,2BAAQ,iBAAQ,0BAAM,EACrC,MAAO,CAAC,OAAQ,2BAAQ,iBAAQ,0BAAM,CACxC", | ||
| "debugId": "6FC4E9EEEB22F04264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/unset.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.unset,\n Effect.fn(\"cli.service.unset\")(function* (input) {\n yield* ServiceConfig.unset(input.key, Option.getOrUndefined(input.name))\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,MACnC,EAAO,GAAG,mBAAmB,EAAE,SAAU,CAAC,EAAO,CAC/C,MAAO,EAAc,MAAM,EAAM,IAAK,EAAO,eAAe,EAAM,IAAI,CAAC,EACxE,CACH", | ||
| "debugId": "3D36A35FFE51A31964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "3C1B9575888A271D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/permission-saved.ts", "../schema/src/vcs.ts"], | ||
| "sourcesContent": [ | ||
| "export * as PermissionSaved from \"./permission-saved.js\"\n\nimport { Schema } from \"effect\"\nimport { ascending } from \"./identifier.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"PermissionSaved.ID\"),\n statics((schema) => ({ create: () => schema.make(\"psv_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Info = Schema.Struct({\n id: ID,\n projectID: ProjectID,\n action: Schema.String,\n resource: Schema.String,\n}).annotate({ identifier: \"PermissionSaved.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n", | ||
| "export * as Vcs from \"./vcs.js\"\n\nimport { Schema } from \"effect\"\nimport { NonNegativeInt, optional } from \"./schema.js\"\n\nexport const Branch = Schema.Struct({\n current: optional(Schema.String),\n default: optional(Schema.String),\n}).annotate({ identifier: \"Vcs.Branch\" })\nexport interface Branch extends Schema.Schema.Type<typeof Branch> {}\n\nexport const Info = Schema.Struct({\n branch: Branch,\n}).annotate({ identifier: \"Vcs.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const BranchList = Schema.Array(Schema.String).annotate({ identifier: \"Vcs.BranchList\" })\nexport type BranchList = typeof BranchList.Type\n\nexport const Mode = Schema.Literals([\"working\", \"branch\"]).annotate({ identifier: \"Vcs.Mode\" })\nexport type Mode = typeof Mode.Type\n\nexport const FileStatus = Schema.Struct({\n file: Schema.String,\n additions: NonNegativeInt,\n deletions: NonNegativeInt,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]),\n}).annotate({ identifier: \"Vcs.FileStatus\" })\nexport interface FileStatus extends Schema.Schema.Type<typeof FileStatus> {}\n" | ||
| ], | ||
| "mappings": ";kSAOO,IAAM,EAAK,EAAO,OAAO,KAC9B,EAAO,MAAM,oBAAoB,EACjC,EAAQ,CAAC,KAAY,CAAE,OAAQ,IAAM,EAAO,KAAK,OAAS,EAAU,CAAC,CAAE,EAAE,CAC3E,EAGa,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,UAAW,EACX,OAAQ,EAAO,OACf,SAAU,EAAO,MACnB,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,iGCb3C,IAAM,EAAS,EAAO,OAAO,CAClC,QAAS,EAAS,EAAO,MAAM,EAC/B,QAAS,EAAS,EAAO,MAAM,CACjC,CAAC,EAAE,SAAS,CAAE,WAAY,YAAa,CAAC,EAG3B,EAAO,EAAO,OAAO,CAChC,OAAQ,CACV,CAAC,EAAE,SAAS,CAAE,WAAY,UAAW,CAAC,EAGzB,EAAa,EAAO,MAAM,EAAO,MAAM,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC,EAGlF,EAAO,EAAO,SAAS,CAAC,UAAW,QAAQ,CAAC,EAAE,SAAS,CAAE,WAAY,UAAW,CAAC,EAGjF,EAAa,EAAO,OAAO,CACtC,KAAM,EAAO,OACb,UAAW,EACX,UAAW,EACX,OAAQ,EAAO,SAAS,CAAC,QAAS,UAAW,UAAU,CAAC,CAC1D,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC", | ||
| "debugId": "99BA15A1E222B0BD64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "59E01442C512077464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/workspace/driver.ts", "../core/src/workspace/sql.ts", "../core/src/workspace.ts", "../core/src/environment/files.ts", "../core/src/environment/exec-defaults.ts", "../core/src/environment/local.ts", "../core/src/environment/memory.ts", "../core/src/environment/environment.ts", "../core/src/environment/index.ts"], | ||
| "sourcesContent": [ | ||
| "export * as WorkspaceDriver from \"./driver.js\"\n\nimport { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { makeGlobalNode } from \"@opencode-ai/util/effect/app-node\"\nimport { Context, Effect, Layer, Schema } from \"effect\"\nimport type { Scope } from \"effect\"\nimport type { Driver as EnvironmentDriver } from \"../environment/driver.js\"\n\n/**\n * Smallest provider-owned JSON value required to reconnect to the same\n * provider resource. Core stores it opaquely and hands it back; only the\n * owning driver reads inside.\n */\nexport const Binding = Schema.Record(Schema.String, Schema.Json)\nexport type Binding = typeof Binding.Type\n\nexport class Error extends Schema.TaggedError<Error>()(\"WorkspaceDriver.Error\", {\n message: Schema.optional(Schema.String),\n cause: Schema.optional(Schema.Defect()),\n}) {}\n\nexport class ProviderNotFound extends Schema.TaggedError<ProviderNotFound>()(\"WorkspaceDriver.ProviderNotFound\", {\n provider: Schema.String,\n}) {}\n\nexport interface Interface {\n /**\n * Get-or-create the provider resource backing this logical workspace.\n *\n * MUST be idempotent per `workspaceID`: core retries the same ID after\n * failures and process crashes, including a crash between a successful\n * create and the binding being persisted, and another process may race the\n * same ID. Key the resource by `workspaceID` (a provider tag or a\n * deterministic name) and adopt an existing match instead of creating a\n * duplicate.\n */\n readonly create: (input: {\n readonly workspaceID: Workspace.ID\n }) => Effect.Effect<{ readonly binding: Binding }, Error>\n readonly connect: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding\n readonly saveBinding: (binding: Binding) => Effect.Effect<void>\n }) => Effect.Effect<EnvironmentDriver, Error, Scope.Scope>\n readonly suspendForIdle: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding\n readonly saveBinding: (binding: Binding) => Effect.Effect<void>\n }) => Effect.Effect<void, Error>\n /**\n * Release the provider resource for this workspace.\n *\n * `binding` is null when none was persisted: the workspace was never\n * provisioned, or provisioning was interrupted mid-create. Look up any\n * resource previously created for `workspaceID` and clean it up, treating\n * absence as success.\n */\n readonly destroy: (input: {\n readonly workspaceID: Workspace.ID\n readonly binding: Binding | null\n }) => Effect.Effect<void, Error>\n}\n\nexport const make = (driver: Interface) => driver\n\nexport interface Registry {\n readonly get: (provider: string) => Effect.Effect<Interface, ProviderNotFound>\n}\n\nexport class RegistryService extends Context.Service<RegistryService, Registry>()(\n \"@opencode/WorkspaceDriverRegistry\",\n) {}\n\nexport const registry = (drivers: Readonly<Record<string, Interface>>): Registry => ({\n get: (provider) => {\n const driver = Object.hasOwn(drivers, provider) ? drivers[provider] : undefined\n return driver ? Effect.succeed(driver) : Effect.fail(new ProviderNotFound({ provider }))\n },\n})\n\nexport const registryNode = (drivers: Readonly<Record<string, Interface>>) =>\n makeGlobalNode({\n service: RegistryService,\n layer: Layer.succeed(RegistryService, RegistryService.of(registry(drivers))),\n deps: [],\n })\n\nexport const node = registryNode({})\n", | ||
| "import { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { integer, sqliteTable, text } from \"drizzle-orm/sqlite-core\"\nimport type { WorkspaceDriver } from \"./driver.js\"\n\nexport const WorkspaceTable = sqliteTable(\"workspace\", {\n id: text().$type<Workspace.ID>().primaryKey(),\n provider: text().notNull(),\n binding: text({ mode: \"json\" }).$type<WorkspaceDriver.Binding>(),\n created_at: integer().notNull(),\n last_used_at: integer().notNull(),\n})\n", | ||
| "export * as Workspace from \"./workspace.js\"\n\nimport { Workspace } from \"@opencode-ai/schema/workspace\"\nimport { makeGlobalNode } from \"@opencode-ai/util/effect/app-node\"\nimport { eq } from \"drizzle-orm\"\nimport { Clock, Context, Deferred, Duration, Effect, Exit, FiberSet, Layer, Ref, Schedule, Schema, Scope } from \"effect\"\nimport { systemError } from \"effect/PlatformError\"\nimport { make } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver as EnvironmentDriver } from \"./environment/driver.js\"\nimport { Database } from \"./database/database.js\"\nimport { KeyedMutex } from \"./effect/keyed-mutex.js\"\nimport { WorkspaceDriver } from \"./workspace/driver.js\"\nimport { WorkspaceTable } from \"./workspace/sql.js\"\n\nexport const ID = Workspace.ID\nexport type ID = Workspace.ID\n\nexport class Info extends Schema.Class<Info>(\"Workspace.Info\")({\n id: ID,\n provider: Schema.String,\n binding: WorkspaceDriver.Binding,\n createdAt: Schema.Number,\n lastUsedAt: Schema.Number,\n}) {}\n\nexport class NotFound extends Schema.TaggedError<NotFound>()(\"Workspace.NotFound\", { workspaceID: ID }) {}\n\nexport class CreateConflict extends Schema.TaggedError<CreateConflict>()(\"Workspace.CreateConflict\", {\n workspaceID: ID,\n provider: Schema.String,\n existingProvider: Schema.String,\n}) {}\n\nexport interface Interface {\n /** Instantly commits a logical workspace ID. No provider work happens here. */\n readonly create: (input: {\n readonly id?: ID\n readonly provider: string\n }) => Effect.Effect<ID, CreateConflict | WorkspaceDriver.ProviderNotFound>\n /** Starts or joins the shared attempt that makes the backing resource real, then returns it. */\n readonly provision: (\n workspaceID: ID,\n ) => Effect.Effect<Info, NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound>\n readonly connect: (\n workspaceID: ID,\n ) => Effect.Effect<EnvironmentDriver, NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound>\n /** Makes the workspace absent; reports whether this call destroyed an existing workspace. */\n readonly destroy: (workspaceID: ID) => Effect.Effect<\n Workspace.DestroyResult,\n WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound\n >\n}\n\nexport interface Options {\n readonly idleThreshold?: Duration.Input\n readonly pollInterval?: Duration.Input\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/Workspace\") {}\n\ninterface Connection {\n readonly driver: WorkspaceDriver.Interface\n readonly environment: EnvironmentDriver\n readonly saveBinding: (binding: WorkspaceDriver.Binding) => Effect.Effect<void>\n readonly lastActivity: Ref.Ref<number>\n readonly active: Ref.Ref<number>\n readonly scope: Scope.Closeable\n}\n\ntype ReadinessError = NotFound | WorkspaceDriver.Error | WorkspaceDriver.ProviderNotFound\n\nexport const configured = (options: Options = {}) =>\n makeGlobalNode({\n service: Service,\n layer: layer(options),\n deps: [Database.node, WorkspaceDriver.node],\n })\n\nconst layer = (options: Options) =>\n Layer.effect(\n Service,\n Effect.gen(function* () {\n const db = (yield* Database.Service).db\n const registry = yield* WorkspaceDriver.RegistryService\n const lifetime = yield* Scope.Scope\n const connections = new Map<ID, Connection>()\n // Destroy cancels the racing provision body by settling the deferred.\n const attempts = new Map<ID, Deferred.Deferred<Info, ReadinessError>>()\n const locks = KeyedMutex.makeUnsafe<ID>()\n const fork = yield* FiberSet.makeRuntime<never, void, never>()\n const idleThreshold = Duration.toMillis(options.idleThreshold ?? Duration.minutes(20))\n\n const find = (workspaceID: ID) =>\n db\n .select()\n .from(WorkspaceTable)\n .where(eq(WorkspaceTable.id, workspaceID))\n .get()\n .pipe(Effect.orDie)\n\n const load = Effect.fn(\"Workspace.load\")(function* (workspaceID: ID) {\n const row = yield* find(workspaceID)\n if (!row) return yield* new NotFound({ workspaceID })\n return row\n })\n\n const saveBinding = (workspaceID: ID, binding: WorkspaceDriver.Binding) =>\n db.update(WorkspaceTable).set({ binding }).where(eq(WorkspaceTable.id, workspaceID)).run().pipe(Effect.orDie)\n\n const info = (row: typeof WorkspaceTable.$inferSelect, binding: WorkspaceDriver.Binding) =>\n new Info({\n id: row.id,\n provider: row.provider,\n binding,\n createdAt: row.created_at,\n lastUsedAt: row.last_used_at,\n })\n\n const provision = Effect.fn(\"Workspace.provision\")((workspaceID: ID) =>\n Effect.suspend(() => {\n const existing = attempts.get(workspaceID)\n if (existing) return Deferred.await(existing)\n\n const attempt = Deferred.makeUnsafe<Info, ReadinessError>()\n attempts.set(workspaceID, attempt)\n fork(\n locks\n .withLock(workspaceID)(\n Effect.gen(function* () {\n const row = yield* load(workspaceID)\n if (row.binding) return info(row, row.binding)\n const driver = yield* registry.get(row.provider)\n const result = yield* driver.create({ workspaceID })\n yield* saveBinding(workspaceID, result.binding)\n return info(row, result.binding)\n }),\n )\n .pipe(\n Effect.raceFirst(Deferred.await(attempt)),\n Effect.onExit((exit) =>\n Effect.sync(() => {\n if (attempts.get(workspaceID) === attempt) attempts.delete(workspaceID)\n Deferred.doneUnsafe(attempt, exit)\n }),\n ),\n Effect.exit,\n Effect.asVoid,\n ),\n )\n return Deferred.await(attempt)\n }),\n )\n\n const open = Effect.fn(\"Workspace.open\")(function* (workspaceID: ID) {\n const existing = connections.get(workspaceID)\n if (existing) return existing\n\n const row = yield* load(workspaceID)\n // Bindings are persisted before provision resolves and never nulled; a raced\n // destroy deletes the whole row and surfaces as NotFound from load above.\n if (!row.binding) return yield* Effect.die(`workspace ${workspaceID} has no binding after provision`)\n const driver = yield* registry.get(row.provider)\n const persistBinding = (binding: WorkspaceDriver.Binding) => saveBinding(workspaceID, binding)\n const scope = yield* Scope.fork(lifetime)\n const environment = yield* driver\n .connect({ workspaceID, binding: row.binding, saveBinding: persistBinding })\n .pipe(\n Effect.provideService(Scope.Scope, scope),\n Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))),\n )\n const now = yield* Clock.currentTimeMillis\n const connection: Connection = {\n driver,\n environment,\n saveBinding: persistBinding,\n lastActivity: yield* Ref.make(now),\n active: yield* Ref.make(0),\n scope,\n }\n connections.set(workspaceID, connection)\n yield* db\n .update(WorkspaceTable)\n .set({ last_used_at: now })\n .where(eq(WorkspaceTable.id, workspaceID))\n .run()\n .pipe(Effect.orDie)\n return connection\n })\n\n yield* Effect.gen(function* () {\n const now = yield* Clock.currentTimeMillis\n yield* Effect.forEach(\n [...connections.entries()],\n ([workspaceID, expected]) =>\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const connection = connections.get(workspaceID)\n if (connection !== expected || (yield* Ref.get(connection.active)) > 0) return\n const lastActivity = yield* Ref.get(connection.lastActivity)\n if (now - lastActivity < idleThreshold) return\n const row = yield* load(workspaceID)\n if (!row.binding) return\n // Deliberate: a racing spawn blocks, then wakes cleanly. Unlocking mid-suspend could reattach a sandbox being terminated.\n yield* connection.driver.suspendForIdle({\n workspaceID,\n binding: row.binding,\n saveBinding: connection.saveBinding,\n })\n yield* db\n .update(WorkspaceTable)\n .set({ last_used_at: lastActivity })\n .where(eq(WorkspaceTable.id, workspaceID))\n .run()\n .pipe(Effect.orDie)\n connections.delete(workspaceID)\n yield* Scope.close(connection.scope, Exit.void)\n }).pipe(Effect.catchCause((cause) => Effect.logError(\"workspace idle suspension failed\", cause))),\n ),\n { concurrency: \"unbounded\", discard: true },\n )\n }).pipe(Effect.repeat(Schedule.spaced(options.pollInterval ?? Duration.minutes(1))), Effect.forkScoped)\n\n return Service.of({\n create: Effect.fn(\"Workspace.create\")(function* (input) {\n const workspaceID = input.id ?? ID.create()\n const existing = yield* db\n .select({ provider: WorkspaceTable.provider })\n .from(WorkspaceTable)\n .where(eq(WorkspaceTable.id, workspaceID))\n .get()\n .pipe(Effect.orDie)\n if (existing) {\n if (existing.provider === input.provider) return workspaceID\n return yield* new CreateConflict({\n workspaceID,\n provider: input.provider,\n existingProvider: existing.provider,\n })\n }\n yield* registry.get(input.provider)\n const now = yield* Clock.currentTimeMillis\n const inserted = yield* db\n .insert(WorkspaceTable)\n .values({ id: workspaceID, provider: input.provider, binding: null, created_at: now, last_used_at: now })\n .onConflictDoNothing()\n .returning({ id: WorkspaceTable.id })\n .get()\n .pipe(Effect.orDie)\n if (inserted) return workspaceID\n const row = yield* load(workspaceID).pipe(Effect.orDie)\n if (row.provider !== input.provider)\n return yield* new CreateConflict({\n workspaceID,\n provider: input.provider,\n existingProvider: row.provider,\n })\n return workspaceID\n }),\n provision,\n connect: Effect.fn(\"Workspace.connect\")(function* (workspaceID) {\n const spawner = make((command) =>\n Effect.acquireRelease(\n // A live connection implies the binding is already persisted, so skip the provision hop.\n Effect.suspend(() => (connections.has(workspaceID) ? Effect.void : provision(workspaceID))).pipe(\n Effect.andThen(\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const connection = yield* open(workspaceID)\n yield* Ref.set(connection.lastActivity, yield* Clock.currentTimeMillis)\n yield* Ref.update(connection.active, (active) => active + 1)\n return connection\n }),\n ),\n ),\n Effect.mapError((cause) =>\n systemError({\n _tag: \"Unknown\",\n module: \"Workspace\",\n method: \"spawn\",\n description: `Failed to wake workspace ${workspaceID}`,\n cause,\n }),\n ),\n ),\n (connection) =>\n locks.withLock(workspaceID)(\n Effect.gen(function* () {\n yield* Ref.update(connection.active, (active) => active - 1)\n yield* Ref.set(connection.lastActivity, yield* Clock.currentTimeMillis)\n }),\n ),\n ).pipe(Effect.flatMap((connection) => connection.environment.spawner.spawn(command))),\n )\n // Overrides are connection-bound; per-spawn routing is required before any driver ships them, so they are deliberately omitted.\n return { spawner }\n }),\n destroy: Effect.fn(\"Workspace.destroy\")(function* (workspaceID) {\n // Settling the shared attempt cancels its racing provision body and fails\n // waiters with NotFound before teardown commits. Accepted tradeoffs: if the\n // locked teardown below fails, those waiters saw NotFound for a workspace\n // that still exists (the next provision retries it), and a provision racing\n // this window may briefly succeed before teardown destroys its fresh binding.\n const attempt = attempts.get(workspaceID)\n if (attempt) {\n attempts.delete(workspaceID)\n Deferred.doneUnsafe(attempt, Exit.fail(new NotFound({ workspaceID })))\n }\n return yield* locks.withLock(workspaceID)(\n Effect.gen(function* () {\n const row = yield* find(workspaceID)\n if (!row) return { destroyed: false }\n const connection = connections.get(workspaceID)\n connections.delete(workspaceID)\n if (connection) yield* Scope.close(connection.scope, Exit.void)\n // Null binding still reaches the driver: an interrupted or crashed\n // provision may have created a resource that was never persisted. A\n // provider missing from the registry cannot block deleting a\n // never-provisioned row.\n yield* registry.get(row.provider).pipe(\n Effect.flatMap((driver) => driver.destroy({ workspaceID, binding: row.binding })),\n Effect.catchTag(\"WorkspaceDriver.ProviderNotFound\", (error) =>\n row.binding ? Effect.fail(error) : Effect.void,\n ),\n )\n yield* db.delete(WorkspaceTable).where(eq(WorkspaceTable.id, workspaceID)).run().pipe(Effect.orDie)\n return { destroyed: true }\n }),\n )\n }),\n })\n }),\n )\n\nexport const node = configured()\n\n// TODO(workspace-plan): add the boot janitor and ~23h safety snapshot rotation in a later PR.\n// TODO(workspace-plan): make cold wake interruptible with a re-pin loop against janitor races.\n// TODO(workspace-plan): consider extracting a keyed shared-attempt helper (join/cancel, drop-on-settle) beside\n// KeyedMutex at end-of-series consolidation; filesystem/search.ts and session/run-coordinator.ts hand-roll the same\n// shape. Audited stdlib alternatives (rc.111): RcMap fails twice (refcount release cancels in-flight work when the\n// last waiter leaves, and one finalizer path cannot express idle-suspend vs destroy); Cache interrupts the shared\n// lookup when its last awaiter is interrupted and cannot fail waiters with NotFound on invalidation.\n", | ||
| "import { Effect, Schema } from \"effect\"\n\nexport const FileType = Schema.Literals([\"file\", \"directory\", \"symlink\", \"other\"])\nexport type FileType = typeof FileType.Type\n\nexport interface FileInfo {\n readonly type: FileType\n readonly size: number\n readonly mtimeMs: number\n}\n\nexport interface DirEntry {\n readonly name: string\n readonly type: FileType\n}\n\nexport class NotFound extends Schema.TaggedError<NotFound>()(\"Environment.NotFound\", {\n path: Schema.String,\n}) {}\n\nexport class WrongKind extends Schema.TaggedError<WrongKind>()(\"Environment.WrongKind\", {\n path: Schema.String,\n actual: FileType,\n}) {}\n\nexport class Failed extends Schema.TaggedError<Failed>()(\"Environment.Failed\", {\n path: Schema.String,\n cause: Schema.Defect(),\n}) {}\n\nexport interface FilesImpl {\n /**\n * Content operations (`read`, `list`) follow final symlinks; metadata operations (`stat` and entry\n * tags returned by `list`) do not. `info` describes the target file whose bytes are returned.\n * The process-backed default caps collected output at 64 MiB; larger whole-file reads fail with\n * `Failed`, so callers must use ranges for larger files.\n */\n readonly read: (\n path: string,\n range?: { readonly offset: number; readonly length: number },\n ) => Effect.Effect<{ readonly info: FileInfo; readonly bytes: Uint8Array }, NotFound | WrongKind | Failed>\n readonly write: (path: string, bytes: Uint8Array) => Effect.Effect<void, Failed>\n /** Describes the path entry itself, so a final symlink is reported as `symlink` rather than followed. */\n readonly stat: (path: string) => Effect.Effect<FileInfo, NotFound | Failed>\n /** Follows a final symlink to the listed directory while preserving each returned entry's own type. */\n readonly list: (path: string) => Effect.Effect<ReadonlyArray<DirEntry>, NotFound | WrongKind | Failed>\n readonly remove: (path: string) => Effect.Effect<void, Failed>\n readonly move: (from: string, to: string) => Effect.Effect<void, NotFound | Failed>\n readonly mkdir: (path: string) => Effect.Effect<void, Failed>\n}\n\nexport interface Files extends FilesImpl {}\n\n/**\n * Derives a follow-stat kind from the lstat-like Files contract. A dangling\n * symlink fails with `NotFound`.\n */\nexport const typeFollowing = (files: Files, path: string) =>\n files.stat(path).pipe(\n Effect.flatMap((info) =>\n info.type === \"symlink\"\n ? files.read(path, { offset: 0, length: 0 }).pipe(\n Effect.map((result) => result.info.type),\n Effect.catchTag(\"Environment.WrongKind\", (error) => Effect.succeed(error.actual)),\n )\n : Effect.succeed(info.type),\n ),\n )\n\nexport * as EnvironmentFiles from \"./files.js\"\n", | ||
| "import { Effect, Stream } from \"effect\"\nimport { ChildProcess } from \"effect/unstable/process\"\nimport type { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport { collectStream } from \"@opencode-ai/util/process\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FileType, type FilesImpl } from \"./files.js\"\n\n/**\n * Files derived from spawning processes: one process per intent, \"$1\" is\n * always the target path. Scripts report classification through an exit-code\n * protocol (44/45/46) so failures never require parsing localized error text;\n * LC_ALL=C pins the one stderr match that remains. Requires GNU coreutils and\n * findutils in the target image — BSD and busybox userlands will not work.\n * Malformed output from these scripts is our own bug and dies as a defect.\n */\n\nconst MAX_DATA_BYTES = 64 * 1024 * 1024\nconst MAX_ERROR_BYTES = 64 * 1024\nconst NOT_FOUND = 44\nconst WRONG_KIND = 45\nconst FAILED = 46\nconst TAB = \"\\t\"\n\nconst loadMetadata = (flags = \"\") => `\nmetadata=$(stat ${flags} -c '%F${TAB}%s${TAB}%Y' -- \"$1\" 2>&1) || {\n case \"$metadata\" in\n *'No such file or directory'*|*'Not a directory'*) exit ${NOT_FOUND} ;;\n *) printf '%s' \"$metadata\" >&2; exit ${FAILED} ;;\n esac\n}\n`\n\nconst statScript = `\n${loadMetadata()}\nprintf '%s\\n' \"$metadata\"\n`\n\nconst readScript = `\n${loadMetadata(\"-L\")}\nkind=\\${metadata%%${TAB}*}\nif [ \"$kind\" != 'regular file' ] && [ \"$kind\" != 'regular empty file' ]; then\n printf '%s' \"$kind\" >&2\n exit ${WRONG_KIND}\nfi\nprintf '%s\\n' \"$metadata\"\nif [ \"$2\" = range ]; then\n dd if=\"$1\" iflag=skip_bytes,count_bytes skip=\"$3\" count=\"$4\" status=none\nelse\n cat -- \"$1\"\nfi\n`\n\nconst listScript = `\n${loadMetadata(\"-L\")}\nkind=\\${metadata%%${TAB}*}\nif [ \"$kind\" != directory ]; then\n printf '%s' \"$kind\" >&2\n exit ${WRONG_KIND}\nfi\nfind -H \"$1\" -mindepth 1 -maxdepth 1 -printf '%y\\\\0%f\\\\0'\n`\n\nconst moveScript = `\n${loadMetadata()}\nmv -- \"$1\" \"$2\"\n`\n\ninterface Result {\n readonly exitCode: number\n readonly stdout: Uint8Array\n readonly stderr: Uint8Array\n}\n\nexport const execDefaults = (spawner: ChildProcessSpawner[\"Service\"]): FilesImpl => {\n const run = (\n path: string,\n script: string,\n args: ReadonlyArray<string> = [],\n stdin?: Uint8Array,\n ): Effect.Effect<Result, Failed> =>\n Effect.scoped(\n Effect.gen(function* () {\n const command = ChildProcess.make(\"sh\", [\"-c\", script, \"sh\", path, ...args], {\n env: { LC_ALL: \"C\" },\n extendEnv: true,\n stdin: stdin === undefined ? undefined : Stream.make(stdin),\n })\n const handle = yield* spawner.spawn(command).pipe(Effect.mapError((cause) => new Failed({ path, cause })))\n const [stdout, stderr, exitCode] = yield* Effect.all(\n [\n collectStream(handle.stdout, MAX_DATA_BYTES),\n collectStream(handle.stderr, MAX_ERROR_BYTES),\n handle.exitCode,\n ],\n { concurrency: \"unbounded\" },\n ).pipe(Effect.mapError((cause) => new Failed({ path, cause })))\n if (stdout.truncated || stderr.truncated) {\n return yield* new Failed({ path, cause: new Error(\"Process output exceeded its collection limit\") })\n }\n return { exitCode, stdout: stdout.buffer, stderr: stderr.buffer }\n }),\n )\n\n const classify = <A>(\n path: string,\n result: Result,\n success: (stdout: Uint8Array) => A,\n ): Effect.Effect<A, NotFound | WrongKind | Failed> => {\n if (result.exitCode === 0) return Effect.sync(() => success(result.stdout))\n if (result.exitCode === NOT_FOUND) return Effect.fail(new NotFound({ path }))\n if (result.exitCode === WRONG_KIND) {\n return Effect.fail(new WrongKind({ path, actual: parseType(new TextDecoder().decode(result.stderr)) }))\n }\n return Effect.fail(processFailure(path, result))\n }\n\n const complete = (path: string, result: Result) =>\n result.exitCode === 0 ? Effect.void : Effect.fail(processFailure(path, result))\n\n return {\n stat: (path) => run(path, statScript).pipe(Effect.flatMap((result) => classifyPlain(path, result, parseInfo))),\n read: (path, range) =>\n run(\n path,\n readScript,\n range === undefined ? [\"whole\"] : [\"range\", String(range.offset), String(range.length)],\n ).pipe(\n Effect.flatMap((result) =>\n classify(path, result, (stdout) => {\n const newline = stdout.indexOf(10)\n if (newline < 0) throw new Error(\"Missing read metadata header\")\n return {\n info: parseInfo(stdout.slice(0, newline)),\n bytes: stdout.slice(newline + 1),\n }\n }),\n ),\n ),\n write: (path, bytes) =>\n run(path, `mkdir -p \"$(dirname \"$1\")\" && cat > \"$1\"`, [], bytes).pipe(\n Effect.flatMap((result) => complete(path, result)),\n ),\n list: (path) => run(path, listScript).pipe(Effect.flatMap((result) => classify(path, result, parseList))),\n remove: (path) => run(path, `rm -rf -- \"$1\"`).pipe(Effect.flatMap((result) => complete(path, result))),\n move: (from, to) =>\n run(from, moveScript, [to]).pipe(Effect.flatMap((result) => classifyPlain(from, result, () => undefined))),\n mkdir: (path) => run(path, `mkdir -p -- \"$1\"`).pipe(Effect.flatMap((result) => complete(path, result))),\n }\n}\n\n/** `classify` for scripts whose protocol never reports WrongKind. */\nconst classifyPlain = <A>(\n path: string,\n result: Result,\n success: (stdout: Uint8Array) => A,\n): Effect.Effect<A, NotFound | Failed> => {\n if (result.exitCode === 0) return Effect.sync(() => success(result.stdout))\n if (result.exitCode === NOT_FOUND) return Effect.fail(new NotFound({ path }))\n return Effect.fail(processFailure(path, result))\n}\n\nconst processFailure = (path: string, result: Result) =>\n new Failed({\n path,\n cause: new Error(new TextDecoder().decode(result.stderr).trim() || `Process exited with code ${result.exitCode}`),\n })\n\nconst parseInfo = (bytes: Uint8Array): FileInfo => {\n const [rawType, rawSize, rawMtime] = new TextDecoder().decode(bytes).trim().split(TAB)\n const size = Number(rawSize)\n const mtimeMs = Number(rawMtime) * 1_000\n if (!rawType || !Number.isFinite(size) || !Number.isFinite(mtimeMs)) throw new Error(\"Invalid stat output\")\n return { type: parseType(rawType), size, mtimeMs }\n}\n\nconst parseType = (value: string): FileType => {\n if (value === \"regular file\" || value === \"regular empty file\" || value === \"f\") return \"file\"\n if (value === \"directory\" || value === \"d\") return \"directory\"\n if (value === \"symbolic link\" || value === \"l\") return \"symlink\"\n return \"other\"\n}\n\nconst parseList = (bytes: Uint8Array) => {\n const fields = new TextDecoder().decode(bytes).split(\"\\0\")\n fields.pop()\n if (fields.length % 2 !== 0) throw new Error(\"Invalid find output\")\n return Array.from({ length: fields.length / 2 }, (_, index) => ({\n name: fields[index * 2 + 1],\n type: parseType(fields[index * 2]),\n }))\n}\n\nexport * as EnvironmentExecDefaults from \"./exec-defaults.js\"\n", | ||
| "import fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { Effect } from \"effect\"\nimport type { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver } from \"./driver.js\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from \"./files.js\"\n\n/**\n * The host filesystem binding. Deliberately raw node:fs rather than effect's\n * FileSystem service or FSUtil: the contract needs lstat semantics (stat\n * reports \"symlink\") and typed directory entries, and effect's node\n * FileSystem provides neither — its stat always follows symlinks and\n * readDirectory returns names only. FSUtil hits the same gap and its\n * readDirectoryEntries already bypasses to raw node readdir internally.\n * Nothing above the environment seam touches node:fs.\n */\nexport const makeLocalDriver = (spawner: ChildProcessSpawner[\"Service\"]): Driver => {\n const overrides: FilesImpl = {\n read: (value, range) =>\n Effect.gen(function* () {\n const info = yield* stat(value, true)\n if (info.type !== \"file\") return yield* new WrongKind({ path: value, actual: info.type })\n if (range === undefined) {\n const bytes = yield* attempt(value, () => fs.readFile(value), true)\n return { info, bytes }\n }\n const bytes = yield* attempt(\n value,\n async () => {\n const handle = await fs.open(value, \"r\")\n try {\n const buffer = new Uint8Array(range.length)\n const result = await handle.read(buffer, 0, range.length, range.offset)\n return buffer.subarray(0, result.bytesRead)\n } finally {\n await handle.close()\n }\n },\n true,\n )\n return { info, bytes }\n }),\n stat: (value) => stat(value, false),\n list: (value) =>\n Effect.gen(function* () {\n const info = yield* stat(value, true)\n if (info.type !== \"directory\") return yield* new WrongKind({ path: value, actual: info.type })\n const entries = yield* attempt(value, () => fs.readdir(value, { withFileTypes: true }), true)\n return entries.map((entry) => ({ name: entry.name, type: fileType(entry) }))\n }),\n write: (value, bytes) =>\n attempt(value, async () => {\n await fs.mkdir(path.dirname(value), { recursive: true })\n await fs.writeFile(value, bytes)\n }),\n remove: (value) => attempt(value, () => fs.rm(value, { recursive: true, force: true })),\n move: (from, to) =>\n Effect.gen(function* () {\n yield* stat(from, false)\n const destination = yield* stat(to, false).pipe(\n Effect.map((info) => (info.type === \"directory\" ? path.join(to, path.basename(from)) : to)),\n Effect.catchIf(\n (error) => error instanceof NotFound,\n () => Effect.succeed(to),\n ),\n )\n yield* attempt(from, () => fs.rename(from, destination))\n }),\n mkdir: (value) => attempt(value, () => fs.mkdir(value, { recursive: true }).then(() => undefined)),\n }\n\n return { spawner, overrides }\n}\n\nconst stat = (value: string, follow: boolean) =>\n attempt(value, () => (follow ? fs.stat(value) : fs.lstat(value)), true).pipe(\n Effect.map((stats): FileInfo => ({ type: fileType(stats), size: stats.size, mtimeMs: stats.mtimeMs })),\n )\n\nconst fileType = (entry: { isFile(): boolean; isDirectory(): boolean; isSymbolicLink(): boolean }): FileType => {\n if (entry.isFile()) return \"file\"\n if (entry.isDirectory()) return \"directory\"\n if (entry.isSymbolicLink()) return \"symlink\"\n return \"other\"\n}\n\nfunction attempt<A>(value: string, run: () => Promise<A>): Effect.Effect<A, Failed>\nfunction attempt<A>(value: string, run: () => Promise<A>, missing: true): Effect.Effect<A, NotFound | Failed>\nfunction attempt<A>(value: string, run: () => Promise<A>, missing = false) {\n return Effect.tryPromise({\n try: run,\n catch: (cause) =>\n missing && isMissing(cause) ? new NotFound({ path: value }) : new Failed({ path: value, cause }),\n })\n}\n\nconst isMissing = (cause: unknown) =>\n cause !== null &&\n typeof cause === \"object\" &&\n \"code\" in cause &&\n (cause.code === \"ENOENT\" || cause.code === \"ENOTDIR\")\n\nexport * as EnvironmentLocal from \"./local.js\"\n", | ||
| "import path from \"node:path\"\nimport { Effect, PlatformError } from \"effect\"\nimport { make } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Driver } from \"./driver.js\"\nimport { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from \"./files.js\"\n\ntype Node =\n | { readonly type: \"file\"; readonly bytes: Uint8Array; readonly mtimeMs: number }\n | { readonly type: \"directory\"; readonly mtimeMs: number }\n | { readonly type: \"symlink\"; readonly target: string; readonly mtimeMs: number }\n\nexport interface MemoryDriver extends Driver {\n readonly symlink: (target: string, path: string) => Effect.Effect<void, Failed>\n}\n\nexport const makeMemoryDriver = (): MemoryDriver => {\n const nodes = new Map<string, Node>([[\"/\", { type: \"directory\", mtimeMs: Date.now() }]])\n const key = (value: string) => path.posix.resolve(\"/\", value)\n const info = (node: Node): FileInfo => ({\n type: node.type,\n size:\n node.type === \"file\"\n ? node.bytes.length\n : node.type === \"symlink\"\n ? new TextEncoder().encode(node.target).length\n : 0,\n mtimeMs: node.mtimeMs,\n })\n const resolveKey = (value: string, followFinal: boolean, seen = new Set<string>()): string | undefined => {\n const normalized = key(value)\n const parts = normalized.split(\"/\").filter(Boolean)\n const base = \"/\"\n const walk = (current: string, index: number): string | undefined => {\n if (index === parts.length) return current\n const part = parts[index]\n const candidate = path.posix.join(current, part)\n const node = nodes.get(candidate)\n if (node?.type !== \"symlink\" || (!followFinal && index === parts.length - 1)) return walk(candidate, index + 1)\n if (seen.has(candidate)) return undefined\n seen.add(candidate)\n const target = path.posix.resolve(path.posix.dirname(candidate), node.target)\n return resolveKey(path.posix.join(target, ...parts.slice(index + 1)), followFinal, seen)\n }\n return walk(base, 0)\n }\n const lookup = (value: string) => nodes.get(resolveKey(value, false) ?? key(value))\n const requireParent = (value: string) => {\n const parentPath = path.posix.dirname(key(value))\n const parent = nodes.get(resolveKey(parentPath, true) ?? parentPath)\n if (!parent) throw new Error(`Parent directory does not exist: ${path.posix.dirname(value)}`)\n if (parent.type !== \"directory\") throw new Error(`Parent is not a directory: ${path.posix.dirname(value)}`)\n }\n const mkdirSync = (value: string) => {\n const target = resolveKey(value, false) ?? key(value)\n const existing = nodes.get(target)\n if (existing?.type === \"directory\") return\n if (existing) throw new Error(`Path is not a directory: ${value}`)\n const parent = path.posix.dirname(target)\n if (parent !== target) mkdirSync(parent)\n nodes.set(target, { type: \"directory\", mtimeMs: Date.now() })\n }\n const failed = (value: string, cause: unknown) => new Failed({ path: value, cause })\n const overrides: FilesImpl = {\n stat: (value) => {\n const node = lookup(value)\n return node ? Effect.succeed(info(node)) : Effect.fail(new NotFound({ path: value }))\n },\n read: (value, range) => {\n const original = lookup(value)\n if (!original) return Effect.fail(new NotFound({ path: value }))\n if (original.type === \"directory\") return Effect.fail(new WrongKind({ path: value, actual: \"directory\" }))\n const resolved = resolveKey(value, true)\n const node = resolved === undefined ? undefined : nodes.get(resolved)\n if (!node) return Effect.fail(new NotFound({ path: value }))\n if (node.type !== \"file\") return Effect.fail(new WrongKind({ path: value, actual: node.type }))\n const bytes = range === undefined ? node.bytes : node.bytes.subarray(range.offset, range.offset + range.length)\n return Effect.succeed({ info: info(node), bytes: bytes.slice() })\n },\n write: (value, bytes) =>\n Effect.try({\n try: () => {\n mkdirSync(path.posix.dirname(key(value)))\n const existing = lookup(value)\n if (existing?.type === \"directory\") throw new Error(`Path is a directory: ${value}`)\n const target = existing?.type === \"symlink\" ? resolveKey(value, true) : resolveKey(value, false)\n if (!target) throw new Error(`Cannot resolve symlink: ${value}`)\n requireParent(target)\n nodes.set(target, { type: \"file\", bytes: bytes.slice(), mtimeMs: Date.now() })\n },\n catch: (cause) => failed(value, cause),\n }),\n list: (value) => {\n const target = resolveKey(value, true) ?? key(value)\n const node = nodes.get(target)\n if (!node) return Effect.fail(new NotFound({ path: value }))\n if (node.type !== \"directory\") return Effect.fail(new WrongKind({ path: value, actual: node.type }))\n const entries = [...nodes.entries()]\n .filter(([entry]) => entry !== target && path.posix.dirname(entry) === target)\n .map(([entry, child]) => ({ name: path.posix.basename(entry), type: child.type satisfies FileType }))\n .sort((a, b) => a.name.localeCompare(b.name))\n return Effect.succeed(entries)\n },\n remove: (value) =>\n Effect.sync(() => {\n const target = resolveKey(value, false) ?? key(value)\n for (const entry of nodes.keys()) {\n if (entry === target || entry.startsWith(`${target}/`)) nodes.delete(entry)\n }\n }),\n move: (from, to) => {\n const source = resolveKey(from, false) ?? key(from)\n const node = nodes.get(source)\n if (!node) return Effect.fail(new NotFound({ path: from }))\n return Effect.try({\n try: () => {\n const requested = resolveKey(to, false) ?? key(to)\n const destination =\n nodes.get(requested)?.type === \"directory\"\n ? path.posix.join(requested, path.posix.basename(source))\n : requested\n if (node.type === \"directory\" && destination.startsWith(`${source}/`)) {\n throw new Error(`Cannot move a directory into itself: ${from}`)\n }\n const existing = nodes.get(destination)\n if (node.type === \"directory\" && existing && existing.type !== \"directory\") {\n throw new Error(`Cannot overwrite a non-directory with a directory: ${to}`)\n }\n requireParent(destination)\n const moved = [...nodes.entries()].filter(([entry]) => entry === source || entry.startsWith(`${source}/`))\n for (const [entry] of moved) nodes.delete(entry)\n for (const [entry, child] of moved) nodes.set(`${destination}${entry.slice(source.length)}`, child)\n },\n catch: (cause) => failed(from, cause),\n })\n },\n mkdir: (value) => Effect.try({ try: () => mkdirSync(value), catch: (cause) => failed(value, cause) }),\n }\n\n const spawner = make((command) =>\n Effect.suspend(() => {\n const description = command._tag === \"StandardCommand\" ? command.command : \"pipeline\"\n return Effect.fail(\n PlatformError.systemError({\n _tag: \"Unknown\",\n module: \"EnvironmentMemory\",\n method: \"spawn\",\n pathOrDescriptor: description,\n cause: failed(description, new Error(\"The memory driver cannot spawn processes\")),\n }),\n )\n }),\n )\n\n return {\n spawner,\n overrides,\n symlink: (target, value) =>\n Effect.try({\n try: () => {\n requireParent(value)\n nodes.set(resolveKey(value, false) ?? key(value), { type: \"symlink\", target, mtimeMs: Date.now() })\n },\n catch: (cause) => failed(value, cause),\n }),\n }\n}\n\nexport * as EnvironmentMemory from \"./memory.js\"\n", | ||
| "import { CrossSpawnSpawner } from \"@opencode-ai/util/cross-spawn-spawner\"\nimport { makeLocationNode } from \"@opencode-ai/util/effect/app-node\"\nimport { Context, Effect, Layer } from \"effect\"\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\"\nimport type { Files } from \"./files.js\"\nimport { makeFiles } from \"./index.js\"\nimport { makeLocalDriver } from \"./local.js\"\nimport { Location } from \"../location.js\"\nimport { Workspace } from \"../workspace.js\"\n\nexport interface Interface {\n readonly files: Files\n readonly spawner: ChildProcessSpawner[\"Service\"]\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@opencode/Environment\") {}\n\nconst layer = Layer.effect(\n Service,\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner\n const location = yield* Location.Service\n const workspace = yield* Workspace.Service\n const driver = location.workspaceID\n ? yield* workspace.connect(location.workspaceID).pipe(\n // Environment has no error channel; an unknown or destroyed placement is a configuration defect by design.\n Effect.mapError(\n (cause) => new Error(`Failed to bind Environment to workspace ${location.workspaceID}`, { cause }),\n ),\n Effect.orDie,\n )\n : makeLocalDriver(spawner)\n return Service.of({ files: makeFiles(driver), spawner: driver.spawner })\n }),\n)\n\nexport const node = makeLocationNode({\n service: Service,\n layer,\n deps: [CrossSpawnSpawner.node, Location.node, Workspace.node],\n})\n\nexport * as EnvironmentService from \"./environment.js\"\n", | ||
| "export * as Environment from \"./index.js\"\n\nexport { type Driver } from \"./driver.js\"\nexport {\n type DirEntry,\n Failed,\n type FileInfo,\n type Files,\n type FilesImpl,\n type FileType,\n NotFound,\n typeFollowing,\n WrongKind,\n} from \"./files.js\"\nexport { execDefaults } from \"./exec-defaults.js\"\nexport { makeLocalDriver } from \"./local.js\"\nexport { makeMemoryDriver, type MemoryDriver } from \"./memory.js\"\nexport { type Interface, node, Service } from \"./environment.js\"\n\nimport type { Driver } from \"./driver.js\"\nimport { execDefaults } from \"./exec-defaults.js\"\nimport type { Files } from \"./files.js\"\n\nexport const makeFiles = (driver: Driver): Files => ({\n ...execDefaults(driver.spawner),\n ...driver.overrides,\n})\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9B84F1B8833C134364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-ini@3.973.14/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js"], | ||
| "sourcesContent": [ | ||
| "import { getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { resolveProfileData } from \"./resolveProfileData\";\nexport const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-ini - fromIni\");\n const profiles = await parseKnownFiles(init);\n return resolveProfileData(getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n }), profiles, init, callerClientConfig);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { isAssumeRoleProfile, resolveAssumeRoleCredentials } from \"./resolveAssumeRoleCredentials\";\nimport { isLoginProfile, resolveLoginCredentials } from \"./resolveLoginCredentials\";\nimport { isProcessProfile, resolveProcessCredentials } from \"./resolveProcessCredentials\";\nimport { isSsoProfile, resolveSsoCredentials } from \"./resolveSsoCredentials\";\nimport { isStaticCredsProfile, resolveStaticCredentials } from \"./resolveStaticCredentials\";\nimport { isWebIdentityProfile, resolveWebIdentityCredentials } from \"./resolveWebIdentityCredentials\";\nexport const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options, callerClientConfig);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, data, options, callerClientConfig);\n }\n if (isLoginProfile(data)) {\n return resolveLoginCredentials(profileName, options, callerClientConfig);\n }\n throw new CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger });\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, getProfileName } from \"@smithy/core/config\";\nimport { resolveCredentialSource } from \"./resolveCredentialSource\";\nexport const isAssumeRoleProfile = (arg, { profile = \"default\", logger } = {}) => {\n return (Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 &&\n (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger })));\n};\nconst isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => {\n const withSourceProfile = typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\";\n if (withSourceProfile) {\n logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);\n }\n return withSourceProfile;\n};\nconst isCredentialSourceProfile = (arg, { profile, logger }) => {\n const withProviderProfile = typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\";\n if (withProviderProfile) {\n logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);\n }\n return withProviderProfile;\n};\nexport const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)\");\n const profileData = profiles[profileName];\n const { source_profile, region } = profileData;\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer } = await import(\"@aws-sdk/nested-clients/sts\");\n options.roleAssumer = getDefaultRoleAssumer({\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: {\n ...callerClientConfig,\n ...options?.parentClientConfig,\n region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region,\n },\n }, options.clientPlugins);\n }\n if (source_profile && source_profile in visitedProfiles) {\n throw new CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` +\n ` ${getProfileName(options)}. Profiles visited: ` +\n Object.keys(visitedProfiles).join(\", \"), { logger: options.logger });\n }\n options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`);\n const sourceCredsProvider = source_profile\n ? resolveProfileData(source_profile, profiles, options, callerClientConfig, {\n ...visitedProfiles,\n [source_profile]: true,\n }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {}))\n : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))();\n if (isCredentialSourceWithoutRoleArn(profileData)) {\n return sourceCredsProvider.then((creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SOURCE_PROFILE\", \"o\"));\n }\n else {\n const params = {\n RoleArn: profileData.role_arn,\n RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: profileData.external_id,\n DurationSeconds: parseInt(profileData.duration_seconds || \"3600\", 10),\n };\n const { mfa_serial } = profileData;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false });\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SOURCE_PROFILE\", \"o\"));\n }\n};\nconst isCredentialSourceWithoutRoleArn = (section) => {\n return !section.role_arn && !!section.credential_source;\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { chain, CredentialsProviderError } from \"@smithy/core/config\";\nexport const resolveCredentialSource = (credentialSource, profileName, logger) => {\n const sourceProvidersMap = {\n EcsContainer: async (options) => {\n const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n const { fromContainerMetadata } = await import(\"@smithy/credential-provider-imds\");\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is EcsContainer\");\n return async () => chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider);\n },\n Ec2InstanceMetadata: async (options) => {\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata\");\n const { fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n return async () => fromInstanceMetadata(options)().then(setNamedProvider);\n },\n Environment: async (options) => {\n logger?.debug(\"@aws-sdk/credential-provider-ini - credential_source is Environment\");\n const { fromEnv } = await import(\"@aws-sdk/credential-provider-env\");\n return async () => fromEnv(options)().then(setNamedProvider);\n },\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n }\n else {\n throw new CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` +\n `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger });\n }\n};\nconst setNamedProvider = (creds) => setCredentialFeature(creds, \"CREDENTIALS_PROFILE_NAMED_PROVIDER\", \"p\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isLoginProfile = (data) => {\n return Boolean(data && data.login_session);\n};\nexport const resolveLoginCredentials = async (profileName, options, callerClientConfig) => {\n const { fromLoginCredentials } = await import(\"@aws-sdk/credential-provider-login\");\n const credentials = await fromLoginCredentials({\n ...options,\n profile: profileName,\n })({ callerClientConfig });\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_LOGIN\", \"AC\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isProcessProfile = (arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\";\nexport const resolveProcessCredentials = async (options, profile) => {\n const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n const credentials = await fromProcess({\n ...options,\n profile,\n })();\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_PROCESS\", \"v\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => {\n const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n return fromSSO({\n profile,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig,\n clientConfig: options.clientConfig,\n })({\n callerClientConfig,\n }).then((creds) => {\n if (profileData.sso_session) {\n return setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SSO\", \"r\");\n }\n else {\n return setCredentialFeature(creds, \"CREDENTIALS_PROFILE_SSO_LEGACY\", \"t\");\n }\n });\n};\nexport const isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_session === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isStaticCredsProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.aws_access_key_id === \"string\" &&\n typeof arg.aws_secret_access_key === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.aws_account_id) > -1;\nexport const resolveStaticCredentials = async (profile, options) => {\n options?.logger?.debug(\"@aws-sdk/credential-provider-ini - resolveStaticCredentials\");\n const credentials = {\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }),\n ...(profile.aws_account_id && { accountId: profile.aws_account_id }),\n };\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE\", \"n\");\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const isWebIdentityProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.web_identity_token_file === \"string\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1;\nexport const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => {\n const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n const credentials = await fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig,\n })({\n callerClientConfig,\n });\n return setCredentialFeature(credentials, \"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN\", \"q\");\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CD3198955DA6E24D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode, type PluginInfo } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { Config } from \"../../../config\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { discoverTuiPlugins, tuiPluginDirectories } from \"@opencode-ai/tui/plugin/discovery\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.list,\n Effect.fn(\"cli.plugin.list\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.plugin.list({ location: { directory: process.cwd() } }))\n const config = yield* Config.Service\n const global = yield* Global.Service\n const info = yield* config.get()\n const discovered = yield* Effect.promise(() =>\n tuiPluginDirectories(process.cwd(), global.config).then(discoverTuiPlugins),\n )\n const output = format(\n response.data,\n [\n ...(info.plugins ?? []).flatMap((entry) => {\n const target = typeof entry === \"string\" ? entry : entry.package\n return target.startsWith(\"-\") ? [] : [{ target, source: \"configured\" as const }]\n }),\n ...discovered.map((target) => ({ target, source: \"discovered\" as const })),\n ],\n input.builtin,\n )\n if (!output) {\n process.stdout.write(\"No plugins found\" + EOL)\n return\n }\n process.stdout.write(output + EOL)\n }),\n)\n\nexport function format(\n plugins: readonly PluginInfo[],\n tui: ReadonlyArray<{ readonly target: string; readonly source: \"configured\" | \"discovered\" }>,\n builtin = false,\n) {\n const server = plugins\n .filter((plugin) => builtin || plugin.source.type !== \"builtin\")\n .toSorted((a, b) => name(a).localeCompare(name(b)))\n .map((plugin) => `${name(plugin)} (${plugin.status})`)\n const advertised = plugins.flatMap((plugin) =>\n plugin.status === \"active\" && plugin.tui && plugin.source.type === \"package\"\n ? [{ target: plugin.source.package, source: \"advertised\" as const }]\n : [],\n )\n const targets = [...tui, ...advertised]\n .filter((plugin, index, all) => all.findIndex((candidate) => candidate.target === plugin.target) === index)\n .toSorted((a, b) => a.target.localeCompare(b.target))\n .map((plugin) => `${plugin.target} (${plugin.source})`)\n return [\n targets.length ? [\"TUI\", ...targets].join(EOL) : undefined,\n server.length ? [\"Server\", ...server].join(EOL) : undefined,\n ]\n .filter((section) => section !== undefined)\n .join(EOL + EOL)\n}\n\nfunction name(plugin: PluginInfo) {\n if (plugin.id) return plugin.id\n if (plugin.source.type === \"package\") return plugin.source.package\n if (plugin.source.type === \"local\") return plugin.source.path\n return plugin.source.type\n}\n" | ||
| ], | ||
| "mappings": ";o/BAAA,cAAS,WAWT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,KAClC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAW,MAAO,EAAO,QAAQ,IAAM,EAAO,OAAO,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EACrG,EAAS,MAAO,EAAO,QACvB,EAAS,MAAO,EAAO,QACvB,EAAO,MAAO,EAAO,IAAI,EACzB,EAAa,MAAO,EAAO,QAAQ,IACvC,EAAqB,QAAQ,IAAI,EAAG,EAAO,MAAM,EAAE,KAAK,CAAkB,CAC5E,EACM,EAAS,EACb,EAAS,KACT,CACE,IAAI,EAAK,SAAW,CAAC,GAAG,QAAQ,CAAC,IAAU,CACzC,IAAM,EAAS,OAAO,IAAU,SAAW,EAAQ,EAAM,QACzD,OAAO,EAAO,WAAW,GAAG,EAAI,CAAC,EAAI,CAAC,CAAE,SAAQ,OAAQ,YAAsB,CAAC,EAChF,EACD,GAAG,EAAW,IAAI,CAAC,KAAY,CAAE,SAAQ,OAAQ,YAAsB,EAAE,CAC3E,EACA,EAAM,OACR,EACA,GAAI,CAAC,EAAQ,CACX,QAAQ,OAAO,MAAM,mBAAqB,CAAG,EAC7C,OAEF,QAAQ,OAAO,MAAM,EAAS,CAAG,EAClC,CACH,EAEO,SAAS,CAAM,CACpB,EACA,EACA,EAAU,GACV,CACA,IAAM,EAAS,EACZ,OAAO,CAAC,IAAW,GAAW,EAAO,OAAO,OAAS,SAAS,EAC9D,SAAS,CAAC,EAAG,IAAM,EAAK,CAAC,EAAE,cAAc,EAAK,CAAC,CAAC,CAAC,EACjD,IAAI,CAAC,IAAW,GAAG,EAAK,CAAM,MAAM,EAAO,SAAS,EACjD,EAAa,EAAQ,QAAQ,CAAC,IAClC,EAAO,SAAW,UAAY,EAAO,KAAO,EAAO,OAAO,OAAS,UAC/D,CAAC,CAAE,OAAQ,EAAO,OAAO,QAAS,OAAQ,YAAsB,CAAC,EACjE,CAAC,CACP,EACM,EAAU,CAAC,GAAG,EAAK,GAAG,CAAU,EACnC,OAAO,CAAC,EAAQ,EAAO,IAAQ,EAAI,UAAU,CAAC,IAAc,EAAU,SAAW,EAAO,MAAM,IAAM,CAAK,EACzG,SAAS,CAAC,EAAG,IAAM,EAAE,OAAO,cAAc,EAAE,MAAM,CAAC,EACnD,IAAI,CAAC,IAAW,GAAG,EAAO,WAAW,EAAO,SAAS,EACxD,MAAO,CACL,EAAQ,OAAS,CAAC,MAAO,GAAG,CAAO,EAAE,KAAK,CAAG,EAAI,OACjD,EAAO,OAAS,CAAC,SAAU,GAAG,CAAM,EAAE,KAAK,CAAG,EAAI,MACpD,EACG,OAAO,CAAC,IAAY,IAAY,MAAS,EACzC,KAAK,EAAM,CAAG,EAGnB,SAAS,CAAI,CAAC,EAAoB,CAChC,GAAI,EAAO,GAAI,OAAO,EAAO,GAC7B,GAAI,EAAO,OAAO,OAAS,UAAW,OAAO,EAAO,OAAO,QAC3D,GAAI,EAAO,OAAO,OAAS,QAAS,OAAO,EAAO,OAAO,KACzD,OAAO,EAAO,OAAO", | ||
| "debugId": "ED3E14D825AE9C4864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "88A14A0628FE78C564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/restart.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.restart,\n Effect.fn(\"cli.service.restart\")(function* () {\n const options = yield* ServiceConfig.options()\n yield* Service.stop(options)\n const transport = yield* Service.ensure(options)\n process.stdout.write(transport.url + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,QACnC,EAAO,GAAG,qBAAqB,EAAE,SAAU,EAAG,CAC5C,IAAM,EAAU,MAAO,EAAc,QAAQ,EAC7C,MAAO,EAAQ,KAAK,CAAO,EAC3B,IAAM,EAAY,MAAO,EAAQ,OAAO,CAAO,EAC/C,QAAQ,OAAO,MAAM,EAAU,IAAM,CAAG,EACzC,CACH", | ||
| "debugId": "89DA284D29CF57BE64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/add.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { readFile, stat, writeFile } from \"node:fs/promises\"\nimport { Effect, Option } from \"effect\"\nimport { applyEdits, modify } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.add,\n Effect.fn(\"cli.mcp.add\")(function* (input) {\n const url = Option.getOrUndefined(input.url)\n const headers = Option.getOrUndefined(input.header)\n const environment = Option.getOrUndefined(input.env)\n // The CLI framework strands `--` operands on the root command, so read the local server command\n // straight from argv after `--`. This also lets the command carry its own flags (e.g. `npx -y`).\n const dash = process.argv.indexOf(\"--\")\n const command = dash === -1 ? [...input.command] : process.argv.slice(dash + 1)\n\n const hasCommand = command.length > 0\n if (url && hasCommand)\n return yield* Effect.fail(new Error(\"Provide either --url <url> or a command after --, not both\"))\n if (!url && !hasCommand) return yield* Effect.fail(new Error(\"Provide either --url <url> or a command after --\"))\n if (url && !URL.canParse(url)) return yield* Effect.fail(new Error(`Invalid URL: ${url}`))\n if (url && environment) return yield* Effect.fail(new Error(\"--env is only valid for local MCP servers\"))\n if (hasCommand && headers) return yield* Effect.fail(new Error(\"--header is only valid for remote MCP servers\"))\n\n const server = url\n ? { type: \"remote\" as const, url, ...(headers ? { headers } : {}) }\n : { type: \"local\" as const, command, ...(environment ? { environment } : {}) }\n\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(input.global ? global.config : process.cwd()))\n yield* Effect.promise(() => write(configPath, input.name, server))\n process.stdout.write(`MCP server \"${input.name}\" added to ${configPath}` + EOL)\n }),\n)\n\nexport async function resolveConfigPath(directory: string) {\n const candidates = [\n path.join(directory, \"opencode.json\"),\n path.join(directory, \"opencode.jsonc\"),\n path.join(directory, \".opencode\", \"opencode.json\"),\n path.join(directory, \".opencode\", \"opencode.jsonc\"),\n ]\n for (const candidate of candidates) {\n if (\n await stat(candidate).then(\n (info) => info.isFile(),\n () => false,\n )\n )\n return candidate\n }\n return candidates[0]\n}\n\nasync function write(configPath: string, name: string, server: unknown) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return \"{}\"\n throw error\n })\n const edits = modify(text, [\"mcp\", \"servers\", name], server, {\n formattingOptions: { tabSize: 2, insertSpaces: true },\n })\n await writeFile(configPath, applyEdits(text, edits))\n}\n" | ||
| ], | ||
| "mappings": ";wOAAA,cAAS,WACT,oBACA,mBAAS,UAAU,eAAM,oBAOzB,IAAe,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,IAC/B,EAAO,GAAG,aAAa,EAAE,SAAU,CAAC,EAAO,CACzC,IAAM,EAAM,EAAO,eAAe,EAAM,GAAG,EACrC,EAAU,EAAO,eAAe,EAAM,MAAM,EAC5C,EAAc,EAAO,eAAe,EAAM,GAAG,EAG7C,EAAO,QAAQ,KAAK,QAAQ,IAAI,EAChC,EAAU,IAAS,GAAK,CAAC,GAAG,EAAM,OAAO,EAAI,QAAQ,KAAK,MAAM,EAAO,CAAC,EAExE,EAAa,EAAQ,OAAS,EACpC,GAAI,GAAO,EACT,OAAO,MAAO,EAAO,KAAS,MAAM,4DAA4D,CAAC,EACnG,GAAI,CAAC,GAAO,CAAC,EAAY,OAAO,MAAO,EAAO,KAAS,MAAM,kDAAkD,CAAC,EAChH,GAAI,GAAO,CAAC,IAAI,SAAS,CAAG,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,gBAAgB,GAAK,CAAC,EACzF,GAAI,GAAO,EAAa,OAAO,MAAO,EAAO,KAAS,MAAM,2CAA2C,CAAC,EACxG,GAAI,GAAc,EAAS,OAAO,MAAO,EAAO,KAAS,MAAM,+CAA+C,CAAC,EAE/G,IAAM,EAAS,EACX,CAAE,KAAM,SAAmB,SAAS,EAAU,CAAE,SAAQ,EAAI,CAAC,CAAG,EAChE,CAAE,KAAM,QAAkB,aAAa,EAAc,CAAE,aAAY,EAAI,CAAC,CAAG,EAEzE,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAM,OAAS,EAAO,OAAS,QAAQ,IAAI,CAAC,CAAC,EAC9G,MAAO,EAAO,QAAQ,IAAM,EAAM,EAAY,EAAM,KAAM,CAAM,CAAC,EACjE,QAAQ,OAAO,MAAM,eAAe,EAAM,kBAAkB,IAAe,CAAG,EAC/E,CACH,EAEA,eAAsB,CAAiB,CAAC,EAAmB,CACzD,IAAM,EAAa,CACjB,EAAK,KAAK,EAAW,eAAe,EACpC,EAAK,KAAK,EAAW,gBAAgB,EACrC,EAAK,KAAK,EAAW,YAAa,eAAe,EACjD,EAAK,KAAK,EAAW,YAAa,gBAAgB,CACpD,EACA,QAAW,KAAa,EACtB,GACE,MAAM,EAAK,CAAS,EAAE,KACpB,CAAC,IAAS,EAAK,OAAO,EACtB,IAAM,EACR,EAEA,OAAO,EAEX,OAAO,EAAW,GAGpB,eAAe,CAAK,CAAC,EAAoB,EAAc,EAAiB,CACtE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,MAAO,KACtG,MAAM,EACP,EACK,EAAQ,EAAO,EAAM,CAAC,MAAO,UAAW,CAAI,EAAG,EAAQ,CAC3D,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CACtD,CAAC,EACD,MAAM,EAAU,EAAY,EAAW,EAAM,CAAK,CAAC", | ||
| "debugId": "DC90C16E8B590DA764756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/form.ts", "src/commands/handlers/auth/login.ts"], | ||
| "sourcesContent": [ | ||
| "import { confirm, log, multiselect, password, select, text, type Option } from \"@clack/prompts\"\nimport { Effect } from \"effect\"\nimport type { FormAnswer, FormField, FormFields } from \"@opencode-ai/client\"\nimport { openUrl, prompt, requireInteractive } from \"../../../ui/prompt\"\n\nconst skip = Symbol(\"skip\")\nconst custom = Symbol(\"custom\")\n\nexport const answerForm = Effect.fn(\"cli.auth.form\")(function* (fields: FormFields | undefined) {\n if (!fields) return undefined\n yield* requireInteractive(\"Authentication form input requires an interactive terminal\")\n const answer: FormAnswer = {}\n for (const field of fields) {\n if (!active(field, answer)) continue\n const value = yield* answerField(field)\n if (value !== undefined) answer[field.key] = value\n }\n return answer\n})\n\nexport const secret = Effect.fn(\"cli.auth.secret\")(function* (message: string) {\n yield* requireInteractive(\"API key input requires an interactive terminal\")\n return yield* prompt<string>(() => password({ message, validate: (value) => (!value ? \"Required\" : undefined) }))\n})\n\nconst answerField = Effect.fn(\"cli.auth.form.field\")(function* (field: FormField) {\n const message = field.title ?? field.key\n if (field.description) log.info(field.description)\n if (field.type === \"external\") {\n log.info(field.url)\n yield* openUrl(field.url)\n const acknowledged = yield* prompt<boolean>(() =>\n confirm({ message: message || \"Continue after completing this step?\", initialValue: true }),\n )\n if (!acknowledged) return yield* Effect.fail(new Error(`${message || \"External step\"} is required`))\n return true\n }\n if (field.type === \"boolean\") {\n if (field.required) return yield* prompt<boolean>(() => confirm({ message, initialValue: field.default ?? true }))\n const options: Array<Option<boolean | typeof skip>> = [\n { value: true, label: \"Yes\" },\n { value: false, label: \"No\" },\n { value: skip, label: \"Skip\" },\n ]\n const value = yield* prompt<boolean | typeof skip>(() =>\n select<boolean | typeof skip>({\n message,\n options,\n initialValue: field.default ?? skip,\n }),\n )\n if (value === skip) return undefined\n return value\n }\n if (field.type === \"multiselect\") {\n const options: Array<Option<string | typeof custom>> = field.options.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.description,\n }))\n if (field.custom) options.push({ value: custom, label: \"Type another value\" })\n const values = yield* prompt<Array<string | typeof custom>>(() =>\n multiselect<string | typeof custom>({\n message,\n options,\n initialValues: field.default,\n required: field.required || (field.minItems ?? 0) > 0,\n }),\n )\n const selected = values.filter((value): value is string => value !== custom)\n if (values.includes(custom)) {\n selected.push(yield* prompt<string>(() => text({ message: \"Enter value\", validate: required })))\n }\n if (field.minItems !== undefined && selected.length < field.minItems) {\n return yield* Effect.fail(new Error(`Select at least ${field.minItems}`))\n }\n if (field.maxItems !== undefined && selected.length > field.maxItems) {\n return yield* Effect.fail(new Error(`Select at most ${field.maxItems}`))\n }\n return selected\n }\n if (field.type === \"string\" && field.options) {\n const options: Array<Option<string | typeof custom | typeof skip>> = field.options.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.description,\n }))\n if (field.custom) options.push({ value: custom, label: \"Type your own answer\" })\n if (!field.required) options.push({ value: skip, label: \"Skip\" })\n const value = yield* prompt<string | typeof custom | typeof skip>(() =>\n select<string | typeof custom | typeof skip>({ message, options, initialValue: field.default }),\n )\n if (value === skip) return undefined\n if (value !== custom) return value\n }\n const value = yield* prompt<string>(() =>\n text({\n message,\n placeholder: field.type === \"string\" ? field.placeholder : undefined,\n initialValue: field.default === undefined ? undefined : String(field.default),\n validate: (input) => validateText(field, input),\n }),\n )\n if (!value && !field.required) return undefined\n if (field.type === \"string\") return value\n return Number(value)\n})\n\nfunction active(field: FormField, answer: FormAnswer) {\n if (field.type === \"external\" || !field.when) return true\n return field.when.every((condition) => {\n const value = answer[condition.key]\n if (value === undefined) return false\n const matches = Array.isArray(value) ? value.includes(String(condition.value)) : value === condition.value\n return condition.op === \"eq\" ? matches : !matches\n })\n}\n\nfunction required(value: string | undefined) {\n return value ? undefined : \"Required\"\n}\n\nfunction validateText(field: Exclude<FormField, { type: \"boolean\" | \"external\" | \"multiselect\" }>, value?: string) {\n if (!value) return field.required ? \"Required\" : undefined\n if (field.type === \"number\" || field.type === \"integer\") {\n const number = Number(value)\n if (!Number.isFinite(number)) return \"Expected a number\"\n if (field.type === \"integer\" && !Number.isInteger(number)) return \"Expected an integer\"\n if (typeof field.minimum === \"number\" && number < field.minimum) return `Must be at least ${field.minimum}`\n if (typeof field.maximum === \"number\" && number > field.maximum) return `Must be at most ${field.maximum}`\n return undefined\n }\n if (field.minLength !== undefined && value.length < field.minLength)\n return `Must be at least ${field.minLength} characters`\n if (field.maxLength !== undefined && value.length > field.maxLength)\n return `Must be at most ${field.maxLength} characters`\n if (field.pattern) {\n try {\n if (!new RegExp(field.pattern).test(value)) return \"Invalid format\"\n } catch {\n return \"Invalid format\"\n }\n }\n if (field.format === \"uri\" && !URL.canParse(value)) return \"Expected a URL\"\n if (field.format === \"email\" && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)) return \"Expected an email address\"\n if (field.format === \"date\") {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return \"Expected a date\"\n const date = new Date(`${value}T00:00:00.000Z`)\n if (Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value) return \"Expected a date\"\n }\n if (field.format === \"date-time\" && Number.isNaN(Date.parse(value))) return \"Expected a date and time\"\n return undefined\n}\n", | ||
| "import { autocomplete, intro, log, outro, select, spinner, text } from \"@clack/prompts\"\nimport { Effect, Option } from \"effect\"\nimport type { FormAnswer, IntegrationInfo, OpenCodeClient } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { handlePromptErrors, openUrl, prompt, requireInteractive } from \"../../../ui/prompt\"\nimport { answerForm, secret } from \"./form\"\nimport {\n createClient,\n connectMethods,\n loadIntegrations,\n location,\n request,\n resolveIntegration,\n resolveMethod,\n type ConnectMethod,\n} from \"./shared\"\n\nconst integrationPriority = new Map([\n [\"opencode\", 0],\n [\"opencode-go\", 1],\n [\"openai\", 2],\n [\"github-copilot\", 3],\n [\"google\", 4],\n [\"anthropic\", 5],\n [\"openrouter\", 6],\n [\"vercel\", 7],\n])\n\nexport default Runtime.handler(\n Commands.commands.auth.commands.login,\n Effect.fn(\"cli.auth.login\")((input) =>\n login({\n target: Option.getOrUndefined(input.target),\n method: Option.getOrUndefined(input.method),\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n }).pipe(handlePromptErrors),\n ),\n)\n\nconst login = Effect.fn(\"cli.auth.login.run\")(function* (input: {\n target?: string\n method?: string\n server?: string\n standalone: boolean\n}) {\n if (!input.target)\n yield* requireInteractive(\"Pass an integration ID or name when running without an interactive terminal\")\n intro(\"Connect an integration\")\n const client = yield* createClient({ server: input.server, standalone: input.standalone })\n const integration = yield* findIntegration(client, input.target)\n const methods = connectMethods(integration)\n if (methods.length === 0) yield* Effect.fail(new Error(`${integration.name} has no interactive login methods`))\n const method = yield* chooseMethod(methods, input.method)\n const answer = method.type === \"command\" ? undefined : yield* answerForm(method.form)\n yield* authenticate(client, integration, method, answer)\n outro(\"Done\")\n})\n\nconst findIntegration = Effect.fn(\"cli.auth.login.integration\")(function* (client: OpenCodeClient, target?: string) {\n if (target && URL.canParse(target)) {\n const protocol = new URL(target).protocol\n if (protocol === \"http:\" || protocol === \"https:\") {\n const progress = spinner()\n progress.start(\"Discovering authentication provider...\")\n yield* request((signal) => client.integration.wellknown.add({ url: target, location }, { signal })).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(\"Authentication provider discovered\"))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Discovery failed\", 1))),\n )\n }\n }\n const integrations = yield* loadIntegrations(client)\n if (target) return yield* resolveIntegration(integrations, target)\n const available = integrations\n .filter((integration) => connectMethods(integration).length > 0)\n .toSorted(\n (a, b) =>\n (integrationPriority.get(a.id) ?? integrationPriority.size) -\n (integrationPriority.get(b.id) ?? integrationPriority.size) ||\n a.name.localeCompare(b.name) ||\n a.id.localeCompare(b.id),\n )\n if (available.length === 0) return yield* Effect.fail(new Error(\"No authentication integrations are available\"))\n const id = yield* prompt<string>(() =>\n autocomplete({\n message: \"Select integration\",\n maxItems: 8,\n options: available.map((integration) => {\n const option = { value: integration.id, label: integration.name, hint: integration.id }\n if (integration.connections.length > 0) return { ...option, hint: \"connected\" }\n if (integration.id === \"opencode\") return { ...option, hint: \"recommended\" }\n return option\n }),\n }),\n )\n return yield* resolveIntegration(available, id)\n})\n\nconst chooseMethod = Effect.fn(\"cli.auth.login.method\")(function* (methods: ConnectMethod[], target?: string) {\n if (target) return yield* resolveMethod(methods, target)\n if (methods.length === 1) return methods[0]\n yield* requireInteractive(\"Pass --method when running without an interactive terminal\")\n const id = yield* prompt<string>(() =>\n select({\n message: \"Select login method\",\n options: methods.map((method) => {\n if (method.type === \"key\") return { value: \"key\", label: method.label ?? \"API key\" }\n return { value: method.id, label: method.label }\n }),\n }),\n )\n return yield* resolveMethod(methods, id)\n})\n\nconst authenticate = Effect.fn(\"cli.auth.login.authenticate\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: ConnectMethod,\n answer?: FormAnswer,\n) {\n if (method.type === \"key\") return yield* keyLogin(client, integration, method, answer)\n if (method.type === \"command\") return yield* commandLogin(client, integration, method)\n return yield* oauthLogin(client, integration, method, answer)\n})\n\nconst keyLogin = Effect.fn(\"cli.auth.login.key\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"key\" }>,\n answer?: FormAnswer,\n) {\n const key = yield* secret(method.label ?? `Enter your ${integration.name} API key`)\n const progress = spinner()\n progress.start(\"Saving credential...\")\n yield* request((signal) =>\n client.integration.connect.key({ integrationID: integration.id, key, answer, location }, { signal }),\n ).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(`Connected to ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))),\n )\n})\n\nconst oauthLogin = Effect.fn(\"cli.auth.login.oauth\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"oauth\" }>,\n answer?: FormAnswer,\n) {\n const progress = spinner()\n progress.start(\"Starting authorization...\")\n const started = yield* request((signal) =>\n client.integration.oauth.connect(\n { integrationID: integration.id, methodID: method.id, answer, location },\n { signal },\n ),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n const attempt = started.data\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.oauth.cancel(\n { integrationID: integration.id, attemptID: attempt.attemptID, location },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n progress.stop(\"Authorization started\")\n log.info(attempt.instructions)\n log.info(attempt.url)\n if (process.stdin.isTTY && process.stdout.isTTY) yield* openUrl(attempt.url)\n\n if (attempt.mode === \"code\") {\n yield* requireInteractive(\"This login requires an interactive terminal to enter the authorization code\")\n const code = yield* prompt<string>(() =>\n text({ message: \"Paste the authorization code\", validate: (value) => (!value ? \"Required\" : undefined) }),\n )\n const completing = spinner()\n completing.start(\"Completing authorization...\")\n yield* request((signal) =>\n client.integration.oauth.complete(\n { integrationID: integration.id, attemptID: attempt.attemptID, code, location },\n { signal },\n ),\n ).pipe(\n Effect.tap(() => Effect.sync(() => completing.stop(`Connected to ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => completing.stop(\"Authentication failed\", 1))),\n )\n return\n }\n\n const waiting = spinner()\n waiting.start(\"Waiting for authorization...\")\n const status = yield* waitForOAuth(client, integration.id, attempt.attemptID).pipe(\n Effect.tapCause(() => Effect.sync(() => waiting.stop(\"Authentication failed\", 1))),\n )\n if (status.status === \"complete\") {\n waiting.stop(`Connected to ${integration.name}`)\n return\n }\n waiting.stop(\"Authentication failed\", 1)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n yield* Effect.fail(new Error(\"Authorization expired\"))\n})\n\nconst commandLogin = Effect.fn(\"cli.auth.login.command\")(function* (\n client: OpenCodeClient,\n integration: IntegrationInfo,\n method: Extract<ConnectMethod, { type: \"command\" }>,\n) {\n const progress = spinner()\n progress.start(\"Starting authentication command...\")\n const started = yield* request((signal) =>\n client.integration.command.connect({ integrationID: integration.id, methodID: method.id, location }, { signal }),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n yield* Effect.addFinalizer(() =>\n request(() =>\n client.integration.command.cancel(\n {\n integrationID: integration.id,\n attemptID: started.data.attemptID,\n location,\n },\n { signal: AbortSignal.timeout(5_000) },\n ),\n ).pipe(Effect.ignore),\n )\n const status = yield* waitForCommand(client, integration.id, started.data.attemptID, (message) =>\n progress.message(message.trim() || \"Waiting for authentication command...\"),\n ).pipe(Effect.tapCause(() => Effect.sync(() => progress.stop(\"Authentication failed\", 1))))\n if (status.status === \"complete\") {\n progress.stop(`Connected to ${integration.name}`)\n return\n }\n progress.stop(\"Authentication failed\", 1)\n if (status.status === \"failed\") yield* Effect.fail(new Error(status.message))\n yield* Effect.fail(new Error(\"Authentication expired\"))\n})\n\nconst waitForOAuth = Effect.fn(\"cli.auth.login.oauth.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.oauth.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n yield* Effect.sleep(500)\n }\n})\n\nconst waitForCommand = Effect.fn(\"cli.auth.login.command.wait\")(function* (\n client: OpenCodeClient,\n integrationID: string,\n attemptID: string,\n update: (message: string) => void,\n) {\n while (true) {\n const response = yield* request((signal) =>\n client.integration.command.status({ integrationID, attemptID, location }, { signal }),\n )\n if (response.data.status !== \"pending\") return response.data\n if (response.data.message) update(response.data.message)\n yield* Effect.sleep(500)\n }\n})\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "1C44B4C543E5BE4964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "E740CD727564CE8264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/models.ts"], | ||
| "sourcesContent": [ | ||
| "import { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.models,\n Effect.fn(\"cli.models\")(function* (input) {\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const response = yield* Effect.promise(() => client.model.list({ location: { directory: process.cwd() } }))\n const models = response.data\n .map((model) => `${model.providerID}/${model.id}`)\n .toSorted((a, b) => a.localeCompare(b))\n if (models.length > 0) process.stdout.write(models.join(EOL) + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";giCAGA,cAAS,WAKT,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,SAAU,CAAC,EAAO,CACxC,IAAM,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EAEK,GADW,MAAO,EAAO,QAAQ,IAAM,EAAO,MAAM,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,GAClF,KACrB,IAAI,CAAC,IAAU,GAAG,EAAM,cAAc,EAAM,IAAI,EAChD,SAAS,CAAC,EAAG,IAAM,EAAE,cAAc,CAAC,CAAC,EACxC,GAAI,EAAO,OAAS,EAAG,QAAQ,OAAO,MAAM,EAAO,KAAK,CAAG,EAAI,CAAG,EACnE,CACH", | ||
| "debugId": "9E66790DBD9D731A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/session.shared.ts", "../tui/src/mini/variant.shared.ts", "../tui/src/mini/theme.ts", "../tui/src/mini/mono.ts"], | ||
| "sourcesContent": [ | ||
| "import type { SessionMessageInfo, SessionMessageUser } from \"@opencode-ai/client/promise\"\nimport { promptCopy, promptSame } from \"./prompt.shared\"\nimport type { RunInput, RunPrompt } from \"./types\"\n\nconst LIMIT = 200\n\nexport type SessionMessages = SessionMessageInfo[]\n\ntype Turn = {\n prompt: RunPrompt\n provider: string | undefined\n model: string | undefined\n variant: string | undefined\n}\n\nexport type RunSession = {\n first: boolean\n turns: Turn[]\n model?: NonNullable<RunInput[\"model\"]>\n variant?: string\n}\n\nfunction messagePrompt(message: SessionMessageUser): RunPrompt {\n return {\n text: message.text,\n parts: [\n ...(message.files ?? []).map((file) => ({\n type: \"file\" as const,\n url: file.source.type === \"uri\" ? file.source.uri : `data:${file.mime};base64,${file.data}`,\n mime: file.mime,\n filename: file.name,\n source: file.mention\n ? {\n type: \"file\",\n path: file.name ?? (file.source.type === \"uri\" ? file.source.uri : \"inline attachment\"),\n text: { start: file.mention.start, end: file.mention.end, value: file.mention.text },\n }\n : undefined,\n })),\n ...(message.agents ?? []).map((agent) => ({\n type: \"agent\" as const,\n name: agent.name,\n source: agent.mention\n ? { start: agent.mention.start, end: agent.mention.end, value: agent.mention.text }\n : undefined,\n })),\n ],\n }\n}\n\nexport function createSession(messages: SessionMessages): RunSession {\n return {\n first: messages.length === 0,\n turns: messages.flatMap((message) =>\n message.type === \"user\"\n ? [{ prompt: messagePrompt(message), provider: undefined, model: undefined, variant: undefined }]\n : [],\n ),\n }\n}\n\nexport async function resolveCurrentSession(\n sdk: RunInput[\"sdk\"],\n sessionID: string,\n signal?: AbortSignal,\n limit = LIMIT,\n): Promise<RunSession> {\n const [response, session] = await Promise.all([\n sdk.message.list({ sessionID, limit, order: \"desc\" }, ...requestOptions(signal)),\n sdk.session.get({ sessionID }, ...requestOptions(signal)),\n ])\n const current = createSession(response.data.toReversed())\n return {\n ...current,\n turns: current.turns.map((turn) => ({\n ...turn,\n provider: session.model?.providerID,\n model: session.model?.id,\n variant: session.model?.variant,\n })),\n ...(session.model && {\n model: { providerID: session.model.providerID, modelID: session.model.id },\n variant: session.model.variant,\n }),\n }\n}\n\nfunction requestOptions(signal?: AbortSignal): [] | [{ signal: AbortSignal }] {\n return signal ? [{ signal }] : []\n}\n\nexport function sessionHistory(session: RunSession, limit = LIMIT): RunPrompt[] {\n return session.turns\n .map((turn) => turn.prompt)\n .filter((prompt) => prompt.text.trim())\n .filter((prompt, index, prompts) => index === 0 || !promptSame(prompts[index - 1], prompt))\n .map(promptCopy)\n .slice(-limit)\n}\n\nexport function sessionVariant(session: RunSession, model: RunInput[\"model\"]): string | undefined {\n if (!model) return\n if (session.model?.providerID === model.providerID && session.model.modelID === model.modelID) return session.variant\n\n return session.turns.findLast((turn) => turn.provider === model.providerID && turn.model === model.modelID)?.variant\n}\n", | ||
| "// Model variant resolution and persistence.\n//\n// Variants are provider-specific reasoning effort levels (e.g., \"high\", \"max\").\n// Resolution priority: CLI --variant flag > valid session history > saved preference.\n//\n// The saved variant persists across sessions in ~/.local/state/opencode/model.json\n// so your last-used variant sticks. Cycling (ctrl+t) updates both the active\n// variant and the persisted file.\nimport { createSession, sessionVariant, type RunSession, type SessionMessages } from \"./session.shared\"\nimport type { RunInput, RunProvider } from \"./types\"\nimport { cycleModelVariant, normalizeModelVariant } from \"../model-preference\"\n\nexport function modelInfo(providers: RunProvider[] | undefined, model: NonNullable<RunInput[\"model\"]>) {\n const provider = providers?.find((item) => item.id === model.providerID)\n return {\n provider: provider?.name ?? model.providerID,\n model: provider?.models[model.modelID]?.name ?? model.modelID,\n }\n}\n\nexport function formatModelLabel(\n model: NonNullable<RunInput[\"model\"]>,\n variant: string | undefined,\n providers?: RunProvider[],\n): string {\n const names = modelInfo(providers, model)\n const label = variant ? ` · ${variant}` : \"\"\n return `${names.model} · ${names.provider}${label}`\n}\n\nexport function cycleVariant(current: string | undefined, variants: string[]): string | undefined {\n return cycleModelVariant(current, variants)\n}\n\nexport function pickVariant(model: RunInput[\"model\"], input: RunSession | SessionMessages): string | undefined {\n return sessionVariant(Array.isArray(input) ? createSession(input) : input, model)\n}\n\nfunction fitVariant(value: string | undefined, variants: string[]): string | undefined {\n const normalized = normalizeModelVariant(value)\n return normalized && (variants.length === 0 || variants.includes(normalized)) ? normalized : undefined\n}\n\n// Picks the active variant. CLI flag wins, then valid session history, then the\n// saved preference. Saved and session values are dropped when the provider no\n// longer offers them.\nexport function resolveVariant(\n input: string | undefined,\n session: string | undefined,\n saved: string | undefined,\n variants: string[],\n): string | undefined {\n if (input !== undefined) {\n return normalizeModelVariant(input)\n }\n\n return fitVariant(session, variants) ?? fitVariant(saved, variants)\n}\n", | ||
| "// Theme resolution for direct interactive mode.\n//\n// Derives scrollback and footer colors from the terminal's actual palette.\n// resolveRunTheme() queries the renderer for the terminal's palette,\n// detects dark/light mode, builds a small system theme locally, and maps it to\n// the run footer + scrollback color model. Falls back to a hardcoded dark-mode\n// palette if detection fails.\nimport { RGBA, SyntaxStyle, type CliRenderer, type ColorInput, type TerminalColors } from \"@opentui/core\"\nimport { ansiToRgba } from \"../theme/color\"\nimport { resolveThemeColors } from \"../theme/resolve\"\nimport { terminalMode } from \"../theme/system\"\nimport type { Theme, ThemeV1Json } from \"../theme/v1\"\nimport type { EntryKind, RunTuiConfig } from \"./types\"\n\ntype ThemeCurrent = Omit<Theme, \"_hasSelectedListItemText\">\n\ntype Tone = {\n body: ColorInput\n start?: ColorInput\n}\n\nexport type RunEntryTheme = Record<EntryKind, Tone>\n\nexport type RunSplashTheme = {\n left: ColorInput\n right: ColorInput\n leftShadow: ColorInput\n}\n\nexport type RunFooterTheme = {\n highlight: ColorInput\n selected: ColorInput\n selectedText: ColorInput\n warning: ColorInput\n error: ColorInput\n muted: ColorInput\n text: ColorInput\n status: ColorInput\n statusAccent: ColorInput\n shade: ColorInput\n surface: ColorInput\n pane: ColorInput\n border: ColorInput\n line: ColorInput\n}\n\nexport type RunBlockTheme = {\n text: ColorInput\n muted: ColorInput\n syntax?: SyntaxStyle\n diffRemoved: ColorInput\n diffAddedBg: ColorInput\n diffRemovedBg: ColorInput\n diffContextBg: ColorInput\n diffHighlightAdded: ColorInput\n diffHighlightRemoved: ColorInput\n diffLineNumber: ColorInput\n diffAddedLineNumberBg: ColorInput\n diffRemovedLineNumberBg: ColorInput\n}\n\nexport type RunTheme = {\n background: ColorInput\n footer: RunFooterTheme\n entry: RunEntryTheme\n splash: RunSplashTheme\n block: RunBlockTheme\n}\n\ntype ThemeColor = Exclude<keyof ThemeCurrent, \"thinkingOpacity\">\n\ntype SharedSyntaxTheme = ThemeCurrent & {\n _hasSelectedListItemText: boolean\n}\n\nexport const transparent = RGBA.fromValues(0, 0, 0, 0)\n\nfunction alpha(color: RGBA, value: number): RGBA {\n return RGBA.fromValues(color.r, color.g, color.b, Math.max(0, Math.min(1, value)))\n}\n\nfunction rgba(hex: string, value?: number): RGBA {\n const color = RGBA.fromHex(hex)\n return value === undefined ? color : alpha(color, value)\n}\n\nfunction colorMode(bg: RGBA): \"dark\" | \"light\" {\n return luminance(bg) > 0.5 ? \"light\" : \"dark\"\n}\n\nfunction luminance(color: RGBA): number {\n return 0.299 * color.r + 0.587 * color.g + 0.114 * color.b\n}\n\nfunction fade(color: RGBA, base: RGBA, fallback: number, scale: number, limit: number): RGBA {\n if (color.a === 0) {\n return RGBA.fromValues(color.r, color.g, color.b, Math.max(0, Math.min(1, fallback)))\n }\n\n const target = Math.min(limit, color.a * scale)\n const mix = Math.min(1, target / color.a)\n\n return RGBA.fromValues(\n base.r + (color.r - base.r) * mix,\n base.g + (color.g - base.g) * mix,\n base.b + (color.b - base.b) * mix,\n color.a,\n )\n}\n\nfunction tint(base: RGBA, overlay: RGBA, value: number): RGBA {\n return RGBA.fromInts(\n Math.round((base.r + (overlay.r - base.r) * value) * 255),\n Math.round((base.g + (overlay.g - base.g) * value) * 255),\n Math.round((base.b + (overlay.b - base.b) * value) * 255),\n )\n}\n\nfunction chroma(color: RGBA) {\n return Math.max(color.r, color.g, color.b) - Math.min(color.r, color.g, color.b)\n}\n\nfunction indexedPalette(colors: TerminalColors, size: number = Math.max(colors.palette.length, 16)): RGBA[] {\n return Array.from({ length: size }, (_, index) => {\n const value = colors.palette[index]\n return RGBA.fromIndex(index, value ? RGBA.fromHex(value) : ansiToRgba(index))\n })\n}\n\nfunction srgbToLinear(value: number): number {\n if (value <= 0.04045) {\n return value / 12.92\n }\n\n return ((value + 0.055) / 1.055) ** 2.4\n}\n\nfunction oklab(color: RGBA) {\n const r = srgbToLinear(color.r)\n const g = srgbToLinear(color.g)\n const b = srgbToLinear(color.b)\n\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b)\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b)\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b)\n\n return {\n l: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,\n }\n}\n\nfunction nearestIndexed(indexed: RGBA[], rgba: RGBA): RGBA {\n const target = oklab(rgba)\n const hit = indexed.reduce(\n (best, item) => {\n const sample = oklab(item)\n const dl = sample.l - target.l\n const da = sample.a - target.a\n const db = sample.b - target.b\n const dist = dl * dl * 2 + da * da + db * db\n if (dist >= best.dist) return best\n return {\n dist,\n item,\n }\n },\n {\n dist: Number.POSITIVE_INFINITY,\n item: indexed[0]!,\n },\n )\n\n return RGBA.clone(hit.item)\n}\n\nfunction paletteColor(colors: TerminalColors, index: number): RGBA {\n const value = colors.palette[index]\n return value ? RGBA.fromHex(value) : ansiToRgba(index)\n}\n\nfunction splashShadow(indexed: RGBA[], base: RGBA, overlay: RGBA, value: number): RGBA {\n const mixed = tint(base, overlay, value)\n return nearestIndexed(indexed, mixed)\n}\n\nexport function resolveTheme(theme: ThemeV1Json, pick: \"dark\" | \"light\"): ThemeCurrent {\n const resolved = resolveThemeColors(theme, pick, (code) => RGBA.fromIndex(code, ansiToRgba(code)))\n return {\n ...resolved.theme,\n thinkingOpacity: resolved.thinkingOpacity,\n }\n}\n\nfunction generateGrayScale(bg: RGBA, isDark: boolean, map: (rgba: RGBA) => RGBA): Record<number, RGBA> {\n const r = bg.r * 255\n const g = bg.g * 255\n const b = bg.b * 255\n const lum = 0.299 * r + 0.587 * g + 0.114 * b\n const cast = 0.25 * (1 - chroma(bg)) ** 2\n\n const gray = (level: number) => {\n const factor = level / 12\n\n if (isDark && lum < 10) {\n const value = Math.floor(factor * 0.4 * 255)\n return map(RGBA.fromInts(value, value, value))\n }\n\n if (!isDark && lum > 245) {\n const value = Math.floor(255 - factor * 0.4 * 255)\n return map(RGBA.fromInts(value, value, value))\n }\n\n const value = isDark ? lum + (255 - lum) * factor * 0.4 : lum * (1 - factor * 0.4)\n const tone = RGBA.fromInts(Math.floor(value), Math.floor(value), Math.floor(value))\n if (cast === 0) return map(tone)\n\n const ratio = lum === 0 ? 0 : value / lum\n return map(\n tint(\n tone,\n RGBA.fromInts(\n Math.floor(Math.max(0, Math.min(r * ratio, 255))),\n Math.floor(Math.max(0, Math.min(g * ratio, 255))),\n Math.floor(Math.max(0, Math.min(b * ratio, 255))),\n ),\n cast,\n ),\n )\n }\n\n return Object.fromEntries(Array.from({ length: 12 }, (_, index) => [index + 1, gray(index + 1)]))\n}\n\nfunction generateMutedTextColor(bg: RGBA, isDark: boolean, map: (rgba: RGBA) => RGBA): RGBA {\n const lum = 0.299 * bg.r * 255 + 0.587 * bg.g * 255 + 0.114 * bg.b * 255\n const gray = isDark\n ? lum < 10\n ? 180\n : Math.min(Math.floor(160 + lum * 0.3), 200)\n : lum > 245\n ? 75\n : Math.max(Math.floor(100 - (255 - lum) * 0.2), 60)\n\n return map(RGBA.fromInts(gray, gray, gray))\n}\n\nexport function generateSystem(colors: TerminalColors, pick: \"dark\" | \"light\"): ThemeV1Json {\n const bg_snapshot = RGBA.fromHex(colors.defaultBackground ?? colors.palette[0]!)\n const fg_snapshot = RGBA.fromHex(colors.defaultForeground ?? colors.palette[7]!)\n const bg = RGBA.defaultBackground(bg_snapshot)\n const fg = RGBA.defaultForeground(fg_snapshot)\n const isDark = pick === \"dark\"\n\n const color = (index: number) => paletteColor(colors, index)\n\n const grays = generateGrayScale(bg_snapshot, isDark, (rgba) => rgba)\n const textMuted = generateMutedTextColor(bg_snapshot, isDark, (rgba) => rgba)\n\n const ansi = {\n red: color(1),\n green: color(2),\n yellow: color(3),\n blue: color(4),\n magenta: color(5),\n cyan: color(6),\n red_bright: color(9),\n green_bright: color(10),\n }\n\n const diff_alpha = isDark ? 0.22 : 0.14\n const diff_context_bg = grays[2]\n const primary = ansi.cyan\n const secondary = ansi.magenta\n\n return {\n theme: {\n primary,\n secondary,\n accent: primary,\n error: ansi.red,\n warning: ansi.yellow,\n success: ansi.green,\n info: ansi.cyan,\n text: fg,\n textMuted,\n selectedListItemText: bg,\n background: alpha(bg, 0),\n backgroundPanel: grays[2],\n backgroundElement: grays[3],\n backgroundMenu: grays[3],\n borderSubtle: grays[6],\n border: grays[7],\n borderActive: grays[8],\n diffAdded: ansi.green,\n diffRemoved: ansi.red,\n diffContext: grays[7],\n diffHunkHeader: grays[7],\n diffHighlightAdded: ansi.green_bright,\n diffHighlightRemoved: ansi.red_bright,\n diffAddedBg: tint(bg_snapshot, ansi.green, diff_alpha),\n diffRemovedBg: tint(bg_snapshot, ansi.red, diff_alpha),\n diffContextBg: diff_context_bg,\n diffLineNumber: textMuted,\n diffAddedLineNumberBg: tint(diff_context_bg, ansi.green, diff_alpha),\n diffRemovedLineNumberBg: tint(diff_context_bg, ansi.red, diff_alpha),\n markdownText: fg,\n markdownHeading: fg,\n markdownLink: ansi.blue,\n markdownLinkText: ansi.cyan,\n markdownCode: ansi.green,\n markdownBlockQuote: ansi.yellow,\n markdownEmph: ansi.yellow,\n markdownStrong: fg,\n markdownHorizontalRule: grays[7],\n markdownListItem: ansi.blue,\n markdownListEnumeration: ansi.cyan,\n markdownImage: ansi.blue,\n markdownImageText: ansi.cyan,\n markdownCodeBlock: fg,\n syntaxComment: textMuted,\n syntaxKeyword: ansi.magenta,\n syntaxFunction: ansi.blue,\n syntaxVariable: fg,\n syntaxString: ansi.green,\n syntaxNumber: ansi.yellow,\n syntaxType: ansi.cyan,\n syntaxOperator: ansi.cyan,\n syntaxPunctuation: fg,\n },\n }\n}\n\nfunction quantizeColor(indexed: RGBA[], rgba: RGBA): RGBA {\n if (rgba.a === 0 || rgba.intent === \"default\" || rgba.intent === \"indexed\") {\n return RGBA.clone(rgba)\n }\n\n return nearestIndexed(indexed, rgba)\n}\n\nfunction quantizeTheme(theme: ThemeCurrent, indexed: RGBA[]): ThemeCurrent {\n const resolved = Object.fromEntries(\n Object.entries(theme)\n .filter(([key]) => key !== \"thinkingOpacity\")\n .map(([key, value]) => [key, quantizeColor(indexed, value as RGBA)]),\n ) as Partial<Record<ThemeColor, RGBA>>\n\n return {\n ...(resolved as Record<ThemeColor, RGBA>),\n thinkingOpacity: theme.thinkingOpacity,\n }\n}\n\nfunction splashTheme(theme: ThemeCurrent, indexed: RGBA[]): RunSplashTheme {\n const left = nearestIndexed(indexed, theme.textMuted)\n const right = nearestIndexed(indexed, theme.text)\n return {\n left,\n right,\n leftShadow: splashShadow(indexed, theme.background, left, 0.14),\n }\n}\n\nfunction map(\n footerTheme: ThemeCurrent,\n scrollbackTheme: ThemeCurrent,\n splash: RunSplashTheme,\n syntax?: SyntaxStyle,\n): RunTheme {\n const footerBackground = alpha(footerTheme.background, 1)\n const footerMode = colorMode(footerBackground)\n const shade = fade(footerTheme.backgroundMenu, footerTheme.background, 0.12, 0.56, 0.72)\n const surface = fade(footerTheme.backgroundMenu, footerTheme.background, 0.18, 0.76, 0.9)\n const line = fade(footerTheme.backgroundMenu, footerTheme.background, 0.24, 0.9, 0.98)\n const statusBase = tint(footerBackground, rgba(\"#000000\"), footerMode === \"dark\" ? 0.13 : 0.06)\n const statusAccentBase =\n footerMode === \"dark\" ? tint(footerBackground, rgba(\"#ffffff\"), 0.06) : tint(statusBase, rgba(\"#000000\"), 0.04)\n const collapsedStatus = footerMode === \"dark\" && luminance(statusBase) <= 0.04\n // Pure-black backgrounds need a slight lift or the row disappears into the terminal background.\n const status = collapsedStatus ? tint(statusBase, statusAccentBase, 0.7) : statusBase\n const statusAccent = collapsedStatus ? tint(status, rgba(\"#ffffff\"), 0.06) : statusAccentBase\n\n return {\n background: footerTheme.background,\n footer: {\n highlight: footerTheme.primary,\n selected: footerTheme.backgroundElement,\n selectedText: footerTheme.selectedListItemText,\n warning: footerTheme.warning,\n error: footerTheme.error,\n muted: footerTheme.textMuted,\n text: footerTheme.text,\n status,\n statusAccent,\n shade,\n surface,\n pane: footerTheme.backgroundMenu,\n border: footerTheme.border,\n line,\n },\n entry: {\n system: {\n body: scrollbackTheme.textMuted,\n },\n user: {\n body: scrollbackTheme.primary,\n },\n assistant: {\n body: scrollbackTheme.text,\n },\n reasoning: {\n body: scrollbackTheme.textMuted,\n },\n tool: {\n body: scrollbackTheme.text,\n start: scrollbackTheme.textMuted,\n },\n error: {\n body: scrollbackTheme.error,\n },\n },\n splash,\n block: {\n text: scrollbackTheme.text,\n muted: scrollbackTheme.textMuted,\n syntax,\n diffRemoved: scrollbackTheme.diffRemoved,\n diffAddedBg: transparent,\n diffRemovedBg: transparent,\n diffContextBg: transparent,\n diffHighlightAdded: scrollbackTheme.diffHighlightAdded,\n diffHighlightRemoved: scrollbackTheme.diffHighlightRemoved,\n diffLineNumber: scrollbackTheme.diffLineNumber,\n diffAddedLineNumberBg: scrollbackTheme.diffAddedLineNumberBg,\n diffRemovedLineNumberBg: scrollbackTheme.diffRemovedLineNumberBg,\n },\n }\n}\n\nconst seed = {\n highlight: RGBA.fromIndex(6, rgba(\"#38bdf8\")),\n muted: RGBA.fromIndex(8, rgba(\"#64748b\")),\n text: RGBA.defaultForeground(rgba(\"#f8fafc\")),\n panel: rgba(\"#0f172a\"),\n success: RGBA.fromIndex(2, rgba(\"#22c55e\")),\n warning: RGBA.fromIndex(3, rgba(\"#f59e0b\")),\n error: RGBA.fromIndex(1, rgba(\"#ef4444\")),\n}\n\nfunction tone(body: ColorInput, start?: ColorInput): Tone {\n return {\n body,\n start,\n }\n}\n\nconst fallbackSplashIndexed = Array.from({ length: 256 }, (_, index) => RGBA.fromIndex(index))\nconst fallbackSplashLeft = RGBA.fromIndex(67)\nconst fallbackSplashRight = RGBA.fromIndex(110)\n\nexport const RUN_THEME_FALLBACK: RunTheme = {\n background: RGBA.fromValues(0, 0, 0, 0),\n footer: {\n highlight: seed.highlight,\n selected: seed.text,\n selectedText: seed.panel,\n warning: seed.warning,\n error: seed.error,\n muted: seed.muted,\n text: seed.text,\n status: tint(seed.panel, rgba(\"#000000\"), 0.12),\n statusAccent: tint(seed.panel, rgba(\"#ffffff\"), 0.06),\n shade: alpha(seed.panel, 0.68),\n surface: alpha(seed.panel, 0.86),\n pane: seed.panel,\n border: seed.muted,\n line: alpha(seed.panel, 0.96),\n },\n entry: {\n system: tone(seed.muted),\n user: tone(seed.highlight),\n assistant: tone(seed.text),\n reasoning: tone(seed.muted),\n tool: tone(seed.text, seed.muted),\n error: tone(seed.error),\n },\n splash: {\n left: fallbackSplashLeft,\n right: fallbackSplashRight,\n leftShadow: splashShadow(fallbackSplashIndexed, RGBA.fromValues(0, 0, 0, 0), fallbackSplashLeft, 0.14),\n },\n block: {\n text: seed.text,\n muted: seed.muted,\n diffRemoved: seed.error,\n diffAddedBg: alpha(seed.success, 0.18),\n diffRemovedBg: alpha(seed.error, 0.18),\n diffContextBg: alpha(seed.panel, 0.72),\n diffHighlightAdded: seed.success,\n diffHighlightRemoved: seed.error,\n diffLineNumber: seed.muted,\n diffAddedLineNumberBg: alpha(seed.success, 0.12),\n diffRemovedLineNumberBg: alpha(seed.error, 0.12),\n },\n}\n\nfunction monoTheme(mode: \"dark\" | \"light\"): RunTheme {\n const foreground = RGBA.defaultForeground(mode === \"light\" ? \"#000000\" : \"#ffffff\")\n const background = RGBA.defaultBackground(mode === \"light\" ? \"#ffffff\" : \"#000000\")\n return {\n background,\n footer: {\n highlight: foreground,\n selected: background,\n selectedText: foreground,\n warning: foreground,\n error: foreground,\n muted: foreground,\n text: foreground,\n status: background,\n statusAccent: background,\n shade: background,\n surface: background,\n pane: background,\n border: foreground,\n line: background,\n },\n entry: {\n system: tone(foreground),\n user: tone(foreground),\n assistant: tone(foreground),\n reasoning: tone(foreground),\n tool: tone(foreground),\n error: tone(foreground),\n },\n splash: {\n left: foreground,\n right: foreground,\n leftShadow: background,\n },\n block: {\n text: foreground,\n muted: foreground,\n diffRemoved: foreground,\n diffAddedBg: background,\n diffRemovedBg: background,\n diffContextBg: background,\n diffHighlightAdded: foreground,\n diffHighlightRemoved: foreground,\n diffLineNumber: foreground,\n diffAddedLineNumberBg: background,\n diffRemovedLineNumberBg: background,\n },\n }\n}\n\nexport const RUN_THEME_MONO = monoTheme(\"dark\")\nconst RUN_THEME_MONO_LIGHT = monoTheme(\"light\")\n\nexport async function resolveRunTheme(\n renderer: CliRenderer,\n config?: RunTuiConfig[\"theme\"],\n mono = false,\n): Promise<RunTheme> {\n if (mono) {\n const mode =\n config?.mode === \"light\" || config?.mode === \"dark\"\n ? config.mode\n : (renderer.themeMode ?? (await renderer.waitForThemeMode(300)))\n return mode === \"light\" ? RUN_THEME_MONO_LIGHT : RUN_THEME_MONO\n }\n try {\n const colors = await renderer.getPalette({\n size: 256,\n })\n const bg = colors.defaultBackground ?? colors.palette[0]\n if (!bg) {\n return RUN_THEME_FALLBACK\n }\n\n // Palette-only terminal reloads can leave renderer.themeMode stale, but\n // ANSI slot zero is not the terminal background when OSC 11 is absent.\n const pick =\n config?.mode === \"dark\" || config?.mode === \"light\"\n ? config.mode\n : (terminalMode(colors) ?? renderer.themeMode ?? colorMode(RGBA.fromHex(bg)))\n const { generateSyntax } = await import(\"../theme\")\n const indexed = indexedPalette(colors, 256)\n const footerTheme = resolveTheme(generateSystem(colors, pick), pick)\n const scrollbackTheme = quantizeTheme(footerTheme, indexed)\n const syntaxTheme: SharedSyntaxTheme = {\n ...scrollbackTheme,\n _hasSelectedListItemText: true,\n }\n return map(footerTheme, scrollbackTheme, splashTheme(scrollbackTheme, indexed), generateSyntax(syntaxTheme))\n } catch {\n return RUN_THEME_FALLBACK\n }\n}\n", | ||
| "import {\n BoxRenderable,\n CodeRenderable,\n MarkdownRenderable,\n RGBA,\n Renderable,\n StyledText,\n TextRenderable,\n TextTableRenderable,\n isStyledText,\n stringToStyledText,\n type BorderCharacters,\n type CliRendererExternalOutputEvent,\n type TreeSitterClient,\n} from \"@opentui/core\"\n\nconst prefixes: Record<number, string> = {\n 0x2192: \"->\",\n 0x2190: \"<-\",\n 0x2731: \"*\",\n 0x2699: \"*\",\n 0x2716: \"!\",\n 0x2717: \"!\",\n 0x25c8: \"*\",\n 0x25c9: \"*\",\n 0x27f3: \"*\",\n}\n\nconst markdown: Record<number, string> = {\n ...prefixes,\n 0x00a0: \" \",\n 0x00b7: \"-\",\n 0x2010: \"-\",\n 0x2011: \"-\",\n 0x2012: \"-\",\n 0x2013: \"-\",\n 0x2014: \"--\",\n 0x2018: \"'\",\n 0x2019: \"'\",\n 0x201c: '\"',\n 0x201d: '\"',\n 0x2022: \"*\",\n 0x2026: \"...\",\n 0x2191: \"up\",\n 0x2193: \"down\",\n}\n\nconst asciiBorder: BorderCharacters = {\n topLeft: \"+\",\n topRight: \"+\",\n bottomLeft: \"+\",\n bottomRight: \"+\",\n horizontal: \"-\",\n vertical: \"|\",\n topT: \"+\",\n bottomT: \"+\",\n leftT: \"+\",\n rightT: \"+\",\n cross: \"+\",\n}\n\nconst hooked = new WeakSet<Renderable>()\n\nexport const monoMarkdownTableOptions = {\n style: \"columns\" as const,\n widthMode: \"content\" as const,\n borders: false,\n}\n\nexport function monoMarkdownRenderable(renderable: MarkdownRenderable): void {\n monoRenderable(renderable)\n}\n\nfunction monoRenderable(renderable: Renderable): void {\n if (hooked.has(renderable)) return\n hooked.add(renderable)\n // Markdown reconciles nested lists and tables without calling renderNode.\n // Hook the actual tree so future descendants are transformed before layout.\n const add = renderable.add.bind(renderable)\n renderable.add = (child, index) => {\n if (child instanceof Renderable) monoRenderable(child)\n return add(child, index)\n }\n\n if (renderable instanceof BoxRenderable) renderable.customBorderChars = asciiBorder\n if (renderable instanceof CodeRenderable) monoCode(renderable)\n if (renderable instanceof TextRenderable) renderable.content = monoStyledText(renderable.content)\n if (renderable instanceof TextTableRenderable) monoTable(renderable)\n renderable.getChildren().forEach(monoRenderable)\n}\n\nfunction monoCode(renderable: CodeRenderable): void {\n const onChunks = renderable.onChunks\n renderable.onChunks = async (chunks, context) => monoChunks((await onChunks?.(chunks, context)) ?? chunks)\n renderable.treeSitterClient = monoTreeSitter(renderable.treeSitterClient)\n\n const initialDescriptor = Object.getOwnPropertyDescriptor(CodeRenderable.prototype, \"initialStyledText\")\n const contentDescriptor = Object.getOwnPropertyDescriptor(CodeRenderable.prototype, \"content\")\n if (!initialDescriptor?.set || !contentDescriptor?.get || !contentDescriptor.set) return\n const initialSetter = initialDescriptor.set.bind(renderable)\n const contentGetter = contentDescriptor.get.bind(renderable)\n const contentSetter = contentDescriptor.set.bind(renderable)\n const initial = Reflect.get(renderable, \"_initialStyledText\")\n Object.defineProperty(renderable, \"initialStyledText\", {\n configurable: true,\n set(value: StyledText | undefined) {\n initialSetter(value ? monoStyledText(value) : value)\n },\n })\n Object.defineProperty(renderable, \"content\", {\n configurable: true,\n get: contentGetter,\n set(value: string) {\n if (renderable.filetype !== \"markdown\" || !isStyledText(Reflect.get(renderable, \"_initialStyledText\"))) {\n renderable.drawUnstyledText = true\n renderable.initialStyledText = stringToStyledText(value)\n }\n contentSetter(renderable.filetype === \"markdown\" ? value : monoText(value))\n },\n })\n\n if (isStyledText(initial)) {\n renderable.initialStyledText = initial\n } else {\n renderable.drawUnstyledText = true\n renderable.initialStyledText = stringToStyledText(renderable.content)\n }\n if (!renderable.drawUnstyledText) return\n\n // Refresh the eager buffer with the transformed initial text. Highlighted\n // chunks continue through onChunks without changing the Markdown source.\n const content = renderable.content\n renderable.content = \"\"\n renderable.content = content\n}\n\nfunction monoTreeSitter(client: TreeSitterClient): TreeSitterClient {\n return new Proxy(client, {\n get(target, property) {\n if (property !== \"highlightOnce\") return Reflect.get(target, property, target)\n // Keep parser failures on the chunk path instead of OpenTUI's raw-text fallback.\n return (...args: Parameters<TreeSitterClient[\"highlightOnce\"]>) =>\n target.highlightOnce(...args).catch(() => ({ highlights: [] }))\n },\n })\n}\n\nfunction monoTable(renderable: TextTableRenderable): void {\n const descriptor = Object.getOwnPropertyDescriptor(TextTableRenderable.prototype, \"content\")\n if (!descriptor?.get || !descriptor.set) return\n const cells = new WeakMap<StyledText[\"chunks\"], StyledText[\"chunks\"]>()\n const content = renderable.content\n Object.defineProperty(renderable, \"content\", {\n configurable: true,\n get: () => descriptor.get!.call(renderable),\n set: (value: TextTableRenderable[\"content\"]) => {\n descriptor.set!.call(\n renderable,\n value.map((row) =>\n row.map((cell) => {\n if (!cell) return cell\n const cached = cells.get(cell)\n if (cached) return cached\n const next = monoChunks(cell)\n cells.set(cell, next)\n return next\n }),\n ),\n )\n },\n })\n renderable.content = content\n}\n\nfunction monoStyledText(value: StyledText): StyledText {\n return new StyledText(monoChunks(value.chunks))\n}\n\nfunction monoChunks(value: StyledText[\"chunks\"]): StyledText[\"chunks\"] {\n return value.map((chunk) => ({ ...chunk, text: monoText(chunk.text) }))\n}\n\nfunction monoText(value: string): string {\n return value.replace(/[^\\t\\n\\x20-\\x7e]/gu, (char) => markdown[char.codePointAt(0)!] ?? \"?\")\n}\n\nexport function monoSnapshot(event: CliRendererExternalOutputEvent): void {\n const buffers = event.snapshot.buffers\n const chars = buffers.char\n for (let index = 0; index < chars.length; index += 1) {\n const point = chars[index]\n if (point <= 0x7f) continue\n const offset = index * 4\n event.snapshot.setCell(\n index % event.snapshot.width,\n Math.floor(index / event.snapshot.width),\n monoCell(point),\n RGBA.fromArray(buffers.fg.subarray(offset, offset + 4)),\n RGBA.fromArray(buffers.bg.subarray(offset, offset + 4)),\n buffers.attributes[index],\n )\n }\n}\n\nfunction monoCell(point: number): string {\n const kind = point >>> 30\n if (kind === 2) return \"?\"\n if (kind === 3) return \" \"\n if (point === 0x2500) return \"-\"\n if (point === 0x2502) return \"|\"\n return markdown[point]?.[0] ?? \"?\"\n}\n\nexport function monoPrefix(value: string, mono: boolean): string {\n if (!mono) return value\n const point = value.codePointAt(0)\n if (point === undefined) return value\n const prefix = prefixes[point]\n if (!prefix) return value\n return prefix + value.slice(point > 0xffff ? 2 : 1)\n}\n\nexport function monoToolText(value: string, mono: boolean): string {\n const result = monoPrefix(value, mono)\n if (!mono) return result\n const separator = ` ${String.fromCodePoint(0xb7)} `\n const index = result.lastIndexOf(separator)\n if (index === -1) return result\n const head = result.slice(0, index)\n if (!head.includes(\" completed\") && head !== \"patch\" && !/^\\d+ questions$/.test(head)) return result\n return result.slice(0, index) + \" - \" + result.slice(index + separator.length)\n}\n\nexport function monoShortcut(value: string, mono: boolean): string {\n if (!mono) return value\n return value\n .replaceAll(String.fromCodePoint(0x2192), \"right\")\n .replaceAll(String.fromCodePoint(0x2190), \"left\")\n .replaceAll(String.fromCodePoint(0x2191), \"up\")\n .replaceAll(String.fromCodePoint(0x2193), \"down\")\n}\n\nexport function monoTruncate(value: string, width: number, mono: boolean): string {\n if (!mono || value.length <= width) return value\n if (width <= 3) return \".\".repeat(Math.max(0, width))\n return value.slice(0, width - 3) + \"...\"\n}\n\nexport function monoTruncateMiddle(value: string, width: number, mono: boolean): string {\n if (!mono || value.length <= width) return value\n if (width <= 3) return \".\".repeat(Math.max(0, width))\n const available = width - 3\n const left = Math.ceil(available / 2)\n return value.slice(0, left) + \"...\" + value.slice(value.length - (available - left))\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B1AB4DE224A4BB6164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/connection.ts", "../schema/src/integration.ts", "../schema/src/money.ts", "../schema/src/provider.ts", "../schema/src/model.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Connection from \"./connection.js\"\n\nimport { Schema } from \"effect\"\nimport { Credential } from \"./credential.js\"\n\nexport interface CredentialInfo extends Schema.Schema.Type<typeof CredentialInfo> {}\nexport const CredentialInfo = Schema.Struct({\n type: Schema.Literal(\"credential\"),\n id: Credential.ID,\n label: Schema.String,\n}).annotate({ identifier: \"Connection.CredentialInfo\" })\n\nexport interface EnvInfo extends Schema.Schema.Type<typeof EnvInfo> {}\nexport const EnvInfo = Schema.Struct({\n type: Schema.Literal(\"env\"),\n name: Schema.String,\n}).annotate({ identifier: \"Connection.EnvInfo\" })\n\nexport const Info = Schema.Union([CredentialInfo, EnvInfo])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Connection.Info\" })\nexport type Info = typeof Info.Type\n", | ||
| "export * as Integration from \"./integration.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { Connection } from \"./connection.js\"\nimport { ascending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\nimport { IntegrationID, IntegrationMethodID } from \"./integration-id.js\"\nimport { Form } from \"./form.js\"\n\nexport const ID = IntegrationID\nexport type ID = typeof ID.Type\n\nexport const MethodID = IntegrationMethodID\nexport type MethodID = typeof MethodID.Type\n\nexport interface OAuthMethod extends Schema.Schema.Type<typeof OAuthMethod> {}\nexport const OAuthMethod = Schema.Struct({\n id: MethodID,\n type: Schema.Literal(\"oauth\"),\n label: Schema.String,\n form: optional(Form.Fields),\n}).annotate({ identifier: \"Integration.OAuthMethod\" })\n\nexport interface CommandMethod extends Schema.Schema.Type<typeof CommandMethod> {}\nexport const CommandMethod = Schema.Struct({\n id: MethodID,\n type: Schema.Literal(\"command\"),\n label: Schema.String,\n command: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Integration.CommandMethod\" })\n\nexport interface KeyMethod extends Schema.Schema.Type<typeof KeyMethod> {}\nexport const KeyMethod = Schema.Struct({\n type: Schema.Literal(\"key\"),\n label: optional(Schema.String),\n form: optional(Form.Fields),\n}).annotate({ identifier: \"Integration.KeyMethod\" })\n\nexport interface EnvMethod extends Schema.Schema.Type<typeof EnvMethod> {}\nexport const EnvMethod = Schema.Struct({\n type: Schema.Literal(\"env\"),\n names: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Integration.EnvMethod\" })\n\nexport const Method = Schema.Union([OAuthMethod, CommandMethod, KeyMethod, EnvMethod])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Integration.Method\" })\nexport type Method = typeof Method.Type\n\nconst Updated = ephemeral({\n type: \"integration.updated\",\n schema: {},\n})\nconst ConnectionUpdated = ephemeral({\n type: \"integration.connection.updated\",\n schema: { integrationID: ID },\n})\nexport const Event = { Updated, ConnectionUpdated, Definitions: inventory(Updated, ConnectionUpdated) }\n\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\nexport const Ref = Schema.Struct({\n id: ID,\n name: Schema.String,\n}).annotate({ identifier: \"Integration.Ref\" })\n\nexport const Info = Schema.Struct({\n id: ID,\n name: Schema.String,\n methods: Schema.Array(Method),\n connections: Schema.Array(Connection.Info),\n}).annotate({ identifier: \"Integration.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const AttemptID = Schema.String.pipe(\n Schema.brand(\"Integration.AttemptID\"),\n statics((schema) => ({ create: () => schema.make(\"con_\" + ascending()) })),\n)\nexport type AttemptID = typeof AttemptID.Type\n\nconst AttemptTime = Schema.Struct({\n created: Schema.Number,\n expires: Schema.Number,\n})\n\nexport class Attempt extends Schema.Class<Attempt>(\"Integration.Attempt\")({\n attemptID: AttemptID,\n url: Schema.String,\n instructions: Schema.String,\n mode: Schema.Literals([\"auto\", \"code\"]),\n time: AttemptTime,\n}) {}\n\nexport const AttemptStatus = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"complete\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"failed\"), message: Schema.String, time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"expired\"), time: AttemptTime }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Integration.AttemptStatus\" })\nexport type AttemptStatus = typeof AttemptStatus.Type\n\nexport interface CommandAttempt extends Schema.Schema.Type<typeof CommandAttempt> {}\nexport const CommandAttempt = Schema.Struct({\n attemptID: AttemptID,\n time: AttemptTime,\n}).annotate({ identifier: \"Integration.CommandAttempt\" })\n\nexport const CommandAttemptStatus = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\"), message: optional(Schema.String), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"complete\"), time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"failed\"), message: Schema.String, time: AttemptTime }),\n Schema.Struct({ status: Schema.Literal(\"expired\"), time: AttemptTime }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Integration.CommandAttemptStatus\" })\nexport type CommandAttemptStatus = typeof CommandAttemptStatus.Type\n", | ||
| "export * as Money from \"./money.js\"\n\nimport { Schema } from \"effect\"\nimport { statics } from \"./schema.js\"\n\nexport const USD = Schema.Finite.pipe(\n Schema.brand(\"Money.USD\"),\n Schema.annotate({ identifier: \"Money.USD\" }),\n statics((schema) => ({ zero: schema.make(0) })),\n)\nexport type USD = typeof USD.Type\n\nexport const USDPerMillionTokens = Schema.Finite.pipe(\n Schema.brand(\"Money.USDPerMillionTokens\"),\n Schema.annotate({ identifier: \"Money.USDPerMillionTokens\" }),\n statics((schema) => ({ zero: schema.make(0) })),\n)\nexport type USDPerMillionTokens = typeof USDPerMillionTokens.Type\n", | ||
| "export * as Provider from \"./provider.js\"\n\nimport { Effect, Schema } from \"effect\"\nimport { Integration } from \"./integration.js\"\nimport { optional, statics } from \"./schema.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"Provider.ID\"),\n statics((schema) => ({\n opencode: schema.make(\"opencode\"),\n anthropic: schema.make(\"anthropic\"),\n openai: schema.make(\"openai\"),\n google: schema.make(\"google\"),\n googleVertex: schema.make(\"google-vertex\"),\n githubCopilot: schema.make(\"github-copilot\"),\n amazonBedrock: schema.make(\"amazon-bedrock\"),\n azure: schema.make(\"azure\"),\n openrouter: schema.make(\"openrouter\"),\n mistral: schema.make(\"mistral\"),\n gitlab: schema.make(\"gitlab\"),\n })),\n)\nexport type ID = typeof ID.Type\n\nexport const Package = Schema.String\nexport type Package = typeof Package.Type\n\nexport const Activation = Schema.Literals([\"auto\", \"enabled\", \"disabled\"])\nexport type Activation = typeof Activation.Type\n\nexport const Overlays = {\n settings: Schema.Record(Schema.String, Schema.Any).pipe(optional),\n headers: Schema.Record(Schema.String, Schema.String).pipe(optional),\n body: Schema.Record(Schema.String, Schema.Any).pipe(optional),\n}\n\nexport const Settings = Schema.Record(Schema.String, Schema.Any).annotate({ identifier: \"Provider.Settings\" })\nexport type Settings = typeof Settings.Type\n\nexport interface Request extends Schema.Schema.Type<typeof Request> {}\nexport const Request = Schema.Struct({\n settings: Settings.pipe(Schema.withConstructorDefault(Effect.succeed({}))),\n headers: Schema.Record(Schema.String, Schema.String),\n body: Schema.Record(Schema.String, Schema.Any),\n}).annotate({ identifier: \"Provider.Request\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n integrationID: Integration.ID.pipe(optional),\n name: Schema.String,\n activation: Activation,\n package: Package,\n ...Overlays,\n})\n .annotate({ identifier: \"Provider.Info\" })\n .pipe(\n statics(() => ({\n empty: (id: ID): Info => ({ id, name: id, activation: \"auto\", package: \"\" }),\n })),\n )\n", | ||
| "export * as Model from \"./model.js\"\n\nimport { Schema } from \"effect\"\nimport { optional, statics } from \"./schema.js\"\nimport { Provider } from \"./provider.js\"\nimport { Money } from \"./money.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Model.ID\"))\nexport type ID = typeof ID.Type\n\nexport const VariantID = Schema.String.pipe(Schema.brand(\"Model.VariantID\"))\nexport type VariantID = typeof VariantID.Type\n\nexport const Ref = Schema.Struct({\n id: ID,\n providerID: Provider.ID,\n variant: VariantID.pipe(optional),\n})\n .annotate({ identifier: \"Model.Ref\" })\n .pipe(\n statics((schema) => ({\n parse: (input: string) => {\n const providerEnd = input.indexOf(\"/\")\n if (providerEnd <= 0) throw new Error(`Invalid model reference: ${input}`)\n const providerID = input.slice(0, providerEnd)\n const variantStart = input.indexOf(\"#\", providerEnd + 1)\n const id = input.slice(providerEnd + 1, variantStart === -1 ? undefined : variantStart)\n const variant = variantStart === -1 ? undefined : input.slice(variantStart + 1)\n if (!id || providerID.includes(\"#\") || (variant !== undefined && (!variant || variant.includes(\"#\"))))\n throw new Error(`Invalid model reference: ${input}`)\n return schema.make({\n providerID: Provider.ID.make(providerID),\n id: ID.make(id),\n ...(variant ? { variant: VariantID.make(variant) } : {}),\n })\n },\n })),\n )\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\n\nexport const Family = Schema.String.pipe(Schema.brand(\"Model.Family\"))\nexport type Family = typeof Family.Type\n\nexport type ReasoningField = \"reasoning\" | \"reasoning_content\" | \"reasoning_text\" | (string & {})\nexport const ReasoningField: Schema.Codec<ReasoningField> = Schema.Union([\n Schema.Literals([\"reasoning\", \"reasoning_content\", \"reasoning_text\"]),\n Schema.String,\n]).annotate({ identifier: \"Model.ReasoningField\" })\n\nexport const MaxTokensField = Schema.Literals([\"max_completion_tokens\", \"max_tokens\"]).annotate({\n identifier: \"Model.MaxTokensField\",\n})\nexport type MaxTokensField = typeof MaxTokensField.Type\n\nexport interface Compatibility extends Schema.Schema.Type<typeof Compatibility> {}\nexport const Compatibility = Schema.Struct({\n reasoningField: ReasoningField.pipe(optional),\n maxTokensField: MaxTokensField.pipe(optional),\n requireFinishReason: Schema.Boolean.pipe(optional),\n requireAssistantAfterTool: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Model.Compatibility\" })\n\nexport interface Capabilities extends Schema.Schema.Type<typeof Capabilities> {}\nexport const Capabilities = Schema.Struct({\n tools: Schema.Boolean,\n input: Schema.Array(Schema.String),\n output: Schema.Array(Schema.String),\n responsesWebsockets: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Model.Capabilities\" })\n\nexport interface Cost extends Schema.Schema.Type<typeof Cost> {}\nexport const Cost = Schema.Struct({\n tier: Schema.Struct({\n type: Schema.tag(\"context\"),\n size: Schema.Int,\n }).pipe(optional),\n input: Money.USDPerMillionTokens,\n output: Money.USDPerMillionTokens,\n cache: Schema.Struct({\n read: Money.USDPerMillionTokens,\n write: Money.USDPerMillionTokens,\n }),\n}).annotate({ identifier: \"Model.Cost\" })\n\nexport interface Variant extends Schema.Schema.Type<typeof Variant> {}\nexport const Variant = Schema.Struct({\n id: VariantID,\n ...Provider.Overlays,\n}).annotate({ identifier: \"Model.Variant\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n modelID: ID,\n providerID: Provider.ID,\n family: Family.pipe(optional),\n name: Schema.String,\n compatibility: Compatibility.pipe(optional),\n package: Provider.Package.pipe(optional),\n ...Provider.Overlays,\n capabilities: Capabilities,\n variants: Schema.Array(Variant),\n time: Schema.Struct({\n released: Schema.Finite,\n }),\n cost: Schema.Array(Cost),\n status: Schema.Literals([\"alpha\", \"beta\", \"deprecated\", \"active\"]),\n enabled: Schema.Boolean,\n limit: Schema.Struct({\n context: Schema.Int,\n input: Schema.Int.pipe(optional),\n output: Schema.Int,\n }),\n})\n .annotate({ identifier: \"Model.Info\" })\n .pipe(\n statics(() => ({\n default: (providerID: Provider.ID, id: ID) =>\n ({\n id,\n modelID: id,\n providerID,\n name: id,\n capabilities: { tools: true, input: [\"text\", \"image\"], output: [\"text\"] },\n variants: [],\n time: { released: 0 },\n cost: [],\n status: \"active\",\n enabled: true,\n limit: { context: 200_000, output: 32_000 },\n }) satisfies Info,\n })),\n )\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8E87D5B12D5AEC1464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n constructor({\n value,\n cause,\n context\n }) {\n let contextPrefix = \"Type validation failed\";\n if (context == null ? void 0 : context.field) {\n contextPrefix += ` for ${context.field}`;\n }\n if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {\n contextPrefix += \" (\";\n const parts = [];\n if (context.entityName) {\n parts.push(context.entityName);\n }\n if (context.entityId) {\n parts.push(`id: \"${context.entityId}\"`);\n }\n contextPrefix += parts.join(\", \");\n contextPrefix += \")\";\n }\n super({\n name: name12,\n message: `${contextPrefix}: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n this.context = context;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value and context, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n context\n }) {\n var _a15, _b15, _c;\n if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a15 = cause.context) == null ? void 0 : _a15.field) === (context == null ? void 0 : context.field) && ((_b15 = cause.context) == null ? void 0 : _b15.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {\n return cause;\n }\n return new _TypeValidationError({ value, cause, context });\n }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "EC14BDF6312E849F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/cli-spinners@3.4.0/node_modules/cli-spinners/index.js", "../../node_modules/.bun/opentui-spinner@0.0.7+a7de680a49296111/node_modules/opentui-spinner/dist/src-DjeqLSfu.mjs", "../../node_modules/.bun/opentui-spinner@0.0.7+a7de680a49296111/node_modules/opentui-spinner/dist/solid.mjs", "../tui/src/component/register-spinner.ts"], | ||
| "sourcesContent": [ | ||
| "import spinners from './spinners.json' with {type: 'json'};\n\nexport default spinners;\n\nconst spinnersList = Object.keys(spinners);\n\nexport function randomSpinner() {\n\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\tconst spinnerName = spinnersList[randomIndex];\n\treturn spinners[spinnerName];\n}\n", | ||
| "import{Renderable as e,parseColor as t,resolveRenderLib as n}from\"@opentui/core\";import r from\"cli-spinners\";const i=1e3/60,a=1e3;function o(e){if(!Number.isFinite(e)||e<i||e>a)throw RangeError(`Spinner interval must be a finite number between ${i}ms and ${a}ms`);return e}const s={now:()=>performance.now(),setInterval:(e,t)=>{let n=setInterval(e,t);return n.unref(),n},clearInterval:e=>clearInterval(e)},c=new class{active=new Map;heap=[];timer=null;timerDueAt=0;generation=0;lastWakeAt=-1/0;clock;constructor(e=s,t=16){this.denseTickThreshold=t,this.clock=e}setClock(e){if(this.active.size>0||this.timer!==null)throw Error(`Cannot replace the spinner scheduler clock while active`);this.clock=e}start(e,t,n){if(this.active.has(e))return;let r={spinner:e,interval:t,nextDueAt:this.clock.now()+t,advance:n};this.active.set(e,r),this.push(r),this.armNext()}reschedule(e,t){let n=this.active.get(e);if(!n)return;let r={spinner:e,interval:t,nextDueAt:this.clock.now()+t,advance:n.advance};this.active.set(e,r),this.push(r),this.compactIfNeeded(),this.armNext()}stop(e){this.active.delete(e)&&(this.compactIfNeeded(),this.armNext())}armNext(){this.discardStaleRoots();let e=this.heap[0];if(!e){this.cancelTimer(),this.lastWakeAt=-1/0;return}let t=this.clock.now(),n=Math.max(e.nextDueAt,this.lastWakeAt+i);if(this.timer!==null&&this.timerDueAt===n)return;this.cancelTimer();let r=this.generation,a=Math.max(n-t,0);this.timerDueAt=n,this.timer=this.clock.setInterval(()=>this.tick(r),a)}cancelTimer(){this.timer!==null&&(this.generation++,this.clock.clearInterval(this.timer),this.timer=null)}tick(e){if(e!==this.generation||this.timer===null)return;let t=this.timer;this.generation++,this.timer=null,this.clock.clearInterval(t);let n=this.clock.now();this.discardStaleRoots();let r=!1,i=0,a=[];for(;this.heap[0]&&this.heap[0].nextDueAt<=n;){let e=this.pop();if(!(!e||!this.isCurrent(e))){try{e.advance()}catch(e){a.push(e)}if(r=!0,this.isCurrent(e)&&(e.nextDueAt=n+e.interval,this.push(e),i++,i===this.denseTickThreshold)){let e=this.heap;this.heap=[];for(let t of e)if(this.isCurrent(t)){if(t.nextDueAt<=n){try{t.advance()}catch(e){a.push(e)}if(r=!0,!this.isCurrent(t))continue;t.nextDueAt=n+t.interval}this.heap.push(t)}this.heapify();break}}}if(r&&(this.lastWakeAt=n),this.compactIfNeeded(),this.armNext(),a.length===1)throw a[0];if(a.length>1)throw AggregateError(a,`Multiple spinner callbacks failed`)}isCurrent(e){return this.active.get(e.spinner)===e}discardStaleRoots(){for(;this.heap[0]&&!this.isCurrent(this.heap[0]);)this.pop()}compactIfNeeded(){this.heap.length<=this.active.size*2+16||(this.heap=Array.from(this.active.values()),this.heapify())}heapify(){for(let e=Math.floor(this.heap.length/2)-1;e>=0;e--)this.siftDown(e)}push(e){this.heap.push(e);let t=this.heap.length-1;for(;t>0;){let n=Math.floor((t-1)/2);if(this.heap[n].nextDueAt<=e.nextDueAt)break;this.heap[t]=this.heap[n],t=n}this.heap[t]=e}pop(){let e=this.heap[0],t=this.heap.pop();return!e||!t||this.heap.length===0?e:(this.heap[0]=t,this.siftDown(0),e)}siftDown(e){let t=this.heap[e],n=e;for(;;){let e=n*2+1;if(e>=this.heap.length)break;let r=e+1,i=r<this.heap.length&&this.heap[r].nextDueAt<this.heap[e].nextDueAt?r:e;if(this.heap[i].nextDueAt>=t.nextDueAt)break;this.heap[n]=this.heap[i],n=i}this.heap[n]=t}};function l(e,t=1){if(e.length===0)throw RangeError(`createPulse requires at least one color`);return n=>e[Math.floor(n*t)%e.length]}function u(e){if(e.length===0)throw RangeError(`createWave requires at least one color`);return(t,n,r,i)=>{let a=(n+t)%i;return e[Math.floor(a/i*e.length)]??e[0]}}function d(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}var f=class extends e{_name;_frames;_interval;_autoplay;_backgroundColor;_parsedBackgroundColor;_color;_parsedColor;_currentFrameIndex=0;_encodedFrames={};_lib=n();_isRunning=!1;_advanceFrame=()=>{!this._isRunning||this.isDestroyed||(this._currentFrameIndex=(this._currentFrameIndex+1)%this._frames.length,this.requestRender())};_defaultOptions={name:`dots`,frames:r.dots.frames,interval:r.dots.interval,autoplay:!0,backgroundColor:`transparent`,color:`white`};constructor(e,n){super(e,n),this._name=n.name,this._frames=n.frames?.length?n.frames:this._name?r[this._name].frames:this._defaultOptions.frames,this._interval=o(n.interval??(this._name?r[this._name].interval:this._defaultOptions.interval)),this._autoplay=n.autoplay??this._defaultOptions.autoplay,this._backgroundColor=n.backgroundColor??this._defaultOptions.backgroundColor,this._parsedBackgroundColor=t(this._backgroundColor),this._color=n.color??this._defaultOptions.color,this._parsedColor=typeof this._color==`function`?t(this._defaultOptions.color):t(this._color),this.height=1,this._encodeFrames(),this._autoplay&&this.start()}_encodeFrames(){let e=0;for(let t of this._frames){if(this._encodedFrames[t])continue;let n=this._lib.encodeUnicode(t,this.ctx.widthMethod);n&&(this._encodedFrames[t]=n,e=Math.max(e,n.data.reduce((e,t)=>e+t.width,0)))}this.width=e}_freeFrames(){for(let e in this._encodedFrames)this._encodedFrames[e]&&this._lib.freeUnicode(this._encodedFrames[e]);this._encodedFrames={}}get interval(){return this._interval}set interval(e){this._interval=o(e),this._isRunning&&c.reschedule(this,this._interval)}get name(){return this._name}set name(e){let t=e?r[e].frames:this._defaultOptions.frames,n=o(e?r[e].interval:this._defaultOptions.interval),i=!d(this._frames,t),a=this._interval!==n;this._name=e,this._interval=n,i&&(this._freeFrames(),this._frames=t,this._currentFrameIndex=0,this._encodeFrames(),this.visible&&this.requestRender()),this._isRunning&&a&&c.reschedule(this,n)}get frames(){return this._frames}set frames(e){let t=e.length===0?this._defaultOptions.frames:e;if(d(this._frames,t)){this._frames=t;return}this._freeFrames(),this._frames=t,this._currentFrameIndex=0,this._encodeFrames(),this.visible&&this.requestRender()}get color(){return this._color}set color(e){this._color=e,typeof e!=`function`&&(this._parsedColor=t(e)),this.visible&&this.requestRender()}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e,this._parsedBackgroundColor=t(e),this.visible&&this.requestRender()}get visible(){return super.visible}set visible(e){e!==super.visible&&(super.visible=e,this._isRunning&&(e?c.start(this,this._interval,this._advanceFrame):c.stop(this)))}get autoplay(){return this._autoplay}set autoplay(e){this._autoplay=e,e?this.start():this.stop()}start(){this._isRunning||this.isDestroyed||(this._isRunning=!0,this.visible&&c.start(this,this._interval,this._advanceFrame))}stop(){this._isRunning&&(this._isRunning=!1,c.stop(this))}renderSelf(e){if(!this.visible)return;let n=this._frames[this._currentFrameIndex];if(!n)return;let r=this._encodedFrames[n];if(!r)return;let i=this.x;for(let n=0;n<r.data.length;n++){let a=typeof this._color==`function`?t(this._color(this._currentFrameIndex,n,this._frames.length,r.data.length)):this._parsedColor;e.drawChar(r.data[n].char,i,this.y,a,this._parsedBackgroundColor),i+=r.data[n].width}}destroySelf(){this.stop(),this._freeFrames(),super.destroySelf()}};export{l as n,u as r,f as t};", | ||
| "import{t as e}from\"./src-DjeqLSfu.mjs\";import{extend as t}from\"@opentui/solid/components\";function n(){t({spinner:e})}n();export{n as registerSpinner};", | ||
| "import { getComponentCatalogue } from \"@opentui/solid/components\"\nimport { registerSpinner } from \"opentui-spinner/solid\"\n\nexport function registerOpencodeSpinner() {\n if (!getComponentCatalogue().spinner) registerSpinner()\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F167F6595981620064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/filesystem.ts"], | ||
| "sourcesContent": [ | ||
| "export * as FileSystem from \"./filesystem.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { NonNegativeInt, PositiveInt, RelativePath } from \"./schema.js\"\n\nconst Changed = ephemeral({\n type: \"filesystem.changed\",\n schema: {\n file: Schema.String,\n event: Schema.Literals([\"add\", \"change\", \"unlink\"]),\n },\n})\nexport const Event = { Changed, Definitions: inventory(Changed) }\n\nexport interface Entry extends Schema.Schema.Type<typeof Entry> {}\nexport const Entry = Schema.Struct({\n path: RelativePath,\n type: Schema.Literals([\"file\", \"directory\"]),\n}).annotate({ identifier: \"FileSystem.Entry\" })\n\nexport interface Submatch extends Schema.Schema.Type<typeof Submatch> {}\nexport const Submatch = Schema.Struct({\n text: Schema.String,\n start: NonNegativeInt,\n end: NonNegativeInt,\n}).annotate({ identifier: \"FileSystem.Submatch\" })\n\nexport interface Match extends Schema.Schema.Type<typeof Match> {}\nexport const Match = Schema.Struct({\n entry: Entry,\n line: PositiveInt,\n offset: NonNegativeInt,\n text: Schema.String,\n submatches: Schema.Array(Submatch),\n}).annotate({ identifier: \"FileSystem.Match\" })\n\nexport class FindInput extends Schema.Class<FindInput>(\"FileSystem.FindInput\")({\n query: Schema.String,\n type: Schema.Literals([\"file\", \"directory\"]).pipe(optional),\n limit: PositiveInt.pipe(optional),\n}) {}\n" | ||
| ], | ||
| "mappings": ";oVAOA,IAAM,EAAU,EAAU,CACxB,KAAM,qBACN,OAAQ,CACN,KAAM,EAAO,OACb,MAAO,EAAO,SAAS,CAAC,MAAO,SAAU,QAAQ,CAAC,CACpD,CACF,CAAC,EACY,EAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,EAGnD,EAAQ,EAAO,OAAO,CACjC,KAAM,EACN,KAAM,EAAO,SAAS,CAAC,OAAQ,WAAW,CAAC,CAC7C,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAGjC,EAAW,EAAO,OAAO,CACpC,KAAM,EAAO,OACb,MAAO,EACP,IAAK,CACP,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,EAGpC,EAAQ,EAAO,OAAO,CACjC,MAAO,EACP,KAAM,EACN,OAAQ,EACR,KAAM,EAAO,OACb,WAAY,EAAO,MAAM,CAAQ,CACnC,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAEvC,MAAM,UAAkB,EAAO,MAAiB,sBAAsB,EAAE,CAC7E,MAAO,EAAO,OACd,KAAM,EAAO,SAAS,CAAC,OAAQ,WAAW,CAAC,EAAE,KAAK,CAAQ,EAC1D,MAAO,EAAY,KAAK,CAAQ,CAClC,CAAC,CAAE,CAAC", | ||
| "debugId": "92AB3CDA771B404064756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/route/auth-options.ts"], | ||
| "sourcesContent": [ | ||
| "import type { Config, Redacted } from \"effect\"\nimport { Auth } from \"./auth.js\"\n\nexport type ApiKeyMode = \"optional\" | \"required\"\n\nexport type AuthOverride = {\n readonly auth: Auth.Definition\n readonly apiKey?: never\n}\n\nexport type OptionalApiKeyAuth = {\n readonly apiKey?: string | Redacted.Redacted<string> | Config.Config<string | Redacted.Redacted<string>>\n readonly auth?: never\n}\n\nexport type RequiredApiKeyAuth = {\n readonly apiKey: string | Redacted.Redacted<string> | Config.Config<string | Redacted.Redacted<string>>\n readonly auth?: never\n}\n\nexport type ProviderAuthOption<Mode extends ApiKeyMode> =\n | AuthOverride\n | (Mode extends \"optional\" ? OptionalApiKeyAuth : RequiredApiKeyAuth)\n\nexport type LanguageModelOptions<Base, Mode extends ApiKeyMode> = Omit<Base, \"apiKey\" | \"auth\"> &\n ProviderAuthOption<Mode>\n\nexport type LanguageModelArgs<Base, Mode extends ApiKeyMode> = Mode extends \"optional\"\n ? readonly [options?: LanguageModelOptions<Base, Mode>]\n : readonly [options: LanguageModelOptions<Base, Mode>]\n\nexport type LanguageModelFactory<Base, Mode extends ApiKeyMode, LanguageModel> = (\n id: string,\n ...args: LanguageModelArgs<Base, Mode>\n) => LanguageModel\n\n/**\n * Require at least one of the keys in `T`. Use for option shapes where any\n * subset of fields is acceptable but at least one must be present (e.g. Azure\n * accepts `resourceName` or `baseURL`).\n */\nexport type AtLeastOne<T> = {\n [K in keyof T]: Required<Pick<T, K>> & Partial<Omit<T, K>>\n}[keyof T]\n\n/**\n * Standard bearer-auth resolution for providers: honor an explicit `auth`\n * override, otherwise resolve `apiKey` (option > config var) and apply it as\n * a bearer token.\n */\nexport const bearer = (\n options: ProviderAuthOption<\"optional\">,\n envVar: string | ReadonlyArray<string>,\n): Auth.Definition => {\n if (\"auth\" in options && options.auth) return options.auth\n return (Array.isArray(envVar) ? envVar : [envVar])\n .reduce(\n (auth, name) => auth.orElse(Auth.config(name)),\n Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\"),\n )\n .bearer()\n}\n\nexport * as AuthOptions from \"./auth-options.js\"\n" | ||
| ], | ||
| "mappings": ";uJAkDO,IAAM,EAAS,CACpB,EACA,IACoB,CACpB,GAAI,SAAU,GAAW,EAAQ,KAAM,OAAO,EAAQ,KACtD,OAAQ,MAAM,QAAQ,CAAM,EAAI,EAAS,CAAC,CAAM,GAC7C,OACC,CAAC,EAAM,IAAS,EAAK,OAAO,EAAK,OAAO,CAAI,CAAC,EAC7C,EAAK,SAAS,WAAY,EAAU,EAAQ,OAAS,OAAW,QAAQ,CAC1E,EACC,OAAO", | ||
| "debugId": "9DA02457F3B8A18264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/worktree.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Worktree from \"./worktree.js\"\n\nimport { Schema } from \"effect\"\nimport { durable, ephemeral, inventory } from \"./event.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { AbsolutePath, optional } from \"./schema.js\"\nimport { Project } from \"./project.js\"\n\nexport const StrategyID = Schema.Trim.pipe(Schema.check(Schema.isNonEmpty()), Schema.brand(\"Worktree.StrategyID\"))\nexport type StrategyID = typeof StrategyID.Type\n\nexport const CreateInput = Schema.Struct({\n projectID: ProjectID,\n strategy: StrategyID,\n from: optional(AbsolutePath),\n branch: optional(Schema.Trim.pipe(Schema.check(Schema.isNonEmpty()))),\n directory: AbsolutePath,\n name: optional(Schema.String),\n}).annotate({ identifier: \"Worktree.CreateInput\" })\nexport interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {}\n\nexport const RemoveInput = Schema.Struct({\n projectID: ProjectID,\n directory: AbsolutePath,\n force: Schema.Boolean,\n}).annotate({ identifier: \"Worktree.RemoveInput\" })\nexport interface RemoveInput extends Schema.Schema.Type<typeof RemoveInput> {}\n\nexport const Info = Schema.Struct({\n directory: AbsolutePath,\n}).annotate({ identifier: \"Worktree.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Directory = Schema.Struct({\n directory: AbsolutePath,\n strategy: optional(Schema.String),\n}).annotate({ identifier: \"Worktree.Directory\" })\nexport interface Directory extends Schema.Schema.Type<typeof Directory> {}\n\nexport const ListInput = Schema.Struct({\n projectID: ProjectID,\n}).annotate({ identifier: \"Worktree.ListInput\" })\nexport interface ListInput extends Schema.Schema.Type<typeof ListInput> {}\n\nexport const List = Schema.Array(Directory).annotate({ identifier: \"Worktree.List\" })\nexport type List = typeof List.Type\n\nconst Updated = ephemeral({\n type: \"worktree.updated\",\n schema: { projectID: Project.ID },\n})\n\nconst Resolved = durable({\n type: \"worktree.resolved\",\n durable: { aggregate: \"projectID\", version: 1 },\n schema: {\n projectID: Project.ID,\n directory: AbsolutePath,\n previous: Project.ID,\n },\n})\n\nexport const Event = { Updated, Resolved, Definitions: inventory(Updated, Resolved) }\n\nexport function adopt(\n session: { readonly projectID: string; readonly directory: string },\n event: { readonly projectID: string; readonly directory: string; readonly previous: string },\n) {\n if (session.projectID !== event.previous && session.projectID !== Project.ID.global) return\n if (session.projectID === event.projectID) return\n const inside =\n session.directory === event.directory ||\n session.directory.startsWith(event.directory + \"/\") ||\n session.directory.startsWith(event.directory + \"\\\\\")\n if (!inside) return\n return {\n projectID: event.projectID,\n subpath:\n session.directory === event.directory\n ? undefined\n : session.directory.slice(event.directory.length + 1).replaceAll(\"\\\\\", \"/\"),\n }\n}\n" | ||
| ], | ||
| "mappings": ";scAQO,IAAM,EAAa,EAAO,KAAK,KAAK,EAAO,MAAM,EAAO,WAAW,CAAC,EAAG,EAAO,MAAM,qBAAqB,CAAC,EAGpG,EAAc,EAAO,OAAO,CACvC,UAAW,EACX,SAAU,EACV,KAAM,EAAS,CAAY,EAC3B,OAAQ,EAAS,EAAO,KAAK,KAAK,EAAO,MAAM,EAAO,WAAW,CAAC,CAAC,CAAC,EACpE,UAAW,EACX,KAAM,EAAS,EAAO,MAAM,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,EAAc,EAAO,OAAO,CACvC,UAAW,EACX,UAAW,EACX,MAAO,EAAO,OAChB,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,EAAO,EAAO,OAAO,CAChC,UAAW,CACb,CAAC,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAG9B,EAAY,EAAO,OAAO,CACrC,UAAW,EACX,SAAU,EAAS,EAAO,MAAM,CAClC,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAY,EAAO,OAAO,CACrC,UAAW,CACb,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,EAAO,EAAO,MAAM,CAAS,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAG9E,EAAU,EAAU,CACxB,KAAM,mBACN,OAAQ,CAAE,UAAW,EAAQ,EAAG,CAClC,CAAC,EAEK,EAAW,EAAQ,CACvB,KAAM,oBACN,QAAS,CAAE,UAAW,YAAa,QAAS,CAAE,EAC9C,OAAQ,CACN,UAAW,EAAQ,GACnB,UAAW,EACX,SAAU,EAAQ,EACpB,CACF,CAAC,EAEY,EAAQ,CAAE,UAAS,WAAU,YAAa,EAAU,EAAS,CAAQ,CAAE,EAE7E,SAAS,CAAK,CACnB,EACA,EACA,CACA,GAAI,EAAQ,YAAc,EAAM,UAAY,EAAQ,YAAc,EAAQ,GAAG,OAAQ,OACrF,GAAI,EAAQ,YAAc,EAAM,UAAW,OAK3C,GAAI,EAHF,EAAQ,YAAc,EAAM,WAC5B,EAAQ,UAAU,WAAW,EAAM,UAAY,GAAG,GAClD,EAAQ,UAAU,WAAW,EAAM,UAAY,IAAI,GACxC,OACb,MAAO,CACL,UAAW,EAAM,UACjB,QACE,EAAQ,YAAc,EAAM,UACxB,OACA,EAAQ,UAAU,MAAM,EAAM,UAAU,OAAS,CAAC,EAAE,WAAW,KAAM,GAAG,CAChF", | ||
| "debugId": "D710AF5196CAAD4564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/constants.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js", "../../node_modules/.bun/@aws-sdk+token-providers@3.1111.0/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-sso@3.973.13/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js"], | ||
| "sourcesContent": [ | ||
| "import { CredentialsProviderError, getProfileName, loadSsoSessionData, parseKnownFiles } from \"@smithy/core/config\";\nimport { isSsoProfile } from \"./isSsoProfile\";\nimport { resolveSSOCredentials } from \"./resolveSSOCredentials\";\nimport { validateSsoProfile } from \"./validateSsoProfile\";\nexport const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-sso - fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await parseKnownFiles(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger });\n }\n if (!isSsoProfile(profile)) {\n throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, {\n logger: init.logger,\n });\n }\n if (profile?.sso_session) {\n const ssoSessions = await loadSsoSessionData(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger);\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient: ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new CredentialsProviderError(\"Incomplete configuration. The fromSSO() argument hash must include \" +\n '\"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"', { tryNextLink: false, logger: init.logger });\n }\n else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n};\n", | ||
| "export const isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_session === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { fromSso as getSsoTokenProvider } from \"@aws-sdk/token-providers\";\nimport { CredentialsProviderError, getSSOTokenFromFile } from \"@smithy/core/config\";\nconst SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nexport const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await getSsoTokenProvider({\n profile,\n filepath,\n configFilepath,\n ignoreCache,\n clientConfig,\n parentClientConfig,\n logger,\n })({ callerClientConfig });\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString(),\n };\n }\n catch (e) {\n throw new CredentialsProviderError(e.message, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n else {\n try {\n token = await getSSOTokenFromFile(ssoStartUrl);\n }\n catch (e) {\n throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { accessToken } = token;\n const { SSOClient, GetRoleCredentialsCommand } = await import(\"./loadSso.js\");\n const sso = ssoClient ||\n new SSOClient(Object.assign({}, clientConfig ?? {}, {\n logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger,\n region: clientConfig?.region ?? ssoRegion,\n userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId,\n }));\n let ssoResp;\n try {\n ssoResp = await sso.send(new GetRoleCredentialsCommand({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken,\n }));\n }\n catch (e) {\n throw new CredentialsProviderError(e, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new CredentialsProviderError(\"SSO returns an invalid temporary credential.\", {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration: new Date(expiration),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n if (ssoSession) {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO\", \"s\");\n }\n else {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO_LEGACY\", \"u\");\n }\n return credentials;\n};\n", | ||
| "import { getProfileName, getSSOTokenFromFile, loadSsoSessionData, parseKnownFiles, TokenProviderError, } from \"@smithy/core/config\";\nimport { EXPIRE_WINDOW_MS, REFRESH_MESSAGE } from \"./constants\";\nimport { getNewSsoOidcToken } from \"./getNewSsoOidcToken\";\nimport { validateTokenExpiry } from \"./validateTokenExpiry\";\nimport { validateTokenKey } from \"./validateTokenKey\";\nimport { writeSSOTokenToFile } from \"./writeSSOTokenToFile\";\nconst lastRefreshAttemptTime = new Date(0);\nexport const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/token-providers - fromSso\");\n const profiles = await parseKnownFiles(init);\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n const profile = profiles[profileName];\n if (!profile) {\n throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n }\n else if (!profile[\"sso_session\"]) {\n throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await loadSsoSessionData(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false);\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false);\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await getSSOTokenFromFile(ssoSessionName);\n }\n catch (e) {\n throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false);\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken,\n });\n }\n catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration,\n };\n }\n catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n};\n", | ||
| "export const EXPIRE_WINDOW_MS = 5 * 60 * 1000;\nexport const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n", | ||
| "export const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => {\n const { SSOOIDCClient } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop];\n const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, {\n region: ssoRegion ?? init.clientConfig?.region,\n logger: coalesce(\"logger\"),\n userAgentAppId: coalesce(\"userAgentAppId\"),\n }));\n return ssoOidcClient;\n};\n", | ||
| "import { getSsoOidcClient } from \"./getSsoOidcClient\";\nexport const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => {\n const { CreateTokenCommand } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig);\n return ssoOidcClient.send(new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\",\n }));\n};\n", | ||
| "import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenExpiry = (token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n};\n", | ||
| "import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenKey = (key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`, false);\n }\n};\n", | ||
| "import { getSSOTokenFilepath } from \"@smithy/core/config\";\nimport { promises as fsPromises } from \"node:fs\";\nconst { writeFile } = fsPromises;\nexport const writeSSOTokenToFile = (id, ssoToken) => {\n const tokenFilepath = getSSOTokenFilepath(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nexport const validateSsoProfile = (profile, logger) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", ` +\n `\"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\", \")}\\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger });\n }\n return profile;\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "0AD27960D4EF5FCE64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/pair.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode } from \"@opencode-ai/client/promise\"\nimport { renderUnicodeCompact } from \"uqr\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServiceConfig } from \"../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.pair,\n Effect.fn(\"cli.pair\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const password = yield* ServiceConfig.password()\n const server = yield* Effect.tryPromise(() =>\n OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) }).server.get(),\n )\n const info = { urls: server.urls, username: \"opencode\", password }\n process.stdout.write(\n [\n \"\",\n ` URLs ${info.urls[0] ?? \"(none)\"}`,\n ...info.urls.slice(1).map((url) => ` ${url}`),\n ` Username ${info.username}`,\n ` Password ${info.password}`,\n \"\",\n \" Scan to pair\",\n \"\",\n renderUnicodeCompact(JSON.stringify(info), { border: 2 })\n .split(EOL)\n .map((line) => \" \" + line)\n .join(EOL),\n \"\",\n ].join(EOL) + EOL,\n )\n\n const hostname = new URL(endpoint.url).hostname\n if (![\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(hostname)) return\n process.stderr.write(` Run \\`opencode service set hostname 0.0.0.0\\` to access the service remotely.${EOL}${EOL}`)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAST,IAAe,IAAQ,QACrB,EAAS,SAAS,KAClB,EAAO,GAAG,UAAU,EAAE,SAAU,EAAG,CACjC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAW,MAAO,EAAc,SAAS,EAIzC,EAAO,CAAE,MAHA,MAAO,EAAO,WAAW,IACtC,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAAE,OAAO,IAAI,CAC1F,GAC4B,KAAM,SAAU,WAAY,UAAS,EACjE,QAAQ,OAAO,MACb,CACE,GACA,eAAe,EAAK,KAAK,IAAM,WAC/B,GAAG,EAAK,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAQ,eAAe,GAAK,EACvD,eAAe,EAAK,WACpB,eAAe,EAAK,WACpB,GACA,iBACA,GACA,EAAqB,KAAK,UAAU,CAAI,EAAG,CAAE,OAAQ,CAAE,CAAC,EACrD,MAAM,CAAG,EACT,IAAI,CAAC,IAAS,KAAO,CAAI,EACzB,KAAK,CAAG,EACX,EACF,EAAE,KAAK,CAAG,EAAI,CAChB,EAEA,IAAM,EAAW,IAAI,IAAI,EAAS,GAAG,EAAE,SACvC,GAAI,CAAC,CAAC,YAAa,YAAa,OAAO,EAAE,SAAS,CAAQ,EAAG,OAC7D,QAAQ,OAAO,MAAM,kFAAkF,IAAM,GAAK,EACnH,CACH", | ||
| "debugId": "0838F14C9678708C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "633F83211616374A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/logout.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { resolveIntegration } from \"./resolve\"\n\nconst location = { directory: process.cwd() }\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.logout,\n Effect.fn(\"cli.mcp.logout\")(function* (input) {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n\n const integration = yield* resolveIntegration(client, input.name, location)\n if (!integration) {\n process.stdout.write(`No stored credentials for ${input.name}` + EOL)\n return\n }\n\n const credentials = integration.connections.filter((connection) => connection.type === \"credential\")\n if (credentials.length === 0) {\n process.stdout.write(`No stored credentials for ${input.name}` + EOL)\n return\n }\n\n yield* Effect.forEach(\n credentials,\n (connection) => Effect.promise(() => client.credential.remove({ credentialID: connection.id, location })),\n { discard: true },\n )\n process.stdout.write(`Removed OAuth credentials for ${input.name}` + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";u9BAAA,cAAS,WAST,IAAM,EAAW,CAAE,UAAW,QAAQ,IAAI,CAAE,EAE7B,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,OAC/B,EAAO,GAAG,gBAAgB,EAAE,SAAU,CAAC,EAAO,CAC5C,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,EAAc,MAAO,EAAmB,EAAQ,EAAM,KAAM,CAAQ,EAC1E,GAAI,CAAC,EAAa,CAChB,QAAQ,OAAO,MAAM,6BAA6B,EAAM,OAAS,CAAG,EACpE,OAGF,IAAM,EAAc,EAAY,YAAY,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACnG,GAAI,EAAY,SAAW,EAAG,CAC5B,QAAQ,OAAO,MAAM,6BAA6B,EAAM,OAAS,CAAG,EACpE,OAGF,MAAO,EAAO,QACZ,EACA,CAAC,IAAe,EAAO,QAAQ,IAAM,EAAO,WAAW,OAAO,CAAE,aAAc,EAAW,GAAI,UAAS,CAAC,CAAC,EACxG,CAAE,QAAS,EAAK,CAClB,EACA,QAAQ,OAAO,MAAM,iCAAiC,EAAM,OAAS,CAAG,EACzE,CACH", | ||
| "debugId": "F376B64DA7B78FE464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/durable-event-manifest.ts"], | ||
| "sourcesContent": [ | ||
| "export * as DurableEventManifest from \"./durable-event-manifest.js\"\n\nimport { Event } from \"./event.js\"\nimport { Worktree } from \"./worktree.js\"\nimport { SessionEvent } from \"./session-event.js\"\n\nexport const Durable = Event.durableMap([...SessionEvent.DurableDefinitions, Worktree.Event.Resolved])\n" | ||
| ], | ||
| "mappings": ";4JAMO,IAAM,EAAU,EAAM,WAAW,CAAC,GAAG,EAAa,mBAAoB,EAAS,MAAM,QAAQ,CAAC", | ||
| "debugId": "72CFEAB88F2A18B464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/tool.ts"], | ||
| "sourcesContent": [ | ||
| "// Per-tool display rules shared across `opencode run` output paths.\n//\n// Each known tool (shell, edit, write, subagent, etc.) has a ToolRule that controls\n// four display hooks:\n//\n// view → visibility policy for progress/final scrollback entries and\n// whether completed finals can render as structured snapshots\n// run → inline summary for the non-interactive `run` command output\n// scroll → text formatting for start/progress/final scrollback entries\n// snap → structured snapshot (code block, diff, task card) for rich\n// scrollback entries\n//\n// Tools not in TOOL_RULES get fallback formatting.\nimport os from \"os\"\nimport path from \"path\"\nimport stripAnsi from \"strip-ansi\"\nimport type { SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { LANGUAGE_EXTENSIONS } from \"../util/filetype\"\nimport { Locale } from \"../util/locale\"\nimport {\n canonicalToolName,\n finiteNumber,\n primitiveInputSummary,\n toolDisplayContent,\n toolDisplayMetadata,\n webSearchProviderLabel,\n} from \"../util/tool-display\"\nimport { formatPath } from \"../util/path-format\"\nimport { isRecord } from \"../util/record\"\nimport type { RunEntryBody, StreamCommit, ToolSnapshot } from \"./types\"\n\nexport { canonicalToolName } from \"../util/tool-display\"\n\ntype ToolView = {\n output: boolean\n final: boolean\n snap?: \"code\" | \"diff\" | \"structured\"\n}\n\ntype ToolPhase = \"start\" | \"progress\" | \"final\"\n\ntype ToolDict = Record<string, unknown>\n\ntype PatchFile = {\n status?: string\n file?: string\n from?: string\n patch?: string\n deletions?: number\n}\n\ntype ToolInput = ToolDict & {\n id?: string\n path?: string\n pattern?: string\n url?: string\n query?: string\n agent?: string\n description?: string\n name?: string\n operation?: string\n line?: number\n character?: number\n content?: string\n command?: string\n workdir?: string\n questions?: Array<{ question?: string }>\n diff?: string\n}\n\ntype ToolMetadata = ToolDict & {\n name?: string\n count?: number\n matches?: number\n diff?: string\n provider?: unknown\n files?: PatchFile[]\n answers?: string[][]\n exit?: number\n}\n\ntype ToolFrame = {\n directory?: string\n raw: string\n name: string\n input: ToolDict\n meta: ToolDict\n state: ToolDict\n status: string\n error: string\n output: string\n time: {\n start?: number\n end?: number\n }\n}\n\ntype ToolInline = {\n icon: string\n title: string\n description?: string\n mode?: \"inline\" | \"block\"\n body?: string\n}\n\ntype ToolProps = {\n input: ToolInput\n metadata: ToolMetadata\n frame: ToolFrame\n}\n\ntype ToolName =\n | \"invalid\"\n | \"shell\"\n | \"write\"\n | \"edit\"\n | \"patch\"\n | \"batch\"\n | \"subagent\"\n | \"question\"\n | \"read\"\n | \"glob\"\n | \"grep\"\n | \"list\"\n | \"lsp\"\n | \"webfetch\"\n | \"websearch\"\n | \"skill\"\n\ntype ToolRule = {\n view: ToolView\n run: (props: ToolProps) => ToolInline\n scroll?: Partial<Record<ToolPhase, (props: ToolProps) => string>>\n snap?: (props: ToolProps) => ToolSnapshot | undefined\n}\n\ntype ToolRegistry = Record<ToolName, ToolRule>\n\ntype AnyToolRule = ToolRule\n\nfunction dict(v: unknown): ToolDict {\n return isRecord(v) ? { ...v } : {}\n}\n\nfunction props(frame: ToolFrame): ToolProps {\n return {\n input: frame.input,\n metadata: frame.meta,\n frame,\n }\n}\n\nfunction text(v: unknown): string {\n return typeof v === \"string\" ? v : \"\"\n}\n\nexport function toolOutputText(name: string, content: ReadonlyArray<{ type: string; text?: string }> | undefined) {\n if (!content) return \"\"\n // V2 shell content appends model-only status after the user-visible command output.\n if (canonicalToolName(name) === \"shell\") return content.find((item) => item.type === \"text\")?.text ?? \"\"\n const joined = content.flatMap((item) => (item.type === \"text\" && item.text ? [item.text] : [])).join(\"\\n\")\n if (canonicalToolName(name) === \"read\") return readDisplayText(joined) ?? joined\n return joined\n}\n\n/** Read's model content is a JSON page envelope; unwrap the human-facing text. */\nexport function readDisplayText(text: string): string | undefined {\n if (!text.startsWith(\"{\")) return undefined\n const parsed = (() => {\n try {\n return JSON.parse(text) as unknown\n } catch {\n return undefined\n }\n })()\n const envelope = dict(parsed)\n if (typeof envelope.content === \"string\" && (envelope.type === \"text-page\" || envelope.encoding === \"utf8\"))\n return envelope.content\n if (!Array.isArray(envelope.entries)) return undefined\n return envelope.entries\n .flatMap((entry): string[] => {\n if (typeof entry === \"string\") return [entry]\n const path = dict(entry).path\n return typeof path === \"string\" ? [path] : []\n })\n .join(\"\\n\")\n}\n\nfunction normalizeInput(name: string, value: unknown) {\n const input = dict(value)\n const path = typeof input.path === \"string\" ? input.path : text(input.filePath)\n const agent = typeof input.agent === \"string\" ? input.agent : text(input.subagent_type)\n return {\n ...input,\n ...([\"read\", \"write\", \"edit\", \"lsp\"].includes(name) && path ? { path } : {}),\n ...(name === \"subagent\" && agent ? { agent } : {}),\n }\n}\n\nfunction normalizeFile(value: unknown): PatchFile | undefined {\n const file = dict(value)\n const name = text(file.file) || text(file.relativePath) || text(file.filePath)\n if (!name) return\n const legacy = text(file.type)\n const status =\n text(file.status) ||\n (legacy === \"add\"\n ? \"added\"\n : legacy === \"delete\"\n ? \"deleted\"\n : legacy === \"update\"\n ? \"modified\"\n : legacy === \"move\"\n ? \"moved\"\n : legacy)\n const patch = typeof file.patch === \"string\" ? file.patch : undefined\n const deletions = finiteNumber(file.deletions)\n return {\n ...file,\n file: name,\n ...(status === \"moved\" && text(file.filePath) ? { from: text(file.filePath) } : {}),\n ...(status ? { status } : {}),\n ...(patch === undefined ? {} : { patch }),\n ...(deletions === undefined ? {} : { deletions }),\n }\n}\n\nfunction normalizeMetadata(name: string, value: unknown) {\n const metadata = dict(value)\n const files = list(metadata.files).flatMap((item) => {\n const file = normalizeFile(item)\n return file ? [file] : []\n })\n const sessionID = text(metadata.sessionID) || text(metadata.sessionId)\n return {\n ...metadata,\n ...([\"edit\", \"patch\"].includes(name) && Array.isArray(metadata.files) ? { files } : {}),\n ...(name === \"subagent\" && sessionID ? { sessionID } : {}),\n }\n}\n\nexport function normalizeTool(tool: SessionMessageAssistantTool): SessionMessageAssistantTool {\n const name = canonicalToolName(tool.name)\n if (tool.state.status === \"streaming\") return { ...tool, name }\n return {\n ...tool,\n name,\n state: {\n ...tool.state,\n input: normalizeInput(name, tool.state.input),\n metadata: normalizeMetadata(name, toolDisplayMetadata(tool.state)),\n },\n } as SessionMessageAssistantTool\n}\n\nfunction list<T>(v: unknown): T[] {\n if (!Array.isArray(v)) {\n return []\n }\n\n return v\n}\n\nfunction span(frame: ToolFrame): string {\n const start = frame.time.start\n const end = frame.time.end\n if (start === undefined || end === undefined || end <= start) {\n return \"\"\n }\n\n return Locale.duration(end - start)\n}\n\nfunction fail(ctx: ToolFrame): string {\n const error = toolError(ctx)\n if (error) {\n return `✖ ${ctx.name} failed: ${error}`\n }\n\n return `✖ ${ctx.name} failed`\n}\n\nfunction toolError(ctx: ToolFrame): string {\n if (ctx.error) {\n return ctx.error\n }\n\n const state = text(ctx.state.error).trim()\n if (state) {\n return state\n }\n\n return ctx.raw.trim()\n}\n\nfunction fallbackStart(ctx: ToolFrame): string {\n const extra = primitiveInputSummary(ctx.input)\n if (!extra) {\n return `⚙ ${ctx.name}`\n }\n\n return `⚙ ${ctx.name} ${extra}`\n}\n\nfunction fallbackFinal(ctx: ToolFrame): string {\n if (ctx.status === \"error\") {\n return fail(ctx)\n }\n\n if (ctx.status && ctx.status !== \"completed\") {\n return ctx.raw.trim()\n }\n\n const time = span(ctx)\n if (!time) {\n return `${ctx.name} completed`\n }\n\n return `${ctx.name} completed · ${time}`\n}\n\nexport function toolPath(input?: string, opts: { home?: boolean; directory?: string } = {}): string {\n return formatPath(input, {\n base: opts.directory ?? process.cwd(),\n home: opts.home ? os.homedir() : undefined,\n forwardSlashes: true,\n })\n}\n\nfunction displayPath(p: ToolProps, input?: string, opts: { home?: boolean } = {}) {\n return toolPath(input, { ...opts, directory: p.frame.directory })\n}\n\nfunction fallbackInline(ctx: ToolFrame): ToolInline {\n const title = Object.keys(ctx.input).length > 0 ? JSON.stringify(ctx.input) : \"Unknown\"\n\n return {\n icon: \"⚙\",\n title: `${ctx.name} ${title}`,\n }\n}\n\nfunction count(n: number, label: string): string {\n return `${n} ${label}${n === 1 ? \"\" : \"es\"}`\n}\n\nfunction runGlob(p: ToolProps): ToolInline {\n const root = p.input.path ?? \"\"\n const title = `Glob \"${p.input.pattern ?? \"\"}\"`\n const suffix = root ? `in ${displayPath(p, root)}` : \"\"\n const matches = p.metadata.count\n const description = matches === undefined ? suffix : `${suffix}${suffix ? \" · \" : \"\"}${count(matches, \"match\")}`\n return {\n icon: \"✱\",\n title,\n ...(description && { description }),\n }\n}\n\nfunction runGrep(p: ToolProps): ToolInline {\n const root = p.input.path ?? \"\"\n const title = `Grep \"${p.input.pattern ?? \"\"}\"`\n const suffix = root ? `in ${displayPath(p, root)}` : \"\"\n const matches = p.metadata.matches\n const description = matches === undefined ? suffix : `${suffix}${suffix ? \" · \" : \"\"}${count(matches, \"match\")}`\n return {\n icon: \"✱\",\n title,\n ...(description && { description }),\n }\n}\n\nfunction runList(p: ToolProps): ToolInline {\n const dir = text(dict(p.input).path)\n return {\n icon: \"→\",\n title: dir ? `List ${displayPath(p, dir)}` : \"List\",\n }\n}\n\nfunction runRead(p: ToolProps): ToolInline {\n const file = displayPath(p, p.input.path)\n const description = primitiveInputSummary(p.frame.input, [\"path\"]) || undefined\n return {\n icon: \"→\",\n title: `Read ${file}`,\n ...(description && { description }),\n }\n}\n\nfunction runWrite(p: ToolProps): ToolInline {\n return {\n icon: \"←\",\n title: `Write ${displayPath(p, p.input.path)}`,\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction runWebfetch(p: ToolProps): ToolInline {\n const url = p.input.url ?? \"\"\n return {\n icon: \"%\",\n title: url ? `WebFetch ${url}` : \"WebFetch\",\n }\n}\n\nfunction runEdit(p: ToolProps): ToolInline {\n const file = list<PatchFile>(p.metadata.files)[0]\n return {\n icon: \"←\",\n title: `Edit ${displayPath(p, p.input.path)}`,\n mode: \"block\",\n body: file?.patch ?? p.metadata.diff,\n }\n}\n\nfunction runWebSearch(p: ToolProps): ToolInline {\n const title = webSearchProviderLabel(p.metadata.provider)\n return {\n icon: \"◈\",\n title: p.input.query ? `${title} \"${p.input.query}\"` : title,\n }\n}\n\nfunction runTask(p: ToolProps): ToolInline {\n const kind = Locale.titlecase(p.input.agent || \"unknown\")\n const desc = p.input.description\n const icon = p.frame.status === \"error\" ? \"✗\" : p.frame.status === \"running\" ? \"•\" : \"✓\"\n return {\n icon,\n title: desc || `${kind} Subagent`,\n description: desc ? `${kind} Agent` : undefined,\n }\n}\n\nfunction runSkill(p: ToolProps): ToolInline {\n const name = p.metadata.name ?? p.input.id ?? \"\"\n return {\n icon: \"→\",\n title: `Skill \"${name}\"`,\n }\n}\n\nfunction runPatch(p: ToolProps): ToolInline {\n const files = p.metadata.files?.length ?? 0\n if (files === 0) {\n return {\n icon: \"%\",\n title: \"Patch\",\n }\n }\n\n return {\n icon: \"%\",\n title: `Patch ${files} file${files === 1 ? \"\" : \"s\"}`,\n }\n}\n\nfunction runQuestion(p: ToolProps): ToolInline {\n const total = list(p.frame.input.questions).length\n return {\n icon: \"→\",\n title: `Asked ${total} question${total === 1 ? \"\" : \"s\"}`,\n }\n}\n\nfunction runInvalid(p: ToolProps): ToolInline {\n return {\n icon: \"✗\",\n title: \"Invalid Tool\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction runBatch(p: ToolProps): ToolInline {\n const calls = list(dict(p.input).tool_calls).length\n return {\n icon: \"#\",\n title: calls > 0 ? `Batch ${calls} tool${calls === 1 ? \"\" : \"s\"}` : \"Batch\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output : undefined,\n }\n}\n\nfunction lspTitle(\n input: {\n operation?: string\n path?: string\n line?: number\n character?: number\n },\n opts: { home?: boolean; directory?: string } = {},\n): string {\n const op = input.operation || \"request\"\n const file = input.path ? toolPath(input.path, opts) : \"\"\n const line = typeof input.line === \"number\" ? input.line : undefined\n const char = typeof input.character === \"number\" ? input.character : undefined\n const pos = line !== undefined && char !== undefined ? `:${line}:${char}` : \"\"\n if (!file) {\n return `LSP ${op}`\n }\n\n return `LSP ${op} ${file}${pos}`\n}\n\nfunction runLsp(p: ToolProps): ToolInline {\n return {\n icon: \"→\",\n title: lspTitle(p.input, { directory: p.frame.directory }),\n }\n}\n\nfunction patchTitle(file: PatchFile, directory?: string): string {\n if (file.status === \"added\") {\n return `# Created ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"deleted\") {\n return `# Deleted ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"moved\") {\n return `# Moved ${toolPath(file.from, { directory })} -> ${toolPath(file.file, { directory })}`\n }\n\n return `# Patched ${toolPath(file.file, { directory })}`\n}\n\nfunction snapWrite(p: ToolProps): ToolSnapshot | undefined {\n const file = p.input.path || \"\"\n const content = p.input.content || \"\"\n if (!file && !content) {\n return undefined\n }\n\n return {\n kind: \"code\",\n title: `# Wrote ${displayPath(p, file)}`,\n content,\n file,\n }\n}\n\nfunction snapEdit(p: ToolProps): ToolSnapshot | undefined {\n const item = list<PatchFile>(p.metadata.files)[0]\n const file = item?.file || p.input.path || \"\"\n const diff = item?.patch || p.metadata.diff || \"\"\n if (!file || !diff.trim()) {\n return undefined\n }\n\n return {\n kind: \"diff\",\n items: [\n {\n title: `# Edited ${displayPath(p, file)}`,\n diff,\n file,\n },\n ],\n }\n}\n\nfunction snapPatch(p: ToolProps): ToolSnapshot | undefined {\n const files = list<PatchFile>(p.frame.meta.files)\n if (files.length === 0) {\n return undefined\n }\n\n const items = files.flatMap((file) => {\n if (!file || typeof file !== \"object\") {\n return []\n }\n\n const diff = typeof file.patch === \"string\" ? file.patch : \"\"\n if (!diff.trim()) {\n return []\n }\n\n const name = file.file\n return [\n {\n title: patchTitle(file, p.frame.directory),\n diff,\n file: name,\n deletions: typeof file.deletions === \"number\" ? file.deletions : 0,\n },\n ]\n })\n\n if (items.length !== files.length) {\n return undefined\n }\n\n return {\n kind: \"diff\",\n items,\n }\n}\n\nfunction snapTask(p: ToolProps): ToolSnapshot {\n const kind = Locale.titlecase(p.input.agent || \"general\")\n const desc = p.input.description\n const rows = [desc].filter((item): item is string => Boolean(item))\n\n return {\n kind: \"task\",\n title: `# ${kind} Subagent`,\n rows,\n tail: \"\",\n }\n}\n\nfunction snapQuestion(p: ToolProps): ToolSnapshot {\n const answers = list<unknown[]>(p.frame.meta.answers)\n const items = list<{ question?: string }>(p.frame.input.questions).map((item, i) => {\n const answer = list<string>(answers[i]).filter((entry) => typeof entry === \"string\")\n return {\n question: item.question || `Question ${i + 1}`,\n answer: answer.length > 0 ? answer.join(\", \") : \"(no answer)\",\n }\n })\n\n return {\n kind: \"question\",\n items,\n tail: \"\",\n }\n}\n\nfunction scrollBashStart(p: ToolProps): string {\n const cmd = p.input.command ?? \"\"\n const wd = p.input.workdir ?? \"\"\n const formatted = wd && wd !== \".\" ? displayPath(p, wd, { home: true }) : \"\"\n const dir = formatted === \".\" ? \"\" : formatted\n if (cmd && !dir) {\n return `$ ${cmd}`\n }\n\n if (!cmd) {\n return dir ? `${dir}$` : \"\"\n }\n\n return `${dir}$ ${cmd}`\n}\n\nfunction scrollBashProgress(p: ToolProps): string {\n const out = stripAnsi(p.frame.raw)\n const cmd = (p.input.command ?? \"\").trim()\n const fmt = (text: string) => {\n const body = text.replace(/^\\n+/, \"\").replace(/\\n+$/, \"\")\n return body ? `\\n${body}` : \"\"\n }\n\n if (!cmd) {\n return out.replace(/\\n+$/, \"\")\n }\n\n const wdRaw = (p.input.workdir ?? \"\").trim()\n const wd = wdRaw ? displayPath(p, wdRaw, { home: true }) : \"\"\n const lines = out.split(\"\\n\")\n const first = (lines[0] || \"\").trim()\n const second = (lines[1] || \"\").trim()\n\n if (wd && (first === wd || first === wdRaw) && second === cmd) {\n return fmt(lines.slice(2).join(\"\\n\"))\n }\n\n if (first === cmd || first === `$ ${cmd}`) {\n return fmt(lines.slice(1).join(\"\\n\"))\n }\n\n if (wd && (first === `${wd} ${cmd}` || first === `${wdRaw} ${cmd}`)) {\n return fmt(lines.slice(1).join(\"\\n\"))\n }\n\n return fmt(out)\n}\n\nfunction scrollShellFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const code = p.metadata.exit\n const time = span(p.frame)\n if (code === undefined) {\n if (!time) {\n return \"shell completed\"\n }\n\n return `shell completed · ${time}`\n }\n\n return `shell completed (exit ${code})${time ? ` · ${time}` : \"\"}`\n}\n\nfunction scrollReadStart(p: ToolProps): string {\n const file = displayPath(p, p.input.path)\n const extra = primitiveInputSummary(p.frame.input, [\"path\"])\n const tail = extra ? ` ${extra}` : \"\"\n return `→ Read ${file}${tail}`.trim()\n}\n\nfunction scrollWriteStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollEditStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollPatchStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction patchLine(file: PatchFile, directory?: string): string {\n if (file.status === \"added\") {\n return `+ Created ${toolPath(file.file, { directory })}`\n }\n\n if (file.status === \"deleted\") {\n return `- Deleted ${toolPath(file.file, { directory })}`\n }\n if (file.status === \"moved\") {\n return `→ Moved ${toolPath(file.from, { directory })} → ${toolPath(file.file, { directory })}`\n }\n\n return `~ Patched ${toolPath(file.file, { directory })}`\n}\n\nfunction scrollPatchFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const files = list<PatchFile>(p.frame.meta.files)\n if (files.length === 0) {\n const time = span(p.frame)\n if (!time) {\n return \"patch\"\n }\n\n return `patch · ${time}`\n }\n\n const showModified = !files.some((file) => file?.status && file.status !== \"modified\")\n const shown = files.filter((file) => showModified || file.status !== \"modified\")\n const rows = shown.slice(0, 6).map((file) => patchLine(file, p.frame.directory))\n if (shown.length > 6) {\n rows.push(`... and ${shown.length - 6} more`)\n }\n\n if (rows.length > 0) {\n return rows.join(\"\\n\")\n }\n\n return patchLine(files[0]!, p.frame.directory)\n}\n\nfunction scrollTaskStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction taskResult(output: string): string | undefined {\n if (!output.trim()) {\n return undefined\n }\n\n const match = output.match(/<task_result>\\s*([\\s\\S]*?)\\s*<\\/task_result>/)\n if (match) {\n return match[1].trim() || undefined\n }\n\n const next = output\n .split(\"\\n\")\n .filter((line) => !line.startsWith(\"task_id:\"))\n .join(\"\\n\")\n .trim()\n return next || undefined\n}\n\nfunction scrollTaskFinal(p: ToolProps): string {\n if (p.frame.status === \"error\") {\n return fail(p.frame)\n }\n\n const kind = Locale.titlecase(p.input.agent || \"general\")\n const row = p.input.description\n if (!row) {\n return `# ${kind} Subagent`\n }\n\n return `# ${kind} Subagent\\n${row}`\n}\n\nfunction scrollQuestionStart(_: ToolProps): string {\n return \"\"\n}\n\nfunction scrollQuestionFinal(p: ToolProps): string {\n const q = p.input.questions ?? []\n const a = p.metadata.answers ?? []\n const time = span(p.frame)\n if (q.length === 0) {\n if (!time) {\n return \"0 questions\"\n }\n\n return `0 questions · ${time}`\n }\n\n const rows: string[] = []\n for (const [i, item] of q.slice(0, 4).entries()) {\n const prompt = item.question\n const reply = a[i] ?? []\n rows.push(`? ${prompt || `Question ${i + 1}`}`)\n rows.push(` ${reply.length > 0 ? reply.join(\", \") : \"(no answer)\"}`)\n }\n\n if (q.length > 4) {\n rows.push(`... and ${q.length - 4} more`)\n }\n\n return rows.join(\"\\n\")\n}\n\nfunction scrollLspStart(p: ToolProps): string {\n return `→ ${lspTitle(p.input, { directory: p.frame.directory })}`\n}\n\nfunction scrollSkillStart(p: ToolProps): string {\n return `→ Skill \"${p.metadata.name ?? p.input.id ?? \"\"}\"`\n}\n\nfunction scrollGlobStart(p: ToolProps): string {\n const pattern = p.input.pattern ?? \"\"\n const head = pattern ? `✱ Glob \"${pattern}\"` : \"✱ Glob\"\n const dir = p.input.path ?? \"\"\n if (!dir) {\n return head\n }\n\n return `${head} in ${displayPath(p, dir)}`\n}\n\nfunction scrollGlobFinal(p: ToolProps): string {\n return toolError(p.frame) || fail(p.frame)\n}\n\nfunction scrollGrepStart(p: ToolProps): string {\n const pattern = p.input.pattern ?? \"\"\n const head = pattern ? `✱ Grep \"${pattern}\"` : \"✱ Grep\"\n const dir = p.input.path ?? \"\"\n if (!dir) {\n return head\n }\n\n return `${head} in ${displayPath(p, dir)}`\n}\n\nfunction scrollListStart(p: ToolProps): string {\n const dir = text(dict(p.input).path)\n if (!dir) {\n return \"→ List\"\n }\n\n return `→ List ${displayPath(p, dir)}`\n}\n\nfunction scrollWebfetchStart(p: ToolProps): string {\n const url = p.input.url ?? \"\"\n if (!url) {\n return \"% WebFetch\"\n }\n\n return `% WebFetch ${url}`\n}\n\nfunction scrollWebSearchStart(p: ToolProps): string {\n const title = webSearchProviderLabel(p.metadata.provider)\n const query = p.input.query ?? \"\"\n if (!query) {\n return `◈ ${title}`\n }\n\n return `◈ ${title} \"${query}\"`\n}\n\nconst TOOL_RULES = {\n invalid: {\n view: {\n output: true,\n final: false,\n },\n run: runInvalid,\n scroll: {\n start: () => \"\",\n },\n },\n shell: {\n view: {\n output: true,\n final: false,\n },\n run: runShell,\n scroll: {\n start: scrollBashStart,\n progress: scrollBashProgress,\n final: scrollShellFinal,\n },\n },\n write: {\n view: {\n output: false,\n final: true,\n snap: \"code\",\n },\n run: runWrite,\n snap: snapWrite,\n scroll: {\n start: scrollWriteStart,\n },\n },\n edit: {\n view: {\n output: false,\n final: true,\n snap: \"diff\",\n },\n run: runEdit,\n snap: snapEdit,\n scroll: {\n start: scrollEditStart,\n },\n },\n patch: {\n view: {\n output: false,\n final: true,\n snap: \"diff\",\n },\n run: runPatch,\n snap: snapPatch,\n scroll: {\n start: scrollPatchStart,\n final: scrollPatchFinal,\n },\n },\n batch: {\n view: {\n output: true,\n final: false,\n },\n run: runBatch,\n scroll: {\n start: () => \"\",\n },\n },\n subagent: {\n view: {\n output: false,\n final: true,\n snap: \"structured\",\n },\n run: runTask,\n snap: snapTask,\n scroll: {\n start: scrollTaskStart,\n final: scrollTaskFinal,\n },\n },\n question: {\n view: {\n output: false,\n final: true,\n snap: \"structured\",\n },\n run: runQuestion,\n snap: snapQuestion,\n scroll: {\n start: scrollQuestionStart,\n final: scrollQuestionFinal,\n },\n },\n read: {\n view: {\n output: false,\n final: false,\n },\n run: runRead,\n scroll: {\n start: scrollReadStart,\n },\n },\n glob: {\n view: {\n output: false,\n final: false,\n },\n run: runGlob,\n scroll: {\n start: scrollGlobStart,\n final: scrollGlobFinal,\n },\n },\n grep: {\n view: {\n output: false,\n final: false,\n },\n run: runGrep,\n scroll: {\n start: scrollGrepStart,\n },\n },\n list: {\n view: {\n output: false,\n final: false,\n },\n run: runList,\n scroll: {\n start: scrollListStart,\n },\n },\n lsp: {\n view: {\n output: false,\n final: false,\n },\n run: runLsp,\n scroll: {\n start: scrollLspStart,\n },\n },\n webfetch: {\n view: {\n output: false,\n final: false,\n },\n run: runWebfetch,\n scroll: {\n start: scrollWebfetchStart,\n },\n },\n websearch: {\n view: {\n output: false,\n final: false,\n },\n run: runWebSearch,\n scroll: {\n start: scrollWebSearchStart,\n },\n },\n skill: {\n view: {\n output: false,\n final: false,\n },\n run: runSkill,\n scroll: {\n start: scrollSkillStart,\n },\n },\n} as const satisfies ToolRegistry\n\nfunction key(name: string): name is ToolName {\n return Object.prototype.hasOwnProperty.call(TOOL_RULES, name)\n}\n\nfunction rule(name?: string): AnyToolRule | undefined {\n if (!name || !key(name)) {\n return undefined\n }\n\n return TOOL_RULES[name]\n}\n\nfunction frame(part: SessionMessageAssistantTool, directory?: string): ToolFrame {\n const tool = normalizeTool(part)\n if (tool.state.status === \"streaming\")\n return {\n directory,\n raw: tool.state.input,\n name: tool.name,\n input: {},\n meta: {},\n state: dict(tool.state),\n status: tool.state.status,\n error: \"\",\n output: \"\",\n time: { start: tool.time.created },\n }\n const output = toolOutputText(tool.name, toolDisplayContent(tool.state))\n return {\n directory,\n raw: output,\n name: tool.name,\n input: normalizeInput(tool.name, tool.state.input),\n meta: normalizeMetadata(tool.name, tool.state.metadata),\n state: dict(tool.state),\n status: tool.state.status,\n error: tool.state.status === \"error\" ? tool.state.error.message : \"\",\n output,\n time: {\n start: tool.time.ran ?? tool.time.created,\n end: tool.time.completed,\n },\n }\n}\n\nfunction toolFrame(commit: StreamCommit, raw: string): ToolFrame {\n const current = commit.part ? frame(commit.part, commit.directory) : undefined\n return {\n directory: commit.directory,\n raw,\n name: canonicalToolName(commit.tool || current?.name || \"tool\"),\n input: current?.input ?? {},\n meta: current?.meta ?? {},\n state: current?.state ?? {},\n status: commit.toolState ?? current?.status ?? \"\",\n error: (commit.toolError ?? current?.error ?? \"\").trim(),\n output: current?.output ?? raw,\n time: current?.time ?? {},\n }\n}\n\nfunction runShell(p: ToolProps): ToolInline {\n return {\n icon: \"$\",\n title: p.input.command || \"\",\n mode: \"block\",\n body: p.frame.status === \"completed\" ? p.frame.output.trim() : undefined,\n }\n}\n\nexport function toolView(name?: string): ToolView {\n return (\n rule(name ? canonicalToolName(name) : undefined)?.view ?? {\n output: true,\n final: true,\n }\n )\n}\n\nexport function toolStructuredFinal(commit: StreamCommit): boolean {\n const state = commit.toolState ?? commit.part?.state.status\n return (\n commit.kind === \"tool\" &&\n commit.phase === \"final\" &&\n state === \"completed\" &&\n Boolean(toolView(commit.tool ?? commit.part?.name).snap)\n )\n}\n\nexport function toolInlineInfo(part: SessionMessageAssistantTool, directory?: string): ToolInline {\n const ctx = frame(part, directory)\n const draw = rule(ctx.name)?.run\n try {\n if (draw) {\n return draw(props(ctx))\n }\n } catch {\n return fallbackInline(ctx)\n }\n\n return fallbackInline(ctx)\n}\n\nexport function toolScroll(phase: ToolPhase, ctx: ToolFrame): string {\n const draw = rule(ctx.name)?.scroll?.[phase]\n try {\n if (draw) {\n return draw(props(ctx))\n }\n } catch {\n if (phase === \"start\") {\n return fallbackStart(ctx)\n }\n if (phase === \"progress\") {\n return ctx.raw\n }\n return fallbackFinal(ctx)\n }\n\n if (phase === \"start\") {\n return fallbackStart(ctx)\n }\n\n if (phase === \"progress\") {\n return ctx.raw\n }\n\n return fallbackFinal(ctx)\n}\n\nfunction toolSnapshot(commit: StreamCommit, raw: string): ToolSnapshot | undefined {\n const ctx = toolFrame(commit, raw)\n const draw = rule(ctx.name)?.snap\n if (!draw) {\n return undefined\n }\n\n try {\n return draw(props(ctx))\n } catch {\n return undefined\n }\n}\n\nfunction textBody(content: string): RunEntryBody | undefined {\n if (!content) {\n return undefined\n }\n\n return {\n type: \"text\",\n content,\n }\n}\n\nfunction markdownBody(content: string): RunEntryBody | undefined {\n if (!content) {\n return undefined\n }\n\n return {\n type: \"markdown\",\n content,\n }\n}\n\nfunction structuredBody(commit: StreamCommit, raw: string): RunEntryBody | undefined {\n const snap = toolSnapshot(commit, raw)\n if (!snap) {\n return undefined\n }\n\n return {\n type: \"structured\",\n snapshot: snap,\n }\n}\n\nconst STRUCTURED_FALLBACK_LENGTH = 4_096\n\nfunction structuredFallback(value: ToolDict): RunEntryBody | undefined {\n if (Object.keys(value).length === 0) return\n const content = JSON.stringify(value, null, 2)\n if (!content) return\n const suffix = \"\\n... [truncated]\"\n return {\n type: \"code\",\n content:\n content.length <= STRUCTURED_FALLBACK_LENGTH\n ? content\n : content.slice(0, STRUCTURED_FALLBACK_LENGTH - suffix.length) + suffix,\n filetype: \"json\",\n }\n}\n\nfunction shellOutput(command: string, raw: string): string | undefined {\n const body = stripAnsi(raw).replace(/^\\n+/, \"\").replace(/\\n+$/, \"\")\n if (!body) {\n return undefined\n }\n\n if (!command) {\n return body\n }\n\n return `\\n${body}`\n}\n\nexport function toolEntryBody(\n commit: StreamCommit,\n raw: string,\n options?: { shellOutput?: boolean },\n): RunEntryBody | undefined {\n if (commit.shell) {\n if (commit.phase === \"start\") {\n return textBody(`$ ${commit.shell.command}`)\n }\n\n if (commit.phase === \"progress\") {\n return textBody(shellOutput(commit.shell.command, raw) ?? \"\")\n }\n\n if (commit.toolState === \"error\") {\n const ctx = toolFrame(commit, raw)\n return textBody(toolScroll(\"final\", ctx))\n }\n\n return undefined\n }\n\n const ctx = toolFrame(commit, raw)\n const view = toolView(ctx.name)\n\n if (ctx.name === \"shell\" && commit.phase === \"progress\" && options?.shellOutput === false) return undefined\n\n if (ctx.name === \"subagent\") {\n if (commit.phase === \"start\") {\n return undefined\n }\n\n if (commit.phase === \"final\" && ctx.status === \"completed\") {\n const result = taskResult(ctx.output)\n if (result) {\n return markdownBody(result)\n }\n }\n }\n\n if (commit.phase === \"progress\" && !view.output) {\n return undefined\n }\n\n if (commit.phase === \"final\") {\n if (ctx.status === \"error\") {\n return textBody(toolScroll(\"final\", ctx))\n }\n\n if (!view.final) {\n return undefined\n }\n\n if (ctx.status && ctx.status !== \"completed\") {\n return textBody(ctx.raw.trim())\n }\n\n if (toolStructuredFinal(commit)) {\n return structuredBody(commit, raw) ?? textBody(toolScroll(\"final\", ctx))\n }\n\n if (!rule(ctx.name) && !ctx.output.trim()) {\n return structuredFallback(ctx.meta) ?? textBody(toolScroll(\"final\", ctx))\n }\n }\n\n return textBody(toolScroll(commit.phase, ctx))\n}\n\nexport function toolFiletype(input?: string): string | undefined {\n if (!input) {\n return undefined\n }\n\n const ext = path.extname(input)\n const lang = LANGUAGE_EXTENSIONS[ext]\n if ([\"typescriptreact\", \"javascriptreact\", \"javascript\"].includes(lang)) {\n return \"typescript\"\n }\n\n return lang\n}\n" | ||
| ], | ||
| "mappings": ";4NAaA,kBACA,oBA8HA,SAAS,CAAI,CAAC,EAAsB,CAClC,OAAO,EAAS,CAAC,EAAI,IAAK,CAAE,EAAI,CAAC,EAGnC,SAAS,CAAK,CAAC,EAA6B,CAC1C,MAAO,CACL,MAAO,EAAM,MACb,SAAU,EAAM,KAChB,OACF,EAGF,SAAS,CAAI,CAAC,EAAoB,CAChC,OAAO,OAAO,IAAM,SAAW,EAAI,GAG9B,SAAS,CAAc,CAAC,EAAc,EAAqE,CAChH,GAAI,CAAC,EAAS,MAAO,GAErB,GAAI,EAAkB,CAAI,IAAM,QAAS,OAAO,EAAQ,KAAK,CAAC,IAAS,EAAK,OAAS,MAAM,GAAG,MAAQ,GACtG,IAAM,EAAS,EAAQ,QAAQ,CAAC,IAAU,EAAK,OAAS,QAAU,EAAK,KAAO,CAAC,EAAK,IAAI,EAAI,CAAC,CAAE,EAAE,KAAK;AAAA,CAAI,EAC1G,GAAI,EAAkB,CAAI,IAAM,OAAQ,OAAO,EAAgB,CAAM,GAAK,EAC1E,OAAO,EAIF,SAAS,CAAe,CAAC,EAAkC,CAChE,GAAI,CAAC,EAAK,WAAW,GAAG,EAAG,OAC3B,IAAM,GAAU,IAAM,CACpB,GAAI,CACF,OAAO,KAAK,MAAM,CAAI,EACtB,KAAM,CACN,UAED,EACG,EAAW,EAAK,CAAM,EAC5B,GAAI,OAAO,EAAS,UAAY,WAAa,EAAS,OAAS,aAAe,EAAS,WAAa,QAClG,OAAO,EAAS,QAClB,GAAI,CAAC,MAAM,QAAQ,EAAS,OAAO,EAAG,OACtC,OAAO,EAAS,QACb,QAAQ,CAAC,IAAoB,CAC5B,GAAI,OAAO,IAAU,SAAU,MAAO,CAAC,CAAK,EAC5C,IAAM,EAAO,EAAK,CAAK,EAAE,KACzB,OAAO,OAAO,IAAS,SAAW,CAAC,CAAI,EAAI,CAAC,EAC7C,EACA,KAAK;AAAA,CAAI,EAGd,SAAS,CAAc,CAAC,EAAc,EAAgB,CACpD,IAAM,EAAQ,EAAK,CAAK,EAClB,EAAO,OAAO,EAAM,OAAS,SAAW,EAAM,KAAO,EAAK,EAAM,QAAQ,EACxE,EAAQ,OAAO,EAAM,QAAU,SAAW,EAAM,MAAQ,EAAK,EAAM,aAAa,EACtF,MAAO,IACF,KACC,CAAC,OAAQ,QAAS,OAAQ,KAAK,EAAE,SAAS,CAAI,GAAK,EAAO,CAAE,MAAK,EAAI,CAAC,KACtE,IAAS,YAAc,EAAQ,CAAE,OAAM,EAAI,CAAC,CAClD,EAGF,SAAS,CAAa,CAAC,EAAuC,CAC5D,IAAM,EAAO,EAAK,CAAK,EACjB,EAAO,EAAK,EAAK,IAAI,GAAK,EAAK,EAAK,YAAY,GAAK,EAAK,EAAK,QAAQ,EAC7E,GAAI,CAAC,EAAM,OACX,IAAM,EAAS,EAAK,EAAK,IAAI,EACvB,EACJ,EAAK,EAAK,MAAM,IACf,IAAW,MACR,QACA,IAAW,SACT,UACA,IAAW,SACT,WACA,IAAW,OACT,QACA,GACN,EAAQ,OAAO,EAAK,QAAU,SAAW,EAAK,MAAQ,OACtD,EAAY,EAAa,EAAK,SAAS,EAC7C,MAAO,IACF,EACH,KAAM,KACF,IAAW,SAAW,EAAK,EAAK,QAAQ,EAAI,CAAE,KAAM,EAAK,EAAK,QAAQ,CAAE,EAAI,CAAC,KAC7E,EAAS,CAAE,QAAO,EAAI,CAAC,KACvB,IAAU,OAAY,CAAC,EAAI,CAAE,OAAM,KACnC,IAAc,OAAY,CAAC,EAAI,CAAE,WAAU,CACjD,EAGF,SAAS,CAAiB,CAAC,EAAc,EAAgB,CACvD,IAAM,EAAW,EAAK,CAAK,EACrB,EAAQ,EAAK,EAAS,KAAK,EAAE,QAAQ,CAAC,IAAS,CACnD,IAAM,EAAO,EAAc,CAAI,EAC/B,OAAO,EAAO,CAAC,CAAI,EAAI,CAAC,EACzB,EACK,EAAY,EAAK,EAAS,SAAS,GAAK,EAAK,EAAS,SAAS,EACrE,MAAO,IACF,KACC,CAAC,OAAQ,OAAO,EAAE,SAAS,CAAI,GAAK,MAAM,QAAQ,EAAS,KAAK,EAAI,CAAE,OAAM,EAAI,CAAC,KACjF,IAAS,YAAc,EAAY,CAAE,WAAU,EAAI,CAAC,CAC1D,EAGK,SAAS,CAAa,CAAC,EAAgE,CAC5F,IAAM,EAAO,EAAkB,EAAK,IAAI,EACxC,GAAI,EAAK,MAAM,SAAW,YAAa,MAAO,IAAK,EAAM,MAAK,EAC9D,MAAO,IACF,EACH,OACA,MAAO,IACF,EAAK,MACR,MAAO,EAAe,EAAM,EAAK,MAAM,KAAK,EAC5C,SAAU,EAAkB,EAAM,EAAoB,EAAK,KAAK,CAAC,CACnE,CACF,EAGF,SAAS,CAAO,CAAC,EAAiB,CAChC,GAAI,CAAC,MAAM,QAAQ,CAAC,EAClB,MAAO,CAAC,EAGV,OAAO,EAGT,SAAS,CAAI,CAAC,EAA0B,CACtC,IAAM,EAAQ,EAAM,KAAK,MACnB,EAAM,EAAM,KAAK,IACvB,GAAI,IAAU,QAAa,IAAQ,QAAa,GAAO,EACrD,MAAO,GAGT,OAAO,EAAO,SAAS,EAAM,CAAK,EAGpC,SAAS,CAAI,CAAC,EAAwB,CACpC,IAAM,EAAQ,EAAU,CAAG,EAC3B,GAAI,EACF,MAAO,UAAK,EAAI,gBAAgB,IAGlC,MAAO,UAAK,EAAI,cAGlB,SAAS,CAAS,CAAC,EAAwB,CACzC,GAAI,EAAI,MACN,OAAO,EAAI,MAGb,IAAM,EAAQ,EAAK,EAAI,MAAM,KAAK,EAAE,KAAK,EACzC,GAAI,EACF,OAAO,EAGT,OAAO,EAAI,IAAI,KAAK,EAGtB,SAAS,CAAa,CAAC,EAAwB,CAC7C,IAAM,EAAQ,EAAsB,EAAI,KAAK,EAC7C,GAAI,CAAC,EACH,MAAO,UAAK,EAAI,OAGlB,MAAO,UAAK,EAAI,QAAQ,IAG1B,SAAS,CAAa,CAAC,EAAwB,CAC7C,GAAI,EAAI,SAAW,QACjB,OAAO,EAAK,CAAG,EAGjB,GAAI,EAAI,QAAU,EAAI,SAAW,YAC/B,OAAO,EAAI,IAAI,KAAK,EAGtB,IAAM,EAAO,EAAK,CAAG,EACrB,GAAI,CAAC,EACH,MAAO,GAAG,EAAI,iBAGhB,MAAO,GAAG,EAAI,uBAAoB,IAG7B,SAAS,CAAQ,CAAC,EAAgB,EAA+C,CAAC,EAAW,CAClG,OAAO,EAAW,EAAO,CACvB,KAAM,EAAK,WAAa,QAAQ,IAAI,EACpC,KAAM,EAAK,KAAO,EAAG,QAAQ,EAAI,OACjC,eAAgB,EAClB,CAAC,EAGH,SAAS,CAAW,CAAC,EAAc,EAAgB,EAA2B,CAAC,EAAG,CAChF,OAAO,EAAS,EAAO,IAAK,EAAM,UAAW,EAAE,MAAM,SAAU,CAAC,EAGlE,SAAS,CAAc,CAAC,EAA4B,CAClD,IAAM,EAAQ,OAAO,KAAK,EAAI,KAAK,EAAE,OAAS,EAAI,KAAK,UAAU,EAAI,KAAK,EAAI,UAE9E,MAAO,CACL,KAAM,SACN,MAAO,GAAG,EAAI,QAAQ,GACxB,EAGF,SAAS,CAAK,CAAC,EAAW,EAAuB,CAC/C,MAAO,GAAG,KAAK,IAAQ,IAAM,EAAI,GAAK,OAGxC,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAO,EAAE,MAAM,MAAQ,GACvB,EAAQ,SAAS,EAAE,MAAM,SAAW,MACpC,EAAS,EAAO,MAAM,EAAY,EAAG,CAAI,IAAM,GAC/C,EAAU,EAAE,SAAS,MACrB,EAAc,IAAY,OAAY,EAAS,GAAG,IAAS,EAAS,SAAQ,KAAK,EAAM,EAAS,OAAO,IAC7G,MAAO,CACL,KAAM,SACN,WACI,GAAe,CAAE,aAAY,CACnC,EAGF,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAO,EAAE,MAAM,MAAQ,GACvB,EAAQ,SAAS,EAAE,MAAM,SAAW,MACpC,EAAS,EAAO,MAAM,EAAY,EAAG,CAAI,IAAM,GAC/C,EAAU,EAAE,SAAS,QACrB,EAAc,IAAY,OAAY,EAAS,GAAG,IAAS,EAAS,SAAQ,KAAK,EAAM,EAAS,OAAO,IAC7G,MAAO,CACL,KAAM,SACN,WACI,GAAe,CAAE,aAAY,CACnC,EAGF,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAM,EAAK,EAAK,EAAE,KAAK,EAAE,IAAI,EACnC,MAAO,CACL,KAAM,SACN,MAAO,EAAM,QAAQ,EAAY,EAAG,CAAG,IAAM,MAC/C,EAGF,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAO,EAAY,EAAG,EAAE,MAAM,IAAI,EAClC,EAAc,EAAsB,EAAE,MAAM,MAAO,CAAC,MAAM,CAAC,GAAK,OACtE,MAAO,CACL,KAAM,SACN,MAAO,QAAQ,OACX,GAAe,CAAE,aAAY,CACnC,EAGF,SAAS,EAAQ,CAAC,EAA0B,CAC1C,MAAO,CACL,KAAM,SACN,MAAO,SAAS,EAAY,EAAG,EAAE,MAAM,IAAI,IAC3C,KAAM,QACN,KAAM,EAAE,MAAM,SAAW,YAAc,EAAE,MAAM,OAAS,MAC1D,EAGF,SAAS,EAAW,CAAC,EAA0B,CAC7C,IAAM,EAAM,EAAE,MAAM,KAAO,GAC3B,MAAO,CACL,KAAM,IACN,MAAO,EAAM,YAAY,IAAQ,UACnC,EAGF,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAO,EAAgB,EAAE,SAAS,KAAK,EAAE,GAC/C,MAAO,CACL,KAAM,SACN,MAAO,QAAQ,EAAY,EAAG,EAAE,MAAM,IAAI,IAC1C,KAAM,QACN,KAAM,GAAM,OAAS,EAAE,SAAS,IAClC,EAGF,SAAS,EAAY,CAAC,EAA0B,CAC9C,IAAM,EAAQ,EAAuB,EAAE,SAAS,QAAQ,EACxD,MAAO,CACL,KAAM,SACN,MAAO,EAAE,MAAM,MAAQ,GAAG,MAAU,EAAE,MAAM,SAAW,CACzD,EAGF,SAAS,EAAO,CAAC,EAA0B,CACzC,IAAM,EAAO,EAAO,UAAU,EAAE,MAAM,OAAS,SAAS,EAClD,EAAO,EAAE,MAAM,YAErB,MAAO,CACL,KAFW,EAAE,MAAM,SAAW,QAAU,SAAM,EAAE,MAAM,SAAW,UAAY,SAAM,SAGnF,MAAO,GAAQ,GAAG,aAClB,YAAa,EAAO,GAAG,UAAe,MACxC,EAGF,SAAS,EAAQ,CAAC,EAA0B,CAE1C,MAAO,CACL,KAAM,SACN,MAAO,UAHI,EAAE,SAAS,MAAQ,EAAE,MAAM,IAAM,KAI9C,EAGF,SAAS,EAAQ,CAAC,EAA0B,CAC1C,IAAM,EAAQ,EAAE,SAAS,OAAO,QAAU,EAC1C,GAAI,IAAU,EACZ,MAAO,CACL,KAAM,IACN,MAAO,OACT,EAGF,MAAO,CACL,KAAM,IACN,MAAO,SAAS,SAAa,IAAU,EAAI,GAAK,KAClD,EAGF,SAAS,EAAW,CAAC,EAA0B,CAC7C,IAAM,EAAQ,EAAK,EAAE,MAAM,MAAM,SAAS,EAAE,OAC5C,MAAO,CACL,KAAM,SACN,MAAO,SAAS,aAAiB,IAAU,EAAI,GAAK,KACtD,EAGF,SAAS,EAAU,CAAC,EAA0B,CAC5C,MAAO,CACL,KAAM,SACN,MAAO,eACP,KAAM,QACN,KAAM,EAAE,MAAM,SAAW,YAAc,EAAE,MAAM,OAAS,MAC1D,EAGF,SAAS,EAAQ,CAAC,EAA0B,CAC1C,IAAM,EAAQ,EAAK,EAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAC7C,MAAO,CACL,KAAM,IACN,MAAO,EAAQ,EAAI,SAAS,SAAa,IAAU,EAAI,GAAK,MAAQ,QACpE,KAAM,QACN,KAAM,EAAE,MAAM,SAAW,YAAc,EAAE,MAAM,OAAS,MAC1D,EAGF,SAAS,CAAQ,CACf,EAMA,EAA+C,CAAC,EACxC,CACR,IAAM,EAAK,EAAM,WAAa,UACxB,EAAO,EAAM,KAAO,EAAS,EAAM,KAAM,CAAI,EAAI,GACjD,EAAO,OAAO,EAAM,OAAS,SAAW,EAAM,KAAO,OACrD,EAAO,OAAO,EAAM,YAAc,SAAW,EAAM,UAAY,OAC/D,EAAM,IAAS,QAAa,IAAS,OAAY,IAAI,KAAQ,IAAS,GAC5E,GAAI,CAAC,EACH,MAAO,OAAO,IAGhB,MAAO,OAAO,KAAM,IAAO,IAG7B,SAAS,EAAM,CAAC,EAA0B,CACxC,MAAO,CACL,KAAM,SACN,MAAO,EAAS,EAAE,MAAO,CAAE,UAAW,EAAE,MAAM,SAAU,CAAC,CAC3D,EAGF,SAAS,EAAU,CAAC,EAAiB,EAA4B,CAC/D,GAAI,EAAK,SAAW,QAClB,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAEvD,GAAI,EAAK,SAAW,UAClB,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAEvD,GAAI,EAAK,SAAW,QAClB,MAAO,WAAW,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,QAAQ,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAG9F,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAGvD,SAAS,EAAS,CAAC,EAAwC,CACzD,IAAM,EAAO,EAAE,MAAM,MAAQ,GACvB,EAAU,EAAE,MAAM,SAAW,GACnC,GAAI,CAAC,GAAQ,CAAC,EACZ,OAGF,MAAO,CACL,KAAM,OACN,MAAO,WAAW,EAAY,EAAG,CAAI,IACrC,UACA,MACF,EAGF,SAAS,EAAQ,CAAC,EAAwC,CACxD,IAAM,EAAO,EAAgB,EAAE,SAAS,KAAK,EAAE,GACzC,EAAO,GAAM,MAAQ,EAAE,MAAM,MAAQ,GACrC,EAAO,GAAM,OAAS,EAAE,SAAS,MAAQ,GAC/C,GAAI,CAAC,GAAQ,CAAC,EAAK,KAAK,EACtB,OAGF,MAAO,CACL,KAAM,OACN,MAAO,CACL,CACE,MAAO,YAAY,EAAY,EAAG,CAAI,IACtC,OACA,MACF,CACF,CACF,EAGF,SAAS,EAAS,CAAC,EAAwC,CACzD,IAAM,EAAQ,EAAgB,EAAE,MAAM,KAAK,KAAK,EAChD,GAAI,EAAM,SAAW,EACnB,OAGF,IAAM,EAAQ,EAAM,QAAQ,CAAC,IAAS,CACpC,GAAI,CAAC,GAAQ,OAAO,IAAS,SAC3B,MAAO,CAAC,EAGV,IAAM,EAAO,OAAO,EAAK,QAAU,SAAW,EAAK,MAAQ,GAC3D,GAAI,CAAC,EAAK,KAAK,EACb,MAAO,CAAC,EAGV,IAAM,EAAO,EAAK,KAClB,MAAO,CACL,CACE,MAAO,GAAW,EAAM,EAAE,MAAM,SAAS,EACzC,OACA,KAAM,EACN,UAAW,OAAO,EAAK,YAAc,SAAW,EAAK,UAAY,CACnE,CACF,EACD,EAED,GAAI,EAAM,SAAW,EAAM,OACzB,OAGF,MAAO,CACL,KAAM,OACN,OACF,EAGF,SAAS,EAAQ,CAAC,EAA4B,CAC5C,IAAM,EAAO,EAAO,UAAU,EAAE,MAAM,OAAS,SAAS,EAElD,EAAO,CADA,EAAE,MAAM,WACH,EAAE,OAAO,CAAC,IAAyB,QAAQ,CAAI,CAAC,EAElE,MAAO,CACL,KAAM,OACN,MAAO,KAAK,aACZ,OACA,KAAM,EACR,EAGF,SAAS,EAAY,CAAC,EAA4B,CAChD,IAAM,EAAU,EAAgB,EAAE,MAAM,KAAK,OAAO,EASpD,MAAO,CACL,KAAM,WACN,MAVY,EAA4B,EAAE,MAAM,MAAM,SAAS,EAAE,IAAI,CAAC,EAAM,IAAM,CAClF,IAAM,EAAS,EAAa,EAAQ,EAAE,EAAE,OAAO,CAAC,IAAU,OAAO,IAAU,QAAQ,EACnF,MAAO,CACL,SAAU,EAAK,UAAY,YAAY,EAAI,IAC3C,OAAQ,EAAO,OAAS,EAAI,EAAO,KAAK,IAAI,EAAI,aAClD,EACD,EAKC,KAAM,EACR,EAGF,SAAS,EAAe,CAAC,EAAsB,CAC7C,IAAM,EAAM,EAAE,MAAM,SAAW,GACzB,EAAK,EAAE,MAAM,SAAW,GACxB,EAAY,GAAM,IAAO,IAAM,EAAY,EAAG,EAAI,CAAE,KAAM,EAAK,CAAC,EAAI,GACpE,EAAM,IAAc,IAAM,GAAK,EACrC,GAAI,GAAO,CAAC,EACV,MAAO,KAAK,IAGd,GAAI,CAAC,EACH,OAAO,EAAM,GAAG,KAAS,GAG3B,MAAO,GAAG,MAAQ,IAGpB,SAAS,EAAkB,CAAC,EAAsB,CAChD,IAAM,EAAM,EAAU,EAAE,MAAM,GAAG,EAC3B,GAAO,EAAE,MAAM,SAAW,IAAI,KAAK,EACnC,EAAM,CAAC,IAAiB,CAC5B,IAAM,EAAO,EAAK,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,EACxD,OAAO,EAAO;AAAA,EAAK,IAAS,IAG9B,GAAI,CAAC,EACH,OAAO,EAAI,QAAQ,OAAQ,EAAE,EAG/B,IAAM,GAAS,EAAE,MAAM,SAAW,IAAI,KAAK,EACrC,EAAK,EAAQ,EAAY,EAAG,EAAO,CAAE,KAAM,EAAK,CAAC,EAAI,GACrD,EAAQ,EAAI,MAAM;AAAA,CAAI,EACtB,GAAS,EAAM,IAAM,IAAI,KAAK,EAC9B,GAAU,EAAM,IAAM,IAAI,KAAK,EAErC,GAAI,IAAO,IAAU,GAAM,IAAU,IAAU,IAAW,EACxD,OAAO,EAAI,EAAM,MAAM,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,EAGtC,GAAI,IAAU,GAAO,IAAU,KAAK,IAClC,OAAO,EAAI,EAAM,MAAM,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,EAGtC,GAAI,IAAO,IAAU,GAAG,KAAM,KAAS,IAAU,GAAG,KAAS,KAC3D,OAAO,EAAI,EAAM,MAAM,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,EAGtC,OAAO,EAAI,CAAG,EAGhB,SAAS,EAAgB,CAAC,EAAsB,CAC9C,GAAI,EAAE,MAAM,SAAW,QACrB,OAAO,EAAK,EAAE,KAAK,EAGrB,IAAM,EAAO,EAAE,SAAS,KAClB,EAAO,EAAK,EAAE,KAAK,EACzB,GAAI,IAAS,OAAW,CACtB,GAAI,CAAC,EACH,MAAO,kBAGT,MAAO,wBAAqB,IAG9B,MAAO,yBAAyB,KAAQ,EAAO,SAAM,IAAS,KAGhE,SAAS,EAAe,CAAC,EAAsB,CAC7C,IAAM,EAAO,EAAY,EAAG,EAAE,MAAM,IAAI,EAClC,EAAQ,EAAsB,EAAE,MAAM,MAAO,CAAC,MAAM,CAAC,EACrD,EAAO,EAAQ,IAAI,IAAU,GACnC,MAAO,eAAU,IAAO,IAAO,KAAK,EAGtC,SAAS,EAAgB,CAAC,EAAsB,CAC9C,MAAO,GAGT,SAAS,EAAe,CAAC,EAAsB,CAC7C,MAAO,GAGT,SAAS,EAAgB,CAAC,EAAsB,CAC9C,MAAO,GAGT,SAAS,CAAS,CAAC,EAAiB,EAA4B,CAC9D,GAAI,EAAK,SAAW,QAClB,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAGvD,GAAI,EAAK,SAAW,UAClB,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAEvD,GAAI,EAAK,SAAW,QAClB,MAAO,gBAAW,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,YAAO,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAG7F,MAAO,aAAa,EAAS,EAAK,KAAM,CAAE,WAAU,CAAC,IAGvD,SAAS,EAAgB,CAAC,EAAsB,CAC9C,GAAI,EAAE,MAAM,SAAW,QACrB,OAAO,EAAK,EAAE,KAAK,EAGrB,IAAM,EAAQ,EAAgB,EAAE,MAAM,KAAK,KAAK,EAChD,GAAI,EAAM,SAAW,EAAG,CACtB,IAAM,EAAO,EAAK,EAAE,KAAK,EACzB,GAAI,CAAC,EACH,MAAO,QAGT,MAAO,cAAW,IAGpB,IAAM,EAAe,CAAC,EAAM,KAAK,CAAC,IAAS,GAAM,QAAU,EAAK,SAAW,UAAU,EAC/E,EAAQ,EAAM,OAAO,CAAC,IAAS,GAAgB,EAAK,SAAW,UAAU,EACzE,EAAO,EAAM,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC,IAAS,EAAU,EAAM,EAAE,MAAM,SAAS,CAAC,EAC/E,GAAI,EAAM,OAAS,EACjB,EAAK,KAAK,WAAW,EAAM,OAAS,QAAQ,EAG9C,GAAI,EAAK,OAAS,EAChB,OAAO,EAAK,KAAK;AAAA,CAAI,EAGvB,OAAO,EAAU,EAAM,GAAK,EAAE,MAAM,SAAS,EAG/C,SAAS,EAAe,CAAC,EAAsB,CAC7C,MAAO,GAGT,SAAS,EAAU,CAAC,EAAoC,CACtD,GAAI,CAAC,EAAO,KAAK,EACf,OAGF,IAAM,EAAQ,EAAO,MAAM,8CAA8C,EACzE,GAAI,EACF,OAAO,EAAM,GAAG,KAAK,GAAK,OAQ5B,OALa,EACV,MAAM;AAAA,CAAI,EACV,OAAO,CAAC,IAAS,CAAC,EAAK,WAAW,UAAU,CAAC,EAC7C,KAAK;AAAA,CAAI,EACT,KAAK,GACO,OAGjB,SAAS,EAAe,CAAC,EAAsB,CAC7C,GAAI,EAAE,MAAM,SAAW,QACrB,OAAO,EAAK,EAAE,KAAK,EAGrB,IAAM,EAAO,EAAO,UAAU,EAAE,MAAM,OAAS,SAAS,EAClD,EAAM,EAAE,MAAM,YACpB,GAAI,CAAC,EACH,MAAO,KAAK,aAGd,MAAO,KAAK;AAAA,EAAkB,IAGhC,SAAS,EAAmB,CAAC,EAAsB,CACjD,MAAO,GAGT,SAAS,EAAmB,CAAC,EAAsB,CACjD,IAAM,EAAI,EAAE,MAAM,WAAa,CAAC,EAC1B,EAAI,EAAE,SAAS,SAAW,CAAC,EAC3B,EAAO,EAAK,EAAE,KAAK,EACzB,GAAI,EAAE,SAAW,EAAG,CAClB,GAAI,CAAC,EACH,MAAO,cAGT,MAAO,oBAAiB,IAG1B,IAAM,EAAiB,CAAC,EACxB,QAAY,EAAG,KAAS,EAAE,MAAM,EAAG,CAAC,EAAE,QAAQ,EAAG,CAC/C,IAAM,EAAS,EAAK,SACd,EAAQ,EAAE,IAAM,CAAC,EACvB,EAAK,KAAK,KAAK,GAAU,YAAY,EAAI,KAAK,EAC9C,EAAK,KAAK,KAAK,EAAM,OAAS,EAAI,EAAM,KAAK,IAAI,EAAI,eAAe,EAGtE,GAAI,EAAE,OAAS,EACb,EAAK,KAAK,WAAW,EAAE,OAAS,QAAQ,EAG1C,OAAO,EAAK,KAAK;AAAA,CAAI,EAGvB,SAAS,EAAc,CAAC,EAAsB,CAC5C,MAAO,UAAK,EAAS,EAAE,MAAO,CAAE,UAAW,EAAE,MAAM,SAAU,CAAC,IAGhE,SAAS,EAAgB,CAAC,EAAsB,CAC9C,MAAO,iBAAY,EAAE,SAAS,MAAQ,EAAE,MAAM,IAAM,MAGtD,SAAS,EAAe,CAAC,EAAsB,CAC7C,IAAM,EAAU,EAAE,MAAM,SAAW,GAC7B,EAAO,EAAU,gBAAW,KAAa,cACzC,EAAM,EAAE,MAAM,MAAQ,GAC5B,GAAI,CAAC,EACH,OAAO,EAGT,MAAO,GAAG,QAAW,EAAY,EAAG,CAAG,IAGzC,SAAS,EAAe,CAAC,EAAsB,CAC7C,OAAO,EAAU,EAAE,KAAK,GAAK,EAAK,EAAE,KAAK,EAG3C,SAAS,EAAe,CAAC,EAAsB,CAC7C,IAAM,EAAU,EAAE,MAAM,SAAW,GAC7B,EAAO,EAAU,gBAAW,KAAa,cACzC,EAAM,EAAE,MAAM,MAAQ,GAC5B,GAAI,CAAC,EACH,OAAO,EAGT,MAAO,GAAG,QAAW,EAAY,EAAG,CAAG,IAGzC,SAAS,EAAe,CAAC,EAAsB,CAC7C,IAAM,EAAM,EAAK,EAAK,EAAE,KAAK,EAAE,IAAI,EACnC,GAAI,CAAC,EACH,MAAO,cAGT,MAAO,eAAU,EAAY,EAAG,CAAG,IAGrC,SAAS,EAAmB,CAAC,EAAsB,CACjD,IAAM,EAAM,EAAE,MAAM,KAAO,GAC3B,GAAI,CAAC,EACH,MAAO,aAGT,MAAO,cAAc,IAGvB,SAAS,EAAoB,CAAC,EAAsB,CAClD,IAAM,EAAQ,EAAuB,EAAE,SAAS,QAAQ,EAClD,EAAQ,EAAE,MAAM,OAAS,GAC/B,GAAI,CAAC,EACH,MAAO,UAAK,IAGd,MAAO,UAAK,MAAU,KAGxB,IAAM,EAAa,CACjB,QAAS,CACP,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,IAAM,EACf,CACF,EACA,MAAO,CACL,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,GACP,SAAU,GACV,MAAO,EACT,CACF,EACA,MAAO,CACL,KAAM,CACJ,OAAQ,GACR,MAAO,GACP,KAAM,MACR,EACA,IAAK,GACL,KAAM,GACN,OAAQ,CACN,MAAO,EACT,CACF,EACA,KAAM,CACJ,KAAM,CACJ,OAAQ,GACR,MAAO,GACP,KAAM,MACR,EACA,IAAK,GACL,KAAM,GACN,OAAQ,CACN,MAAO,EACT,CACF,EACA,MAAO,CACL,KAAM,CACJ,OAAQ,GACR,MAAO,GACP,KAAM,MACR,EACA,IAAK,GACL,KAAM,GACN,OAAQ,CACN,MAAO,GACP,MAAO,EACT,CACF,EACA,MAAO,CACL,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,IAAM,EACf,CACF,EACA,SAAU,CACR,KAAM,CACJ,OAAQ,GACR,MAAO,GACP,KAAM,YACR,EACA,IAAK,GACL,KAAM,GACN,OAAQ,CACN,MAAO,GACP,MAAO,EACT,CACF,EACA,SAAU,CACR,KAAM,CACJ,OAAQ,GACR,MAAO,GACP,KAAM,YACR,EACA,IAAK,GACL,KAAM,GACN,OAAQ,CACN,MAAO,GACP,MAAO,EACT,CACF,EACA,KAAM,CACJ,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,KAAM,CACJ,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,GACP,MAAO,EACT,CACF,EACA,KAAM,CACJ,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,KAAM,CACJ,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,IAAK,CACH,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,SAAU,CACR,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,UAAW,CACT,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,EACA,MAAO,CACL,KAAM,CACJ,OAAQ,GACR,MAAO,EACT,EACA,IAAK,GACL,OAAQ,CACN,MAAO,EACT,CACF,CACF,EAEA,SAAS,EAAG,CAAC,EAAgC,CAC3C,OAAO,OAAO,UAAU,eAAe,KAAK,EAAY,CAAI,EAG9D,SAAS,CAAI,CAAC,EAAwC,CACpD,GAAI,CAAC,GAAQ,CAAC,GAAI,CAAI,EACpB,OAGF,OAAO,EAAW,GAGpB,SAAS,CAAK,CAAC,EAAmC,EAA+B,CAC/E,IAAM,EAAO,EAAc,CAAI,EAC/B,GAAI,EAAK,MAAM,SAAW,YACxB,MAAO,CACL,YACA,IAAK,EAAK,MAAM,MAChB,KAAM,EAAK,KACX,MAAO,CAAC,EACR,KAAM,CAAC,EACP,MAAO,EAAK,EAAK,KAAK,EACtB,OAAQ,EAAK,MAAM,OACnB,MAAO,GACP,OAAQ,GACR,KAAM,CAAE,MAAO,EAAK,KAAK,OAAQ,CACnC,EACF,IAAM,EAAS,EAAe,EAAK,KAAM,EAAmB,EAAK,KAAK,CAAC,EACvE,MAAO,CACL,YACA,IAAK,EACL,KAAM,EAAK,KACX,MAAO,EAAe,EAAK,KAAM,EAAK,MAAM,KAAK,EACjD,KAAM,EAAkB,EAAK,KAAM,EAAK,MAAM,QAAQ,EACtD,MAAO,EAAK,EAAK,KAAK,EACtB,OAAQ,EAAK,MAAM,OACnB,MAAO,EAAK,MAAM,SAAW,QAAU,EAAK,MAAM,MAAM,QAAU,GAClE,SACA,KAAM,CACJ,MAAO,EAAK,KAAK,KAAO,EAAK,KAAK,QAClC,IAAK,EAAK,KAAK,SACjB,CACF,EAGF,SAAS,CAAS,CAAC,EAAsB,EAAwB,CAC/D,IAAM,EAAU,EAAO,KAAO,EAAM,EAAO,KAAM,EAAO,SAAS,EAAI,OACrE,MAAO,CACL,UAAW,EAAO,UAClB,MACA,KAAM,EAAkB,EAAO,MAAQ,GAAS,MAAQ,MAAM,EAC9D,MAAO,GAAS,OAAS,CAAC,EAC1B,KAAM,GAAS,MAAQ,CAAC,EACxB,MAAO,GAAS,OAAS,CAAC,EAC1B,OAAQ,EAAO,WAAa,GAAS,QAAU,GAC/C,OAAQ,EAAO,WAAa,GAAS,OAAS,IAAI,KAAK,EACvD,OAAQ,GAAS,QAAU,EAC3B,KAAM,GAAS,MAAQ,CAAC,CAC1B,EAGF,SAAS,EAAQ,CAAC,EAA0B,CAC1C,MAAO,CACL,KAAM,IACN,MAAO,EAAE,MAAM,SAAW,GAC1B,KAAM,QACN,KAAM,EAAE,MAAM,SAAW,YAAc,EAAE,MAAM,OAAO,KAAK,EAAI,MACjE,EAGK,SAAS,CAAQ,CAAC,EAAyB,CAChD,OACE,EAAK,EAAO,EAAkB,CAAI,EAAI,MAAS,GAAG,MAAQ,CACxD,OAAQ,GACR,MAAO,EACT,EAIG,SAAS,EAAmB,CAAC,EAA+B,CACjE,IAAM,EAAQ,EAAO,WAAa,EAAO,MAAM,MAAM,OACrD,OACE,EAAO,OAAS,QAChB,EAAO,QAAU,SACjB,IAAU,aACV,QAAQ,EAAS,EAAO,MAAQ,EAAO,MAAM,IAAI,EAAE,IAAI,EAIpD,SAAS,EAAc,CAAC,EAAmC,EAAgC,CAChG,IAAM,EAAM,EAAM,EAAM,CAAS,EAC3B,EAAO,EAAK,EAAI,IAAI,GAAG,IAC7B,GAAI,CACF,GAAI,EACF,OAAO,EAAK,EAAM,CAAG,CAAC,EAExB,KAAM,CACN,OAAO,EAAe,CAAG,EAG3B,OAAO,EAAe,CAAG,EAGpB,SAAS,CAAU,CAAC,EAAkB,EAAwB,CACnE,IAAM,EAAO,EAAK,EAAI,IAAI,GAAG,SAAS,GACtC,GAAI,CACF,GAAI,EACF,OAAO,EAAK,EAAM,CAAG,CAAC,EAExB,KAAM,CACN,GAAI,IAAU,QACZ,OAAO,EAAc,CAAG,EAE1B,GAAI,IAAU,WACZ,OAAO,EAAI,IAEb,OAAO,EAAc,CAAG,EAG1B,GAAI,IAAU,QACZ,OAAO,EAAc,CAAG,EAG1B,GAAI,IAAU,WACZ,OAAO,EAAI,IAGb,OAAO,EAAc,CAAG,EAG1B,SAAS,EAAY,CAAC,EAAsB,EAAuC,CACjF,IAAM,EAAM,EAAU,EAAQ,CAAG,EAC3B,EAAO,EAAK,EAAI,IAAI,GAAG,KAC7B,GAAI,CAAC,EACH,OAGF,GAAI,CACF,OAAO,EAAK,EAAM,CAAG,CAAC,EACtB,KAAM,CACN,QAIJ,SAAS,CAAQ,CAAC,EAA2C,CAC3D,GAAI,CAAC,EACH,OAGF,MAAO,CACL,KAAM,OACN,SACF,EAGF,SAAS,EAAY,CAAC,EAA2C,CAC/D,GAAI,CAAC,EACH,OAGF,MAAO,CACL,KAAM,WACN,SACF,EAGF,SAAS,EAAc,CAAC,EAAsB,EAAuC,CACnF,IAAM,EAAO,GAAa,EAAQ,CAAG,EACrC,GAAI,CAAC,EACH,OAGF,MAAO,CACL,KAAM,aACN,SAAU,CACZ,EAGF,IAAM,EAA6B,KAEnC,SAAS,EAAkB,CAAC,EAA2C,CACrE,GAAI,OAAO,KAAK,CAAK,EAAE,SAAW,EAAG,OACrC,IAAM,EAAU,KAAK,UAAU,EAAO,KAAM,CAAC,EAC7C,GAAI,CAAC,EAAS,OACd,IAAM,EAAS;AAAA,iBACf,MAAO,CACL,KAAM,OACN,QACE,EAAQ,QAAU,EACd,EACA,EAAQ,MAAM,EAAG,EAA6B,EAAO,MAAM,EAAI,EACrE,SAAU,MACZ,EAGF,SAAS,EAAW,CAAC,EAAiB,EAAiC,CACrE,IAAM,EAAO,EAAU,CAAG,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,EAClE,GAAI,CAAC,EACH,OAGF,GAAI,CAAC,EACH,OAAO,EAGT,MAAO;AAAA,EAAK,IAGP,SAAS,EAAa,CAC3B,EACA,EACA,EAC0B,CAC1B,GAAI,EAAO,MAAO,CAChB,GAAI,EAAO,QAAU,QACnB,OAAO,EAAS,KAAK,EAAO,MAAM,SAAS,EAG7C,GAAI,EAAO,QAAU,WACnB,OAAO,EAAS,GAAY,EAAO,MAAM,QAAS,CAAG,GAAK,EAAE,EAG9D,GAAI,EAAO,YAAc,QAAS,CAChC,IAAM,EAAM,EAAU,EAAQ,CAAG,EACjC,OAAO,EAAS,EAAW,QAAS,CAAG,CAAC,EAG1C,OAGF,IAAM,EAAM,EAAU,EAAQ,CAAG,EAC3B,EAAO,EAAS,EAAI,IAAI,EAE9B,GAAI,EAAI,OAAS,SAAW,EAAO,QAAU,YAAc,GAAS,cAAgB,GAAO,OAE3F,GAAI,EAAI,OAAS,WAAY,CAC3B,GAAI,EAAO,QAAU,QACnB,OAGF,GAAI,EAAO,QAAU,SAAW,EAAI,SAAW,YAAa,CAC1D,IAAM,EAAS,GAAW,EAAI,MAAM,EACpC,GAAI,EACF,OAAO,GAAa,CAAM,GAKhC,GAAI,EAAO,QAAU,YAAc,CAAC,EAAK,OACvC,OAGF,GAAI,EAAO,QAAU,QAAS,CAC5B,GAAI,EAAI,SAAW,QACjB,OAAO,EAAS,EAAW,QAAS,CAAG,CAAC,EAG1C,GAAI,CAAC,EAAK,MACR,OAGF,GAAI,EAAI,QAAU,EAAI,SAAW,YAC/B,OAAO,EAAS,EAAI,IAAI,KAAK,CAAC,EAGhC,GAAI,GAAoB,CAAM,EAC5B,OAAO,GAAe,EAAQ,CAAG,GAAK,EAAS,EAAW,QAAS,CAAG,CAAC,EAGzE,GAAI,CAAC,EAAK,EAAI,IAAI,GAAK,CAAC,EAAI,OAAO,KAAK,EACtC,OAAO,GAAmB,EAAI,IAAI,GAAK,EAAS,EAAW,QAAS,CAAG,CAAC,EAI5E,OAAO,EAAS,EAAW,EAAO,MAAO,CAAG,CAAC,EAGxC,SAAS,EAAY,CAAC,EAAoC,CAC/D,GAAI,CAAC,EACH,OAGF,IAAM,EAAM,EAAK,QAAQ,CAAK,EACxB,EAAO,EAAoB,GACjC,GAAI,CAAC,kBAAmB,kBAAmB,YAAY,EAAE,SAAS,CAAI,EACpE,MAAO,aAGT,OAAO", | ||
| "debugId": "BFB41CDE1CF1573964756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+groq@3.0.31+d6123d32214422cb/node_modules/@ai-sdk/groq/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/groq-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/groq-chat-language-model.ts\nimport {\n InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/convert-groq-usage.ts\nfunction convertGroqUsage(usage) {\n var _a, _b, _c, _d;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = (_a = usage.prompt_tokens) != null ? _a : 0;\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = (_d = (_c = usage.completion_tokens_details) == null ? void 0 : _c.reasoning_tokens) != null ? _d : void 0;\n const textTokens = reasoningTokens != null ? completionTokens - reasoningTokens : completionTokens;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: textTokens,\n reasoning: reasoningTokens\n },\n raw: usage\n };\n}\n\n// src/convert-to-groq-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToGroqChatMessages(prompt) {\n var _a;\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"file\": {\n if (!part.mediaType.startsWith(\"image/\")) {\n throw new UnsupportedFunctionalityError({\n functionality: \"Non-image file content parts\"\n });\n }\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n return {\n type: \"image_url\",\n image_url: {\n url: part.data instanceof URL ? part.data.toString() : `data:${mediaType};base64,${convertToBase64(part.data)}`\n }\n };\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n let reasoning = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n // groq supports reasoning for tool-calls in multi-turn conversations\n // https://github.com/vercel/ai/issues/7860\n case \"reasoning\": {\n reasoning += part.text;\n break;\n }\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: text,\n ...reasoning.length > 0 ? { reasoning } : null,\n ...toolCalls.length > 0 ? { tool_calls: toolCalls } : null\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue;\n }\n const output = toolResponse.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: contentValue\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/groq-chat-options.ts\nimport { z } from \"zod/v4\";\nvar groqLanguageModelOptions = z.object({\n reasoningFormat: z.enum([\"parsed\", \"raw\", \"hidden\"]).optional(),\n /**\n * Specifies the reasoning effort level for model inference.\n * @see https://console.groq.com/docs/reasoning#reasoning-effort\n */\n reasoningEffort: z.enum([\"none\", \"default\", \"low\", \"medium\", \"high\"]).optional(),\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n /**\n * Whether to use strict JSON schema validation.\n * When true, the model uses constrained decoding to guarantee schema compliance.\n * Only used when structured outputs are enabled and a schema is provided.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n /**\n * Service tier for the request.\n * - 'on_demand': Default tier with consistent performance and fairness\n * - 'flex': Higher throughput tier optimized for workloads that can handle occasional request failures\n * - 'auto': Uses on_demand rate limits, then falls back to flex tier if exceeded\n *\n * @default 'on_demand'\n */\n serviceTier: z.enum([\"on_demand\", \"flex\", \"auto\"]).optional()\n});\n\n// src/groq-error.ts\nimport { z as z2 } from \"zod/v4\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nvar groqErrorDataSchema = z2.object({\n error: z2.object({\n message: z2.string(),\n type: z2.string()\n })\n});\nvar groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: (data) => data.error.message\n});\n\n// src/groq-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\n\n// src/groq-browser-search-models.ts\nvar BROWSER_SEARCH_SUPPORTED_MODELS = [\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-120b\"\n];\nfunction isBrowserSearchSupportedModel(modelId) {\n return BROWSER_SEARCH_SUPPORTED_MODELS.includes(modelId);\n}\nfunction getSupportedModelsString() {\n return BROWSER_SEARCH_SUPPORTED_MODELS.join(\", \");\n}\n\n// src/groq-prepare-tools.ts\nfunction prepareTools({\n tools,\n toolChoice,\n modelId\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const groqTools2 = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n if (tool.id === \"groq.browser_search\") {\n if (!isBrowserSearchSupportedModel(modelId)) {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`,\n details: `Browser search is only supported on the following models: ${getSupportedModelsString()}. Current model: ${modelId}`\n });\n } else {\n groqTools2.push({\n type: \"browser_search\"\n });\n }\n } else {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n }\n } else {\n groqTools2.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...tool.strict != null ? { strict: tool.strict } : {}\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: groqTools2, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: groqTools2, toolChoice: type, toolWarnings };\n case \"tool\":\n return {\n tools: groqTools2,\n toolChoice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName\n }\n },\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/map-groq-finish-reason.ts\nfunction mapGroqFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/groq-chat-language-model.ts\nvar GroqChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n \"image/*\": [/^https?:\\/\\/.*$/]\n };\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n tools,\n toolChoice,\n providerOptions\n }) {\n var _a, _b, _c;\n const warnings = [];\n const groqOptions = await parseProviderOptions({\n provider: \"groq\",\n providerOptions,\n schema: groqLanguageModelOptions\n });\n const structuredOutputs = (_a = groqOptions == null ? void 0 : groqOptions.structuredOutputs) != null ? _a : true;\n const strictJsonSchema = (_b = groqOptions == null ? void 0 : groqOptions.strictJsonSchema) != null ? _b : true;\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\" && responseFormat.schema != null && !structuredOutputs) {\n warnings.push({\n type: \"unsupported\",\n feature: \"responseFormat\",\n details: \"JSON response format schema is only supported with structuredOutputs\"\n });\n }\n const {\n tools: groqTools2,\n toolChoice: groqToolChoice,\n toolWarnings\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n return {\n args: {\n // model id:\n model: this.modelId,\n // model specific settings:\n user: groqOptions == null ? void 0 : groqOptions.user,\n parallel_tool_calls: groqOptions == null ? void 0 : groqOptions.parallelToolCalls,\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? structuredOutputs && responseFormat.schema != null ? {\n type: \"json_schema\",\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: (_c = responseFormat.name) != null ? _c : \"response\",\n description: responseFormat.description\n }\n } : { type: \"json_object\" } : void 0,\n // provider options:\n reasoning_format: groqOptions == null ? void 0 : groqOptions.reasoningFormat,\n reasoning_effort: groqOptions == null ? void 0 : groqOptions.reasoningEffort,\n service_tier: groqOptions == null ? void 0 : groqOptions.serviceTier,\n // messages:\n messages: convertToGroqChatMessages(prompt),\n // tools:\n tools: groqTools2,\n tool_choice: groqToolChoice\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n async doGenerate(options) {\n var _a, _b;\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false\n });\n const body = JSON.stringify(args);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: \"text\", text });\n }\n const reasoning = choice.message.reasoning;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: \"reasoning\",\n text: reasoning\n });\n }\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: (_a = toolCall.id) != null ? _a : generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapGroqFinishReason(choice.finish_reason),\n raw: (_b = choice.finish_reason) != null ? _b : void 0\n },\n usage: convertGroqUsage(response.usage),\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings,\n request: { body }\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n const body = JSON.stringify({ ...args, stream: true });\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const toolCalls = [];\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let isFirstChunk = true;\n let isActiveText = false;\n let isActiveReasoning = false;\n let providerMetadata;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n finishReason = {\n unified: \"error\",\n raw: void 0\n };\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (\"error\" in value) {\n finishReason = {\n unified: \"error\",\n raw: void 0\n };\n controller.enqueue({ type: \"error\", error: value.error });\n return;\n }\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (((_a = value.x_groq) == null ? void 0 : _a.usage) != null) {\n usage = value.x_groq.usage;\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = {\n unified: mapGroqFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = true;\n }\n controller.enqueue({\n type: \"reasoning-delta\",\n id: \"reasoning-0\",\n delta: delta.reasoning\n });\n }\n if (delta.content != null && delta.content.length > 0) {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = false;\n }\n if (!isActiveText) {\n controller.enqueue({ type: \"text-start\", id: \"txt-0\" });\n isActiveText = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"txt-0\",\n delta: delta.content\n });\n }\n if (delta.tool_calls != null) {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\"\n });\n isActiveReasoning = false;\n }\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`\n });\n }\n if (((_b = toolCallDelta.function) == null ? void 0 : _b.name) == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`\n });\n }\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name\n });\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: (_c = toolCallDelta.function.arguments) != null ? _c : \"\"\n },\n hasFinished: false\n };\n const toolCall2 = toolCalls[index];\n if (((_d = toolCall2.function) == null ? void 0 : _d.name) != null && ((_e = toolCall2.function) == null ? void 0 : _e.arguments) != null) {\n if (toolCall2.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall2.id,\n delta: toolCall2.function.arguments\n });\n }\n if (isParsableJson(toolCall2.function.arguments)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall2.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: (_f = toolCall2.id) != null ? _f : generateId(),\n toolName: toolCall2.function.name,\n input: toolCall2.function.arguments\n });\n toolCall2.hasFinished = true;\n }\n }\n continue;\n }\n const toolCall = toolCalls[index];\n if (toolCall.hasFinished) {\n continue;\n }\n if (((_g = toolCallDelta.function) == null ? void 0 : _g.arguments) != null) {\n toolCall.function.arguments += (_i = (_h = toolCallDelta.function) == null ? void 0 : _h.arguments) != null ? _i : \"\";\n }\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: (_j = toolCallDelta.function.arguments) != null ? _j : \"\"\n });\n if (((_k = toolCall.function) == null ? void 0 : _k.name) != null && ((_l = toolCall.function) == null ? void 0 : _l.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: (_m = toolCall.id) != null ? _m : generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: \"reasoning-end\", id: \"reasoning-0\" });\n }\n if (isActiveText) {\n controller.enqueue({ type: \"text-end\", id: \"txt-0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertGroqUsage(usage),\n ...providerMetadata != null ? { providerMetadata } : {}\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nvar groqChatResponseSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n message: z3.object({\n content: z3.string().nullish(),\n reasoning: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n id: z3.string().nullish(),\n type: z3.literal(\"function\"),\n function: z3.object({\n name: z3.string(),\n arguments: z3.string()\n })\n })\n ).nullish()\n }),\n index: z3.number(),\n finish_reason: z3.string().nullish()\n })\n ),\n usage: z3.object({\n prompt_tokens: z3.number().nullish(),\n completion_tokens: z3.number().nullish(),\n total_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({\n cached_tokens: z3.number().nullish()\n }).nullish(),\n completion_tokens_details: z3.object({\n reasoning_tokens: z3.number().nullish()\n }).nullish()\n }).nullish()\n});\nvar groqChatChunkSchema = z3.union([\n z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n delta: z3.object({\n content: z3.string().nullish(),\n reasoning: z3.string().nullish(),\n tool_calls: z3.array(\n z3.object({\n index: z3.number(),\n id: z3.string().nullish(),\n type: z3.literal(\"function\").optional(),\n function: z3.object({\n name: z3.string().nullish(),\n arguments: z3.string().nullish()\n })\n })\n ).nullish()\n }).nullish(),\n finish_reason: z3.string().nullable().optional(),\n index: z3.number()\n })\n ),\n x_groq: z3.object({\n usage: z3.object({\n prompt_tokens: z3.number().nullish(),\n completion_tokens: z3.number().nullish(),\n total_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({\n cached_tokens: z3.number().nullish()\n }).nullish(),\n completion_tokens_details: z3.object({\n reasoning_tokens: z3.number().nullish()\n }).nullish()\n }).nullish()\n }).nullish()\n }),\n groqErrorDataSchema\n]);\n\n// src/groq-transcription-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertBase64ToUint8Array,\n createJsonResponseHandler as createJsonResponseHandler2,\n mediaTypeToExtension,\n parseProviderOptions as parseProviderOptions2,\n postFormDataToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\n\n// src/groq-transcription-options.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\nvar groqTranscriptionModelOptions = lazySchema(\n () => zodSchema(\n z4.object({\n language: z4.string().nullish(),\n prompt: z4.string().nullish(),\n responseFormat: z4.string().nullish(),\n temperature: z4.number().min(0).max(1).nullish(),\n timestampGranularities: z4.array(z4.string()).nullish()\n })\n )\n);\n\n// src/groq-transcription-model.ts\nvar GroqTranscriptionModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n audio,\n mediaType,\n providerOptions\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const groqOptions = await parseProviderOptions2({\n provider: \"groq\",\n providerOptions,\n schema: groqTranscriptionModelOptions\n });\n const formData = new FormData();\n const blob = audio instanceof Uint8Array ? new Blob([audio]) : new Blob([convertBase64ToUint8Array(audio)]);\n formData.append(\"model\", this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n \"file\",\n new File([blob], \"audio\", { type: mediaType }),\n `audio.${fileExtension}`\n );\n if (groqOptions) {\n const transcriptionModelOptions = {\n language: (_a = groqOptions.language) != null ? _a : void 0,\n prompt: (_b = groqOptions.prompt) != null ? _b : void 0,\n response_format: (_c = groqOptions.responseFormat) != null ? _c : void 0,\n temperature: (_d = groqOptions.temperature) != null ? _d : void 0,\n timestamp_granularities: (_e = groqOptions.timestampGranularities) != null ? _e : void 0\n };\n for (const key in transcriptionModelOptions) {\n const value = transcriptionModelOptions[key];\n if (value !== void 0) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n return {\n formData,\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { formData, warnings } = await this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/audio/transcriptions\",\n modelId: this.modelId\n }),\n headers: combineHeaders2(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n groqTranscriptionResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n text: response.text,\n segments: (_e = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end\n }))) != null ? _e : [],\n language: (_f = response.language) != null ? _f : void 0,\n durationInSeconds: (_g = response.duration) != null ? _g : void 0,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar groqTranscriptionResponseSchema = z5.object({\n text: z5.string(),\n x_groq: z5.object({\n id: z5.string()\n }),\n // additional properties are returned when `response_format: 'verbose_json'` is\n task: z5.string().nullish(),\n language: z5.string().nullish(),\n duration: z5.number().nullish(),\n segments: z5.array(\n z5.object({\n id: z5.number(),\n seek: z5.number(),\n start: z5.number(),\n end: z5.number(),\n text: z5.string(),\n tokens: z5.array(z5.number()),\n temperature: z5.number(),\n avg_logprob: z5.number(),\n compression_ratio: z5.number(),\n no_speech_prob: z5.number()\n })\n ).nullish()\n});\n\n// src/tool/browser-search.ts\nimport { createProviderToolFactory } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar browserSearch = createProviderToolFactory({\n id: \"groq.browser_search\",\n inputSchema: z6.object({})\n});\n\n// src/groq-tools.ts\nvar groqTools = {\n browserSearch\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.31\" : \"0.0.0-test\";\n\n// src/groq-provider.ts\nfunction createGroq(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.groq.com/openai/v1\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"GROQ_API_KEY\",\n description: \"Groq\"\n })}`,\n ...options.headers\n },\n `ai-sdk/groq/${VERSION}`\n );\n const createChatModel = (modelId) => new GroqChatLanguageModel(modelId, {\n provider: \"groq.chat\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createLanguageModel = (modelId) => {\n if (new.target) {\n throw new Error(\n \"The Groq model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n const createTranscriptionModel = (modelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: \"groq.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n };\n const provider = function(modelId) {\n return createLanguageModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.tools = groqTools;\n return provider;\n}\nvar groq = createGroq();\nexport {\n VERSION,\n browserSearch,\n createGroq,\n groq\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "96B35A74B2D2FDA564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/mini.ts", "src/mini-host.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { ClientError, OpenCode, type OpenCodeClient } from \"@opencode-ai/client/promise\"\nimport type { MiniFrontendInput } from \"@opencode-ai/tui/mini\"\nimport { setTimeout } from \"node:timers/promises\"\nimport { readStdin } from \"./util/io\"\nimport { createMiniHost, INTERACTIVE_INPUT_ERROR, usingInteractiveStdin } from \"./mini-host\"\nimport { parseSessionTargetModel, resolveSessionTarget, type SessionTargetPreparation } from \"./session-target\"\nimport { Env } from \"./env\"\n\nexport type MiniCommandInput = {\n server: {\n endpoint: Endpoint\n reconnect?: (signal: AbortSignal) => Promise<Endpoint>\n }\n continue?: boolean\n session?: string\n fork?: boolean\n model?: string\n agent?: string\n prompt?: string\n replay?: boolean\n replayLimit?: number\n demo?: boolean\n tuiConfig?: MiniFrontendInput[\"tuiConfig\"]\n config?: MiniFrontendInput[\"config\"]\n paths: { home: string; state: string; log: string }\n}\n\ntype Model = MiniFrontendInput[\"model\"]\n\nclass MiniInputError extends Error {}\n\nexport async function runMini(input: MiniCommandInput) {\n try {\n validate(input)\n const result = await usingInteractiveStdin(async (terminal) => {\n const initialInput = mergeInput(process.stdin.isTTY ? undefined : await readStdin(), input.prompt)\n const frontendTask = import(\"@opencode-ai/tui/mini\")\n const directory = localDirectory()\n const connection = createMiniConnection(input.server)\n const sdk = connection.sdk\n const environment = input.server.reconnect ? Env.session() : undefined\n const requested = parseModel(input.model)\n const model = requested ? { providerID: requested.providerID, modelID: requested.id } : undefined\n const prepare = prepareTarget(input.agent)\n const resolveTarget = async (initial: OpenCodeClient, signal: AbortSignal) => {\n const resolved = await resolveMiniTarget({\n sdk: initial,\n reconnect: connection.reconnect,\n signal,\n resolve: (client) =>\n resolveSessionTarget({\n client,\n location: { directory },\n continue: input.continue,\n session: input.session,\n fork: input.fork,\n model: requested,\n agent: input.agent,\n environment,\n prepare,\n signal,\n }).catch((error) => {\n if (error instanceof Error && error.message === \"Session not found\")\n throw new MiniInputError(error.message)\n throw error\n }),\n })\n const target = resolved.value\n return {\n sdk: resolved.sdk,\n sessionID: target.session.id,\n sessionTitle: target.session.title,\n location: target.location,\n model: target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined,\n variant: target.model?.variant,\n agent: target.agent,\n resume: target.resume,\n }\n }\n const create = (\n client: OpenCodeClient,\n next: {\n location: { directory: string; workspaceID?: string }\n agent: string | undefined\n model: Model\n variant: string | undefined\n },\n signal?: AbortSignal,\n ) =>\n resolveSessionTarget({\n client,\n location: { directory: next.location.directory, workspace: next.location.workspaceID },\n agent: next.agent,\n environment,\n model: next.model\n ? { providerID: next.model.providerID, id: next.model.modelID, variant: next.variant }\n : undefined,\n prepare,\n signal,\n }).then((target) => ({\n sessionID: target.session.id,\n sessionTitle: target.session.title,\n location: target.location,\n model: target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined,\n variant: target.model?.variant,\n agent: target.agent,\n resume: false,\n }))\n const frontend = await frontendTask\n return frontend.runMiniFrontend({\n host: createMiniHost({ terminal, directory, paths: input.paths }),\n sdk,\n directory,\n target: resolveTarget,\n reconnect: connection.reconnect,\n createSession: create,\n agent: input.agent,\n model,\n variant: requested?.variant,\n files: [],\n initialInput,\n replay: input.replay ?? true,\n replayLimit: input.replayLimit,\n demo: input.demo,\n tuiConfig: input.tuiConfig,\n config: input.config,\n })\n })\n if (result.exitCode !== 0) process.exit(result.exitCode)\n } catch (error) {\n if (error instanceof MiniInputError || (error instanceof Error && error.message === INTERACTIVE_INPUT_ERROR))\n fail(error.message)\n throw error\n }\n}\n\n/** @internal Exported for CLI boundary tests. */\nexport function createMiniConnection(input: MiniCommandInput[\"server\"]) {\n const make = (endpoint: Endpoint) =>\n OpenCode.make({\n baseUrl: endpoint.url,\n headers: Service.headers(endpoint),\n })\n const reconnect = input.reconnect\n return {\n sdk: make(input.endpoint),\n reconnect: reconnect\n ? async (signal: AbortSignal) => {\n const endpoint = await reconnect(signal)\n return make(endpoint)\n }\n : undefined,\n }\n}\n\n/** @internal Exported for reconnect lifecycle tests. */\nexport async function resolveMiniTarget<A>(input: {\n sdk: OpenCodeClient\n reconnect?: (signal: AbortSignal) => Promise<OpenCodeClient>\n signal: AbortSignal\n resolve: (sdk: OpenCodeClient) => Promise<A>\n}) {\n let sdk = input.sdk\n while (true) {\n try {\n return { sdk, value: await input.resolve(sdk) }\n } catch (error) {\n if (!input.reconnect || !(error instanceof ClientError) || error.reason !== \"Transport\") throw error\n while (true) {\n try {\n sdk = await input.reconnect(input.signal)\n break\n } catch (resolveError) {\n if (input.signal.aborted) throw resolveError\n await setTimeout(250, undefined, { signal: input.signal })\n }\n }\n }\n }\n}\n\nexport function validateMiniTerminal() {\n if (!process.stdout.isTTY) fail(\"opencode mini requires a TTY stdout\")\n}\n\n/** @internal Exported for testing. */\nexport function mergeInput(piped: string | undefined, prompt: string | undefined) {\n if (!prompt) return piped || undefined\n if (!piped) return prompt\n return piped + \"\\n\" + prompt\n}\n\nfunction validate(input: MiniCommandInput) {\n validateMiniTerminal()\n if (input.replayLimit !== undefined && (!Number.isInteger(input.replayLimit) || input.replayLimit <= 0)) {\n fail(\"--replay-limit must be a positive integer\")\n }\n if (input.fork && !input.continue && !input.session) fail(\"--fork requires --continue or --session\")\n}\n\nfunction localDirectory(): string {\n const root = process.env.PWD ?? process.cwd()\n try {\n process.chdir(root)\n return process.cwd()\n } catch {\n throw new MiniInputError(`Failed to change directory to ${root}`)\n }\n}\n\nfunction parseModel(value?: string) {\n try {\n return parseSessionTargetModel(value)\n } catch {\n throw new MiniInputError(\"--model must use the format provider/model[#variant]\")\n }\n}\n\nfunction prepareTarget(requestedAgent?: string): SessionTargetPreparation {\n return async (input) => ({ model: input.model, agent: requestedAgent ?? input.agent })\n}\n\nfunction fail(message: string): never {\n process.stderr.write(`\\x1b[91m\\x1b[1mError: \\x1b[0m${message}\\n`)\n process.exit(1)\n}\n", | ||
| "import type { MiniFrontendInput } from \"@opencode-ai/tui/mini\"\nimport { createModelPreferenceRepository } from \"@opencode-ai/tui/model-preference\"\nimport fs from \"node:fs\"\nimport { readFile } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { ReadStream } from \"node:tty\"\n\nexport const INTERACTIVE_INPUT_ERROR = \"opencode mini requires a controlling terminal for input\"\n\nexport type InteractiveStdin = {\n stdin: NodeJS.ReadStream\n cleanup(): void\n}\n\ntype MiniHost = MiniFrontendInput[\"host\"]\n\nfunction preferences(statePath: string): MiniHost[\"preferences\"] {\n const repository = createModelPreferenceRepository(path.join(statePath, \"model.json\"))\n return {\n async resolveVariant(model) {\n if (!model) return\n return repository.resolveVariant(model)\n },\n async saveVariant(model, variant) {\n if (!model) return\n await repository.saveVariant(model, variant).catch(() => undefined)\n },\n }\n}\n\nfunction signal(name: \"SIGINT\" | \"SIGUSR2\"): MiniHost[\"signals\"][\"sigint\"] {\n return {\n subscribe(listener) {\n let subscribed = true\n process.on(name, listener)\n return () => {\n if (!subscribed) return\n subscribed = false\n process.off(name, listener)\n }\n },\n }\n}\n\nfunction createTrace(\n logPath: string,\n diagnostics: { pid: number; cwd: string; argv: string[] },\n): MiniHost[\"diagnostics\"][\"trace\"] {\n if (!process.env.OPENCODE_DIRECT_TRACE) return\n const stamp = new Date()\n .toISOString()\n .replace(/[-:]/g, \"\")\n .replace(/\\.\\d+Z$/, \"Z\")\n const target = path.join(logPath, \"direct\", `${stamp}-${diagnostics.pid}.jsonl`)\n const text = (data: unknown) =>\n JSON.stringify(data, (_key, value) => (typeof value === \"bigint\" ? String(value) : value), 0)\n fs.mkdirSync(path.dirname(target), { recursive: true })\n fs.writeFileSync(\n path.join(logPath, \"direct\", \"latest.json\"),\n text({\n time: new Date().toISOString(),\n ...diagnostics,\n path: target,\n }) + \"\\n\",\n )\n const trace = {\n write(type: string, data?: unknown) {\n fs.appendFileSync(\n target,\n text({\n time: new Date().toISOString(),\n pid: diagnostics.pid,\n type,\n data,\n }) + \"\\n\",\n )\n },\n }\n trace.write(\"trace.start\", {\n argv: diagnostics.argv,\n cwd: diagnostics.cwd,\n path: target,\n })\n return trace\n}\n\nfunction openTerminalStdin(target: string): NodeJS.ReadStream {\n return new ReadStream(fs.openSync(target, \"r\"))\n}\n\nexport function resolveInteractiveStdin(\n stdin: NodeJS.ReadStream = process.stdin,\n open: (target: string) => NodeJS.ReadStream = openTerminalStdin,\n platform: NodeJS.Platform = process.platform,\n): InteractiveStdin {\n if (stdin.isTTY) return { stdin, cleanup() {} }\n const target = platform === \"win32\" ? \"CONIN$\" : \"/dev/tty\"\n try {\n const source = open(target)\n let cleaned = false\n return {\n stdin: source,\n cleanup() {\n if (cleaned) return\n cleaned = true\n source.destroy()\n },\n }\n } catch (error) {\n throw new Error(INTERACTIVE_INPUT_ERROR, { cause: error })\n }\n}\n\n/** @internal Exported for owner-local resource cleanup tests. */\nexport async function usingInteractiveStdin<T>(\n run: (terminal: InteractiveStdin) => Promise<T>,\n resolve: () => InteractiveStdin = resolveInteractiveStdin,\n) {\n const terminal = resolve()\n try {\n return await run(terminal)\n } finally {\n terminal.cleanup()\n }\n}\n\n/** @internal Exported for owner-local host capability tests. */\nexport function createMiniHost(input: {\n terminal: InteractiveStdin\n directory: string\n paths: { home: string; state: string; log: string }\n}): MiniHost {\n const paths = input.paths\n const diagnostics = {\n pid: process.pid,\n cwd: input.directory,\n argv: process.argv.slice(2),\n }\n return {\n terminal: { stdin: input.terminal.stdin },\n platform: process.platform,\n stdout: {\n write(value) {\n process.stdout.write(value)\n },\n },\n files: {\n readText: (url) => readFile(new URL(url), \"utf8\"),\n },\n editor: {\n async open(options) {\n const { openEditor } = await import(\"@opencode-ai/tui/editor\")\n return openEditor(options)\n },\n },\n paths: { home: paths.home },\n signals: {\n sigint: signal(\"SIGINT\"),\n sigusr2: signal(\"SIGUSR2\"),\n },\n startup: {\n showTiming: [\"1\", \"true\"].includes(process.env.OPENCODE_SHOW_TTFD?.toLowerCase() ?? \"\"),\n now: () => performance.now(),\n },\n diagnostics: {\n trace: createTrace(paths.log, diagnostics),\n },\n preferences: preferences(paths.state),\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "83BB512D43B64C9F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/logout.ts"], | ||
| "sourcesContent": [ | ||
| "import { autocomplete, intro, outro, spinner } from \"@clack/prompts\"\nimport { Effect, Option } from \"effect\"\nimport type { IntegrationInfo } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { handlePromptErrors, prompt, requireInteractive } from \"../../../ui/prompt\"\nimport { createClient, loadIntegrations, location, request, resolveIntegration } from \"./shared\"\n\nexport default Runtime.handler(\n Commands.commands.auth.commands.logout,\n Effect.fn(\"cli.auth.logout\")((input) =>\n logout({\n target: Option.getOrUndefined(input.target),\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n }).pipe(handlePromptErrors),\n ),\n)\n\nconst logout = Effect.fn(\"cli.auth.logout.run\")(function* (input: {\n target?: string\n server?: string\n standalone: boolean\n}) {\n if (!input.target)\n yield* requireInteractive(\"Pass an integration ID or name when running without an interactive terminal\")\n intro(\"Remove credential\")\n const client = yield* createClient({ server: input.server, standalone: input.standalone })\n const integrations = yield* loadIntegrations(client)\n const integration = yield* chooseIntegration(integrations, input.target)\n const credentials = integration.connections.filter((connection) => connection.type === \"credential\")\n if (credentials.length === 0) {\n const environment = integration.connections\n .filter((connection) => connection.type === \"env\")\n .map((connection) => connection.name)\n if (environment.length) {\n yield* Effect.fail(\n new Error(\n `${integration.name} is authenticated through ${environment.join(\", \")}; unset the environment variable to disconnect`,\n ),\n )\n }\n yield* Effect.fail(new Error(`No stored credentials for ${integration.name}`))\n }\n const progress = spinner()\n progress.start(\"Removing credential...\")\n yield* Effect.forEach(\n credentials,\n (connection) =>\n request((signal) => client.credential.remove({ credentialID: connection.id, location }, { signal })),\n { concurrency: \"unbounded\", discard: true },\n ).pipe(\n Effect.tap(() => Effect.sync(() => progress.stop(`Disconnected from ${integration.name}`))),\n Effect.tapCause(() => Effect.sync(() => progress.stop(\"Failed to remove credential\", 1))),\n )\n outro(\"Done\")\n})\n\nconst chooseIntegration = Effect.fn(\"cli.auth.logout.integration\")(function* (\n integrations: IntegrationInfo[],\n target?: string,\n) {\n if (target) return yield* resolveIntegration(integrations, target)\n const configured = integrations.filter((integration) =>\n integration.connections.some((connection) => connection.type === \"credential\"),\n )\n if (configured.length === 0) return yield* Effect.fail(new Error(\"No stored credentials found\"))\n const id = yield* prompt<string>(() =>\n autocomplete({\n message: \"Select integration\",\n maxItems: 8,\n options: configured.map((integration) => ({\n value: integration.id,\n label: integration.name,\n hint: integration.connections\n .filter((connection) => connection.type === \"credential\")\n .map((connection) => connection.label)\n .join(\", \"),\n })),\n }),\n )\n return yield* resolveIntegration(configured, id)\n})\n" | ||
| ], | ||
| "mappings": ";2yCAQA,IAAe,IAAQ,QACrB,EAAS,SAAS,KAAK,SAAS,OAChC,EAAO,GAAG,iBAAiB,EAAE,CAAC,IAC5B,EAAO,CACL,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EAAE,KAAK,CAAkB,CAC5B,CACF,EAEM,EAAS,EAAO,GAAG,qBAAqB,EAAE,SAAU,CAAC,EAIxD,CACD,GAAI,CAAC,EAAM,OACT,MAAO,EAAmB,6EAA6E,EACzG,EAAM,mBAAmB,EACzB,IAAM,EAAS,MAAO,EAAa,CAAE,OAAQ,EAAM,OAAQ,WAAY,EAAM,UAAW,CAAC,EACnF,EAAe,MAAO,EAAiB,CAAM,EAC7C,EAAc,MAAO,EAAkB,EAAc,EAAM,MAAM,EACjE,EAAc,EAAY,YAAY,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACnG,GAAI,EAAY,SAAW,EAAG,CAC5B,IAAM,EAAc,EAAY,YAC7B,OAAO,CAAC,IAAe,EAAW,OAAS,KAAK,EAChD,IAAI,CAAC,IAAe,EAAW,IAAI,EACtC,GAAI,EAAY,OACd,MAAO,EAAO,KACR,MACF,GAAG,EAAY,iCAAiC,EAAY,KAAK,IAAI,iDACvE,CACF,EAEF,MAAO,EAAO,KAAS,MAAM,6BAA6B,EAAY,MAAM,CAAC,EAE/E,IAAM,EAAW,EAAQ,EACzB,EAAS,MAAM,wBAAwB,EACvC,MAAO,EAAO,QACZ,EACA,CAAC,IACC,EAAQ,CAAC,IAAW,EAAO,WAAW,OAAO,CAAE,aAAc,EAAW,GAAI,UAAS,EAAG,CAAE,QAAO,CAAC,CAAC,EACrG,CAAE,YAAa,YAAa,QAAS,EAAK,CAC5C,EAAE,KACA,EAAO,IAAI,IAAM,EAAO,KAAK,IAAM,EAAS,KAAK,qBAAqB,EAAY,MAAM,CAAC,CAAC,EAC1F,EAAO,SAAS,IAAM,EAAO,KAAK,IAAM,EAAS,KAAK,8BAA+B,CAAC,CAAC,CAAC,CAC1F,EACA,EAAM,MAAM,EACb,EAEK,EAAoB,EAAO,GAAG,6BAA6B,EAAE,SAAU,CAC3E,EACA,EACA,CACA,GAAI,EAAQ,OAAO,MAAO,EAAmB,EAAc,CAAM,EACjE,IAAM,EAAa,EAAa,OAAO,CAAC,IACtC,EAAY,YAAY,KAAK,CAAC,IAAe,EAAW,OAAS,YAAY,CAC/E,EACA,GAAI,EAAW,SAAW,EAAG,OAAO,MAAO,EAAO,KAAS,MAAM,6BAA6B,CAAC,EAC/F,IAAM,EAAK,MAAO,EAAe,IAC/B,EAAa,CACX,QAAS,qBACT,SAAU,EACV,QAAS,EAAW,IAAI,CAAC,KAAiB,CACxC,MAAO,EAAY,GACnB,MAAO,EAAY,KACnB,KAAM,EAAY,YACf,OAAO,CAAC,IAAe,EAAW,OAAS,YAAY,EACvD,IAAI,CAAC,IAAe,EAAW,KAAK,EACpC,KAAK,IAAI,CACd,EAAE,CACJ,CAAC,CACH,EACA,OAAO,MAAO,EAAmB,EAAY,CAAE,EAChD", | ||
| "debugId": "B8BA1734BEE20AF264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/import.ts"], | ||
| "sourcesContent": [ | ||
| "import { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Session } from \"@opencode-ai/schema/session\"\nimport { SessionTransfer } from \"@opencode-ai/schema/session-transfer\"\nimport { Effect, Option, Schema } from \"effect\"\nimport { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.import,\n Effect.fn(\"cli.import\")(function* (input) {\n const text = yield* Effect.tryPromise({\n try: () =>\n input.file.startsWith(\"http://\") || input.file.startsWith(\"https://\")\n ? fetch(input.file).then((response) => {\n if (!response.ok) throw new Error(`Failed to fetch session data: ${response.statusText}`)\n return response.text()\n })\n : Bun.file(input.file).text(),\n catch: (cause) =>\n new Error(`Failed to read session data: ${cause instanceof Error ? cause.message : String(cause)}`),\n })\n const data = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(SessionTransfer.Data))(text)\n const encoded = Schema.encodeSync(SessionTransfer.Data)(data)\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({\n baseUrl: server.endpoint.url,\n headers: Service.headers(server.endpoint),\n })\n const location = yield* Effect.promise(() =>\n client.location.get({\n location: { directory: path.resolve(Option.getOrElse(input.directory, () => process.cwd())) },\n }),\n )\n const response = yield* Effect.promise(() =>\n fetch(new URL(\"/api/session/import\", server.endpoint.url), {\n method: \"POST\",\n headers: { ...Service.headers(server.endpoint), \"content-type\": \"application/json\" },\n body: JSON.stringify({\n ...encoded,\n location: { directory: location.directory, workspaceID: location.workspaceID },\n }),\n }),\n )\n if (response.status === 409) {\n process.stderr.write(`Session already exists${EOL}`)\n return\n }\n if (!response.ok) yield* Effect.fail(new Error(`Failed to import session: ${response.statusText}`))\n const imported = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.Struct({ data: Session.Info })))(\n yield* Effect.promise(() => response.text()),\n )\n process.stdout.write(`Imported session: ${imported.data.id}${EOL}`)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";03CAKA,cAAS,WACT,oBAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,OAClB,EAAO,GAAG,YAAY,EAAE,SAAU,CAAC,EAAO,CACxC,IAAM,EAAO,MAAO,EAAO,WAAW,CACpC,IAAK,IACH,EAAM,KAAK,WAAW,SAAS,GAAK,EAAM,KAAK,WAAW,UAAU,EAChE,MAAM,EAAM,IAAI,EAAE,KAAK,CAAC,IAAa,CACnC,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,iCAAiC,EAAS,YAAY,EACxF,OAAO,EAAS,KAAK,EACtB,EACD,IAAI,KAAK,EAAM,IAAI,EAAE,KAAK,EAChC,MAAO,CAAC,IACF,MAAM,gCAAgC,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAAG,CACtG,CAAC,EACK,EAAO,MAAO,EAAO,oBAAoB,EAAO,eAAe,EAAgB,IAAI,CAAC,EAAE,CAAI,EAC1F,EAAU,EAAO,WAAW,EAAgB,IAAI,EAAE,CAAI,EACtD,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,WAAY,EAAM,UACpB,CAAC,EACK,EAAS,EAAS,KAAK,CAC3B,QAAS,EAAO,SAAS,IACzB,QAAS,EAAQ,QAAQ,EAAO,QAAQ,CAC1C,CAAC,EACK,EAAW,MAAO,EAAO,QAAQ,IACrC,EAAO,SAAS,IAAI,CAClB,SAAU,CAAE,UAAW,EAAK,QAAQ,EAAO,UAAU,EAAM,UAAW,IAAM,QAAQ,IAAI,CAAC,CAAC,CAAE,CAC9F,CAAC,CACH,EACM,EAAW,MAAO,EAAO,QAAQ,IACrC,MAAM,IAAI,IAAI,sBAAuB,EAAO,SAAS,GAAG,EAAG,CACzD,OAAQ,OACR,QAAS,IAAK,EAAQ,QAAQ,EAAO,QAAQ,EAAG,eAAgB,kBAAmB,EACnF,KAAM,KAAK,UAAU,IAChB,EACH,SAAU,CAAE,UAAW,EAAS,UAAW,YAAa,EAAS,WAAY,CAC/E,CAAC,CACH,CAAC,CACH,EACA,GAAI,EAAS,SAAW,IAAK,CAC3B,QAAQ,OAAO,MAAM,yBAAyB,GAAK,EACnD,OAEF,GAAI,CAAC,EAAS,GAAI,MAAO,EAAO,KAAS,MAAM,6BAA6B,EAAS,YAAY,CAAC,EAClG,IAAM,EAAW,MAAO,EAAO,oBAAoB,EAAO,eAAe,EAAO,OAAO,CAAE,KAAM,EAAQ,IAAK,CAAC,CAAC,CAAC,EAC7G,MAAO,EAAO,QAAQ,IAAM,EAAS,KAAK,CAAC,CAC7C,EACA,QAAQ,OAAO,MAAM,qBAAqB,EAAS,KAAK,KAAK,GAAK,EACnE,CACH", | ||
| "debugId": "D784A777A243D34464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/createCredentialChain.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js", "../../node_modules/.bun/@aws-sdk+credential-provider-cognito-identity@3.972.68/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentity.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromContainerMetadata.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromEnv.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromIni.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromInstanceMetadata.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromLoginCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js", "../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.80/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromNodeProviderChain.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromProcess.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromSSO.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTemporaryCredentials.base.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromTokenFile.js", "../../node_modules/.bun/@aws-sdk+credential-providers@3.1057.0/node_modules/@aws-sdk/credential-providers/dist-es/fromWebToken.js"], | ||
| "sourcesContent": [ | ||
| "import { ProviderError } from \"@smithy/core/config\";\nexport const createCredentialChain = (...credentialProviders) => {\n let expireAfter = -1;\n const baseFunction = async (awsIdentityProperties) => {\n const credentials = await propertyProviderChain(...credentialProviders)(awsIdentityProperties);\n if (!credentials.expiration && expireAfter !== -1) {\n credentials.expiration = new Date(Date.now() + expireAfter);\n }\n return credentials;\n };\n const withOptions = Object.assign(baseFunction, {\n expireAfter(milliseconds) {\n if (milliseconds < 5 * 60_000) {\n throw new Error(\"@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes.\");\n }\n expireAfter = milliseconds;\n return withOptions;\n },\n });\n return withOptions;\n};\nexport const propertyProviderChain = (...providers) => async (awsIdentityProperties) => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\", { tryNextLink: false });\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n return await provider(awsIdentityProperties);\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentity(parameters) {\n return async (awsIdentityProperties) => {\n parameters.logger?.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity.js\");\n const fromConfigs = (property) => parameters.clientConfig?.[property] ??\n parameters.parentClientConfig?.[property] ??\n awsIdentityProperties?.callerClientConfig?.[property];\n const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters.logger), SessionToken, } = throwOnMissingCredentials(parameters.logger), } = await (parameters.client ??\n new CognitoIdentityClient(Object.assign({}, parameters.clientConfig ?? {}, {\n region: fromConfigs(\"region\"),\n profile: fromConfigs(\"profile\"),\n userAgentAppId: fromConfigs(\"userAgentAppId\"),\n }))).send(new GetCredentialsForIdentityCommand({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined,\n }));\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n };\n };\n}\nfunction throwOnMissingAccessKeyId(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\", { logger });\n}\nfunction throwOnMissingCredentials(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\", { logger });\n}\nfunction throwOnMissingSecretKey(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\", { logger });\n}\n", | ||
| "export function resolveLogins(logins) {\n return Promise.all(Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n }\n else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])).then((resolvedPairs) => resolvedPairs.reduce((logins, [key, value]) => {\n logins[key] = value;\n return logins;\n }, {}));\n}\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { fromCognitoIdentity } from \"./fromCognitoIdentity\";\nimport { localStorage } from \"./localStorage\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentityPool({ accountId, cache = localStorage(), client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : undefined, logger, parentClientConfig, }) {\n logger?.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const cacheKey = userIdentifier\n ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}`\n : undefined;\n let provider = async (awsIdentityProperties) => {\n const { GetIdCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity.js\");\n const fromConfigs = (property) => clientConfig?.[property] ??\n parentClientConfig?.[property] ??\n awsIdentityProperties?.callerClientConfig?.[property];\n const _client = client ??\n new CognitoIdentityClient(Object.assign({}, clientConfig ?? {}, {\n region: fromConfigs(\"region\"),\n profile: fromConfigs(\"profile\"),\n userAgentAppId: fromConfigs(\"userAgentAppId\"),\n }));\n let identityId = (cacheKey && (await cache.getItem(cacheKey)));\n if (!identityId) {\n const { IdentityId = throwOnMissingId(logger) } = await _client.send(new GetIdCommand({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : undefined,\n }));\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => { });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId,\n });\n return provider(awsIdentityProperties);\n };\n return (awsIdentityProperties) => provider(awsIdentityProperties).catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => { });\n }\n throw err;\n });\n}\nfunction throwOnMissingId(logger) {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\", { logger });\n}\n", | ||
| "const STORE_NAME = \"IdentityIds\";\nexport class IndexedDbStorage {\n dbName;\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n}\n", | ||
| "export class InMemoryStorage {\n store;\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n}\n", | ||
| "import { IndexedDbStorage } from \"./IndexedDbStorage\";\nimport { InMemoryStorage } from \"./InMemoryStorage\";\nconst inMemoryStorage = new InMemoryStorage();\nexport function localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n", | ||
| "import { fromCognitoIdentity as _fromCognitoIdentity } from \"@aws-sdk/credential-provider-cognito-identity\";\nexport const fromCognitoIdentity = (options) => _fromCognitoIdentity({\n ...options,\n});\n", | ||
| "import { fromCognitoIdentityPool as _fromCognitoIdentityPool } from \"@aws-sdk/credential-provider-cognito-identity\";\nexport const fromCognitoIdentityPool = (options) => _fromCognitoIdentityPool({\n ...options,\n});\n", | ||
| "import { fromContainerMetadata as _fromContainerMetadata } from \"@smithy/credential-provider-imds\";\nexport const fromContainerMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return _fromContainerMetadata(init);\n};\n", | ||
| "import { fromEnv as _fromEnv } from \"@aws-sdk/credential-provider-env\";\nexport const fromEnv = (init) => _fromEnv(init);\n", | ||
| "import { fromIni as _fromIni } from \"@aws-sdk/credential-provider-ini\";\nexport const fromIni = (init = {}) => _fromIni({\n ...init,\n});\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { fromInstanceMetadata as _fromInstanceMetadata } from \"@smithy/credential-provider-imds\";\nexport const fromInstanceMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return async () => _fromInstanceMetadata(init)().then((creds) => setCredentialFeature(creds, \"CREDENTIALS_IMDS\", \"0\"));\n};\n", | ||
| "import { fromLoginCredentials as _fromLoginCredentials, } from \"@aws-sdk/credential-provider-login\";\nexport const fromLoginCredentials = (init) => _fromLoginCredentials({\n ...init,\n});\n", | ||
| "import { ENV_KEY, ENV_SECRET, fromEnv } from \"@aws-sdk/credential-provider-env\";\nimport { CredentialsProviderError, ENV_PROFILE } from \"@smithy/core/config\";\nimport { remoteProvider } from \"./remoteProvider\";\nimport { memoizeChain } from \"./runtime/memoize-chain\";\nlet multipleCredentialSourceWarningEmitted = false;\nexport const defaultProvider = (init = {}) => memoizeChain([\n async () => {\n const profile = init.profile ?? process.env[ENV_PROFILE];\n if (profile) {\n const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET];\n if (envStaticCredentialsAreSet) {\n if (!multipleCredentialSourceWarningEmitted) {\n const warnFn = init.logger?.warn && init.logger?.constructor?.name !== \"NoOpLogger\"\n ? init.logger.warn.bind(init.logger)\n : console.warn;\n warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n Multiple credential sources detected: \n Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n This SDK will proceed with the AWS_PROFILE value.\n \n However, a future version may change this behavior to prefer the ENV static credentials.\n Please ensure that your environment only sets either the AWS_PROFILE or the\n AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`);\n multipleCredentialSourceWarningEmitted = true;\n }\n }\n throw new CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n logger: init.logger,\n tryNextLink: true,\n });\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n return fromEnv(init)();\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new CredentialsProviderError(\"Skipping SSO provider in default chain (inputs do not include SSO fields).\", { logger: init.logger });\n }\n const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n return fromSSO(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n const { fromIni } = await import(\"@aws-sdk/credential-provider-ini\");\n return fromIni(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n return fromProcess(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n return fromTokenFile(init)(awsIdentityProperties);\n },\n async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new CredentialsProviderError(\"Could not load credentials from any providers\", {\n tryNextLink: false,\n logger: init.logger,\n });\n },\n], credentialsTreatedAsExpired);\nexport const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined;\nexport const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;\n", | ||
| "import { chain, CredentialsProviderError } from \"@smithy/core/config\";\nexport const ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexport const remoteProvider = async (init) => {\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n return chain(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== \"false\") {\n return async () => {\n throw new CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n };\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n};\n", | ||
| "export function memoizeChain(providers, treatAsExpired) {\n const chain = internalCreateChain(providers);\n let activeLock;\n let passiveLock;\n let credentials;\n let forceRefreshLock;\n const provider = async (options) => {\n if (options?.forceRefresh) {\n if (!forceRefreshLock) {\n forceRefreshLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n forceRefreshLock = undefined;\n });\n }\n await forceRefreshLock;\n return credentials;\n }\n if (credentials?.expiration) {\n if (credentials?.expiration?.getTime() < Date.now()) {\n credentials = undefined;\n }\n }\n if (activeLock) {\n await activeLock;\n }\n else if (!credentials || treatAsExpired?.(credentials)) {\n if (credentials) {\n if (!passiveLock) {\n passiveLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n passiveLock = undefined;\n });\n }\n }\n else {\n activeLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n activeLock = undefined;\n });\n return provider(options);\n }\n }\n return credentials;\n };\n return provider;\n}\nexport const internalCreateChain = (providers) => async (awsIdentityProperties) => {\n let lastProviderError;\n for (const provider of providers) {\n try {\n return await provider(awsIdentityProperties);\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n", | ||
| "import { defaultProvider } from \"@aws-sdk/credential-provider-node\";\nexport const fromNodeProviderChain = (init = {}) => defaultProvider({\n ...init,\n});\n", | ||
| "import { fromProcess as _fromProcess } from \"@aws-sdk/credential-provider-process\";\nexport const fromProcess = (init) => _fromProcess(init);\n", | ||
| "import { fromSSO as _fromSSO } from \"@aws-sdk/credential-provider-sso\";\nexport const fromSSO = (init = {}) => {\n return _fromSSO({ ...init });\n};\n", | ||
| "import { loadConfig, NODE_REGION_CONFIG_FILE_OPTIONS } from \"@smithy/core/config\";\nimport { fromNodeProviderChain } from \"./fromNodeProviderChain\";\nimport { fromTemporaryCredentials as fromTemporaryCredentialsBase } from \"./fromTemporaryCredentials.base\";\nexport const fromTemporaryCredentials = (options) => {\n return fromTemporaryCredentialsBase(options, fromNodeProviderChain, async ({ profile = process.env.AWS_PROFILE }) => loadConfig({\n environmentVariableSelector: (env) => env.AWS_REGION,\n configFileSelector: (profileData) => {\n return profileData.region;\n },\n default: () => undefined,\n }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, profile })());\n};\n", | ||
| "import { normalizeProvider } from \"@smithy/core\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nconst ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nexport const fromTemporaryCredentials = (options, credentialDefaultProvider, regionProvider) => {\n let stsClient;\n return async (awsIdentityProperties = {}) => {\n const { callerClientConfig } = awsIdentityProperties;\n const profile = options.clientConfig?.profile ?? callerClientConfig?.profile;\n const logger = options.logger ?? callerClientConfig?.logger;\n logger?.debug(\"@aws-sdk/credential-providers - fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? \"aws-sdk-js-\" + Date.now() };\n if (params?.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new CredentialsProviderError(`Temporary credential requires multi-factor authentication, but no MFA code callback was provided.`, {\n tryNextLink: false,\n logger,\n });\n }\n params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await import(\"./loadSts.js\");\n if (!stsClient) {\n const defaultCredentialsOrError = typeof credentialDefaultProvider === \"function\" ? credentialDefaultProvider() : undefined;\n const credentialSources = [\n options.masterCredentials,\n options.clientConfig?.credentials,\n void callerClientConfig?.credentials,\n callerClientConfig?.credentialDefaultProvider?.(),\n defaultCredentialsOrError,\n ];\n let credentialSource = \"STS client default credentials\";\n if (credentialSources[0]) {\n credentialSource = \"options.masterCredentials\";\n }\n else if (credentialSources[1]) {\n credentialSource = \"options.clientConfig.credentials\";\n }\n else if (credentialSources[2]) {\n credentialSource = \"caller client's credentials\";\n throw new Error(\"fromTemporaryCredentials recursion in callerClientConfig.credentials\");\n }\n else if (credentialSources[3]) {\n credentialSource = \"caller client's credentialDefaultProvider\";\n }\n else if (credentialSources[4]) {\n credentialSource = \"AWS SDK default credentials\";\n }\n const regionSources = [\n options.clientConfig?.region,\n callerClientConfig?.region,\n await regionProvider?.({\n profile,\n }),\n ASSUME_ROLE_DEFAULT_REGION,\n ];\n let regionSource = \"default partition's default region\";\n if (regionSources[0]) {\n regionSource = \"options.clientConfig.region\";\n }\n else if (regionSources[1]) {\n regionSource = \"caller client's region\";\n }\n else if (regionSources[2]) {\n regionSource = \"file or env region\";\n }\n const requestHandlerSources = [\n filterRequestHandler(options.clientConfig?.requestHandler),\n filterRequestHandler(callerClientConfig?.requestHandler),\n ];\n let requestHandlerSource = \"STS default requestHandler\";\n if (requestHandlerSources[0]) {\n requestHandlerSource = \"options.clientConfig.requestHandler\";\n }\n else if (requestHandlerSources[1]) {\n requestHandlerSource = \"caller client's requestHandler\";\n }\n logger?.debug?.(`@aws-sdk/credential-providers - fromTemporaryCredentials STS client init with ` +\n `${regionSource}=${await normalizeProvider(coalesce(regionSources))()}, ${credentialSource}, ${requestHandlerSource}.`);\n stsClient = new STSClient({\n userAgentAppId: callerClientConfig?.userAgentAppId,\n ...options.clientConfig,\n credentials: coalesce(credentialSources),\n logger,\n profile,\n region: coalesce(regionSources),\n requestHandler: coalesce(requestHandlerSources),\n });\n }\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, {\n logger,\n });\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nconst filterRequestHandler = (requestHandler) => {\n return requestHandler?.metadata?.handlerProtocol === \"h2\" ? undefined : requestHandler;\n};\nconst coalesce = (args) => {\n for (const item of args) {\n if (item !== undefined) {\n return item;\n }\n }\n};\n", | ||
| "import { fromTokenFile as _fromTokenFile } from \"@aws-sdk/credential-provider-web-identity\";\nexport const fromTokenFile = (init = {}) => _fromTokenFile({\n ...init,\n});\n", | ||
| "import { fromWebToken as _fromWebToken } from \"@aws-sdk/credential-provider-web-identity\";\nexport const fromWebToken = (init) => _fromWebToken({\n ...init,\n});\n" | ||
| ], | ||
| "mappings": ";+rBAAA,eACa,GAAwB,IAAI,IAAwB,CAC7D,IAAI,EAAc,GAQZ,EAAc,OAAO,OAPN,MAAO,IAA0B,CAClD,IAAM,EAAc,MAAM,GAAsB,GAAG,CAAmB,EAAE,CAAqB,EAC7F,GAAI,CAAC,EAAY,YAAc,IAAgB,GAC3C,EAAY,WAAa,IAAI,KAAK,KAAK,IAAI,EAAI,CAAW,EAE9D,OAAO,GAEqC,CAC5C,WAAW,CAAC,EAAc,CACtB,GAAI,EAAe,OACf,MAAU,MAAM,uIAAuI,EAG3J,OADA,EAAc,EACP,EAEf,CAAC,EACD,OAAO,GAEE,GAAwB,IAAI,IAAc,MAAO,IAA0B,CACpF,GAAI,EAAU,SAAW,EACrB,MAAM,IAAI,gBAAc,wBAAyB,CAAE,YAAa,EAAM,CAAC,EAE3E,IAAI,EACJ,QAAW,KAAY,EACnB,GAAI,CACA,OAAO,MAAM,EAAS,CAAqB,EAE/C,MAAO,EAAK,CAER,GADA,EAAoB,EAChB,GAAK,YACL,SAEJ,MAAM,EAGd,MAAM,GCtCV,eCAO,SAAS,CAAa,CAAC,EAAQ,CAClC,OAAO,QAAQ,IAAI,OAAO,KAAK,CAAM,EAAE,OAAO,CAAC,EAAK,IAAS,CACzD,IAAM,EAAkB,EAAO,GAC/B,GAAI,OAAO,IAAoB,SAC3B,EAAI,KAAK,CAAC,EAAM,CAAe,CAAC,EAGhC,OAAI,KAAK,EAAgB,EAAE,KAAK,CAAC,IAAU,CAAC,EAAM,CAAK,CAAC,CAAC,EAE7D,OAAO,GACR,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAkB,EAAc,OAAO,CAAC,GAAS,EAAK,MAChE,EAAO,GAAO,EACP,GACR,CAAC,CAAC,CAAC,EDXH,SAAS,CAAmB,CAAC,EAAY,CAC5C,MAAO,OAAO,IAA0B,CACpC,EAAW,QAAQ,MAAM,qEAAqE,EAC9F,IAAQ,mCAAkC,yBAA0B,KAAa,0CAC3E,EAAc,CAAC,IAAa,EAAW,eAAe,IACxD,EAAW,qBAAqB,IAChC,GAAuB,qBAAqB,IACxC,aAAe,cAAc,GAA0B,EAAW,MAAM,EAAG,aAAY,YAAY,GAAwB,EAAW,MAAM,EAAG,gBAAkB,GAA0B,EAAW,MAAM,GAAO,MAAO,EAAW,QACzO,IAAI,EAAsB,OAAO,OAAO,CAAC,EAAG,EAAW,cAAgB,CAAC,EAAG,CACvE,OAAQ,EAAY,QAAQ,EAC5B,QAAS,EAAY,SAAS,EAC9B,eAAgB,EAAY,gBAAgB,CAChD,CAAC,CAAC,GAAG,KAAK,IAAI,EAAiC,CAC/C,cAAe,EAAW,cAC1B,WAAY,EAAW,WACvB,OAAQ,EAAW,OAAS,MAAM,EAAc,EAAW,MAAM,EAAI,MACzE,CAAC,CAAC,EACF,MAAO,CACH,WAAY,EAAW,WACvB,YAAa,EACb,gBAAiB,EACjB,aAAc,EACd,WAAY,CAChB,GAGR,SAAS,EAAyB,CAAC,EAAQ,CACvC,MAAM,IAAI,2BAAyB,0DAA2D,CAAE,QAAO,CAAC,EAE5G,SAAS,EAAyB,CAAC,EAAQ,CACvC,MAAM,IAAI,2BAAyB,wDAAyD,CAAE,QAAO,CAAC,EAE1G,SAAS,EAAuB,CAAC,EAAQ,CACrC,MAAM,IAAI,2BAAyB,uDAAwD,CAAE,QAAO,CAAC,EEnCzG,eCCO,MAAM,CAAiB,CAC1B,OACA,WAAW,CAAC,EAAS,2BAA4B,CAC7C,KAAK,OAAS,EAElB,OAAO,CAAC,EAAK,CACT,OAAO,KAAK,gBAAgB,WAAY,CAAC,IAAU,CAC/C,IAAM,EAAM,EAAM,IAAI,CAAG,EACzB,OAAO,IAAI,QAAQ,CAAC,IAAY,CAC5B,EAAI,QAAU,IAAM,EAAQ,IAAI,EAChC,EAAI,UAAY,IAAM,EAAQ,EAAI,OAAS,EAAI,OAAO,MAAQ,IAAI,EACrE,EACJ,EAAE,MAAM,IAAM,IAAI,EAEvB,UAAU,CAAC,EAAK,CACZ,OAAO,KAAK,gBAAgB,YAAa,CAAC,IAAU,CAChD,IAAM,EAAM,EAAM,OAAO,CAAG,EAC5B,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACpC,EAAI,QAAU,IAAM,EAAO,EAAI,KAAK,EACpC,EAAI,UAAY,IAAM,EAAQ,EACjC,EACJ,EAEL,OAAO,CAAC,EAAI,EAAO,CACf,OAAO,KAAK,gBAAgB,YAAa,CAAC,IAAU,CAChD,IAAM,EAAM,EAAM,IAAI,CAAE,KAAI,OAAM,CAAC,EACnC,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACpC,EAAI,QAAU,IAAM,EAAO,EAAI,KAAK,EACpC,EAAI,UAAY,IAAM,EAAQ,EACjC,EACJ,EAEL,KAAK,EAAG,CACJ,IAAM,EAAgB,KAAK,UAAU,KAAK,KAAK,OAAQ,CAAC,EACxD,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACpC,EAAc,UAAY,IAAM,CAC5B,EAAQ,EAAc,MAAM,GAEhC,EAAc,QAAU,IAAM,CAC1B,EAAO,EAAc,KAAK,GAE9B,EAAc,UAAY,IAAM,CAC5B,EAAW,MAAM,qBAAqB,CAAC,GAE3C,EAAc,gBAAkB,IAAM,CAClC,IAAM,EAAK,EAAc,OACzB,EAAG,QAAU,IAAM,CACf,EAAW,MAAM,+BAA+B,CAAC,GAErD,EAAG,kBAlDA,cAkD8B,CAAE,QAAS,IAAK,CAAC,GAEzD,EAEL,eAAe,CAAC,EAAM,EAAQ,CAC1B,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,IAAO,CAC7B,IAAM,EAAK,EAAG,YAxDP,cAwD+B,CAAI,EAE1C,OADA,EAAG,WAAa,IAAM,EAAG,MAAM,EACxB,IAAI,QAAQ,CAAC,EAAS,IAAW,CACpC,EAAG,QAAU,IAAM,EAAO,EAAG,KAAK,EAClC,EAAQ,EAAO,EAAG,YA5Df,aA4DqC,CAAC,CAAC,EAC7C,EAAE,MAAM,CAAC,IAAQ,CAEd,MADA,EAAG,MAAM,EACH,EACT,EACJ,EAET,CCnEO,MAAM,CAAgB,CACzB,MACA,WAAW,CAAC,EAAQ,CAAC,EAAG,CACpB,KAAK,MAAQ,EAEjB,OAAO,CAAC,EAAK,CACT,GAAI,KAAO,KAAK,MACZ,OAAO,KAAK,MAAM,GAEtB,OAAO,KAEX,UAAU,CAAC,EAAK,CACZ,OAAO,KAAK,MAAM,GAEtB,OAAO,CAAC,EAAK,EAAO,CAChB,KAAK,MAAM,GAAO,EAE1B,CCfA,IAAM,GAAkB,IAAI,EACrB,SAAS,CAAY,EAAG,CAC3B,GAAI,OAAO,OAAS,UAAY,KAAK,UACjC,OAAO,IAAI,EAEf,GAAI,OAAO,SAAW,UAAY,OAAO,aACrC,OAAO,OAAO,aAElB,OAAO,GHNJ,SAAS,CAAuB,EAAG,YAAW,QAAQ,EAAa,EAAG,SAAQ,eAAc,gBAAe,iBAAgB,SAAQ,iBAAiB,CAAC,GAAU,OAAO,KAAK,CAAM,EAAE,SAAW,EAAI,YAAc,OAAW,SAAQ,sBAAuB,CAC7P,GAAQ,MAAM,qEAAqE,EACnF,IAAM,EAAW,EACX,oCAAoC,KAAkB,IACtD,OACF,EAAW,MAAO,IAA0B,CAC5C,IAAQ,eAAc,yBAA0B,KAAa,0CACvD,EAAc,CAAC,IAAa,IAAe,IAC7C,IAAqB,IACrB,GAAuB,qBAAqB,GAC1C,EAAU,GACZ,IAAI,EAAsB,OAAO,OAAO,CAAC,EAAG,GAAgB,CAAC,EAAG,CAC5D,OAAQ,EAAY,QAAQ,EAC5B,QAAS,EAAY,SAAS,EAC9B,eAAgB,EAAY,gBAAgB,CAChD,CAAC,CAAC,EACF,EAAc,GAAa,MAAM,EAAM,QAAQ,CAAQ,EAC3D,GAAI,CAAC,EAAY,CACb,IAAQ,aAAa,GAAiB,CAAM,GAAM,MAAM,EAAQ,KAAK,IAAI,EAAa,CAClF,UAAW,EACX,eAAgB,EAChB,OAAQ,EAAS,MAAM,EAAc,CAAM,EAAI,MACnD,CAAC,CAAC,EAEF,GADA,EAAa,EACT,EACA,QAAQ,QAAQ,EAAM,QAAQ,EAAU,CAAU,CAAC,EAAE,MAAM,IAAM,EAAG,EAS5E,OANA,EAAW,EAAoB,CAC3B,OAAQ,EACR,gBACA,SACA,YACJ,CAAC,EACM,EAAS,CAAqB,GAEzC,MAAO,CAAC,IAA0B,EAAS,CAAqB,EAAE,MAAM,MAAO,IAAQ,CACnF,GAAI,EACA,QAAQ,QAAQ,EAAM,WAAW,CAAQ,CAAC,EAAE,MAAM,IAAM,EAAG,EAE/D,MAAM,EACT,EAEL,SAAS,EAAgB,CAAC,EAAQ,CAC9B,MAAM,IAAI,2BAAyB,wDAAyD,CAAE,QAAO,CAAC,EI/CnG,IAAM,GAAsB,CAAC,IAAY,EAAqB,IAC9D,CACP,CAAC,ECFM,IAAM,GAA0B,CAAC,IAAY,EAAyB,IACtE,CACP,CAAC,ECFM,IAAM,GAAwB,CAAC,KAClC,GAAM,QAAQ,MAAM,mCAAoC,uBAAuB,EACxE,EAAuB,CAAI,GCF/B,IAAM,GAAU,CAAC,IAAS,EAAS,CAAI,ECAvC,IAAM,GAAU,CAAC,EAAO,CAAC,IAAM,EAAS,IACxC,CACP,CAAC,ECHD,gBAEO,IAAM,GAAuB,CAAC,KACjC,GAAM,QAAQ,MAAM,mCAAoC,sBAAsB,EACvE,SAAY,EAAsB,CAAI,EAAE,EAAE,KAAK,CAAC,IAAU,uBAAqB,EAAO,mBAAoB,GAAG,CAAC,GCHlH,IAAM,GAAuB,CAAC,IAAS,EAAsB,IAC7D,CACP,CAAC,ECFD,eCDA,eACa,EAAoB,4BACpB,EAAiB,MAAO,IAAS,CAC1C,IAAQ,oBAAmB,wBAAuB,wBAAuB,wBAAyB,KAAa,0CAC/G,GAAI,QAAQ,IAAI,IAA0B,QAAQ,IAAI,GAAoB,CACtE,EAAK,QAAQ,MAAM,oFAAoF,EACvG,IAAQ,YAAa,KAAa,0CAClC,OAAO,QAAM,EAAS,CAAI,EAAG,EAAsB,CAAI,CAAC,EAE5D,GAAI,QAAQ,IAAI,IAAsB,QAAQ,IAAI,KAAuB,QACrE,MAAO,UAAY,CACf,MAAM,IAAI,2BAAyB,gDAAiD,CAAE,OAAQ,EAAK,MAAO,CAAC,GAInH,OADA,EAAK,QAAQ,MAAM,0EAA0E,EACtF,EAAqB,CAAI,GCf7B,SAAS,CAAY,CAAC,EAAW,EAAgB,CACpD,IAAM,EAAQ,GAAoB,CAAS,EACvC,EACA,EACA,EACA,EACE,EAAW,MAAO,IAAY,CAChC,GAAI,GAAS,aAAc,CACvB,GAAI,CAAC,EACD,EAAmB,EAAM,CAAO,EAC3B,KAAK,CAAC,IAAM,CACb,EAAc,EACjB,EACI,QAAQ,IAAM,CACf,EAAmB,OACtB,EAGL,OADA,MAAM,EACC,EAEX,GAAI,GAAa,YACb,GAAI,GAAa,YAAY,QAAQ,EAAI,KAAK,IAAI,EAC9C,EAAc,OAGtB,GAAI,EACA,MAAM,EAEL,QAAI,CAAC,GAAe,IAAiB,CAAW,EACjD,GAAI,GACA,GAAI,CAAC,EACD,EAAc,EAAM,CAAO,EACtB,KAAK,CAAC,IAAM,CACb,EAAc,EACjB,EACI,QAAQ,IAAM,CACf,EAAc,OACjB,EAWL,YAPA,EAAa,EAAM,CAAO,EACrB,KAAK,CAAC,IAAM,CACb,EAAc,EACjB,EACI,QAAQ,IAAM,CACf,EAAa,OAChB,EACM,EAAS,CAAO,EAG/B,OAAO,GAEX,OAAO,EAEJ,IAAM,GAAsB,CAAC,IAAc,MAAO,IAA0B,CAC/E,IAAI,EACJ,QAAW,KAAY,EACnB,GAAI,CACA,OAAO,MAAM,EAAS,CAAqB,EAE/C,MAAO,EAAK,CAER,GADA,EAAoB,EAChB,GAAK,YACL,SAEJ,MAAM,EAGd,MAAM,GFjEV,IAAI,EAAyC,GAChC,EAAkB,CAAC,EAAO,CAAC,IAAM,EAAa,CACvD,SAAY,CAER,GADgB,EAAK,SAAW,QAAQ,IAAI,eAC/B,CAET,GADmC,QAAQ,IAAI,IAAY,QAAQ,IAAI,IAEnE,GAAI,CAAC,GACc,EAAK,QAAQ,MAAQ,EAAK,QAAQ,aAAa,OAAS,aACjE,EAAK,OAAO,KAAK,KAAK,EAAK,MAAM,EACjC,QAAQ,MACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAQ1B,EACmB,EAAyC,GAGjD,MAAM,IAAI,2BAAyB,iDAAkD,CACjF,OAAQ,EAAK,OACb,YAAa,EACjB,CAAC,EAGL,OADA,EAAK,QAAQ,MAAM,8DAA8D,EAC1E,EAAQ,CAAI,EAAE,GAEzB,MAAO,IAA0B,CAC7B,EAAK,QAAQ,MAAM,8DAA8D,EACjF,IAAQ,cAAa,eAAc,YAAW,cAAa,cAAe,EAC1E,GAAI,CAAC,GAAe,CAAC,GAAgB,CAAC,GAAa,CAAC,GAAe,CAAC,EAChE,MAAM,IAAI,2BAAyB,6EAA8E,CAAE,OAAQ,EAAK,MAAO,CAAC,EAE5I,IAAQ,WAAY,KAAa,0CACjC,OAAO,EAAQ,CAAI,EAAE,CAAqB,GAE9C,MAAO,IAA0B,CAC7B,EAAK,QAAQ,MAAM,8DAA8D,EACjF,IAAQ,WAAY,KAAa,0CACjC,OAAO,EAAQ,CAAI,EAAE,CAAqB,GAE9C,MAAO,IAA0B,CAC7B,EAAK,QAAQ,MAAM,kEAAkE,EACrF,IAAQ,eAAgB,KAAa,0CACrC,OAAO,EAAY,CAAI,EAAE,CAAqB,GAElD,MAAO,IAA0B,CAC7B,EAAK,QAAQ,MAAM,oEAAoE,EACvF,IAAQ,iBAAkB,KAAa,0CACvC,OAAO,EAAc,CAAI,EAAE,CAAqB,GAEpD,UACI,EAAK,QAAQ,MAAM,qEAAqE,GAChF,MAAM,EAAe,CAAI,GAAG,GAExC,SAAY,CACR,MAAM,IAAI,2BAAyB,gDAAiD,CAChF,YAAa,GACb,OAAQ,EAAK,MACjB,CAAC,EAET,EAAG,CAA2B,EAEvB,IAAM,EAA8B,CAAC,IAAgB,GAAa,aAAe,QAAa,EAAY,WAAW,QAAQ,EAAI,KAAK,IAAI,EAAI,OGtE9I,IAAM,EAAwB,CAAC,EAAO,CAAC,IAAM,EAAgB,IAC7D,CACP,CAAC,ECFM,IAAM,GAAc,CAAC,IAAS,EAAa,CAAI,ECA/C,IAAM,GAAU,CAAC,EAAO,CAAC,IACrB,EAAS,IAAK,CAAK,CAAC,ECF/B,eCAA,iBACA,WACM,GAA6B,YACtB,GAA2B,CAAC,EAAS,EAA2B,IAAmB,CAC5F,IAAI,EACJ,MAAO,OAAO,EAAwB,CAAC,IAAM,CACzC,IAAQ,sBAAuB,EACzB,EAAU,EAAQ,cAAc,SAAW,GAAoB,QAC/D,EAAS,EAAQ,QAAU,GAAoB,OACrD,GAAQ,MAAM,gEAAgE,EAC9E,IAAM,EAAS,IAAK,EAAQ,OAAQ,gBAAiB,EAAQ,OAAO,iBAAmB,cAAgB,KAAK,IAAI,CAAE,EAClH,GAAI,GAAQ,aAAc,CACtB,GAAI,CAAC,EAAQ,gBACT,MAAM,IAAI,2BAAyB,oGAAqG,CACpI,YAAa,GACb,QACJ,CAAC,EAEL,EAAO,UAAY,MAAM,EAAQ,gBAAgB,GAAQ,YAAY,EAEzE,IAAQ,oBAAmB,aAAc,KAAa,0CACtD,GAAI,CAAC,EAAW,CACZ,IAAM,EAA4B,OAAO,IAA8B,WAAa,EAA0B,EAAI,OAC5G,EAAoB,CACtB,EAAQ,kBACR,EAAQ,cAAc,YACtB,KAAK,GAAoB,YACzB,GAAoB,4BAA4B,EAChD,CACJ,EACI,EAAmB,iCACvB,GAAI,EAAkB,GAClB,EAAmB,4BAElB,QAAI,EAAkB,GACvB,EAAmB,mCAElB,QAAI,EAAkB,GAEvB,MADA,EAAmB,8BACT,MAAM,sEAAsE,EAErF,QAAI,EAAkB,GACvB,EAAmB,4CAElB,QAAI,EAAkB,GACvB,EAAmB,8BAEvB,IAAM,EAAgB,CAClB,EAAQ,cAAc,OACtB,GAAoB,OACpB,MAAM,IAAiB,CACnB,SACJ,CAAC,EACD,EACJ,EACI,EAAe,qCACnB,GAAI,EAAc,GACd,EAAe,8BAEd,QAAI,EAAc,GACnB,EAAe,yBAEd,QAAI,EAAc,GACnB,EAAe,qBAEnB,IAAM,EAAwB,CAC1B,GAAqB,EAAQ,cAAc,cAAc,EACzD,GAAqB,GAAoB,cAAc,CAC3D,EACI,EAAuB,6BAC3B,GAAI,EAAsB,GACtB,EAAuB,sCAEtB,QAAI,EAAsB,GAC3B,EAAuB,iCAE3B,GAAQ,QAAQ,iFACT,KAAgB,MAAM,qBAAkB,EAAS,CAAa,CAAC,EAAE,MAAM,MAAqB,IAAuB,EAC1H,EAAY,IAAI,EAAU,CACtB,eAAgB,GAAoB,kBACjC,EAAQ,aACX,YAAa,EAAS,CAAiB,EACvC,SACA,UACA,OAAQ,EAAS,CAAa,EAC9B,eAAgB,EAAS,CAAqB,CAClD,CAAC,EAEL,GAAI,EAAQ,cACR,QAAW,KAAU,EAAQ,cACzB,EAAU,gBAAgB,IAAI,CAAM,EAG5C,IAAQ,eAAgB,MAAM,EAAU,KAAK,IAAI,EAAkB,CAAM,CAAC,EAC1E,GAAI,CAAC,GAAe,CAAC,EAAY,aAAe,CAAC,EAAY,gBACzD,MAAM,IAAI,2BAAyB,uDAAuD,EAAO,UAAW,CACxG,QACJ,CAAC,EAEL,MAAO,CACH,YAAa,EAAY,YACzB,gBAAiB,EAAY,gBAC7B,aAAc,EAAY,aAC1B,WAAY,EAAY,WACxB,gBAAiB,EAAY,eACjC,IAGF,GAAuB,CAAC,IACnB,GAAgB,UAAU,kBAAoB,KAAO,OAAY,EAEtE,EAAW,CAAC,IAAS,CACvB,QAAW,KAAQ,EACf,GAAI,IAAS,OACT,OAAO,GD/GZ,IAAM,GAA2B,CAAC,IAC9B,GAA6B,EAAS,EAAuB,OAAS,UAAU,QAAQ,IAAI,eAAkB,aAAW,CAC5H,4BAA6B,CAAC,IAAQ,EAAI,WAC1C,mBAAoB,CAAC,IACV,EAAY,OAEvB,QAAS,IAAG,CAAG,OACnB,EAAG,IAAK,kCAAiC,SAAQ,CAAC,EAAE,CAAC,EETlD,IAAM,GAAgB,CAAC,EAAO,CAAC,IAAM,GAAe,IACpD,CACP,CAAC,ECFM,IAAM,GAAe,CAAC,IAAS,GAAc,IAC7C,CACP,CAAC", | ||
| "debugId": "C4FEC41D408FE66564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/xai-responses.ts", "../ai/src/protocols/xai-images.ts", "../ai/src/providers/xai.ts"], | ||
| "sourcesContent": [ | ||
| "import { Protocol } from \"../route/protocol.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { ResponsesHostedTools } from \"./utils/responses-hosted-tools.js\"\n\nconst ADAPTER = \"xai-responses\"\nconst NAME = \"xAI Responses\"\n\nconst extension = {\n id: ADAPTER,\n name: NAME,\n} satisfies OpenResponses.Extension\n\nconst HOSTED_TOOLS = {\n web_search_call: { name: \"web_search\", input: (item) => item.action ?? {} },\n x_search_call: { name: \"x_search\", input: (item) => item.action ?? {} },\n file_search_call: { name: \"file_search\", input: (item) => ({ queries: item.queries ?? [] }) },\n code_interpreter_call: {\n name: \"code_interpreter\",\n input: (item) => ({ code: item.code, container_id: item.container_id }),\n },\n image_generation_call: { name: \"image_generation\", input: () => ({}) },\n mcp_call: {\n name: \"mcp\",\n input: (item) => ({ server_label: item.server_label, name: item.name, arguments: item.arguments }),\n },\n} as const satisfies ResponsesHostedTools.Definitions\n\n// Grok speaks the standard Responses reasoning dialect (`reasoning_summary_text.*`,\n// handled by the baseline); only its hosted tool vocabulary differs.\nconst step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => {\n if (event.type === \"response.output_item.done\" && event.item && ResponsesHostedTools.isItem(event.item, HOSTED_TOOLS))\n return ResponsesHostedTools.onDone(state, event.item, HOSTED_TOOLS)\n return OpenResponses.step(state, event)\n}\n\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: OpenResponses.protocol.body,\n stream: {\n event: OpenResponses.protocol.stream.event,\n initial: (request) => OpenResponses.initial(request, extension),\n step,\n terminal: OpenResponses.terminal,\n },\n})\n\nexport * as XAIResponses from \"./xai-responses.js\"\n", | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest } from \"effect/unstable/http\"\nimport { GeneratedImage, ImageModel, ImageResponse, type ImageRequestFor, type ImageRoute } from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n} from \"../schema/index.js\"\nimport { ProviderShared, optionalNull } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\n\nconst ADAPTER = \"xai-images\"\nexport const DEFAULT_BASE_URL = \"https://api.x.ai/v1\"\nexport const PATH = \"/images/generations\"\nexport const EDIT_PATH = \"/images/edits\"\n\nexport type XAIImageString<Known extends string> = Known | (string & {})\n\nexport type XAIImageOptions = {\n readonly n?: number\n readonly aspectRatio?: XAIImageString<\n | \"1:1\"\n | \"3:4\"\n | \"4:3\"\n | \"9:16\"\n | \"16:9\"\n | \"2:3\"\n | \"3:2\"\n | \"9:19.5\"\n | \"19.5:9\"\n | \"9:20\"\n | \"20:9\"\n | \"1:2\"\n | \"2:1\"\n | \"auto\"\n >\n readonly aspect_ratio?: XAIImageString<\n | \"1:1\"\n | \"3:4\"\n | \"4:3\"\n | \"9:16\"\n | \"16:9\"\n | \"2:3\"\n | \"3:2\"\n | \"9:19.5\"\n | \"19.5:9\"\n | \"9:20\"\n | \"20:9\"\n | \"1:2\"\n | \"2:1\"\n | \"auto\"\n >\n readonly resolution?: XAIImageString<\"1k\" | \"2k\">\n readonly responseFormat?: XAIImageString<\"url\" | \"b64_json\">\n readonly response_format?: XAIImageString<\"url\" | \"b64_json\">\n} & Record<string, unknown>\n\ntype XAIImageBody = Record<string, unknown> & {\n readonly model: string\n readonly prompt: string\n}\n\nconst XAIImageResponse = Schema.Struct({\n data: Schema.Array(\n Schema.Struct({\n b64_json: optionalNull(Schema.String),\n url: optionalNull(Schema.String),\n revised_prompt: optionalNull(Schema.String),\n mime_type: optionalNull(Schema.String),\n }),\n ),\n usage: Schema.optional(Schema.Unknown),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: XAIImageOptions | undefined) => {\n if (!options) return undefined\n const { aspectRatio, responseFormat, ...native } = options\n return {\n aspect_ratio: aspectRatio,\n response_format: responseFormat,\n ...native,\n }\n}\n\nconst invalidOutput = (message: string) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<XAIImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"XAIImages.generate\")(function* (request: ImageRequestFor<XAIImageOptions>, execute) {\n const http = mergeHttpOptions(request.model.http, request.http)\n const imageReferences = (request.images ?? []).map((image) => {\n if (image.type === \"bytes\") return { url: ImageInputs.dataUrl(image), type: \"image_url\" as const }\n if (image.type === \"url\") return { url: image.url, type: \"image_url\" as const }\n if (image.type === \"file-id\") return { file_id: image.id }\n return undefined\n })\n if (imageReferences.some((image) => image === undefined))\n return yield* ImageInputs.invalid(ADAPTER, \"xAI Images accepts image URLs, data URLs, bytes, and file IDs\")\n const requestBody = mergeJsonRecords(\n {\n model: request.model.id,\n prompt: request.prompt,\n image: imageReferences.length === 1 ? imageReferences[0] : undefined,\n images: imageReferences.length > 1 ? imageReferences : undefined,\n },\n nativeOptions(request.options),\n http?.body,\n ) as XAIImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const url = applyQuery(\n `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}${imageReferences.length === 0 ? PATH : EDIT_PATH}`,\n http?.query,\n )\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the xAI Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(XAIImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"xAI Images returned an invalid response\")),\n )\n const images = yield* Effect.forEach(decoded.data, (item, index) => {\n const mediaType = item.mime_type ?? \"application/octet-stream\"\n if (item.b64_json)\n return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe(\n Effect.mapError(() => invalidOutput(`xAI Images result ${index} contains invalid base64 data`)),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType,\n data,\n providerMetadata:\n item.revised_prompt === undefined || item.revised_prompt === null\n ? undefined\n : { xai: { revisedPrompt: item.revised_prompt } },\n }),\n ),\n )\n if (item.url)\n return Effect.succeed(\n new GeneratedImage({\n mediaType,\n data: item.url,\n providerMetadata:\n item.revised_prompt === undefined || item.revised_prompt === null\n ? undefined\n : { xai: { revisedPrompt: item.revised_prompt } },\n }),\n )\n return Effect.fail(invalidOutput(`xAI Images result ${index} has neither image data nor a URL`))\n })\n if (images.length === 0) return yield* invalidOutput(\"xAI Images returned no images\")\n const usage = ProviderShared.isRecord(decoded.usage) ? decoded.usage : undefined\n return new ImageResponse({\n images,\n usage: usage === undefined ? undefined : new Usage({ providerMetadata: { xai: usage } }),\n providerMetadata: usage === undefined ? undefined : { xai: { usage } },\n })\n }),\n }\n return ImageModel.make<XAIImageOptions>({ id: input.id, provider: \"xai\", route, http: input.http })\n}\n\nexport const XAIImages = {\n model,\n} as const\n", | ||
| "import { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { HttpOptions, ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAICompatibleProfiles from \"./openai-compatible-profile.js\"\nimport * as OpenAICompatibleChat from \"../protocols/openai-compatible-chat.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport { OpenResponsesChannel } from \"../protocols/open-responses-channel.js\"\nimport { XAIResponses } from \"../protocols/xai-responses.js\"\nimport { XAIImages } from \"../protocols/xai-images.js\"\nimport type { OpenAIOptionsInput } from \"./openai-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\n\nexport const id = ProviderID.make(\"xai\")\n\nexport type XAIProviderOptionsInput = OpenAIOptionsInput\n\nexport type LanguageModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: XAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly providerOptions?: XAIProviderOptionsInput\n}\n\nexport type { XAIImageOptions } from \"../protocols/xai-images.js\"\n\nconst RESPONSES_WEBSOCKET_ROTATE_AFTER_MS = 24 * 60 * 1000\n\nconst responsesRoute = Route.make({\n id: \"openai-responses\",\n provider: id,\n providerMetadataKey: \"xai\",\n protocol: XAIResponses.protocol,\n endpoint: Endpoint.path(\"/responses\", { baseURL: OpenAICompatibleProfiles.profiles.xai.baseURL }),\n transport: OpenResponsesChannel.transport({\n id: \"openai-responses\",\n name: \"xAI Responses\",\n rotateAfterMs: RESPONSES_WEBSOCKET_ROTATE_AFTER_MS,\n }),\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nconst chatRoute = Route.make({\n id: \"openai-compatible-chat\",\n provider: id,\n providerMetadataKey: \"xai\",\n protocol: OpenAIChat.protocol,\n endpoint: Endpoint.path(\"/chat/completions\", { baseURL: OpenAICompatibleProfiles.profiles.xai.baseURL }),\n transport: OpenAICompatibleChat.route.transport,\n headers: ({ request }): Record<string, string> =>\n request.promptCacheKey ? { \"x-grok-conv-id\": request.promptCacheKey } : {},\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => AuthOptions.bearer(options, \"XAI_API_KEY\")\n\nconst configuredResponsesRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return responsesRoute.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL },\n auth: auth(input),\n })\n}\n\nconst configuredChatRoute = (input: LanguageModelOptions) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n return chatRoute.with({\n ...rest,\n endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL },\n auth: auth(input),\n })\n}\n\nexport const configure = (input: LanguageModelOptions = {}) => {\n const responsesRoute = configuredResponsesRoute(input)\n const chatRoute = configuredChatRoute(input)\n const responses = (modelID: string | ModelID) => responsesRoute.model<XAIProviderOptionsInput>({ id: modelID })\n const chat = (modelID: string | ModelID) => chatRoute.model<XAIProviderOptionsInput>({ id: modelID })\n const image = (modelID: string | ModelID) =>\n XAIImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL,\n headers: input.headers,\n http: input.http === undefined ? undefined : HttpOptions.make(input.http),\n })\n return {\n id,\n model: responses,\n responses,\n chat,\n image,\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, XAIProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\nexport const responses = provider.responses\nexport const chat = provider.chat\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BC47323EDBC3BABB64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js", "../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js", "../../node_modules/.bun/@aws-sdk+credential-provider-process@3.972.69/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js"], | ||
| "sourcesContent": [ | ||
| "import { getProfileName, parseKnownFiles } from \"@smithy/core/config\";\nimport { resolveProcessCredentials } from \"./resolveProcessCredentials\";\nexport const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-process - fromProcess\");\n const profiles = await parseKnownFiles(init);\n return resolveProcessCredentials(getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n }), profiles, init.logger);\n};\n", | ||
| "import { CredentialsProviderError, externalDataInterceptor } from \"@smithy/core/config\";\nimport { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { getValidatedProcessCredentials } from \"./getValidatedProcessCredentials\";\nexport const resolveProcessCredentials = async (profileName, profiles, logger) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== undefined) {\n const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n }\n catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data, profiles);\n }\n catch (error) {\n throw new CredentialsProviderError(error.message, { logger });\n }\n }\n else {\n throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });\n }\n }\n else {\n throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {\n logger,\n });\n }\n};\n", | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nexport const getValidatedProcessCredentials = (profileName, data, profiles) => {\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n let accountId = data.AccountId;\n if (!accountId && profiles?.[profileName]?.aws_account_id) {\n accountId = profiles[profileName].aws_account_id;\n }\n const credentials = {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...(data.SessionToken && { sessionToken: data.SessionToken }),\n ...(data.Expiration && { expiration: new Date(data.Expiration) }),\n ...(data.CredentialScope && { credentialScope: data.CredentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_PROCESS\", \"w\");\n return credentials;\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eCAA,eACA,eAAS,sBACT,oBAAS,aCFT,eACa,EAAiC,CAAC,EAAa,EAAM,IAAa,CAC3E,GAAI,EAAK,UAAY,EACjB,MAAM,MAAM,WAAW,gDAA0D,EAErF,GAAI,EAAK,cAAgB,QAAa,EAAK,kBAAoB,OAC3D,MAAM,MAAM,WAAW,oDAA8D,EAEzF,GAAI,EAAK,WAAY,CACjB,IAAM,EAAc,IAAI,KAExB,GADmB,IAAI,KAAK,EAAK,UAAU,EAC1B,EACb,MAAM,MAAM,WAAW,oDAA8D,EAG7F,IAAI,EAAY,EAAK,UACrB,GAAI,CAAC,GAAa,IAAW,IAAc,eACvC,EAAY,EAAS,GAAa,eAEtC,IAAM,EAAc,CAChB,YAAa,EAAK,YAClB,gBAAiB,EAAK,mBAClB,EAAK,cAAgB,CAAE,aAAc,EAAK,YAAa,KACvD,EAAK,YAAc,CAAE,WAAY,IAAI,KAAK,EAAK,UAAU,CAAE,KAC3D,EAAK,iBAAmB,CAAE,gBAAiB,EAAK,eAAgB,KAChE,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,sBAAuB,GAAG,EACrD,GDxBJ,IAAM,EAA4B,MAAO,EAAa,EAAU,IAAW,CAC9E,IAAM,EAAU,EAAS,GACzB,GAAI,EAAS,GAAc,CACvB,IAAM,EAAoB,EAAQ,mBAClC,GAAI,IAAsB,OAAW,CACjC,IAAM,EAAc,EAAU,2BAAyB,iBAAiB,EAAE,MAAQ,CAAI,EACtF,GAAI,CACA,IAAQ,UAAW,MAAM,EAAY,CAAiB,EAClD,EACJ,GAAI,CACA,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAEnC,KAAM,CACF,MAAM,MAAM,WAAW,6CAAuD,EAElF,OAAO,EAA+B,EAAa,EAAM,CAAQ,EAErE,MAAO,EAAO,CACV,MAAM,IAAI,2BAAyB,EAAM,QAAS,CAAE,QAAO,CAAC,GAIhE,WAAM,IAAI,2BAAyB,WAAW,wCAAmD,CAAE,QAAO,CAAC,EAI/G,WAAM,IAAI,2BAAyB,WAAW,mDAA8D,CACxG,QACJ,CAAC,GD9BF,IAAM,EAAc,CAAC,EAAO,CAAC,IAAM,OAAS,sBAAuB,CAAC,IAAM,CAC7E,EAAK,QAAQ,MAAM,oDAAoD,EACvE,IAAM,EAAW,MAAM,kBAAgB,CAAI,EAC3C,OAAO,EAA0B,iBAAe,CAC5C,QAAS,EAAK,SAAW,GAAoB,OACjD,CAAC,EAAG,EAAU,EAAK,MAAM", | ||
| "debugId": "54E3FC15F69123CF64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/theme/color.ts", "../tui/src/theme/resolve.ts"], | ||
| "sourcesContent": [ | ||
| "import { RGBA } from \"@opentui/core\"\n\nexport function ansiToRgba(code: number): RGBA {\n if (code < 16) {\n const ansiColors = [\n \"#000000\",\n \"#800000\",\n \"#008000\",\n \"#808000\",\n \"#000080\",\n \"#800080\",\n \"#008080\",\n \"#c0c0c0\",\n \"#808080\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#ffffff\",\n ]\n return RGBA.fromHex(ansiColors[code] ?? \"#000000\")\n }\n\n if (code < 232) {\n const index = code - 16\n const b = index % 6\n const g = Math.floor(index / 6) % 6\n const r = Math.floor(index / 36)\n const val = (x: number) => (x === 0 ? 0 : x * 40 + 55)\n return RGBA.fromInts(val(r), val(g), val(b))\n }\n\n if (code < 256) {\n const gray = (code - 232) * 10 + 8\n return RGBA.fromInts(gray, gray, gray)\n }\n\n return RGBA.fromInts(0, 0, 0)\n}\n\nexport function tint(base: RGBA, overlay: RGBA, alpha: number): RGBA {\n const r = base.r + (overlay.r - base.r) * alpha\n const g = base.g + (overlay.g - base.g) * alpha\n const b = base.b + (overlay.b - base.b) * alpha\n return RGBA.fromInts(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255))\n}\n", | ||
| "import { RGBA } from \"@opentui/core\"\nimport { ansiToRgba } from \"./color\"\nimport type { ColorValue, Theme, ThemeColor, ThemeV1Json } from \"./v1\"\n\nexport function resolveThemeColors(\n theme: ThemeV1Json,\n mode: \"dark\" | \"light\",\n resolveAnsi: (code: number) => RGBA = ansiToRgba,\n) {\n const defs = theme.defs ?? {}\n function resolveColor(color: ColorValue, chain: string[] = []): RGBA {\n if (color instanceof RGBA) return color\n if (typeof color === \"string\") {\n if (color === \"transparent\" || color === \"none\") return RGBA.fromInts(0, 0, 0, 0)\n\n if (color.startsWith(\"#\")) return RGBA.fromHex(color)\n\n if (chain.includes(color)) {\n throw new Error(`Circular color reference: ${[...chain, color].join(\" -> \")}`)\n }\n\n const next = defs[color] ?? theme.theme[color as ThemeColor]\n if (next === undefined) {\n throw new Error(`Color reference \"${color}\" not found in defs or theme`)\n }\n return resolveColor(next, [...chain, color])\n }\n if (typeof color === \"number\") return resolveAnsi(color)\n return resolveColor(color[mode], chain)\n }\n\n const resolved = Object.fromEntries(\n Object.entries(theme.theme)\n .filter(([key]) => key !== \"selectedListItemText\" && key !== \"backgroundMenu\" && key !== \"thinkingOpacity\")\n .map(([key, value]) => [key, resolveColor(value as ColorValue)]),\n ) as Partial<Record<ThemeColor, RGBA>>\n\n const hasSelectedListItemText = theme.theme.selectedListItemText !== undefined\n return {\n theme: {\n ...(resolved as Record<ThemeColor, RGBA>),\n selectedListItemText: hasSelectedListItemText\n ? resolveColor(theme.theme.selectedListItemText!)\n : resolved.background!,\n backgroundMenu:\n theme.theme.backgroundMenu === undefined\n ? resolved.backgroundElement!\n : resolveColor(theme.theme.backgroundMenu),\n } satisfies Omit<Theme, \"_hasSelectedListItemText\" | \"thinkingOpacity\">,\n hasSelectedListItemText,\n thinkingOpacity: theme.theme.thinkingOpacity ?? 0.6,\n }\n}\n" | ||
| ], | ||
| "mappings": ";oDAEO,SAAS,CAAU,CAAC,EAAoB,CAC7C,GAAI,EAAO,GAAI,CACb,IAAM,EAAa,CACjB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,OAAO,EAAK,QAAQ,EAAW,IAAS,SAAS,EAGnD,GAAI,EAAO,IAAK,CACd,IAAM,EAAQ,EAAO,GACf,EAAI,EAAQ,EACZ,EAAI,KAAK,MAAM,EAAQ,CAAC,EAAI,EAC5B,EAAI,KAAK,MAAM,EAAQ,EAAE,EACzB,EAAM,CAAC,IAAe,IAAM,EAAI,EAAI,EAAI,GAAK,GACnD,OAAO,EAAK,SAAS,EAAI,CAAC,EAAG,EAAI,CAAC,EAAG,EAAI,CAAC,CAAC,EAG7C,GAAI,EAAO,IAAK,CACd,IAAM,GAAQ,EAAO,KAAO,GAAK,EACjC,OAAO,EAAK,SAAS,EAAM,EAAM,CAAI,EAGvC,OAAO,EAAK,SAAS,EAAG,EAAG,CAAC,EAGvB,SAAS,CAAI,CAAC,EAAY,EAAe,EAAqB,CACnE,IAAM,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EACpC,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EACpC,EAAI,EAAK,GAAK,EAAQ,EAAI,EAAK,GAAK,EAC1C,OAAO,EAAK,SAAS,KAAK,MAAM,EAAI,GAAG,EAAG,KAAK,MAAM,EAAI,GAAG,EAAG,KAAK,MAAM,EAAI,GAAG,CAAC,EC1C7E,SAAS,CAAkB,CAChC,EACA,EACA,EAAsC,EACtC,CACA,IAAM,EAAO,EAAM,MAAQ,CAAC,EAC5B,SAAS,CAAY,CAAC,EAAmB,EAAkB,CAAC,EAAS,CACnE,GAAI,aAAiB,EAAM,OAAO,EAClC,GAAI,OAAO,IAAU,SAAU,CAC7B,GAAI,IAAU,eAAiB,IAAU,OAAQ,OAAO,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EAEhF,GAAI,EAAM,WAAW,GAAG,EAAG,OAAO,EAAK,QAAQ,CAAK,EAEpD,GAAI,EAAM,SAAS,CAAK,EACtB,MAAU,MAAM,6BAA6B,CAAC,GAAG,EAAO,CAAK,EAAE,KAAK,MAAM,GAAG,EAG/E,IAAM,EAAO,EAAK,IAAU,EAAM,MAAM,GACxC,GAAI,IAAS,OACX,MAAU,MAAM,oBAAoB,+BAAmC,EAEzE,OAAO,EAAa,EAAM,CAAC,GAAG,EAAO,CAAK,CAAC,EAE7C,GAAI,OAAO,IAAU,SAAU,OAAO,EAAY,CAAK,EACvD,OAAO,EAAa,EAAM,GAAO,CAAK,EAGxC,IAAM,EAAW,OAAO,YACtB,OAAO,QAAQ,EAAM,KAAK,EACvB,OAAO,EAAE,KAAS,IAAQ,wBAA0B,IAAQ,kBAAoB,IAAQ,iBAAiB,EACzG,IAAI,EAAE,EAAK,KAAW,CAAC,EAAK,EAAa,CAAmB,CAAC,CAAC,CACnE,EAEM,EAA0B,EAAM,MAAM,uBAAyB,OACrE,MAAO,CACL,MAAO,IACD,EACJ,qBAAsB,EAClB,EAAa,EAAM,MAAM,oBAAqB,EAC9C,EAAS,WACb,eACE,EAAM,MAAM,iBAAmB,OAC3B,EAAS,kBACT,EAAa,EAAM,MAAM,cAAc,CAC/C,EACA,0BACA,gBAAiB,EAAM,MAAM,iBAAmB,GAClD", | ||
| "debugId": "634D4836C4AF565464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/image/photon-wasm.bun.ts", "../core/src/image/photon.ts"], | ||
| "sourcesContent": [ | ||
| "// @ts-ignore Bun embeds static file imports when compiling the CLI.\nimport photonWasm from \"@silvia-odwyer/photon-node/photon_rs_bg.wasm\" with { type: \"file\" }\n\nexport default photonWasm\n", | ||
| "import photonWasm from \"#photon-wasm\"\nimport { Effect } from \"effect\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { FileSystem } from \"../filesystem.js\"\nimport { DecodeError, ResizerUnavailableError, SizeError } from \"../image.js\"\n\nconst JPEG_QUALITIES = [80, 85, 70, 55, 40]\n\nexport const make = Effect.gen(function* () {\n const loadPhoton = yield* Effect.cached(\n // A runtime without a photon wasm artifact (#photon-wasm resolves to the\n // empty string on workerd) has no resizer, by declaration: fail typed\n // before touching URLs or module loading. The path resolution and import\n // for runtimes that DO have an artifact stay inside the guard too — a\n // throw outside it (workerd's undefined import.meta.url was one) is a\n // defect that escapes the ResizerUnavailableError handling and turns any\n // image-bearing prompt into a 500 instead of degrading to passthrough.\n photonWasm === \"\"\n ? Effect.fail(new ResizerUnavailableError())\n : Effect.tryPromise({\n try: async () => {\n ;(\n globalThis as typeof globalThis & { __OPENCODE_PHOTON_WASM_PATH?: string }\n ).__OPENCODE_PHOTON_WASM_PATH = path.isAbsolute(photonWasm)\n ? photonWasm\n : fileURLToPath(new URL(photonWasm, import.meta.url))\n return await import(\"@silvia-odwyer/photon-node\")\n },\n catch: () => new ResizerUnavailableError(),\n }),\n )\n return Effect.fn(\"Image.Photon.normalize\")(function* (\n resource: string,\n content: FileSystem.Content & { readonly encoding: \"base64\" },\n limits: {\n readonly autoResize: boolean\n readonly maxWidth: number\n readonly maxHeight: number\n readonly maxBase64Bytes: number\n },\n ) {\n const photon = yield* loadPhoton\n const decoded = yield* Effect.try({\n try: () => photon.PhotonImage.new_from_byteslice(Buffer.from(content.content, \"base64\")),\n catch: () => new DecodeError({ resource }),\n })\n try {\n const width = decoded.get_width()\n const height = decoded.get_height()\n const bytes = Buffer.byteLength(content.content, \"utf-8\")\n if (width <= limits.maxWidth && height <= limits.maxHeight && bytes <= limits.maxBase64Bytes) return content\n if (!limits.autoResize)\n return yield* new SizeError({\n resource,\n width,\n height,\n bytes,\n maxWidth: limits.maxWidth,\n maxHeight: limits.maxHeight,\n maxBytes: limits.maxBase64Bytes,\n })\n const scale = Math.min(1, limits.maxWidth / width, limits.maxHeight / height)\n const sizes = Array.from({ length: 32 }).reduce<Array<{ width: number; height: number }>>((acc) => {\n const previous = acc.at(-1) ?? {\n width: Math.max(1, Math.round(width * scale)),\n height: Math.max(1, Math.round(height * scale)),\n }\n const next =\n acc.length === 0\n ? previous\n : {\n width: previous.width === 1 ? 1 : Math.max(1, Math.floor(previous.width * 0.75)),\n height: previous.height === 1 ? 1 : Math.max(1, Math.floor(previous.height * 0.75)),\n }\n return acc.some((item) => item.width === next.width && item.height === next.height) ? acc : [...acc, next]\n }, [])\n for (const size of sizes) {\n const resized = photon.resize(decoded, size.width, size.height, photon.SamplingFilter.Lanczos3)\n try {\n const encoders: Array<readonly [mime: string, encode: () => Uint8Array]> = [\n [\"image/png\", () => resized.get_bytes()],\n ...JPEG_QUALITIES.map((quality) => [\"image/jpeg\", () => resized.get_bytes_jpeg(quality)] as const),\n ]\n for (const [mime, encode] of encoders) {\n const candidate = Buffer.from(encode()).toString(\"base64\")\n if (Buffer.byteLength(candidate, \"utf-8\") <= limits.maxBase64Bytes)\n return { ...content, content: candidate, encoding: \"base64\" as const, mime }\n }\n } finally {\n resized.free()\n }\n }\n return yield* new SizeError({\n resource,\n width,\n height,\n bytes,\n maxWidth: limits.maxWidth,\n maxHeight: limits.maxHeight,\n maxBytes: limits.maxBase64Bytes,\n })\n } finally {\n decoded.free()\n }\n })\n})\n" | ||
| ], | ||
| "mappings": ";kgCAGA,IAAe,ICDf,oBACA,wBAAS,YAIT,IAAM,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,EAAE,EAE7B,EAAO,EAAO,IAAI,SAAU,EAAG,CAC1C,IAAM,EAAa,MAAO,EAAO,OAQ/B,IAAe,GACX,EAAO,KAAK,IAAI,CAAyB,EACzC,EAAO,WAAW,CAChB,IAAK,UAED,WACA,4BAA8B,EAAK,WAAW,CAAU,EACtD,EACA,EAAc,IAAI,IAAI,EAAY,YAAY,GAAG,CAAC,EAC/C,KAAa,2CAEtB,MAAO,IAAM,IAAI,CACnB,CAAC,CACP,EACA,OAAO,EAAO,GAAG,wBAAwB,EAAE,SAAU,CACnD,EACA,EACA,EAMA,CACA,IAAM,EAAS,MAAO,EAChB,EAAU,MAAO,EAAO,IAAI,CAChC,IAAK,IAAM,EAAO,YAAY,mBAAmB,OAAO,KAAK,EAAQ,QAAS,QAAQ,CAAC,EACvF,MAAO,IAAM,IAAI,EAAY,CAAE,UAAS,CAAC,CAC3C,CAAC,EACD,GAAI,CACF,IAAM,EAAQ,EAAQ,UAAU,EAC1B,EAAS,EAAQ,WAAW,EAC5B,EAAQ,OAAO,WAAW,EAAQ,QAAS,OAAO,EACxD,GAAI,GAAS,EAAO,UAAY,GAAU,EAAO,WAAa,GAAS,EAAO,eAAgB,OAAO,EACrG,GAAI,CAAC,EAAO,WACV,OAAO,MAAO,IAAI,EAAU,CAC1B,WACA,QACA,SACA,QACA,SAAU,EAAO,SACjB,UAAW,EAAO,UAClB,SAAU,EAAO,cACnB,CAAC,EACH,IAAM,EAAQ,KAAK,IAAI,EAAG,EAAO,SAAW,EAAO,EAAO,UAAY,CAAM,EACtE,EAAQ,MAAM,KAAK,CAAE,OAAQ,EAAG,CAAC,EAAE,OAAiD,CAAC,IAAQ,CACjG,IAAM,EAAW,EAAI,GAAG,EAAE,GAAK,CAC7B,MAAO,KAAK,IAAI,EAAG,KAAK,MAAM,EAAQ,CAAK,CAAC,EAC5C,OAAQ,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,CAAK,CAAC,CAChD,EACM,EACJ,EAAI,SAAW,EACX,EACA,CACE,MAAO,EAAS,QAAU,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,MAAQ,IAAI,CAAC,EAC/E,OAAQ,EAAS,SAAW,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM,EAAS,OAAS,IAAI,CAAC,CACpF,EACN,OAAO,EAAI,KAAK,CAAC,IAAS,EAAK,QAAU,EAAK,OAAS,EAAK,SAAW,EAAK,MAAM,EAAI,EAAM,CAAC,GAAG,EAAK,CAAI,GACxG,CAAC,CAAC,EACL,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAU,EAAO,OAAO,EAAS,EAAK,MAAO,EAAK,OAAQ,EAAO,eAAe,QAAQ,EAC9F,GAAI,CACF,IAAM,EAAqE,CACzE,CAAC,YAAa,IAAM,EAAQ,UAAU,CAAC,EACvC,GAAG,EAAe,IAAI,CAAC,IAAY,CAAC,aAAc,IAAM,EAAQ,eAAe,CAAO,CAAC,CAAU,CACnG,EACA,QAAY,EAAM,KAAW,EAAU,CACrC,IAAM,EAAY,OAAO,KAAK,EAAO,CAAC,EAAE,SAAS,QAAQ,EACzD,GAAI,OAAO,WAAW,EAAW,OAAO,GAAK,EAAO,eAClD,MAAO,IAAK,EAAS,QAAS,EAAW,SAAU,SAAmB,MAAK,UAE/E,CACA,EAAQ,KAAK,GAGjB,OAAO,MAAO,IAAI,EAAU,CAC1B,WACA,QACA,SACA,QACA,SAAU,EAAO,SACjB,UAAW,EAAO,UAClB,SAAU,EAAO,cACnB,CAAC,SACD,CACA,EAAQ,KAAK,GAEhB,EACF", | ||
| "debugId": "144E04F6735F6D0664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/editor.ts", "../tui/src/editor-zed-sqlite.bun.ts", "../tui/src/editor-zed.ts"], | ||
| "sourcesContent": [ | ||
| "import type { CliRenderer } from \"@opentui/core\"\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\"\nimport { readFile, rm, writeFile } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { spawn } from \"node:child_process\"\nimport type { Stream } from \"node:stream\"\nimport { resolveZedDbPath, resolveZedSelection } from \"./editor-zed\"\n\nexport { normalizePromptContent } from \"./prompt/content\"\n\ntype EditorStdio = \"inherit\" | \"pipe\" | \"ignore\" | number | Stream\n\nexport async function openEditor(input: { value: string; renderer: CliRenderer; cwd?: string; stdin?: EditorStdio }) {\n const editor = process.env.VISUAL || process.env.EDITOR\n if (!editor) return\n const file = path.join(os.tmpdir(), `${Date.now()}.md`)\n await writeFile(file, input.value)\n input.renderer.suspend()\n input.renderer.currentRenderBuffer.clear()\n try {\n await new Promise<void>((resolve, reject) => {\n const parts = editor.split(\" \")\n const child = spawn(parts[0]!, [...parts.slice(1), file], {\n cwd: input.cwd && existsSync(input.cwd) ? input.cwd : process.cwd(),\n stdio: [input.stdin ?? \"inherit\", \"inherit\", \"inherit\"],\n shell: process.platform === \"win32\",\n })\n child.on(\"error\", reject)\n child.on(\"exit\", (code, signal) => {\n if (code === 0) return resolve()\n reject(new Error(`Editor exited with ${signal ? `signal ${signal}` : `code ${code}`}`))\n })\n })\n return (await readFile(file, \"utf8\")) || undefined\n } finally {\n await rm(file, { force: true }).catch(() => {})\n input.renderer.currentRenderBuffer.clear()\n input.renderer.resume()\n input.renderer.requestRender()\n }\n}\n\nexport function discoverEditorConnection(directory: string) {\n const root = path.join(os.homedir(), \".claude\", \"ide\")\n const contains = (parent: string) => {\n const resolved = path.resolve(parent)\n const relative = path.relative(resolved, path.resolve(directory))\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative)) ? resolved.length : 0\n }\n try {\n return readdirSync(root)\n .filter((entry) => entry.endsWith(\".lock\"))\n .flatMap((entry) => {\n const file = path.join(root, entry)\n const port = Number.parseInt(path.basename(file, \".lock\"), 10)\n if (!Number.isInteger(port) || port <= 0 || port > 65535) return []\n try {\n const value = JSON.parse(readFileSync(file, \"utf8\")) as Record<string, unknown>\n if (value.transport !== undefined && value.transport !== \"ws\") return []\n const folders = Array.isArray(value.workspaceFolders)\n ? value.workspaceFolders.filter((item): item is string => typeof item === \"string\")\n : []\n const score = Math.max(0, ...folders.map(contains))\n if (!score) return []\n return [\n {\n url: `ws://127.0.0.1:${port}`,\n authToken: typeof value.authToken === \"string\" ? value.authToken : undefined,\n source: `lock:${port}`,\n score,\n mtime: statSync(file).mtimeMs,\n },\n ]\n } catch {\n return []\n }\n })\n .sort((left, right) => right.score - left.score || right.mtime - left.mtime)\n .map(({ url, authToken, source }) => ({ url, authToken, source }))[0]\n } catch {\n return undefined\n }\n}\n\nexport const editorIntegration = {\n connection: discoverEditorConnection,\n selection: (directory: string) => resolveZedSelection(resolveZedDbPath() ?? \"\", directory),\n}\n", | ||
| "export { Database } from \"bun:sqlite\"\n", | ||
| "import { Database } from \"#zed-sqlite\"\nimport { statSync } from \"node:fs\"\nimport { readFile as readFileAsync } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { Option, Schema } from \"effect\"\nimport type { EditorSelection } from \"./context/editor\"\n\nconst ZedEditorRowSchema = Schema.Struct({\n item_kind: Schema.String,\n editor_id: Schema.NullOr(Schema.Number),\n workspace_id: Schema.Number,\n workspace_paths: Schema.NullOr(Schema.String),\n timestamp: Schema.String,\n buffer_path: Schema.NullOr(Schema.String),\n})\n\nconst ZedSelectionRowSchema = Schema.Struct({\n selection_start: Schema.NullOr(Schema.Number),\n selection_end: Schema.NullOr(Schema.Number),\n})\n\nconst ZedEditorContentsSchema = Schema.Struct({\n contents: Schema.NullOr(Schema.String),\n})\n\nconst decodeZedEditorRow = Schema.decodeUnknownOption(ZedEditorRowSchema)\nconst decodeZedSelectionRow = Schema.decodeUnknownOption(ZedSelectionRowSchema)\nconst decodeZedEditorContents = Schema.decodeUnknownOption(ZedEditorContentsSchema)\n\nconst utf8 = new TextEncoder()\n\ntype ZedEditorRow = Schema.Schema.Type<typeof ZedEditorRowSchema>\ntype ZedActiveEditorRow = ZedEditorRow & { item_kind: \"Editor\"; editor_id: number }\n\nexport type ZedSelectionResult =\n | { type: \"selection\"; selection: EditorSelection }\n | { type: \"empty\" }\n | { type: \"unavailable\" }\n\nexport async function resolveZedSelection(dbPath: string, cwd = process.cwd()): Promise<ZedSelectionResult> {\n const active = queryZedActiveEditor(dbPath, cwd)\n if (active.type !== \"row\") return active\n\n const row = active.row\n if (!row.buffer_path) return { type: \"empty\" }\n\n const selections = queryZedEditorSelections(dbPath, row)\n if (selections.type !== \"selections\") return selections\n const byteRanges = selections.selections\n .flatMap((selection) => {\n if (selection.selection_start == null || selection.selection_end == null) return []\n return [\n {\n start: Math.min(selection.selection_start, selection.selection_end),\n end: Math.max(selection.selection_start, selection.selection_end),\n },\n ]\n })\n .sort((left, right) => left.start - right.start || left.end - right.end)\n if (byteRanges.length === 0) return { type: \"unavailable\" }\n\n const contents = queryZedEditorContents(dbPath, row)\n const text =\n contents.type === \"contents\" && contents.contents != null\n ? contents.contents\n : await readFileAsync(row.buffer_path, \"utf8\").catch(() => undefined)\n if (text == null) return { type: \"unavailable\" }\n\n const ranges = byteRanges.map((range) => {\n const startOffset = utf8ByteOffsetToStringIndex(text, range.start)\n const endOffset = utf8ByteOffsetToStringIndex(text, range.end)\n return {\n text: text.slice(startOffset, endOffset),\n selection: offsetsToSelection(text, startOffset, endOffset),\n }\n })\n\n return {\n type: \"selection\",\n selection: {\n filePath: row.buffer_path,\n source: \"zed\",\n ranges,\n },\n }\n}\n\nfunction queryZedActiveEditor(dbPath: string, cwd: string) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const raw = db\n .query(\n `select\n i.kind as item_kind,\n e.item_id as editor_id,\n i.workspace_id as workspace_id,\n w.paths as workspace_paths,\n w.timestamp as timestamp,\n e.buffer_path as buffer_path\n from items i\n join panes p on p.pane_id = i.pane_id and p.workspace_id = i.workspace_id\n join workspaces w on w.workspace_id = i.workspace_id\n left join editors e on e.item_id = i.item_id and e.workspace_id = i.workspace_id\n where i.active = 1 and p.active = 1\n order by w.timestamp desc`,\n )\n .all()\n\n const rows = raw.flatMap((row) => {\n const parsed = decodeZedEditorRow(row)\n return Option.isSome(parsed) ? [parsed.value] : []\n })\n\n if (raw.length > 0 && rows.length === 0) return { type: \"unavailable\" as const }\n\n const row = rows\n .map((row) => ({ row, score: scoreZedWorkspace(row.workspace_paths, cwd) }))\n .filter((entry) => entry.score > 0)\n .sort((left, right) => right.score - left.score || right.row.timestamp.localeCompare(left.row.timestamp))[0]?.row\n if (!row) return { type: \"empty\" as const }\n if (row.item_kind !== \"Editor\") return { type: \"unavailable\" as const }\n if (!isZedActiveEditorRow(row)) return { type: \"empty\" as const }\n return { type: \"row\" as const, row }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction queryZedEditorSelections(dbPath: string, row: ZedActiveEditorRow) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const raw = db\n .query(\n `select\n start as selection_start,\n end as selection_end\n from editor_selections\n where editor_id = $editorID and workspace_id = $workspaceID`,\n )\n .all({ $editorID: row.editor_id, $workspaceID: row.workspace_id })\n\n const selections = raw.flatMap((selection) => {\n const parsed = decodeZedSelectionRow(selection)\n return Option.isSome(parsed) ? [parsed.value] : []\n })\n\n if (raw.length > 0 && selections.length === 0) return { type: \"unavailable\" as const }\n return { type: \"selections\" as const, selections }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction queryZedEditorContents(dbPath: string, row: ZedActiveEditorRow) {\n let db: Database | undefined\n try {\n db = new Database(dbPath, { readonly: true })\n const parsed = decodeZedEditorContents(\n db\n .query(\n `select contents\n from editors\n where item_id = $editorID and workspace_id = $workspaceID`,\n )\n .get({ $editorID: row.editor_id, $workspaceID: row.workspace_id }),\n )\n if (Option.isNone(parsed)) return { type: \"unavailable\" as const }\n return { type: \"contents\" as const, contents: parsed.value.contents }\n } catch {\n return { type: \"unavailable\" as const }\n } finally {\n db?.close()\n }\n}\n\nfunction isZedActiveEditorRow(row: ZedEditorRow): row is ZedActiveEditorRow {\n return row.item_kind === \"Editor\" && row.editor_id != null\n}\n\nexport function resolveZedDbPath() {\n const candidates = [\n process.env.OPENCODE_ZED_DB,\n path.join(os.homedir(), \"Library\", \"Application Support\", \"Zed\", \"db\", \"0-stable\", \"db.sqlite\"),\n path.join(os.homedir(), \".local\", \"share\", \"zed\", \"db\", \"0-stable\", \"db.sqlite\"),\n ].filter((item): item is string => Boolean(item))\n\n return candidates.find((item) => isFile(item))\n}\n\nfunction isFile(item: string) {\n try {\n return statSync(item).isFile()\n } catch {\n return false\n }\n}\n\nfunction scoreZedWorkspace(workspacePaths: string | null, cwd: string) {\n return zedWorkspacePaths(workspacePaths).reduce((score, item) => {\n if (pathContains(item, cwd)) return Math.max(score, path.resolve(item).length)\n return score\n }, 0)\n}\n\nfunction zedWorkspacePaths(value: string | null) {\n if (!value) return []\n const parsed = parseJson(value)\n if (Array.isArray(parsed)) return parsed.filter((item): item is string => typeof item === \"string\")\n return value.split(/\\r?\\n/).filter(Boolean)\n}\n\nfunction utf8ByteOffsetToStringIndex(text: string, byteOffset: number) {\n if (byteOffset <= 0) return 0\n\n let bytes = 0\n for (let index = 0; index < text.length; ) {\n const codePoint = text.codePointAt(index)\n if (codePoint === undefined) return text.length\n\n const nextIndex = index + (codePoint > 0xffff ? 2 : 1)\n bytes += utf8.encode(text.slice(index, nextIndex)).length\n if (bytes >= byteOffset) return nextIndex\n index = nextIndex\n }\n\n return text.length\n}\n\nfunction offsetsToSelection(text: string, startOffset: number, endOffset: number) {\n const start = Math.max(0, Math.min(startOffset, text.length))\n const end = Math.max(0, Math.min(endOffset, text.length))\n let line = 1\n let lineStart = 0\n let startPosition = position(line, lineStart, start)\n let endPosition = position(line, lineStart, end)\n\n for (let index = 0; index <= end; index++) {\n if (index === start) startPosition = position(line, lineStart, index)\n if (index === end) {\n endPosition = position(line, lineStart, index)\n break\n }\n if (text[index] === \"\\n\") {\n line += 1\n lineStart = index + 1\n }\n }\n\n return { start: startPosition, end: endPosition }\n}\n\nfunction position(line: number, lineStart: number, offset: number) {\n return {\n line,\n character: offset - lineStart + 1,\n }\n}\n\nfunction pathContains(parent: string, child: string) {\n const relative = path.relative(path.resolve(parent), path.resolve(child))\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n}\n\nfunction parseJson(value: string) {\n try {\n return JSON.parse(value) as unknown\n } catch {\n return\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "48808F9F5855C49C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-messages.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Schema, Struct } from \"effect\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nconst VERSION = \"vertex-2023-10-16\" as const\nconst HEADER_VERSION = \"2023-06-01\" as const\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n}\n\nconst route = Route.make({\n id: \"google-vertex-messages\",\n provider: id,\n providerMetadataKey: \"anthropic\",\n protocol: Protocol.make({\n id: AnthropicMessages.protocol.id,\n body: {\n schema: Schema.Struct({\n ...Struct.omit(AnthropicMessages.AnthropicMessagesBody.fields, [\"model\"]),\n anthropic_version: Schema.Literal(VERSION),\n }),\n from: (request) =>\n AnthropicMessages.protocol.body.from(request).pipe(\n Effect.map((body) => ({\n ...Struct.omit(body, [\"model\"]),\n anthropic_version: VERSION,\n })),\n ),\n },\n stream: AnthropicMessages.protocol.stream,\n }),\n endpoint: Endpoint.path(({ request }) => `/${request.model.id}:streamRawPredict`),\n auth: Auth.none,\n framing: AnthropicMessages.framing,\n headers: () => ({ \"anthropic-version\": HEADER_VERSION }),\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined)\n throw new Error(\"Google Vertex Messages does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://${GoogleVertexShared.host(location)}/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/publishers/anthropic/models`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<AnthropicMessages.ProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Messages does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";+lBAcA,IAAM,EAAU,oBACV,EAAiB,aAEV,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAAM,KAAK,CACvB,GAAI,yBACJ,SAAU,EACV,oBAAqB,YACrB,SAAU,EAAS,KAAK,CACtB,GAAI,EAAkB,SAAS,GAC/B,KAAM,CACJ,OAAQ,EAAO,OAAO,IACjB,EAAO,KAAK,EAAkB,sBAAsB,OAAQ,CAAC,OAAO,CAAC,EACxE,kBAAmB,EAAO,QAAQ,CAAO,CAC3C,CAAC,EACD,KAAM,CAAC,IACL,EAAkB,SAAS,KAAK,KAAK,CAAO,EAAE,KAC5C,EAAO,IAAI,CAAC,KAAU,IACjB,EAAO,KAAK,EAAM,CAAC,OAAO,CAAC,EAC9B,kBAAmB,CACrB,EAAE,CACJ,CACJ,EACA,OAAQ,EAAkB,SAAS,MACrC,CAAC,EACD,SAAU,EAAS,KAAK,EAAG,aAAc,IAAI,EAAQ,MAAM,qBAAqB,EAChF,KAAM,EAAK,KACX,QAAS,EAAkB,QAC3B,QAAS,KAAO,CAAE,oBAAqB,CAAe,EACxD,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OACxC,MAAU,MAAM,kDAAkD,EACpE,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,WAAW,EAAmB,KAAK,CAAQ,iBAAiB,EAAmB,eAAe,CAAO,eAAe,+BACxH,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAA8C,CAAE,GAAI,CAAQ,CAAC,EACzG,WACF,GAQK,IAAM,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,kDAAkD,EACrG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "61937A0C3ECACE9564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../util/src/session-title-fallback.ts"], | ||
| "sourcesContent": [ | ||
| "export * as SessionTitleFallback from \"./session-title-fallback.js\"\n\nconst pattern = /^(New session|Child session) - \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/\n\ninterface Info {\n readonly title?: string\n readonly parentID?: string\n readonly time: {\n readonly created: number\n }\n}\n\n/** Supplies the timestamped title required by compatibility surfaces. */\nexport function withTimestampedFallback(info: Info) {\n return info.title ?? fallback(info)\n}\n\n/** Supplies a compact human label and collapses historical timestamped fallbacks. */\nexport function displayLabel(info: Pick<Info, \"title\" | \"parentID\">) {\n if (!info.title) return info.parentID ? \"Child session\" : \"New session\"\n return info.title.match(pattern)?.[1] ?? info.title\n}\n\n/** Recognizes missing and historical root or child fallback titles. */\nexport function isFallbackTitle(title?: string) {\n return title === undefined || pattern.test(title)\n}\n\n/** Recognizes a missing title or the exact root fallback for this session. */\nexport function isExactRootFallback(info: Pick<Info, \"title\" | \"time\">) {\n return info.title === undefined || info.title === fallback({ time: info.time })\n}\n\nfunction fallback(info: Pick<Info, \"parentID\" | \"time\">) {\n return `${info.parentID ? \"Child\" : \"New\"} session - ${new Date(info.time.created).toISOString()}`\n}\n" | ||
| ], | ||
| "mappings": ";AAEA,IAAM,EAAU,8EAWT,SAAS,CAAuB,CAAC,EAAY,CAClD,OAAO,EAAK,OAAS,EAAS,CAAI,EAU7B,SAAS,CAAe,CAAC,EAAgB,CAC9C,OAAO,IAAU,QAAa,EAAQ,KAAK,CAAK,EAI3C,SAAS,CAAmB,CAAC,EAAoC,CACtE,OAAO,EAAK,QAAU,QAAa,EAAK,QAAU,EAAS,CAAE,KAAM,EAAK,IAAK,CAAC,EAGhF,SAAS,CAAQ,CAAC,EAAuC,CACvD,MAAO,GAAG,EAAK,SAAW,QAAU,mBAAmB,IAAI,KAAK,EAAK,KAAK,OAAO,EAAE,YAAY", | ||
| "debugId": "1C661AB4BCCB602364756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "0F74F19D0DA7D37A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js", "../../node_modules/.bun/@aws-sdk+credential-provider-http@3.972.71/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport fs from \"node:fs/promises\";\nimport { checkUrl } from \"./checkUrl\";\nimport { createGetRequest, getCredentials } from \"./requestHelpers\";\nimport { retryWrapper } from \"./retry-wrapper\";\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nexport const fromHttp = (options = {}) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-http - fromHttp\");\n let host;\n const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n const warn = options.logger?.constructor?.name === \"NoOpLogger\" || !options.logger?.warn\n ? console.warn\n : options.logger.warn.bind(options.logger);\n if (relative && full) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n warn(\"awsContainerCredentialsRelativeUri will take precedence.\");\n }\n if (token && tokenFile) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n warn(\"awsContainerAuthorizationTokenFile will take precedence.\");\n }\n if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else if (full) {\n host = full;\n }\n else {\n throw new CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger });\n }\n const url = new URL(host);\n checkUrl(url, options.logger);\n const requestHandler = NodeHttpHandler.create({ connectionTimeout: options.timeout ?? 1000 });\n const requestTimeout = options.timeout ?? 1000;\n const provider = retryWrapper(async () => {\n const request = createGetRequest(url);\n if (tokenFile) {\n request.headers.Authorization = validateToken((await fs.readFile(tokenFile)).toString());\n }\n else if (token) {\n request.headers.Authorization = validateToken(token);\n }\n try {\n const result = await requestHandler.handle(request, { requestTimeout });\n return getCredentials(result.response).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_HTTP\", \"z\"));\n }\n catch (e) {\n throw new CredentialsProviderError(String(e), { logger: options.logger });\n }\n }, options.maxRetries ?? 3, options.timeout ?? 1000);\n return async () => {\n try {\n return await provider();\n }\n finally {\n requestHandler.destroy?.();\n }\n };\n};\nconst validateToken = (token) => {\n if (token.includes(\"\\r\\n\")) {\n throw new CredentialsProviderError(\"Authorization token contains invalid \\\\r\\\\n sequence.\");\n }\n return token;\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nexport const checkUrl = (url, logger) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger });\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nimport { parseRfc3339DateTime } from \"@smithy/core/serde\";\nimport { sdkStreamMixin } from \"@smithy/core/serde\";\nexport function createGetRequest(url) {\n return new HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexport async function getCredentials(response, logger) {\n const stream = sdkStreamMixin(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\", { logger });\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: parseRfc3339DateTime(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger });\n}\n", | ||
| "export const retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B3735ADF88F0D6ED64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+deepinfra@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/deepinfra/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/deepinfra-provider.ts\nimport {\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel\n} from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/deepinfra-image-model.ts\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n convertToFormData,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n downloadBlob,\n postFormDataToApi,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\nvar DeepInfraImageModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n this.maxImagesPerCall = 1;\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n if (files != null && files.length > 0) {\n const { value: response2, responseHeaders: responseHeaders2 } = await postFormDataToApi({\n url: this.getEditUrl(),\n headers: combineHeaders(this.config.headers(), headers),\n formData: convertToFormData(\n {\n model: this.modelId,\n prompt,\n image: await Promise.all(files.map((file) => fileToBlob(file))),\n mask: mask != null ? await fileToBlob(mask) : void 0,\n n,\n size,\n ...(_d = providerOptions.deepinfra) != null ? _d : {}\n },\n { useArrayBrackets: false }\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraEditErrorSchema,\n errorToMessage: (error) => {\n var _a2, _b2;\n return (_b2 = (_a2 = error.error) == null ? void 0 : _a2.message) != null ? _b2 : \"Unknown error\";\n }\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraEditResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response2.data.map((item) => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders2\n }\n };\n }\n const splitSize = size == null ? void 0 : size.split(\"x\");\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n prompt,\n num_images: n,\n ...aspectRatio && { aspect_ratio: aspectRatio },\n ...splitSize && { width: splitSize[0], height: splitSize[1] },\n ...seed != null && { seed },\n ...(_e = providerOptions.deepinfra) != null ? _e : {}\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraErrorSchema,\n errorToMessage: (error) => error.detail.error\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraImageResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response.images.map(\n (image) => image.replace(/^data:image\\/\\w+;base64,/, \"\")\n ),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders\n }\n };\n }\n getEditUrl() {\n const baseUrl = this.config.baseURL.replace(\"/inference\", \"/openai\");\n return `${baseUrl}/images/edits`;\n }\n};\nvar deepInfraErrorSchema = z.object({\n detail: z.object({\n error: z.string()\n })\n});\nvar deepInfraImageResponseSchema = z.object({\n images: z.array(z.string())\n});\nvar deepInfraEditErrorSchema = z.object({\n error: z.object({\n message: z.string()\n }).optional()\n});\nvar deepInfraEditResponseSchema = z.object({\n data: z.array(z.object({ b64_json: z.string() }))\n});\nasync function fileToBlob(file) {\n if (file.type === \"url\") {\n return downloadBlob(file.url);\n }\n const data = file.data instanceof Uint8Array ? file.data : convertBase64ToUint8Array(file.data);\n return new Blob([data], { type: file.mediaType });\n}\n\n// src/deepinfra-chat-language-model.ts\nimport { OpenAICompatibleChatLanguageModel } from \"@ai-sdk/openai-compatible\";\nvar DeepInfraChatLanguageModel = class extends OpenAICompatibleChatLanguageModel {\n constructor(modelId, config) {\n super(modelId, config);\n }\n /**\n * Fixes incorrect token usage for Gemini/Gemma models from DeepInfra.\n *\n * DeepInfra's API returns completion_tokens that don't include reasoning_tokens\n * for Gemini/Gemma models, which violates the OpenAI-compatible spec.\n * According to the spec, completion_tokens should include reasoning_tokens.\n *\n * Example of incorrect data from DeepInfra:\n * {\n * \"completion_tokens\": 84, // text-only tokens\n * \"completion_tokens_details\": {\n * \"reasoning_tokens\": 1081 // reasoning tokens not included above\n * }\n * }\n *\n * This would result in negative text tokens: 84 - 1081 = -997\n *\n * The fix: If reasoning_tokens > completion_tokens, add reasoning_tokens\n * to completion_tokens: 84 + 1081 = 1165\n */\n fixUsageForGeminiModels(usage) {\n var _a, _b;\n if (!usage || !((_a = usage.completion_tokens_details) == null ? void 0 : _a.reasoning_tokens)) {\n return usage;\n }\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = usage.completion_tokens_details.reasoning_tokens;\n if (reasoningTokens > completionTokens) {\n const correctedCompletionTokens = completionTokens + reasoningTokens;\n return {\n ...usage,\n // Add reasoning_tokens to completion_tokens to get the correct total\n completion_tokens: correctedCompletionTokens,\n // Update total_tokens if present\n total_tokens: usage.total_tokens != null ? usage.total_tokens + reasoningTokens : void 0\n };\n }\n return usage;\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const result = await super.doGenerate(options);\n if ((_a = result.usage) == null ? void 0 : _a.raw) {\n const fixedRawUsage = this.fixUsageForGeminiModels(result.usage.raw);\n if (fixedRawUsage !== result.usage.raw) {\n const promptTokens = (_b = fixedRawUsage.prompt_tokens) != null ? _b : 0;\n const completionTokens = (_c = fixedRawUsage.completion_tokens) != null ? _c : 0;\n const cacheReadTokens = (_e = (_d = fixedRawUsage.prompt_tokens_details) == null ? void 0 : _d.cached_tokens) != null ? _e : 0;\n const reasoningTokens = (_g = (_f = fixedRawUsage.completion_tokens_details) == null ? void 0 : _f.reasoning_tokens) != null ? _g : 0;\n return {\n ...result,\n usage: {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: fixedRawUsage\n }\n };\n }\n }\n return result;\n }\n async doStream(options) {\n const result = await super.doStream(options);\n const originalStream = result.stream;\n const fixUsage = this.fixUsageForGeminiModels.bind(this);\n const transformedStream = new ReadableStream({\n async start(controller) {\n var _a, _b, _c, _d, _e, _f, _g;\n const reader = originalStream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value.type === \"finish\" && ((_a = value.usage) == null ? void 0 : _a.raw)) {\n const fixedRawUsage = fixUsage(value.usage.raw);\n if (fixedRawUsage !== value.usage.raw) {\n const promptTokens = (_b = fixedRawUsage.prompt_tokens) != null ? _b : 0;\n const completionTokens = (_c = fixedRawUsage.completion_tokens) != null ? _c : 0;\n const cacheReadTokens = (_e = (_d = fixedRawUsage.prompt_tokens_details) == null ? void 0 : _d.cached_tokens) != null ? _e : 0;\n const reasoningTokens = (_g = (_f = fixedRawUsage.completion_tokens_details) == null ? void 0 : _f.reasoning_tokens) != null ? _g : 0;\n controller.enqueue({\n ...value,\n usage: {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: fixedRawUsage\n }\n });\n } else {\n controller.enqueue(value);\n }\n } else {\n controller.enqueue(value);\n }\n }\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n }\n });\n return {\n ...result,\n stream: transformedStream\n };\n }\n};\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/deepinfra-provider.ts\nfunction createDeepInfra(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.deepinfra.com/v1\"\n );\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"DEEPINFRA_API_KEY\",\n description: \"DeepInfra's API key\"\n })}`,\n ...options.headers\n },\n `ai-sdk/deepinfra/${VERSION}`\n );\n const getCommonModelConfig = (modelType) => ({\n provider: `deepinfra.${modelType}`,\n url: ({ path }) => `${baseURL}/openai${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new DeepInfraChatLanguageModel(\n modelId,\n getCommonModelConfig(\"chat\")\n );\n };\n const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig(\"completion\")\n );\n const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig(\"embedding\")\n );\n const createImageModel = (modelId) => new DeepInfraImageModel(modelId, {\n ...getCommonModelConfig(\"image\"),\n baseURL: baseURL ? `${baseURL}/inference` : \"https://api.deepinfra.com/v1/inference\"\n });\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.languageModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n return provider;\n}\nvar deepinfra = createDeepInfra();\nexport {\n VERSION,\n createDeepInfra,\n deepinfra\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "9D93C6FDCB7A141B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+provider@3.0.14/node_modules/@ai-sdk/provider/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n constructor({\n value,\n cause,\n context\n }) {\n let contextPrefix = \"Type validation failed\";\n if (context == null ? void 0 : context.field) {\n contextPrefix += ` for ${context.field}`;\n }\n if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {\n contextPrefix += \" (\";\n const parts = [];\n if (context.entityName) {\n parts.push(context.entityName);\n }\n if (context.entityId) {\n parts.push(`id: \"${context.entityId}\"`);\n }\n contextPrefix += parts.join(\", \");\n contextPrefix += \")\";\n }\n super({\n name: name12,\n message: `${contextPrefix}: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n this.context = context;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value and context, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n context\n }) {\n var _a15, _b15, _c;\n if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a15 = cause.context) == null ? void 0 : _a15.field) === (context == null ? void 0 : context.field) && ((_b15 = cause.context) == null ? void 0 : _b15.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {\n return cause;\n }\n return new _TypeValidationError({ value, cause, context });\n }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "5E9E2E452BDE2E8D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+perplexity@3.0.26+d6123d32214422cb/node_modules/@ai-sdk/perplexity/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/perplexity-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/perplexity-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/convert-perplexity-usage.ts\nfunction convertPerplexityUsage(usage) {\n var _a, _b, _c;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = (_a = usage.prompt_tokens) != null ? _a : 0;\n const completionTokens = (_b = usage.completion_tokens) != null ? _b : 0;\n const reasoningTokens = (_c = usage.reasoning_tokens) != null ? _c : 0;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens\n },\n raw: usage\n };\n}\n\n// src/convert-to-perplexity-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToPerplexityMessages(prompt) {\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\":\n case \"assistant\": {\n const hasMultipartContent = content.some(\n (part) => part.type === \"file\" && part.mediaType.startsWith(\"image/\") || part.type === \"file\" && part.mediaType === \"application/pdf\"\n );\n const messageContent = content.map((part, index) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return {\n type: \"text\",\n text: part.text\n };\n }\n case \"file\": {\n if (part.mediaType === \"application/pdf\") {\n return part.data instanceof URL ? {\n type: \"file_url\",\n file_url: {\n url: part.data.toString()\n },\n file_name: part.filename\n } : {\n type: \"file_url\",\n file_url: {\n url: typeof part.data === \"string\" ? part.data : convertUint8ArrayToBase64(part.data)\n },\n file_name: part.filename || `document-${index}.pdf`\n };\n } else if (part.mediaType.startsWith(\"image/\")) {\n return part.data instanceof URL ? {\n type: \"image_url\",\n image_url: {\n url: part.data.toString()\n }\n } : {\n type: \"image_url\",\n image_url: {\n url: `data:${(_a = part.mediaType) != null ? _a : \"image/jpeg\"};base64,${typeof part.data === \"string\" ? part.data : convertUint8ArrayToBase64(part.data)}`\n }\n };\n }\n }\n }\n }).filter(Boolean);\n messages.push({\n role,\n content: hasMultipartContent ? messageContent : messageContent.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\")\n });\n break;\n }\n case \"tool\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"Tool messages\"\n });\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/map-perplexity-finish-reason.ts\nfunction mapPerplexityFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n case \"length\":\n return finishReason;\n default:\n return \"other\";\n }\n}\n\n// src/perplexity-language-model.ts\nvar PerplexityLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.provider = \"perplexity\";\n this.supportedUrls = {\n // No URLs are supported.\n };\n this.modelId = modelId;\n this.config = config;\n }\n getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions\n }) {\n var _a;\n const warnings = [];\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n if (stopSequences != null) {\n warnings.push({ type: \"unsupported\", feature: \"stopSequences\" });\n }\n if (seed != null) {\n warnings.push({ type: \"unsupported\", feature: \"seed\" });\n }\n return {\n args: {\n // model id:\n model: this.modelId,\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? {\n type: \"json_schema\",\n json_schema: { schema: responseFormat.schema }\n } : void 0,\n // provider extensions\n ...(_a = providerOptions == null ? void 0 : providerOptions.perplexity) != null ? _a : {},\n // messages:\n messages: convertToPerplexityMessages(prompt)\n },\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n const { args: body, warnings } = this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: \"text\", text });\n }\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: \"source\",\n sourceType: \"url\",\n id: this.config.generateId(),\n url\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: (_a = choice.finish_reason) != null ? _a : void 0\n },\n usage: convertPerplexityUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images: (_c = (_b = response.images) == null ? void 0 : _b.map((image) => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width\n }))) != null ? _c : null,\n usage: {\n citationTokens: (_e = (_d = response.usage) == null ? void 0 : _d.citation_tokens) != null ? _e : null,\n numSearchQueries: (_g = (_f = response.usage) == null ? void 0 : _f.num_search_queries) != null ? _g : null\n },\n cost: ((_h = response.usage) == null ? void 0 : _h.cost) ? {\n inputTokensCost: (_i = response.usage.cost.input_tokens_cost) != null ? _i : null,\n outputTokensCost: (_j = response.usage.cost.output_tokens_cost) != null ? _j : null,\n requestCost: (_k = response.usage.cost.request_cost) != null ? _k : null,\n totalCost: (_l = response.usage.cost.total_cost) != null ? _l : null\n } : null\n }\n }\n };\n }\n async doStream(options) {\n const { args, warnings } = this.getArgs(options);\n const body = { ...args, stream: true };\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n const providerMetadata = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null\n },\n cost: null,\n images: null\n }\n };\n let isFirstChunk = true;\n let isActive = false;\n const self = this;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (isFirstChunk) {\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n (_a = value.citations) == null ? void 0 : _a.forEach((url) => {\n controller.enqueue({\n type: \"source\",\n sourceType: \"url\",\n id: self.config.generateId(),\n url\n });\n });\n isFirstChunk = false;\n }\n if (value.usage != null) {\n usage = value.usage;\n providerMetadata.perplexity.usage = {\n citationTokens: (_b = value.usage.citation_tokens) != null ? _b : null,\n numSearchQueries: (_c = value.usage.num_search_queries) != null ? _c : null\n };\n providerMetadata.perplexity.cost = value.usage.cost ? {\n inputTokensCost: (_d = value.usage.cost.input_tokens_cost) != null ? _d : null,\n outputTokensCost: (_e = value.usage.cost.output_tokens_cost) != null ? _e : null,\n requestCost: (_f = value.usage.cost.request_cost) != null ? _f : null,\n totalCost: (_g = value.usage.cost.total_cost) != null ? _g : null\n } : null;\n }\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map((image) => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width\n }));\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n const textContent = delta.content;\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: \"text-start\", id: \"0\" });\n isActive = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"0\",\n delta: textContent\n });\n }\n },\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertPerplexityUsage(usage),\n providerMetadata\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1e3)\n };\n}\nvar perplexityCostSchema = z.object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n total_cost: z.number().nullish()\n});\nvar perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n cost: perplexityCostSchema.nullish()\n});\nvar perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: z.number()\n});\nvar perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal(\"assistant\"),\n content: z.string()\n }),\n finish_reason: z.string().nullish()\n })\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish()\n});\nvar perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal(\"assistant\"),\n content: z.string()\n }),\n finish_reason: z.string().nullish()\n })\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish()\n});\nvar perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish()\n })\n});\nvar errorToMessage = (data) => {\n var _a, _b;\n return (_b = (_a = data.error.message) != null ? _a : data.error.type) != null ? _b : \"unknown error\";\n};\n\n// src/version.ts\nvar VERSION = true ? \"3.0.26\" : \"0.0.0-test\";\n\n// src/perplexity-provider.ts\nfunction createPerplexity(options = {}) {\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"PERPLEXITY_API_KEY\",\n description: \"Perplexity\"\n })}`,\n ...options.headers\n },\n `ai-sdk/perplexity/${VERSION}`\n );\n const createLanguageModel = (modelId) => {\n var _a;\n return new PerplexityLanguageModel(modelId, {\n baseURL: withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.perplexity.ai\"\n ),\n headers: getHeaders,\n generateId,\n fetch: options.fetch\n });\n };\n const provider = (modelId) => createLanguageModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.languageModel = createLanguageModel;\n provider.embeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"embeddingModel\" });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar perplexity = createPerplexity();\nexport {\n VERSION,\n createPerplexity,\n perplexity\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6739BA06389F334A64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/config/mcp.ts"], | ||
| "sourcesContent": [ | ||
| "export * as ConfigMCP from \"./mcp.js\"\n\nimport { Schema } from \"effect\"\nimport { Mcp } from \"../mcp.js\"\nimport { optional } from \"../schema.js\"\n\nexport const Timeout = Mcp.TimeoutConfig\nexport type Timeout = Mcp.TimeoutConfig\nexport const Local = Mcp.LocalConfig\nexport type Local = Mcp.LocalConfig\nexport const OAuth = Mcp.OAuthConfig\nexport type OAuth = Mcp.OAuthConfig\nexport const Remote = Mcp.RemoteConfig\nexport type Remote = Mcp.RemoteConfig\nexport const Server = Mcp.ServerConfig\n\nexport class Info extends Schema.Class<Info>(\"Config.MCP\")({\n timeout: Timeout.pipe(optional),\n servers: Schema.Record(Schema.String, Server).pipe(optional),\n}) {}\n" | ||
| ], | ||
| "mappings": ";2TAMO,IAAM,EAAU,EAAI,cAEd,EAAQ,EAAI,YAEZ,EAAQ,EAAI,YAEZ,EAAS,EAAI,aAEb,EAAS,EAAI,aAEnB,MAAM,UAAa,EAAO,MAAY,YAAY,EAAE,CACzD,QAAS,EAAQ,KAAK,CAAQ,EAC9B,QAAS,EAAO,OAAO,EAAO,OAAQ,CAAM,EAAE,KAAK,CAAQ,CAC7D,CAAC,CAAE,CAAC", | ||
| "debugId": "D3841DDF0C25798764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mini.ts"], | ||
| "sourcesContent": [ | ||
| "import { Context, Effect, FileSystem, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { Config } from \"../../config\"\nimport { resolve } from \"@opencode-ai/tui/config\"\nimport { Global } from \"@opencode-ai/util/global\"\n\nexport default Runtime.handler(Commands.commands.mini, (input) =>\n Effect.gen(function* () {\n const { runMini, validateMiniTerminal } = yield* Effect.promise(() => import(\"../../mini\"))\n yield* Effect.promise(async () => validateMiniTerminal())\n const serverURL = Option.getOrUndefined(input.server)\n const server = yield* ServerConnection.resolve({\n server: serverURL,\n standalone: input.standalone,\n mismatch: \"replace\",\n })\n const config = yield* Config.Service\n const global = yield* Global.Service\n const resolved = resolve(yield* config.get(), { terminalSuspend: process.platform !== \"win32\" })\n const fileSystem = yield* FileSystem.FileSystem\n const runServicePromise = Effect.runPromiseWith(Context.make(FileSystem.FileSystem, fileSystem))\n const service = server.service\n yield* Effect.promise(() =>\n runMini({\n server: {\n endpoint: server.endpoint,\n reconnect: service ? (signal) => runServicePromise(service.reconnect(), { signal }) : undefined,\n },\n continue: input.continue,\n session: Option.getOrUndefined(input.session),\n fork: input.fork,\n model: Option.getOrUndefined(input.model),\n agent: Option.getOrUndefined(input.agent),\n prompt: Option.getOrUndefined(input.prompt),\n replay: Option.getOrUndefined(input.replay) ?? resolved.mini?.replay ?? true,\n replayLimit: Option.getOrUndefined(input.replayLimit) ?? resolved.mini?.replay_limit,\n demo: input.demo,\n tuiConfig: resolved,\n config: {\n update: (update) => runServicePromise(config.update(update)),\n },\n paths: { home: global.home, state: global.state, log: global.log },\n }),\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";qkCAQA,IAAe,IAAQ,QAAQ,EAAS,SAAS,KAAM,CAAC,IACtD,EAAO,IAAI,SAAU,EAAG,CACtB,IAAQ,UAAS,wBAAyB,MAAO,EAAO,QAAQ,IAAa,wCAAa,EAC1F,MAAO,EAAO,QAAQ,SAAY,EAAqB,CAAC,EACxD,IAAM,EAAY,EAAO,eAAe,EAAM,MAAM,EAC9C,EAAS,MAAO,EAAiB,QAAQ,CAC7C,OAAQ,EACR,WAAY,EAAM,WAClB,SAAU,SACZ,CAAC,EACK,EAAS,MAAO,EAAO,QACvB,EAAS,MAAO,EAAO,QACvB,EAAW,EAAQ,MAAO,EAAO,IAAI,EAAG,CAAE,gBAAiB,EAA6B,CAAC,EACzF,EAAa,MAAO,EAAW,WAC/B,EAAoB,EAAO,eAAe,EAAQ,KAAK,EAAW,WAAY,CAAU,CAAC,EACzF,EAAU,EAAO,QACvB,MAAO,EAAO,QAAQ,IACpB,EAAQ,CACN,OAAQ,CACN,SAAU,EAAO,SACjB,UAAW,EAAU,CAAC,IAAW,EAAkB,EAAQ,UAAU,EAAG,CAAE,QAAO,CAAC,EAAI,MACxF,EACA,SAAU,EAAM,SAChB,QAAS,EAAO,eAAe,EAAM,OAAO,EAC5C,KAAM,EAAM,KACZ,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,MAAO,EAAO,eAAe,EAAM,KAAK,EACxC,OAAQ,EAAO,eAAe,EAAM,MAAM,EAC1C,OAAQ,EAAO,eAAe,EAAM,MAAM,GAAK,EAAS,MAAM,QAAU,GACxE,YAAa,EAAO,eAAe,EAAM,WAAW,GAAK,EAAS,MAAM,aACxE,KAAM,EAAM,KACZ,UAAW,EACX,OAAQ,CACN,OAAQ,CAAC,IAAW,EAAkB,EAAO,OAAO,CAAM,CAAC,CAC7D,EACA,MAAO,CAAE,KAAM,EAAO,KAAM,MAAO,EAAO,MAAO,IAAK,EAAO,GAAI,CACnE,CAAC,CACH,EACD,CACH", | ||
| "debugId": "682688550DEBCC8864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/run/run.ts", "src/run/noninteractive.ts", "src/run/ui.ts"], | ||
| "sourcesContent": [ | ||
| "import { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { OpenCode, type OpenCodeClient, type SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { FSUtil } from \"@opencode-ai/util/fs-util\"\nimport { open } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { readStdin } from \"../util/io\"\nimport { ServerConnection } from \"../services/server-connection\"\nimport { parseSessionTargetModel, resolveSessionTarget } from \"../session-target\"\nimport { toolInlineInfo } from \"@opencode-ai/tui/mini/tool\"\nimport { runNonInteractivePrompt } from \"./noninteractive\"\nimport { UI } from \"./ui\"\nimport { Env } from \"../env\"\nimport { errorMessage } from \"../util/error\"\n\nexport type RunCommandInput = {\n server: ServerConnection.Resolved\n message: string[]\n continue?: boolean\n session?: string\n fork?: boolean\n model?: string\n agent?: string\n format: \"default\" | \"json\"\n file: string[]\n title?: string\n thinking?: boolean\n auto?: boolean\n}\n\ntype FilePart = {\n url: string\n filename: string\n mime: string\n}\n\ntype Prepared = {\n directory?: string\n message: string\n files: FilePart[]\n}\n\ntype ExecutionOptions = {\n root?: string\n directory?: string\n useServerDirectory?: boolean\n variant?: string\n attached?: boolean\n compatibility?: \"v1\"\n}\n\nclass RunTargetError extends Error {\n constructor(\n message: string,\n readonly sessionID?: string,\n ) {\n super(message)\n }\n}\n\nconst ATTACH_FILE_MAX_BYTES = 10 * 1024 * 1024\n\nexport function runNonInteractive(input: RunCommandInput) {\n return runNonInteractiveWithOptions(input, {})\n}\n\n/** @internal Used only by the V1 command boundary. */\nexport function runNonInteractiveWithOptions(input: RunCommandInput, options: ExecutionOptions) {\n return run(input, options).catch((error) => reportRunError(input, errorMessage(error)))\n}\n\nasync function run(input: RunCommandInput, options: ExecutionOptions) {\n if (input.fork && !input.continue && !input.session) fail(\"--fork requires --continue or --session\")\n const root = options.root ?? process.env.PWD ?? process.cwd()\n const local = localDirectory(root)\n const directory = options.useServerDirectory ? undefined : (options.directory ?? local)\n const message = mergeInput(formatMessage(input.message), process.stdin.isTTY ? undefined : await readStdin())\n if (!message?.trim()) fail(\"You must provide a message\")\n const files = await Promise.all(input.file.map((file) => prepareFile(file, root, options)))\n const prepared = { directory, message, files }\n return execute(input, prepared, input.server.endpoint, options)\n}\n\nasync function execute(input: RunCommandInput, prepared: Prepared, endpoint: Endpoint, options: ExecutionOptions) {\n const client = OpenCode.make({\n baseUrl: endpoint.url,\n headers: Service.headers(endpoint),\n // Bun's default five-minute deadline terminates the event stream used by long-running sessions.\n fetch: ((request: RequestInfo | URL, init?: RequestInit) =>\n fetch(request, { ...init, timeout: false } as BunFetchRequestInit)) as typeof fetch,\n })\n const explicit = parseRunModel(input.model)\n const target = await resolveSessionTarget({\n client,\n location: prepared.directory ? { directory: prepared.directory } : undefined,\n continue: input.continue,\n session: input.session,\n fork: input.fork,\n model: explicit\n ? { providerID: explicit.model.providerID, id: explicit.model.modelID, variant: explicit.variant }\n : undefined,\n agent: input.agent,\n environment: input.server.service ? Env.session() : undefined,\n prepare: async (next) => {\n const selected =\n next.model ??\n (options.variant\n ? await client.model\n .default({ location: { directory: next.location.directory, workspace: next.location.workspaceID } })\n .then((result) => result.data)\n : undefined)\n const model = selected\n ? {\n providerID: selected.providerID,\n id: selected.id,\n variant: options.variant ?? (\"variant\" in selected ? selected.variant : undefined),\n }\n : undefined\n if ((options.variant ?? explicit?.variant) && !model)\n throw new RunTargetError(\"Cannot select a variant before selecting a model\", next.session?.id)\n return { model, agent: next.agent }\n },\n }).catch((error) => {\n if (!(error instanceof RunTargetError)) throw error\n reportRunError(input, error.message, error.sessionID)\n return undefined\n })\n if (!target) return\n const model = target.model ? { providerID: target.model.providerID, modelID: target.model.id } : undefined\n const variant = target.model?.variant\n if (!target.resume && input.title !== undefined) {\n await client.session.rename({\n sessionID: target.session.id,\n title: input.title || prepared.message.slice(0, 50) + (prepared.message.length > 50 ? \"...\" : \"\"),\n })\n }\n\n await runNonInteractivePrompt({\n client,\n sessionID: target.session.id,\n location: target.location,\n message: prepared.message,\n files: prepared.files,\n agent: target.agent,\n model,\n variant,\n thinking: input.thinking ?? false,\n format: input.format,\n auto: input.auto ?? false,\n attached: options.attached ?? true,\n compatibility: options.compatibility,\n renderTool: (part) => renderTool(part, target.location.directory),\n renderToolError: (part) => renderToolError(part, target.location.directory),\n }).catch((error) => reportRunError(input, errorMessage(error), target.session.id))\n}\n\nexport function mergeInput(message: string | undefined, piped: string | undefined) {\n if (!message) return piped || undefined\n if (!piped) return message\n return message + \"\\n\" + piped\n}\n\nfunction formatMessage(message: string[]) {\n const value = message.map((part) => (part.includes(\" \") ? `\"${part.replace(/\"/g, '\\\\\"')}\"` : part)).join(\" \")\n return value || undefined\n}\n\nfunction localDirectory(root: string) {\n try {\n process.chdir(root)\n return process.cwd()\n } catch {\n fail(`Failed to change directory to ${root}`)\n }\n}\n\nexport function parseRunModel(value?: string) {\n const ref = parseSessionTargetModel(value)\n if (!ref) return\n return {\n model: { providerID: ref.providerID, modelID: ref.id },\n variant: ref.variant,\n }\n}\n\nasync function prepareFile(input: string, directory: string, options: ExecutionOptions): Promise<FilePart> {\n const file = path.resolve(directory, input)\n const handle = await open(file, \"r\").catch(() => fail(`File not found: ${input}`))\n try {\n const stat = await handle.stat()\n if (options.compatibility === \"v1\" && options.attached && stat.isDirectory())\n fail(`Cannot attach local directory without a shared filesystem: ${input}`)\n if (!stat.isFile() || stat.size > ATTACH_FILE_MAX_BYTES)\n fail(`Cannot attach a directory, special file, or file larger than 10 MiB: ${input}`)\n const content = Buffer.alloc(Number(stat.size))\n let offset = 0\n while (offset < content.length) {\n const read = await handle.read(content, offset, content.length - offset, offset)\n if (read.bytesRead === 0) break\n offset += read.bytesRead\n }\n const bytes = content.subarray(0, offset)\n const detected = FSUtil.mimeType(file)\n const text = bytes.toString(\"utf8\")\n const mime =\n detected.startsWith(\"image/\") || detected === \"application/pdf\"\n ? detected\n : !isBinaryContent(bytes) && Buffer.from(text, \"utf8\").equals(bytes)\n ? \"text/plain\"\n : detected\n return {\n url: `data:${mime};base64,${bytes.toString(\"base64\")}`,\n filename: path.basename(file),\n mime,\n }\n } finally {\n await handle.close()\n }\n}\n\nfunction isBinaryContent(bytes: Uint8Array) {\n if (bytes.length === 0) return false\n if (bytes.includes(0)) return true\n return bytes.reduce((count, byte) => count + Number(byte < 9 || (byte > 13 && byte < 32)), 0) / bytes.length > 0.3\n}\n\nasync function renderTool(part: SessionMessageAssistantTool, directory: string) {\n const info = toolInlineInfo(part, directory)\n if (info.mode === \"block\") {\n UI.empty()\n UI.println(UI.Style.TEXT_NORMAL + info.icon, UI.Style.TEXT_NORMAL + info.title)\n if (info.body?.trim()) UI.println(info.body)\n UI.empty()\n return\n }\n UI.println(\n UI.Style.TEXT_NORMAL + info.icon,\n UI.Style.TEXT_NORMAL + info.title,\n info.description ? UI.Style.TEXT_DIM + info.description + UI.Style.TEXT_NORMAL : \"\",\n )\n}\n\nasync function renderToolError(part: SessionMessageAssistantTool, directory: string) {\n const info = toolInlineInfo(part, directory)\n UI.println(UI.Style.TEXT_NORMAL + \"✗\", UI.Style.TEXT_NORMAL + `${info.title} failed`)\n}\n\n/** @internal Used by the V1 command boundary before a Session exists. */\nexport function reportRunError(input: Pick<RunCommandInput, \"format\">, message: string, sessionID?: string) {\n process.exitCode = 1\n if (input.format === \"json\") {\n process.stdout.write(\n JSON.stringify({\n type: \"error\",\n timestamp: Date.now(),\n sessionID: sessionID ?? \"\",\n error: { type: \"unknown\", message },\n }) + \"\\n\",\n )\n return\n }\n UI.error(message)\n}\n\nfunction fail(message: string): never {\n throw new Error(message)\n}\n", | ||
| "import type {\n EventSubscribeOutput,\n JsonValue,\n LocationRef,\n OpenCodeClient,\n SessionMessageAssistantTool,\n SessionMessageInfo,\n ToolContent,\n} from \"@opencode-ai/client/promise\"\nimport { SessionMessage } from \"@opencode-ai/schema/session-message\"\nimport { EOL } from \"node:os\"\nimport { readFile } from \"node:fs/promises\"\nimport { nonEmptyToolContent, toolOutputText, type MiniToolPart } from \"@opencode-ai/tui/mini/tool\"\nimport { UI } from \"./ui\"\n\ntype Model = {\n providerID: string\n modelID: string\n}\n\ntype File = {\n url: string\n filename: string\n mime: string\n}\n\ntype Input = {\n client: OpenCodeClient\n sessionID: string\n location: LocationRef\n message: string\n files: File[]\n agent?: string\n model?: Model\n variant?: string\n thinking: boolean\n format: \"default\" | \"json\"\n auto: boolean\n /** True when the client is attached to a shared server rather than an exclusive in-process one. */\n attached: boolean\n compatibility?: \"v1\"\n renderTool: (part: SessionMessageAssistantTool) => Promise<void>\n renderToolError: (part: SessionMessageAssistantTool) => Promise<void>\n}\n\ntype StartedPart = {\n id: string\n timestamp: number\n}\n\ntype ToolState = StartedPart & {\n assistantMessageID: string\n tool: string\n input: Record<string, JsonValue>\n raw?: string\n provider?: unknown\n providerState?: SessionMessageAssistantTool[\"providerState\"]\n metadata: Record<string, JsonValue>\n content: ToolContent[]\n}\n\ntype V2Event = EventSubscribeOutput\ntype FormRequest = Extract<V2Event, { type: \"form.created\" }>[\"data\"][\"form\"]\n\n// MCP elicitations are temporarily owned by the \"global\" sentinel instead of a real\n// session. An exclusive local process may treat them as this run's blockers; an\n// attached client must not cancel input that may belong to another session.\nconst GLOBAL_FORM_SESSION_ID = \"global\"\n\nexport async function runNonInteractivePrompt(input: Input) {\n const controller = new AbortController()\n const stream = input.client.event.subscribe({ signal: controller.signal })[Symbol.asyncIterator]()\n const connected = await stream.next()\n if (connected.done) throw new Error(\"Event stream disconnected before prompt admission\")\n\n const messageID = SessionMessage.ID.create()\n const starts = new Map<string, StartedPart>()\n const tools = new Map<string, ToolState>()\n const renderedText = new Map<string, string>()\n const renderedReasoning = new Map<string, string>()\n const renderedTools = new Set<string>()\n let submitted = false\n let promoted = false\n let emittedError = false\n let permissionRejected = false\n let formCancelled = false\n let interrupted = false\n let v1InvalidOutput = false\n let prePromotionError: { message: string; [key: string]: unknown } | undefined\n let finalizing = false\n let admission: AbortController | undefined\n let pendingStep: { timestamp: number; part: Record<string, unknown>; label: string } | undefined\n\n const emit = (type: string, timestamp: number, data: Record<string, unknown>) => {\n if (input.format !== \"json\") return false\n process.stdout.write(JSON.stringify({ type, timestamp, sessionID: input.sessionID, ...data }) + EOL)\n return true\n }\n\n const writeText = (part: { text: string; [key: string]: unknown }, timestamp: number) => {\n if (emit(\"text\", timestamp, { part })) return\n const text = part.text.trim()\n if (!text) return\n if (!process.stdout.isTTY) {\n process.stdout.write(text + EOL)\n return\n }\n UI.empty()\n UI.println(text)\n UI.empty()\n }\n\n const writeReasoning = (part: { text: string; [key: string]: unknown }, timestamp: number) => {\n if (emit(\"reasoning\", timestamp, { part })) return\n const text = part.text.trim()\n if (!text) return\n const line = `Thinking: ${text}`\n if (!process.stdout.isTTY) return void process.stdout.write(line + EOL)\n UI.empty()\n UI.println(`${UI.Style.TEXT_DIM}\\u001b[3m${line}\\u001b[0m${UI.Style.TEXT_NORMAL}`)\n UI.empty()\n }\n\n const flushStep = () => {\n if (!pendingStep) return\n const value = pendingStep\n pendingStep = undefined\n if (!emit(\"step_start\", value.timestamp, { part: value.part }) && input.format !== \"json\") {\n UI.empty()\n UI.println(value.label)\n UI.empty()\n }\n }\n\n const replyPermission = async (request: { id: string; action: string; resources: ReadonlyArray<string> }) => {\n if (!input.auto) {\n permissionRejected = true\n UI.println(\n UI.Style.TEXT_WARNING_BOLD + \"!\",\n UI.Style.TEXT_NORMAL +\n `permission requested: ${request.action} (${request.resources.join(\", \")}); auto-rejecting`,\n )\n }\n await input.client.permission\n .reply({\n sessionID: input.sessionID,\n requestID: request.id,\n reply: input.auto ? \"once\" : \"reject\",\n })\n .catch(() => {})\n if (!input.auto) {\n await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n }\n\n const cancelForm = async (request: Pick<FormRequest, \"id\" | \"sessionID\">) => {\n try {\n await input.client.form.cancel(\n { sessionID: request.sessionID, formID: request.id },\n ...formRequestOptions(request.sessionID === GLOBAL_FORM_SESSION_ID ? input.location : undefined),\n )\n } catch (error) {\n if (!formAlreadySettled(error)) throw error\n }\n formCancelled = true\n }\n\n const consume = async () => {\n while (!controller.signal.aborted) {\n const next = await stream.next().catch((error) => {\n if (!emittedError) throw error\n return { done: true as const, value: undefined }\n })\n if (next.done) {\n if (emittedError) return\n throw new Error(\"Event stream disconnected during prompt execution\")\n }\n const event = next.value\n\n if (event.type === \"permission.asked\" && submitted && event.data.sessionID === input.sessionID) {\n await replyPermission(event.data)\n continue\n }\n if (\n event.type === \"form.created\" &&\n submitted &&\n (event.data.form.sessionID === input.sessionID ||\n (!input.attached &&\n event.data.form.sessionID === GLOBAL_FORM_SESSION_ID &&\n sameLocation(event.location, input.location)))\n ) {\n await cancelForm(event.data.form)\n continue\n }\n if (!(\"sessionID\" in event.data) || event.data.sessionID !== input.sessionID) continue\n const time = toMillis(\"created\" in event ? event.created : undefined)\n\n if (event.type === \"session.inbox.delivered\") {\n if (event.data.inboxID === messageID) {\n promoted = true\n prePromotionError = undefined\n continue\n }\n }\n if (\n event.type === \"session.execution.interrupted\" &&\n event.data.reason === \"user\" &&\n (interrupted || permissionRejected || formCancelled)\n ) {\n return\n }\n if (!promoted && event.type === \"session.execution.failed\") {\n prePromotionError = event.data.error\n if (finalizing) return\n continue\n }\n if (\n !promoted &&\n finalizing &&\n (event.type === \"session.execution.succeeded\" || event.type === \"session.execution.interrupted\")\n )\n return\n if (!promoted) continue\n if (finalizing && !event.type.startsWith(\"session.execution.\")) continue\n\n if (event.type === \"session.step.started\") {\n const part = {\n id: partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"step-start\",\n snapshot: event.data.snapshot,\n }\n if (input.compatibility === \"v1\") {\n pendingStep = {\n timestamp: time,\n part,\n label: `> ${event.data.agent} · ${event.data.model.id}`,\n }\n continue\n }\n if (!emit(\"step_start\", time, { part }) && input.format !== \"json\") {\n UI.empty()\n UI.println(`> ${event.data.agent} · ${event.data.model.id}`)\n UI.empty()\n }\n continue\n }\n\n if (event.type === \"session.text.started\") {\n flushStep()\n starts.set(`text\\u0000${contentKey(event.data.assistantMessageID, event.data.ordinal)}`, {\n id: partID(event.id),\n timestamp: time,\n })\n continue\n }\n if (event.type === \"session.text.ended\") {\n const key = contentKey(event.data.assistantMessageID, event.data.ordinal)\n const started = starts.get(`text\\u0000${key}`)\n starts.delete(`text\\u0000${key}`)\n const part = {\n id: started?.id ?? partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"text\",\n text: event.data.text,\n time: { start: started?.timestamp ?? time, end: time },\n }\n renderedText.set(key, event.data.text)\n writeText(part, time)\n continue\n }\n\n if (event.type === \"session.reasoning.started\") {\n flushStep()\n starts.set(`reasoning\\u0000${contentKey(event.data.assistantMessageID, event.data.ordinal)}`, {\n id: partID(event.id),\n timestamp: time,\n })\n continue\n }\n if (event.type === \"session.reasoning.ended\" && input.thinking) {\n const key = contentKey(event.data.assistantMessageID, event.data.ordinal)\n const started = starts.get(`reasoning\\u0000${key}`)\n starts.delete(`reasoning\\u0000${key}`)\n const part = {\n id: started?.id ?? partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"reasoning\",\n text: event.data.text,\n metadata: event.data.state,\n time: { start: started?.timestamp ?? time, end: time },\n }\n renderedReasoning.set(key, event.data.text)\n writeReasoning(part, time)\n continue\n }\n\n if (event.type === \"session.tool.input.started\") {\n flushStep()\n tools.set(toolKey(event.data.assistantMessageID, event.data.id), {\n id: partID(event.id),\n timestamp: time,\n assistantMessageID: event.data.assistantMessageID,\n tool: event.data.name,\n input: {},\n metadata: {},\n content: [],\n })\n continue\n }\n if (event.type === \"session.tool.input.ended\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) current.raw = event.data.text\n continue\n }\n if (event.type === \"session.tool.input.delta\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) current.raw = (current.raw ?? \"\") + event.data.delta\n continue\n }\n if (event.type === \"session.tool.called\") {\n flushStep()\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key)\n tools.set(key, {\n id: current?.id ?? partID(event.id),\n timestamp: current?.timestamp ?? time,\n assistantMessageID: event.data.assistantMessageID,\n tool: current?.tool ?? \"tool\",\n input: event.data.input,\n raw: current?.raw,\n provider: { executed: event.data.executed, state: event.data.state },\n providerState: event.data.state,\n metadata: {},\n content: [],\n })\n continue\n }\n if (event.type === \"session.tool.progress\") {\n const current = tools.get(toolKey(event.data.assistantMessageID, event.data.id))\n if (current) {\n current.metadata = event.data.metadata\n }\n continue\n }\n if (event.type === \"session.tool.success\") {\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key) ?? fallbackTool(event)\n const tool: SessionMessageAssistantTool = {\n type: \"tool\",\n id: event.data.id,\n name: current.tool,\n executed: event.data.executed,\n providerState: current.providerState,\n providerResultState: event.data.resultState,\n state: {\n status: \"completed\",\n input: current.input,\n metadata: event.data.metadata,\n content: event.data.content,\n },\n time: { created: current.timestamp, ran: current.timestamp, completed: time },\n }\n const part: MiniToolPart = {\n partID: current.id,\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"tool\",\n id: event.data.id,\n tool: current.tool,\n state: {\n status: \"completed\",\n input: current.input,\n output: toolOutputText(current.tool, event.data.content),\n title: current.tool,\n metadata: {\n metadata: event.data.metadata,\n content: event.data.content,\n providerCall: current.provider,\n providerResult: { executed: event.data.executed, state: event.data.resultState },\n rawInput: current.raw,\n },\n time: { start: current.timestamp, end: time },\n },\n }\n tools.delete(key)\n renderedTools.add(key)\n if (!emit(\"tool_use\", time, { part })) await input.renderTool(tool)\n continue\n }\n if (event.type === \"session.tool.failed\") {\n const key = toolKey(event.data.assistantMessageID, event.data.id)\n const current = tools.get(key) ?? fallbackTool(event)\n const error = event.data.error.message\n const metadata = event.data.metadata ?? current.metadata\n const content = event.data.content ?? nonEmptyToolContent(current.content)\n const tool: SessionMessageAssistantTool = {\n type: \"tool\",\n id: event.data.id,\n name: current.tool,\n executed: event.data.executed,\n providerState: current.providerState,\n providerResultState: event.data.resultState,\n state: {\n status: \"error\",\n input: current.input,\n metadata,\n content,\n error: event.data.error,\n },\n time: { created: current.timestamp, ran: current.timestamp, completed: time },\n }\n const part: MiniToolPart = {\n partID: current.id,\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"tool\",\n id: event.data.id,\n tool: current.tool,\n state: {\n status: \"error\",\n input: current.input,\n error,\n metadata: {\n providerCall: current.provider,\n providerResult: { executed: event.data.executed, state: event.data.resultState },\n rawInput: current.raw,\n },\n time: { start: current.timestamp, end: time },\n },\n }\n tools.delete(key)\n renderedTools.add(key)\n if (input.compatibility === \"v1\" && (permissionRejected || formCancelled)) continue\n if (!emit(\"tool_use\", time, { part })) {\n if (content && toolOutputText(current.tool, content).trim())\n await input.renderTool({\n ...tool,\n state: {\n status: \"completed\",\n input: current.input,\n metadata,\n content,\n },\n })\n await input.renderToolError(tool)\n UI.error(error)\n }\n continue\n }\n\n if (event.type === \"session.step.ended\") {\n flushStep()\n const part = {\n id: partID(event.id),\n sessionID: input.sessionID,\n messageID: event.data.assistantMessageID,\n type: \"step-finish\",\n reason: event.data.finish,\n snapshot: event.data.snapshot,\n cost: event.data.cost,\n tokens: event.data.tokens,\n }\n emit(\"step_finish\", time, { part })\n continue\n }\n if (event.type === \"session.step.failed\") {\n if (input.compatibility === \"v1\" && event.data.error.message === \"The provider response ended unexpectedly.\") {\n pendingStep = undefined\n v1InvalidOutput = true\n continue\n }\n if (interrupted || permissionRejected || formCancelled) continue\n flushStep()\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", time, { error: event.data.error })) UI.error(event.data.error.message)\n continue\n }\n if (event.type === \"session.execution.failed\") {\n if (input.compatibility === \"v1\" && (v1InvalidOutput || permissionRejected || formCancelled)) return\n flushStep()\n if (!emittedError && !formCancelled) {\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", time, { error: event.data.error })) UI.error(event.data.error.message)\n }\n return\n }\n if (event.type === \"session.execution.interrupted\") {\n if (input.compatibility === \"v1\" && (permissionRejected || formCancelled)) return\n if (event.data.reason === \"user\" && interrupted) process.exitCode = 130\n if (event.data.reason !== \"user\" && !emittedError) {\n emittedError = true\n process.exitCode = 1\n const error = { type: \"aborted\" as const, message: `Session interrupted: ${event.data.reason}` }\n if (!emit(\"error\", time, { error })) UI.error(error.message)\n }\n return\n }\n if (event.type === \"session.execution.succeeded\") return\n }\n }\n\n const projectedMessages = async () => {\n const messages: SessionMessageInfo[] = []\n let cursor: string | undefined\n while (true) {\n const page = await input.client.message.list(\n cursor\n ? { sessionID: input.sessionID, limit: 200, cursor }\n : { sessionID: input.sessionID, limit: 200, order: \"desc\" },\n )\n for (const message of page.data) {\n if (message.id === messageID) return { found: true, messages: messages.toReversed() }\n messages.push(message)\n }\n cursor = page.cursor.next ?? undefined\n if (!cursor) return { found: false, messages: [] }\n }\n }\n\n const reconcile = async () => {\n const projected = await projectedMessages()\n for (const message of projected.messages) {\n if (message.type !== \"assistant\") continue\n const timestamp = message.time.completed ?? message.time.created\n let textOrdinal = 0\n let reasoningOrdinal = 0\n for (const item of message.content) {\n if (item.type === \"text\") {\n const ordinal = textOrdinal++\n const key = contentKey(message.id, ordinal)\n const rendered = renderedText.get(key) ?? \"\"\n if (rendered === item.text || !item.text.startsWith(rendered)) continue\n const text = item.text.slice(rendered.length)\n writeText(\n {\n id: projectedPartID(message.id, `text-${ordinal}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"text\",\n text,\n time: { start: message.time.created, end: timestamp },\n },\n timestamp,\n )\n renderedText.set(key, item.text)\n continue\n }\n if (item.type === \"reasoning\") {\n const ordinal = reasoningOrdinal++\n if (!input.thinking) continue\n const key = contentKey(message.id, ordinal)\n const rendered = renderedReasoning.get(key) ?? \"\"\n if (rendered === item.text || !item.text.startsWith(rendered)) continue\n const text = item.text.slice(rendered.length)\n const part = {\n id: projectedPartID(message.id, `reasoning-${ordinal}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"reasoning\",\n text,\n metadata: item.state,\n time: { start: message.time.created, end: timestamp },\n }\n renderedReasoning.set(key, item.text)\n writeReasoning(part, timestamp)\n continue\n }\n\n const key = toolKey(message.id, item.id)\n if (renderedTools.has(key) || item.state.status === \"streaming\" || item.state.status === \"running\") continue\n const part: MiniToolPart = {\n partID: projectedPartID(message.id, `tool-${item.id}`),\n sessionID: input.sessionID,\n messageID: message.id,\n type: \"tool\",\n id: item.id,\n tool: item.name,\n state:\n item.state.status === \"completed\"\n ? {\n status: \"completed\",\n input: item.state.input,\n output: toolOutputText(item.name, item.state.content),\n title: item.name,\n metadata: { metadata: item.state.metadata, content: item.state.content },\n time: { start: item.time.ran ?? item.time.created, end: item.time.completed ?? timestamp },\n }\n : {\n status: \"error\",\n input: item.state.input,\n error: item.state.error.message,\n metadata: { metadata: item.state.metadata, content: item.state.content },\n time: { start: item.time.ran ?? item.time.created, end: item.time.completed ?? timestamp },\n },\n }\n renderedTools.add(key)\n if (emit(\"tool_use\", timestamp, { part })) continue\n if (item.state.status === \"completed\") {\n await input.renderTool(item)\n continue\n }\n if (item.state.content && toolOutputText(item.name, item.state.content).trim()) {\n await input.renderTool({\n ...item,\n state: {\n status: \"completed\",\n input: item.state.input,\n metadata: item.state.metadata,\n content: item.state.content,\n },\n })\n }\n await input.renderToolError(item)\n UI.error(item.state.error.message)\n }\n\n if (message.error && !emittedError) {\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", timestamp, { error: message.error })) UI.error(message.error.message)\n }\n }\n return {\n found: projected.found,\n responded: projected.messages.some((message) => message.type === \"assistant\"),\n }\n }\n\n const interrupt = () => {\n if (interrupted) process.exit(130)\n interrupted = true\n process.exitCode = 130\n admission?.abort()\n void input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n process.on(\"SIGINT\", interrupt)\n\n let completed: Promise<void> | undefined\n try {\n if (input.agent) {\n await input.client.session.switchAgent({ sessionID: input.sessionID, agent: input.agent })\n }\n const selected = input.model\n ? { providerID: input.model.providerID, id: input.model.modelID, variant: input.variant }\n : input.variant\n ? await input.client.session\n .get({ sessionID: input.sessionID })\n .then((result) => result.model)\n .then(async (model) => {\n if (model) return { ...model, variant: input.variant }\n const result = await input.client.model.default()\n const fallback = result.data\n return fallback ? { providerID: fallback.providerID, id: fallback.id, variant: input.variant } : undefined\n })\n : undefined\n if (input.variant && !selected) throw new Error(\"Cannot select a variant before selecting a model\")\n if (selected) {\n await input.client.session.switchModel({ sessionID: input.sessionID, model: selected })\n }\n\n const prepared = await Promise.all(input.files.map(prepareFile))\n if (interrupted) return\n submitted = true\n completed = consume()\n admission = new AbortController()\n const response = await input.client.session\n .prompt(\n {\n sessionID: input.sessionID,\n id: messageID,\n text: [input.message, ...prepared.flatMap((file) => (file.text ? [file.text] : []))].join(\"\\n\\n\"),\n files: prepared.flatMap((file) => (file.attachment ? [file.attachment] : [])),\n delivery: \"steer\",\n },\n { signal: admission.signal },\n )\n .catch(async (error) => {\n if (interrupted) {\n await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n }\n controller.abort()\n await completed?.catch(() => {})\n if (interrupted || emittedError) return undefined\n throw error\n })\n admission = undefined\n if (!response) return\n if (interrupted) await input.client.session.interrupt({ sessionID: input.sessionID }).catch(() => {})\n\n const [permissions, forms, globals] = await Promise.all([\n input.client.permission.list({ sessionID: input.sessionID }).catch(() => undefined),\n input.client.form.list({ sessionID: input.sessionID }).catch(() => undefined),\n input.attached\n ? Promise.resolve(undefined)\n : input.client.form.request\n .list({\n location: { directory: input.location.directory, workspace: input.location.workspaceID },\n })\n .catch(() => undefined),\n ])\n await Promise.all([\n ...(permissions ?? []).map(replyPermission),\n ...(forms ?? []).map(cancelForm),\n ...(globals && sameLocation(globals.location, input.location)\n ? globals.data.filter((form) => form.sessionID === GLOBAL_FORM_SESSION_ID).map(cancelForm)\n : []),\n ])\n if (input.compatibility === \"v1\") {\n await completed\n return\n }\n\n const waiting = input.client.session.wait({ sessionID: input.sessionID })\n await Promise.race([waiting, completed.then(() => waiting)])\n finalizing = true\n const projected = await reconcile()\n if (\n !projected.responded &&\n !interrupted &&\n !permissionRejected &&\n !formCancelled &&\n !emittedError &&\n !prePromotionError\n ) {\n await completed\n }\n if (!projected.found && !interrupted && !permissionRejected && !formCancelled && !emittedError) {\n const error = prePromotionError ?? { type: \"unknown\", message: \"Prompt was not promoted\" }\n emittedError = true\n process.exitCode = 1\n if (!emit(\"error\", Date.now(), { error })) UI.error(error.message)\n }\n } finally {\n process.off(\"SIGINT\", interrupt)\n controller.abort()\n if (input.compatibility === \"v1\") await stream.return?.(undefined).catch(() => {})\n else void stream.return?.(undefined).catch(() => {})\n }\n}\n\nfunction sameLocation(left: LocationRef | undefined, right: LocationRef) {\n return !!left && left.directory === right.directory && left.workspaceID === right.workspaceID\n}\n\nfunction formRequestOptions(location: LocationRef | undefined): [] | [{ headers: Record<string, string> }] {\n if (!location) return []\n return [\n {\n headers: {\n \"x-opencode-directory\": encodeURIComponent(location.directory),\n ...(location.workspaceID ? { \"x-opencode-workspace\": location.workspaceID } : {}),\n },\n },\n ]\n}\n\nfunction formAlreadySettled(error: unknown) {\n return !!error && typeof error === \"object\" && Reflect.get(error, \"_tag\") === \"FormAlreadySettledError\"\n}\n\nfunction partID(eventID: string) {\n return `prt_${eventID.replace(/^evt_/, \"\")}`\n}\n\nfunction toolKey(messageID: string, id: string) {\n return `${messageID}\\u0000${id}`\n}\n\nfunction contentKey(messageID: string, ordinal: number) {\n return `${messageID}\\u0000${ordinal}`\n}\n\nfunction projectedPartID(messageID: string, part: string) {\n return `prt_${messageID.replace(/^msg_/, \"\")}_${part}`\n}\n\nfunction fallbackTool(event: {\n id: string\n created: number\n data: { assistantMessageID: string; id: string }\n}): ToolState {\n return {\n id: partID(event.id),\n timestamp: toMillis(event.created),\n assistantMessageID: event.data.assistantMessageID,\n tool: \"tool\",\n input: {},\n metadata: {},\n content: [],\n }\n}\n\nfunction toMillis(value: unknown) {\n if (typeof value === \"number\") return value\n if (typeof value === \"string\") return new Date(value).getTime()\n return Date.now()\n}\n\nasync function prepareFile(file: File) {\n if (file.mime !== \"text/plain\") {\n const uri = file.url.startsWith(\"data:\")\n ? file.url\n : `data:${file.mime};base64,${(await readFile(new URL(file.url))).toString(\"base64\")}`\n return { attachment: { uri, name: file.filename } }\n }\n const content = file.url.startsWith(\"data:\")\n ? Buffer.from(file.url.slice(file.url.indexOf(\",\") + 1), \"base64\").toString(\"utf8\")\n : await readFile(new URL(file.url), \"utf8\")\n return { text: `<file name=\"${file.filename}\">\\n${content}\\n</file>` }\n}\n", | ||
| "import { EOL } from \"node:os\"\n\nexport const Style = {\n TEXT_DIM: \"\\x1b[90m\",\n TEXT_NORMAL: \"\\x1b[0m\",\n TEXT_WARNING_BOLD: \"\\x1b[93m\\x1b[1m\",\n TEXT_DANGER_BOLD: \"\\x1b[91m\\x1b[1m\",\n}\n\nexport function println(...message: string[]) {\n process.stderr.write(message.join(\" \") + EOL)\n}\n\nlet blank = false\n\nexport function empty() {\n if (blank) return\n println(Style.TEXT_NORMAL)\n blank = true\n}\n\nexport function error(message: string) {\n if (message.startsWith(\"Error: \")) message = message.slice(\"Error: \".length)\n println(Style.TEXT_DANGER_BOLD + \"Error: \" + Style.TEXT_NORMAL + message)\n}\n\nexport * as UI from \"./ui\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F3E4CEBFE21D11E764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "8175793C2441B69664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { Gemini } from \"../protocols/gemini.js\"\nimport { ProviderShared } from \"../protocols/shared.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Route, type RouteDefaultsInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport { ProviderID, type LLMRequest, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\n\nexport interface GeminiOptionsInput extends Gemini.OptionsInput {\n readonly labels?: Readonly<Record<string, string>>\n}\n\nexport type GeminiProviderOptionsInput = GeminiOptionsInput\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.ApiKeyOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: GeminiProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly accessToken?: string; readonly apiKey?: never }\n | { readonly accessToken?: never; readonly apiKey?: string }\n ) & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: GeminiProviderOptionsInput\n }\n\nconst fromRequest = Effect.fn(\"GoogleVertex.fromRequest\")(function* (request: LLMRequest) {\n const body = yield* Gemini.protocol.body.from(request)\n // Vertex's native REST schema rejects `id` on FunctionCall/FunctionResponse parts with HTTP 400,\n // unlike AI Studio, so history minted there cannot be lowered verbatim.\n const contents = body.contents.map((content) => ({\n ...content,\n parts: (content.parts ?? []).map((part) => {\n if (\"functionCall\" in part) return { ...part, functionCall: { ...part.functionCall, id: undefined } }\n if (\"functionResponse\" in part) return { ...part, functionResponse: { ...part.functionResponse, id: undefined } }\n return part\n }),\n }))\n const value = request.providerOptions?.labels\n const labels = ProviderShared.isRecord(value)\n ? Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === \"string\"),\n )\n : undefined\n return { ...body, contents, labels }\n})\n\nconst protocol = {\n ...Gemini.protocol,\n body: {\n ...Gemini.protocol.body,\n from: fromRequest,\n },\n}\n\nconst route = Route.make({\n id: \"google-vertex-gemini\",\n provider: id,\n providerMetadataKey: \"google\",\n protocol,\n endpoint: Endpoint.path(({ request }) => {\n const model = String(request.model.id)\n return `/${model.startsWith(\"endpoints/\") ? model : `models/${model}`}:streamGenerateContent?alt=sse`\n }),\n auth: Auth.none,\n framing: Framing.sse,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config, modelID: string | ModelID) => {\n const {\n accessToken: _accessToken,\n apiKey: _apiKey,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const apiKey = GoogleVertexShared.apiKey(input)\n const endpointModel = String(modelID).startsWith(\"endpoints/\")\n if (apiKey !== undefined && endpointModel)\n throw new Error(\"Google Vertex tuned models do not support Express Mode API keys\")\n const location = GoogleVertexShared.location(inputLocation, \"us-central1\")\n const project = GoogleVertexShared.project(inputProject)\n const endpoint =\n baseURL ??\n (apiKey\n ? \"https://aiplatform.googleapis.com/v1/publishers/google\"\n : `https://${GoogleVertexShared.host(location)}/v1beta1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}${endpointModel ? \"\" : \"/publishers/google\"}`)\n return route.with({\n ...rest,\n endpoint: { baseURL: endpoint },\n auth: apiKey === undefined ? GoogleVertexShared.oauth(input, project) : Auth.header(\"x-goog-api-key\", apiKey),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n return {\n id,\n model: (modelID: string | ModelID) =>\n configuredRoute(input, modelID).model<GeminiProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\nexport const model: ProviderPackage.Definition<Settings, GeminiProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n if (settings.apiKey !== undefined && settings.accessToken !== undefined)\n throw new Error(\"Google Vertex apiKey cannot be combined with accessToken or auth\")\n return configure({\n ...(settings.apiKey === undefined ? { accessToken: settings.accessToken } : { apiKey: settings.apiKey }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";wPAiBO,IAAM,EAAK,EAAW,KAAK,eAAe,EAqB3C,EAAc,EAAO,GAAG,0BAA0B,EAAE,SAAU,CAAC,EAAqB,CACxF,IAAM,EAAO,MAAO,EAAO,SAAS,KAAK,KAAK,CAAO,EAG/C,EAAW,EAAK,SAAS,IAAI,CAAC,KAAa,IAC5C,EACH,OAAQ,EAAQ,OAAS,CAAC,GAAG,IAAI,CAAC,IAAS,CACzC,GAAI,iBAAkB,EAAM,MAAO,IAAK,EAAM,aAAc,IAAK,EAAK,aAAc,GAAI,MAAU,CAAE,EACpG,GAAI,qBAAsB,EAAM,MAAO,IAAK,EAAM,iBAAkB,IAAK,EAAK,iBAAkB,GAAI,MAAU,CAAE,EAChH,OAAO,EACR,CACH,EAAE,EACI,EAAQ,EAAQ,iBAAiB,OACjC,EAAS,EAAe,SAAS,CAAK,EACxC,OAAO,YACL,OAAO,QAAQ,CAAK,EAAE,OAAO,CAAC,IAAqC,OAAO,EAAM,KAAO,QAAQ,CACjG,EACA,OACJ,MAAO,IAAK,EAAM,WAAU,QAAO,EACpC,EAEK,EAAW,IACZ,EAAO,SACV,KAAM,IACD,EAAO,SAAS,KACnB,KAAM,CACR,CACF,EAEM,EAAQ,EAAM,KAAK,CACvB,GAAI,uBACJ,SAAU,EACV,oBAAqB,SACrB,WACA,SAAU,EAAS,KAAK,EAAG,aAAc,CACvC,IAAM,EAAQ,OAAO,EAAQ,MAAM,EAAE,EACrC,MAAO,IAAI,EAAM,WAAW,YAAY,EAAI,EAAQ,UAAU,oCAC/D,EACD,KAAM,EAAK,KACX,QAAS,EAAQ,GACnB,CAAC,EAEY,EAAS,CAAC,CAAK,EAEtB,EAAkB,CAAC,EAAe,IAA8B,CACpE,IACE,YAAa,EACb,OAAQ,EACR,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAS,EAAmB,OAAO,CAAK,EACxC,EAAgB,OAAO,CAAO,EAAE,WAAW,YAAY,EAC7D,GAAI,IAAW,QAAa,EAC1B,MAAU,MAAM,iEAAiE,EACnF,IAAM,EAAW,EAAmB,SAAS,EAAe,aAAa,EACnE,EAAU,EAAmB,QAAQ,CAAY,EACjD,EACJ,IACC,EACG,yDACA,WAAW,EAAmB,KAAK,CAAQ,sBAAsB,EAAmB,eAAe,CAAO,eAAe,IAAW,EAAgB,GAAK,wBAC/J,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CAAE,QAAS,CAAS,EAC9B,KAAM,IAAW,OAAY,EAAmB,MAAM,EAAO,CAAO,EAAI,EAAK,OAAO,iBAAkB,CAAM,CAC9G,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,KAClC,CACL,KACA,MAAO,CAAC,IACN,EAAgB,EAAO,CAAO,EAAE,MAAkC,CAAE,GAAI,CAAQ,CAAC,EACnF,WACF,GAGW,EAAW,CACtB,KACA,WACF,EACa,EAAmF,CAAC,EAAS,IAAa,CACrH,GAAI,EAAS,SAAW,QAAa,EAAS,cAAgB,OAC5D,MAAU,MAAM,kEAAkE,EACpF,OAAO,EAAU,IACX,EAAS,SAAW,OAAY,CAAE,YAAa,EAAS,WAAY,EAAI,CAAE,OAAQ,EAAS,MAAO,EACtG,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "E94D50183C96A76F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@smithy+node-http-handler@4.11.2/node_modules/@smithy/node-http-handler/dist-cjs/index.js"], | ||
| "sourcesContent": [ | ||
| "const { buildQueryString, HttpResponse } = require(\"@smithy/core/protocols\");\nconst node_https = require(\"node:https\");\nconst { Readable } = require(\"node:stream\");\nconst http2 = require(\"node:http2\");\nconst { streamCollector } = require(\"@smithy/core/serde\");\nexports.streamCollector = streamCollector;\n\nfunction buildAbortError(abortSignal) {\n const reason = abortSignal && typeof abortSignal === \"object\" && \"reason\" in abortSignal\n ? abortSignal.reason\n : undefined;\n if (reason) {\n if (reason instanceof Error) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n abortError.cause = reason;\n return abortError;\n }\n const abortError = new Error(String(reason));\n abortError.name = \"AbortError\";\n return abortError;\n }\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return abortError;\n}\n\nconst NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\nconst getTransformedHeaders = (headers) => {\n const transformedHeaders = {};\n for (const name in headers) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n};\n\nconst timing = {\n setTimeout: (cb, ms) => setTimeout(cb, ms),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n};\n\nconst DEFER_EVENT_LISTENER_TIME$2 = 1000;\nconst setConnectionTimeout = (request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return -1;\n }\n const registerTimeout = (offset) => {\n const timeoutId = timing.setTimeout(() => {\n request.destroy();\n reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), {\n name: \"TimeoutError\",\n }));\n }, timeoutInMs - offset);\n const doWithSocket = (socket) => {\n if (socket?.connecting) {\n socket.on(\"connect\", () => {\n timing.clearTimeout(timeoutId);\n });\n }\n else {\n timing.clearTimeout(timeoutId);\n }\n };\n if (request.socket) {\n doWithSocket(request.socket);\n }\n else {\n request.on(\"socket\", doWithSocket);\n }\n };\n if (timeoutInMs < 2000) {\n registerTimeout(0);\n return 0;\n }\n return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2);\n};\n\nconst setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => {\n if (timeoutInMs) {\n return timing.setTimeout(() => {\n let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? \"ERROR\" : \"WARN\"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`;\n if (throwOnRequestTimeout) {\n const error = Object.assign(new Error(msg), {\n name: \"TimeoutError\",\n code: \"ETIMEDOUT\",\n });\n req.destroy(error);\n reject(error);\n }\n else {\n msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`;\n logger?.warn?.(msg);\n }\n }, timeoutInMs);\n }\n return -1;\n};\n\nconst DEFER_EVENT_LISTENER_TIME$1 = 3000;\nconst setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME$1) => {\n if (keepAlive !== true) {\n return -1;\n }\n const registerListener = () => {\n if (request.socket) {\n request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n }\n else {\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n }\n };\n if (deferTimeMs === 0) {\n registerListener();\n return 0;\n }\n return timing.setTimeout(registerListener, deferTimeMs);\n};\n\nconst DEFER_EVENT_LISTENER_TIME = 3000;\nconst setSocketTimeout = (request, reject, timeoutInMs = 0) => {\n const registerTimeout = (offset) => {\n const timeout = timeoutInMs - offset;\n const onTimeout = () => {\n request.destroy();\n reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: \"TimeoutError\" }));\n };\n if (request.socket) {\n request.socket.setTimeout(timeout, onTimeout);\n request.on(\"close\", () => request.socket?.removeListener(\"timeout\", onTimeout));\n }\n else {\n request.setTimeout(timeout, onTimeout);\n }\n };\n if (0 < timeoutInMs && timeoutInMs < 6000) {\n registerTimeout(0);\n return 0;\n }\n return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME);\n};\n\nconst MIN_WAIT_TIME = 6_000;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) {\n const headers = request.headers;\n const expect = headers ? headers.Expect || headers.expect : undefined;\n let timeoutId = -1;\n let sendBody = true;\n if (!externalAgent && expect === \"100-continue\") {\n sendBody = await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n timing.clearTimeout(timeoutId);\n resolve(true);\n });\n httpRequest.on(\"response\", () => {\n timing.clearTimeout(timeoutId);\n resolve(false);\n });\n httpRequest.on(\"error\", () => {\n timing.clearTimeout(timeoutId);\n resolve(false);\n });\n }),\n ]);\n }\n if (sendBody) {\n writeBody(httpRequest, request.body);\n }\n}\nfunction writeBody(httpRequest, body) {\n if (body instanceof Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n const isBuffer = Buffer.isBuffer(body);\n const isString = typeof body === \"string\";\n if (isBuffer || isString) {\n if (isBuffer && body.byteLength === 0) {\n httpRequest.end();\n }\n else {\n httpRequest.end(body);\n }\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" &&\n uint8.buffer &&\n typeof uint8.byteOffset === \"number\" &&\n typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n\nconst DEFAULT_REQUEST_TIMEOUT = 0;\nlet hAgent = undefined;\nlet hRequest = undefined;\nclass NodeHttpHandler {\n config;\n configProvider;\n socketWarningTimestamp = 0;\n externalAgent = false;\n metadata = { handlerProtocol: \"http/1.1\" };\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new NodeHttpHandler(instanceOrOptions);\n }\n static checkSocketUsage(agent, socketWarningTimestamp, logger = console) {\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15_000;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = sockets[origin]?.length ?? 0;\n const requestsEnqueued = requests[origin]?.length ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.\nSee https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\nor increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`);\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n constructor(options) {\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n })\n .catch(reject);\n }\n else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n destroy() {\n this.config?.httpAgent?.destroy();\n this.config?.httpsAgent?.destroy();\n }\n async handle(request, { abortSignal, requestTimeout } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const config = this.config;\n const logger = config.logger;\n const isSSL = request.protocol === \"https:\";\n if (!isSSL && !this.config.httpAgent) {\n this.config.httpAgent = await this.config.httpAgentProvider();\n }\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = undefined;\n let socketWarningTimeoutId = -1;\n let connectionTimeoutId = -1;\n let requestTimeoutId = -1;\n let socketTimeoutId = -1;\n let keepAliveTimeoutId = -1;\n const clearTimeouts = () => {\n timing.clearTimeout(socketWarningTimeoutId);\n timing.clearTimeout(connectionTimeoutId);\n timing.clearTimeout(requestTimeoutId);\n timing.clearTimeout(socketTimeoutId);\n timing.clearTimeout(keepAliveTimeoutId);\n };\n const resolve = async (arg) => {\n await writeRequestBodyPromise;\n clearTimeouts();\n _resolve(arg);\n };\n const reject = async (arg) => {\n await writeRequestBodyPromise;\n clearTimeouts();\n _reject(arg);\n };\n if (abortSignal?.aborted) {\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n return;\n }\n const headers = request.headers;\n const expectContinue = headers ? (headers.Expect ?? headers.expect) === \"100-continue\" : false;\n let agent = isSSL ? config.httpsAgent : config.httpAgent;\n if (expectContinue && !this.externalAgent) {\n agent = new (isSSL ? node_https.Agent : hAgent)({\n keepAlive: false,\n maxSockets: Infinity,\n });\n }\n socketWarningTimeoutId = timing.setTimeout(() => {\n this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, logger);\n }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000));\n const queryString = request.query ? buildQueryString(request.query) : \"\";\n let auth = undefined;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let hostname = request.hostname ?? \"\";\n if (hostname[0] === \"[\" && hostname.endsWith(\"]\")) {\n hostname = request.hostname.slice(1, -1);\n }\n else {\n hostname = request.hostname;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth,\n };\n const requestFunc = isSSL ? node_https.request : hRequest;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res,\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n }\n else {\n reject(err);\n }\n });\n if (abortSignal) {\n const onAbort = () => {\n req.destroy();\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }\n const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout;\n connectionTimeoutId = setConnectionTimeout(req, reject, config.connectionTimeout);\n requestTimeoutId = setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, logger ?? console);\n socketTimeoutId = setSocketTimeout(req, reject, config.socketTimeout);\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n keepAliveTimeoutId = setSocketKeepAlive(req, {\n keepAlive: httpAgent.keepAlive,\n keepAliveMsecs: httpAgent.keepAliveMsecs,\n });\n }\n writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => {\n clearTimeouts();\n return _reject(e);\n });\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n if (key === Symbol.for(\"logger\")) {\n return {\n ...config,\n logger: config.logger ?? value,\n };\n }\n return {\n ...config,\n [key]: value,\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout,\n socketTimeout,\n socketAcquisitionWarningTimeout,\n throwOnRequestTimeout,\n httpAgentProvider: async () => {\n const node_http = require('node:http');\n const { Agent, request } = node_http.default ?? node_http;\n hRequest = request;\n hAgent = Agent;\n if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === \"function\") {\n this.externalAgent = true;\n return httpAgent;\n }\n return new hAgent({ keepAlive, maxSockets, ...httpAgent });\n },\n httpsAgent: (() => {\n if (httpsAgent instanceof node_https.Agent || typeof httpsAgent?.destroy === \"function\") {\n this.externalAgent = true;\n return httpsAgent;\n }\n return new node_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })(),\n logger,\n };\n }\n}\n\nconst ids = new Uint16Array(1);\nclass ClientHttp2SessionRef {\n id = ids[0]++;\n total = 0;\n max = 0;\n session;\n refs = 0;\n constructor(session) {\n session.unref();\n this.session = session;\n }\n retain() {\n if (this.session.destroyed) {\n throw new Error(\"@smithy/node-http-handler - cannot acquire reference to destroyed session.\");\n }\n this.refs += 1;\n this.total += 1;\n this.max = Math.max(this.refs, this.max);\n this.session.ref();\n }\n free() {\n if (this.session.destroyed) {\n return;\n }\n this.refs -= 1;\n if (this.refs === 0) {\n this.session.unref();\n }\n if (this.refs < 0) {\n throw new Error(\"@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.\");\n }\n }\n deref() {\n return this.session;\n }\n close() {\n if (!this.session.closed) {\n this.session.close();\n }\n }\n destroy() {\n this.refs = 0;\n if (!this.session.destroyed) {\n this.session.destroy();\n }\n }\n useCount() {\n return this.refs;\n }\n}\n\nclass NodeHttp2ConnectionPool {\n sessions = [];\n maxConcurrency = 0;\n constructor(sessions) {\n this.sessions = (sessions ?? []).map((session) => new ClientHttp2SessionRef(session));\n }\n poll() {\n let cleanup = false;\n for (const session of this.sessions) {\n if (session.deref().destroyed) {\n cleanup = true;\n continue;\n }\n if (!this.maxConcurrency || session.useCount() < this.maxConcurrency) {\n return session;\n }\n }\n if (cleanup) {\n for (const session of this.sessions) {\n if (session.deref().destroyed) {\n this.remove(session);\n }\n }\n }\n }\n offerLast(ref) {\n this.sessions.push(ref);\n }\n remove(ref) {\n const ix = this.sessions.indexOf(ref);\n if (ix > -1) {\n this.sessions.splice(ix, 1);\n }\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n setMaxConcurrency(maxConcurrency) {\n this.maxConcurrency = maxConcurrency;\n }\n destroy(ref) {\n this.remove(ref);\n ref.destroy();\n }\n}\n\nclass NodeHttp2ConnectionManager {\n config;\n connectOptions;\n connectionPools = new Map();\n constructor(config) {\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const pool = this.getPool(url);\n if (!this.config.disableConcurrency && !connectionConfiguration.isEventStream) {\n const available = pool.poll();\n if (available) {\n available.retain();\n return available;\n }\n }\n const ref = new ClientHttp2SessionRef(this.connect(url));\n const session = ref.deref();\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\"Fail to set maxConcurrentStreams to \" +\n this.config.maxConcurrency +\n \"when creating new session for \" +\n requestContext.destination.toString());\n }\n });\n }\n const graceful = () => {\n this.removeFromPoolAndClose(url, ref);\n };\n const ensureDestroyed = () => {\n this.removeFromPoolAndCheckedDestroy(url, ref);\n };\n session.on(\"goaway\", graceful);\n session.on(\"error\", ensureDestroyed);\n session.on(\"frameError\", ensureDestroyed);\n session.on(\"close\", ensureDestroyed);\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, ensureDestroyed);\n }\n pool.offerLast(ref);\n ref.retain();\n return ref;\n }\n release(_requestContext, ref) {\n ref.free();\n }\n createIsolatedSession(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const ref = new ClientHttp2SessionRef(this.connect(url));\n const session = ref.deref();\n session.settings({ maxConcurrentStreams: 1 });\n const ensureDestroyed = () => {\n ref.destroy();\n };\n session.on(\"error\", ensureDestroyed);\n session.on(\"frameError\", ensureDestroyed);\n session.on(\"close\", ensureDestroyed);\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, ensureDestroyed);\n }\n ref.retain();\n return ref;\n }\n destroy() {\n for (const [url, connectionPool] of this.connectionPools) {\n for (const session of [...connectionPool]) {\n session.destroy();\n }\n this.connectionPools.delete(url);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (maxConcurrentStreams && maxConcurrentStreams <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n for (const pool of this.connectionPools.values()) {\n pool.setMaxConcurrency(maxConcurrentStreams);\n }\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions) {\n this.connectOptions = nodeHttp2ConnectOptions;\n }\n debug() {\n const pools = {};\n for (const [url, pool] of this.connectionPools) {\n const sessions = [];\n for (const ref of pool) {\n sessions.push({\n id: ref.id,\n active: ref.useCount(),\n maxConcurrent: ref.max,\n totalRequests: ref.total,\n });\n }\n pools[url] = { sessions };\n }\n return pools;\n }\n removeFromPoolAndClose(authority, ref) {\n this.connectionPools.get(authority)?.remove(ref);\n ref.close();\n }\n removeFromPoolAndCheckedDestroy(authority, ref) {\n this.connectionPools.get(authority)?.remove(ref);\n ref.destroy();\n }\n getPool(url) {\n if (!this.connectionPools.has(url)) {\n const pool = new NodeHttp2ConnectionPool();\n if (this.config.maxConcurrency) {\n pool.setMaxConcurrency(this.config.maxConcurrency);\n }\n this.connectionPools.set(url, pool);\n }\n return this.connectionPools.get(url);\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n connect(url) {\n return this.connectOptions === undefined ? http2.connect(url) : http2.connect(url, this.connectOptions);\n }\n}\n\nconst { constants } = http2;\nclass NodeHttp2Handler {\n config;\n configProvider;\n metadata = { handlerProtocol: \"h2\" };\n connectionManager = new NodeHttp2ConnectionManager({});\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new NodeHttp2Handler(instanceOrOptions);\n }\n constructor(options) {\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((opts) => {\n resolve(opts || {});\n })\n .catch(reject);\n }\n else {\n resolve(options || {});\n }\n });\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal, requestTimeout, isEventStream } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n const { disableConcurrentStreams, maxConcurrentStreams, nodeHttp2ConnectOptions } = this.config;\n this.connectionManager.setDisableConcurrentStreams(disableConcurrentStreams ?? false);\n if (maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(maxConcurrentStreams);\n }\n if (nodeHttp2ConnectOptions) {\n this.connectionManager.setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions);\n }\n }\n const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config;\n const useIsolatedSession = disableConcurrentStreams || isEventStream;\n const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout;\n return new Promise((_resolve, _reject) => {\n let fulfilled = false;\n let writeRequestBodyPromise = undefined;\n const resolve = async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n };\n const reject = async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n };\n if (abortSignal?.aborted) {\n fulfilled = true;\n const abortError = buildAbortError(abortSignal);\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const connectConfig = {\n requestTimeout: this.config?.sessionTimeout,\n isEventStream,\n };\n const ref = useIsolatedSession\n ? this.connectionManager.createIsolatedSession(requestContext, connectConfig)\n : this.connectionManager.lease(requestContext, connectConfig);\n const session = ref.deref();\n const rejectWithDestroy = (err) => {\n if (useIsolatedSession) {\n ref.destroy();\n }\n fulfilled = true;\n reject(err);\n };\n const queryString = query ? buildQueryString(query) : \"\";\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const clientHttp2Stream = session.request({\n ...request.headers,\n [constants.HTTP2_HEADER_PATH]: path,\n [constants.HTTP2_HEADER_METHOD]: method,\n });\n if (effectiveRequestTimeout) {\n clientHttp2Stream.setTimeout(effectiveRequestTimeout, () => {\n clientHttp2Stream.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n const onAbort = () => {\n clientHttp2Stream.close();\n const abortError = buildAbortError(abortSignal);\n rejectWithDestroy(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n clientHttp2Stream.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }\n clientHttp2Stream.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n clientHttp2Stream.on(\"error\", rejectWithDestroy);\n clientHttp2Stream.on(\"aborted\", () => {\n rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${clientHttp2Stream.rstCode}.`));\n });\n clientHttp2Stream.on(\"response\", (headers) => {\n const httpResponse = new HttpResponse({\n statusCode: headers[\":status\"] ?? -1,\n headers: getTransformedHeaders(headers),\n body: clientHttp2Stream,\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (useIsolatedSession) {\n session.close();\n }\n });\n clientHttp2Stream.on(\"close\", () => {\n if (useIsolatedSession) {\n ref.destroy();\n }\n else {\n this.connectionManager.release(requestContext, ref);\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(clientHttp2Stream, request, effectiveRequestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value,\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n}\n\nexports.DEFAULT_REQUEST_TIMEOUT = DEFAULT_REQUEST_TIMEOUT;\nexports.NodeHttp2Handler = NodeHttp2Handler;\nexports.NodeHttpHandler = NodeHttpHandler;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "6BBCA6EDD9F4D0DD64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "580950B59054298364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/cache.ts"], | ||
| "sourcesContent": [ | ||
| "// Shared counter and TTL mapping for provider cache-marker lowering.\n\nexport interface Breakpoints {\n remaining: number\n dropped: number\n}\n\nexport const newBreakpoints = (cap: number): Breakpoints => ({ remaining: cap, dropped: 0 })\n\n// Requests of at least one hour use the explicit `\"1h\"` bucket; shorter\n// requests omit the wire TTL and use the provider default.\nexport const ttlBucket = (ttlSeconds: number | undefined): \"1h\" | undefined =>\n ttlSeconds !== undefined && ttlSeconds >= 3600 ? \"1h\" : undefined\n" | ||
| ], | ||
| "mappings": ";AAOO,IAAM,EAAiB,CAAC,KAA8B,CAAE,UAAW,EAAK,QAAS,CAAE,GAI7E,EAAY,CAAC,IACxB,IAAe,QAAa,GAAc,KAAO,KAAO", | ||
| "debugId": "1E4D3402B32B1AF164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/debug/config.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.debug.commands.config,\n Effect.fn(\"cli.debug.config\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const entries = yield* Effect.promise(() => client.config.get({ location: { directory: process.cwd() } }))\n process.stdout.write(JSON.stringify(entries, null, 2) + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,MAAM,SAAS,OACjC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAU,MAAO,EAAO,QAAQ,IAAM,EAAO,OAAO,IAAI,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EACzG,QAAQ,OAAO,MAAM,KAAK,UAAU,EAAS,KAAM,CAAC,EAAI,CAAG,EAC5D,CACH", | ||
| "debugId": "973BD8103802038364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../protocol/src/client.ts"], | ||
| "sourcesContent": [ | ||
| "import { InvalidRequestError, SessionNotFoundError } from \"./errors.js\"\nimport { makeDefaultApi } from \"./api.js\"\nimport type { Api } from \"./api.js\"\nimport type { Context } from \"effect\"\nimport { HttpApiMiddleware } from \"effect/unstable/httpapi\"\nimport type { EventGroup } from \"./groups/event.js\"\n\nclass LocationMiddleware extends HttpApiMiddleware.Service<LocationMiddleware>()(\n \"@opencode-ai/client/LocationMiddleware\",\n) {}\n\nclass SessionLocationMiddleware extends HttpApiMiddleware.Service<SessionLocationMiddleware>()(\n \"@opencode-ai/client/SessionLocationMiddleware\",\n { error: [InvalidRequestError, SessionNotFoundError] },\n) {}\n\ntype ClientApiShape = Api<\n Context.Service.Identifier<typeof LocationMiddleware>,\n Context.Service.Shape<typeof LocationMiddleware>,\n Context.Service.Identifier<typeof SessionLocationMiddleware>,\n Context.Service.Shape<typeof SessionLocationMiddleware>,\n Context.Service.Identifier<typeof SessionLocationMiddleware>,\n Context.Service.Shape<typeof SessionLocationMiddleware>,\n typeof EventGroup\n>\n\nexport const ClientApi: ClientApiShape = makeDefaultApi({\n locationMiddleware: LocationMiddleware,\n // The real server uses a form-specific middleware with an undocumented `global` sentinel branch.\n // The generated client only needs a middleware identity for API typing.\n formLocationMiddleware: SessionLocationMiddleware,\n sessionLocationMiddleware: SessionLocationMiddleware,\n})\n\nexport const groupNames = {\n \"server.health\": \"health\",\n \"server.server\": \"server\",\n \"server.debug\": \"debug\",\n \"server.migration\": \"migration\",\n \"server.location\": \"location\",\n \"server.agent\": \"agent\",\n \"server.plugin\": \"plugin\",\n \"server.session\": \"session\",\n \"server.message\": \"message\",\n \"server.model\": \"model\",\n \"server.generate\": \"generate\",\n \"server.provider\": \"provider\",\n \"server.integration\": \"integration\",\n \"server.websearch\": \"websearch\",\n \"server.credential\": \"credential\",\n \"server.form\": \"form\",\n \"server.permission\": \"permission\",\n \"server.fs\": \"file\",\n \"server.command\": \"command\",\n \"server.skill\": \"skill\",\n \"server.event\": \"event\",\n \"server.pty\": \"pty\",\n \"server.experimental\": \"experimental\",\n \"server.shell\": \"shell\",\n \"server.mcp\": \"mcp\",\n \"server.reference\": \"reference\",\n \"server.project\": \"project\",\n \"server.worktree\": \"worktree\",\n \"server.workspace\": \"workspace\",\n \"server.vcs\": \"vcs\",\n \"server.config\": \"config\",\n} as const\n\nexport const promiseOmitEndpoints = new Set([\"pty.connect\", \"persistentPty.connect\"])\nexport const effectOmitEndpoints = new Set([\"fs.read\", \"pty.connect\", \"persistentPty.connect\"])\n" | ||
| ], | ||
| "mappings": ";giCAOA,MAAM,UAA2B,EAAkB,QAA4B,EAC7E,wCACF,CAAE,CAAC,CAEH,MAAM,UAAkC,EAAkB,QAAmC,EAC3F,gDACA,CAAE,MAAO,CAAC,EAAqB,CAAoB,CAAE,CACvD,CAAE,CAAC,CAYI,IAAM,EAA4B,EAAe,CACtD,mBAAoB,EAGpB,uBAAwB,EACxB,0BAA2B,CAC7B,CAAC,EAEY,EAAa,CACxB,gBAAiB,SACjB,gBAAiB,SACjB,eAAgB,QAChB,mBAAoB,YACpB,kBAAmB,WACnB,eAAgB,QAChB,gBAAiB,SACjB,iBAAkB,UAClB,iBAAkB,UAClB,eAAgB,QAChB,kBAAmB,WACnB,kBAAmB,WACnB,qBAAsB,cACtB,mBAAoB,YACpB,oBAAqB,aACrB,cAAe,OACf,oBAAqB,aACrB,YAAa,OACb,iBAAkB,UAClB,eAAgB,QAChB,eAAgB,QAChB,aAAc,MACd,sBAAuB,eACvB,eAAgB,QAChB,aAAc,MACd,mBAAoB,YACpB,iBAAkB,UAClB,kBAAmB,WACnB,mBAAoB,YACpB,aAAc,MACd,gBAAiB,QACnB,EAEa,EAAuB,IAAI,IAAI,CAAC,cAAe,uBAAuB,CAAC,EACvE,EAAsB,IAAI,IAAI,CAAC,UAAW,cAAe,uBAAuB,CAAC", | ||
| "debugId": "D596C89B7B5115CB64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/plugin/remove.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport path from \"node:path\"\nimport { readFile, rename, writeFile } from \"node:fs/promises\"\nimport { Effect } from \"effect\"\nimport { applyEdits, modify, parse, type ParseError } from \"jsonc-parser\"\nimport { Global } from \"@opencode-ai/util/global\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Config } from \"../../../config\"\nimport { resolveConfigPath } from \"../mcp/add\"\n\nexport default Runtime.handler(\n Commands.commands.plugin.commands.remove,\n Effect.fn(\"cli.plugin.remove\")(function* (input) {\n const global = yield* Global.Service\n const configPath = yield* Effect.promise(() => resolveConfigPath(global.config))\n const server = yield* Effect.promise(() => removePluginConfig(configPath, input.package))\n const config = yield* Config.Service\n const info = yield* config.get()\n const tui = configured(info.plugins, input.package)\n if (tui)\n yield* config.update((draft) => {\n draft.plugins = draft.plugins?.filter((entry) => !matches(entry, input.package))\n })\n\n const removed = [server ? configPath : undefined, tui ? config.path : undefined].filter(\n (file) => file !== undefined,\n )\n process.stdout.write(\n removed.length\n ? `Plugin \"${input.package}\" removed from ${removed.join(\", \")}${EOL}`\n : `Plugin \"${input.package}\" is not configured${EOL}`,\n )\n }),\n)\n\nexport async function removePluginConfig(configPath: string, spec: string) {\n const text = await readFile(configPath, \"utf8\").catch((error) => {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") return undefined\n throw error\n })\n if (text === undefined) return false\n const errors: ParseError[] = []\n const config: unknown = parse(text, errors, { allowTrailingComma: true })\n if (errors.length || typeof config !== \"object\" || config === null || Array.isArray(config))\n throw new Error(`Invalid global configuration: ${configPath}`)\n const plugins = \"plugins\" in config ? config.plugins : undefined\n if (plugins !== undefined && !Array.isArray(plugins)) throw new Error(`Invalid plugins configuration: ${configPath}`)\n if (!configured(plugins, spec)) return false\n\n const updated = applyEdits(\n text,\n modify(\n text,\n [\"plugins\"],\n plugins?.filter((entry) => !matches(entry, spec)),\n {\n formattingOptions: { tabSize: 2, insertSpaces: true },\n },\n ),\n )\n const temporary = configPath + \".tmp\"\n await writeFile(temporary, updated.endsWith(\"\\n\") ? updated : updated + \"\\n\", { mode: 0o600 })\n await rename(temporary, configPath)\n return true\n}\n\nfunction configured(plugins: readonly unknown[] | undefined, spec: string) {\n return plugins?.some((entry) => matches(entry, spec)) ?? false\n}\n\nfunction matches(entry: unknown, spec: string) {\n return entry === spec || (typeof entry === \"object\" && entry !== null && \"package\" in entry && entry.package === spec)\n}\n" | ||
| ], | ||
| "mappings": ";itBAAA,cAAS,WAET,mBAAS,YAAU,eAAQ,oBAS3B,IAAe,IAAQ,QACrB,EAAS,SAAS,OAAO,SAAS,OAClC,EAAO,GAAG,mBAAmB,EAAE,SAAU,CAAC,EAAO,CAC/C,IAAM,EAAS,MAAO,EAAO,QACvB,EAAa,MAAO,EAAO,QAAQ,IAAM,EAAkB,EAAO,MAAM,CAAC,EACzE,EAAS,MAAO,EAAO,QAAQ,IAAM,EAAmB,EAAY,EAAM,OAAO,CAAC,EAClF,EAAS,MAAO,EAAO,QACvB,EAAO,MAAO,EAAO,IAAI,EACzB,EAAM,EAAW,EAAK,QAAS,EAAM,OAAO,EAClD,GAAI,EACF,MAAO,EAAO,OAAO,CAAC,IAAU,CAC9B,EAAM,QAAU,EAAM,SAAS,OAAO,CAAC,IAAU,CAAC,EAAQ,EAAO,EAAM,OAAO,CAAC,EAChF,EAEH,IAAM,EAAU,CAAC,EAAS,EAAa,OAAW,EAAM,EAAO,KAAO,MAAS,EAAE,OAC/E,CAAC,IAAS,IAAS,MACrB,EACA,QAAQ,OAAO,MACb,EAAQ,OACJ,WAAW,EAAM,yBAAyB,EAAQ,KAAK,IAAI,IAAI,IAC/D,WAAW,EAAM,6BAA6B,GACpD,EACD,CACH,EAEA,eAAsB,CAAkB,CAAC,EAAoB,EAAc,CACzE,IAAM,EAAO,MAAM,EAAS,EAAY,MAAM,EAAE,MAAM,CAAC,IAAU,CAC/D,GAAI,OAAO,IAAU,UAAY,IAAU,MAAQ,SAAU,GAAS,EAAM,OAAS,SAAU,OAC/F,MAAM,EACP,EACD,GAAI,IAAS,OAAW,MAAO,GAC/B,IAAM,EAAuB,CAAC,EACxB,EAAkB,EAAM,EAAM,EAAQ,CAAE,mBAAoB,EAAK,CAAC,EACxE,GAAI,EAAO,QAAU,OAAO,IAAW,UAAY,IAAW,MAAQ,MAAM,QAAQ,CAAM,EACxF,MAAU,MAAM,iCAAiC,GAAY,EAC/D,IAAM,EAAU,YAAa,EAAS,EAAO,QAAU,OACvD,GAAI,IAAY,QAAa,CAAC,MAAM,QAAQ,CAAO,EAAG,MAAU,MAAM,kCAAkC,GAAY,EACpH,GAAI,CAAC,EAAW,EAAS,CAAI,EAAG,MAAO,GAEvC,IAAM,EAAU,EACd,EACA,EACE,EACA,CAAC,SAAS,EACV,GAAS,OAAO,CAAC,IAAU,CAAC,EAAQ,EAAO,CAAI,CAAC,EAChD,CACE,kBAAmB,CAAE,QAAS,EAAG,aAAc,EAAK,CACtD,CACF,CACF,EACM,EAAY,EAAa,OAG/B,OAFA,MAAM,EAAU,EAAW,EAAQ,SAAS;AAAA,CAAI,EAAI,EAAU,EAAU;AAAA,EAAM,CAAE,KAAM,GAAM,CAAC,EAC7F,MAAM,EAAO,EAAW,CAAU,EAC3B,GAGT,SAAS,CAAU,CAAC,EAAyC,EAAc,CACzE,OAAO,GAAS,KAAK,CAAC,IAAU,EAAQ,EAAO,CAAI,CAAC,GAAK,GAG3D,SAAS,CAAO,CAAC,EAAgB,EAAc,CAC7C,OAAO,IAAU,GAAS,OAAO,IAAU,UAAY,IAAU,MAAQ,YAAa,GAAS,EAAM,UAAY", | ||
| "debugId": "7ECB76791F2E71D064756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/openai-image.ts", "../ai/src/protocols/openai-responses.ts", "../ai/src/providers/openai-options.ts"], | ||
| "sourcesContent": [ | ||
| "import { Schema } from \"effect\"\n\nconst dimensions = (value: string) => {\n const match = /^(\\d+)x(\\d+)$/.exec(value)\n if (!match) return undefined\n return { width: Number(match[1]), height: Number(match[2]) }\n}\n\nexport const Size = Schema.String.check(\n Schema.makeFilter((value) => {\n if (value === \"auto\") return undefined\n const parsed = dimensions(value)\n if (!parsed) return \"image size must be `auto` or `{width}x{height}`\"\n return parsed.width > 0 && parsed.height > 0 ? undefined : \"image dimensions must be positive integers\"\n }),\n)\n\nexport const OpenAIImage = {\n Size,\n} as const\n", | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Route } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport { HttpTransport } from \"../route/transport/index.js\"\nimport { LLMRequest, type JsonSchema, type ToolDefinition } from \"../schema/index.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { optionalArray, ProviderShared } from \"./shared.js\"\nimport { OpenAIImage } from \"./utils/openai-image.js\"\nimport { ResponsesHostedTools } from \"./utils/responses-hosted-tools.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\nimport { OpenResponsesChannel } from \"./open-responses-channel.js\"\n\nconst ADAPTER = \"openai-responses\"\nconst NAME = \"OpenAI Responses\"\nconst WEBSOCKET_PROTOCOL_HEADER = \"responses_websockets=2026-02-06\"\nconst WEBSOCKET_ROTATE_AFTER_MS = 55 * 60 * 1000\nexport const DEFAULT_BASE_URL = \"https://api.openai.com/v1\"\nexport const PATH = OpenResponses.PATH\n\nconst OpenAIResponsesImageGenerationTool = Schema.Struct({\n type: Schema.tag(\"image_generation\"),\n action: Schema.optional(Schema.Literals([\"auto\", \"generate\", \"edit\"])),\n background: Schema.optional(Schema.Literals([\"auto\", \"opaque\", \"transparent\"])),\n input_fidelity: Schema.optional(Schema.Literals([\"low\", \"high\"])),\n output_compression: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 100 }))),\n output_format: Schema.optional(Schema.Literals([\"png\", \"jpeg\", \"webp\"])),\n partial_images: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n quality: Schema.optional(Schema.Literals([\"auto\", \"low\", \"medium\", \"high\"])),\n size: Schema.optional(OpenAIImage.Size),\n})\n\nconst OpenAIResponsesTools = Schema.Union([OpenResponses.Tool, OpenAIResponsesImageGenerationTool])\n\nconst OpenAIResponsesToolChoice = Schema.Union([\n OpenResponses.ToolChoice,\n Schema.Struct({ type: Schema.tag(\"image_generation\") }),\n])\n\nconst OpenAIResponsesCoreFields = {\n ...OpenResponses.coreFields,\n tools: optionalArray(OpenAIResponsesTools),\n tool_choice: Schema.optional(OpenAIResponsesToolChoice),\n}\n\nconst OpenAIResponsesBody = Schema.Struct({\n ...OpenAIResponsesCoreFields,\n stream: Schema.Literal(true),\n})\nexport type OpenAIResponsesBody = Schema.Schema.Type<typeof OpenAIResponsesBody>\n\n// Replayed items are paired with stored server state by id, so a foreign or\n// synthetic token can fail request validation even when `call_id` pairing is\n// intact. Only resend ids in each item kind's own grammar; hosted tool\n// references keep generic validation because every hosted tool mints its own\n// prefix. The same allowlist approach codex uses before resending history\n// (codex-rs core/src/client.rs, `prepare_response_items_for_request`).\nconst ITEM_ID_PREFIXES: Record<OpenResponses.ItemKind, ReadonlyArray<string>> = {\n message: [\"msg_\"],\n reasoning: [\"rs_\"],\n \"function-call\": [\"fc_\"],\n // Every hosted tool mints its own id prefix, so references keep generic\n // validation only.\n reference: [],\n}\n\nconst extension = {\n id: ADAPTER,\n name: NAME,\n acceptsItemID: (kind: OpenResponses.ItemKind, id: string) => {\n const prefixes = ITEM_ID_PREFIXES[kind]\n return prefixes.length === 0 || prefixes.some((prefix) => id.startsWith(prefix))\n },\n} satisfies OpenResponses.Extension\n\nconst nativeImageToolInput = (tool: ToolDefinition) => {\n const native = tool.native?.openai\n return ProviderShared.isRecord(native) && native.type === \"image_generation\" ? native : undefined\n}\n\nconst nativeImageTool = (tool: ToolDefinition) => {\n const native = nativeImageToolInput(tool)\n return Schema.is(OpenAIResponsesImageGenerationTool)(native) ? native : undefined\n}\n\nconst lowerTool = Effect.fn(\"OpenAIResponses.lowerTool\")(function* (tool: ToolDefinition, inputSchema: JsonSchema) {\n const native = nativeImageToolInput(tool)\n if (native !== undefined) {\n if (Schema.is(OpenAIResponsesImageGenerationTool)(native)) return native\n return yield* ProviderShared.invalidRequest(\"OpenAI Responses image generation tool options are invalid\")\n }\n return yield* OpenResponses.lowerTool(NAME, tool, inputSchema)\n})\n\nconst lowerToolChoice = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>, tools: ReadonlyArray<ToolDefinition>) =>\n ProviderShared.matchToolChoice(NAME, toolChoice, {\n auto: () => \"auto\" as const,\n none: () => \"none\" as const,\n required: () => \"required\" as const,\n tool: (name) =>\n tools.some((tool) => tool.name === name && nativeImageTool(tool) !== undefined)\n ? ({ type: \"image_generation\" } as const)\n : { type: \"function\" as const, name },\n })\n\nconst fromRequest = Effect.fn(\"OpenAIResponses.fromRequest\")(function* (request: LLMRequest) {\n const body = yield* OpenResponses.fromRequestWithExtension(\n LLMRequest.update(request, { tools: [], toolChoice: undefined }),\n extension,\n )\n const toolSchemaCompatibility = request.model.compatibility?.toolSchema\n const parallelToolCalls = OpenResponses.resolveParallelToolCalls(request)\n return {\n ...body,\n ...(parallelToolCalls === undefined ? {} : { parallel_tool_calls: parallelToolCalls }),\n tools:\n request.tools.length === 0\n ? undefined\n : yield* Effect.forEach(request.tools, (tool) =>\n lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)),\n ),\n tool_choice:\n body.tool_choice ?? (request.toolChoice ? yield* lowerToolChoice(request.toolChoice, request.tools) : undefined),\n } satisfies OpenAIResponsesBody\n})\n\nconst hostedToolResult = Effect.fn(\"OpenAIResponses.hostedToolResult\")(function* (item: ResponsesHostedTools.Item) {\n const isError = item.error !== undefined && item.error !== null\n if (item.type === \"image_generation_call\" && item.result) {\n yield* Effect.fromResult(Encoding.decodeBase64(item.result)).pipe(\n Effect.mapError(() => ProviderShared.eventError(ADAPTER, \"OpenAI Responses returned invalid image base64\")),\n )\n const format = item.output_format ?? \"png\"\n return {\n type: \"content\" as const,\n value: [\n {\n type: \"file\" as const,\n uri: `data:image/${format};base64,${item.result}`,\n mime: `image/${format}`,\n },\n ],\n }\n }\n return isError ? { type: \"error\" as const, value: item.error } : { type: \"json\" as const, value: item }\n})\n\nconst HOSTED_TOOLS = {\n web_search_call: { name: \"web_search\", input: (item) => item.action ?? {} },\n web_search_preview_call: { name: \"web_search_preview\", input: (item) => item.action ?? {} },\n file_search_call: { name: \"file_search\", input: (item) => ({ queries: item.queries ?? [] }) },\n code_interpreter_call: {\n name: \"code_interpreter\",\n input: (item) => ({ code: item.code, container_id: item.container_id }),\n },\n computer_call: { name: \"computer_use\", input: (item) => item.action ?? {} },\n image_generation_call: { name: \"image_generation\", input: () => ({}), result: hostedToolResult },\n mcp_call: {\n name: \"mcp\",\n input: (item) => ({ server_label: item.server_label, name: item.name, arguments: item.arguments }),\n },\n} as const satisfies ResponsesHostedTools.Definitions\n\nconst step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => {\n if (event.type === \"response.reasoning_text.delta\")\n return event.item_id\n ? Effect.succeed(\n OpenResponses.onReasoningDelta(state, event, OpenResponses.outputItemID(state, event) ?? event.item_id),\n )\n : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`)\n if (event.type === \"response.output_item.done\" && event.item && ResponsesHostedTools.isItem(event.item, HOSTED_TOOLS))\n return ResponsesHostedTools.onDone(state, event.item, HOSTED_TOOLS)\n return OpenResponses.step(state, event)\n}\n\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: OpenAIResponsesBody,\n from: fromRequest,\n },\n stream: {\n event: OpenResponses.protocol.stream.event,\n initial: (request) => OpenResponses.initial(request, extension),\n step,\n terminal: OpenResponses.terminal,\n },\n})\n\nconst endpoint = Endpoint.path<OpenAIResponsesBody>(PATH, { baseURL: DEFAULT_BASE_URL })\nconst auth = Auth.none\n\nexport const httpTransport = HttpTransport.sseJson.with<OpenAIResponsesBody>()\nexport const channelTransport = OpenResponsesChannel.transport<OpenAIResponsesBody>\nexport const transport = channelTransport({\n id: ADAPTER,\n name: NAME,\n rotateAfterMs: WEBSOCKET_ROTATE_AFTER_MS,\n headers: (headers) => Headers.set(headers, \"openai-beta\", headers[\"openai-beta\"] ?? WEBSOCKET_PROTOCOL_HEADER),\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"openai\",\n providerMetadataKey: \"openai\",\n protocol,\n endpoint,\n auth,\n transport,\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nexport * as OpenAIResponses from \"./openai-responses.js\"\n", | ||
| "import { mergeProviderOptions, type ProviderOptions } from \"../schema/index.js\"\nimport type { OpenAIServiceTier } from \"../protocols/utils/openai-options.js\"\nimport type { Options } from \"../protocols/utils/open-responses-options.js\"\n\nexport type { OpenAIResponseIncludable, OpenAIServiceTier } from \"../protocols/utils/openai-options.js\"\n\nexport type OpenAIOptionsInput = Omit<Options, \"serviceTier\"> & {\n readonly serviceTier?: OpenAIServiceTier\n readonly [key: string]: unknown\n}\n\nexport type OpenAIProviderOptionsInput = OpenAIOptionsInput\n\nconst definedEntries = (input: Record<string, unknown>) =>\n Object.entries(input).filter((entry) => entry[1] !== undefined)\n\nconst openAIProviderOptions = (options: OpenAIOptionsInput | undefined): ProviderOptions | undefined => {\n const result = Object.fromEntries(\n definedEntries({\n store: options?.store,\n reasoningEffort: options?.reasoningEffort,\n reasoningSummary: options?.reasoningSummary,\n include: options?.include,\n textVerbosity: options?.textVerbosity,\n serviceTier: options?.serviceTier,\n }),\n )\n if (Object.keys(result).length === 0) return undefined\n return result\n}\n\nexport const gpt5DefaultOptions = (\n modelID: string,\n options: { readonly textVerbosity?: boolean } = {},\n): ProviderOptions | undefined => {\n const id = modelID.toLowerCase()\n if (!id.includes(\"gpt-5\") || id.includes(\"gpt-5-chat\") || id.includes(\"gpt-5-pro\")) return undefined\n return openAIProviderOptions({\n reasoningEffort: \"medium\",\n reasoningSummary: \"auto\",\n // GPT-5 reasoning models are configured stateless (`store: false`) by\n // `openAIDefaultOptions` below, so the only way a follow-up turn can\n // carry reasoning state is via the encrypted reasoning include. Without\n // this, callers using the default model facade get reasoning summaries\n // they cannot replay statelessly.\n include: [\"reasoning.encrypted_content\"],\n textVerbosity:\n options.textVerbosity === true && id.includes(\"gpt-5.\") && !id.includes(\"codex\") && !id.includes(\"-chat\")\n ? \"low\"\n : undefined,\n })\n}\n\nexport const openAIDefaultOptions = (\n modelID: string,\n options: { readonly textVerbosity?: boolean } = {},\n): ProviderOptions | undefined =>\n mergeProviderOptions(openAIProviderOptions({ store: false }), gpt5DefaultOptions(modelID, options))\n\nexport const withOpenAIOptions = <Options extends { readonly providerOptions?: OpenAIProviderOptionsInput }>(\n modelID: string,\n options: Options,\n defaults: { readonly textVerbosity?: boolean } = {},\n): Omit<Options, \"providerOptions\"> & { readonly providerOptions?: ProviderOptions } => {\n return {\n ...options,\n providerOptions: mergeProviderOptions(openAIDefaultOptions(modelID, defaults), options.providerOptions),\n }\n}\n\nexport * as OpenAIProviderOptions from \"./openai-options.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "C41EF13DD3CF09EA64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "4168EFC9F861054C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/get.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.get,\n Effect.fn(\"cli.service.get\")(function* (input) {\n process.stdout.write(\n (yield* ServiceConfig.get(Option.getOrUndefined(input.key), Option.getOrUndefined(input.name))) + EOL,\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAAA,cAAS,WAMT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,IACnC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,QAAQ,OAAO,OACZ,MAAO,EAAc,IAAI,EAAO,eAAe,EAAM,GAAG,EAAG,EAAO,eAAe,EAAM,IAAI,CAAC,GAAK,CACpG,EACD,CACH", | ||
| "debugId": "55EC5B9F131A8E3B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openai-compatible-profile.ts"], | ||
| "sourcesContent": [ | ||
| "export interface OpenAICompatibleProfile {\n readonly provider: string\n readonly baseURL: string\n}\n\nexport const profiles = {\n baseten: { provider: \"baseten\", baseURL: \"https://inference.baseten.co/v1\" },\n cerebras: { provider: \"cerebras\", baseURL: \"https://api.cerebras.ai/v1\" },\n deepinfra: { provider: \"deepinfra\", baseURL: \"https://api.deepinfra.com/v1/openai\" },\n deepseek: { provider: \"deepseek\", baseURL: \"https://api.deepseek.com/v1\" },\n fireworks: { provider: \"fireworks\", baseURL: \"https://api.fireworks.ai/inference/v1\" },\n groq: { provider: \"groq\", baseURL: \"https://api.groq.com/openai/v1\" },\n openrouter: { provider: \"openrouter\", baseURL: \"https://openrouter.ai/api/v1\" },\n togetherai: { provider: \"togetherai\", baseURL: \"https://api.together.xyz/v1\" },\n xai: { provider: \"xai\", baseURL: \"https://api.x.ai/v1\" },\n} as const satisfies Record<string, OpenAICompatibleProfile>\n\nexport const byProvider: Record<string, OpenAICompatibleProfile> = Object.fromEntries(\n Object.values(profiles).map((profile) => [profile.provider, profile]),\n)\n" | ||
| ], | ||
| "mappings": ";AAKO,IAAM,EAAW,CACtB,QAAS,CAAE,SAAU,UAAW,QAAS,iCAAkC,EAC3E,SAAU,CAAE,SAAU,WAAY,QAAS,4BAA6B,EACxE,UAAW,CAAE,SAAU,YAAa,QAAS,qCAAsC,EACnF,SAAU,CAAE,SAAU,WAAY,QAAS,6BAA8B,EACzE,UAAW,CAAE,SAAU,YAAa,QAAS,uCAAwC,EACrF,KAAM,CAAE,SAAU,OAAQ,QAAS,gCAAiC,EACpE,WAAY,CAAE,SAAU,aAAc,QAAS,8BAA+B,EAC9E,WAAY,CAAE,SAAU,aAAc,QAAS,6BAA8B,EAC7E,IAAK,CAAE,SAAU,MAAO,QAAS,qBAAsB,CACzD,EAEa,EAAsD,OAAO,YACxE,OAAO,OAAO,CAAQ,EAAE,IAAI,CAAC,IAAY,CAAC,EAAQ,SAAU,CAAO,CAAC,CACtE", | ||
| "debugId": "3C0E920FB67E02CA64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/status.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.status,\n Effect.fn(\"cli.service.status\")(function* () {\n const options = yield* ServiceConfig.options()\n const found = yield* Service.discover({ ...options, version: undefined })\n process.stdout.write((found?.url ?? \"stopped\") + EOL)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";+2BAAA,cAAS,WAOT,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,OACnC,EAAO,GAAG,oBAAoB,EAAE,SAAU,EAAG,CAC3C,IAAM,EAAU,MAAO,EAAc,QAAQ,EACvC,EAAQ,MAAO,EAAQ,SAAS,IAAK,EAAS,QAAS,MAAU,CAAC,EACxE,QAAQ,OAAO,OAAO,GAAO,KAAO,WAAa,CAAG,EACrD,CACH", | ||
| "debugId": "C52917D7849D674664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/session.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Session from \"./session.js\"\n\nimport { Schema } from \"effect\"\nimport { Agent } from \"./agent.js\"\nimport { Location } from \"./location.js\"\nimport { Model } from \"./model.js\"\nimport { Project } from \"./project.js\"\nimport { DateTimeUtcFromMillis, optional, RelativePath } from \"./schema.js\"\nimport { SessionEvent } from \"./session-event.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { Money } from \"./money.js\"\nimport { TokenUsage } from \"./token-usage.js\"\nimport { Revert } from \"./session-revert.js\"\nimport { SessionFork } from \"./session-fork.js\"\n\nexport const ID = SessionID\nexport type ID = SessionID\n\nexport const Event = SessionEvent\n\nexport { Revert }\nexport const ForkBoundary = SessionFork.Boundary\nexport type ForkBoundary = SessionFork.Boundary\nexport const ForkRequestBoundary = SessionFork.RequestBoundary\nexport type ForkRequestBoundary = SessionFork.RequestBoundary\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n parentID: ID.pipe(optional),\n fork: Schema.Struct({\n sessionID: ID,\n boundary: ForkBoundary,\n }).pipe(optional),\n projectID: Project.ID,\n agent: Agent.ID.pipe(optional),\n model: Model.Ref.pipe(optional),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n /** Outcome of the last completed execution, recorded at `time.idle`. Absent until a run reaches a terminal transition. */\n outcome: Schema.Literals([\"succeeded\", \"failed\", \"interrupted\"]).pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n updated: DateTimeUtcFromMillis,\n idle: DateTimeUtcFromMillis.pipe(optional),\n viewed: DateTimeUtcFromMillis.pipe(optional),\n archived: DateTimeUtcFromMillis.pipe(optional),\n }),\n title: Schema.String.pipe(optional),\n location: Location.Ref,\n subpath: RelativePath.pipe(optional),\n revert: Revert.pipe(optional),\n}).annotate({ identifier: \"Session.Info\" })\n\nexport const ListAnchor = Schema.Struct({\n id: ID,\n time: Schema.Finite,\n direction: Schema.Literals([\"previous\", \"next\"]),\n}).annotate({ identifier: \"Session.ListAnchor\" })\nexport interface ListAnchor extends Schema.Schema.Type<typeof ListAnchor> {}\n" | ||
| ], | ||
| "mappings": ";qjBAeO,IAAM,EAAK,EAGL,EAAQ,EAGd,IAAM,EAAe,EAAY,SAE3B,EAAsB,EAAY,gBAIlC,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,SAAU,EAAG,KAAK,CAAQ,EAC1B,KAAM,EAAO,OAAO,CAClB,UAAW,EACX,SAAU,CACZ,CAAC,EAAE,KAAK,CAAQ,EAChB,UAAW,EAAQ,GACnB,MAAO,EAAM,GAAG,KAAK,CAAQ,EAC7B,MAAO,EAAM,IAAI,KAAK,CAAQ,EAC9B,KAAM,EAAM,IACZ,OAAQ,EAAW,KAEnB,QAAS,EAAO,SAAS,CAAC,YAAa,SAAU,aAAa,CAAC,EAAE,KAAK,CAAQ,EAC9E,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,QAAS,EACT,KAAM,EAAsB,KAAK,CAAQ,EACzC,OAAQ,EAAsB,KAAK,CAAQ,EAC3C,SAAU,EAAsB,KAAK,CAAQ,CAC/C,CAAC,EACD,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,SAAU,EAAS,IACnB,QAAS,EAAa,KAAK,CAAQ,EACnC,OAAQ,EAAO,KAAK,CAAQ,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAE7B,EAAa,EAAO,OAAO,CACtC,GAAI,EACJ,KAAM,EAAO,OACb,UAAW,EAAO,SAAS,CAAC,WAAY,MAAM,CAAC,CACjD,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC", | ||
| "debugId": "441DB03FE989F61164756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/partial-json-options.ts", "../ai/src/protocols/utils/partial-json.ts", "../ai/src/protocols/utils/tool-stream.ts"], | ||
| "sourcesContent": [ | ||
| "/*\n * Adapted from partial-json by the Promplate Dev Team:\n * https://github.com/promplate/partial-json-parser-js/blob/main/src/options.ts\n * Licensed under the MIT License; see partial-json.ts for the complete notice.\n */\n\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello `\n */\nexport const STR = 0b000000001\n\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexport const NUM = 0b000000010\n\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexport const ARR = 0b000000100\n\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexport const OBJ = 0b000001000\n\n/**\n * allow `nu` to be parsed as `null`\n */\nexport const NULL = 0b000010000\n\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexport const BOOL = 0b000100000\n\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexport const NAN = 0b001000000\n\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexport const INFINITY = 0b010000000\n\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexport const _INFINITY = 0b100000000\n\nexport const INF = INFINITY | _INFINITY\nexport const SPECIAL = NULL | BOOL | INF | NAN\nexport const ATOM = STR | NUM | SPECIAL\nexport const COLLECTION = ARR | OBJ\nexport const ALL = ATOM | COLLECTION\n\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 cases is the best option.\n */\nexport const Allow = { STR, NUM, ARR, OBJ, NULL, BOOL, NAN, INFINITY, _INFINITY, INF, SPECIAL, ATOM, COLLECTION, ALL }\n\nexport default Allow\n", | ||
| "/*\n * Adapted from partial-json by the Promplate Dev Team:\n * https://github.com/promplate/partial-json-parser-js\n *\n * MIT License\n *\n * Copyright (c) 2023 Promplate Dev Team\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { Schema } from \"effect\"\nimport { Allow } from \"./partial-json-options.js\"\nexport * from \"./partial-json-options.js\"\n\nexport class PartialJSON extends Error {}\nexport class MalformedJSON extends Error {}\n\nconst decodeJson = Schema.decodeUnknownSync(Schema.fromJsonString(Schema.Unknown))\n\n/** Parse complete or incomplete JSON, restricted by the supplied partial-value flags. */\nexport function parseJSON(jsonString: string, allowPartial = Allow.ALL): unknown {\n if (typeof jsonString !== \"string\") throw new TypeError(`expecting str, got ${typeof jsonString}`)\n const input = jsonString.trim()\n if (!input) throw new Error(`${jsonString} is empty`)\n try {\n return decodeJson(input)\n } catch {}\n\n const repaired = repairJSON(input)\n if (repaired !== input) {\n try {\n return decodeJson(repaired)\n } catch {}\n }\n\n try {\n return _parseJSON(input, allowPartial)\n } catch (error) {\n if (repaired !== input) return _parseJSON(repaired, allowPartial)\n throw error\n }\n}\n\nconst repairJSON = (input: string) => {\n let repaired = \"\"\n let quoted = false\n\n for (let index = 0; index < input.length; index++) {\n const character = input[index]\n if (!quoted) {\n repaired += character\n if (character === '\"') quoted = true\n continue\n }\n\n if (character === '\"') {\n repaired += character\n quoted = false\n continue\n }\n\n if (character === \"\\\\\") {\n const next = input[index + 1]\n if (next === \"u\" && /^[0-9a-fA-F]{4}$/.test(input.slice(index + 2, index + 6))) {\n repaired += input.slice(index, index + 6)\n index += 5\n continue\n }\n if (next !== undefined && '\"\\\\/bfnrtu'.includes(next)) {\n repaired += `\\\\${next}`\n index++\n continue\n }\n repaired += \"\\\\\\\\\"\n continue\n }\n\n const code = character.charCodeAt(0)\n repaired += code <= 0x1f ? `\\\\u${code.toString(16).padStart(4, \"0\")}` : character\n }\n\n return repaired\n}\n\nconst _parseJSON = (jsonString: string, allow: number) => {\n const length = jsonString.length\n let index = 0\n\n const markPartialJSON = (message: string): never => {\n throw new PartialJSON(`${message} at position ${index}`)\n }\n\n const throwMalformedError = (message: string): never => {\n throw new MalformedJSON(`${message} at position ${index}`)\n }\n\n const parseAny = (): unknown => {\n skipBlank()\n if (index >= length) markPartialJSON(\"Unexpected end of input\")\n if (jsonString[index] === '\"') return parseStr()\n if (jsonString[index] === \"{\") return parseObj()\n if (jsonString[index] === \"[\") return parseArr()\n if (\n jsonString.substring(index, index + 4) === \"null\" ||\n (Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))\n ) {\n index += 4\n return null\n }\n if (\n jsonString.substring(index, index + 4) === \"true\" ||\n (Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))\n ) {\n index += 4\n return true\n }\n if (\n jsonString.substring(index, index + 5) === \"false\" ||\n (Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))\n ) {\n index += 5\n return false\n }\n if (\n jsonString.substring(index, index + 8) === \"Infinity\" ||\n (Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))\n ) {\n index += 8\n return Infinity\n }\n if (\n jsonString.substring(index, index + 9) === \"-Infinity\" ||\n (Allow._INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n \"-Infinity\".startsWith(jsonString.substring(index)))\n ) {\n index += 9\n return -Infinity\n }\n if (\n jsonString.substring(index, index + 3) === \"NaN\" ||\n (Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))\n ) {\n index += 3\n return NaN\n }\n return parseNum()\n }\n\n const parseStr = (): string => {\n const start = index\n let escape = false\n index++\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 decodeJson(jsonString.substring(start, ++index - Number(escape))) as string\n } catch (error) {\n throwMalformedError(String(error))\n }\n }\n if (Allow.STR & allow) {\n try {\n return decodeJson(`${jsonString.substring(start, index - Number(escape))}\"`) as string\n } catch {\n return decodeJson(`${jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\"))}\"`) as string\n }\n }\n return markPartialJSON(\"Unterminated string literal\")\n }\n\n const parseObj = (): Record<string, unknown> => {\n index++\n skipBlank()\n const object: Record<string, unknown> = {}\n try {\n while (jsonString[index] !== \"}\") {\n skipBlank()\n if (index >= length && Allow.OBJ & allow) return object\n const key = parseStr()\n skipBlank()\n index++\n try {\n Object.defineProperty(object, key, {\n value: parseAny(),\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } catch (error) {\n if (Allow.OBJ & allow) return object\n throw error\n }\n skipBlank()\n if (jsonString[index] === \",\") index++\n }\n } catch {\n if (Allow.OBJ & allow) return object\n return markPartialJSON(\"Expected '}' at end of object\")\n }\n index++\n return object\n }\n\n const parseArr = (): unknown[] => {\n index++\n const array: unknown[] = []\n try {\n while (jsonString[index] !== \"]\") {\n array.push(parseAny())\n skipBlank()\n if (jsonString[index] === \",\") index++\n }\n } catch {\n if (Allow.ARR & allow) return array\n return markPartialJSON(\"Expected ']' at end of array\")\n }\n index++\n return array\n }\n\n const parseNum = (): unknown => {\n if (index === 0) {\n if (jsonString === \"-\") throwMalformedError(\"Not sure what '-' is\")\n try {\n return decodeJson(jsonString)\n } catch (error) {\n if (Allow.NUM & allow) {\n try {\n return decodeJson(jsonString.substring(0, jsonString.lastIndexOf(\"e\")))\n } catch {}\n }\n throwMalformedError(String(error))\n }\n }\n\n const start = index\n if (jsonString[index] === \"-\") index++\n while (jsonString[index] && !\",]}\".includes(jsonString[index])) index++\n if (index === length && !(Allow.NUM & allow)) markPartialJSON(\"Unterminated number literal\")\n\n try {\n return decodeJson(jsonString.substring(start, index))\n } catch (error) {\n if (jsonString.substring(start, index) === \"-\") markPartialJSON(\"Not sure what '-' is\")\n try {\n return decodeJson(jsonString.substring(start, jsonString.lastIndexOf(\"e\")))\n } catch {\n throwMalformedError(String(error))\n }\n }\n }\n\n const skipBlank = () => {\n while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) index++\n }\n\n return parseAny()\n}\n\nexport const parse = parseJSON\n", | ||
| "import { Effect, Option } from \"effect\"\nimport { AIError, LLMEvent, type ProviderMetadata, type ToolCall } from \"../../schema/index.js\"\nimport { eventError, parseToolInput, type ToolAccumulator } from \"../shared.js\"\nimport { parse } from \"./partial-json.js\"\n\ntype StreamKey = string | number\nconst parsePartialInput = Option.liftThrowable(parse)\n\n/**\n * One pending streamed tool call. Providers emit the tool identity and JSON\n * argument text across separate chunks; `input` is the raw JSON string collected\n * so far, not the parsed object.\n */\nexport interface PendingTool extends ToolAccumulator {\n readonly providerExecuted?: boolean\n readonly providerMetadata?: ProviderMetadata\n}\n\n/**\n * Sparse parser state keyed by the provider's stream-local tool identifier.\n *\n * This key is not the final tool-call id (`call_...`). It is the id/index the\n * provider uses while streaming a partial call: OpenAI Chat / Anthropic /\n * Bedrock use numeric content indexes, while OpenAI Responses uses string\n * `item_id`s. The generic keeps each protocol internally consistent.\n */\nexport type State<K extends StreamKey> = Partial<Record<K, PendingTool>>\n\n/**\n * Result of adding argument text to one pending tool call. It returns both the\n * next `tools` state and the updated `tool` because parsers often need the\n * current id/name immediately. `events` contains lifecycle and delta events\n * produced by the append; metadata-only deltas update identity without output.\n */\nexport interface AppendOutcome<K extends StreamKey> {\n readonly tools: State<K>\n readonly tool: PendingTool\n readonly events: ReadonlyArray<LLMEvent>\n}\n\n/** Create empty accumulator state for one provider stream. */\nexport const empty = <K extends StreamKey>(): State<K> => ({})\n\nconst withTool = <K extends StreamKey>(tools: State<K>, key: K, tool: PendingTool): State<K> => {\n return { ...tools, [key]: tool }\n}\n\nconst withoutTool = <K extends StreamKey>(tools: State<K>, key: K): State<K> => {\n const next = { ...tools }\n delete next[key]\n return next\n}\n\nconst inputStart = (tool: PendingTool) =>\n LLMEvent.toolInputStart({\n id: tool.id,\n name: tool.name,\n providerExecuted: tool.providerExecuted ? true : undefined,\n providerMetadata: tool.providerMetadata,\n })\n\nconst inputDelta = (tool: PendingTool, text: string) =>\n LLMEvent.toolInputDelta({\n id: tool.id,\n name: tool.name,\n text,\n input: Option.getOrElse(parsePartialInput(tool.input), () => ({})),\n })\n\nconst toolCall = (route: string, tool: PendingTool, inputOverride?: string) => {\n const raw = inputOverride ?? tool.input\n return parseToolInput(route, tool.name, raw).pipe(\n Effect.catch((error) =>\n tool.providerExecuted\n ? Effect.fail(error)\n : Effect.succeed(\n Option.getOrElse(\n Option.map(parsePartialInput(raw), (input) => input ?? {}),\n () => ({}),\n ),\n ),\n ),\n Effect.map(\n (input): ToolCall =>\n LLMEvent.toolCall({\n id: tool.id,\n name: tool.name,\n input,\n providerExecuted: tool.providerExecuted ? true : undefined,\n providerMetadata: tool.providerMetadata,\n }),\n ),\n )\n}\n\nconst finishEvents = (tool: PendingTool, event: ToolCall): ReadonlyArray<LLMEvent> => [\n LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }),\n event,\n]\n\n/** Store the updated tool and produce the optional public delta event. */\nconst appendTool = <K extends StreamKey>(\n tools: State<K>,\n key: K,\n tool: PendingTool,\n text: string,\n): AppendOutcome<K> => {\n const events: LLMEvent[] = []\n if (!tools[key]) events.push(inputStart(tool))\n if (text.length > 0) events.push(inputDelta(tool, text))\n return {\n tools: withTool(tools, key, tool),\n tool,\n events,\n }\n}\n\nexport const isError = <K extends StreamKey>(result: AppendOutcome<K> | AIError): result is AIError =>\n result instanceof AIError\n\n/**\n * Register a tool call whose start event arrived before any argument deltas.\n * Used by Anthropic `content_block_start`, Bedrock `contentBlockStart`, and\n * OpenAI Responses `response.output_item.added`.\n */\nexport const start = <K extends StreamKey>(\n tools: State<K>,\n key: K,\n tool: Omit<PendingTool, \"input\"> & { readonly input?: string },\n) => withTool(tools, key, { ...tool, input: tool.input ?? \"\" })\n\n/**\n * Append a streamed argument delta, starting the tool if this provider encodes\n * identity on the first delta instead of a separate start event. OpenAI Chat has\n * this shape: `tool_calls[].index` is the stream key, and `id` / `name` may only\n * appear on the first delta for that index.\n */\nexport const appendOrStart = <K extends StreamKey>(\n route: string,\n tools: State<K>,\n key: K,\n delta: { readonly id?: string; readonly name?: string; readonly text: string },\n missingToolMessage: string,\n): AppendOutcome<K> | AIError => {\n const current = tools[key]\n const id = current?.id ?? delta.id\n const name = current?.name ?? delta.name\n if (!id || !name) return eventError(route, missingToolMessage)\n\n const tool = {\n id,\n name,\n input: `${current?.input ?? \"\"}${delta.text}`,\n providerExecuted: current?.providerExecuted,\n providerMetadata: current?.providerMetadata,\n }\n if (current && delta.text.length === 0 && current.id === id && current.name === name)\n return { tools, tool: current, events: [] }\n return appendTool(tools, key, tool, delta.text)\n}\n\n/**\n * Append argument text to a tool that must already have been started. This keeps\n * protocols honest when their stream grammar promises a start event before any\n * argument delta.\n */\nexport const appendExisting = <K extends StreamKey>(\n route: string,\n tools: State<K>,\n key: K,\n text: string,\n missingToolMessage: string,\n): AppendOutcome<K> | AIError => {\n const current = tools[key]\n if (!current) return eventError(route, missingToolMessage)\n if (text.length === 0) return { tools, tool: current, events: [] }\n return appendTool(tools, key, { ...current, input: `${current.input}${text}` }, text)\n}\n\n/**\n * Finalize one pending tool call: parse the accumulated raw JSON, remove it\n * from state, and recover incomplete local arguments when needed.\n * Missing keys are a no-op because some providers emit stop events for\n * non-tool content blocks.\n */\nexport const finish = <K extends StreamKey>(route: string, tools: State<K>, key: K) =>\n Effect.gen(function* () {\n const tool = tools[key]\n if (!tool) return { tools }\n return {\n tools: withoutTool(tools, key),\n events: finishEvents(tool, yield* toolCall(route, tool)),\n }\n })\n\n/**\n * Finalize one pending tool call with an authoritative final input string.\n * OpenAI Responses can send accumulated deltas and then repeat the completed\n * arguments on `response.output_item.done`; the final value wins.\n */\nexport const finishWithInput = <K extends StreamKey>(route: string, tools: State<K>, key: K, input: string) =>\n Effect.gen(function* () {\n const tool = tools[key]\n if (!tool) return { tools }\n return {\n tools: withoutTool(tools, key),\n events: finishEvents(tool, yield* toolCall(route, tool, input)),\n }\n })\n\n/**\n * Finalize every pending tool call at once. OpenAI Chat has this shape: it does\n * not emit per-tool stop events, so all accumulated calls finish independently\n * when the choice receives a terminal `finish_reason`.\n */\nexport const finishAll = <K extends StreamKey>(route: string, tools: State<K>) =>\n Effect.gen(function* () {\n const pending = Object.values<PendingTool | undefined>(tools).filter(\n (tool): tool is PendingTool => tool !== undefined,\n )\n return {\n tools: empty<K>(),\n events: yield* Effect.forEach(pending, (tool) =>\n toolCall(route, tool).pipe(Effect.map((event) => finishEvents(tool, event))),\n ).pipe(Effect.map((events) => events.flat())),\n }\n })\n\nexport * as ToolStream from \"./tool-stream.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "BD4A90F418B7917C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/file-diff.ts", "../schema/src/session-revert.ts", "../schema/src/session-fork.ts", "../schema/src/instruction.ts", "../schema/src/instruction-entry.ts", "../schema/src/session-inbox.ts", "../schema/src/session-event.ts"], | ||
| "sourcesContent": [ | ||
| "export * as FileDiff from \"./file-diff.js\"\n\nimport { Schema } from \"effect\"\nimport { NonNegativeInt, optional } from \"./schema.js\"\n\nexport const Info = Schema.Struct({\n file: Schema.String,\n patch: Schema.String,\n additions: NonNegativeInt,\n deletions: NonNegativeInt,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]),\n}).annotate({ identifier: \"FileDiff.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\n/** V1 snapshot and persisted session diff shape. */\nexport const LegacyInfo = Schema.Struct({\n file: Schema.String.pipe(optional),\n patch: Schema.String.pipe(optional),\n additions: Schema.Finite,\n deletions: Schema.Finite,\n status: Schema.Literals([\"added\", \"deleted\", \"modified\"]).pipe(optional),\n}).annotate({ identifier: \"FileDiff.LegacyInfo\" })\nexport interface LegacyInfo extends Schema.Schema.Type<typeof LegacyInfo> {}\n", | ||
| "import { Schema, SchemaTransformation } from \"effect\"\nimport { FileDiff } from \"./file-diff.js\"\nimport { optional } from \"./schema.js\"\nimport { SessionMessage } from \"./session-message.js\"\nimport { Snapshot } from \"./snapshot.js\"\n\nexport interface Revert extends Schema.Schema.Type<typeof Revert> {}\nexport const Revert = Schema.Struct({\n messageID: SessionMessage.ID,\n /** Legacy V1 compatibility state. */\n partID: Schema.String.pipe(optional),\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(FileDiff.Info).pipe(optional),\n}).annotate({ identifier: \"Session.Revert\" })\n\nconst FileDiffV1 = Schema.Struct({\n path: Schema.String,\n status: Schema.Literals([\"added\", \"modified\", \"deleted\"]),\n additions: Schema.Finite,\n deletions: Schema.Finite,\n patch: Schema.String,\n})\n\nexport interface RevertV1 extends Schema.Schema.Type<typeof RevertV1> {}\nexport const RevertV1 = Schema.Struct({\n messageID: SessionMessage.ID,\n partID: Schema.String.pipe(optional),\n snapshot: Schema.String.pipe(optional),\n diff: Schema.String.pipe(optional),\n files: Schema.Array(FileDiffV1).pipe(optional),\n}).annotate({ identifier: \"Session.RevertV1\" })\n\nconst PersistedCurrent = Revert.pipe(\n Schema.decodeTo(\n Schema.Struct({ source: Schema.tag(\"current\"), revert: Schema.toType(Revert) }),\n SchemaTransformation.transform({\n decode: (revert): { readonly source: \"current\"; readonly revert: Revert } => ({\n source: \"current\",\n revert,\n }),\n encode: (value) => value.revert,\n }),\n ),\n)\nconst PersistedLegacy = RevertV1.pipe(\n Schema.decodeTo(\n Schema.Struct({ source: Schema.tag(\"legacy\"), revert: Schema.toType(RevertV1) }),\n SchemaTransformation.transform({\n decode: (revert): { readonly source: \"legacy\"; readonly revert: RevertV1 } => ({\n source: \"legacy\",\n revert,\n }),\n encode: (value) => value.revert,\n }),\n ),\n)\n\n/** Storage decoder for revert state written before FileDiff became canonical. */\nexport const PersistedRevert = Schema.Union([PersistedCurrent, PersistedLegacy]).pipe(\n Schema.toTaggedUnion(\"source\"),\n Schema.decodeTo(\n Schema.toType(Revert),\n SchemaTransformation.transform({\n decode: (persisted): Revert => {\n if (persisted.source === \"current\") return persisted.revert\n return Revert.make({\n messageID: persisted.revert.messageID,\n partID: persisted.revert.partID,\n snapshot: persisted.revert.snapshot ? Snapshot.ID.make(persisted.revert.snapshot) : undefined,\n files: persisted.revert.files?.map((file) => ({\n file: file.path,\n status: file.status,\n additions: file.additions,\n deletions: file.deletions,\n patch: file.patch,\n })),\n })\n },\n encode: (revert): { readonly source: \"current\"; readonly revert: Revert } => ({\n source: \"current\",\n revert,\n }),\n }),\n ),\n Schema.annotate({ identifier: \"Session.Revert.Persisted\" }),\n)\n", | ||
| "export * as SessionFork from \"./session-fork.js\"\n\nimport { Schema } from \"effect\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport const Boundary = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"before\"), messageID: SessionMessage.ID }),\n Schema.Struct({ type: Schema.Literal(\"through\"), messageID: SessionMessage.ID }),\n]).annotate({ identifier: \"Session.ForkBoundary\" })\nexport type Boundary = typeof Boundary.Type\n\nexport const RequestBoundary = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"before\"), messageID: SessionMessage.ID }),\n Schema.Struct({ type: Schema.Literal(\"through\") }),\n]).annotate({ identifier: \"Session.ForkRequestBoundary\" })\nexport type RequestBoundary = typeof RequestBoundary.Type\n", | ||
| "export * as Instruction from \"./instruction.js\"\n\nimport { Schema } from \"effect\"\n\nexport const Key = Schema.String.check(Schema.isPattern(/^[a-z0-9][a-z0-9._-]*\\/[a-z0-9][a-z0-9._/-]*$/)).pipe(\n Schema.brand(\"Instruction.Key\"),\n)\nexport type Key = typeof Key.Type\n\nexport const Hash = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/)).pipe(Schema.brand(\"Instruction.Hash\"))\nexport type Hash = typeof Hash.Type\n\nexport const Values = Schema.Record(Key, Hash)\nexport type Values = Readonly<Record<string, Hash>>\n\nexport const Removed = Schema.Literal(\"removed\")\nexport type Removed = typeof Removed.Type\nexport const removed = Removed.make(\"removed\")\n\nexport const Delta = Schema.Record(Schema.String, Schema.Union([Hash, Removed]))\nexport type Delta = typeof Delta.Type\n", | ||
| "export * as InstructionEntry from \"./instruction-entry.js\"\n\nimport { Schema } from \"effect\"\n\n/**\n * Slash-free client-facing key for one API-managed instruction entry. The server\n * derives the namespaced Instructions key as `api/<key>`, keeping the\n * `api/*` namespace enforced by construction.\n */\nexport const Key = Schema.String.check(Schema.isPattern(/^[a-z0-9][a-z0-9._-]*$/)).annotate({\n identifier: \"InstructionEntry.Key\",\n description: \"Instruction entry key (lowercase alphanumerics plus . _ -)\",\n})\nexport type Key = typeof Key.Type\n\nexport const Info = Schema.Struct({\n key: Key,\n value: Schema.Json.annotate({ description: \"JSON value attached to the session's instructions\" }),\n}).annotate({ identifier: \"InstructionEntry.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Snapshot = Schema.Array(\n Schema.Struct({\n ...Info.fields,\n removed: Schema.Boolean,\n }),\n).annotate({ identifier: \"InstructionEntry.Snapshot\" })\nexport type Snapshot = typeof Snapshot.Type\n\nexport const MaxValueBytes = 8 * 1024\n\nexport class ValueTooLargeError extends Schema.TaggedError<ValueTooLargeError>()(\n \"InstructionEntryValueTooLargeError\",\n {\n actualBytes: Schema.Int,\n maxBytes: Schema.Int,\n message: Schema.String,\n },\n { httpApiStatus: 413 },\n) {}\n", | ||
| "export * as SessionInbox from \"./session-inbox.js\"\n\nimport { Schema } from \"effect\"\nimport { Location } from \"./location.js\"\nimport { Project } from \"./project.js\"\nimport { Prompt } from \"./prompt.js\"\nimport { DateTimeUtcFromMillis, optional, RelativePath } from \"./schema.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { SessionMessage } from \"./session-message.js\"\n\nexport const Delivery = Schema.Literals([\"steer\", \"queue\"]).annotate({ identifier: \"Session.Inbox.Delivery\" })\nexport type Delivery = typeof Delivery.Type\n\nexport interface UserPayload extends Schema.Schema.Type<typeof UserPayload> {}\nexport const UserPayload = Schema.Struct({\n ...Prompt.fields,\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.UserPayload\" })\n\nexport interface SyntheticPayload extends Schema.Schema.Type<typeof SyntheticPayload> {}\nexport const SyntheticPayload = Schema.Struct({\n text: Schema.String,\n description: Schema.String.pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.SyntheticPayload\" })\n\nexport interface CompactionPayload extends Schema.Schema.Type<typeof CompactionPayload> {}\nexport const CompactionPayload = Schema.Struct({}).annotate({ identifier: \"Session.Inbox.CompactionPayload\" })\n\nexport interface MovePayload extends Schema.Schema.Type<typeof MovePayload> {}\nexport const MovePayload = Schema.Struct({\n location: Location.Ref,\n projectID: Project.ID,\n subpath: RelativePath.pipe(optional),\n}).annotate({ identifier: \"Session.Inbox.MovePayload\" })\n\nconst UserItem = Schema.Struct({ type: Schema.tag(\"user\"), payload: UserPayload, delivery: Delivery })\nconst SyntheticItem = Schema.Struct({ type: Schema.tag(\"synthetic\"), payload: SyntheticPayload, delivery: Delivery })\nconst CompactionItem = Schema.Struct({\n type: Schema.tag(\"compaction\"),\n payload: CompactionPayload,\n delivery: Delivery,\n})\nconst MoveItem = Schema.Struct({ type: Schema.tag(\"move\"), payload: MovePayload, delivery: Delivery })\n\nexport const Item = Schema.Union([UserItem, SyntheticItem, CompactionItem, MoveItem]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Session.Inbox.Item\" }),\n)\nexport type Item = typeof Item.Type\n\nconst Enqueued = {\n id: SessionMessage.ID,\n sessionID: SessionID,\n timeCreated: DateTimeUtcFromMillis,\n}\n\nexport interface User extends Schema.Schema.Type<typeof User> {}\nexport const User = Schema.Struct({ ...Enqueued, ...UserItem.fields }).annotate({ identifier: \"Session.Inbox.User\" })\n\nexport interface Synthetic extends Schema.Schema.Type<typeof Synthetic> {}\nexport const Synthetic = Schema.Struct({ ...Enqueued, ...SyntheticItem.fields }).annotate({\n identifier: \"Session.Inbox.Synthetic\",\n})\n\nexport interface Compaction extends Schema.Schema.Type<typeof Compaction> {}\nexport const Compaction = Schema.Struct({ ...Enqueued, ...CompactionItem.fields }).annotate({\n identifier: \"Session.Inbox.Compaction\",\n})\n\nexport interface Move extends Schema.Schema.Type<typeof Move> {}\nexport const Move = Schema.Struct({ ...Enqueued, ...MoveItem.fields }).annotate({ identifier: \"Session.Inbox.Move\" })\n\nexport const Info = Schema.Union([User, Synthetic, Compaction, Move]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Session.Inbox.Info\" }),\n)\nexport type Info = typeof Info.Type\n", | ||
| "export * as SessionEvent from \"./session-event.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { Event } from \"./event.js\"\nimport { FinishReason } from \"./llm.js\"\nimport { Content } from \"./tool.js\"\nimport { Model } from \"./model.js\"\nimport { NonNegativeInt, PositiveInt, RelativePath } from \"./schema.js\"\nimport { FileAttachment } from \"./prompt.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { Location } from \"./location.js\"\nimport { SessionMessage } from \"./session-message.js\"\nimport { Revert } from \"./session-revert.js\"\nimport { Shell as ShellSchema } from \"./shell.js\"\nimport { SessionError } from \"./session-error.js\"\nimport { Instruction } from \"./instruction.js\"\nimport { InstructionEntry } from \"./instruction-entry.js\"\nimport { Agent } from \"./agent.js\"\nimport { Skill as SkillSchema } from \"./skill.js\"\nimport { Money } from \"./money.js\"\nimport { Snapshot } from \"./snapshot.js\"\nimport { TokenUsage } from \"./token-usage.js\"\nimport { SessionInbox } from \"./session-inbox.js\"\nimport { Project } from \"./project.js\"\nimport { SessionFork } from \"./session-fork.js\"\n\nexport { FileAttachment }\n\nexport const Source = Schema.Struct({\n start: NonNegativeInt,\n end: NonNegativeInt,\n text: Schema.String,\n}).annotate({\n identifier: \"Session.Event.Source\",\n})\nexport interface Source extends Schema.Schema.Type<typeof Source> {}\n\nconst Base = {\n sessionID: SessionID,\n}\n\nconst options = {\n durable: {\n aggregate: \"sessionID\",\n version: 1,\n },\n} as const\nexport const Created = Event.durable({\n type: \"session.created\",\n ...options,\n schema: {\n ...Base,\n projectID: Project.ID,\n location: Location.Ref,\n subpath: RelativePath.pipe(optional),\n parentID: SessionID.pipe(optional),\n slug: Schema.String,\n title: Schema.String.pipe(optional),\n agent: Agent.ID.pipe(optional),\n model: Model.Ref.pipe(optional),\n version: Schema.String,\n },\n})\nexport type Created = typeof Created.Type\n\nexport const AgentSelected = Event.durable({\n type: \"session.agent.selected\",\n ...options,\n schema: {\n ...Base,\n agent: Agent.ID,\n previous: Agent.ID.pipe(optional),\n },\n})\nexport type AgentSelected = typeof AgentSelected.Type\n\nexport const ModelSelected = Event.durable({\n type: \"session.model.selected\",\n ...options,\n schema: {\n ...Base,\n model: Model.Ref,\n previous: Model.Ref.pipe(optional),\n },\n})\nexport type ModelSelected = typeof ModelSelected.Type\n\nexport const Moved = Event.durable({\n type: \"session.moved\",\n ...options,\n schema: {\n ...Base,\n ...SessionInbox.MovePayload.fields,\n },\n})\nexport type Moved = typeof Moved.Type\n\nexport const Renamed = Event.durable({\n type: \"session.renamed\",\n ...options,\n schema: {\n ...Base,\n title: Schema.String,\n },\n})\nexport type Renamed = typeof Renamed.Type\n\nexport const Viewed = Event.durable({\n type: \"session.viewed\",\n ...options,\n schema: {\n ...Base,\n /** Epoch-millisecond idle watermark the viewer observed; projection never marks a newer idle transition viewed. */\n idle: Schema.Finite,\n },\n})\nexport type Viewed = typeof Viewed.Type\n\nexport const UsageRecorded = Event.durable({\n type: \"session.usage.recorded\",\n ...options,\n schema: {\n ...Base,\n source: Schema.Literals([\"title\", \"compaction\"]),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n },\n})\nexport type UsageRecorded = typeof UsageRecorded.Type\n\nexport const UsageUpdated = Event.ephemeral({\n type: \"session.usage.updated\",\n schema: {\n ...Base,\n cost: Money.USD,\n tokens: TokenUsage.Info,\n },\n})\nexport type UsageUpdated = typeof UsageUpdated.Type\n\nexport const Deleted = Event.durable({\n type: \"session.deleted\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: Base,\n})\nexport type Deleted = typeof Deleted.Type\n\nexport const Forked = Event.durable({\n type: \"session.forked\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...Base,\n parentID: SessionID,\n boundary: SessionFork.Boundary,\n instructions: Instruction.Values.pipe(optional),\n instructionEntries: InstructionEntry.Snapshot.pipe(optional),\n },\n})\nexport type Forked = typeof Forked.Type\n\nconst InboxRef = {\n ...Base,\n inboxID: SessionMessage.ID,\n}\n\nexport const InboxDelivered = Event.durable({\n type: \"session.inbox.delivered\",\n ...options,\n schema: InboxRef,\n})\nexport type InboxDelivered = typeof InboxDelivered.Type\n\nexport const InboxEnqueued = Event.durable({\n type: \"session.inbox.enqueued\",\n ...options,\n schema: {\n ...InboxRef,\n item: SessionInbox.Item,\n },\n})\nexport type InboxEnqueued = typeof InboxEnqueued.Type\n\nexport const InboxCancelled = Event.durable({\n type: \"session.inbox.cancelled\",\n ...options,\n schema: InboxRef,\n})\nexport type InboxCancelled = typeof InboxCancelled.Type\n\nexport const InboxDeliveryChanged = Event.durable({\n type: \"session.inbox.delivery.changed\",\n ...options,\n schema: { ...InboxRef, delivery: SessionInbox.Delivery },\n})\nexport type InboxDeliveryChanged = typeof InboxDeliveryChanged.Type\n\nexport namespace Execution {\n export const Started = Event.durable({ type: \"session.execution.started\", ...options, schema: Base })\n export type Started = typeof Started.Type\n\n export const Succeeded = Event.durable({ type: \"session.execution.succeeded\", ...options, schema: Base })\n export type Succeeded = typeof Succeeded.Type\n\n export const Failed = Event.durable({\n type: \"session.execution.failed\",\n ...options,\n schema: { ...Base, error: SessionError.Error },\n })\n export type Failed = typeof Failed.Type\n\n export const Interrupted = Event.durable({\n type: \"session.execution.interrupted\",\n ...options,\n schema: { ...Base, reason: Schema.Literals([\"user\", \"shutdown\", \"superseded\"]) },\n })\n export type Interrupted = typeof Interrupted.Type\n}\n\nexport const InstructionsUpdated = Event.durable({\n type: \"session.instructions.updated\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...Base,\n delta: Instruction.Delta,\n /**\n * The rendered chronological update shown to the model, frozen at emit time.\n * Absent for the initial baseline observation and for deltas that render empty.\n */\n text: Schema.String.pipe(optional),\n },\n})\nexport type InstructionsUpdated = typeof InstructionsUpdated.Type\n\nexport const Synthetic = Event.durable({\n type: \"session.synthetic\",\n ...options,\n schema: {\n ...Base,\n text: Schema.String,\n description: Schema.String.pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n },\n})\nexport type Synthetic = typeof Synthetic.Type\n\nexport namespace Skill {\n export const Activated = Event.durable({\n type: \"session.skill.activated\",\n ...options,\n schema: {\n ...Base,\n id: SkillSchema.ID,\n name: SkillSchema.Name,\n text: Schema.String,\n },\n })\n export type Activated = typeof Activated.Type\n}\n\nexport namespace Shell {\n export const Started = Event.durable({\n type: \"session.shell.started\",\n ...options,\n schema: {\n ...Base,\n shell: ShellSchema.Info,\n },\n })\n export type Started = typeof Started.Type\n\n export const Ended = Event.durable({\n type: \"session.shell.ended\",\n ...options,\n schema: {\n ...Base,\n shell: ShellSchema.Info,\n output: ShellSchema.Output,\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Step {\n export const Started = Event.durable({\n type: \"session.step.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n agent: Agent.ID,\n model: Model.Ref,\n snapshot: Snapshot.ID.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n export const Ended = Event.durable({\n type: \"session.step.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n finish: FinishReason,\n rawFinish: Schema.String.pipe(optional),\n providerState: SessionMessage.ProviderState.pipe(optional),\n cost: Money.USD,\n tokens: TokenUsage.Info,\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n\n export const Failed = Event.durable({\n type: \"session.step.failed\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n error: SessionError.Error,\n finish: Schema.Literals([\"content-filter\"]).pipe(optional),\n rawFinish: Schema.String.pipe(optional),\n providerState: SessionMessage.ProviderState.pipe(optional),\n cost: Money.USD.pipe(optional),\n tokens: TokenUsage.Info.pipe(optional),\n snapshot: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport namespace Text {\n export const Started = Event.durable({\n type: \"session.text.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Text.Ended is the replayable full-value boundary.\n export const Delta = Event.ephemeral({\n type: \"session.text.delta\",\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.text.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n text: Schema.String,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Reasoning {\n export const Started = Event.durable({\n type: \"session.reasoning.started\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Reasoning.Ended is the replayable full-value boundary.\n export const Delta = Event.ephemeral({\n type: \"session.reasoning.delta\",\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.reasoning.ended\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n ordinal: NonNegativeInt,\n text: Schema.String,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Ended = typeof Ended.Type\n}\n\nexport namespace Tool {\n const ToolBase = {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n id: Schema.String,\n }\n\n export namespace Input {\n export const Started = Event.durable({\n type: \"session.tool.input.started\",\n ...options,\n schema: {\n ...ToolBase,\n name: Schema.String,\n },\n })\n export type Started = typeof Started.Type\n\n // Stream fragments are live-only; Input.Ended is the replayable raw-input boundary.\n export const Delta = Event.ephemeral({\n type: \"session.tool.input.delta\",\n schema: {\n ...ToolBase,\n delta: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.tool.input.ended\",\n ...options,\n schema: {\n ...ToolBase,\n text: Schema.String,\n },\n })\n export type Ended = typeof Ended.Type\n }\n\n export const Called = Event.durable({\n type: \"session.tool.called\",\n ...options,\n schema: {\n ...ToolBase,\n input: Schema.Record(Schema.String, Schema.Unknown),\n executed: Schema.Boolean,\n state: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Called = typeof Called.Type\n\n /** Live replacement metadata for a running tool. */\n export const Progress = Event.ephemeral({\n type: \"session.tool.progress\",\n schema: {\n ...ToolBase,\n metadata: Schema.Record(Schema.String, Schema.Json),\n },\n })\n export type Progress = typeof Progress.Type\n\n /** Canonical terminal success: one non-empty model representation plus optional UI metadata. */\n export const Success = Event.durable({\n type: \"session.tool.success\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...ToolBase,\n content: Schema.NonEmptyArray(Content),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n executed: Schema.Boolean,\n resultState: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Success = typeof Success.Type\n\n /**\n * Canonical terminal failure: one error plus the final bounded snapshot of\n * partial progress. The event is self-contained; projection never reaches\n * into ephemeral progress history.\n */\n export const Failed = Event.durable({\n type: \"session.tool.failed\",\n durable: {\n aggregate: \"sessionID\",\n version: 2,\n },\n schema: {\n ...ToolBase,\n error: SessionError.Error,\n content: Schema.NonEmptyArray(Content).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n executed: Schema.Boolean,\n resultState: SessionMessage.ProviderState.pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport const RetryScheduled = Event.durable({\n type: \"session.retry.scheduled\",\n ...options,\n schema: {\n ...Base,\n assistantMessageID: SessionMessage.ID,\n attempt: PositiveInt,\n at: NonNegativeInt,\n error: SessionError.Error,\n },\n})\nexport type RetryScheduled = typeof RetryScheduled.Type\n\nexport namespace Compaction {\n export const Started = Event.durable({\n type: \"session.compaction.started\",\n ...options,\n schema: {\n ...Base,\n reason: Schema.Literals([\"auto\", \"manual\"]),\n recent: Schema.String,\n inputID: SessionMessage.ID.pipe(optional),\n },\n })\n export type Started = typeof Started.Type\n\n export const Delta = Event.ephemeral({\n type: \"session.compaction.delta\",\n schema: {\n ...Base,\n text: Schema.String,\n },\n })\n export type Delta = typeof Delta.Type\n\n export const Ended = Event.durable({\n type: \"session.compaction.ended\",\n ...options,\n schema: {\n ...Base,\n reason: Started.data.fields.reason,\n text: Schema.String,\n recent: Schema.String,\n },\n })\n export type Ended = typeof Ended.Type\n\n export const Failed = Event.durable({\n type: \"session.compaction.failed\",\n ...options,\n schema: {\n ...Base,\n reason: Started.data.fields.reason,\n error: SessionError.Error,\n inputID: SessionMessage.ID.pipe(optional),\n },\n })\n export type Failed = typeof Failed.Type\n}\n\nexport namespace RevertEvent {\n export const Staged = Event.durable({\n type: \"session.revert.staged\",\n ...options,\n schema: { ...Base, revert: Revert },\n })\n export const Cleared = Event.durable({ type: \"session.revert.cleared\", ...options, schema: Base })\n export const Committed = Event.durable({\n type: \"session.revert.committed\",\n ...options,\n schema: { ...Base, to: SessionMessage.ID },\n })\n}\n\nexport const Definitions = Event.inventory(\n Created,\n AgentSelected,\n ModelSelected,\n Moved,\n Renamed,\n Viewed,\n UsageUpdated,\n Deleted,\n Forked,\n InboxDelivered,\n InboxEnqueued,\n InboxCancelled,\n InboxDeliveryChanged,\n Execution.Started,\n Execution.Succeeded,\n Execution.Failed,\n Execution.Interrupted,\n InstructionsUpdated,\n Synthetic,\n Skill.Activated,\n Shell.Started,\n Shell.Ended,\n Step.Started,\n Step.Ended,\n Step.Failed,\n Text.Started,\n Text.Delta,\n Text.Ended,\n Reasoning.Started,\n Reasoning.Delta,\n Reasoning.Ended,\n Tool.Input.Started,\n Tool.Input.Delta,\n Tool.Input.Ended,\n Tool.Called,\n Tool.Progress,\n Tool.Success,\n Tool.Failed,\n RetryScheduled,\n Compaction.Started,\n Compaction.Delta,\n Compaction.Ended,\n Compaction.Failed,\n RevertEvent.Staged,\n RevertEvent.Cleared,\n RevertEvent.Committed,\n)\n\n// UsageRecorded is durable but internal: excluded from Definitions so it never reaches the public manifest.\nexport const DurableDefinitions = Event.inventory(\n ...Definitions.filter((definition) => definition.durability === \"durable\"),\n UsageRecorded,\n)\nexport const EphemeralDefinitions = Event.inventory(\n ...Definitions.filter((definition) => definition.durability === \"ephemeral\"),\n)\n\nexport const Durable = Schema.Union(DurableDefinitions, { mode: \"oneOf\" })\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Session.Event.Durable\" })\nexport type DurableEvent = typeof Durable.Type\n\nexport const All = Schema.Union([Durable, ...EphemeralDefinitions], { mode: \"oneOf\" }).pipe(\n Schema.toTaggedUnion(\"type\"),\n)\nexport type Event = typeof All.Type\nexport type Type = Event[\"type\"]\n" | ||
| ], | ||
| "mappings": ";8jBAKO,IAAM,GAAO,EAAO,OAAO,CAChC,KAAM,EAAO,OACb,MAAO,EAAO,OACd,UAAW,EACX,UAAW,EACX,OAAQ,EAAO,SAAS,CAAC,QAAS,UAAW,UAAU,CAAC,CAC1D,CAAC,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAI9B,GAAa,EAAO,OAAO,CACtC,KAAM,EAAO,OAAO,KAAK,CAAQ,EACjC,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,UAAW,EAAO,OAClB,UAAW,EAAO,OAClB,OAAQ,EAAO,SAAS,CAAC,QAAS,UAAW,UAAU,CAAC,EAAE,KAAK,CAAQ,CACzE,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,ECd1C,IAAM,EAAS,EAAO,OAAO,CAClC,UAAW,EAAe,GAE1B,OAAQ,EAAO,OAAO,KAAK,CAAQ,EACnC,SAAU,EAAS,GAAG,KAAK,CAAQ,EACnC,MAAO,EAAO,MAAM,EAAS,IAAI,EAAE,KAAK,CAAQ,CAClD,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC,EAEtC,GAAa,EAAO,OAAO,CAC/B,KAAM,EAAO,OACb,OAAQ,EAAO,SAAS,CAAC,QAAS,WAAY,SAAS,CAAC,EACxD,UAAW,EAAO,OAClB,UAAW,EAAO,OAClB,MAAO,EAAO,MAChB,CAAC,EAGY,GAAW,EAAO,OAAO,CACpC,UAAW,EAAe,GAC1B,OAAQ,EAAO,OAAO,KAAK,CAAQ,EACnC,SAAU,EAAO,OAAO,KAAK,CAAQ,EACrC,KAAM,EAAO,OAAO,KAAK,CAAQ,EACjC,MAAO,EAAO,MAAM,EAAU,EAAE,KAAK,CAAQ,CAC/C,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAExC,GAAmB,EAAO,KAC9B,EAAO,SACL,EAAO,OAAO,CAAE,OAAQ,EAAO,IAAI,SAAS,EAAG,OAAQ,EAAO,OAAO,CAAM,CAAE,CAAC,EAC9E,EAAqB,UAAU,CAC7B,OAAQ,CAAC,KAAqE,CAC5E,OAAQ,UACR,QACF,GACA,OAAQ,CAAC,IAAU,EAAM,MAC3B,CAAC,CACH,CACF,EACM,GAAkB,GAAS,KAC/B,EAAO,SACL,EAAO,OAAO,CAAE,OAAQ,EAAO,IAAI,QAAQ,EAAG,OAAQ,EAAO,OAAO,EAAQ,CAAE,CAAC,EAC/E,EAAqB,UAAU,CAC7B,OAAQ,CAAC,KAAsE,CAC7E,OAAQ,SACR,QACF,GACA,OAAQ,CAAC,IAAU,EAAM,MAC3B,CAAC,CACH,CACF,EAGa,GAAkB,EAAO,MAAM,CAAC,GAAkB,EAAe,CAAC,EAAE,KAC/E,EAAO,cAAc,QAAQ,EAC7B,EAAO,SACL,EAAO,OAAO,CAAM,EACpB,EAAqB,UAAU,CAC7B,OAAQ,CAAC,IAAsB,CAC7B,GAAI,EAAU,SAAW,UAAW,OAAO,EAAU,OACrD,OAAO,EAAO,KAAK,CACjB,UAAW,EAAU,OAAO,UAC5B,OAAQ,EAAU,OAAO,OACzB,SAAU,EAAU,OAAO,SAAW,EAAS,GAAG,KAAK,EAAU,OAAO,QAAQ,EAAI,OACpF,MAAO,EAAU,OAAO,OAAO,IAAI,CAAC,KAAU,CAC5C,KAAM,EAAK,KACX,OAAQ,EAAK,OACb,UAAW,EAAK,UAChB,UAAW,EAAK,UAChB,MAAO,EAAK,KACd,EAAE,CACJ,CAAC,GAEH,OAAQ,CAAC,KAAqE,CAC5E,OAAQ,UACR,QACF,EACF,CAAC,CACH,EACA,EAAO,SAAS,CAAE,WAAY,0BAA2B,CAAC,CAC5D,2EChFO,IAAM,GAAW,EAAO,MAAM,CACnC,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,QAAQ,EAAG,UAAW,EAAe,EAAG,CAAC,EAC9E,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,SAAS,EAAG,UAAW,EAAe,EAAG,CAAC,CACjF,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,GAAkB,EAAO,MAAM,CAC1C,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,QAAQ,EAAG,UAAW,EAAe,EAAG,CAAC,EAC9E,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,SAAS,CAAE,CAAC,CACnD,CAAC,EAAE,SAAS,CAAE,WAAY,6BAA8B,CAAC,ouBCVlD,IAAM,GAAM,EAAO,OAAO,MAAM,EAAO,UAAU,+CAA+C,CAAC,EAAE,KACxG,EAAO,MAAM,iBAAiB,CAChC,EAGa,EAAO,EAAO,OAAO,MAAM,EAAO,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAO,MAAM,kBAAkB,CAAC,EAGpG,GAAS,EAAO,OAAO,GAAK,CAAI,EAGhC,EAAU,EAAO,QAAQ,SAAS,EAElC,GAAU,EAAQ,KAAK,SAAS,EAEhC,GAAQ,EAAO,OAAO,EAAO,OAAQ,EAAO,MAAM,CAAC,EAAM,CAAO,CAAC,CAAC,+HCVxE,IAAM,GAAM,EAAO,OAAO,MAAM,EAAO,UAAU,wBAAwB,CAAC,EAAE,SAAS,CAC1F,WAAY,uBACZ,YAAa,4DACf,CAAC,EAGY,GAAO,EAAO,OAAO,CAChC,IAAK,GACL,MAAO,EAAO,KAAK,SAAS,CAAE,YAAa,mDAAoD,CAAC,CAClG,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,GAAW,EAAO,MAC7B,EAAO,OAAO,IACT,GAAK,OACR,QAAS,EAAO,OAClB,CAAC,CACH,EAAE,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAGzC,GAAgB,KAEtB,MAAM,WAA2B,EAAO,YAAgC,EAC7E,qCACA,CACE,YAAa,EAAO,IACpB,SAAU,EAAO,IACjB,QAAS,EAAO,MAClB,EACA,CAAE,cAAe,GAAI,CACvB,CAAE,CAAC,6NC7BI,IAAM,EAAW,EAAO,SAAS,CAAC,QAAS,OAAO,CAAC,EAAE,SAAS,CAAE,WAAY,wBAAyB,CAAC,EAIhG,GAAc,EAAO,OAAO,IACpC,GAAO,OACV,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,KAAK,CAAQ,CACtE,CAAC,EAAE,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAG1C,GAAmB,EAAO,OAAO,CAC5C,KAAM,EAAO,OACb,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,KAAK,CAAQ,CACtE,CAAC,EAAE,SAAS,CAAE,WAAY,gCAAiC,CAAC,EAG/C,GAAoB,EAAO,OAAO,CAAC,CAAC,EAAE,SAAS,CAAE,WAAY,iCAAkC,CAAC,EAGhG,GAAc,EAAO,OAAO,CACvC,SAAU,EAAS,IACnB,UAAW,EAAQ,GACnB,QAAS,EAAa,KAAK,CAAQ,CACrC,CAAC,EAAE,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAEjD,GAAW,EAAO,OAAO,CAAE,KAAM,EAAO,IAAI,MAAM,EAAG,QAAS,GAAa,SAAU,CAAS,CAAC,EAC/F,GAAgB,EAAO,OAAO,CAAE,KAAM,EAAO,IAAI,WAAW,EAAG,QAAS,GAAkB,SAAU,CAAS,CAAC,EAC9G,GAAiB,EAAO,OAAO,CACnC,KAAM,EAAO,IAAI,YAAY,EAC7B,QAAS,GACT,SAAU,CACZ,CAAC,EACK,GAAW,EAAO,OAAO,CAAE,KAAM,EAAO,IAAI,MAAM,EAAG,QAAS,GAAa,SAAU,CAAS,CAAC,EAExF,GAAO,EAAO,MAAM,CAAC,GAAU,GAAe,GAAgB,EAAQ,CAAC,EAAE,KACpF,EAAO,cAAc,MAAM,EAC3B,EAAO,SAAS,CAAE,WAAY,oBAAqB,CAAC,CACtD,EAGM,EAAW,CACf,GAAI,EAAe,GACnB,UAAW,EACX,YAAa,EACf,EAGa,GAAO,EAAO,OAAO,IAAK,KAAa,GAAS,MAAO,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGvG,GAAY,EAAO,OAAO,IAAK,KAAa,GAAc,MAAO,CAAC,EAAE,SAAS,CACxF,WAAY,yBACd,CAAC,EAGY,GAAa,EAAO,OAAO,IAAK,KAAa,GAAe,MAAO,CAAC,EAAE,SAAS,CAC1F,WAAY,0BACd,CAAC,EAGY,GAAO,EAAO,OAAO,IAAK,KAAa,GAAS,MAAO,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAEvG,GAAO,EAAO,MAAM,CAAC,GAAM,GAAW,GAAY,EAAI,CAAC,EAAE,KACpE,EAAO,cAAc,MAAM,EAC3B,EAAO,SAAS,CAAE,WAAY,oBAAqB,CAAC,CACtD,EC/CO,IAAM,GAAS,EAAO,OAAO,CAClC,MAAO,EACP,IAAK,EACL,KAAM,EAAO,MACf,CAAC,EAAE,SAAS,CACV,WAAY,sBACd,CAAC,EAGK,EAAO,CACX,UAAW,CACb,EAEM,EAAU,CACd,QAAS,CACP,UAAW,YACX,QAAS,CACX,CACF,EACa,GAAU,EAAM,QAAQ,CACnC,KAAM,qBACH,EACH,OAAQ,IACH,EACH,UAAW,EAAQ,GACnB,SAAU,EAAS,IACnB,QAAS,EAAa,KAAK,CAAQ,EACnC,SAAU,EAAU,KAAK,CAAQ,EACjC,KAAM,EAAO,OACb,MAAO,EAAO,OAAO,KAAK,CAAQ,EAClC,MAAO,EAAM,GAAG,KAAK,CAAQ,EAC7B,MAAO,EAAM,IAAI,KAAK,CAAQ,EAC9B,QAAS,EAAO,MAClB,CACF,CAAC,EAGY,GAAgB,EAAM,QAAQ,CACzC,KAAM,4BACH,EACH,OAAQ,IACH,EACH,MAAO,EAAM,GACb,SAAU,EAAM,GAAG,KAAK,CAAQ,CAClC,CACF,CAAC,EAGY,GAAgB,EAAM,QAAQ,CACzC,KAAM,4BACH,EACH,OAAQ,IACH,EACH,MAAO,EAAM,IACb,SAAU,EAAM,IAAI,KAAK,CAAQ,CACnC,CACF,CAAC,EAGY,GAAQ,EAAM,QAAQ,CACjC,KAAM,mBACH,EACH,OAAQ,IACH,KACA,EAAa,YAAY,MAC9B,CACF,CAAC,EAGY,GAAU,EAAM,QAAQ,CACnC,KAAM,qBACH,EACH,OAAQ,IACH,EACH,MAAO,EAAO,MAChB,CACF,CAAC,EAGY,GAAS,EAAM,QAAQ,CAClC,KAAM,oBACH,EACH,OAAQ,IACH,EAEH,KAAM,EAAO,MACf,CACF,CAAC,EAGY,GAAgB,EAAM,QAAQ,CACzC,KAAM,4BACH,EACH,OAAQ,IACH,EACH,OAAQ,EAAO,SAAS,CAAC,QAAS,YAAY,CAAC,EAC/C,KAAM,EAAM,IACZ,OAAQ,EAAW,IACrB,CACF,CAAC,EAGY,GAAe,EAAM,UAAU,CAC1C,KAAM,wBACN,OAAQ,IACH,EACH,KAAM,EAAM,IACZ,OAAQ,EAAW,IACrB,CACF,CAAC,EAGY,GAAU,EAAM,QAAQ,CACnC,KAAM,kBACN,QAAS,CACP,UAAW,YACX,QAAS,CACX,EACA,OAAQ,CACV,CAAC,EAGY,GAAS,EAAM,QAAQ,CAClC,KAAM,iBACN,QAAS,CACP,UAAW,YACX,QAAS,CACX,EACA,OAAQ,IACH,EACH,SAAU,EACV,SAAU,EAAY,SACtB,aAAc,EAAY,OAAO,KAAK,CAAQ,EAC9C,mBAAoB,EAAiB,SAAS,KAAK,CAAQ,CAC7D,CACF,CAAC,EAGK,EAAW,IACZ,EACH,QAAS,EAAe,EAC1B,EAEa,GAAiB,EAAM,QAAQ,CAC1C,KAAM,6BACH,EACH,OAAQ,CACV,CAAC,EAGY,GAAgB,EAAM,QAAQ,CACzC,KAAM,4BACH,EACH,OAAQ,IACH,EACH,KAAM,EAAa,IACrB,CACF,CAAC,EAGY,GAAiB,EAAM,QAAQ,CAC1C,KAAM,6BACH,EACH,OAAQ,CACV,CAAC,EAGY,GAAuB,EAAM,QAAQ,CAChD,KAAM,oCACH,EACH,OAAQ,IAAK,EAAU,SAAU,EAAa,QAAS,CACzD,CAAC,EAGgB,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CAAE,KAAM,+BAAgC,EAAS,OAAQ,CAAK,CAAC,EAGvF,YAAY,EAAM,QAAQ,CAAE,KAAM,iCAAkC,EAAS,OAAQ,CAAK,CAAC,EAG3F,SAAS,EAAM,QAAQ,CAClC,KAAM,8BACH,EACH,OAAQ,IAAK,EAAM,MAAO,EAAa,KAAM,CAC/C,CAAC,EAGY,cAAc,EAAM,QAAQ,CACvC,KAAM,mCACH,EACH,OAAQ,IAAK,EAAM,OAAQ,EAAO,SAAS,CAAC,OAAQ,WAAY,YAAY,CAAC,CAAE,CACjF,CAAC,IAlBc,QAsBV,IAAM,GAAsB,EAAM,QAAQ,CAC/C,KAAM,+BACN,QAAS,CACP,UAAW,YACX,QAAS,CACX,EACA,OAAQ,IACH,EACH,MAAO,EAAY,MAKnB,KAAM,EAAO,OAAO,KAAK,CAAQ,CACnC,CACF,CAAC,EAGY,GAAY,EAAM,QAAQ,CACrC,KAAM,uBACH,EACH,OAAQ,IACH,EACH,KAAM,EAAO,OACb,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,KAAK,CAAQ,CACtE,CACF,CAAC,EAGgB,IAAV,CAAU,KACF,aAAY,EAAM,QAAQ,CACrC,KAAM,6BACH,EACH,OAAQ,IACH,EACH,GAAI,EAAY,GAChB,KAAM,EAAY,KAClB,KAAM,EAAO,MACf,CACF,CAAC,GAVc,SAcV,IAAU,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,2BACH,EACH,OAAQ,IACH,EACH,MAAO,EAAY,IACrB,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,yBACH,EACH,OAAQ,IACH,EACH,MAAO,EAAY,KACnB,OAAQ,EAAY,MACtB,CACF,CAAC,IAnBc,QAuBV,IAAU,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,0BACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,MAAO,EAAM,GACb,MAAO,EAAM,IACb,SAAU,EAAS,GAAG,KAAK,CAAQ,CACrC,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,wBACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,OAAQ,GACR,UAAW,EAAO,OAAO,KAAK,CAAQ,EACtC,cAAe,EAAe,cAAc,KAAK,CAAQ,EACzD,KAAM,EAAM,IACZ,OAAQ,EAAW,KACnB,SAAU,EAAS,GAAG,KAAK,CAAQ,EACnC,MAAO,EAAO,MAAM,CAAY,EAAE,KAAK,CAAQ,CACjD,CACF,CAAC,EAGY,SAAS,EAAM,QAAQ,CAClC,KAAM,yBACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,MAAO,EAAa,MACpB,OAAQ,EAAO,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAQ,EACzD,UAAW,EAAO,OAAO,KAAK,CAAQ,EACtC,cAAe,EAAe,cAAc,KAAK,CAAQ,EACzD,KAAM,EAAM,IAAI,KAAK,CAAQ,EAC7B,OAAQ,EAAW,KAAK,KAAK,CAAQ,EACrC,SAAU,EAAS,GAAG,KAAK,CAAQ,EACnC,MAAO,EAAO,MAAM,CAAY,EAAE,KAAK,CAAQ,CACjD,CACF,CAAC,IA9Cc,QAkDV,IAAU,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,0BACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,CACX,CACF,CAAC,EAIY,QAAQ,EAAM,UAAU,CACnC,KAAM,qBACN,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,EACT,MAAO,EAAO,MAChB,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,wBACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,EACT,KAAM,EAAO,OACb,MAAO,EAAe,cAAc,KAAK,CAAQ,CACnD,CACF,CAAC,IAlCc,QAsCV,IAAU,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,+BACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,EACT,MAAO,EAAe,cAAc,KAAK,CAAQ,CACnD,CACF,CAAC,EAIY,QAAQ,EAAM,UAAU,CACnC,KAAM,0BACN,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,EACT,MAAO,EAAO,MAChB,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,6BACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,EACT,KAAM,EAAO,OACb,MAAO,EAAe,cAAc,KAAK,CAAQ,CACnD,CACF,CAAC,IAnCc,QAuCV,IAAU,GAAV,CAAU,IAAV,CACL,IAAM,EAAW,IACZ,EACH,mBAAoB,EAAe,GACnC,GAAI,EAAO,MACb,EAEiB,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,gCACH,EACH,OAAQ,IACH,EACH,KAAM,EAAO,MACf,CACF,CAAC,EAIY,QAAQ,EAAM,UAAU,CACnC,KAAM,2BACN,OAAQ,IACH,EACH,MAAO,EAAO,MAChB,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,8BACH,EACH,OAAQ,IACH,EACH,KAAM,EAAO,MACf,CACF,CAAC,IA5Bc,gBAgCJ,SAAS,EAAM,QAAQ,CAClC,KAAM,yBACH,EACH,OAAQ,IACH,EACH,MAAO,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAClD,SAAU,EAAO,QACjB,MAAO,EAAe,cAAc,KAAK,CAAQ,CACnD,CACF,CAAC,EAIY,WAAW,EAAM,UAAU,CACtC,KAAM,wBACN,OAAQ,IACH,EACH,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,CACpD,CACF,CAAC,EAIY,UAAU,EAAM,QAAQ,CACnC,KAAM,uBACN,QAAS,CACP,UAAW,YACX,QAAS,CACX,EACA,OAAQ,IACH,EACH,QAAS,EAAO,cAAc,CAAO,EACrC,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,EAAE,KAAK,CAAQ,EACjE,SAAU,EAAO,QACjB,YAAa,EAAe,cAAc,KAAK,CAAQ,CACzD,CACF,CAAC,EAQY,SAAS,EAAM,QAAQ,CAClC,KAAM,sBACN,QAAS,CACP,UAAW,YACX,QAAS,CACX,EACA,OAAQ,IACH,EACH,MAAO,EAAa,MACpB,QAAS,EAAO,cAAc,CAAO,EAAE,KAAK,CAAQ,EACpD,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,EAAE,KAAK,CAAQ,EACjE,SAAU,EAAO,QACjB,YAAa,EAAe,cAAc,KAAK,CAAQ,CACzD,CACF,CAAC,IAjGc,QAqGV,IAAM,GAAiB,EAAM,QAAQ,CAC1C,KAAM,6BACH,EACH,OAAQ,IACH,EACH,mBAAoB,EAAe,GACnC,QAAS,GACT,GAAI,EACJ,MAAO,EAAa,KACtB,CACF,CAAC,EAGgB,GAAV,CAAU,KACF,UAAU,EAAM,QAAQ,CACnC,KAAM,gCACH,EACH,OAAQ,IACH,EACH,OAAQ,EAAO,SAAS,CAAC,OAAQ,QAAQ,CAAC,EAC1C,OAAQ,EAAO,OACf,QAAS,EAAe,GAAG,KAAK,CAAQ,CAC1C,CACF,CAAC,EAGY,QAAQ,EAAM,UAAU,CACnC,KAAM,2BACN,OAAQ,IACH,EACH,KAAM,EAAO,MACf,CACF,CAAC,EAGY,QAAQ,EAAM,QAAQ,CACjC,KAAM,8BACH,EACH,OAAQ,IACH,EACH,OAAQ,UAAQ,KAAK,OAAO,OAC5B,KAAM,EAAO,OACb,OAAQ,EAAO,MACjB,CACF,CAAC,EAGY,SAAS,EAAM,QAAQ,CAClC,KAAM,+BACH,EACH,OAAQ,IACH,EACH,OAAQ,UAAQ,KAAK,OAAO,OAC5B,MAAO,EAAa,MACpB,QAAS,EAAe,GAAG,KAAK,CAAQ,CAC1C,CACF,CAAC,IA3Cc,QA+CV,IAAU,GAAV,CAAU,KACF,SAAS,EAAM,QAAQ,CAClC,KAAM,2BACH,EACH,OAAQ,IAAK,EAAM,OAAQ,CAAO,CACpC,CAAC,EACY,UAAU,EAAM,QAAQ,CAAE,KAAM,4BAA6B,EAAS,OAAQ,CAAK,CAAC,EACpF,YAAY,EAAM,QAAQ,CACrC,KAAM,8BACH,EACH,OAAQ,IAAK,EAAM,GAAI,EAAe,EAAG,CAC3C,CAAC,IAXc,QAcV,IAAM,GAAc,EAAM,UAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EAAU,QACV,EAAU,UACV,EAAU,OACV,EAAU,YACV,GACA,GACA,GAAM,UACN,EAAM,QACN,EAAM,MACN,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,QACL,EAAK,MACL,EAAK,MACL,EAAU,QACV,EAAU,MACV,EAAU,MACV,EAAK,MAAM,QACX,EAAK,MAAM,MACX,EAAK,MAAM,MACX,EAAK,OACL,EAAK,SACL,EAAK,QACL,EAAK,OACL,GACA,EAAW,QACX,EAAW,MACX,EAAW,MACX,EAAW,OACX,EAAY,OACZ,EAAY,QACZ,EAAY,SACd,EAGa,GAAqB,EAAM,UACtC,GAAG,GAAY,OAAO,CAAC,IAAe,EAAW,aAAe,SAAS,EACzE,EACF,EACa,GAAuB,EAAM,UACxC,GAAG,GAAY,OAAO,CAAC,IAAe,EAAW,aAAe,WAAW,CAC7E,EAEa,GAAU,EAAO,MAAM,GAAoB,CAAE,KAAM,OAAQ,CAAC,EACtE,KAAK,EAAO,cAAc,MAAM,CAAC,EACjC,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,GAAM,EAAO,MAAM,CAAC,GAAS,GAAG,EAAoB,EAAG,CAAE,KAAM,OAAQ,CAAC,EAAE,KACrF,EAAO,cAAc,MAAM,CAC7B", | ||
| "debugId": "5552FE669A7D7CDA64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/plugin/discovery.ts", "../tui/src/util/config-directories.ts"], | ||
| "sourcesContent": [ | ||
| "import { readdir, stat } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { isMissingPath, localProjectDirectory, projectConfigDirectories } from \"../util/config-directories\"\n\nconst extensions = new Set([\".cjs\", \".cts\", \".js\", \".jsx\", \".mjs\", \".mts\", \".ts\", \".tsx\"])\n\nexport async function tuiPluginDirectories(cwd: string, configDirectory: string) {\n const projectDirectory = await localProjectDirectory(cwd)\n const projectConfig = path.join(projectDirectory, \".opencode\")\n const directories = [configDirectory, ...projectConfigDirectories(projectDirectory, cwd)]\n const exists = await Promise.all(\n directories.map((directory) => {\n if (directory === configDirectory || directory === projectConfig) return true\n return stat(directory).then(\n (info) => info.isDirectory(),\n (error) => (isMissingPath(error) ? false : Promise.reject(error)),\n )\n }),\n )\n return directories.filter((_, index) => exists[index]).map((directory) => path.join(directory, \"plugins\", \"tui\"))\n}\n\nexport async function discoverTuiPlugins(directories: string[]) {\n return (\n await Promise.all(\n directories.map(async (directory) => {\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: unknown) => {\n if (isMissingPath(error)) return []\n return Promise.reject(error)\n })\n return entries\n .filter((entry) => (entry.isFile() || entry.isSymbolicLink()) && extensions.has(path.extname(entry.name)))\n .map((entry) => path.join(directory, entry.name))\n .sort()\n }),\n )\n ).flat()\n}\n\nexport function localSource(spec: string, directory: string) {\n if (spec.startsWith(\"file://\")) return new URL(spec)\n if (spec.startsWith(\"./\") || spec.startsWith(\"../\") || path.isAbsolute(spec))\n return pathToFileURL(path.resolve(directory, spec))\n return undefined\n}\n\n// Key local plugin imports by a numeric source version so edited sources\n// re-import fresh instead of hitting the ESM cache. Bun ignores query params\n// when caching file:// URL imports, so bust with a plain path there; Node keys\n// its cache on the full URL. Fractional versions break Bun's runtime JSX/solid\n// plugin hooks, so always truncate them.\nexport function freshSpecifier(entrypoint: string, sourceVersion: number) {\n const version = Math.trunc(sourceVersion)\n if (typeof Bun !== \"undefined\") return `${fileURLToPath(entrypoint).replaceAll(\"\\\\\", \"/\")}?mtime=${version}`\n return `${entrypoint}?mtime=${version}`\n}\n", | ||
| "import path from \"node:path\"\nimport { stat } from \"node:fs/promises\"\n\nexport function configDirectories(config: string, cwd: string) {\n return [...new Set([config, ...ancestors(cwd).map((directory) => path.join(directory, \".opencode\"))])]\n}\n\nexport function projectConfigDirectories(project: string, cwd: string) {\n const directories = ancestors(cwd)\n return directories\n .slice(directories.indexOf(path.resolve(project)))\n .map((directory) => path.join(directory, \".opencode\"))\n}\n\nexport async function localProjectDirectory(cwd: string) {\n const directories = ancestors(cwd)\n const repositories = await Promise.all(\n directories.map((directory) =>\n Promise.all(\n [\".git\", \".hg\"].map((name) =>\n stat(path.join(directory, name)).then(\n () => true,\n (error) => (isMissingPath(error) ? false : Promise.reject(error)),\n ),\n ),\n ).then((matches) => matches.some(Boolean)),\n ),\n )\n return directories.findLast((_, index) => repositories[index]) ?? path.resolve(cwd)\n}\n\nexport function isMissingPath(error: unknown) {\n if (!error || typeof error !== \"object\") return false\n const code = Reflect.get(error, \"code\")\n return code === \"ENOENT\" || code === \"ENOTDIR\"\n}\n\nfunction ancestors(cwd: string) {\n const directories: string[] = []\n for (let current = path.resolve(cwd); ; current = path.dirname(current)) {\n directories.push(current)\n if (path.dirname(current) === current) break\n }\n return directories.reverse()\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "B677789AA3290EDE64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+mistral@3.0.51+d6123d32214422cb/node_modules/@ai-sdk/mistral/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/mistral-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/mistral-chat-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n injectJsonInstructionIntoMessages,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\n\n// src/convert-mistral-usage.ts\nfunction convertMistralUsage(usage) {\n var _a, _b, _c, _d, _e;\n if (usage == null) {\n return {\n inputTokens: {\n total: void 0,\n noCache: void 0,\n cacheRead: void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: void 0,\n text: void 0,\n reasoning: void 0\n },\n raw: void 0\n };\n }\n const promptTokens = usage.prompt_tokens;\n const completionTokens = usage.completion_tokens;\n const cacheReadTokens = (_e = (_d = (_b = usage.num_cached_tokens) != null ? _b : (_a = usage.prompt_tokens_details) == null ? void 0 : _a.cached_tokens) != null ? _d : (_c = usage.prompt_token_details) == null ? void 0 : _c.cached_tokens) != null ? _e : 0;\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens || void 0,\n cacheWrite: void 0\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens,\n reasoning: void 0\n },\n raw: usage\n };\n}\n\n// src/convert-to-mistral-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nfunction formatFileUrl({\n data,\n mediaType\n}) {\n return data instanceof URL ? data.toString() : `data:${mediaType};base64,${convertToBase64(data)}`;\n}\nfunction convertToMistralChatMessages(prompt) {\n var _a;\n const messages = [];\n for (let i = 0; i < prompt.length; i++) {\n const { role, content } = prompt[i];\n const isLastMessage = i === prompt.length - 1;\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"file\": {\n if (part.mediaType.startsWith(\"image/\")) {\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n return {\n type: \"image_url\",\n image_url: formatFileUrl({ data: part.data, mediaType })\n };\n } else if (part.mediaType === \"application/pdf\") {\n return {\n type: \"document_url\",\n document_url: formatFileUrl({\n data: part.data,\n mediaType: \"application/pdf\"\n })\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: \"Only images and PDF file parts are supported\"\n });\n }\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const structuredContent = [];\n let hasNativeReasoning = false;\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n structuredContent.push({ type: \"text\", text: part.text });\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input)\n }\n });\n break;\n }\n case \"reasoning\": {\n text += part.text;\n const native = part.providerOptions?.mistral?.thinking;\n if (native?.type === \"thinking\") {\n hasNativeReasoning = true;\n structuredContent.push(native);\n break;\n }\n structuredContent.push({ type: \"text\", text: part.text });\n break;\n }\n default: {\n throw new Error(\n `Unsupported content type in assistant message: ${part.type}`\n );\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: hasNativeReasoning ? structuredContent : text,\n prefix: isLastMessage ? true : void 0,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue;\n }\n const output = toolResponse.output;\n let contentValue;\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value;\n break;\n case \"execution-denied\":\n contentValue = (_a = output.reason) != null ? _a : \"Tool call execution denied.\";\n break;\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value);\n break;\n }\n messages.push({\n role: \"tool\",\n name: toolResponse.toolName,\n tool_call_id: toolResponse.toolCallId,\n content: contentValue\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/map-mistral-finish-reason.ts\nfunction mapMistralFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"model_length\":\n return \"length\";\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"other\";\n }\n}\n\n// src/mistral-chat-options.ts\nimport { z } from \"zod/v4\";\nvar mistralLanguageModelOptions = z.object({\n /**\n * Whether to inject a safety prompt before all conversations.\n *\n * Defaults to `false`.\n */\n safePrompt: z.boolean().optional(),\n documentImageLimit: z.number().optional(),\n documentPageLimit: z.number().optional(),\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n /**\n * Whether to enable parallel function calling during tool use.\n * When set to false, the model will use at most one tool per response.\n *\n * @default true\n */\n parallelToolCalls: z.boolean().optional(),\n /**\n * Controls the reasoning effort for models that support adjustable reasoning.\n *\n * - `'high'`: Enable reasoning\n * - `'none'`: Disable reasoning\n */\n reasoningEffort: z.enum([\"high\", \"none\"]).optional(),\n promptCacheKey: z.string().optional()\n});\n\n// src/mistral-error.ts\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar mistralErrorDataSchema = z2.object({\n object: z2.literal(\"error\"),\n message: z2.string(),\n type: z2.string(),\n param: z2.string().nullable(),\n code: z2.string().nullable()\n});\nvar mistralFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: mistralErrorDataSchema,\n errorToMessage: (data) => data.message\n});\n\n// src/mistral-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n tools,\n toolChoice\n}) {\n tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, toolChoice: void 0, toolWarnings };\n }\n const mistralTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n toolWarnings.push({\n type: \"unsupported\",\n feature: `provider-defined tool ${tool.id}`\n });\n } else {\n mistralTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...tool.strict != null ? { strict: tool.strict } : {}\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: mistralTools, toolChoice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n return { tools: mistralTools, toolChoice: type, toolWarnings };\n case \"required\":\n return { tools: mistralTools, toolChoice: \"any\", toolWarnings };\n // mistral does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case \"tool\":\n return {\n tools: mistralTools.filter(\n (tool) => tool.function.name === toolChoice.toolName\n ),\n toolChoice: \"any\",\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/mistral-chat-language-model.ts\nvar MistralChatLanguageModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.supportedUrls = {\n \"application/pdf\": [/^https:\\/\\/.*$/]\n };\n var _a;\n this.modelId = modelId;\n this.config = config;\n this.generateId = (_a = config.generateId) != null ? _a : generateId;\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n tools,\n toolChoice\n }) {\n var _a, _b, _c, _d;\n const warnings = [];\n const options = (_a = await parseProviderOptions({\n provider: \"mistral\",\n providerOptions,\n schema: mistralLanguageModelOptions\n })) != null ? _a : {};\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" });\n }\n const structuredOutputs = (_b = options.structuredOutputs) != null ? _b : true;\n const strictJsonSchema = (_c = options.strictJsonSchema) != null ? _c : false;\n if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\" && !(responseFormat == null ? void 0 : responseFormat.schema)) {\n prompt = injectJsonInstructionIntoMessages({\n messages: prompt,\n schema: responseFormat.schema\n });\n }\n const baseArgs = {\n // model id:\n model: this.modelId,\n // model specific settings:\n safe_prompt: options.safePrompt,\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n ...frequencyPenalty != null ? { frequency_penalty: frequencyPenalty } : {},\n ...presencePenalty != null ? { presence_penalty: presencePenalty } : {},\n stop: stopSequences,\n random_seed: seed,\n reasoning_effort: options.reasoningEffort,\n prompt_cache_key: options.promptCacheKey,\n // response format:\n response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? structuredOutputs && (responseFormat == null ? void 0 : responseFormat.schema) != null ? {\n type: \"json_schema\",\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: (_d = responseFormat.name) != null ? _d : \"response\",\n description: responseFormat.description\n }\n } : { type: \"json_object\" } : void 0,\n // mistral-specific provider options:\n document_image_limit: options.documentImageLimit,\n document_page_limit: options.documentPageLimit,\n // messages:\n messages: convertToMistralChatMessages(prompt)\n };\n const {\n tools: mistralTools,\n toolChoice: mistralToolChoice,\n toolWarnings\n } = prepareTools({\n tools,\n toolChoice\n });\n return {\n args: {\n ...baseArgs,\n tools: mistralTools,\n tool_choice: mistralToolChoice,\n ...mistralTools != null && options.parallelToolCalls !== void 0 ? { parallel_tool_calls: options.parallelToolCalls } : {}\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n async doGenerate(options) {\n var _a;\n const { args: body, warnings } = await this.getArgs(options);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n mistralChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const choice = response.choices[0];\n const content = [];\n if (choice.message.content != null && Array.isArray(choice.message.content)) {\n for (const part of choice.message.content) {\n if (part.type === \"thinking\") {\n const reasoningText = extractReasoningContent(part.thinking);\n content.push({\n type: \"reasoning\",\n text: reasoningText,\n providerMetadata: { mistral: { thinking: part } }\n });\n } else if (part.type === \"text\") {\n if (part.text.length > 0) {\n content.push({ type: \"text\", text: part.text });\n }\n }\n }\n } else {\n const text = extractTextContent(choice.message.content);\n if (text != null && text.length > 0) {\n content.push({ type: \"text\", text });\n }\n }\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments\n });\n }\n }\n return {\n content,\n finishReason: {\n unified: mapMistralFinishReason(choice.finish_reason),\n raw: (_a = choice.finish_reason) != null ? _a : void 0\n },\n usage: convertMistralUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse\n },\n warnings\n };\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const body = { ...args, stream: true };\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n mistralChatChunkSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n let finishReason = {\n unified: \"other\",\n raw: void 0\n };\n let usage = void 0;\n let isFirstChunk = true;\n let activeText = false;\n let activeReasoningId = null;\n let activeThinking = null;\n const generateId2 = this.generateId;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings });\n },\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n }\n if (!chunk.success) {\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (value.usage != null) {\n usage = value.usage;\n }\n const choice = value.choices[0];\n const delta = choice.delta;\n const textContent = extractTextContent(delta.content);\n if (delta.content != null && Array.isArray(delta.content)) {\n for (const part of delta.content) {\n if (part.type === \"thinking\") {\n const reasoningDelta = extractReasoningContent(part.thinking);\n activeThinking = mergeThinking(activeThinking, part);\n if (activeReasoningId == null) {\n if (activeText) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n activeText = false;\n }\n activeReasoningId = generateId2();\n controller.enqueue({\n type: \"reasoning-start\",\n id: activeReasoningId\n });\n }\n if (reasoningDelta.length > 0) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: activeReasoningId,\n delta: reasoningDelta\n });\n }\n }\n }\n }\n if (textContent != null && textContent.length > 0) {\n if (!activeText) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: activeReasoningId,\n providerMetadata: { mistral: { thinking: activeThinking } }\n });\n activeReasoningId = null;\n activeThinking = null;\n }\n controller.enqueue({ type: \"text-start\", id: \"0\" });\n activeText = true;\n }\n controller.enqueue({\n type: \"text-delta\",\n id: \"0\",\n delta: textContent\n });\n }\n if ((delta == null ? void 0 : delta.tool_calls) != null) {\n for (const toolCall of delta.tool_calls) {\n const toolCallId = toolCall.id;\n const toolName = toolCall.function.name;\n const input = toolCall.function.arguments;\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallId,\n toolName\n });\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCallId,\n delta: input\n });\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCallId\n });\n controller.enqueue({\n type: \"tool-call\",\n toolCallId,\n toolName,\n input\n });\n }\n }\n if (choice.finish_reason != null) {\n finishReason = {\n unified: mapMistralFinishReason(choice.finish_reason),\n raw: choice.finish_reason\n };\n }\n },\n flush(controller) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: activeReasoningId,\n providerMetadata: { mistral: { thinking: activeThinking } }\n });\n }\n if (activeText) {\n controller.enqueue({ type: \"text-end\", id: \"0\" });\n }\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: convertMistralUsage(usage)\n });\n }\n })\n ),\n request: { body },\n response: { headers: responseHeaders }\n };\n }\n};\nfunction extractReasoningContent(thinking) {\n return thinking.filter((chunk) => chunk.type === \"text\").map((chunk) => chunk.text).join(\"\");\n}\nfunction mergeThinking(current, next) {\n if (current === null) return { ...next, thinking: [...next.thinking] };\n current.thinking.push(...next.thinking);\n if (next.closed !== void 0) current.closed = next.closed;\n if (next.signature !== void 0) current.signature = next.signature;\n return current;\n}\nfunction extractTextContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content == null) {\n return void 0;\n }\n const textContent = [];\n for (const chunk of content) {\n const { type } = chunk;\n switch (type) {\n case \"text\":\n textContent.push(chunk.text);\n break;\n case \"thinking\":\n case \"image_url\":\n case \"reference\":\n break;\n default: {\n const _exhaustiveCheck = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n return textContent.length ? textContent.join(\"\") : void 0;\n}\nvar mistralThinkingContentSchema = z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"tool_reference\"),\n tool: z3.string(),\n title: z3.string(),\n url: z3.string().nullish(),\n favicon: z3.string().nullish(),\n description: z3.string().nullish()\n }),\n z3.object({\n type: z3.literal(\"reference\"),\n reference_ids: z3.array(z3.union([z3.string(), z3.number().int()]))\n })\n]);\nvar mistralThinkChunkSchema = z3.object({\n type: z3.literal(\"thinking\"),\n thinking: z3.array(mistralThinkingContentSchema),\n closed: z3.boolean().optional(),\n signature: z3.string().nullish()\n});\nvar mistralContentSchema = z3.union([\n z3.string(),\n z3.array(\n z3.discriminatedUnion(\"type\", [\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string()\n }),\n z3.object({\n type: z3.literal(\"image_url\"),\n image_url: z3.union([\n z3.string(),\n z3.object({\n url: z3.string(),\n detail: z3.string().nullable()\n })\n ])\n }),\n z3.object({\n type: z3.literal(\"reference\"),\n reference_ids: z3.array(z3.union([z3.string(), z3.number()]))\n }),\n mistralThinkChunkSchema\n ])\n )\n]).nullish();\nvar mistralUsageSchema = z3.object({\n prompt_tokens: z3.number(),\n completion_tokens: z3.number(),\n total_tokens: z3.number(),\n num_cached_tokens: z3.number().nullish(),\n prompt_tokens_details: z3.object({ cached_tokens: z3.number().nullish() }).nullish(),\n prompt_token_details: z3.object({ cached_tokens: z3.number().nullish() }).nullish()\n});\nvar mistralChatResponseSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n message: z3.object({\n role: z3.literal(\"assistant\"),\n content: mistralContentSchema,\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n function: z3.object({ name: z3.string(), arguments: z3.string() })\n })\n ).nullish()\n }),\n index: z3.number(),\n finish_reason: z3.string().nullish()\n })\n ),\n object: z3.literal(\"chat.completion\"),\n usage: mistralUsageSchema\n});\nvar mistralChatChunkSchema = z3.object({\n id: z3.string().nullish(),\n created: z3.number().nullish(),\n model: z3.string().nullish(),\n choices: z3.array(\n z3.object({\n delta: z3.object({\n role: z3.enum([\"assistant\"]).optional(),\n content: mistralContentSchema,\n tool_calls: z3.array(\n z3.object({\n id: z3.string(),\n function: z3.object({ name: z3.string(), arguments: z3.string() })\n })\n ).nullish()\n }),\n finish_reason: z3.string().nullish(),\n index: z3.number()\n })\n ),\n usage: mistralUsageSchema.nullish()\n});\n\n// src/mistral-embedding-model.ts\nimport {\n TooManyEmbeddingValuesForCallError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders as combineHeaders2,\n createJsonResponseHandler as createJsonResponseHandler2,\n postJsonToApi as postJsonToApi2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\nvar MistralEmbeddingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.maxEmbeddingsPerCall = 32;\n this.supportsParallelCalls = false;\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n abortSignal,\n headers\n }) {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values\n });\n }\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi2({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: \"float\"\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n MistralTextEmbeddingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n warnings: [],\n embeddings: response.data.map((item) => item.embedding),\n usage: response.usage ? { tokens: response.usage.prompt_tokens } : void 0,\n response: { headers: responseHeaders, body: rawValue }\n };\n }\n};\nvar MistralTextEmbeddingResponseSchema = z4.object({\n data: z4.array(z4.object({ embedding: z4.array(z4.number()) })),\n usage: z4.object({ prompt_tokens: z4.number() }).nullish()\n});\n\n// src/mistral-speech-model.ts\nimport {\n combineHeaders as combineHeaders3,\n createJsonResponseHandler as createJsonResponseHandler3,\n parseProviderOptions as parseProviderOptions2,\n postToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\n\n// src/mistral-speech-model-options.ts\nimport { z as z5 } from \"zod/v4\";\nvar mistralSpeechModelOptions = z5.object({\n /**\n * Base64-encoded reference audio for one-off voice cloning.\n *\n * When provided, this takes precedence over the standard `voice` option.\n */\n refAudio: z5.string().min(1).optional()\n});\n\n// src/mistral-speech-model.ts\nvar MistralSpeechModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs({\n text,\n voice,\n outputFormat = \"mp3\",\n instructions,\n speed,\n language,\n providerOptions\n }) {\n const warnings = [];\n const mistralOptions = await parseProviderOptions2({\n provider: \"mistral\",\n providerOptions,\n schema: mistralSpeechModelOptions\n });\n let responseFormat = \"mp3\";\n if ([\"pcm\", \"wav\", \"mp3\", \"flac\", \"opus\"].includes(outputFormat)) {\n responseFormat = outputFormat;\n } else {\n warnings.push({\n type: \"unsupported\",\n feature: \"outputFormat\",\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`\n });\n }\n if (instructions != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"instructions\",\n details: \"Mistral speech models do not support the `instructions` option. Use a reference audio clip to guide delivery.\"\n });\n }\n if (speed != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"speed\",\n details: \"Mistral speech models do not support the `speed` option. It was ignored.\"\n });\n }\n if (language != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"language\",\n details: \"Mistral speech models do not support the `language` option. Language is inferred from the input text and voice.\"\n });\n }\n const refAudio = mistralOptions == null ? void 0 : mistralOptions.refAudio;\n const requestBody = {\n model: this.modelId,\n input: text,\n voice_id: refAudio == null ? voice : void 0,\n ref_audio: refAudio,\n response_format: responseFormat,\n stream: false\n };\n const requestBodyValues = {\n ...requestBody,\n ref_audio: refAudio == null ? void 0 : \"[redacted]\"\n };\n return { requestBody, requestBodyValues, warnings };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { requestBody, requestBodyValues, warnings } = await this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postToApi({\n url: `${this.config.baseURL}/audio/speech`,\n headers: combineHeaders3(\n { \"Content-Type\": \"application/json\" },\n (_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d),\n options.headers\n ),\n body: {\n content: JSON.stringify(requestBody),\n values: requestBodyValues\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler3(\n mistralSpeechResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n audio: response.audio_data,\n warnings,\n request: {\n body: JSON.stringify(requestBodyValues)\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar mistralSpeechResponseSchema = z6.object({\n audio_data: z6.string()\n});\n\n// src/version.ts\nvar VERSION = true ? \"3.0.51\" : \"0.0.0-test\";\n\n// src/mistral-provider.ts\nfunction createMistral(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.mistral.ai/v1\";\n const getHeaders = () => withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"MISTRAL_API_KEY\",\n description: \"Mistral\"\n })}`,\n ...options.headers\n },\n `ai-sdk/mistral/${VERSION}`\n );\n const createChatModel = (modelId) => new MistralChatLanguageModel(modelId, {\n provider: \"mistral.chat\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId\n });\n const createEmbeddingModel = (modelId) => new MistralEmbeddingModel(modelId, {\n provider: \"mistral.embedding\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createSpeechModel = (modelId) => new MistralSpeechModel(modelId, {\n provider: \"mistral.speech\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n });\n const provider = function(modelId) {\n if (new.target) {\n throw new Error(\n \"The Mistral model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId);\n };\n provider.specificationVersion = \"v3\";\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n return provider;\n}\nvar mistral = createMistral();\nexport {\n VERSION,\n createMistral,\n mistral\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "3CBA0543E3C60F1F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "A1C96DC0EA550D9E64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/display.ts"], | ||
| "sourcesContent": [ | ||
| "import { stringWidth } from \"../util/string-width\"\n\nconst graphemes = new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n\nexport function promptOffsetWidth(value: string) {\n let width = 0\n for (const part of graphemes.segment(value)) {\n // Textarea offsets count newlines as one position; terminal width counts them as zero.\n width += part.segment === \"\\n\" ? 1 : stringWidth(part.segment)\n }\n return width\n}\n\nfunction displayOffsetIndex(value: string, offset: number) {\n if (offset <= 0) return 0\n\n let width = 0\n for (const part of graphemes.segment(value)) {\n const next = width + promptOffsetWidth(part.segment)\n if (next > offset) return part.index\n width = next\n }\n\n return value.length\n}\n\nexport function displaySlice(value: string, start = 0, end = promptOffsetWidth(value)) {\n return value.slice(displayOffsetIndex(value, start), displayOffsetIndex(value, end))\n}\n\nexport function displayCharAt(value: string, offset: number) {\n let width = 0\n for (const part of graphemes.segment(value)) {\n const next = width + promptOffsetWidth(part.segment)\n if (offset === width || offset < next) return part.segment\n width = next\n }\n}\n\nexport function mentionTriggerIndex(value: string, offset = promptOffsetWidth(value)) {\n const text = displaySlice(value, 0, offset)\n const index = text.lastIndexOf(\"@\")\n if (index === -1) return\n\n const before = index === 0 ? undefined : text[index - 1]\n const query = text.slice(index)\n if ((before === undefined || /\\s/.test(before)) && !/\\s/.test(query)) {\n return promptOffsetWidth(text.slice(0, index))\n }\n}\n\nexport function slashTriggerIndex(value: string, offset = promptOffsetWidth(value)) {\n const text = displaySlice(value, 0, offset)\n for (let index = text.lastIndexOf(\"/\"); index >= 0; index = text.lastIndexOf(\"/\", index - 1)) {\n const before = index === 0 ? undefined : text[index - 1]\n const query = text.slice(index)\n if (before !== undefined && !/\\s/.test(before)) continue\n if (/\\s/.test(query) || query.slice(1).includes(\"/\")) return\n return promptOffsetWidth(text.slice(0, index))\n }\n}\n" | ||
| ], | ||
| "mappings": ";oDAEA,IAAM,EAAY,IAAI,KAAK,UAAU,OAAW,CAAE,YAAa,UAAW,CAAC,EAEpE,SAAS,CAAiB,CAAC,EAAe,CAC/C,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAExC,GAAS,EAAK,UAAY;AAAA,EAAO,EAAI,EAAY,EAAK,OAAO,EAE/D,OAAO,EAGT,SAAS,CAAkB,CAAC,EAAe,EAAgB,CACzD,GAAI,GAAU,EAAG,MAAO,GAExB,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAAG,CAC3C,IAAM,EAAO,EAAQ,EAAkB,EAAK,OAAO,EACnD,GAAI,EAAO,EAAQ,OAAO,EAAK,MAC/B,EAAQ,EAGV,OAAO,EAAM,OAGR,SAAS,CAAY,CAAC,EAAe,EAAQ,EAAG,EAAM,EAAkB,CAAK,EAAG,CACrF,OAAO,EAAM,MAAM,EAAmB,EAAO,CAAK,EAAG,EAAmB,EAAO,CAAG,CAAC,EAG9E,SAAS,CAAa,CAAC,EAAe,EAAgB,CAC3D,IAAI,EAAQ,EACZ,QAAW,KAAQ,EAAU,QAAQ,CAAK,EAAG,CAC3C,IAAM,EAAO,EAAQ,EAAkB,EAAK,OAAO,EACnD,GAAI,IAAW,GAAS,EAAS,EAAM,OAAO,EAAK,QACnD,EAAQ,GAIL,SAAS,CAAmB,CAAC,EAAe,EAAS,EAAkB,CAAK,EAAG,CACpF,IAAM,EAAO,EAAa,EAAO,EAAG,CAAM,EACpC,EAAQ,EAAK,YAAY,GAAG,EAClC,GAAI,IAAU,GAAI,OAElB,IAAM,EAAS,IAAU,EAAI,OAAY,EAAK,EAAQ,GAChD,EAAQ,EAAK,MAAM,CAAK,EAC9B,IAAK,IAAW,QAAa,KAAK,KAAK,CAAM,IAAM,CAAC,KAAK,KAAK,CAAK,EACjE,OAAO,EAAkB,EAAK,MAAM,EAAG,CAAK,CAAC,EAI1C,SAAS,CAAiB,CAAC,EAAe,EAAS,EAAkB,CAAK,EAAG,CAClF,IAAM,EAAO,EAAa,EAAO,EAAG,CAAM,EAC1C,QAAS,EAAQ,EAAK,YAAY,GAAG,EAAG,GAAS,EAAG,EAAQ,EAAK,YAAY,IAAK,EAAQ,CAAC,EAAG,CAC5F,IAAM,EAAS,IAAU,EAAI,OAAY,EAAK,EAAQ,GAChD,EAAQ,EAAK,MAAM,CAAK,EAC9B,GAAI,IAAW,QAAa,CAAC,KAAK,KAAK,CAAM,EAAG,SAChD,GAAI,KAAK,KAAK,CAAK,GAAK,EAAM,MAAM,CAAC,EAAE,SAAS,GAAG,EAAG,OACtD,OAAO,EAAkB,EAAK,MAAM,EAAG,CAAK,CAAC", | ||
| "debugId": "844563C15C593E5764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/api.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { Service, type Endpoint } from \"@opencode-ai/client/effect/service\"\nimport { ServerConnection } from \"../../services/server-connection\"\n\nconst methods = new Set([\"delete\", \"get\", \"head\", \"options\", \"patch\", \"post\", \"put\"])\n\ntype Operation = {\n operationId?: string\n}\n\ntype OpenApi = {\n paths?: Record<string, Record<string, Operation>>\n}\n\nexport default Runtime.handler(\n Commands.commands.api,\n Effect.fn(\"cli.api\")(function* (input) {\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n mismatch: \"ignore\",\n })\n const endpoint = server.endpoint\n const params = Option.getOrElse(input.param, () => ({}))\n const request = yield* resolveRequest(endpoint, input.request, params)\n const headers = new Headers(Service.headers(endpoint))\n for (const header of input.header) {\n const index = header.indexOf(\":\")\n if (index < 1) return yield* Effect.fail(new Error(`Invalid header, expected name:value: ${header}`))\n headers.set(header.slice(0, index).trim(), header.slice(index + 1).trim())\n }\n const body = Option.getOrUndefined(input.data)\n if (body !== undefined && !headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\")\n\n const response = yield* Effect.tryPromise(() =>\n fetch(new URL(request.path, endpoint.url), {\n method: request.method,\n headers,\n body,\n }),\n )\n const output = yield* Effect.promise(() => response.text())\n if (output) process.stdout.write(output + (output.endsWith(EOL) ? \"\" : EOL))\n }),\n)\n\nexport function resolveOperation(spec: OpenApi, operationID: string, params: Record<string, string>) {\n for (const [path, operations] of Object.entries(spec.paths ?? {})) {\n for (const [method, operation] of Object.entries(operations)) {\n if (!methods.has(method) || operation.operationId !== operationID) continue\n return { method: method.toUpperCase(), path: interpolate(path, params) }\n }\n }\n throw new Error(`Operation not found: ${operationID}`)\n}\n\nexport function rawRequest(input: readonly string[]) {\n if (input.length !== 2 || !methods.has(input[0].toLowerCase()) || !input[1].startsWith(\"/\")) return\n return { method: input[0].toUpperCase(), path: input[1] }\n}\n\nfunction resolveRequest(endpoint: Endpoint, input: readonly string[], params: Record<string, string>) {\n const raw = rawRequest(input)\n if (raw) return Effect.succeed(raw)\n if (input.length !== 1) return Effect.fail(new Error(\"Expected an operation name or an HTTP method and path\"))\n return Effect.tryPromise(async () => {\n const response = await fetch(new URL(\"/openapi.json\", endpoint.url), { headers: Service.headers(endpoint) })\n if (!response.ok) throw new Error(`Failed to load OpenAPI document: HTTP ${response.status}`)\n return resolveOperation((await response.json()) as OpenApi, input[0], params)\n })\n}\n\nfunction interpolate(path: string, params: Record<string, string>) {\n const used = new Set<string>()\n const pathname = path.replaceAll(/\\{([^}]+)\\}/g, (_, name: string) => {\n const value = params[name]\n if (value === undefined) throw new Error(`Missing path parameter: ${name}`)\n used.add(name)\n return encodeURIComponent(value)\n })\n const query = new URLSearchParams(Object.entries(params).filter(([name]) => !used.has(name))).toString()\n return query ? `${pathname}?${query}` : pathname\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "4758B2BAFA0DCE5A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/mini/demo.ts"], | ||
| "sourcesContent": [ | ||
| "// Demo mode for testing direct interactive mode without a real SDK.\n//\n// Enabled with `--demo`. Intercepts prompt submissions and drives the same\n// presentation commits and footer actions as the live transport. This\n// lets you test scrollback formatting, permission UI, canonical Form UI, and tool\n// snapshots without making actual model calls. Pass a demo slash command as\n// the initial interactive message to trigger a preview immediately.\n//\n// Slash commands:\n// /permission [kind] → triggers a permission request variant\n// /form [kind] → triggers a canonical Form request variant\n// /fmt <kind> → emits a specific tool/text type (text, reasoning, shell,\n// write, edit, patch, subagent, question, error, mix)\n//\n// Demo mode handles permission and Form replies locally, completing or failing\n// the synthetic tool parts through the same callbacks used by the live footer.\nimport path from \"path\"\nimport type { JsonValue, SessionMessageAssistantTool } from \"@opencode-ai/client/promise\"\nimport { parseSlashHead } from \"../prompt/parse\"\nimport { writeSessionOutput } from \"./stream\"\nimport { toolCommit, toolFinalPhase } from \"./stream-v2.subagent\"\nimport type {\n FooterApi,\n FooterView,\n FormCancel,\n FormReply,\n MiniFormRequest,\n MiniPermissionRequest,\n PermissionReply,\n RunPrompt,\n StreamCommit,\n} from \"./types\"\n\nconst KINDS = [\n \"markdown\",\n \"table\",\n \"text\",\n \"reasoning\",\n \"shell\",\n \"write\",\n \"edit\",\n \"patch\",\n \"subagent\",\n \"question\",\n \"error\",\n \"mix\",\n]\nconst PERMISSIONS = [\"edit\", \"shell\", \"read\", \"subagent\", \"external\", \"doom\"] as const\nconst FORMS = [\"question\", \"external\"] as const\n\ntype PermissionKind = (typeof PERMISSIONS)[number]\ntype FormKind = (typeof FORMS)[number]\n\nfunction permissionKind(value: string | undefined): PermissionKind | undefined {\n const next = (value || \"edit\").toLowerCase()\n return PERMISSIONS.find((item) => item === next)\n}\n\nfunction formKind(value: string | undefined): FormKind | undefined {\n const next = (value || \"question\").toLowerCase()\n return FORMS.find((item) => item === next)\n}\n\nconst SAMPLE_MARKDOWN = [\n \"# Direct Mode Demo\",\n \"\",\n \"This is a realistic assistant response for direct-mode formatting checks.\",\n \"It mixes **bold**, _italic_, `inline code`, links, code fences, and tables in one streamed reply.\",\n \"\",\n \"## Summary\",\n \"\",\n \"- Restored the final markdown flush so the last block is committed on idle.\",\n \"- Switched markdown scrollback commits back to top-level block boundaries.\",\n \"- Added footer-level regression coverage for split-footer rendering.\",\n \"\",\n \"## Status\",\n \"\",\n \"| Area | Before | After | Notes |\",\n \"| --- | --- | --- | --- |\",\n \"| Direct mode | Missing final rows | Stable | Final markdown block now flushes on idle |\",\n \"| Tables | Dropped in streaming mode | Visible | Block-based commits match the working OpenTUI demo |\",\n \"| Tests | Partial coverage | Broader coverage | Includes a footer-level split render capture |\",\n \"\",\n \"> This sample intentionally includes a wide table so you can spot wrapping and commit bugs quickly.\",\n \"\",\n \"```ts\",\n \"const result = { markdown: true, tables: 2, stable: true }\",\n \"```\",\n \"\",\n \"## Files\",\n \"\",\n \"| File | Change |\",\n \"| --- | --- |\",\n \"| `scrollback.surface.ts` | Align markdown commit logic with the split-footer demo |\",\n \"| `footer.ts` | Keep active surfaces across footer-height-only resizes |\",\n \"| `footer.test.ts` | Capture real split-footer markdown payloads during idle completion |\",\n \"\",\n \"Next step: run `/fmt table` if you want a tighter table-only sample.\",\n].join(\"\\n\")\n\nconst SAMPLE_TABLE = [\n \"# Table Sample\",\n \"\",\n \"| Kind | Example | Notes |\",\n \"| --- | --- | --- |\",\n \"| Pipe | `A\\\\|B` | Escaped pipes should stay in one cell |\",\n \"| Unicode | `漢字` | Wide characters should remain aligned |\",\n \"| Wrap | `LongTokenWithoutNaturalBreaks_1234567890` | Useful for width stress |\",\n \"| Status | done | Final row should still appear after idle |\",\n].join(\"\\n\")\n\ntype Ref = {\n msg: string\n call: string\n tool: string\n input: Record<string, JsonValue>\n start: number\n}\n\ntype FormRequest = {\n ref: Ref\n kind: FormKind\n request: MiniFormRequest\n}\n\ntype Perm = {\n ref: Ref\n done: {\n output: string\n metadata?: Record<string, JsonValue>\n }\n}\n\ntype Permit = {\n ref: Ref\n permission: string\n patterns: string[]\n metadata?: MiniPermissionRequest[\"metadata\"]\n always: string[]\n done: Perm[\"done\"]\n}\n\ntype State = {\n id: string\n thinking: boolean\n footer: FooterApi\n msg: number\n part: number\n call: number\n perm: number\n form: number\n perms: Map<string, Perm>\n forms: Map<string, FormRequest>\n started: Set<string>\n}\n\ntype Input = {\n sessionID: string\n thinking: boolean\n footer: FooterApi\n}\n\nfunction note(footer: FooterApi, text: string): void {\n footer.append({\n kind: \"system\",\n text,\n phase: \"start\",\n source: \"system\",\n })\n}\n\nfunction clearSubagent(footer: FooterApi): void {\n footer.event({\n type: \"stream.subagent\",\n state: {\n tabs: [],\n details: {},\n permissions: [],\n forms: [],\n },\n })\n}\n\nfunction showSubagent(\n state: State,\n input: {\n sessionID: string\n label: string\n description: string\n status: \"running\" | \"completed\" | \"cancelled\" | \"error\"\n title?: string\n commits: StreamCommit[]\n },\n) {\n state.footer.event({\n type: \"stream.subagent\",\n state: {\n tabs: [\n {\n sessionID: input.sessionID,\n label: input.label,\n description: input.description,\n status: input.status,\n title: input.title,\n },\n ],\n details: {\n [input.sessionID]: {\n commits: input.commits,\n },\n },\n permissions: [],\n forms: [],\n },\n })\n}\n\nfunction wait(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve) => {\n if (!signal) {\n setTimeout(resolve, ms)\n return\n }\n\n if (signal.aborted) {\n resolve()\n return\n }\n\n const done = () => {\n clearTimeout(timer)\n signal.removeEventListener(\"abort\", done)\n resolve()\n }\n\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", done)\n resolve()\n }, ms)\n\n signal.addEventListener(\"abort\", done, { once: true })\n })\n}\n\nfunction split(text: string): string[] {\n if (text.length <= 48) {\n return [text]\n }\n\n const size = Math.ceil(text.length / 3)\n return [text.slice(0, size), text.slice(size, size * 2), text.slice(size * 2)]\n}\n\nfunction take(state: State, key: \"msg\" | \"part\" | \"call\" | \"perm\", prefix: string): string {\n state[key] += 1\n return `demo_${prefix}_${state[key]}`\n}\n\nfunction present(state: State, commits: StreamCommit[], view?: FooterView): void {\n writeSessionOutput(\n { footer: state.footer },\n {\n commits,\n updates: view\n ? [\n {\n type: \"stream.patch\" as const,\n patch: { status: view.type === \"permission\" ? \"awaiting permission\" : \"awaiting form\" },\n },\n { type: \"stream.view\" as const, view },\n ]\n : undefined,\n },\n )\n}\n\nfunction clearBlocker(state: State): void {\n writeSessionOutput(\n { footer: state.footer },\n {\n commits: [],\n updates: [\n { type: \"stream.patch\", patch: { status: \"\" } },\n { type: \"stream.view\", view: { type: \"prompt\" } },\n ],\n },\n )\n}\n\nfunction open(state: State): string {\n return take(state, \"msg\", \"msg\")\n}\n\nasync function emitText(state: State, body: string, signal?: AbortSignal): Promise<void> {\n const msg = open(state)\n const part = take(state, \"part\", \"part\")\n for (const item of split(body)) {\n if (signal?.aborted) {\n return\n }\n\n present(state, [\n { kind: \"assistant\", source: \"assistant\", text: item, phase: \"progress\", messageID: msg, partID: part },\n ])\n await wait(45, signal)\n }\n}\n\nasync function emitReasoning(state: State, body: string, signal?: AbortSignal): Promise<void> {\n const msg = open(state)\n const part = take(state, \"part\", \"part\")\n let first = true\n for (const item of split(body)) {\n if (signal?.aborted) {\n return\n }\n\n if (state.thinking) {\n present(state, [\n {\n kind: \"reasoning\",\n source: \"reasoning\",\n text: first ? `Thinking: ${item.replace(/\\[REDACTED\\]/g, \"\")}` : item.replace(/\\[REDACTED\\]/g, \"\"),\n phase: \"progress\",\n messageID: msg,\n partID: part,\n },\n ])\n first = false\n }\n await wait(45, signal)\n }\n}\n\nfunction make(state: State, tool: string, input: Record<string, JsonValue>): Ref {\n return {\n msg: open(state),\n call: take(state, \"call\", \"call\"),\n tool,\n input,\n start: Date.now(),\n }\n}\n\nfunction startTool(state: State, ref: Ref, metadata: Record<string, JsonValue> = {}): SessionMessageAssistantTool {\n state.started.add(ref.call)\n const part = {\n type: \"tool\" as const,\n id: ref.call,\n name: ref.tool,\n state: { status: \"running\" as const, input: ref.input, metadata },\n time: { created: ref.start, ran: ref.start },\n }\n present(state, [toolCommit(part, ref.msg, \"start\")])\n return part\n}\n\nfunction askPermission(state: State, item: Permit): void {\n const tool = startTool(state, item.ref)\n\n const id = take(state, \"perm\", \"perm\")\n state.perms.set(id, {\n ref: item.ref,\n done: item.done,\n })\n\n present(state, [], {\n type: \"permission\",\n request: {\n id,\n sessionID: state.id,\n action: item.permission,\n resources: item.patterns,\n metadata: item.metadata ?? {},\n save: item.always,\n source: { type: \"tool\", messageID: item.ref.msg, id: item.ref.call },\n tool,\n },\n })\n}\n\nfunction doneTool(\n state: State,\n ref: Ref,\n output: {\n output: string\n metadata?: Record<string, JsonValue>\n },\n): void {\n if (!state.started.has(ref.call)) startTool(state, ref)\n const part: SessionMessageAssistantTool = {\n type: \"tool\",\n id: ref.call,\n name: ref.tool,\n state: {\n status: \"completed\",\n input: ref.input,\n content: [{ type: \"text\", text: output.output }],\n metadata: output.metadata,\n },\n time: { created: ref.start, ran: ref.start, completed: Date.now() },\n }\n present(state, [toolCommit(part, ref.msg, toolFinalPhase(part))])\n}\n\nfunction failTool(state: State, ref: Ref, error: string): void {\n if (!state.started.has(ref.call)) startTool(state, ref)\n present(state, [\n toolCommit(\n {\n type: \"tool\",\n id: ref.call,\n name: ref.tool,\n state: {\n status: \"error\",\n input: ref.input,\n error: { type: \"unknown\", message: error },\n },\n time: { created: ref.start, ran: ref.start, completed: Date.now() },\n },\n ref.msg,\n \"final\",\n ),\n ])\n}\n\nfunction emitError(state: State, text: string): void {\n present(state, [{ kind: \"error\", source: \"system\", text, phase: \"start\" }])\n}\n\nasync function emitBash(state: State, signal?: AbortSignal): Promise<void> {\n const ref = make(state, \"shell\", {\n command: \"git status\",\n workdir: process.cwd(),\n description: \"Show git status\",\n })\n startTool(state, ref)\n await wait(70, signal)\n doneTool(state, ref, {\n output: `${process.cwd()}\\ngit status\\nOn branch demo\\nnothing to commit, working tree clean\\n`,\n metadata: {\n exit: 0,\n },\n })\n}\n\nfunction emitWrite(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"write\", {\n path: file,\n content: \"export const demo = 42\\n\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {},\n })\n}\n\nfunction emitEdit(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"edit\", {\n path: file,\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n files: [\n {\n file,\n status: \"modified\",\n patch: \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\",\n },\n ],\n },\n })\n}\n\nfunction emitPatch(state: State): void {\n const file = path.join(process.cwd(), \"src\", \"demo-format.ts\")\n const ref = make(state, \"patch\", {\n patchText: \"*** Begin Patch\\n*** End Patch\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n files: [\n {\n status: \"modified\",\n file,\n patch: \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\",\n deletions: 1,\n },\n {\n status: \"added\",\n file: path.join(process.cwd(), \"README-demo.md\"),\n patch: \"@@ -0,0 +1,4 @@\\n+# Demo\\n+This is a generated preview file.\\n\",\n deletions: 0,\n },\n ],\n },\n })\n}\n\nfunction emitTask(state: State): void {\n const ref = make(state, \"subagent\", {\n description: \"Scan run/* for reducer touchpoints\",\n agent: \"explore\",\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n sessionID: \"ses_demo_child\",\n status: \"completed\",\n output: \"\",\n },\n })\n const part = {\n type: \"tool\",\n id: \"sub_demo_call_1\",\n name: \"read\",\n state: {\n status: \"running\",\n input: {\n path: \"packages/tui/src/mini/stream.ts\",\n offset: 1,\n limit: 200,\n },\n metadata: {},\n },\n time: { created: Date.now(), ran: Date.now() },\n } satisfies SessionMessageAssistantTool\n showSubagent(state, {\n sessionID: \"ses_demo_child\",\n label: \"Explore\",\n description: \"Scan run/* for reducer touchpoints\",\n status: \"completed\",\n title: \"Reducer touchpoints found\",\n commits: [\n {\n kind: \"user\",\n text: \"Scan run/* for reducer touchpoints\",\n phase: \"start\",\n source: \"system\",\n },\n {\n kind: \"reasoning\",\n text: \"Thinking: tracing reducer and footer boundaries\",\n phase: \"progress\",\n source: \"reasoning\",\n messageID: \"sub_demo_msg_reasoning\",\n partID: \"sub_demo_reasoning_1\",\n },\n toolCommit(part, \"sub_demo_msg_tool\", \"start\"),\n {\n kind: \"assistant\",\n text: \"Footer updates flow through stream.ts into RunFooter\",\n phase: \"progress\",\n source: \"assistant\",\n messageID: \"sub_demo_msg_text\",\n partID: \"sub_demo_text_1\",\n },\n ],\n })\n}\n\nfunction emitQuestionTool(state: State): void {\n const ref = make(state, \"question\", {\n questions: [\n {\n header: \"Style\",\n question: \"Which output style do you want to inspect?\",\n options: [\n { label: \"Diff\", description: \"Show diff block\" },\n { label: \"Code\", description: \"Show code block\" },\n ],\n multiple: false,\n custom: false,\n },\n {\n header: \"Extras\",\n question: \"Pick extra rows\",\n options: [\n { label: \"Usage\", description: \"Add usage row\" },\n { label: \"Duration\", description: \"Add duration row\" },\n ],\n multiple: true,\n custom: true,\n },\n ],\n })\n doneTool(state, ref, {\n output: \"\",\n metadata: {\n answers: [[\"Diff\"], [\"Usage\", \"custom-note\"]],\n },\n })\n}\n\nfunction emitPermission(state: State, kind: PermissionKind = \"edit\"): void {\n const root = process.cwd()\n const file = path.join(root, \"src\", \"demo-format.ts\")\n\n if (kind === \"shell\") {\n const command = \"git status --short\"\n const ref = make(state, \"shell\", {\n command,\n workdir: root,\n description: \"Inspect worktree changes\",\n })\n askPermission(state, {\n ref,\n permission: \"shell\",\n patterns: [command],\n always: [\"*\"],\n done: {\n output: `${root}\\ngit status --short\\n M src/demo-format.ts\\n?? src/demo-permission.ts\\n`,\n metadata: {\n exit: 0,\n },\n },\n })\n return\n }\n\n if (kind === \"read\") {\n const target = path.join(root, \"package.json\")\n const ref = make(state, \"read\", {\n path: target,\n offset: 1,\n limit: 80,\n })\n askPermission(state, {\n ref,\n permission: \"read\",\n patterns: [target],\n always: [target],\n done: {\n output: [\"1: {\", '2: \"name\": \"opencode\",', '3: \"private\": true', \"4: }\"].join(\"\\n\"),\n metadata: {},\n },\n })\n return\n }\n\n if (kind === \"subagent\") {\n const ref = make(state, \"subagent\", {\n description: \"Inspect footer spacing across direct-mode prompts\",\n agent: \"explore\",\n })\n askPermission(state, {\n ref,\n permission: \"subagent\",\n patterns: [\"explore\"],\n always: [\"*\"],\n done: {\n output: \"\",\n metadata: {\n sessionID: \"sub_demo_perm_1\",\n status: \"completed\",\n output: \"\",\n },\n },\n })\n return\n }\n\n if (kind === \"external\") {\n const dir = path.join(path.dirname(root), \"demo-shared\")\n const target = path.join(dir, \"README.md\")\n const ref = make(state, \"read\", {\n path: target,\n offset: 1,\n limit: 40,\n })\n askPermission(state, {\n ref,\n permission: \"external_directory\",\n patterns: [`${dir}/**`],\n metadata: {\n parentDir: dir,\n filepath: target,\n },\n always: [`${dir}/**`],\n done: {\n output: `1: # External demo\\n2: Shared preview file\\nPath: ${target}`,\n metadata: {},\n },\n })\n return\n }\n\n if (kind === \"doom\") {\n const ref = make(state, \"subagent\", {\n description: \"Retry the formatter after repeated failures\",\n agent: \"general\",\n })\n askPermission(state, {\n ref,\n permission: \"doom_loop\",\n patterns: [\"*\"],\n always: [\"*\"],\n done: {\n output: \"Continuing after repeated failures.\\n\",\n metadata: {},\n },\n })\n return\n }\n\n const diff = \"@@ -1 +1 @@\\n-export const demo = 1\\n+export const demo = 42\\n\"\n const ref = make(state, \"edit\", {\n path: file,\n })\n askPermission(state, {\n ref,\n permission: \"edit\",\n patterns: [file],\n always: [file],\n done: {\n output: \"\",\n metadata: {\n files: [{ file, status: \"modified\", patch: diff }],\n },\n },\n })\n}\n\nfunction demoForm(kind: FormKind): { title: string; fields: MiniFormRequest[\"fields\"]; questions?: JsonValue[] } {\n if (kind === \"question\") {\n const questions: JsonValue[] = [\n {\n header: \"Layout\",\n question: \"Which footer view should be the reference for spacing checks?\",\n options: [\n { label: \"Form\", description: \"Inspect the canonical Form footer\" },\n { label: \"Prompt\", description: \"Return to the normal composer\" },\n ],\n multiple: false,\n custom: true,\n },\n {\n header: \"Checks\",\n question: \"Pick formatting previews\",\n options: [\n { label: \"Diff\", description: \"Emit an edit diff\" },\n { label: \"Subagent\", description: \"Emit a subagent card\" },\n ],\n multiple: true,\n custom: true,\n },\n ]\n return {\n title: \"Questions\",\n questions,\n fields: [\n {\n key: \"q0\",\n title: \"Layout\",\n description: \"Which footer view should be the reference for spacing checks?\",\n type: \"string\",\n options: [\n { value: \"Form\", label: \"Form\", description: \"Inspect the canonical Form footer\" },\n { value: \"Prompt\", label: \"Prompt\", description: \"Return to the normal composer\" },\n ],\n custom: true,\n },\n {\n key: \"q1\",\n title: \"Checks\",\n description: \"Pick formatting previews\",\n type: \"multiselect\",\n options: [\n { value: \"Diff\", label: \"Diff\", description: \"Emit an edit diff\" },\n { value: \"Subagent\", label: \"Subagent\", description: \"Emit a subagent card\" },\n ],\n custom: true,\n },\n ],\n }\n }\n return {\n title: \"MCP authorization\",\n fields: [\n {\n key: \"authorization\",\n type: \"external\",\n url: \"https://example.com/opencode-demo\",\n title: \"Authorize demo MCP server\",\n description: \"Complete authorization in your browser\",\n },\n ],\n }\n}\n\nfunction emitForm(state: State, kind: FormKind = \"question\"): void {\n const form = demoForm(kind)\n const ref = make(state, kind === \"question\" ? \"question\" : \"mcp_demo\", {\n ...(form.questions ? { questions: form.questions } : { form: kind }),\n })\n startTool(state, ref)\n state.form++\n const request: MiniFormRequest = {\n id: `frm_demo_${state.form}`,\n sessionID: state.id,\n title: form.title,\n metadata:\n kind === \"question\"\n ? { kind: \"question\", tool: { messageID: ref.msg, id: ref.call } }\n : { kind: \"mcp\", message: `Synthetic ${kind} MCP elicitation` },\n fields: form.fields,\n }\n state.forms.set(request.id, { ref, kind, request })\n present(state, [], { type: \"form\", request })\n}\n\nasync function emitFmt(state: State, kind: string, body: string, signal?: AbortSignal): Promise<boolean> {\n if (kind === \"text\") {\n await emitText(state, body || SAMPLE_MARKDOWN, signal)\n return true\n }\n\n if (kind === \"markdown\" || kind === \"md\") {\n await emitText(state, body || SAMPLE_MARKDOWN, signal)\n return true\n }\n\n if (kind === \"table\") {\n await emitText(state, body || SAMPLE_TABLE, signal)\n return true\n }\n\n if (kind === \"reasoning\") {\n await emitReasoning(state, body || \"Planning next steps [REDACTED] while preserving reducer ordering.\", signal)\n return true\n }\n\n if (kind === \"shell\") {\n await emitBash(state, signal)\n return true\n }\n\n if (kind === \"write\") {\n emitWrite(state)\n return true\n }\n\n if (kind === \"edit\") {\n emitEdit(state)\n return true\n }\n\n if (kind === \"patch\") {\n emitPatch(state)\n return true\n }\n\n if (kind === \"subagent\") {\n emitTask(state)\n return true\n }\n\n if (kind === \"question\") {\n emitQuestionTool(state)\n return true\n }\n\n if (kind === \"error\") {\n emitError(state, body || \"demo error event\")\n return true\n }\n\n if (kind === \"mix\") {\n await emitText(state, SAMPLE_MARKDOWN, signal)\n await wait(50, signal)\n await emitReasoning(state, \"Thinking through formatter edge cases [REDACTED].\", signal)\n await wait(50, signal)\n await emitBash(state, signal)\n emitWrite(state)\n emitEdit(state)\n emitPatch(state)\n emitTask(state)\n emitQuestionTool(state)\n emitError(state, \"demo mixed scenario error\")\n return true\n }\n\n return false\n}\n\nfunction intro(state: State): void {\n note(\n state.footer,\n [\n \"Demo slash commands enabled for interactive mode.\",\n `- /permission [kind] (${PERMISSIONS.join(\", \")})`,\n `- /form [kind] (${FORMS.join(\", \")})`,\n `- /fmt <kind> (${KINDS.join(\", \")})`,\n \"Examples:\",\n \"- /permission shell\",\n \"- /form question\",\n \"- /form external\",\n \"- /fmt markdown\",\n \"- /fmt table\",\n \"- /fmt text your custom text\",\n ].join(\"\\n\"),\n )\n}\n\nexport function createRunDemo(input: Input) {\n const state: State = {\n id: input.sessionID,\n thinking: input.thinking,\n footer: input.footer,\n msg: 0,\n part: 0,\n call: 0,\n perm: 0,\n form: 0,\n perms: new Map(),\n forms: new Map(),\n started: new Set(),\n }\n\n const start = async (): Promise<void> => {\n intro(state)\n }\n\n const prompt = async (line: RunPrompt, signal?: AbortSignal): Promise<boolean> => {\n const text = line.text.trim()\n const head = parseSlashHead(text)\n const list = head?.arguments.split(/\\s+/).filter(Boolean) ?? []\n const cmd = head ? `/${head.name}` : \"\"\n\n clearSubagent(state.footer)\n\n if (cmd === \"/help\") {\n intro(state)\n return true\n }\n\n if (cmd === \"/permission\") {\n const kind = permissionKind(list[0])\n if (!kind) {\n note(state.footer, `Pick a permission kind: ${PERMISSIONS.join(\", \")}`)\n return true\n }\n\n emitPermission(state, kind)\n return true\n }\n\n if (cmd === \"/form\") {\n const kind = formKind(list[0])\n if (!kind) {\n note(state.footer, `Pick a form kind: ${FORMS.join(\", \")}`)\n return true\n }\n\n emitForm(state, kind)\n return true\n }\n\n if (cmd === \"/fmt\") {\n const kind = (list[0] || \"\").toLowerCase()\n const body = list.slice(1).join(\" \")\n if (!kind) {\n note(state.footer, `Pick a kind: ${KINDS.join(\", \")}`)\n return true\n }\n\n const ok = await emitFmt(state, kind, body, signal)\n if (ok) {\n return true\n }\n\n note(state.footer, `Unknown kind \"${kind}\". Use: ${KINDS.join(\", \")}`)\n return true\n }\n\n return false\n }\n\n const permission = (input: PermissionReply): boolean => {\n const item = state.perms.get(input.requestID)\n if (!item || !input.reply) {\n return false\n }\n\n state.perms.delete(input.requestID)\n clearBlocker(state)\n\n if (input.reply === \"reject\") {\n failTool(state, item.ref, input.message || \"permission rejected\")\n return true\n }\n\n doneTool(state, item.ref, item.done)\n return true\n }\n\n const formReply = (input: FormReply): boolean => {\n const form = state.forms.get(input.formID)\n if (!form || input.sessionID !== form.request.sessionID) return false\n state.forms.delete(input.formID)\n clearBlocker(state)\n if (form.kind === \"question\") {\n doneTool(state, form.ref, {\n output: \"\",\n metadata: {\n answers: form.request.fields.map((field) => {\n const value = input.answer[field.key]\n if (value === undefined) return []\n return Array.isArray(value) ? [...value] : [String(value)]\n }),\n },\n })\n return true\n }\n doneTool(state, form.ref, {\n output: `Form submitted: ${Object.entries(input.answer)\n .map(([key, value]) => `${key}=${Array.isArray(value) ? value.join(\", \") : String(value)}`)\n .join(\"; \")}\\n`,\n metadata: { answer: input.answer },\n })\n return true\n }\n\n const formCancel = (input: FormCancel): boolean => {\n const form = state.forms.get(input.formID)\n if (!form || input.sessionID !== form.request.sessionID) return false\n state.forms.delete(input.formID)\n clearBlocker(state)\n failTool(state, form.ref, \"form cancelled\")\n return true\n }\n\n return {\n start,\n prompt,\n permission,\n formReply,\n formCancel,\n }\n}\n" | ||
| ], | ||
| "mappings": ";2TAgBA,oBAiBA,IAAM,EAAQ,CACZ,WACA,QACA,OACA,YACA,QACA,QACA,OACA,QACA,WACA,WACA,QACA,KACF,EACM,EAAc,CAAC,OAAQ,QAAS,OAAQ,WAAY,WAAY,MAAM,EACtE,EAAQ,CAAC,WAAY,UAAU,EAKrC,SAAS,CAAc,CAAC,EAAuD,CAC7E,IAAM,GAAQ,GAAS,QAAQ,YAAY,EAC3C,OAAO,EAAY,KAAK,CAAC,IAAS,IAAS,CAAI,EAGjD,SAAS,CAAQ,CAAC,EAAiD,CACjE,IAAM,GAAQ,GAAS,YAAY,YAAY,EAC/C,OAAO,EAAM,KAAK,CAAC,IAAS,IAAS,CAAI,EAG3C,IAAM,EAAkB,CACtB,qBACA,GACA,4EACA,oGACA,GACA,aACA,GACA,8EACA,6EACA,uEACA,GACA,YACA,GACA,oCACA,4BACA,2FACA,wGACA,iGACA,GACA,sGACA,GACA,QACA,6DACA,MACA,GACA,WACA,GACA,oBACA,gBACA,uFACA,2EACA,4FACA,GACA,sEACF,EAAE,KAAK;AAAA,CAAI,EAEL,EAAe,CACnB,iBACA,GACA,6BACA,sBACA,6DACA,uEACA,kFACA,8DACF,EAAE,KAAK;AAAA,CAAI,EAqDX,SAAS,CAAI,CAAC,EAAmB,EAAoB,CACnD,EAAO,OAAO,CACZ,KAAM,SACN,OACA,MAAO,QACP,OAAQ,QACV,CAAC,EAGH,SAAS,CAAa,CAAC,EAAyB,CAC9C,EAAO,MAAM,CACX,KAAM,kBACN,MAAO,CACL,KAAM,CAAC,EACP,QAAS,CAAC,EACV,YAAa,CAAC,EACd,MAAO,CAAC,CACV,CACF,CAAC,EAGH,SAAS,CAAY,CACnB,EACA,EAQA,CACA,EAAM,OAAO,MAAM,CACjB,KAAM,kBACN,MAAO,CACL,KAAM,CACJ,CACE,UAAW,EAAM,UACjB,MAAO,EAAM,MACb,YAAa,EAAM,YACnB,OAAQ,EAAM,OACd,MAAO,EAAM,KACf,CACF,EACA,QAAS,EACN,EAAM,WAAY,CACjB,QAAS,EAAM,OACjB,CACF,EACA,YAAa,CAAC,EACd,MAAO,CAAC,CACV,CACF,CAAC,EAGH,SAAS,CAAI,CAAC,EAAY,EAAqC,CAC7D,OAAO,IAAI,QAAQ,CAAC,IAAY,CAC9B,GAAI,CAAC,EAAQ,CACX,WAAW,EAAS,CAAE,EACtB,OAGF,GAAI,EAAO,QAAS,CAClB,EAAQ,EACR,OAGF,IAAM,EAAO,IAAM,CACjB,aAAa,CAAK,EAClB,EAAO,oBAAoB,QAAS,CAAI,EACxC,EAAQ,GAGJ,EAAQ,WAAW,IAAM,CAC7B,EAAO,oBAAoB,QAAS,CAAI,EACxC,EAAQ,GACP,CAAE,EAEL,EAAO,iBAAiB,QAAS,EAAM,CAAE,KAAM,EAAK,CAAC,EACtD,EAGH,SAAS,CAAK,CAAC,EAAwB,CACrC,GAAI,EAAK,QAAU,GACjB,MAAO,CAAC,CAAI,EAGd,IAAM,EAAO,KAAK,KAAK,EAAK,OAAS,CAAC,EACtC,MAAO,CAAC,EAAK,MAAM,EAAG,CAAI,EAAG,EAAK,MAAM,EAAM,EAAO,CAAC,EAAG,EAAK,MAAM,EAAO,CAAC,CAAC,EAG/E,SAAS,CAAI,CAAC,EAAc,EAAuC,EAAwB,CAEzF,OADA,EAAM,IAAQ,EACP,QAAQ,KAAU,EAAM,KAGjC,SAAS,CAAO,CAAC,EAAc,EAAyB,EAAyB,CAC/E,EACE,CAAE,OAAQ,EAAM,MAAO,EACvB,CACE,UACA,QAAS,EACL,CACE,CACE,KAAM,eACN,MAAO,CAAE,OAAQ,EAAK,OAAS,aAAe,sBAAwB,eAAgB,CACxF,EACA,CAAE,KAAM,cAAwB,MAAK,CACvC,EACA,MACN,CACF,EAGF,SAAS,CAAY,CAAC,EAAoB,CACxC,EACE,CAAE,OAAQ,EAAM,MAAO,EACvB,CACE,QAAS,CAAC,EACV,QAAS,CACP,CAAE,KAAM,eAAgB,MAAO,CAAE,OAAQ,EAAG,CAAE,EAC9C,CAAE,KAAM,cAAe,KAAM,CAAE,KAAM,QAAS,CAAE,CAClD,CACF,CACF,EAGF,SAAS,CAAI,CAAC,EAAsB,CAClC,OAAO,EAAK,EAAO,MAAO,KAAK,EAGjC,eAAe,CAAQ,CAAC,EAAc,EAAc,EAAqC,CACvF,IAAM,EAAM,EAAK,CAAK,EAChB,EAAO,EAAK,EAAO,OAAQ,MAAM,EACvC,QAAW,KAAQ,EAAM,CAAI,EAAG,CAC9B,GAAI,GAAQ,QACV,OAGF,EAAQ,EAAO,CACb,CAAE,KAAM,YAAa,OAAQ,YAAa,KAAM,EAAM,MAAO,WAAY,UAAW,EAAK,OAAQ,CAAK,CACxG,CAAC,EACD,MAAM,EAAK,GAAI,CAAM,GAIzB,eAAe,CAAa,CAAC,EAAc,EAAc,EAAqC,CAC5F,IAAM,EAAM,EAAK,CAAK,EAChB,EAAO,EAAK,EAAO,OAAQ,MAAM,EACnC,EAAQ,GACZ,QAAW,KAAQ,EAAM,CAAI,EAAG,CAC9B,GAAI,GAAQ,QACV,OAGF,GAAI,EAAM,SACR,EAAQ,EAAO,CACb,CACE,KAAM,YACN,OAAQ,YACR,KAAM,EAAQ,aAAa,EAAK,QAAQ,gBAAiB,EAAE,IAAM,EAAK,QAAQ,gBAAiB,EAAE,EACjG,MAAO,WACP,UAAW,EACX,OAAQ,CACV,CACF,CAAC,EACD,EAAQ,GAEV,MAAM,EAAK,GAAI,CAAM,GAIzB,SAAS,CAAI,CAAC,EAAc,EAAc,EAAuC,CAC/E,MAAO,CACL,IAAK,EAAK,CAAK,EACf,KAAM,EAAK,EAAO,OAAQ,MAAM,EAChC,OACA,QACA,MAAO,KAAK,IAAI,CAClB,EAGF,SAAS,CAAS,CAAC,EAAc,EAAU,EAAsC,CAAC,EAAgC,CAChH,EAAM,QAAQ,IAAI,EAAI,IAAI,EAC1B,IAAM,EAAO,CACX,KAAM,OACN,GAAI,EAAI,KACR,KAAM,EAAI,KACV,MAAO,CAAE,OAAQ,UAAoB,MAAO,EAAI,MAAO,UAAS,EAChE,KAAM,CAAE,QAAS,EAAI,MAAO,IAAK,EAAI,KAAM,CAC7C,EAEA,OADA,EAAQ,EAAO,CAAC,EAAW,EAAM,EAAI,IAAK,OAAO,CAAC,CAAC,EAC5C,EAGT,SAAS,CAAa,CAAC,EAAc,EAAoB,CACvD,IAAM,EAAO,EAAU,EAAO,EAAK,GAAG,EAEhC,EAAK,EAAK,EAAO,OAAQ,MAAM,EACrC,EAAM,MAAM,IAAI,EAAI,CAClB,IAAK,EAAK,IACV,KAAM,EAAK,IACb,CAAC,EAED,EAAQ,EAAO,CAAC,EAAG,CACjB,KAAM,aACN,QAAS,CACP,KACA,UAAW,EAAM,GACjB,OAAQ,EAAK,WACb,UAAW,EAAK,SAChB,SAAU,EAAK,UAAY,CAAC,EAC5B,KAAM,EAAK,OACX,OAAQ,CAAE,KAAM,OAAQ,UAAW,EAAK,IAAI,IAAK,GAAI,EAAK,IAAI,IAAK,EACnE,MACF,CACF,CAAC,EAGH,SAAS,CAAQ,CACf,EACA,EACA,EAIM,CACN,GAAI,CAAC,EAAM,QAAQ,IAAI,EAAI,IAAI,EAAG,EAAU,EAAO,CAAG,EACtD,IAAM,EAAoC,CACxC,KAAM,OACN,GAAI,EAAI,KACR,KAAM,EAAI,KACV,MAAO,CACL,OAAQ,YACR,MAAO,EAAI,MACX,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,EAAO,MAAO,CAAC,EAC/C,SAAU,EAAO,QACnB,EACA,KAAM,CAAE,QAAS,EAAI,MAAO,IAAK,EAAI,MAAO,UAAW,KAAK,IAAI,CAAE,CACpE,EACA,EAAQ,EAAO,CAAC,EAAW,EAAM,EAAI,IAAK,EAAe,CAAI,CAAC,CAAC,CAAC,EAGlE,SAAS,CAAQ,CAAC,EAAc,EAAU,EAAqB,CAC7D,GAAI,CAAC,EAAM,QAAQ,IAAI,EAAI,IAAI,EAAG,EAAU,EAAO,CAAG,EACtD,EAAQ,EAAO,CACb,EACE,CACE,KAAM,OACN,GAAI,EAAI,KACR,KAAM,EAAI,KACV,MAAO,CACL,OAAQ,QACR,MAAO,EAAI,MACX,MAAO,CAAE,KAAM,UAAW,QAAS,CAAM,CAC3C,EACA,KAAM,CAAE,QAAS,EAAI,MAAO,IAAK,EAAI,MAAO,UAAW,KAAK,IAAI,CAAE,CACpE,EACA,EAAI,IACJ,OACF,CACF,CAAC,EAGH,SAAS,CAAS,CAAC,EAAc,EAAoB,CACnD,EAAQ,EAAO,CAAC,CAAE,KAAM,QAAS,OAAQ,SAAU,OAAM,MAAO,OAAQ,CAAC,CAAC,EAG5E,eAAe,CAAQ,CAAC,EAAc,EAAqC,CACzE,IAAM,EAAM,EAAK,EAAO,QAAS,CAC/B,QAAS,aACT,QAAS,QAAQ,IAAI,EACrB,YAAa,iBACf,CAAC,EACD,EAAU,EAAO,CAAG,EACpB,MAAM,EAAK,GAAI,CAAM,EACrB,EAAS,EAAO,EAAK,CACnB,OAAQ,GAAG,QAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,EACvB,SAAU,CACR,KAAM,CACR,CACF,CAAC,EAGH,SAAS,CAAS,CAAC,EAAoB,CACrC,IAAM,EAAO,EAAK,KAAK,QAAQ,IAAI,EAAG,MAAO,gBAAgB,EACvD,EAAM,EAAK,EAAO,QAAS,CAC/B,KAAM,EACN,QAAS;AAAA,CACX,CAAC,EACD,EAAS,EAAO,EAAK,CACnB,OAAQ,GACR,SAAU,CAAC,CACb,CAAC,EAGH,SAAS,CAAQ,CAAC,EAAoB,CACpC,IAAM,EAAO,EAAK,KAAK,QAAQ,IAAI,EAAG,MAAO,gBAAgB,EACvD,EAAM,EAAK,EAAO,OAAQ,CAC9B,KAAM,CACR,CAAC,EACD,EAAS,EAAO,EAAK,CACnB,OAAQ,GACR,SAAU,CACR,MAAO,CACL,CACE,OACA,OAAQ,WACR,MAAO;AAAA;AAAA;AAAA,CACT,CACF,CACF,CACF,CAAC,EAGH,SAAS,CAAS,CAAC,EAAoB,CACrC,IAAM,EAAO,EAAK,KAAK,QAAQ,IAAI,EAAG,MAAO,gBAAgB,EACvD,EAAM,EAAK,EAAO,QAAS,CAC/B,UAAW;AAAA,cACb,CAAC,EACD,EAAS,EAAO,EAAK,CACnB,OAAQ,GACR,SAAU,CACR,MAAO,CACL,CACE,OAAQ,WACR,OACA,MAAO;AAAA;AAAA;AAAA,EACP,UAAW,CACb,EACA,CACE,OAAQ,QACR,KAAM,EAAK,KAAK,QAAQ,IAAI,EAAG,gBAAgB,EAC/C,MAAO;AAAA;AAAA;AAAA,EACP,UAAW,CACb,CACF,CACF,CACF,CAAC,EAGH,SAAS,CAAQ,CAAC,EAAoB,CACpC,IAAM,EAAM,EAAK,EAAO,WAAY,CAClC,YAAa,qCACb,MAAO,SACT,CAAC,EACD,EAAS,EAAO,EAAK,CACnB,OAAQ,GACR,SAAU,CACR,UAAW,iBACX,OAAQ,YACR,OAAQ,EACV,CACF,CAAC,EACD,IAAM,EAAO,CACX,KAAM,OACN,GAAI,kBACJ,KAAM,OACN,MAAO,CACL,OAAQ,UACR,MAAO,CACL,KAAM,kCACN,OAAQ,EACR,MAAO,GACT,EACA,SAAU,CAAC,CACb,EACA,KAAM,CAAE,QAAS,KAAK,IAAI,EAAG,IAAK,KAAK,IAAI,CAAE,CAC/C,EACA,EAAa,EAAO,CAClB,UAAW,iBACX,MAAO,UACP,YAAa,qCACb,OAAQ,YACR,MAAO,4BACP,QAAS,CACP,CACE,KAAM,OACN,KAAM,qCACN,MAAO,QACP,OAAQ,QACV,EACA,CACE,KAAM,YACN,KAAM,kDACN,MAAO,WACP,OAAQ,YACR,UAAW,yBACX,OAAQ,sBACV,EACA,EAAW,EAAM,oBAAqB,OAAO,EAC7C,CACE,KAAM,YACN,KAAM,uDACN,MAAO,WACP,OAAQ,YACR,UAAW,oBACX,OAAQ,iBACV,CACF,CACF,CAAC,EAGH,SAAS,CAAgB,CAAC,EAAoB,CAC5C,IAAM,EAAM,EAAK,EAAO,WAAY,CAClC,UAAW,CACT,CACE,OAAQ,QACR,SAAU,6CACV,QAAS,CACP,CAAE,MAAO,OAAQ,YAAa,iBAAkB,EAChD,CAAE,MAAO,OAAQ,YAAa,iBAAkB,CAClD,EACA,SAAU,GACV,OAAQ,EACV,EACA,CACE,OAAQ,SACR,SAAU,kBACV,QAAS,CACP,CAAE,MAAO,QAAS,YAAa,eAAgB,EAC/C,CAAE,MAAO,WAAY,YAAa,kBAAmB,CACvD,EACA,SAAU,GACV,OAAQ,EACV,CACF,CACF,CAAC,EACD,EAAS,EAAO,EAAK,CACnB,OAAQ,GACR,SAAU,CACR,QAAS,CAAC,CAAC,MAAM,EAAG,CAAC,QAAS,aAAa,CAAC,CAC9C,CACF,CAAC,EAGH,SAAS,CAAc,CAAC,EAAc,EAAuB,OAAc,CACzE,IAAM,EAAO,QAAQ,IAAI,EACnB,EAAO,EAAK,KAAK,EAAM,MAAO,gBAAgB,EAEpD,GAAI,IAAS,QAAS,CAEpB,IAAM,EAAM,EAAK,EAAO,QAAS,CAC/B,QAFc,qBAGd,QAAS,EACT,YAAa,0BACf,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,QACZ,SAAU,CATI,oBASI,EAClB,OAAQ,CAAC,GAAG,EACZ,KAAM,CACJ,OAAQ,GAAG;AAAA;AAAA;AAAA;AAAA,EACX,SAAU,CACR,KAAM,CACR,CACF,CACF,CAAC,EACD,OAGF,GAAI,IAAS,OAAQ,CACnB,IAAM,EAAS,EAAK,KAAK,EAAM,cAAc,EACvC,EAAM,EAAK,EAAO,OAAQ,CAC9B,KAAM,EACN,OAAQ,EACR,MAAO,EACT,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,OACZ,SAAU,CAAC,CAAM,EACjB,OAAQ,CAAC,CAAM,EACf,KAAM,CACJ,OAAQ,CAAC,OAAQ,2BAA4B,uBAAwB,MAAM,EAAE,KAAK;AAAA,CAAI,EACtF,SAAU,CAAC,CACb,CACF,CAAC,EACD,OAGF,GAAI,IAAS,WAAY,CACvB,IAAM,EAAM,EAAK,EAAO,WAAY,CAClC,YAAa,oDACb,MAAO,SACT,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,WACZ,SAAU,CAAC,SAAS,EACpB,OAAQ,CAAC,GAAG,EACZ,KAAM,CACJ,OAAQ,GACR,SAAU,CACR,UAAW,kBACX,OAAQ,YACR,OAAQ,EACV,CACF,CACF,CAAC,EACD,OAGF,GAAI,IAAS,WAAY,CACvB,IAAM,EAAM,EAAK,KAAK,EAAK,QAAQ,CAAI,EAAG,aAAa,EACjD,EAAS,EAAK,KAAK,EAAK,WAAW,EACnC,EAAM,EAAK,EAAO,OAAQ,CAC9B,KAAM,EACN,OAAQ,EACR,MAAO,EACT,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,qBACZ,SAAU,CAAC,GAAG,MAAQ,EACtB,SAAU,CACR,UAAW,EACX,SAAU,CACZ,EACA,OAAQ,CAAC,GAAG,MAAQ,EACpB,KAAM,CACJ,OAAQ;AAAA;AAAA,QAAqD,IAC7D,SAAU,CAAC,CACb,CACF,CAAC,EACD,OAGF,GAAI,IAAS,OAAQ,CACnB,IAAM,EAAM,EAAK,EAAO,WAAY,CAClC,YAAa,8CACb,MAAO,SACT,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,YACZ,SAAU,CAAC,GAAG,EACd,OAAQ,CAAC,GAAG,EACZ,KAAM,CACJ,OAAQ;AAAA,EACR,SAAU,CAAC,CACb,CACF,CAAC,EACD,OAGF,IAAM,EAAO;AAAA;AAAA;AAAA,EACP,EAAM,EAAK,EAAO,OAAQ,CAC9B,KAAM,CACR,CAAC,EACD,EAAc,EAAO,CACnB,MACA,WAAY,OACZ,SAAU,CAAC,CAAI,EACf,OAAQ,CAAC,CAAI,EACb,KAAM,CACJ,OAAQ,GACR,SAAU,CACR,MAAO,CAAC,CAAE,OAAM,OAAQ,WAAY,MAAO,CAAK,CAAC,CACnD,CACF,CACF,CAAC,EAGH,SAAS,CAAQ,CAAC,EAA+F,CAC/G,GAAI,IAAS,WAuBX,MAAO,CACL,MAAO,YACP,UAxB6B,CAC7B,CACE,OAAQ,SACR,SAAU,gEACV,QAAS,CACP,CAAE,MAAO,OAAQ,YAAa,mCAAoC,EAClE,CAAE,MAAO,SAAU,YAAa,+BAAgC,CAClE,EACA,SAAU,GACV,OAAQ,EACV,EACA,CACE,OAAQ,SACR,SAAU,2BACV,QAAS,CACP,CAAE,MAAO,OAAQ,YAAa,mBAAoB,EAClD,CAAE,MAAO,WAAY,YAAa,sBAAuB,CAC3D,EACA,SAAU,GACV,OAAQ,EACV,CACF,EAIE,OAAQ,CACN,CACE,IAAK,KACL,MAAO,SACP,YAAa,gEACb,KAAM,SACN,QAAS,CACP,CAAE,MAAO,OAAQ,MAAO,OAAQ,YAAa,mCAAoC,EACjF,CAAE,MAAO,SAAU,MAAO,SAAU,YAAa,+BAAgC,CACnF,EACA,OAAQ,EACV,EACA,CACE,IAAK,KACL,MAAO,SACP,YAAa,2BACb,KAAM,cACN,QAAS,CACP,CAAE,MAAO,OAAQ,MAAO,OAAQ,YAAa,mBAAoB,EACjE,CAAE,MAAO,WAAY,MAAO,WAAY,YAAa,sBAAuB,CAC9E,EACA,OAAQ,EACV,CACF,CACF,EAEF,MAAO,CACL,MAAO,oBACP,OAAQ,CACN,CACE,IAAK,gBACL,KAAM,WACN,IAAK,oCACL,MAAO,4BACP,YAAa,wCACf,CACF,CACF,EAGF,SAAS,EAAQ,CAAC,EAAc,EAAiB,WAAkB,CACjE,IAAM,EAAO,EAAS,CAAI,EACpB,EAAM,EAAK,EAAO,IAAS,WAAa,WAAa,WAAY,IACjE,EAAK,UAAY,CAAE,UAAW,EAAK,SAAU,EAAI,CAAE,KAAM,CAAK,CACpE,CAAC,EACD,EAAU,EAAO,CAAG,EACpB,EAAM,OACN,IAAM,EAA2B,CAC/B,GAAI,YAAY,EAAM,OACtB,UAAW,EAAM,GACjB,MAAO,EAAK,MACZ,SACE,IAAS,WACL,CAAE,KAAM,WAAY,KAAM,CAAE,UAAW,EAAI,IAAK,GAAI,EAAI,IAAK,CAAE,EAC/D,CAAE,KAAM,MAAO,QAAS,aAAa,mBAAuB,EAClE,OAAQ,EAAK,MACf,EACA,EAAM,MAAM,IAAI,EAAQ,GAAI,CAAE,MAAK,OAAM,SAAQ,CAAC,EAClD,EAAQ,EAAO,CAAC,EAAG,CAAE,KAAM,OAAQ,SAAQ,CAAC,EAG9C,eAAe,EAAO,CAAC,EAAc,EAAc,EAAc,EAAwC,CACvG,GAAI,IAAS,OAEX,OADA,MAAM,EAAS,EAAO,GAAQ,EAAiB,CAAM,EAC9C,GAGT,GAAI,IAAS,YAAc,IAAS,KAElC,OADA,MAAM,EAAS,EAAO,GAAQ,EAAiB,CAAM,EAC9C,GAGT,GAAI,IAAS,QAEX,OADA,MAAM,EAAS,EAAO,GAAQ,EAAc,CAAM,EAC3C,GAGT,GAAI,IAAS,YAEX,OADA,MAAM,EAAc,EAAO,GAAQ,oEAAqE,CAAM,EACvG,GAGT,GAAI,IAAS,QAEX,OADA,MAAM,EAAS,EAAO,CAAM,EACrB,GAGT,GAAI,IAAS,QAEX,OADA,EAAU,CAAK,EACR,GAGT,GAAI,IAAS,OAEX,OADA,EAAS,CAAK,EACP,GAGT,GAAI,IAAS,QAEX,OADA,EAAU,CAAK,EACR,GAGT,GAAI,IAAS,WAEX,OADA,EAAS,CAAK,EACP,GAGT,GAAI,IAAS,WAEX,OADA,EAAiB,CAAK,EACf,GAGT,GAAI,IAAS,QAEX,OADA,EAAU,EAAO,GAAQ,kBAAkB,EACpC,GAGT,GAAI,IAAS,MAYX,OAXA,MAAM,EAAS,EAAO,EAAiB,CAAM,EAC7C,MAAM,EAAK,GAAI,CAAM,EACrB,MAAM,EAAc,EAAO,oDAAqD,CAAM,EACtF,MAAM,EAAK,GAAI,CAAM,EACrB,MAAM,EAAS,EAAO,CAAM,EAC5B,EAAU,CAAK,EACf,EAAS,CAAK,EACd,EAAU,CAAK,EACf,EAAS,CAAK,EACd,EAAiB,CAAK,EACtB,EAAU,EAAO,2BAA2B,EACrC,GAGT,MAAO,GAGT,SAAS,CAAK,CAAC,EAAoB,CACjC,EACE,EAAM,OACN,CACE,oDACA,yBAAyB,EAAY,KAAK,IAAI,KAC9C,mBAAmB,EAAM,KAAK,IAAI,KAClC,kBAAkB,EAAM,KAAK,IAAI,KACjC,YACA,sBACA,mBACA,mBACA,kBACA,eACA,8BACF,EAAE,KAAK;AAAA,CAAI,CACb,EAGK,SAAS,EAAa,CAAC,EAAc,CAC1C,IAAM,EAAe,CACnB,GAAI,EAAM,UACV,SAAU,EAAM,SAChB,OAAQ,EAAM,OACd,IAAK,EACL,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,MAAO,IAAI,IACX,MAAO,IAAI,IACX,QAAS,IAAI,GACf,EAmHA,MAAO,CACL,MAlHY,SAA2B,CACvC,EAAM,CAAK,GAkHX,OA/Ga,MAAO,EAAiB,IAA2C,CAChF,IAAM,EAAO,EAAK,KAAK,KAAK,EACtB,EAAO,EAAe,CAAI,EAC1B,EAAO,GAAM,UAAU,MAAM,KAAK,EAAE,OAAO,OAAO,GAAK,CAAC,EACxD,EAAM,EAAO,IAAI,EAAK,OAAS,GAIrC,GAFA,EAAc,EAAM,MAAM,EAEtB,IAAQ,QAEV,OADA,EAAM,CAAK,EACJ,GAGT,GAAI,IAAQ,cAAe,CACzB,IAAM,EAAO,EAAe,EAAK,EAAE,EACnC,GAAI,CAAC,EAEH,OADA,EAAK,EAAM,OAAQ,2BAA2B,EAAY,KAAK,IAAI,GAAG,EAC/D,GAIT,OADA,EAAe,EAAO,CAAI,EACnB,GAGT,GAAI,IAAQ,QAAS,CACnB,IAAM,EAAO,EAAS,EAAK,EAAE,EAC7B,GAAI,CAAC,EAEH,OADA,EAAK,EAAM,OAAQ,qBAAqB,EAAM,KAAK,IAAI,GAAG,EACnD,GAIT,OADA,GAAS,EAAO,CAAI,EACb,GAGT,GAAI,IAAQ,OAAQ,CAClB,IAAM,GAAQ,EAAK,IAAM,IAAI,YAAY,EACnC,EAAO,EAAK,MAAM,CAAC,EAAE,KAAK,GAAG,EACnC,GAAI,CAAC,EAEH,OADA,EAAK,EAAM,OAAQ,gBAAgB,EAAM,KAAK,IAAI,GAAG,EAC9C,GAIT,GADW,MAAM,GAAQ,EAAO,EAAM,EAAM,CAAM,EAEhD,MAAO,GAIT,OADA,EAAK,EAAM,OAAQ,iBAAiB,YAAe,EAAM,KAAK,IAAI,GAAG,EAC9D,GAGT,MAAO,IA4DP,WAzDiB,CAAC,IAAoC,CACtD,IAAM,EAAO,EAAM,MAAM,IAAI,EAAM,SAAS,EAC5C,GAAI,CAAC,GAAQ,CAAC,EAAM,MAClB,MAAO,GAMT,GAHA,EAAM,MAAM,OAAO,EAAM,SAAS,EAClC,EAAa,CAAK,EAEd,EAAM,QAAU,SAElB,OADA,EAAS,EAAO,EAAK,IAAK,EAAM,SAAW,qBAAqB,EACzD,GAIT,OADA,EAAS,EAAO,EAAK,IAAK,EAAK,IAAI,EAC5B,IA2CP,UAxCgB,CAAC,IAA8B,CAC/C,IAAM,EAAO,EAAM,MAAM,IAAI,EAAM,MAAM,EACzC,GAAI,CAAC,GAAQ,EAAM,YAAc,EAAK,QAAQ,UAAW,MAAO,GAGhE,GAFA,EAAM,MAAM,OAAO,EAAM,MAAM,EAC/B,EAAa,CAAK,EACd,EAAK,OAAS,WAWhB,OAVA,EAAS,EAAO,EAAK,IAAK,CACxB,OAAQ,GACR,SAAU,CACR,QAAS,EAAK,QAAQ,OAAO,IAAI,CAAC,IAAU,CAC1C,IAAM,EAAQ,EAAM,OAAO,EAAM,KACjC,GAAI,IAAU,OAAW,MAAO,CAAC,EACjC,OAAO,MAAM,QAAQ,CAAK,EAAI,CAAC,GAAG,CAAK,EAAI,CAAC,OAAO,CAAK,CAAC,EAC1D,CACH,CACF,CAAC,EACM,GAQT,OANA,EAAS,EAAO,EAAK,IAAK,CACxB,OAAQ,mBAAmB,OAAO,QAAQ,EAAM,MAAM,EACnD,IAAI,EAAE,EAAK,KAAW,GAAG,KAAO,MAAM,QAAQ,CAAK,EAAI,EAAM,KAAK,IAAI,EAAI,OAAO,CAAK,GAAG,EACzF,KAAK,IAAI;AAAA,EACZ,SAAU,CAAE,OAAQ,EAAM,MAAO,CACnC,CAAC,EACM,IAiBP,WAdiB,CAAC,IAA+B,CACjD,IAAM,EAAO,EAAM,MAAM,IAAI,EAAM,MAAM,EACzC,GAAI,CAAC,GAAQ,EAAM,YAAc,EAAK,QAAQ,UAAW,MAAO,GAIhE,OAHA,EAAM,MAAM,OAAO,EAAM,MAAM,EAC/B,EAAa,CAAK,EAClB,EAAS,EAAO,EAAK,IAAK,gBAAgB,EACnC,GAST", | ||
| "debugId": "CC20C7612FB12A4364756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/open-responses-continuation.ts", "../ai/src/protocols/open-responses-channel.ts", "../ai/src/protocols/utils/responses-hosted-tools.ts"], | ||
| "sourcesContent": [ | ||
| "import { AIError, TransportReason } from \"../schema/index.js\"\nimport type { ChannelCheckpoint, ChannelObservation, WebSocketChannelDriver } from \"../route/transport/index.js\"\nimport { Effect, Option, Schema } from \"effect\"\nimport * as ProviderShared from \"./shared.js\"\nimport { OpenResponses } from \"./open-responses.js\"\n\nconst PROTOCOL = \"open-responses.websocket.v1\"\nconst VERSION = 1\nconst decodeEvent = Schema.decodeUnknownEffect(OpenResponses.protocol.stream.event)\n\ninterface CheckpointValue {\n readonly version: typeof VERSION\n readonly responseID: string\n readonly request: Readonly<Record<string, unknown>>\n readonly output: ReadonlyArray<unknown>\n}\n\nexport interface DriverInput {\n readonly id: string\n readonly name: string\n readonly request: Readonly<Record<string, unknown>>\n readonly message: string\n readonly base: WebSocketChannelDriver\n}\n\nconst checkpointValue = (checkpoint: ChannelCheckpoint | undefined): CheckpointValue | undefined => {\n if (checkpoint?.protocol !== PROTOCOL || !ProviderShared.isRecord(checkpoint.value)) return undefined\n if (checkpoint.value.version !== VERSION) return undefined\n if (typeof checkpoint.value.responseID !== \"string\" || checkpoint.value.responseID.trim().length === 0)\n return undefined\n if (!ProviderShared.isRecord(checkpoint.value.request) || !Array.isArray(checkpoint.value.output)) return undefined\n return {\n version: VERSION,\n responseID: checkpoint.value.responseID,\n request: checkpoint.value.request,\n output: checkpoint.value.output,\n }\n}\n\nconst canonical = (value: unknown): string => {\n if (value === undefined) return \"undefined\"\n if (Array.isArray(value)) return `[${value.map(canonical).join(\",\")}]`\n if (!ProviderShared.isRecord(value)) return ProviderShared.encodeJson(value)\n return `{${Object.keys(value)\n .sort()\n .map((key) => `${ProviderShared.encodeJson(key)}:${canonical(value[key])}`)\n .join(\",\")}}`\n}\n\nconst json = (value: unknown) => {\n if (typeof value !== \"string\") return value\n return Option.getOrElse(Schema.decodeUnknownOption(ProviderShared.Json)(value), () => value)\n}\n\nconst comparable = (value: unknown) => {\n if (!ProviderShared.isRecord(value)) return value\n if (value.type === \"message\" && value.role === \"assistant\")\n return {\n role: \"assistant\",\n content: value.content,\n ...(value.phase === undefined ? {} : { phase: value.phase }),\n }\n if (value.type === \"function_call\")\n return {\n type: value.type,\n call_id: value.call_id,\n name: value.name,\n arguments: json(value.arguments),\n }\n if (value.type === \"reasoning\")\n return {\n type: value.type,\n summary: value.summary,\n encrypted_content: value.encrypted_content,\n }\n return value\n}\n\nconst invariant = (request: Readonly<Record<string, unknown>>) => {\n const { type: _type, input: _input, previous_response_id: _previousResponseID, ...rest } = request\n return rest\n}\n\nconst incremental = (\n request: Readonly<Record<string, unknown>>,\n checkpoint: CheckpointValue,\n): ReadonlyArray<unknown> | undefined => {\n const input = request.input\n const previousInput = checkpoint.request.input\n if (!Array.isArray(input) || !Array.isArray(previousInput)) return undefined\n if (canonical(invariant(request)) !== canonical(invariant(checkpoint.request))) return undefined\n const baseline = [...previousInput, ...checkpoint.output]\n if (input.length <= baseline.length) return undefined\n if (!baseline.every((item, index) => canonical(comparable(item)) === canonical(comparable(input[index]))))\n return undefined\n return input.slice(baseline.length)\n}\n\nconst code = (event: OpenResponses.Event) => event.code || event.error?.code || event.response?.error?.code || undefined\n\nconst rejected = (\n input: DriverInput,\n observation: Extract<ChannelObservation, { readonly type: \"provider-failure\" }>,\n recovery: \"retry-full\" | \"rotate-and-retry-full\",\n): ChannelObservation => ({\n type: \"rejected\",\n recovery,\n error: new AIError({\n module: input.id,\n method: \"stream\",\n reason: new TransportReason({\n message: observation.error.message,\n transport: \"websocket\",\n operation: \"read\",\n phase: \"receive\",\n delivery: \"rejected\",\n recovery,\n }),\n }),\n})\n\nexport const driver = (input: DriverInput): WebSocketChannelDriver => {\n const { previous_response_id: _previousResponseID, ...request } = input.request\n let output: unknown[] = []\n return {\n create: (checkpoint) =>\n Effect.sync(() => {\n output = []\n const previous = checkpointValue(checkpoint)\n const delta = previous ? incremental(request, previous) : undefined\n if (!previous || !delta) return { message: ProviderShared.encodeJson(request), mode: \"full\" as const }\n return {\n message: ProviderShared.encodeJson({ ...request, input: delta, previous_response_id: previous.responseID }),\n mode: \"incremental\" as const,\n }\n }),\n observe: (create, frame) =>\n Effect.gen(function* () {\n const event = yield* decodeEvent(frame).pipe(\n Effect.mapError(() => ProviderShared.eventError(input.id, `Invalid ${input.name} WebSocket event`, frame)),\n )\n const observation = yield* input.base.observe(create, frame)\n if (event.type === \"response.output_item.done\" && event.item) output.push(event.item)\n if (observation.type === \"provider-failure\") {\n const rejection = code(event)\n if (rejection === \"previous_response_not_found\") return rejected(input, observation, \"retry-full\")\n if (rejection === \"websocket_connection_limit_reached\")\n return rejected(input, observation, \"rotate-and-retry-full\")\n }\n if (observation.type !== \"completed\") return observation\n const responseID = event.response?.id\n if (!responseID || responseID.trim().length === 0) return observation\n return {\n ...observation,\n checkpoint: {\n protocol: PROTOCOL,\n value: {\n version: VERSION,\n responseID,\n request,\n output: event.response?.output ? [...event.response.output] : output.slice(),\n } satisfies CheckpointValue,\n },\n }\n }),\n }\n}\n\nexport const OpenResponsesContinuation = { driver } as const\n", | ||
| "import { Effect, Schema, Stream } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Framing } from \"../route/framing.js\"\nimport {\n HttpTransport,\n WebSocketTransport,\n type Transport,\n type WebSocketChannelDriver,\n type WebSocketChannelExchange,\n} from \"../route/transport/index.js\"\nimport * as ProviderShared from \"./shared.js\"\nimport { OpenResponses } from \"./open-responses.js\"\nimport { OpenResponsesContinuation } from \"./open-responses-continuation.js\"\n\nconst WebSocketResponseCreate = Schema.StructWithRest(Schema.Struct({ type: Schema.tag(\"response.create\") }), [\n Schema.Record(Schema.String, Schema.Unknown),\n])\nconst decodeMessage = ProviderShared.validateWith(Schema.decodeUnknownEffect(WebSocketResponseCreate))\nconst encodeMessage = Schema.encodeSync(Schema.fromJsonString(WebSocketResponseCreate))\nconst decodeEvent = Schema.decodeUnknownEffect(OpenResponses.protocol.stream.event)\n\nexport interface Options {\n readonly id: string\n readonly name: string\n readonly rotateAfterMs?: number\n readonly enabled?: (url: string) => boolean\n readonly url?: (url: string) => string\n readonly headers?: (headers: Headers.Headers) => Headers.Headers\n}\n\nexport interface Prepared {\n readonly http: HttpTransport.HttpPrepared<string>\n readonly channel?: {\n readonly url: string\n readonly headers: Headers.Headers\n readonly rotateAfterMs?: number\n readonly driver: WebSocketChannelDriver\n }\n}\n\nconst message = (body: unknown) =>\n Effect.gen(function* () {\n if (!ProviderShared.isRecord(body))\n return yield* ProviderShared.invalidRequest(\"Open Responses WebSocket body must be a JSON object\")\n const { stream: _stream, stream_options: _streamOptions, background: _background, ...request } = body\n const decoded = yield* decodeMessage({ ...request, type: \"response.create\" })\n return { request: decoded, message: encodeMessage(decoded) }\n })\n\nconst driver = (options: Options, body: string): WebSocketChannelDriver => {\n let responseID: string | undefined\n let terminal = false\n return {\n create: () =>\n Effect.sync(() => {\n responseID = undefined\n terminal = false\n return { message: body, mode: \"full\" }\n }),\n observe: (_create, frame) =>\n Effect.gen(function* () {\n const event = yield* decodeEvent(frame).pipe(\n Effect.mapError(() =>\n ProviderShared.eventError(options.id, `Invalid ${options.name} WebSocket event`, frame),\n ),\n )\n if (terminal)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted ${event.type} after a terminal event`,\n frame,\n )\n if (event.type === \"error\") {\n terminal = true\n yield* OpenResponses.decodeKnownErrorEvent(event).pipe(\n Effect.mapError(() =>\n ProviderShared.eventError(options.id, `${options.name} returned a malformed error event`, frame),\n ),\n )\n return {\n type: \"provider-failure\",\n error: OpenResponses.providerFailure(options.id, event, `${options.name} stream error`),\n }\n }\n if (event.type === \"response.failed\") {\n terminal = true\n if (responseID && event.response?.id && event.response.id !== responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response ID changed during execution`,\n frame,\n )\n return {\n type: \"provider-failure\",\n error: OpenResponses.providerFailure(options.id, event, `${options.name} response failed`),\n }\n }\n if (event.type === \"response.created\") {\n const created = event.response?.id\n if (responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted duplicate response.created`,\n frame,\n )\n if (!created)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response.created is missing response.id`,\n frame,\n )\n responseID = created\n return { type: \"frame\", frame }\n }\n // Keepalives carry no response state and may arrive before response.created.\n if (event.type === \"keepalive\") return { type: \"frame\", frame }\n if (!responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} emitted ${event.type} before response.created`,\n frame,\n )\n if (event.response?.id && event.response.id !== responseID)\n return yield* ProviderShared.eventError(\n options.id,\n `${options.name} response ID changed during execution`,\n frame,\n )\n if (event.type === \"response.completed\") {\n terminal = true\n return { type: \"completed\", frame }\n }\n if (event.type === \"response.incomplete\") {\n terminal = true\n return { type: \"incomplete\", frame }\n }\n return { type: \"frame\", frame }\n }),\n }\n}\n\nexport const transport = <Body>(options: Options): Transport<Body, Prepared, string> => {\n const http = HttpTransport.sseJson.with<Body>()\n return {\n id: http.id,\n prepare: (input) =>\n Effect.gen(function* () {\n const parts = yield* HttpTransport.jsonRequestParts(input)\n const headers = Headers.remove(options.headers?.(parts.headers) ?? parts.headers, \"content-length\")\n const channel =\n input.webSocket && (options.enabled?.(parts.url) ?? true)\n ? yield* Effect.gen(function* () {\n const create = yield* message(parts.jsonBody)\n const base = driver(options, create.message)\n return {\n url: yield* WebSocketTransport.toWebSocketUrl(options.url?.(parts.url) ?? parts.url),\n headers,\n rotateAfterMs: options.rotateAfterMs,\n driver: OpenResponsesContinuation.driver({\n id: options.id,\n name: options.name,\n request: create.request,\n message: create.message,\n base,\n }),\n }\n })\n : undefined\n return {\n http: {\n request: ProviderShared.jsonPost({ url: parts.url, body: parts.bodyText, headers: parts.headers }),\n framing: Framing.sse,\n middleware: input.middleware,\n },\n channel,\n }\n }),\n execute: (prepared, request, runtime, executeOptions) => {\n if (!executeOptions?.webSocket || !prepared.channel) return http.execute(prepared.http, request, runtime)\n const exchange: WebSocketChannelExchange = {\n id: request.id ?? \"request\",\n connect: {\n url: prepared.channel.url,\n headers: prepared.channel.headers,\n rotateAfterMs: prepared.channel.rotateAfterMs,\n },\n fallback: () =>\n Stream.unwrap(\n http.execute(prepared.http, request, runtime).pipe(Effect.map((execution) => execution.frames)),\n ),\n driver: prepared.channel.driver,\n }\n return executeOptions.webSocket.execute(exchange)\n },\n }\n}\n\nexport const OpenResponsesChannel = { transport } as const\n", | ||
| "import { Effect } from \"effect\"\nimport { LLMEvent, type AIError, type ToolResultPart } from \"../../schema/index.js\"\nimport { OpenResponses } from \"../open-responses.js\"\nimport { Lifecycle } from \"./lifecycle.js\"\n\nexport type Item = OpenResponses.StreamItem & {\n readonly id: string\n readonly status?: string\n readonly action?: unknown\n readonly queries?: unknown\n readonly results?: unknown\n readonly code?: string\n readonly container_id?: string\n readonly outputs?: unknown\n readonly server_label?: string\n readonly output?: unknown\n readonly result?: string\n readonly output_format?: \"png\" | \"jpeg\" | \"webp\"\n readonly error?: unknown\n}\n\nexport interface Definition {\n readonly name: string\n readonly input: (item: Item) => unknown\n readonly result?: (item: Item) => Effect.Effect<ToolResultPart[\"result\"], AIError>\n}\n\nexport type Definitions = Readonly<Record<string, Definition>>\n\nexport const isItem = <Tools extends Definitions>(item: OpenResponses.StreamItem, tools: Tools): item is Item =>\n item.type in tools && typeof item.id === \"string\" && item.id.length > 0\n\nexport const onDone: (\n state: OpenResponses.ParserState,\n item: Item,\n tools: Definitions,\n) => Effect.Effect<OpenResponses.StepResult, AIError> = Effect.fn(\"ResponsesHostedTools.onDone\")(function* (\n state,\n item,\n tools,\n) {\n const tool = tools[item.type]\n if (!tool) return [state, []] satisfies OpenResponses.StepResult\n const providerMetadata = OpenResponses.providerMetadata(state, { itemId: item.id })\n const events: LLMEvent[] = []\n const lifecycle = Lifecycle.stepStart(state.lifecycle, events)\n events.push(\n LLMEvent.toolCall({\n id: item.id,\n name: tool.name,\n input: tool.input(item),\n providerExecuted: true,\n providerMetadata,\n }),\n LLMEvent.toolResult({\n id: item.id,\n name: tool.name,\n result: tool.result\n ? yield* tool.result(item)\n : item.error !== undefined && item.error !== null\n ? { type: \"error\", value: item.error }\n : { type: \"json\", value: item },\n providerExecuted: true,\n providerMetadata,\n }),\n )\n return [{ ...state, lifecycle }, events] satisfies OpenResponses.StepResult\n})\n\nexport * as ResponsesHostedTools from \"./responses-hosted-tools.js\"\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "377421E64DF920A664756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/bedrock-auth.ts"], | ||
| "sourcesContent": [ | ||
| "import { AwsV4Signer } from \"aws4fetch\"\nimport { Effect } from \"effect\"\nimport { Headers } from \"effect/unstable/http\"\nimport { Auth, type AuthInput } from \"../../route/auth.js\"\nimport { ProviderShared } from \"../shared.js\"\n\n/**\n * AWS credentials for SigV4 signing. Bedrock also supports Bearer API key auth,\n * which provider facades configure as route auth instead of SigV4. STS-vended\n * credentials should be refreshed by the consumer (rebuild the model) before\n * they expire; the route does not refresh.\n */\nexport interface Credentials {\n readonly region: string\n readonly accessKeyId: string\n readonly secretAccessKey: string\n readonly sessionToken?: string\n}\n\nconst signRequest = (input: {\n readonly url: string\n readonly body: string\n readonly headers: Headers.Headers\n readonly credentials: Credentials\n readonly service: string\n readonly name: string\n}) =>\n Effect.tryPromise({\n try: async () => {\n const signed = await new AwsV4Signer({\n url: input.url,\n method: \"POST\",\n headers: Object.entries(input.headers),\n body: input.body,\n region: input.credentials.region,\n accessKeyId: input.credentials.accessKeyId,\n secretAccessKey: input.credentials.secretAccessKey,\n sessionToken: input.credentials.sessionToken,\n service: input.service,\n }).sign()\n return Object.fromEntries(signed.headers.entries())\n },\n catch: (error) =>\n ProviderShared.invalidRequest(\n `${input.name} SigV4 signing failed: ${error instanceof Error ? error.message : String(error)}`,\n ),\n })\n\n/** Sign the exact JSON bytes with SigV4 using credentials configured on the route. */\nexport const sigV4 = (\n credentials: Credentials | undefined,\n options: { readonly service?: string; readonly name?: string } = {},\n) =>\n Auth.custom((input: AuthInput) => {\n return Effect.gen(function* () {\n if (!credentials) {\n return yield* ProviderShared.invalidRequest(\n `${options.name ?? \"Bedrock Converse\"} requires either route bearer auth or AWS credentials configured on the route`,\n )\n }\n const headersForSigning = Headers.set(input.headers, \"content-type\", \"application/json\")\n const signed = yield* signRequest({\n url: input.url,\n body: input.body,\n headers: headersForSigning,\n credentials,\n service: options.service ?? \"bedrock\",\n name: options.name ?? \"Bedrock Converse\",\n })\n return Headers.setAll(headersForSigning, signed)\n })\n })\n\n/** Bedrock route auth defaults to SigV4 and expects credentials from route configuration. */\nexport const auth = sigV4(undefined)\n\nexport * as BedrockAuth from \"./bedrock-auth.js\"\n" | ||
| ], | ||
| "mappings": ";qUAmBA,IAAM,EAAc,CAAC,IAQnB,EAAO,WAAW,CAChB,IAAK,SAAY,CACf,IAAM,EAAS,MAAM,IAAI,EAAY,CACnC,IAAK,EAAM,IACX,OAAQ,OACR,QAAS,OAAO,QAAQ,EAAM,OAAO,EACrC,KAAM,EAAM,KACZ,OAAQ,EAAM,YAAY,OAC1B,YAAa,EAAM,YAAY,YAC/B,gBAAiB,EAAM,YAAY,gBACnC,aAAc,EAAM,YAAY,aAChC,QAAS,EAAM,OACjB,CAAC,EAAE,KAAK,EACR,OAAO,OAAO,YAAY,EAAO,QAAQ,QAAQ,CAAC,GAEpD,MAAO,CAAC,IACN,EAAe,eACb,GAAG,EAAM,8BAA8B,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAC9F,CACJ,CAAC,EAGU,EAAQ,CACnB,EACA,EAAiE,CAAC,IAElE,EAAK,OAAO,CAAC,IACJ,EAAO,IAAI,SAAU,EAAG,CAC7B,GAAI,CAAC,EACH,OAAO,MAAO,EAAe,eAC3B,GAAG,EAAQ,MAAQ,iGACrB,EAEF,IAAM,EAAoB,EAAQ,IAAI,EAAM,QAAS,eAAgB,kBAAkB,EACjF,EAAS,MAAO,EAAY,CAChC,IAAK,EAAM,IACX,KAAM,EAAM,KACZ,QAAS,EACT,cACA,QAAS,EAAQ,SAAW,UAC5B,KAAM,EAAQ,MAAQ,kBACxB,CAAC,EACD,OAAO,EAAQ,OAAO,EAAmB,CAAM,EAChD,CACF,EAGU,EAAO,EAAM,MAAS", | ||
| "debugId": "16FCCF4FC5F8C38F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "B4F6C1F7B20CAFBE64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/mcp/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect } from \"effect\"\nimport { OpenCode, type McpServer } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.mcp.commands.list,\n Effect.fn(\"cli.mcp.list\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.mcp.list({ location: { directory: process.cwd() } }))\n const servers = response.data.toSorted((a, b) => a.name.localeCompare(b.name))\n if (servers.length === 0) {\n process.stdout.write(\"No MCP servers configured\" + EOL)\n return\n }\n const width = Math.max(...servers.map((server) => server.name.length))\n const lines = servers.map(\n (server) => `${icon(server.status)} ${server.name.padEnd(width)} ${describe(server.status)}`,\n )\n process.stdout.write(lines.join(EOL) + EOL)\n }),\n)\n\nfunction icon(status: McpServer[\"status\"]) {\n switch (status.status) {\n case \"connected\":\n return \"✓\"\n case \"needs_auth\":\n return \"⚠\"\n case \"failed\":\n return \"✗\"\n default:\n return \"○\"\n }\n}\n\nfunction describe(status: McpServer[\"status\"]) {\n switch (status.status) {\n case \"needs_auth\":\n return \"needs authentication\"\n case \"failed\":\n return `failed: ${status.error}`\n default:\n return status.status\n }\n}\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,IAAI,SAAS,KAC/B,EAAO,GAAG,cAAc,EAAE,SAAU,EAAG,CACrC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EAEpF,GADW,MAAO,EAAO,QAAQ,IAAM,EAAO,IAAI,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,GAC/E,KAAK,SAAS,CAAC,EAAG,IAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,EAC7E,GAAI,EAAQ,SAAW,EAAG,CACxB,QAAQ,OAAO,MAAM,4BAA8B,CAAG,EACtD,OAEF,IAAM,EAAQ,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAW,EAAO,KAAK,MAAM,CAAC,EAC/D,EAAQ,EAAQ,IACpB,CAAC,IAAW,GAAG,EAAK,EAAO,MAAM,KAAK,EAAO,KAAK,OAAO,CAAK,MAAM,EAAS,EAAO,MAAM,GAC5F,EACA,QAAQ,OAAO,MAAM,EAAM,KAAK,CAAG,EAAI,CAAG,EAC3C,CACH,EAEA,SAAS,CAAI,CAAC,EAA6B,CACzC,OAAQ,EAAO,YACR,YACH,MAAO,aACJ,aACH,MAAO,aACJ,SACH,MAAO,iBAEP,MAAO,UAIb,SAAS,CAAQ,CAAC,EAA6B,CAC7C,OAAQ,EAAO,YACR,aACH,MAAO,2BACJ,SACH,MAAO,WAAW,EAAO,gBAEzB,OAAO,EAAO", | ||
| "debugId": "05DCE6464E3C52B164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-chat.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAICompatibleChat } from \"../protocols/openai-compatible-chat.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\nimport type { OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst route = OpenAICompatibleChat.route.with({\n id: \"google-vertex-chat\",\n provider: id,\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined) throw new Error(\"Google Vertex Chat does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenAIProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Chat does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";ykBAOO,IAAM,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAAqB,MAAM,KAAK,CAC5C,GAAI,qBACJ,SAAU,CACZ,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OAAW,MAAU,MAAM,8CAA8C,EACnH,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,iDAAiD,EAAmB,eAAe,CAAO,eAAe,qBAC7G,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAC7F,WACF,GAQK,IAAM,EAAmF,CAAC,EAAS,IAAa,CACrH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,8CAA8C,EACjG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "1B5C20B50BB9057A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "E5B67600595B299464756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/mcp.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Mcp from \"./mcp.js\"\n\nimport { Schema } from \"effect\"\nimport { optional, PositiveInt } from \"./schema.js\"\nimport { IntegrationID } from \"./integration-id.js\"\n\nexport class TimeoutConfig extends Schema.Class<TimeoutConfig>(\"Mcp.TimeoutConfig\")({\n startup: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to establish and initialize the MCP server.\",\n }),\n catalog: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to wait for MCP discovery requests such as tools/list and prompts/list.\",\n }),\n execution: PositiveInt.pipe(optional).annotate({\n description: \"Maximum time in milliseconds to wait for MCP tool and prompt execution.\",\n }),\n}) {}\n\nexport class LocalConfig extends Schema.Class<LocalConfig>(\"Mcp.LocalConfig\")({\n type: Schema.Literal(\"local\"),\n command: Schema.String.pipe(Schema.Array),\n cwd: Schema.String.pipe(optional).annotate({\n description: \"Working directory for the MCP server process. Relative paths resolve from the workspace directory.\",\n }),\n environment: Schema.Record(Schema.String, Schema.String).pipe(optional),\n disabled: Schema.Boolean.pipe(optional),\n codemode: Schema.Boolean.pipe(optional).annotate({\n description: \"Expose this server's tools through Code Mode. Defaults to true.\",\n }),\n timeout: TimeoutConfig.pipe(optional),\n}) {}\n\nexport class OAuthConfig extends Schema.Class<OAuthConfig>(\"Mcp.OAuthConfig\")({\n client_id: Schema.String.pipe(optional),\n client_secret: Schema.String.pipe(optional),\n scope: Schema.String.pipe(optional),\n callback_port: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 })).pipe(optional),\n redirect_uri: Schema.String.pipe(optional),\n}) {}\n\nexport class RemoteConfig extends Schema.Class<RemoteConfig>(\"Mcp.RemoteConfig\")({\n type: Schema.Literal(\"remote\"),\n url: Schema.String,\n headers: Schema.Record(Schema.String, Schema.String).pipe(optional),\n oauth: Schema.Union([OAuthConfig, Schema.Literal(false)]).pipe(optional),\n disabled: Schema.Boolean.pipe(optional),\n codemode: Schema.Boolean.pipe(optional).annotate({\n description: \"Expose this server's tools through Code Mode. Defaults to true.\",\n }),\n timeout: TimeoutConfig.pipe(optional),\n}) {}\n\nexport const ServerConfig = Schema.Union([LocalConfig, RemoteConfig]).pipe(Schema.toTaggedUnion(\"type\"))\nexport type ServerConfig = typeof ServerConfig.Type\n\nconst Connected = Schema.Struct({ status: Schema.Literal(\"connected\") }).annotate({\n identifier: \"Mcp.Status.Connected\",\n})\nconst Pending = Schema.Struct({ status: Schema.Literal(\"pending\") }).annotate({\n identifier: \"Mcp.Status.Pending\",\n})\nconst Disabled = Schema.Struct({ status: Schema.Literal(\"disabled\") }).annotate({\n identifier: \"Mcp.Status.Disabled\",\n})\nconst Failed = Schema.Struct({ status: Schema.Literal(\"failed\"), error: Schema.String }).annotate({\n identifier: \"Mcp.Status.Failed\",\n})\nconst NeedsAuth = Schema.Struct({ status: Schema.Literal(\"needs_auth\") }).annotate({\n identifier: \"Mcp.Status.NeedsAuth\",\n})\n\nexport type Status = typeof Status.Type\nexport const Status = Schema.Union([Connected, Pending, Disabled, Failed, NeedsAuth]).pipe(\n Schema.toTaggedUnion(\"status\"),\n)\n\nexport interface Server extends Schema.Schema.Type<typeof Server> {}\nexport const Server = Schema.Struct({\n name: Schema.String,\n status: Status,\n // Set for remote servers registered as OAuth integrations; lets clients act on the right integration\n // without matching by name, which could collide with provider or plugin integrations.\n integrationID: optional(IntegrationID),\n}).annotate({ identifier: \"Mcp.Server\" })\n\nexport interface Resource extends Schema.Schema.Type<typeof Resource> {}\nexport const Resource = Schema.Struct({\n server: Schema.String,\n name: Schema.String,\n uri: Schema.String,\n description: optional(Schema.String),\n mimeType: optional(Schema.String),\n}).annotate({ identifier: \"Mcp.Resource\" })\n\nexport interface ResourceTemplate extends Schema.Schema.Type<typeof ResourceTemplate> {}\nexport const ResourceTemplate = Schema.Struct({\n server: Schema.String,\n name: Schema.String,\n uriTemplate: Schema.String,\n description: optional(Schema.String),\n mimeType: optional(Schema.String),\n}).annotate({ identifier: \"Mcp.ResourceTemplate\" })\n\nexport interface ResourceCatalog extends Schema.Schema.Type<typeof ResourceCatalog> {}\nexport const ResourceCatalog = Schema.Struct({\n resources: Schema.Array(Resource),\n templates: Schema.Array(ResourceTemplate),\n}).annotate({ identifier: \"Mcp.ResourceCatalog\" })\n\nexport const ResourceContentPart = Schema.Union([\n Schema.Struct({\n type: Schema.Literal(\"text\"),\n uri: Schema.String,\n text: Schema.String,\n mimeType: optional(Schema.String),\n }),\n Schema.Struct({\n type: Schema.Literal(\"blob\"),\n uri: Schema.String,\n blob: Schema.String,\n mimeType: optional(Schema.String),\n }),\n]).pipe(Schema.toTaggedUnion(\"type\"), Schema.annotate({ identifier: \"Mcp.ResourceContentPart\" }))\nexport type ResourceContentPart = typeof ResourceContentPart.Type\n\nexport interface ResourceContent extends Schema.Schema.Type<typeof ResourceContent> {}\nexport const ResourceContent = Schema.Struct({\n server: Schema.String,\n uri: Schema.String,\n contents: Schema.Array(ResourceContentPart),\n}).annotate({ identifier: \"Mcp.ResourceContent\" })\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "647BC55F7CE8BF0D64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-env@3.972.69/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/core/config\";\nexport const ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nexport const ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nexport const ENV_SESSION = \"AWS_SESSION_TOKEN\";\nexport const ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nexport const ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nexport const ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nexport const fromEnv = (init) => async () => {\n init?.logger?.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n const credentials = {\n accessKeyId,\n secretAccessKey,\n ...(sessionToken && { sessionToken }),\n ...(expiry && { expiration: new Date(expiry) }),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS\", \"g\");\n return credentials;\n }\n throw new CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init?.logger });\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eACA,WACa,EAAU,oBACV,EAAa,wBACb,EAAc,oBACd,EAAiB,4BACjB,EAAuB,uBACvB,EAAiB,iBACjB,EAAU,CAAC,IAAS,SAAY,CACzC,GAAM,QAAQ,MAAM,4CAA4C,EAChE,IAAM,EAAc,QAAQ,IAAI,GAC1B,EAAkB,QAAQ,IAAI,GAC9B,EAAe,QAAQ,IAAI,GAC3B,EAAS,QAAQ,IAAI,GACrB,EAAkB,QAAQ,IAAI,GAC9B,EAAY,QAAQ,IAAI,GAC9B,GAAI,GAAe,EAAiB,CAChC,IAAM,EAAc,CAChB,cACA,qBACI,GAAgB,CAAE,cAAa,KAC/B,GAAU,CAAE,WAAY,IAAI,KAAK,CAAM,CAAE,KACzC,GAAmB,CAAE,iBAAgB,KACrC,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,uBAAwB,GAAG,EACtD,EAEX,MAAM,IAAI,2BAAyB,mDAAoD,CAAE,OAAQ,GAAM,MAAO,CAAC", | ||
| "debugId": "06EBA5A2B1B5717A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"signin\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSigninHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateOAuth2Token\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"signin\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst s = \"ref\";\nconst a = -1, b = false, c = true, d = \"isSet\", e = \"booleanEquals\", f = \"coalesce\", g = \"PartitionResult\", h = \"stringEquals\", i = \"getAttr\", j = \"https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}\", k = { [s]: \"Endpoint\" }, l = { \"fn\": i, \"argv\": [{ [s]: g }, \"name\"] }, m = { [s]: \"Region\" }, n = { [s]: g }, o = { \"authSchemes\": [{ \"name\": \"sigv4\", \"signingName\": \"signin\", \"signingRegion\": \"{Region}\" }] }, p = {}, q = [m];\nconst _data = {\n conditions: [\n [d, q],\n [e, [{ fn: f, argv: [{ [s]: \"IsControlPlane\" }, b] }, c]],\n [d, [k]],\n [\"aws.partition\", q, g],\n [e, [{ [s]: \"UseFIPS\" }, c]],\n [h, [l, \"aws\"]],\n [e, [{ fn: f, argv: [{ [s]: \"IsOAuthEndpoint\" }, b] }, c]],\n [e, [{ [s]: \"UseDualStack\" }, c]],\n [h, [l, \"aws-cn\"]],\n [h, [m, \"us-gov-west-1\"]],\n [h, [l, \"aws-us-gov\"]],\n [e, [{ fn: i, argv: [n, \"supportsFIPS\"] }, c]],\n [h, [l, \"aws-iso\"]],\n [h, [l, \"aws-iso-b\"]],\n [h, [l, \"aws-iso-f\"]],\n [h, [l, \"aws-iso-e\"]],\n [h, [l, \"aws-eusc\"]],\n [e, [{ fn: i, argv: [n, \"supportsDualStack\"] }, c]]\n ],\n results: [\n [a],\n [\"https://signin.{Region}.api.aws\", o],\n [\"https://signin.{Region}.api.amazonwebservices.com.cn\", o],\n [j, o],\n [a, \"FIPS endpoints are not supported for OAuth operations. Disable FIPS or use a non-OAuth operation.\"],\n [\"https://{Region}.oauth.signin.aws\", o],\n [\"https://{Region}.signin.aws.amazon.com\", p],\n [\"https://{Region}.signin.amazonaws.cn\", p],\n [\"https://{Region}.signin.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin.c2shome.ic.gov\", p],\n [\"https://{Region}.signin.sc2shome.sgov.gov\", p],\n [\"https://{Region}.signin.csphome.hci.ic.gov\", p],\n [\"https://{Region}.signin.csphome.adc-e.uk\", p],\n [\"https://{Region}.signin.amazonaws-eusc.eu\", p],\n [\"https://signin-fips.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin-fips.amazonaws-us-gov.com\", p],\n [\"https://{Region}.signin.{PartitionResult#dnsSuffix}\", p],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [k, p],\n [\"https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", p],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://signin-fips.{Region}.{PartitionResult#dnsSuffix}\", p],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [j, p],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://signin.{Region}.{PartitionResult#dnsSuffix}\", p],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 6, 3,\n 2, 36, 4,\n 4, 5, r + 27,\n 6, r + 4, r + 27,\n 1, 29, 7,\n 2, 36, 8,\n 3, 9, 31,\n 4, 22, 10,\n 5, 19, 11,\n 7, 21, 12,\n 8, r + 7, 13,\n 10, r + 8, 14,\n 12, r + 9, 15,\n 13, r + 10, 16,\n 14, r + 11, 17,\n 15, r + 12, 18,\n 16, r + 13, r + 16,\n 6, r + 5, 20,\n 7, 21, r + 6,\n 17, r + 24, r + 25,\n 6, r + 4, 23,\n 7, 27, 24,\n 9, r + 14, 25,\n 10, r + 15, 26,\n 11, r + 22, r + 23,\n 11, 28, r + 21,\n 17, r + 20, r + 21,\n 2, 35, 30,\n 3, 39, 31,\n 4, 32, r + 27,\n 6, r + 4, 33,\n 7, r + 27, 34,\n 9, r + 14, r + 27,\n 3, 39, 36,\n 4, 38, 37,\n 7, r + 18, r + 19,\n 6, r + 4, r + 17,\n 5, r + 1, 40,\n 8, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"IsControlPlane\", \"IsOAuthEndpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SigninServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SigninServiceException.prototype);\n }\n}\n\nclass AccessDeniedException extends SigninServiceException {\n name = \"AccessDeniedException\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AccessDeniedException.prototype);\n this.error = opts.error;\n }\n}\nclass InternalServerException extends SigninServiceException {\n name = \"InternalServerException\";\n $fault = \"server\";\n error;\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalServerException.prototype);\n this.error = opts.error;\n }\n}\nclass TooManyRequestsError extends SigninServiceException {\n name = \"TooManyRequestsError\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"TooManyRequestsError\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsError.prototype);\n this.error = opts.error;\n }\n}\nclass ValidationException extends SigninServiceException {\n name = \"ValidationException\";\n $fault = \"client\";\n error;\n constructor(opts) {\n super({\n name: \"ValidationException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ValidationException.prototype);\n this.error = opts.error;\n }\n}\n\nconst _ADE = \"AccessDeniedException\";\nconst _AT = \"AccessToken\";\nconst _COAT = \"CreateOAuth2Token\";\nconst _COATR = \"CreateOAuth2TokenRequest\";\nconst _COATRB = \"CreateOAuth2TokenRequestBody\";\nconst _COATRBr = \"CreateOAuth2TokenResponseBody\";\nconst _COATRr = \"CreateOAuth2TokenResponse\";\nconst _COATWIAM = \"CreateOAuth2TokenWithIAM\";\nconst _COATWIAMR = \"CreateOAuth2TokenWithIAMRequest\";\nconst _COATWIAMRr = \"CreateOAuth2TokenWithIAMResponse\";\nconst _ISE = \"InternalServerException\";\nconst _OAAT = \"OAuthAccessToken\";\nconst _RT = \"RefreshToken\";\nconst _TMRE = \"TooManyRequestsError\";\nconst _VE = \"ValidationException\";\nconst _aKI = \"accessKeyId\";\nconst _aT = \"accessToken\";\nconst _at = \"access_token\";\nconst _c = \"client\";\nconst _cI = \"clientId\";\nconst _cV = \"codeVerifier\";\nconst _co = \"code\";\nconst _e = \"error\";\nconst _eI = \"expiresIn\";\nconst _ei = \"expires_in\";\nconst _gT = \"grantType\";\nconst _gt = \"grant_type\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _iT = \"idToken\";\nconst _jN = \"jsonName\";\nconst _m = \"message\";\nconst _r = \"resource\";\nconst _rT = \"refreshToken\";\nconst _rU = \"redirectUri\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.signin\";\nconst _sAK = \"secretAccessKey\";\nconst _sT = \"sessionToken\";\nconst _se = \"server\";\nconst _tI = \"tokenInput\";\nconst _tO = \"tokenOutput\";\nconst _tT = \"tokenType\";\nconst _tt = \"token_type\";\nconst n0 = \"com.amazonaws.signin\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SigninServiceException$ = [-3, _s, \"SigninServiceException\", 0, [], []];\n_s_registry.registerError(SigninServiceException$, SigninServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar AccessDeniedException$ = [-3, n0, _ADE,\n { [_e]: _c },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(AccessDeniedException$, AccessDeniedException);\nvar InternalServerException$ = [-3, n0, _ISE,\n { [_e]: _se, [_hE]: 500 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(InternalServerException$, InternalServerException);\nvar TooManyRequestsError$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(TooManyRequestsError$, TooManyRequestsError);\nvar ValidationException$ = [-3, n0, _VE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _m],\n [0, 0], 2\n];\nn0_registry.registerError(ValidationException$, ValidationException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar OAuthAccessToken = [0, n0, _OAAT, 8, 0];\nvar RefreshToken = [0, n0, _RT, 8, 0];\nvar AccessToken$ = [3, n0, _AT,\n 8,\n [_aKI, _sAK, _sT],\n [[0, { [_jN]: _aKI }], [0, { [_jN]: _sAK }], [0, { [_jN]: _sT }]], 3\n];\nvar CreateOAuth2TokenRequest$ = [3, n0, _COATR,\n 0,\n [_tI],\n [[() => CreateOAuth2TokenRequestBody$, 16]], 1\n];\nvar CreateOAuth2TokenRequestBody$ = [3, n0, _COATRB,\n 0,\n [_cI, _gT, _co, _rU, _cV, _rT],\n [[0, { [_jN]: _cI }], [0, { [_jN]: _gT }], 0, [0, { [_jN]: _rU }], [0, { [_jN]: _cV }], [() => RefreshToken, { [_jN]: _rT }]], 2\n];\nvar CreateOAuth2TokenResponse$ = [3, n0, _COATRr,\n 0,\n [_tO],\n [[() => CreateOAuth2TokenResponseBody$, 16]], 1\n];\nvar CreateOAuth2TokenResponseBody$ = [3, n0, _COATRBr,\n 0,\n [_aT, _tT, _eI, _rT, _iT],\n [[() => AccessToken$, { [_jN]: _aT }], [0, { [_jN]: _tT }], [1, { [_jN]: _eI }], [() => RefreshToken, { [_jN]: _rT }], [0, { [_jN]: _iT }]], 4\n];\nvar CreateOAuth2TokenWithIAMRequest$ = [3, n0, _COATWIAMR,\n 0,\n [_gT, _r],\n [[0, { [_jN]: _gt }], 0], 2\n];\nvar CreateOAuth2TokenWithIAMResponse$ = [3, n0, _COATWIAMRr,\n 0,\n [_aT, _tT, _eI],\n [[() => OAuthAccessToken, { [_jN]: _at }], [0, { [_jN]: _tt }], [1, { [_jN]: _ei }]], 3\n];\nvar CreateOAuth2Token$ = [9, n0, _COAT,\n { [_h]: [\"POST\", \"/v1/token\", 200] }, () => CreateOAuth2TokenRequest$, () => CreateOAuth2TokenResponse$\n];\nvar CreateOAuth2TokenWithIAM$ = [9, n0, _COATWIAM,\n { [_h]: [\"POST\", \"/v1/token?x-amz-client-auth-method=iam\", 200] }, () => CreateOAuth2TokenWithIAMRequest$, () => CreateOAuth2TokenWithIAMResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2023-01-01\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.signin\",\n errorTypeRegistries,\n version: \"2023-01-01\",\n serviceTarget: \"Signin\",\n },\n serviceId: config?.serviceId ?? \"Signin\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SigninClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"Signin\", \"SigninClient\", getEndpointPlugin);\nconst _ep0 = {\n IsControlPlane: { type: \"staticContextParams\", value: false },\n};\nconst _ep1 = {\n IsOAuthEndpoint: { type: \"staticContextParams\", value: true },\n};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass CreateOAuth2TokenCommand extends command(_ep0, _mw0, \"CreateOAuth2Token\", CreateOAuth2Token$) {\n}\n\nclass CreateOAuth2TokenWithIAMCommand extends command(_ep1, _mw0, \"CreateOAuth2TokenWithIAM\", CreateOAuth2TokenWithIAM$) {\n}\n\nconst commands = {\n CreateOAuth2TokenCommand,\n CreateOAuth2TokenWithIAMCommand,\n};\nclass Signin extends SigninClient {\n}\ncreateAggregatedClient(commands, Signin);\n\nconst OAuth2ErrorCode = {\n AUTHCODE_EXPIRED: \"AUTHCODE_EXPIRED\",\n CONFLICT: \"CONFLICT\",\n INSUFFICIENT_PERMISSIONS: \"INSUFFICIENT_PERMISSIONS\",\n INVALID_REQUEST: \"INVALID_REQUEST\",\n RESOURCE_NOT_FOUND: \"RESOURCE_NOT_FOUND\",\n SERVER_ERROR: \"server_error\",\n SERVICE_QUOTA_EXCEEDED: \"SERVICE_QUOTA_EXCEEDED\",\n TOKEN_EXPIRED: \"TOKEN_EXPIRED\",\n USER_CREDENTIALS_CHANGED: \"USER_CREDENTIALS_CHANGED\",\n};\n\nexports.AccessDeniedException = AccessDeniedException;\nexports.AccessDeniedException$ = AccessDeniedException$;\nexports.AccessToken$ = AccessToken$;\nexports.CreateOAuth2Token$ = CreateOAuth2Token$;\nexports.CreateOAuth2TokenCommand = CreateOAuth2TokenCommand;\nexports.CreateOAuth2TokenRequest$ = CreateOAuth2TokenRequest$;\nexports.CreateOAuth2TokenRequestBody$ = CreateOAuth2TokenRequestBody$;\nexports.CreateOAuth2TokenResponse$ = CreateOAuth2TokenResponse$;\nexports.CreateOAuth2TokenResponseBody$ = CreateOAuth2TokenResponseBody$;\nexports.CreateOAuth2TokenWithIAM$ = CreateOAuth2TokenWithIAM$;\nexports.CreateOAuth2TokenWithIAMCommand = CreateOAuth2TokenWithIAMCommand;\nexports.CreateOAuth2TokenWithIAMRequest$ = CreateOAuth2TokenWithIAMRequest$;\nexports.CreateOAuth2TokenWithIAMResponse$ = CreateOAuth2TokenWithIAMResponse$;\nexports.InternalServerException = InternalServerException;\nexports.InternalServerException$ = InternalServerException$;\nexports.OAuth2ErrorCode = OAuth2ErrorCode;\nexports.Signin = Signin;\nexports.SigninClient = SigninClient;\nexports.SigninServiceException = SigninServiceException;\nexports.SigninServiceException$ = SigninServiceException$;\nexports.TooManyRequestsError = TooManyRequestsError;\nexports.TooManyRequestsError$ = TooManyRequestsError$;\nexports.ValidationException = ValidationException;\nexports.ValidationException$ = ValidationException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "FE082B34EB90E12264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "ABE397909E581E2F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/anthropic-compatible.ts", "../ai/src/providers/anthropic.ts"], | ||
| "sourcesContent": [ | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nexport const id = ProviderID.make(\"anthropic-compatible\")\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly provider?: string\n readonly baseURL: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly apiKey?: string; readonly authToken?: never }\n | { readonly apiKey?: never; readonly authToken?: string }\n ) & {\n readonly baseURL: string\n readonly provider?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport const routes = [AnthropicMessages.route]\n\nconst auth = (input: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in input && input.auth) return input.auth\n return Auth.optional(\"apiKey\" in input ? input.apiKey : undefined, \"apiKey\").pipe(Auth.header(\"x-api-key\"))\n}\n\nexport const configure = (input: Config) => {\n if (!input.baseURL) throw new Error(\"Anthropic-compatible providers require a baseURL\")\n const provider = input.provider ?? \"anthropic-compatible\"\n const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input\n const route = AnthropicMessages.route.with({\n ...rest,\n provider,\n endpoint: { baseURL },\n auth: auth(input),\n })\n return {\n id: ProviderID.make(provider),\n model: (modelID: string | ModelID) => route.model<AnthropicMessages.ProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined && settings.authToken !== undefined)\n throw new Error(\"Anthropic-compatible apiKey cannot be combined with authToken\")\n return configure({\n ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n provider: settings.provider,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n\nexport * as AnthropicCompatible from \"./anthropic-compatible.js\"\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { AnthropicMessages } from \"../protocols/anthropic-messages.js\"\nimport { AnthropicCompatible } from \"./anthropic-compatible.js\"\n\nexport type AnthropicOptionsInput = AnthropicMessages.OptionsInput\nexport type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput\nexport type AnthropicThinkingInput = AnthropicMessages.ThinkingInput\n\nexport const id = ProviderID.make(\"anthropic\")\n\nexport const routes = [AnthropicMessages.route]\n\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nexport type Settings = ProviderPackage.Settings &\n (\n | { readonly apiKey?: string; readonly authToken?: never }\n | { readonly apiKey?: never; readonly authToken?: string }\n ) & {\n readonly baseURL?: string\n readonly providerOptions?: AnthropicMessages.ProviderOptionsInput\n }\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => {\n if (\"auth\" in options && options.auth) return options.auth\n return Auth.optional(\"apiKey\" in options ? options.apiKey : undefined, \"apiKey\")\n .orElse(Auth.config(\"ANTHROPIC_API_KEY\"))\n .pipe(Auth.header(\"x-api-key\"))\n}\n\nexport const configure = (input: Config = {}) => {\n const { apiKey: _, auth: _auth, baseURL, ...rest } = input\n const compatible = AnthropicCompatible.configure({\n ...rest,\n auth: auth(input),\n baseURL: baseURL ?? AnthropicMessages.DEFAULT_BASE_URL,\n provider: id,\n })\n return {\n id,\n model: (modelID: string | ModelID) => compatible.model(modelID),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings, AnthropicMessages.ProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined && settings.authToken !== undefined)\n throw new Error(\"Anthropic apiKey cannot be combined with authToken\")\n return configure({\n ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }),\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";8mBAWO,IAAM,EAAK,EAAW,KAAK,sBAAsB,EAmB3C,EAAS,CAAC,EAAkB,KAAK,EAExC,EAAO,CAAC,IAA0C,CACtD,GAAI,SAAU,GAAS,EAAM,KAAM,OAAO,EAAM,KAChD,OAAO,EAAK,SAAS,WAAY,EAAQ,EAAM,OAAS,OAAW,QAAQ,EAAE,KAAK,EAAK,OAAO,WAAW,CAAC,GAG/F,EAAY,CAAC,IAAkB,CAC1C,GAAI,CAAC,EAAM,QAAS,MAAU,MAAM,kDAAkD,EACtF,IAAM,EAAW,EAAM,UAAY,wBAC3B,SAAU,EAAG,UAAS,OAAQ,EAAS,KAAM,KAAU,GAAS,EAClE,EAAQ,EAAkB,MAAM,KAAK,IACtC,EACH,WACA,SAAU,CAAE,SAAQ,EACpB,KAAM,EAAK,CAAK,CAClB,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,CAAQ,EAC5B,MAAO,CAAC,IAA8B,EAAM,MAA8C,CAAE,GAAI,CAAQ,CAAC,EACzG,WACF,GAGW,EAAW,CACtB,KACA,WACF,EAEa,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,QAAa,EAAS,YAAc,OAC1D,MAAU,MAAM,+DAA+D,EACjF,OAAO,EAAU,IACX,EAAS,YAAc,OAAY,CAAE,OAAQ,EAAS,MAAO,EAAI,CAAE,KAAM,EAAK,OAAO,EAAS,SAAS,CAAE,EAC7G,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO,GC5DX,IAAM,EAAK,EAAW,KAAK,WAAW,EAEhC,EAAS,CAAC,EAAkB,KAAK,EAiBxC,EAAO,CAAC,IAA4C,CACxD,GAAI,SAAU,GAAW,EAAQ,KAAM,OAAO,EAAQ,KACtD,OAAO,EAAK,SAAS,WAAY,EAAU,EAAQ,OAAS,OAAW,QAAQ,EAC5E,OAAO,EAAK,OAAO,mBAAmB,CAAC,EACvC,KAAK,EAAK,OAAO,WAAW,CAAC,GAGrB,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAQ,OAAQ,EAAG,KAAM,EAAO,aAAY,GAAS,EAC/C,EAAa,EAAoB,UAAU,IAC5C,EACH,KAAM,EAAK,CAAK,EAChB,QAAS,GAAW,EAAkB,iBACtC,SAAU,CACZ,CAAC,EACD,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAW,MAAM,CAAO,EAC9D,WACF,GAGW,EAAW,EAAU,EACrB,EAA+F,CAC1G,EACA,IACG,CACH,GAAI,EAAS,SAAW,QAAa,EAAS,YAAc,OAC1D,MAAU,MAAM,oDAAoD,EACtE,OAAO,EAAU,IACX,EAAS,YAAc,OAAY,CAAE,OAAQ,EAAS,MAAO,EAAI,CAAE,KAAM,EAAK,OAAO,EAAS,SAAS,CAAE,EAC7G,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "425AC2C85E758C0164756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsJson1_1Protocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n case \"GetId\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst m = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = \"stringEquals\", h = { [m]: \"Endpoint\" }, i = { [m]: d }, j = { [m]: \"Region\" }, k = {}, l = [j];\nconst _data = {\n conditions: [\n [c, [h]],\n [c, l],\n [\"aws.partition\", l, d],\n [e, [{ [m]: \"UseFIPS\" }, b]],\n [e, [{ fn: f, argv: [i, \"supportsFIPS\"] }, b]],\n [e, [{ [m]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [i, \"supportsDualStack\"] }, b]],\n [g, [{ fn: f, argv: [i, \"name\"] }, \"aws\"]],\n [g, [j, \"us-east-1\"]],\n [g, [j, \"us-east-2\"]],\n [g, [j, \"us-west-1\"]],\n [g, [j, \"us-west-2\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [h, k],\n [\"https://cognito-identity-fips.us-east-1.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-east-2.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-west-1.amazonaws.com\", k],\n [\"https://cognito-identity-fips.us-west-2.amazonaws.com\", k],\n [\"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", k],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://cognito-identity.{Region}.amazonaws.com\", k],\n [\"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", k],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 17, 3,\n 1, 4, r + 16,\n 2, 5, r + 16,\n 3, 9, 6,\n 5, 7, r + 15,\n 6, 8, r + 14,\n 7, r + 12, r + 13,\n 4, 11, 10,\n 5, r + 9, r + 11,\n 5, 12, r + 10,\n 6, 13, r + 9,\n 8, r + 4, 14,\n 9, r + 5, 15,\n 10, r + 6, 16,\n 11, r + 7, r + 8,\n 3, r + 1, 18,\n 5, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass CognitoIdentityServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype);\n }\n}\n\nclass ExternalServiceException extends CognitoIdentityServiceException {\n name = \"ExternalServiceException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ExternalServiceException.prototype);\n }\n}\nclass InternalErrorException extends CognitoIdentityServiceException {\n name = \"InternalErrorException\";\n $fault = \"server\";\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalErrorException.prototype);\n }\n}\nclass InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n name = \"InvalidIdentityPoolConfigurationException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype);\n }\n}\nclass InvalidParameterException extends CognitoIdentityServiceException {\n name = \"InvalidParameterException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidParameterException.prototype);\n }\n}\nclass NotAuthorizedException extends CognitoIdentityServiceException {\n name = \"NotAuthorizedException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NotAuthorizedException.prototype);\n }\n}\nclass ResourceConflictException extends CognitoIdentityServiceException {\n name = \"ResourceConflictException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceConflictException.prototype);\n }\n}\nclass ResourceNotFoundException extends CognitoIdentityServiceException {\n name = \"ResourceNotFoundException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nclass TooManyRequestsException extends CognitoIdentityServiceException {\n name = \"TooManyRequestsException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n }\n}\nclass LimitExceededException extends CognitoIdentityServiceException {\n name = \"LimitExceededException\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, LimitExceededException.prototype);\n }\n}\n\nconst _AI = \"AccountId\";\nconst _AKI = \"AccessKeyId\";\nconst _C = \"Credentials\";\nconst _CRA = \"CustomRoleArn\";\nconst _E = \"Expiration\";\nconst _ESE = \"ExternalServiceException\";\nconst _GCFI = \"GetCredentialsForIdentity\";\nconst _GCFII = \"GetCredentialsForIdentityInput\";\nconst _GCFIR = \"GetCredentialsForIdentityResponse\";\nconst _GI = \"GetId\";\nconst _GII = \"GetIdInput\";\nconst _GIR = \"GetIdResponse\";\nconst _IEE = \"InternalErrorException\";\nconst _II = \"IdentityId\";\nconst _IIPCE = \"InvalidIdentityPoolConfigurationException\";\nconst _IPE = \"InvalidParameterException\";\nconst _IPI = \"IdentityPoolId\";\nconst _IPT = \"IdentityProviderToken\";\nconst _L = \"Logins\";\nconst _LEE = \"LimitExceededException\";\nconst _LM = \"LoginsMap\";\nconst _NAE = \"NotAuthorizedException\";\nconst _RCE = \"ResourceConflictException\";\nconst _RNFE = \"ResourceNotFoundException\";\nconst _SK = \"SecretKey\";\nconst _SKS = \"SecretKeyString\";\nconst _ST = \"SessionToken\";\nconst _TMRE = \"TooManyRequestsException\";\nconst _c = \"client\";\nconst _e = \"error\";\nconst _hE = \"httpError\";\nconst _m = \"message\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity\";\nconst _se = \"server\";\nconst n0 = \"com.amazonaws.cognitoidentity\";\nconst _s_registry = TypeRegistry.for(_s);\nvar CognitoIdentityServiceException$ = [-3, _s, \"CognitoIdentityServiceException\", 0, [], []];\n_s_registry.registerError(CognitoIdentityServiceException$, CognitoIdentityServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar ExternalServiceException$ = [-3, n0, _ESE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(ExternalServiceException$, ExternalServiceException);\nvar InternalErrorException$ = [-3, n0, _IEE,\n { [_e]: _se },\n [_m],\n [0]\n];\nn0_registry.registerError(InternalErrorException$, InternalErrorException);\nvar InvalidIdentityPoolConfigurationException$ = [-3, n0, _IIPCE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidIdentityPoolConfigurationException$, InvalidIdentityPoolConfigurationException);\nvar InvalidParameterException$ = [-3, n0, _IPE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(InvalidParameterException$, InvalidParameterException);\nvar LimitExceededException$ = [-3, n0, _LEE,\n { [_e]: _c, [_hE]: 400 },\n [_m],\n [0]\n];\nn0_registry.registerError(LimitExceededException$, LimitExceededException);\nvar NotAuthorizedException$ = [-3, n0, _NAE,\n { [_e]: _c, [_hE]: 403 },\n [_m],\n [0]\n];\nn0_registry.registerError(NotAuthorizedException$, NotAuthorizedException);\nvar ResourceConflictException$ = [-3, n0, _RCE,\n { [_e]: _c, [_hE]: 409 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceConflictException$, ResourceConflictException);\nvar ResourceNotFoundException$ = [-3, n0, _RNFE,\n { [_e]: _c, [_hE]: 404 },\n [_m],\n [0]\n];\nn0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException);\nvar TooManyRequestsException$ = [-3, n0, _TMRE,\n { [_e]: _c, [_hE]: 429 },\n [_m],\n [0]\n];\nn0_registry.registerError(TooManyRequestsException$, TooManyRequestsException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar IdentityProviderToken = [0, n0, _IPT, 8, 0];\nvar SecretKeyString = [0, n0, _SKS, 8, 0];\nvar Credentials$ = [3, n0, _C,\n 0,\n [_AKI, _SK, _ST, _E],\n [0, [() => SecretKeyString, 0], 0, 4]\n];\nvar GetCredentialsForIdentityInput$ = [3, n0, _GCFII,\n 0,\n [_II, _L, _CRA],\n [0, [() => LoginsMap, 0], 0], 1\n];\nvar GetCredentialsForIdentityResponse$ = [3, n0, _GCFIR,\n 0,\n [_II, _C],\n [0, [() => Credentials$, 0]]\n];\nvar GetIdInput$ = [3, n0, _GII,\n 0,\n [_IPI, _AI, _L],\n [0, 0, [() => LoginsMap, 0]], 1\n];\nvar GetIdResponse$ = [3, n0, _GIR,\n 0,\n [_II],\n [0]\n];\nvar LoginsMap = [2, n0, _LM,\n 0, [0,\n 0],\n [() => IdentityProviderToken,\n 0]\n];\nvar GetCredentialsForIdentity$ = [9, n0, _GCFI,\n 0, () => GetCredentialsForIdentityInput$, () => GetCredentialsForIdentityResponse$\n];\nvar GetId$ = [9, n0, _GI,\n 0, () => GetIdInput$, () => GetIdResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsJson1_1Protocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.cognitoidentity\",\n errorTypeRegistries,\n xmlNamespace: \"http://cognito-identity.amazonaws.com/doc/2014-06-30/\",\n version: \"2014-06-30\",\n serviceTarget: \"AWSCognitoIdentityService\",\n },\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass CognitoIdentityClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultCognitoIdentityHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"AWSCognitoIdentityService\", \"CognitoIdentityClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass GetCredentialsForIdentityCommand extends command(_ep0, _mw0, \"GetCredentialsForIdentity\", GetCredentialsForIdentity$) {\n}\n\nclass GetIdCommand extends command(_ep0, _mw0, \"GetId\", GetId$) {\n}\n\nconst commands = {\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n};\nclass CognitoIdentity extends CognitoIdentityClient {\n}\ncreateAggregatedClient(commands, CognitoIdentity);\n\nexports.CognitoIdentity = CognitoIdentity;\nexports.CognitoIdentityClient = CognitoIdentityClient;\nexports.CognitoIdentityServiceException = CognitoIdentityServiceException;\nexports.CognitoIdentityServiceException$ = CognitoIdentityServiceException$;\nexports.Credentials$ = Credentials$;\nexports.ExternalServiceException = ExternalServiceException;\nexports.ExternalServiceException$ = ExternalServiceException$;\nexports.GetCredentialsForIdentity$ = GetCredentialsForIdentity$;\nexports.GetCredentialsForIdentityCommand = GetCredentialsForIdentityCommand;\nexports.GetCredentialsForIdentityInput$ = GetCredentialsForIdentityInput$;\nexports.GetCredentialsForIdentityResponse$ = GetCredentialsForIdentityResponse$;\nexports.GetId$ = GetId$;\nexports.GetIdCommand = GetIdCommand;\nexports.GetIdInput$ = GetIdInput$;\nexports.GetIdResponse$ = GetIdResponse$;\nexports.InternalErrorException = InternalErrorException;\nexports.InternalErrorException$ = InternalErrorException$;\nexports.InvalidIdentityPoolConfigurationException = InvalidIdentityPoolConfigurationException;\nexports.InvalidIdentityPoolConfigurationException$ = InvalidIdentityPoolConfigurationException$;\nexports.InvalidParameterException = InvalidParameterException;\nexports.InvalidParameterException$ = InvalidParameterException$;\nexports.LimitExceededException = LimitExceededException;\nexports.LimitExceededException$ = LimitExceededException$;\nexports.NotAuthorizedException = NotAuthorizedException;\nexports.NotAuthorizedException$ = NotAuthorizedException$;\nexports.ResourceConflictException = ResourceConflictException;\nexports.ResourceConflictException$ = ResourceConflictException$;\nexports.ResourceNotFoundException = ResourceNotFoundException;\nexports.ResourceNotFoundException$ = ResourceNotFoundException$;\nexports.TooManyRequestsException = TooManyRequestsException;\nexports.TooManyRequestsException$ = TooManyRequestsException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "878189CCE49EC97164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/project-id.ts", "../schema/src/identifier.ts", "../schema/src/workspace-id.ts", "../schema/src/location.ts", "../schema/src/event.ts", "../schema/src/integration-id.ts", "../schema/src/form.ts", "../schema/src/credential.ts"], | ||
| "sourcesContent": [ | ||
| "import { Schema } from \"effect\"\nimport { statics } from \"./schema.js\"\n\nexport const ProjectID = Schema.String.pipe(\n Schema.brand(\"Project.ID\"),\n statics((schema) => ({ global: schema.make(\"global\") })),\n)\nexport type ProjectID = typeof ProjectID.Type\n", | ||
| "const length = 26\nconst chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"\nlet lastTimestamp = 0\nlet counter = 0\n\nexport function ascending() {\n return create(false)\n}\n\nexport function descending() {\n return create(true)\n}\n\nexport function create(descending: boolean, timestamp = Date.now()) {\n if (timestamp !== lastTimestamp) {\n lastTimestamp = timestamp\n counter = 0\n }\n counter++\n\n const current = BigInt(timestamp) * 0x1000n + BigInt(counter)\n const value = descending ? ~current : current\n const time = Array.from({ length: 6 }, (_, index) =>\n Number((value >> BigInt(40 - 8 * index)) & 0xffn)\n .toString(16)\n .padStart(2, \"0\"),\n ).join(\"\")\n const bytes = crypto.getRandomValues(new Uint8Array(length - 12))\n return time + Array.from(bytes, (byte) => chars[byte % 62]).join(\"\")\n}\n", | ||
| "import { Schema } from \"effect\"\nimport { ascending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\n\nexport const WorkspaceID = Schema.String.check(Schema.isStartsWith(\"wrk\")).pipe(\n Schema.brand(\"Workspace.ID\"),\n statics((schema) => {\n const create = () => schema.make(\"wrk_\" + ascending())\n return {\n ascending: (id?: string) => {\n if (!id) return create()\n if (!id.startsWith(\"wrk\")) throw new Error(`ID ${id} does not start with wrk`)\n return schema.make(id)\n },\n create,\n }\n }),\n)\nexport type WorkspaceID = typeof WorkspaceID.Type\n", | ||
| "export * as Location from \"./location.js\"\n\nimport { Schema } from \"effect\"\nimport { AbsolutePath, optional } from \"./schema.js\"\nimport { ProjectID } from \"./project-id.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport interface Ref extends Schema.Schema.Type<typeof Ref> {}\nexport const Ref = Schema.Struct({\n directory: AbsolutePath,\n workspaceID: optional(WorkspaceID),\n}).annotate({ identifier: \"Location.Ref\" })\n\nexport class Info extends Schema.Class<Info>(\"Location.Info\")({\n directory: AbsolutePath,\n workspaceID: optional(WorkspaceID),\n project: Schema.Struct({\n id: ProjectID,\n directory: AbsolutePath,\n canonical: AbsolutePath,\n }),\n}) {}\n\nexport function response<S extends Schema.Top>(data: S) {\n return Schema.Struct({ location: Info, data })\n}\n", | ||
| "export * as Event from \"./event.js\"\n\nimport { Schema, SchemaTransformation } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ascending } from \"./identifier.js\"\nimport { Location } from \"./location.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"evt_\")).pipe(\n Schema.brand(\"Event.ID\"),\n statics((schema) => ({ create: () => schema.make(\"evt_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\n/**\n * Position in one aggregate's durable log. Values originate from the durable\n * event envelope and synced markers;\n * `after` cursors accept only values that came from those sources.\n */\nexport const Seq = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)).pipe(Schema.brand(\"Event.Seq\"))\nexport type Seq = typeof Seq.Type\n\n/** Durable schema version of one event type, from the event definition that committed it. */\nexport const Version = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).pipe(Schema.brand(\"Event.Version\"))\nexport type Version = typeof Version.Type\n\nconst DurableEnvelope = Schema.Struct({ aggregateID: Schema.String, seq: Seq, version: Version })\nexport type DurableEnvelope = typeof DurableEnvelope.Type\n\nexport type DurableDefinition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = Schema.Top & {\n readonly type: Type\n readonly durability: \"durable\"\n readonly durable: {\n readonly version: number\n readonly aggregate: string\n }\n readonly data: DataSchema\n}\n\nexport type EphemeralDefinition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = Schema.Top & {\n readonly type: Type\n readonly durability: \"ephemeral\"\n readonly durable?: never\n readonly data: DataSchema\n}\n\nexport type Definition<\n Type extends string = string,\n DataSchema extends Schema.Codec<unknown, unknown> = Schema.Codec<unknown, unknown>,\n> = DurableDefinition<Type, DataSchema> | EphemeralDefinition<Type, DataSchema>\n\nexport type Data<D extends Definition> = Schema.Schema.Type<D[\"data\"]>\n\ntype PayloadBase<D extends Definition> = {\n readonly id: ID\n readonly type: D[\"type\"]\n readonly created: number\n readonly data: Data<D>\n readonly location?: Location.Ref\n readonly metadata?: Record<string, unknown>\n}\n\nexport type Payload<D extends Definition = Definition> = D extends DurableDefinition\n ? PayloadBase<D> & { readonly durable: DurableEnvelope }\n : PayloadBase<D> & { readonly durable?: never }\n\ntype Input<Type extends string, Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>> = {\n readonly type: Type\n readonly identifier?: string\n readonly durable?: {\n readonly version: number\n readonly aggregate: string\n }\n readonly schema: Fields\n}\n\nexport function durable<\n const Type extends string,\n const Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>,\n>(input: Input<Type, Fields> & { readonly durable: NonNullable<Input<Type, Fields>[\"durable\"]> }) {\n const data = Schema.Struct(input.schema)\n const durable = Schema.Struct({\n aggregateID: DurableEnvelope.fields.aggregateID,\n seq: DurableEnvelope.fields.seq,\n version: Schema.Literal(input.durable.version).pipe(\n Schema.decodeTo(\n Schema.toType(Version),\n SchemaTransformation.transform({\n decode: () => Version.make(input.durable.version),\n encode: () => input.durable.version,\n }),\n ),\n ),\n })\n return Schema.Struct({\n id: ID,\n created: Schema.Finite,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n type: Schema.Literal(input.type),\n durable,\n location: optional(Location.Ref),\n data,\n })\n .annotate({ identifier: input.identifier ?? input.type })\n .pipe(\n statics(() => ({\n type: input.type,\n durability: \"durable\" as const,\n durable: input.durable,\n data,\n })),\n ) satisfies DurableDefinition<Type, typeof data>\n}\n\nexport function ephemeral<\n const Type extends string,\n const Fields extends Readonly<Record<PropertyKey, Schema.Codec<unknown, unknown>>>,\n>(input: Omit<Input<Type, Fields>, \"durable\">) {\n const data = Schema.Struct(input.schema)\n return Schema.Struct({\n id: ID,\n created: Schema.Finite,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n type: Schema.Literal(input.type),\n location: optional(Location.Ref),\n data,\n })\n .annotate({ identifier: input.identifier ?? input.type })\n .pipe(\n statics(() => ({\n type: input.type,\n durability: \"ephemeral\" as const,\n durable: undefined,\n data,\n })),\n ) satisfies EphemeralDefinition<Type, typeof data>\n}\n\nexport function inventory<const Definitions extends ReadonlyArray<Definition>>(...definitions: Definitions) {\n return Object.freeze(definitions)\n}\n\nexport function latest(definitions: ReadonlyArray<Definition>) {\n return readonlyMap(\n definitions.reduce((result, definition) => {\n const existing = result.get(definition.type)\n if (!existing) {\n result.set(definition.type, definition)\n return result\n }\n if (definition.durable && existing.durable && definition.durable.version !== existing.durable.version) {\n if (definition.durable.version > existing.durable.version) result.set(definition.type, definition)\n return result\n }\n if (definition !== existing) throw new Error(`Duplicate latest event definition for ${definition.type}`)\n return result\n }, new Map<string, Definition>()),\n )\n}\n\nexport function versionedType(type: string, version: number) {\n return `${type}.${version}`\n}\n\nexport function durableMap<const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) {\n return readonlyMap(\n definitions.reduce((result, definition) => {\n if (definition.durability !== \"durable\") return result\n const key = versionedType(definition.type, definition.durable.version)\n if (result.has(key)) throw new Error(`Duplicate durable event definition for ${key}`)\n result.set(key, definition)\n return result\n }, new Map<string, DurableDefinition>()),\n )\n}\n\nfunction readonlyMap<Key, Value>(map: Map<Key, Value>): ReadonlyMap<Key, Value> {\n const result: ReadonlyMap<Key, Value> = Object.freeze({\n get size() {\n return map.size\n },\n entries: () => map.entries(),\n forEach: (callback: (value: Value, key: Key, map: ReadonlyMap<Key, Value>) => void, thisArg?: unknown) =>\n map.forEach((value, key) => callback.call(thisArg, value, key, result)),\n get: (key: Key) => map.get(key),\n has: (key: Key) => map.has(key),\n keys: () => map.keys(),\n values: () => map.values(),\n [Symbol.iterator]: () => map[Symbol.iterator](),\n })\n return result\n}\n", | ||
| "import { Schema } from \"effect\"\n\nexport const IntegrationID = Schema.String.pipe(Schema.brand(\"Integration.ID\"))\nexport type IntegrationID = typeof IntegrationID.Type\n\nexport const IntegrationMethodID = Schema.String.pipe(Schema.brand(\"Integration.MethodID\"))\nexport type IntegrationMethodID = typeof IntegrationMethodID.Type\n", | ||
| "export * as Form from \"./form.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, optional, statics } from \"./schema.js\"\n\nconst IDSchema = Schema.String.check(Schema.isStartsWith(\"frm_\")).pipe(Schema.brand(\"Form.ID\"))\n\nexport const ID = IDSchema.pipe(\n statics((schema: typeof IDSchema) => ({ create: (id?: string) => schema.make(id ?? \"frm_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Metadata = Schema.Record(Schema.String, Schema.Unknown).annotate({ identifier: \"Form.Metadata\" })\nexport type Metadata = typeof Metadata.Type\n\nexport const Option = Schema.Struct({\n value: Schema.String,\n label: Schema.String,\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Form.Option\" })\nexport interface Option extends Schema.Schema.Type<typeof Option> {}\n\n// One visibility condition on a field. A field's `when` is a list of conditions that must all\n// hold (AND) against the current answers for the field to be active. Semantics:\n// - `value` must match the referenced field's type; against a multiselect answer, `eq` means\n// \"selection includes value\" and `neq` means \"selection does not include value\".\n// - An unanswered referenced field makes the condition false for both ops.\n// - `key` must reference a field defined earlier in the form's field list.\n// Inactive fields are neither required nor answerable.\nexport const When = Schema.Struct({\n key: Schema.String,\n op: Schema.Literals([\"eq\", \"neq\"]),\n value: Schema.Union([Schema.String, Schema.Number, Schema.Boolean]),\n}).annotate({ identifier: \"Form.When\" })\nexport interface When extends Schema.Schema.Type<typeof When> {}\n\nconst FieldBase = {\n key: Schema.String,\n title: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n required: Schema.Boolean.pipe(optional),\n when: Schema.Array(When).pipe(optional),\n}\n\nexport const StringField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"string\"),\n format: Schema.Literals([\"email\", \"uri\", \"date\", \"date-time\"]).pipe(optional),\n minLength: NonNegativeInt.pipe(optional),\n maxLength: NonNegativeInt.pipe(optional),\n pattern: Schema.String.pipe(optional),\n placeholder: Schema.String.pipe(optional),\n default: Schema.String.pipe(optional),\n options: Schema.Array(Option).pipe(optional),\n custom: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Form.StringField\" })\nexport interface StringField extends Schema.Schema.Type<typeof StringField> {}\n\nexport const NumberField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"number\"),\n minimum: Schema.Number.pipe(optional),\n maximum: Schema.Number.pipe(optional),\n default: Schema.Number.pipe(optional),\n}).annotate({ identifier: \"Form.NumberField\" })\nexport interface NumberField extends Schema.Schema.Type<typeof NumberField> {}\n\nexport const IntegerField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"integer\"),\n minimum: Schema.Number.pipe(optional),\n maximum: Schema.Number.pipe(optional),\n default: Schema.Number.pipe(optional),\n}).annotate({ identifier: \"Form.IntegerField\" })\nexport interface IntegerField extends Schema.Schema.Type<typeof IntegerField> {}\n\nexport const BooleanField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"boolean\"),\n default: Schema.Boolean.pipe(optional),\n}).annotate({ identifier: \"Form.BooleanField\" })\nexport interface BooleanField extends Schema.Schema.Type<typeof BooleanField> {}\n\nexport const MultiselectField = Schema.Struct({\n ...FieldBase,\n type: Schema.Literal(\"multiselect\"),\n options: Schema.Array(Option),\n minItems: NonNegativeInt.pipe(optional),\n maxItems: NonNegativeInt.pipe(optional),\n custom: Schema.Boolean.pipe(optional),\n default: Schema.Array(Schema.String).pipe(optional),\n}).annotate({ identifier: \"Form.MultiselectField\" })\nexport interface MultiselectField extends Schema.Schema.Type<typeof MultiselectField> {}\n\nexport const ExternalField = Schema.Struct({\n key: Schema.String,\n type: Schema.Literal(\"external\"),\n url: Schema.String,\n title: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Form.ExternalField\" })\nexport interface ExternalField extends Schema.Schema.Type<typeof ExternalField> {}\n\nexport const Field = Schema.Union([\n StringField,\n NumberField,\n IntegerField,\n BooleanField,\n MultiselectField,\n ExternalField,\n]).pipe(Schema.toTaggedUnion(\"type\"), Schema.annotate({ identifier: \"Form.Field\" }))\nexport type Field = StringField | NumberField | IntegerField | BooleanField | MultiselectField | ExternalField\n\nexport const Fields = Schema.NonEmptyArray(Field).annotate({ identifier: \"Form.Fields\" })\nexport type Fields = typeof Fields.Type\n\nconst InfoBase = {\n id: ID,\n // This should be typed as SessionID. It is a plain string only because MCP elicitation\n // temporarily needs the `\"global\"` sentinel owner, which is not a real session. Once\n // elicitations can be attributed to real sessions, revert this to SessionID. Do not rely\n // on non-session owners anywhere else.\n sessionID: Schema.String,\n title: Schema.String,\n metadata: Metadata.pipe(optional),\n}\n\nexport const Info = Schema.Struct({\n ...InfoBase,\n fields: Fields,\n}).annotate({ identifier: \"Form.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const Value = Schema.Union([Schema.String, Schema.Number, Schema.Boolean, Schema.Array(Schema.String)]).annotate(\n {\n identifier: \"Form.Value\",\n },\n)\nexport type Value = typeof Value.Type\n\nexport const Answer = Schema.Record(Schema.String, Value).annotate({ identifier: \"Form.Answer\" })\nexport type Answer = typeof Answer.Type\n\nexport const State = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"pending\") }),\n Schema.Struct({ status: Schema.Literal(\"answered\"), answer: Answer }),\n Schema.Struct({ status: Schema.Literal(\"cancelled\") }),\n])\n .pipe(Schema.toTaggedUnion(\"status\"))\n .annotate({ identifier: \"Form.State\" })\nexport type State = typeof State.Type\n\nexport const Reply = Schema.Struct({\n answer: Answer,\n}).annotate({ identifier: \"Form.Reply\" })\nexport interface Reply extends Schema.Schema.Type<typeof Reply> {}\n\nconst Created = ephemeral({ type: \"form.created\", schema: { form: Info } })\nconst Replied = ephemeral({ type: \"form.replied\", schema: { id: ID, sessionID: Schema.String, answer: Answer } })\nconst Cancelled = ephemeral({ type: \"form.cancelled\", schema: { id: ID, sessionID: Schema.String } })\n\nexport const Event = { Created, Replied, Cancelled, Definitions: inventory(Created, Replied, Cancelled) }\n", | ||
| "export * as Credential from \"./credential.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { IntegrationMethodID } from \"./integration-id.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, statics } from \"./schema.js\"\nimport { Form } from \"./form.js\"\n\nexport const ID = Schema.String.pipe(\n Schema.brand(\"Credential.ID\"),\n statics((schema) => ({ create: () => schema.make(\"cred_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport interface OAuth extends Schema.Schema.Type<typeof OAuth> {}\nexport const OAuth = Schema.Struct({\n type: Schema.Literal(\"oauth\"),\n methodID: IntegrationMethodID,\n refresh: Schema.String,\n access: Schema.String,\n expires: NonNegativeInt,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n}).annotate({ identifier: \"Credential.OAuth\" })\n\nexport interface Key extends Schema.Schema.Type<typeof Key> {}\nexport const Key = Schema.Struct({\n type: Schema.Literal(\"key\"),\n key: Schema.String,\n metadata: optional(Schema.Record(Schema.String, Schema.Unknown)),\n configuration: optional(Form.Answer),\n}).annotate({ identifier: \"Credential.Key\" })\n\nexport const Value = Schema.Union([OAuth, Key])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Credential.Value\" })\nexport type Value = Schema.Schema.Type<typeof Value>\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "F1476703741D5D3564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/google-vertex-shared.ts"], | ||
| "sourcesContent": [ | ||
| "import type { AnyAuthClient } from \"google-auth-library\"\nimport { Effect, Redacted } from \"effect\"\nimport { Auth, MissingCredentialError } from \"../route/auth.js\"\n\nconst SCOPE = \"https://www.googleapis.com/auth/cloud-platform\"\n\nexport type OAuthOptions =\n | { readonly accessToken?: string; readonly auth?: never }\n | { readonly accessToken?: never; readonly auth?: Auth.Definition }\n\nexport type ApiKeyOptions =\n | (OAuthOptions & { readonly apiKey?: never })\n | { readonly accessToken?: never; readonly apiKey?: string; readonly auth?: never }\n\nexport const project = (value?: string) =>\n value ??\n process.env.GOOGLE_VERTEX_PROJECT ??\n process.env.GOOGLE_CLOUD_PROJECT ??\n process.env.GCP_PROJECT ??\n process.env.GCLOUD_PROJECT\n\nexport const location = (value: string | undefined, fallback: string) =>\n value ??\n process.env.GOOGLE_VERTEX_LOCATION ??\n process.env.GOOGLE_CLOUD_LOCATION ??\n process.env.VERTEX_LOCATION ??\n fallback\n\nexport const host = (location: string) => {\n if (location === \"global\") return \"aiplatform.googleapis.com\"\n // Jurisdictional multi-regions use Regional Endpoint Platform domains.\n if (location === \"eu\" || location === \"us\") return `aiplatform.${location}.rep.googleapis.com`\n return `${location}-aiplatform.googleapis.com`\n}\n\nexport const requireProject = (value: string | undefined) => {\n if (value) return value\n throw new Error(\"Google Vertex requires a project when baseURL is not configured\")\n}\n\nexport const apiKey = (input: ApiKeyOptions) => {\n if (input.apiKey !== undefined && (input.accessToken !== undefined || input.auth !== undefined))\n throw new Error(\"Google Vertex apiKey cannot be combined with accessToken or auth\")\n if (input.accessToken !== undefined || input.auth !== undefined) return undefined\n return input.apiKey ?? process.env.GOOGLE_VERTEX_API_KEY\n}\n\nconst adc = (project?: string) => {\n let client: Promise<AnyAuthClient> | undefined\n const loadClient = () => {\n if (client) return client\n client = import(\"google-auth-library\").then(({ GoogleAuth }) =>\n new GoogleAuth({ projectId: project, scopes: [SCOPE] }).getClient(),\n )\n return client\n }\n return Auth.effect(\n Effect.tryPromise({\n try: async () => {\n const token = await (await loadClient()).getAccessToken()\n if (!token.token) throw new Error(\"Google ADC returned an empty access token\")\n return Redacted.make(token.token)\n },\n catch: () => new MissingCredentialError(\"Google Application Default Credentials\"),\n }),\n ).bearer()\n}\n\nexport const oauth = (input: OAuthOptions, project?: string) => {\n if (input.accessToken !== undefined && input.auth !== undefined)\n throw new Error(\"Google Vertex accessToken cannot be combined with auth\")\n if (input.auth) return input.auth\n if (input.accessToken !== undefined) return Auth.bearer(input.accessToken)\n return adc(project)\n}\n\nexport * as GoogleVertexShared from \"./google-vertex-shared.js\"\n" | ||
| ], | ||
| "mappings": ";2TAIA,IAAM,EAAQ,iDAUD,EAAU,CAAC,IACtB,GACA,QAAQ,IAAI,uBACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI,aACZ,QAAQ,IAAI,eAED,EAAW,CAAC,EAA2B,IAClD,GACA,QAAQ,IAAI,wBACZ,QAAQ,IAAI,uBACZ,QAAQ,IAAI,iBACZ,EAEW,EAAO,CAAC,IAAqB,CACxC,GAAI,IAAa,SAAU,MAAO,4BAElC,GAAI,IAAa,MAAQ,IAAa,KAAM,MAAO,cAAc,uBACjE,MAAO,GAAG,+BAGC,EAAiB,CAAC,IAA8B,CAC3D,GAAI,EAAO,OAAO,EAClB,MAAU,MAAM,iEAAiE,GAGtE,EAAS,CAAC,IAAyB,CAC9C,GAAI,EAAM,SAAW,SAAc,EAAM,cAAgB,QAAa,EAAM,OAAS,QACnF,MAAU,MAAM,kEAAkE,EACpF,GAAI,EAAM,cAAgB,QAAa,EAAM,OAAS,OAAW,OACjE,OAAO,EAAM,QAAU,QAAQ,IAAI,uBAG/B,EAAM,CAAC,IAAqB,CAChC,IAAI,EACE,EAAa,IAAM,CACvB,GAAI,EAAQ,OAAO,EAInB,OAHA,EAAgB,mEAAuB,KAAK,EAAG,gBAC7C,IAAI,EAAW,CAAE,UAAW,EAAS,OAAQ,CAAC,CAAK,CAAE,CAAC,EAAE,UAAU,CACpE,EACO,GAET,OAAO,EAAK,OACV,EAAO,WAAW,CAChB,IAAK,SAAY,CACf,IAAM,EAAQ,MAAO,MAAM,EAAW,GAAG,eAAe,EACxD,GAAI,CAAC,EAAM,MAAO,MAAU,MAAM,2CAA2C,EAC7E,OAAO,EAAS,KAAK,EAAM,KAAK,GAElC,MAAO,IAAM,IAAI,EAAuB,wCAAwC,CAClF,CAAC,CACH,EAAE,OAAO,GAGE,EAAQ,CAAC,EAAqB,IAAqB,CAC9D,GAAI,EAAM,cAAgB,QAAa,EAAM,OAAS,OACpD,MAAU,MAAM,wDAAwD,EAC1E,GAAI,EAAM,KAAM,OAAO,EAAM,KAC7B,GAAI,EAAM,cAAgB,OAAW,OAAO,EAAK,OAAO,EAAM,WAAW,EACzE,OAAO,EAAI,CAAO", | ||
| "debugId": "124577E22C8C5E6F64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "1C074784B753228664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/workspace-event.ts"], | ||
| "sourcesContent": [ | ||
| "export * as WorkspaceEvent from \"./workspace-event.js\"\n\nimport { Schema } from \"effect\"\nimport { Event } from \"./event.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport const ConnectionStatus = Schema.Struct({\n workspaceID: WorkspaceID,\n status: Schema.Literals([\"connected\", \"connecting\", \"disconnected\", \"error\"]),\n}).annotate({ identifier: \"WorkspaceEvent.ConnectionStatus\" })\nexport interface ConnectionStatus extends Schema.Schema.Type<typeof ConnectionStatus> {}\n\nexport const Ready = Event.ephemeral({\n type: \"workspace.ready\",\n schema: {\n name: Schema.String,\n },\n})\n\nexport const Failed = Event.ephemeral({\n type: \"workspace.failed\",\n schema: {\n message: Schema.String,\n },\n})\n\nexport const Status = Event.ephemeral({\n type: \"workspace.status\",\n schema: ConnectionStatus.fields,\n})\n\nexport const Definitions = Event.inventory(Ready, Failed, Status)\n" | ||
| ], | ||
| "mappings": ";wRAMO,IAAM,EAAmB,EAAO,OAAO,CAC5C,YAAa,EACb,OAAQ,EAAO,SAAS,CAAC,YAAa,aAAc,eAAgB,OAAO,CAAC,CAC9E,CAAC,EAAE,SAAS,CAAE,WAAY,iCAAkC,CAAC,EAGhD,EAAQ,EAAM,UAAU,CACnC,KAAM,kBACN,OAAQ,CACN,KAAM,EAAO,MACf,CACF,CAAC,EAEY,EAAS,EAAM,UAAU,CACpC,KAAM,mBACN,OAAQ,CACN,QAAS,EAAO,MAClB,CACF,CAAC,EAEY,EAAS,EAAM,UAAU,CACpC,KAAM,mBACN,OAAQ,EAAiB,MAC3B,CAAC,EAEY,EAAc,EAAM,UAAU,EAAO,EAAQ,CAAM", | ||
| "debugId": "A03E46B52BE1814264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/workspace.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Workspace from \"./workspace.js\"\n\nimport { Schema } from \"effect\"\nimport { WorkspaceEvent } from \"./workspace-event.js\"\nimport { WorkspaceID } from \"./workspace-id.js\"\n\nexport const ID = WorkspaceID\nexport type ID = WorkspaceID\n\nexport const DestroyResult = Schema.Struct({\n destroyed: Schema.Boolean.annotate({\n description: \"True when this request transitioned the workspace from existing to destroyed.\",\n }),\n}).annotate({\n identifier: \"WorkspaceDestroyResult\",\n description: \"Reports whether this request destroyed an existing workspace.\",\n})\nexport interface DestroyResult extends Schema.Schema.Type<typeof DestroyResult> {}\n\nexport const Event = WorkspaceEvent\n" | ||
| ], | ||
| "mappings": ";yRAMO,IAAM,EAAK,EAGL,EAAgB,EAAO,OAAO,CACzC,UAAW,EAAO,QAAQ,SAAS,CACjC,YAAa,+EACf,CAAC,CACH,CAAC,EAAE,SAAS,CACV,WAAY,yBACZ,YAAa,+DACf,CAAC,EAGY,EAAQ", | ||
| "debugId": "09E1728DE5C7088A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/set.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.set,\n Effect.fn(\"cli.service.set\")(function* (input) {\n yield* ServiceConfig.set(input.key, input.value, Option.getOrUndefined(input.nestedValue))\n }),\n)\n" | ||
| ], | ||
| "mappings": ";02BAKA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,IACnC,EAAO,GAAG,iBAAiB,EAAE,SAAU,CAAC,EAAO,CAC7C,MAAO,EAAc,IAAI,EAAM,IAAK,EAAM,MAAO,EAAO,eAAe,EAAM,WAAW,CAAC,EAC1F,CACH", | ||
| "debugId": "92EB89DFA7E4790C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "368E6FCA1C8830D064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/amazon-bedrock-mantle.ts"], | ||
| "sourcesContent": [ | ||
| "import { Auth } from \"../route/auth.js\"\nimport type { Route as RouteDef, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAIChat } from \"../protocols/openai-chat.js\"\nimport { OpenAIResponses } from \"../protocols/openai-responses.js\"\nimport { BedrockAuth, type Credentials } from \"../protocols/utils/bedrock-auth.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"amazon-bedrock\")\n\nexport type Config = RouteDefaultsInput & {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly credentials?: Credentials\n readonly region?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly auth?: \"bearer\" | \"sigv4\"\n readonly baseURL?: string\n readonly credentials?: Credentials\n readonly region?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst responsesRoute = OpenAIResponses.route.with({\n id: \"bedrock-mantle-responses\",\n provider: id,\n})\n\nconst chatRoute = OpenAIChat.route.with({\n id: \"bedrock-mantle-chat\",\n provider: id,\n})\n\nexport const routes = [responsesRoute, chatRoute]\n\nconst configuredRoute = <Body, Prepared>(route: RouteDef<Body, Prepared>, input: Config) => {\n const region = input.region ?? input.credentials?.region ?? \"us-east-1\"\n const credentials = input.credentials === undefined ? undefined : { ...input.credentials, region }\n return route.with({\n endpoint: { baseURL: input.baseURL ?? `https://bedrock-mantle.${region}.api.aws/v1` },\n auth:\n input.apiKey === undefined\n ? BedrockAuth.sigV4(credentials, { service: \"bedrock-mantle\", name: \"Bedrock Mantle\" })\n : Auth.bearer(input.apiKey),\n })\n}\n\nconst defaults = (input: Config) => {\n const { apiKey: _, baseURL: _baseURL, credentials: _credentials, region: _region, ...rest } = input\n return rest\n}\n\nexport const configure = (input: Config = {}) => {\n const configuredResponsesRoute = configuredRoute(responsesRoute, input)\n const configuredChatRoute = configuredRoute(chatRoute, input)\n const modelDefaults = defaults(input)\n const responses = (modelID: string | ModelID) =>\n configuredResponsesRoute\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n const chat = (modelID: string | ModelID) =>\n configuredChatRoute\n .with(withOpenAIOptions(modelID, modelDefaults))\n .model<OpenAIProviderOptionsInput>({ id: modelID })\n\n return {\n id,\n model: chat,\n chat,\n responses,\n configure,\n }\n}\n\nexport const provider = configure()\n\nconst config = (settings: Settings): Config => {\n if (settings.auth === \"bearer\" && settings.apiKey === undefined)\n throw new Error(\"Amazon Bedrock Mantle bearer auth requires apiKey\")\n if (settings.auth === \"sigv4\" && settings.apiKey !== undefined)\n throw new Error(\"Amazon Bedrock Mantle SigV4 auth does not accept apiKey\")\n return {\n apiKey: settings.auth === \"sigv4\" ? undefined : settings.apiKey,\n baseURL: settings.baseURL,\n credentials: settings.credentials,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n region: settings.region,\n }\n}\n\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const responsesModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).responses(modelID)\nexport const model = chatModel\n" | ||
| ], | ||
| "mappings": ";gOASO,IAAM,EAAK,EAAW,KAAK,gBAAgB,EAmB5C,EAAiB,EAAgB,MAAM,KAAK,CAChD,GAAI,2BACJ,SAAU,CACZ,CAAC,EAEK,EAAY,EAAW,MAAM,KAAK,CACtC,GAAI,sBACJ,SAAU,CACZ,CAAC,EAID,IAAM,EAAkB,CAAiB,EAAiC,IAAkB,CAC1F,IAAM,EAAS,EAAM,QAAU,EAAM,aAAa,QAAU,YACtD,EAAc,EAAM,cAAgB,OAAY,OAAY,IAAK,EAAM,YAAa,QAAO,EACjG,OAAO,EAAM,KAAK,CAChB,SAAU,CAAE,QAAS,EAAM,SAAW,0BAA0B,cAAoB,EACpF,KACE,EAAM,SAAW,OACb,EAAY,MAAM,EAAa,CAAE,QAAS,iBAAkB,KAAM,gBAAiB,CAAC,EACpF,EAAK,OAAO,EAAM,MAAM,CAChC,CAAC,GAGG,EAAW,CAAC,IAAkB,CAClC,IAAQ,OAAQ,EAAG,QAAS,EAAU,YAAa,EAAc,OAAQ,KAAY,GAAS,EAC9F,OAAO,GAGI,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAA2B,EAAgB,EAAgB,CAAK,EAChE,EAAsB,EAAgB,EAAW,CAAK,EACtD,EAAgB,EAAS,CAAK,EAC9B,EAAY,CAAC,IACjB,EACG,KAAK,EAAkB,EAAS,CAAa,CAAC,EAC9C,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAChD,EAAO,CAAC,IACZ,EACG,KAAK,EAAkB,EAAS,CAAa,CAAC,EAC9C,MAAkC,CAAE,GAAI,CAAQ,CAAC,EAEtD,MAAO,CACL,KACA,MAAO,EACP,OACA,YACA,WACF,GAGW,EAAW,EAAU,EAE5B,EAAS,CAAC,IAA+B,CAC7C,GAAI,EAAS,OAAS,UAAY,EAAS,SAAW,OACpD,MAAU,MAAM,mDAAmD,EACrE,GAAI,EAAS,OAAS,SAAW,EAAS,SAAW,OACnD,MAAU,MAAM,yDAAyD,EAC3E,MAAO,CACL,OAAQ,EAAS,OAAS,QAAU,OAAY,EAAS,OACzD,QAAS,EAAS,QAClB,YAAa,EAAS,YACtB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,gBAAiB,EAAS,gBAC1B,OAAQ,EAAS,MACnB,GAGW,EAAuF,CAClG,EACA,IACG,EAAU,EAAO,CAAQ,CAAC,EAAE,KAAK,CAAO,EAChC,EAA4F,CACvG,EACA,IACG,EAAU,EAAO,CAAQ,CAAC,EAAE,UAAU,CAAO", | ||
| "debugId": "4BAF52B7CC70598A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/bedrock-event-stream.ts", "../ai/src/protocols/utils/bedrock-cache.ts", "../ai/src/protocols/utils/bedrock-media.ts", "../ai/src/protocols/bedrock-converse.ts", "../ai/src/providers/amazon-bedrock.ts"], | ||
| "sourcesContent": [ | ||
| "import { EventStreamCodec } from \"@smithy/eventstream-codec\"\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\"\nimport { Effect, Stream } from \"effect\"\nimport { Framing } from \"../route/framing.js\"\nimport { ProviderShared } from \"./shared.js\"\n\n// Bedrock streams responses using the AWS event stream binary protocol — each\n// frame is `[length:4][headers-length:4][prelude-crc:4][headers][payload][crc:4]`.\n// We use `@smithy/eventstream-codec` to validate framing and CRCs, then\n// reconstruct the JSON wrapping by `:event-type` so the chunk schema can match.\nconst eventCodec = new EventStreamCodec(toUtf8, fromUtf8)\nconst utf8 = new TextDecoder()\n\n// Cursor-tracking buffer state. Bytes accumulate in `buffer`; `offset` is the\n// read position. Reading by `subarray` is zero-copy. We only allocate a fresh\n// buffer when a new network chunk arrives and we need to append.\ninterface FrameBufferState {\n readonly buffer: Uint8Array\n readonly offset: number\n}\n\nconst initialFrameBuffer: FrameBufferState = { buffer: new Uint8Array(0), offset: 0 }\n\nconst appendChunk = (state: FrameBufferState, chunk: Uint8Array): FrameBufferState => {\n const remaining = state.buffer.length - state.offset\n // Compact: drop the consumed prefix and append the new chunk in one alloc.\n // This bounds buffer growth to at most one network chunk past the live\n // window, regardless of stream length.\n const next = new Uint8Array(remaining + chunk.length)\n next.set(state.buffer.subarray(state.offset), 0)\n next.set(chunk, remaining)\n return { buffer: next, offset: 0 }\n}\n\nconst consumeFrames = (route: string) => (state: FrameBufferState, chunk: Uint8Array) =>\n Effect.gen(function* () {\n let cursor = appendChunk(state, chunk)\n const out: object[] = []\n while (cursor.buffer.length - cursor.offset >= 4) {\n const view = cursor.buffer.subarray(cursor.offset)\n const totalLength = new DataView(view.buffer, view.byteOffset, view.byteLength).getUint32(0, false)\n if (view.length < totalLength) break\n\n const decoded = yield* Effect.try({\n try: () => eventCodec.decode(view.subarray(0, totalLength)),\n catch: (error) =>\n ProviderShared.eventError(\n route,\n `Failed to decode Bedrock Converse event-stream frame: ${\n error instanceof Error ? error.message : String(error)\n }`,\n ),\n })\n cursor = { buffer: cursor.buffer, offset: cursor.offset + totalLength }\n\n const messageType = decoded.headers[\":message-type\"]?.value\n if (messageType === \"error\") {\n const code = decoded.headers[\":error-code\"]?.value\n const message = decoded.headers[\":error-message\"]?.value\n return yield* ProviderShared.eventError(\n route,\n [code, message].filter((value): value is string => typeof value === \"string\").join(\": \") ||\n \"Bedrock Converse event-stream error\",\n )\n }\n const eventType =\n messageType === \"event\"\n ? decoded.headers[\":event-type\"]?.value\n : messageType === \"exception\"\n ? decoded.headers[\":exception-type\"]?.value\n : undefined\n if (typeof eventType !== \"string\") continue\n const payload = utf8.decode(decoded.body)\n if (!payload) continue\n // The AWS event stream pads short payloads with a `p` field. Drop it\n // before handing the object to the chunk schema. JSON decode goes\n // through the shared Schema-driven codec to satisfy the package rule\n // against ad-hoc `JSON.parse` calls.\n const parsed = (yield* ProviderShared.parseJson(\n route,\n payload,\n \"Failed to parse Bedrock Converse event-stream payload\",\n )) as Record<string, unknown>\n delete parsed.p\n out.push(messageType === \"exception\" ? { exception: { type: eventType, details: parsed } } : { [eventType]: parsed })\n }\n return [cursor, out] as const\n })\n\n/**\n * AWS event-stream framing for Bedrock Converse. Each frame is decoded by\n * `@smithy/eventstream-codec` (length + header + payload + CRC) and rewrapped\n * under its `:event-type` header so the chunk schema can match the JSON\n * payload directly.\n */\nexport const framing = (route: string): Framing.Definition<object> => ({\n id: \"aws-event-stream\",\n frame: (bytes) => bytes.pipe(Stream.mapAccumEffect(() => initialFrameBuffer, consumeFrames(route))),\n})\n\nexport * as BedrockEventStream from \"./bedrock-event-stream.js\"\n", | ||
| "import { Schema } from \"effect\"\nimport type { CacheHint } from \"../../schema/index.js\"\nimport { newBreakpoints, ttlBucket, type Breakpoints } from \"./cache.js\"\n\n// Bedrock cache markers are positional: emit a `cachePoint` block immediately\n// after the content the caller wants treated as a cacheable prefix. Bedrock\n// accepts optional `ttl: \"5m\" | \"1h\"` on cachePoint.\nexport const CachePointBlock = Schema.Struct({\n cachePoint: Schema.Struct({\n type: Schema.tag(\"default\"),\n ttl: Schema.optional(Schema.Literals([\"5m\", \"1h\"])),\n }),\n})\nexport type CachePointBlock = Schema.Schema.Type<typeof CachePointBlock>\n\n// Callers pass a shared counter through every `block()` call site so the\n// four-breakpoint budget is respected across `system`, `messages`, and `tools`.\nexport const BEDROCK_BREAKPOINT_CAP = 4\n\nexport type { Breakpoints } from \"./cache.js\"\nexport const breakpoints = () => newBreakpoints(BEDROCK_BREAKPOINT_CAP)\n\nconst DEFAULT_5M: CachePointBlock = { cachePoint: { type: \"default\" } }\nconst DEFAULT_1H: CachePointBlock = { cachePoint: { type: \"default\", ttl: \"1h\" } }\n\nexport const block = (breakpoints: Breakpoints, cache: CacheHint | undefined): CachePointBlock | undefined => {\n if (cache?.type !== \"ephemeral\" && cache?.type !== \"persistent\") return undefined\n if (breakpoints.remaining <= 0) {\n breakpoints.dropped += 1\n return undefined\n }\n breakpoints.remaining -= 1\n return ttlBucket(cache.ttlSeconds) === \"1h\" ? DEFAULT_1H : DEFAULT_5M\n}\n\nexport * as BedrockCache from \"./bedrock-cache.js\"\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport type { MediaPart } from \"../../schema/index.js\"\nimport { ProviderShared } from \"../shared.js\"\n\n// Bedrock Converse accepts image `format` as the file extension and\n// `source.bytes` as base64 in the JSON wire format.\nexport const ImageFormat = Schema.Literals([\"png\", \"jpeg\", \"gif\", \"webp\"])\nexport type ImageFormat = Schema.Schema.Type<typeof ImageFormat>\n\nexport const ImageBlock = Schema.Struct({\n image: Schema.Struct({\n format: ImageFormat,\n source: Schema.Struct({ bytes: Schema.String }),\n }),\n})\nexport type ImageBlock = Schema.Schema.Type<typeof ImageBlock>\n\n// Bedrock document blocks require a user-facing name so the model can refer to\n// the uploaded document.\nexport const DocumentFormat = Schema.Literals([\"pdf\", \"csv\", \"doc\", \"docx\", \"xls\", \"xlsx\", \"html\", \"txt\", \"md\"])\nexport type DocumentFormat = Schema.Schema.Type<typeof DocumentFormat>\n\nexport const DocumentBlock = Schema.Struct({\n document: Schema.Struct({\n format: DocumentFormat,\n name: Schema.String,\n source: Schema.Struct({ bytes: Schema.String }),\n }),\n})\nexport type DocumentBlock = Schema.Schema.Type<typeof DocumentBlock>\n\nconst IMAGE_FORMATS = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpeg\",\n \"image/jpg\": \"jpeg\",\n \"image/gif\": \"gif\",\n \"image/webp\": \"webp\",\n} as const satisfies Record<string, ImageFormat>\n\nconst DOCUMENT_FORMATS = {\n \"application/pdf\": \"pdf\",\n \"text/csv\": \"csv\",\n \"application/msword\": \"doc\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": \"docx\",\n \"application/vnd.ms-excel\": \"xls\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": \"xlsx\",\n \"text/html\": \"html\",\n \"text/plain\": \"txt\",\n \"text/markdown\": \"md\",\n} as const satisfies Record<string, DocumentFormat>\n\nconst documentBlock = (name: string, format: DocumentFormat, bytes: string): DocumentBlock => ({\n document: {\n format,\n name,\n source: { bytes },\n },\n})\n\n// Route by MIME. Known image/document formats lower into a typed block; anything\n// else fails with a clear error instead of silently degrading to a malformed\n// document block. Image MIME types not in `IMAGE_FORMATS` (e.g. `image/svg+xml`)\n// get an image-specific error so the caller knows it's a format-support issue,\n// not a kind-detection issue.\nexport const lower = Effect.fn(\"BedrockMedia.lower\")(function* (part: MediaPart) {\n const mime = part.mediaType.toLowerCase()\n const imageFormat = IMAGE_FORMATS[mime as keyof typeof IMAGE_FORMATS]\n if (imageFormat) {\n const media = ProviderShared.normalizeMedia(part)\n return { image: { format: imageFormat, source: { bytes: media.base64 } } } satisfies ImageBlock\n }\n if (mime.startsWith(\"image/\"))\n return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support image media type ${part.mediaType}`)\n const documentFormat = DOCUMENT_FORMATS[mime as keyof typeof DOCUMENT_FORMATS]\n if (documentFormat) {\n if (!part.filename)\n return yield* ProviderShared.invalidRequest(\"Bedrock Converse document media requires a filename\")\n const media = ProviderShared.normalizeMedia(part)\n return documentBlock(part.filename, documentFormat, media.base64)\n }\n return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support media type ${part.mediaType}`)\n})\n\nexport * as BedrockMedia from \"./bedrock-media.js\"\n", | ||
| "import { Effect, Schema } from \"effect\"\nimport { Route } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Protocol } from \"../route/protocol.js\"\nimport {\n AIError,\n LLMEvent,\n Usage,\n type CacheHint,\n type FinishReason,\n type FinishReasonDetails,\n type JsonSchema,\n type LLMRequest,\n type LanguageModelToolSchemaCompatibility,\n type ProviderMetadata,\n type ReasoningPart,\n type ToolCallPart,\n type ToolDefinition,\n type ToolResultPart,\n} from \"../schema/index.js\"\nimport { BedrockEventStream } from \"./bedrock-event-stream.js\"\nimport { classifyProviderFailure } from \"../provider-error.js\"\nimport { JsonObject, optionalArray, ProviderShared } from \"./shared.js\"\nimport { BedrockAuth } from \"./utils/bedrock-auth.js\"\nimport { BedrockCache } from \"./utils/bedrock-cache.js\"\nimport { BedrockMedia } from \"./utils/bedrock-media.js\"\nimport { Lifecycle } from \"./utils/lifecycle.js\"\nimport { ToolSchemaProjection } from \"./utils/tool-schema.js\"\nimport { ToolStream } from \"./utils/tool-stream.js\"\n\nconst ADAPTER = \"bedrock-converse\"\n\nexport type { Credentials as BedrockCredentials } from \"./utils/bedrock-auth.js\"\n\n// =============================================================================\n// Request Body Schema\n// =============================================================================\nconst BedrockTextBlock = Schema.Struct({\n text: Schema.String,\n})\ntype BedrockTextBlock = Schema.Schema.Type<typeof BedrockTextBlock>\n\nconst BedrockToolUseBlock = Schema.Struct({\n toolUse: Schema.Struct({\n toolUseId: Schema.String,\n name: Schema.String,\n input: Schema.Unknown,\n }),\n})\ntype BedrockToolUseBlock = Schema.Schema.Type<typeof BedrockToolUseBlock>\n\nconst BedrockToolResultContentItem = Schema.Union([\n Schema.Struct({ text: Schema.String }),\n Schema.Struct({ json: Schema.Unknown }),\n BedrockMedia.ImageBlock,\n BedrockMedia.DocumentBlock,\n])\n\nconst BedrockToolResultBlock = Schema.Struct({\n toolResult: Schema.Struct({\n toolUseId: Schema.String,\n content: Schema.Array(BedrockToolResultContentItem),\n status: Schema.optional(Schema.Literals([\"success\", \"error\"])),\n }),\n})\ntype BedrockToolResultBlock = Schema.Schema.Type<typeof BedrockToolResultBlock>\n\nconst BedrockReasoningBlock = Schema.Struct({\n reasoningContent: Schema.Union([\n Schema.Struct({\n reasoningText: Schema.Struct({\n text: Schema.String,\n signature: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({ redactedContent: Schema.String }),\n ]),\n})\n\nconst BedrockUserBlock = Schema.Union([\n BedrockTextBlock,\n BedrockMedia.ImageBlock,\n BedrockMedia.DocumentBlock,\n BedrockToolResultBlock,\n BedrockCache.CachePointBlock,\n])\ntype BedrockUserBlock = Schema.Schema.Type<typeof BedrockUserBlock>\n\nconst BedrockAssistantBlock = Schema.Union([\n BedrockTextBlock,\n BedrockReasoningBlock,\n BedrockToolUseBlock,\n BedrockCache.CachePointBlock,\n])\ntype BedrockAssistantBlock = Schema.Schema.Type<typeof BedrockAssistantBlock>\n\nconst BedrockMessage = Schema.Union([\n Schema.Struct({ role: Schema.Literal(\"user\"), content: Schema.Array(BedrockUserBlock) }),\n Schema.Struct({ role: Schema.Literal(\"assistant\"), content: Schema.Array(BedrockAssistantBlock) }),\n]).pipe(Schema.toTaggedUnion(\"role\"))\ntype BedrockMessage = Schema.Schema.Type<typeof BedrockMessage>\n\nconst BedrockSystemBlock = Schema.Union([BedrockTextBlock, BedrockCache.CachePointBlock])\ntype BedrockSystemBlock = Schema.Schema.Type<typeof BedrockSystemBlock>\n\nconst BedrockToolSpec = Schema.Struct({\n toolSpec: Schema.Struct({\n name: Schema.String,\n description: Schema.String,\n inputSchema: Schema.Struct({\n json: JsonObject,\n }),\n }),\n})\ntype BedrockToolSpec = Schema.Schema.Type<typeof BedrockToolSpec>\n\nconst BedrockTool = Schema.Union([BedrockToolSpec, BedrockCache.CachePointBlock])\ntype BedrockTool = Schema.Schema.Type<typeof BedrockTool>\n\nconst BedrockToolChoice = Schema.Union([\n Schema.Struct({ auto: Schema.Struct({}) }),\n Schema.Struct({ any: Schema.Struct({}) }),\n Schema.Struct({ tool: Schema.Struct({ name: Schema.String }) }),\n])\n\nconst BedrockBodyFields = {\n modelId: Schema.String,\n messages: Schema.Array(BedrockMessage),\n system: optionalArray(BedrockSystemBlock),\n inferenceConfig: Schema.optional(\n Schema.Struct({\n maxTokens: Schema.optional(Schema.Number),\n temperature: Schema.optional(Schema.Number),\n topP: Schema.optional(Schema.Number),\n stopSequences: optionalArray(Schema.String),\n }),\n ),\n toolConfig: Schema.optional(\n Schema.Struct({\n tools: Schema.Array(BedrockTool),\n toolChoice: Schema.optional(BedrockToolChoice),\n }),\n ),\n additionalModelRequestFields: Schema.optional(JsonObject),\n}\nconst BedrockConverseBody = Schema.Struct(BedrockBodyFields)\nexport type BedrockConverseBody = Schema.Schema.Type<typeof BedrockConverseBody>\n\nconst BedrockUsageSchema = Schema.Struct({\n inputTokens: Schema.optional(Schema.Number),\n outputTokens: Schema.optional(Schema.Number),\n totalTokens: Schema.optional(Schema.Number),\n cacheReadInputTokens: Schema.optional(Schema.Number),\n cacheWriteInputTokens: Schema.optional(Schema.Number),\n})\ntype BedrockUsageSchema = Schema.Schema.Type<typeof BedrockUsageSchema>\n\nconst BedrockStreamException = Schema.Struct({\n message: Schema.optional(Schema.String),\n originalMessage: Schema.optional(Schema.String),\n originalStatusCode: Schema.optional(Schema.Number),\n})\n\n// Streaming event shape — the AWS event stream wraps each JSON payload by its\n// `:event-type` header (e.g. `messageStart`, `contentBlockDelta`). We\n// reconstruct that wrapping in `decodeFrames` below so the event schema can\n// stay a plain discriminated record.\nconst BedrockEvent = Schema.Struct({\n messageStart: Schema.optional(Schema.Struct({ role: Schema.String })),\n contentBlockStart: Schema.optional(\n Schema.Struct({\n contentBlockIndex: Schema.Number,\n start: Schema.optional(\n Schema.Struct({\n toolUse: Schema.optional(Schema.Struct({ toolUseId: Schema.String, name: Schema.String })),\n }),\n ),\n }),\n ),\n contentBlockDelta: Schema.optional(\n Schema.Struct({\n contentBlockIndex: Schema.Number,\n delta: Schema.optional(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n toolUse: Schema.optional(Schema.Struct({ input: Schema.String })),\n reasoningContent: Schema.optional(\n Schema.Struct({\n text: Schema.optional(Schema.String),\n signature: Schema.optional(Schema.String),\n // Blob fields in Bedrock's JSON event stream are base64 strings.\n redactedContent: Schema.optional(Schema.String),\n // Vercel's Bedrock provider exposes the same delta under\n // Anthropic's shorter `data` spelling.\n data: Schema.optional(Schema.String),\n }),\n ),\n }),\n ),\n }),\n ),\n contentBlockStop: Schema.optional(Schema.Struct({ contentBlockIndex: Schema.Number })),\n messageStop: Schema.optional(\n Schema.Struct({\n stopReason: Schema.String,\n additionalModelResponseFields: Schema.optional(Schema.Unknown),\n }),\n ),\n metadata: Schema.optional(\n Schema.Struct({\n usage: Schema.optional(BedrockUsageSchema),\n metrics: Schema.optional(Schema.Unknown),\n }),\n ),\n exception: Schema.optional(Schema.Struct({ type: Schema.String, details: BedrockStreamException })),\n})\ntype BedrockEvent = Schema.Schema.Type<typeof BedrockEvent>\n\n// =============================================================================\n// Request Lowering\n// =============================================================================\nconst lowerToolSpec = (tool: ToolDefinition, inputSchema: JsonSchema): BedrockToolSpec => ({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: { json: inputSchema },\n },\n})\n\nconst lowerTools = (\n compatibility: LanguageModelToolSchemaCompatibility | undefined,\n breakpoints: BedrockCache.Breakpoints,\n tools: ReadonlyArray<ToolDefinition>,\n): BedrockTool[] => {\n const result: BedrockTool[] = []\n for (const tool of tools) {\n result.push(lowerToolSpec(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, compatibility)))\n const cachePoint = BedrockCache.block(breakpoints, tool.cache)\n if (cachePoint) result.push(cachePoint)\n }\n return result\n}\n\nconst textWithCache = (\n breakpoints: BedrockCache.Breakpoints,\n text: string,\n cache: CacheHint | undefined,\n): Array<BedrockTextBlock | BedrockCache.CachePointBlock> => {\n const cachePoint = BedrockCache.block(breakpoints, cache)\n return cachePoint ? [{ text }, cachePoint] : [{ text }]\n}\n\nconst lowerToolChoice = (toolChoice: NonNullable<LLMRequest[\"toolChoice\"]>) =>\n ProviderShared.matchToolChoice(\"Bedrock Converse\", toolChoice, {\n auto: () => ({ auto: {} }) as const,\n none: () => undefined,\n required: () => ({ any: {} }) as const,\n tool: (name) => ({ tool: { name } }) as const,\n })\n\nconst bedrockMetadata = (metadata: Record<string, unknown>): ProviderMetadata => ({ bedrock: metadata })\n\nconst reasoningSignature = (part: ReasoningPart) => {\n const bedrock = part.providerMetadata?.bedrock\n return (\n part.encrypted ??\n (ProviderShared.isRecord(bedrock) && typeof bedrock.signature === \"string\" ? bedrock.signature : undefined)\n )\n}\n\nconst reasoningRedactedData = (part: ReasoningPart) => {\n const bedrock = part.providerMetadata?.bedrock\n return ProviderShared.isRecord(bedrock) && typeof bedrock.redactedData === \"string\" ? bedrock.redactedData : undefined\n}\n\nconst lowerToolCall = (part: ToolCallPart): BedrockToolUseBlock => ({\n toolUse: {\n toolUseId: part.id,\n name: part.name,\n input: part.input,\n },\n})\n\nconst lowerToolResultContent = Effect.fn(\"BedrockConverse.lowerToolResultContent\")(function* (part: ToolResultPart) {\n if (part.result.type === \"text\" || part.result.type === \"error\")\n return [{ text: ProviderShared.toolResultText(part) }]\n if (part.result.type === \"json\") return [{ json: part.result.value }]\n\n const content: Array<Schema.Schema.Type<typeof BedrockToolResultContentItem>> = []\n for (const item of part.result.value) {\n if (item.type === \"text\") {\n content.push({ text: item.text })\n continue\n }\n const media = yield* BedrockMedia.lower({\n type: \"media\",\n mediaType: item.mime,\n data: item.uri,\n filename: item.name,\n })\n content.push(media)\n }\n return content\n})\n\nconst lowerToolResult = Effect.fn(\"BedrockConverse.lowerToolResult\")(function* (part: ToolResultPart) {\n return {\n toolResult: {\n toolUseId: part.id,\n content: yield* lowerToolResultContent(part),\n status: part.result.type === \"error\" ? \"error\" : \"success\",\n },\n } satisfies BedrockToolResultBlock\n})\n\nconst lowerMessages = Effect.fn(\"BedrockConverse.lowerMessages\")(function* (\n request: LLMRequest,\n breakpoints: BedrockCache.Breakpoints,\n) {\n const messages: BedrockMessage[] = []\n\n for (const message of request.messages) {\n if (message.role === \"system\") {\n const part = yield* ProviderShared.wrappedSystemUpdate(\"Bedrock Converse\", message)\n const content = textWithCache(breakpoints, part.text, part.cache)\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n continue\n }\n\n if (message.role === \"user\") {\n const content: BedrockUserBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"media\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"user\", [\"text\", \"media\"])\n if (part.type === \"text\") {\n content.push(...textWithCache(breakpoints, part.text, part.cache))\n continue\n }\n if (part.type === \"media\") {\n content.push(yield* BedrockMedia.lower(part))\n continue\n }\n }\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n continue\n }\n\n if (message.role === \"assistant\") {\n const content: BedrockAssistantBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"text\", \"reasoning\", \"tool-call\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"assistant\", [\n \"text\",\n \"reasoning\",\n \"tool-call\",\n ])\n if (part.type === \"text\") {\n content.push(...textWithCache(breakpoints, part.text, part.cache))\n continue\n }\n if (part.type === \"reasoning\") {\n const signature = reasoningSignature(part)\n const redactedData = reasoningRedactedData(part)\n if (signature === undefined && redactedData !== undefined) {\n content.push({ reasoningContent: { redactedContent: redactedData } })\n continue\n }\n content.push({ reasoningContent: { reasoningText: { text: part.text, signature } } })\n continue\n }\n if (part.type === \"tool-call\") {\n content.push(lowerToolCall(part))\n continue\n }\n }\n messages.push({ role: \"assistant\", content })\n continue\n }\n\n const content: BedrockUserBlock[] = []\n for (const part of message.content) {\n if (!ProviderShared.supportsContent(part, [\"tool-result\"]))\n return yield* ProviderShared.unsupportedContent(\"Bedrock Converse\", \"tool\", [\"tool-result\"])\n content.push(yield* lowerToolResult(part))\n const cachePoint = BedrockCache.block(breakpoints, part.cache)\n if (cachePoint) content.push(cachePoint)\n }\n const previous = messages.at(-1)\n if (previous?.role === \"user\")\n messages[messages.length - 1] = { role: \"user\", content: [...previous.content, ...content] }\n else messages.push({ role: \"user\", content })\n }\n\n return messages\n})\n\n// System prompts share the cache-point convention: emit the text block, then\n// optionally a positional `cachePoint` marker.\nconst lowerSystem = (\n breakpoints: BedrockCache.Breakpoints,\n system: ReadonlyArray<LLMRequest[\"system\"][number]>,\n): BedrockSystemBlock[] => system.flatMap((part) => textWithCache(breakpoints, part.text, part.cache))\n\nconst fromRequest = Effect.fn(\"BedrockConverse.fromRequest\")(function* (request: LLMRequest) {\n const toolChoice = request.toolChoice ? yield* lowerToolChoice(request.toolChoice) : undefined\n const generation = request.generation\n // Bedrock-Claude shares Anthropic's 4-breakpoint cap. Spend the budget in\n // tools → system → messages order to favour the highest-impact prefixes.\n const breakpoints = BedrockCache.breakpoints()\n const toolConfig =\n request.tools.length > 0\n ? {\n tools: lowerTools(request.model.compatibility?.toolSchema, breakpoints, request.tools),\n // Converse has no native \"none\". Keep definitions stable for prompt\n // caching and omit only the unsupported choice.\n toolChoice,\n }\n : undefined\n const system = request.system.length === 0 ? undefined : lowerSystem(breakpoints, request.system)\n const messages = yield* lowerMessages(request, breakpoints)\n if (breakpoints.dropped > 0) {\n yield* Effect.logWarning(\n `Bedrock Converse: dropped ${breakpoints.dropped} cache breakpoint(s); the API allows at most ${BedrockCache.BEDROCK_BREAKPOINT_CAP} per request.`,\n )\n }\n return {\n modelId: request.model.id,\n messages,\n system,\n inferenceConfig:\n generation?.maxTokens === undefined &&\n generation?.temperature === undefined &&\n generation?.topP === undefined &&\n (generation?.stop === undefined || generation.stop.length === 0)\n ? undefined\n : {\n maxTokens: generation?.maxTokens,\n temperature: generation?.temperature,\n topP: generation?.topP,\n stopSequences: generation?.stop,\n },\n toolConfig,\n // Converse's base inferenceConfig has no topK; Anthropic/Nova accept it\n // as a model-specific field, so it goes through additionalModelRequestFields.\n additionalModelRequestFields: generation?.topK === undefined ? undefined : { top_k: generation.topK },\n }\n})\n\n// =============================================================================\n// Stream Parsing\n// =============================================================================\nconst mapFinishReason = (reason: string): FinishReason => {\n if (reason === \"end_turn\" || reason === \"stop_sequence\") return \"stop\"\n if (reason === \"max_tokens\" || reason === \"model_context_window_exceeded\") return \"length\"\n if (reason === \"tool_use\") return \"tool-calls\"\n if (reason === \"content_filtered\" || reason === \"guardrail_intervened\") return \"content-filter\"\n if (reason === \"malformed_model_output\" || reason === \"malformed_tool_use\") return \"error\"\n return \"unknown\"\n}\n\n// AWS reports inputTokens separately from cache reads and writes.\n// Bedrock does not break reasoning out of outputTokens for current models.\nconst mapUsage = (usage: BedrockUsageSchema | undefined): Usage | undefined => {\n if (!usage) return undefined\n const inputTokens = ProviderShared.sumTokens(\n usage.inputTokens,\n usage.cacheReadInputTokens,\n usage.cacheWriteInputTokens,\n )\n return new Usage({\n inputTokens,\n outputTokens: usage.outputTokens,\n nonCachedInputTokens: usage.inputTokens,\n cacheReadInputTokens: usage.cacheReadInputTokens,\n cacheWriteInputTokens: usage.cacheWriteInputTokens,\n totalTokens: ProviderShared.totalTokens(inputTokens, usage.outputTokens, usage.totalTokens),\n providerMetadata: { bedrock: usage },\n })\n}\n\ninterface ParserState {\n readonly tools: ToolStream.State<number>\n // Bedrock splits the finish into `messageStop` (carries `stopReason`) and\n // `metadata` (carries usage). Hold the terminal event in state so `onHalt`\n // can emit exactly one finish after both chunks have had a chance to arrive.\n readonly pendingFinish: { readonly reason: FinishReasonDetails; readonly usage?: Usage } | undefined\n readonly hasToolCalls: boolean\n readonly lifecycle: Lifecycle.State\n readonly reasoningSignatures: Readonly<Record<number, string>>\n}\n\nconst step = (state: ParserState, event: BedrockEvent) =>\n Effect.gen(function* () {\n if (event.contentBlockStart?.start?.toolUse) {\n const index = event.contentBlockStart.contentBlockIndex\n const events: LLMEvent[] = []\n const lifecycle = Lifecycle.stepStart(state.lifecycle, events)\n return [\n {\n ...state,\n lifecycle,\n tools: ToolStream.start(state.tools, index, {\n id: event.contentBlockStart.start.toolUse.toolUseId,\n name: event.contentBlockStart.start.toolUse.name,\n }),\n },\n [\n ...events,\n LLMEvent.toolInputStart({\n id: event.contentBlockStart.start.toolUse.toolUseId,\n name: event.contentBlockStart.start.toolUse.name,\n }),\n ],\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.text) {\n const events: LLMEvent[] = []\n return [\n {\n ...state,\n lifecycle: Lifecycle.textDelta(\n state.lifecycle,\n events,\n `text-${event.contentBlockDelta.contentBlockIndex}`,\n event.contentBlockDelta.delta.text,\n ),\n },\n events,\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.reasoningContent) {\n const index = event.contentBlockDelta.contentBlockIndex\n const reasoning = event.contentBlockDelta.delta.reasoningContent\n const events: LLMEvent[] = []\n const redactedData = reasoning.redactedContent ?? reasoning.data\n const providerMetadata = reasoning.signature\n ? bedrockMetadata({ signature: reasoning.signature })\n : redactedData !== undefined\n ? bedrockMetadata({ redactedData })\n : undefined\n const lifecycle =\n reasoning.text !== undefined || providerMetadata !== undefined\n ? Lifecycle.reasoningDelta(\n state.lifecycle,\n events,\n `reasoning-${index}`,\n reasoning.text ?? \"\",\n providerMetadata,\n )\n : state.lifecycle\n return [\n {\n ...state,\n lifecycle,\n reasoningSignatures: reasoning.signature\n ? { ...state.reasoningSignatures, [index]: reasoning.signature }\n : state.reasoningSignatures,\n },\n events,\n ] as const\n }\n\n if (event.contentBlockDelta?.delta?.toolUse) {\n const index = event.contentBlockDelta.contentBlockIndex\n const result = ToolStream.appendExisting(\n ADAPTER,\n state.tools,\n index,\n event.contentBlockDelta.delta.toolUse.input,\n \"Bedrock Converse tool delta is missing its tool call\",\n )\n if (ToolStream.isError(result)) return yield* result\n const events: LLMEvent[] = []\n const lifecycle = result.events.length ? Lifecycle.stepStart(state.lifecycle, events) : state.lifecycle\n events.push(...result.events)\n return [{ ...state, lifecycle, tools: result.tools }, events] as const\n }\n\n if (event.contentBlockStop) {\n const index = event.contentBlockStop.contentBlockIndex\n const result = yield* ToolStream.finish(ADAPTER, state.tools, index)\n const events: LLMEvent[] = []\n const resultEvents = result.events ?? []\n const lifecycle = resultEvents.length\n ? Lifecycle.stepStart(state.lifecycle, events)\n : Lifecycle.reasoningEnd(\n Lifecycle.textEnd(state.lifecycle, events, `text-${index}`),\n events,\n `reasoning-${index}`,\n state.reasoningSignatures[index]\n ? bedrockMetadata({ signature: state.reasoningSignatures[index] })\n : undefined,\n )\n events.push(...resultEvents)\n return [\n {\n ...state,\n hasToolCalls:\n resultEvents.some((event) => LLMEvent.is.toolCall(event) || LLMEvent.is.toolInputError(event)) ||\n state.hasToolCalls,\n lifecycle,\n tools: result.tools,\n reasoningSignatures: Object.fromEntries(\n Object.entries(state.reasoningSignatures).filter(([key]) => key !== String(index)),\n ),\n },\n events,\n ] as const\n }\n\n if (event.messageStop) {\n return [\n {\n ...state,\n pendingFinish: {\n reason: {\n normalized: mapFinishReason(event.messageStop.stopReason),\n raw: event.messageStop.stopReason,\n },\n usage: state.pendingFinish?.usage,\n },\n },\n [],\n ] as const\n }\n\n if (event.metadata) {\n const usage = mapUsage(event.metadata.usage) ?? state.pendingFinish?.usage\n return [\n {\n ...state,\n pendingFinish: {\n reason: state.pendingFinish?.reason ?? { normalized: \"stop\" },\n usage,\n },\n },\n [],\n ] as const\n }\n\n if (event.exception) {\n return yield* new AIError({\n module: ADAPTER,\n method: \"stream\",\n reason: classifyProviderFailure({\n message:\n event.exception.details.message ?? event.exception.details.originalMessage ?? \"Bedrock Converse stream error\",\n code: event.exception.type,\n }),\n })\n }\n\n return [state, []] as const\n })\n\nconst framing = BedrockEventStream.framing(ADAPTER)\n\nconst onHalt = (state: ParserState): ReadonlyArray<LLMEvent> =>\n state.pendingFinish\n ? (() => {\n const events: LLMEvent[] = []\n Lifecycle.finish(state.lifecycle, events, {\n reason: {\n ...state.pendingFinish.reason,\n normalized:\n state.pendingFinish.reason.normalized === \"stop\" && state.hasToolCalls\n ? \"tool-calls\"\n : state.pendingFinish.reason.normalized,\n },\n usage: state.pendingFinish.usage,\n })\n return events\n })()\n : []\n\n// =============================================================================\n// Protocol And Bedrock Route\n// =============================================================================\n/**\n * The Bedrock Converse protocol — request body construction, body schema, and\n * the streaming-event state machine.\n */\nexport const protocol = Protocol.make({\n id: ADAPTER,\n body: {\n schema: BedrockConverseBody,\n from: fromRequest,\n },\n stream: {\n event: BedrockEvent,\n initial: () => ({\n tools: ToolStream.empty<number>(),\n pendingFinish: undefined,\n hasToolCalls: false,\n lifecycle: Lifecycle.initial(),\n reasoningSignatures: {},\n }),\n step,\n onHalt: (state) => Effect.succeed(onHalt(state)),\n },\n})\n\nexport const route = Route.make({\n id: ADAPTER,\n provider: \"bedrock\",\n providerMetadataKey: \"bedrock\",\n protocol,\n // Bedrock's URL embeds the region in the route endpoint host and the\n // validated modelId in the path. We read the validated body so the URL\n // matches the body that gets signed.\n endpoint: Endpoint.path<BedrockConverseBody>(\n ({ body }) => `/model/${encodeURIComponent(body.modelId)}/converse-stream`,\n ),\n auth: BedrockAuth.auth,\n framing,\n})\n\nexport const sigV4Auth = BedrockAuth.sigV4\n\nexport * as BedrockConverse from \"./bedrock-converse.js\"\n", | ||
| "import type { RouteDefaultsInput } from \"../route/client.js\"\nimport { Auth } from \"../route/auth.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as BedrockConverse from \"../protocols/bedrock-converse.js\"\nimport type { BedrockCredentials } from \"../protocols/bedrock-converse.js\"\n\nexport const id = ProviderID.make(\"amazon-bedrock\")\n\nexport type Config = RouteDefaultsInput & {\n readonly apiKey?: string\n readonly headers?: Record<string, string>\n readonly credentials?: BedrockCredentials\n /** AWS region. Defaults to `us-east-1` when neither this nor `credentials.region` is set. */\n readonly region?: string\n /** Override the computed `https://bedrock-runtime.<region>.amazonaws.com` URL. */\n readonly baseURL?: string\n}\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly auth?: \"bearer\" | \"sigv4\"\n readonly baseURL?: string\n readonly credentials?: BedrockCredentials\n readonly region?: string\n readonly topP?: number\n}\nexport const routes = [BedrockConverse.route]\n\nconst bedrockBaseURL = (region: string) => `https://bedrock-runtime.${region}.amazonaws.com`\n\nconst configuredRoute = (input: Config) => {\n const { apiKey, credentials, region, baseURL, ...rest } = input\n const resolvedRegion = region ?? credentials?.region ?? \"us-east-1\"\n return BedrockConverse.route.with({\n ...rest,\n provider: id,\n endpoint: { baseURL: baseURL ?? bedrockBaseURL(resolvedRegion) },\n auth: apiKey === undefined ? BedrockConverse.sigV4Auth(credentials) : Auth.bearer(apiKey),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = configure()\nexport const model: ProviderPackage.Definition<Settings>[\"model\"] = (modelID, settings) => {\n if (settings.auth === \"bearer\" && settings.apiKey === undefined)\n throw new Error(\"Amazon Bedrock bearer auth requires apiKey\")\n if (settings.auth === \"sigv4\" && settings.apiKey !== undefined)\n throw new Error(\"Amazon Bedrock SigV4 auth does not accept apiKey\")\n return configure({\n apiKey: settings.auth === \"sigv4\" ? undefined : settings.apiKey,\n baseURL: settings.baseURL,\n credentials: settings.credentials,\n generation: settings.topP === undefined ? undefined : { topP: settings.topP },\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n region: settings.region,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";i3BAUA,IAAM,GAAa,IAAI,EAAiB,EAAQ,CAAQ,EAClD,GAAO,IAAI,YAUX,GAAuC,CAAE,OAAQ,IAAI,WAAW,CAAC,EAAG,OAAQ,CAAE,EAE9E,GAAc,CAAC,EAAyB,IAAwC,CACpF,IAAM,EAAY,EAAM,OAAO,OAAS,EAAM,OAIxC,EAAO,IAAI,WAAW,EAAY,EAAM,MAAM,EAGpD,OAFA,EAAK,IAAI,EAAM,OAAO,SAAS,EAAM,MAAM,EAAG,CAAC,EAC/C,EAAK,IAAI,EAAO,CAAS,EAClB,CAAE,OAAQ,EAAM,OAAQ,CAAE,GAG7B,GAAgB,CAAC,IAAkB,CAAC,EAAyB,IACjE,EAAO,IAAI,SAAU,EAAG,CACtB,IAAI,EAAS,GAAY,EAAO,CAAK,EAC/B,EAAgB,CAAC,EACvB,MAAO,EAAO,OAAO,OAAS,EAAO,QAAU,EAAG,CAChD,IAAM,EAAO,EAAO,OAAO,SAAS,EAAO,MAAM,EAC3C,EAAc,IAAI,SAAS,EAAK,OAAQ,EAAK,WAAY,EAAK,UAAU,EAAE,UAAU,EAAG,EAAK,EAClG,GAAI,EAAK,OAAS,EAAa,MAE/B,IAAM,EAAU,MAAO,EAAO,IAAI,CAChC,IAAK,IAAM,GAAW,OAAO,EAAK,SAAS,EAAG,CAAW,CAAC,EAC1D,MAAO,CAAC,IACN,EAAe,WACb,EACA,yDACE,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAEzD,CACJ,CAAC,EACD,EAAS,CAAE,OAAQ,EAAO,OAAQ,OAAQ,EAAO,OAAS,CAAY,EAEtE,IAAM,EAAc,EAAQ,QAAQ,kBAAkB,MACtD,GAAI,IAAgB,QAAS,CAC3B,IAAM,EAAO,EAAQ,QAAQ,gBAAgB,MACvC,GAAU,EAAQ,QAAQ,mBAAmB,MACnD,OAAO,MAAO,EAAe,WAC3B,EACA,CAAC,EAAM,EAAO,EAAE,OAAO,CAAC,KAA2B,OAAO,KAAU,QAAQ,EAAE,KAAK,IAAI,GACrF,qCACJ,EAEF,IAAM,EACJ,IAAgB,QACZ,EAAQ,QAAQ,gBAAgB,MAChC,IAAgB,YACd,EAAQ,QAAQ,oBAAoB,MACpC,OACR,GAAI,OAAO,IAAc,SAAU,SACnC,IAAM,EAAU,GAAK,OAAO,EAAQ,IAAI,EACxC,GAAI,CAAC,EAAS,SAKd,IAAM,EAAU,MAAO,EAAe,UACpC,EACA,EACA,uDACF,EACA,OAAO,EAAO,EACd,EAAI,KAAK,IAAgB,YAAc,CAAE,UAAW,CAAE,KAAM,EAAW,QAAS,CAAO,CAAE,EAAI,EAAG,GAAY,CAAO,CAAC,EAEtH,MAAO,CAAC,EAAQ,CAAG,EACpB,EAQU,GAAU,CAAC,KAA+C,CACrE,GAAI,mBACJ,MAAO,CAAC,IAAU,EAAM,KAAK,EAAO,eAAe,IAAM,GAAoB,GAAc,CAAK,CAAC,CAAC,CACpG,0HC3FO,IAAM,GAAkB,EAAO,OAAO,CAC3C,WAAY,EAAO,OAAO,CACxB,KAAM,EAAO,IAAI,SAAS,EAC1B,IAAK,EAAO,SAAS,EAAO,SAAS,CAAC,KAAM,IAAI,CAAC,CAAC,CACpD,CAAC,CACH,CAAC,EAKY,EAAyB,EAGzB,GAAc,IAAM,EAAe,CAAsB,EAEhE,GAA8B,CAAE,WAAY,CAAE,KAAM,SAAU,CAAE,EAChE,GAA8B,CAAE,WAAY,CAAE,KAAM,UAAW,IAAK,IAAK,CAAE,EAEpE,GAAQ,CAAC,EAA0B,IAA8D,CAC5G,GAAI,GAAO,OAAS,aAAe,GAAO,OAAS,aAAc,OACjE,GAAI,EAAY,WAAa,EAAG,CAC9B,EAAY,SAAW,EACvB,OAGF,OADA,EAAY,WAAa,EAClB,EAAU,EAAM,UAAU,IAAM,KAAO,GAAa,kIC1BtD,IAAM,EAAc,EAAO,SAAS,CAAC,MAAO,OAAQ,MAAO,MAAM,CAAC,EAG5D,GAAa,EAAO,OAAO,CACtC,MAAO,EAAO,OAAO,CACnB,OAAQ,EACR,OAAQ,EAAO,OAAO,CAAE,MAAO,EAAO,MAAO,CAAC,CAChD,CAAC,CACH,CAAC,EAKY,EAAiB,EAAO,SAAS,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,OAAQ,MAAO,IAAI,CAAC,EAGlG,GAAgB,EAAO,OAAO,CACzC,SAAU,EAAO,OAAO,CACtB,OAAQ,EACR,KAAM,EAAO,OACb,OAAQ,EAAO,OAAO,CAAE,MAAO,EAAO,MAAO,CAAC,CAChD,CAAC,CACH,CAAC,EAGK,GAAgB,CACpB,YAAa,MACb,aAAc,OACd,YAAa,OACb,YAAa,MACb,aAAc,MAChB,EAEM,GAAmB,CACvB,kBAAmB,MACnB,WAAY,MACZ,qBAAsB,MACtB,0EAA2E,OAC3E,2BAA4B,MAC5B,oEAAqE,OACrE,YAAa,OACb,aAAc,MACd,gBAAiB,IACnB,EAEM,GAAgB,CAAC,EAAc,EAAwB,KAAkC,CAC7F,SAAU,CACR,SACA,OACA,OAAQ,CAAE,OAAM,CAClB,CACF,GAOa,GAAQ,EAAO,GAAG,oBAAoB,EAAE,SAAU,CAAC,EAAiB,CAC/E,IAAM,EAAO,EAAK,UAAU,YAAY,EAClC,EAAc,GAAc,GAClC,GAAI,EAAa,CACf,IAAM,EAAQ,EAAe,eAAe,CAAI,EAChD,MAAO,CAAE,MAAO,CAAE,OAAQ,EAAa,OAAQ,CAAE,MAAO,EAAM,MAAO,CAAE,CAAE,EAE3E,GAAI,EAAK,WAAW,QAAQ,EAC1B,OAAO,MAAO,EAAe,eAAe,sDAAsD,EAAK,WAAW,EACpH,IAAM,EAAiB,GAAiB,GACxC,GAAI,EAAgB,CAClB,GAAI,CAAC,EAAK,SACR,OAAO,MAAO,EAAe,eAAe,qDAAqD,EACnG,IAAM,EAAQ,EAAe,eAAe,CAAI,EAChD,OAAO,GAAc,EAAK,SAAU,EAAgB,EAAM,MAAM,EAElE,OAAO,MAAO,EAAe,eAAe,gDAAgD,EAAK,WAAW,EAC7G,ECnDD,IAAM,EAAU,mBAOV,EAAmB,EAAO,OAAO,CACrC,KAAM,EAAO,MACf,CAAC,EAGK,GAAsB,EAAO,OAAO,CACxC,QAAS,EAAO,OAAO,CACrB,UAAW,EAAO,OAClB,KAAM,EAAO,OACb,MAAO,EAAO,OAChB,CAAC,CACH,CAAC,EAGK,GAA+B,EAAO,MAAM,CAChD,EAAO,OAAO,CAAE,KAAM,EAAO,MAAO,CAAC,EACrC,EAAO,OAAO,CAAE,KAAM,EAAO,OAAQ,CAAC,EACtC,EAAa,WACb,EAAa,aACf,CAAC,EAEK,GAAyB,EAAO,OAAO,CAC3C,WAAY,EAAO,OAAO,CACxB,UAAW,EAAO,OAClB,QAAS,EAAO,MAAM,EAA4B,EAClD,OAAQ,EAAO,SAAS,EAAO,SAAS,CAAC,UAAW,OAAO,CAAC,CAAC,CAC/D,CAAC,CACH,CAAC,EAGK,GAAwB,EAAO,OAAO,CAC1C,iBAAkB,EAAO,MAAM,CAC7B,EAAO,OAAO,CACZ,cAAe,EAAO,OAAO,CAC3B,KAAM,EAAO,OACb,UAAW,EAAO,SAAS,EAAO,MAAM,CAC1C,CAAC,CACH,CAAC,EACD,EAAO,OAAO,CAAE,gBAAiB,EAAO,MAAO,CAAC,CAClD,CAAC,CACH,CAAC,EAEK,GAAmB,EAAO,MAAM,CACpC,EACA,EAAa,WACb,EAAa,cACb,GACA,EAAa,eACf,CAAC,EAGK,GAAwB,EAAO,MAAM,CACzC,EACA,GACA,GACA,EAAa,eACf,CAAC,EAGK,GAAiB,EAAO,MAAM,CAClC,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,MAAM,EAAG,QAAS,EAAO,MAAM,EAAgB,CAAE,CAAC,EACvF,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,WAAW,EAAG,QAAS,EAAO,MAAM,EAAqB,CAAE,CAAC,CACnG,CAAC,EAAE,KAAK,EAAO,cAAc,MAAM,CAAC,EAG9B,GAAqB,EAAO,MAAM,CAAC,EAAkB,EAAa,eAAe,CAAC,EAGlF,GAAkB,EAAO,OAAO,CACpC,SAAU,EAAO,OAAO,CACtB,KAAM,EAAO,OACb,YAAa,EAAO,OACpB,YAAa,EAAO,OAAO,CACzB,KAAM,CACR,CAAC,CACH,CAAC,CACH,CAAC,EAGK,GAAc,EAAO,MAAM,CAAC,GAAiB,EAAa,eAAe,CAAC,EAG1E,GAAoB,EAAO,MAAM,CACrC,EAAO,OAAO,CAAE,KAAM,EAAO,OAAO,CAAC,CAAC,CAAE,CAAC,EACzC,EAAO,OAAO,CAAE,IAAK,EAAO,OAAO,CAAC,CAAC,CAAE,CAAC,EACxC,EAAO,OAAO,CAAE,KAAM,EAAO,OAAO,CAAE,KAAM,EAAO,MAAO,CAAC,CAAE,CAAC,CAChE,CAAC,EAEK,GAAoB,CACxB,QAAS,EAAO,OAChB,SAAU,EAAO,MAAM,EAAc,EACrC,OAAQ,EAAc,EAAkB,EACxC,gBAAiB,EAAO,SACtB,EAAO,OAAO,CACZ,UAAW,EAAO,SAAS,EAAO,MAAM,EACxC,YAAa,EAAO,SAAS,EAAO,MAAM,EAC1C,KAAM,EAAO,SAAS,EAAO,MAAM,EACnC,cAAe,EAAc,EAAO,MAAM,CAC5C,CAAC,CACH,EACA,WAAY,EAAO,SACjB,EAAO,OAAO,CACZ,MAAO,EAAO,MAAM,EAAW,EAC/B,WAAY,EAAO,SAAS,EAAiB,CAC/C,CAAC,CACH,EACA,6BAA8B,EAAO,SAAS,CAAU,CAC1D,EACM,GAAsB,EAAO,OAAO,EAAiB,EAGrD,GAAqB,EAAO,OAAO,CACvC,YAAa,EAAO,SAAS,EAAO,MAAM,EAC1C,aAAc,EAAO,SAAS,EAAO,MAAM,EAC3C,YAAa,EAAO,SAAS,EAAO,MAAM,EAC1C,qBAAsB,EAAO,SAAS,EAAO,MAAM,EACnD,sBAAuB,EAAO,SAAS,EAAO,MAAM,CACtD,CAAC,EAGK,GAAyB,EAAO,OAAO,CAC3C,QAAS,EAAO,SAAS,EAAO,MAAM,EACtC,gBAAiB,EAAO,SAAS,EAAO,MAAM,EAC9C,mBAAoB,EAAO,SAAS,EAAO,MAAM,CACnD,CAAC,EAMK,GAAe,EAAO,OAAO,CACjC,aAAc,EAAO,SAAS,EAAO,OAAO,CAAE,KAAM,EAAO,MAAO,CAAC,CAAC,EACpE,kBAAmB,EAAO,SACxB,EAAO,OAAO,CACZ,kBAAmB,EAAO,OAC1B,MAAO,EAAO,SACZ,EAAO,OAAO,CACZ,QAAS,EAAO,SAAS,EAAO,OAAO,CAAE,UAAW,EAAO,OAAQ,KAAM,EAAO,MAAO,CAAC,CAAC,CAC3F,CAAC,CACH,CACF,CAAC,CACH,EACA,kBAAmB,EAAO,SACxB,EAAO,OAAO,CACZ,kBAAmB,EAAO,OAC1B,MAAO,EAAO,SACZ,EAAO,OAAO,CACZ,KAAM,EAAO,SAAS,EAAO,MAAM,EACnC,QAAS,EAAO,SAAS,EAAO,OAAO,CAAE,MAAO,EAAO,MAAO,CAAC,CAAC,EAChE,iBAAkB,EAAO,SACvB,EAAO,OAAO,CACZ,KAAM,EAAO,SAAS,EAAO,MAAM,EACnC,UAAW,EAAO,SAAS,EAAO,MAAM,EAExC,gBAAiB,EAAO,SAAS,EAAO,MAAM,EAG9C,KAAM,EAAO,SAAS,EAAO,MAAM,CACrC,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,CACH,EACA,iBAAkB,EAAO,SAAS,EAAO,OAAO,CAAE,kBAAmB,EAAO,MAAO,CAAC,CAAC,EACrF,YAAa,EAAO,SAClB,EAAO,OAAO,CACZ,WAAY,EAAO,OACnB,8BAA+B,EAAO,SAAS,EAAO,OAAO,CAC/D,CAAC,CACH,EACA,SAAU,EAAO,SACf,EAAO,OAAO,CACZ,MAAO,EAAO,SAAS,EAAkB,EACzC,QAAS,EAAO,SAAS,EAAO,OAAO,CACzC,CAAC,CACH,EACA,UAAW,EAAO,SAAS,EAAO,OAAO,CAAE,KAAM,EAAO,OAAQ,QAAS,EAAuB,CAAC,CAAC,CACpG,CAAC,EAMK,GAAgB,CAAC,EAAsB,KAA8C,CACzF,SAAU,CACR,KAAM,EAAK,KACX,YAAa,EAAK,YAClB,YAAa,CAAE,KAAM,CAAY,CACnC,CACF,GAEM,GAAa,CACjB,EACA,EACA,IACkB,CAClB,IAAM,EAAwB,CAAC,EAC/B,QAAW,KAAQ,EAAO,CACxB,EAAO,KAAK,GAAc,EAAM,EAAqB,mBAAmB,EAAK,YAAa,CAAa,CAAC,CAAC,EACzG,IAAM,EAAa,EAAa,MAAM,EAAa,EAAK,KAAK,EAC7D,GAAI,EAAY,EAAO,KAAK,CAAU,EAExC,OAAO,GAGH,EAAgB,CACpB,EACA,EACA,IAC2D,CAC3D,IAAM,EAAa,EAAa,MAAM,EAAa,CAAK,EACxD,OAAO,EAAa,CAAC,CAAE,MAAK,EAAG,CAAU,EAAI,CAAC,CAAE,MAAK,CAAC,GAGlD,GAAkB,CAAC,IACvB,EAAe,gBAAgB,mBAAoB,EAAY,CAC7D,KAAM,KAAO,CAAE,KAAM,CAAC,CAAE,GACxB,KAAM,IAAG,CAAG,QACZ,SAAU,KAAO,CAAE,IAAK,CAAC,CAAE,GAC3B,KAAM,CAAC,KAAU,CAAE,KAAM,CAAE,MAAK,CAAE,EACpC,CAAC,EAEG,EAAkB,CAAC,KAAyD,CAAE,QAAS,CAAS,GAEhG,GAAqB,CAAC,IAAwB,CAClD,IAAM,EAAU,EAAK,kBAAkB,QACvC,OACE,EAAK,YACJ,EAAe,SAAS,CAAO,GAAK,OAAO,EAAQ,YAAc,SAAW,EAAQ,UAAY,SAI/F,GAAwB,CAAC,IAAwB,CACrD,IAAM,EAAU,EAAK,kBAAkB,QACvC,OAAO,EAAe,SAAS,CAAO,GAAK,OAAO,EAAQ,eAAiB,SAAW,EAAQ,aAAe,QAGzG,GAAgB,CAAC,KAA6C,CAClE,QAAS,CACP,UAAW,EAAK,GAChB,KAAM,EAAK,KACX,MAAO,EAAK,KACd,CACF,GAEM,GAAyB,EAAO,GAAG,wCAAwC,EAAE,SAAU,CAAC,EAAsB,CAClH,GAAI,EAAK,OAAO,OAAS,QAAU,EAAK,OAAO,OAAS,QACtD,MAAO,CAAC,CAAE,KAAM,EAAe,eAAe,CAAI,CAAE,CAAC,EACvD,GAAI,EAAK,OAAO,OAAS,OAAQ,MAAO,CAAC,CAAE,KAAM,EAAK,OAAO,KAAM,CAAC,EAEpE,IAAM,EAA0E,CAAC,EACjF,QAAW,KAAQ,EAAK,OAAO,MAAO,CACpC,GAAI,EAAK,OAAS,OAAQ,CACxB,EAAQ,KAAK,CAAE,KAAM,EAAK,IAAK,CAAC,EAChC,SAEF,IAAM,EAAQ,MAAO,EAAa,MAAM,CACtC,KAAM,QACN,UAAW,EAAK,KAChB,KAAM,EAAK,IACX,SAAU,EAAK,IACjB,CAAC,EACD,EAAQ,KAAK,CAAK,EAEpB,OAAO,EACR,EAEK,GAAkB,EAAO,GAAG,iCAAiC,EAAE,SAAU,CAAC,EAAsB,CACpG,MAAO,CACL,WAAY,CACV,UAAW,EAAK,GAChB,QAAS,MAAO,GAAuB,CAAI,EAC3C,OAAQ,EAAK,OAAO,OAAS,QAAU,QAAU,SACnD,CACF,EACD,EAEK,GAAgB,EAAO,GAAG,+BAA+B,EAAE,SAAU,CACzE,EACA,EACA,CACA,IAAM,EAA6B,CAAC,EAEpC,QAAW,KAAW,EAAQ,SAAU,CACtC,GAAI,EAAQ,OAAS,SAAU,CAC7B,IAAM,EAAO,MAAO,EAAe,oBAAoB,mBAAoB,CAAO,EAC5E,EAAU,EAAc,EAAa,EAAK,KAAM,EAAK,KAAK,EAC1D,EAAW,EAAS,GAAG,EAAE,EAC/B,GAAI,GAAU,OAAS,OACrB,EAAS,EAAS,OAAS,GAAK,CAAE,KAAM,OAAQ,QAAS,CAAC,GAAG,EAAS,QAAS,GAAG,CAAO,CAAE,EACxF,OAAS,KAAK,CAAE,KAAM,OAAQ,SAAQ,CAAC,EAC5C,SAGF,GAAI,EAAQ,OAAS,OAAQ,CAC3B,IAAM,EAA8B,CAAC,EACrC,QAAW,KAAQ,EAAQ,QAAS,CAClC,GAAI,CAAC,EAAe,gBAAgB,EAAM,CAAC,OAAQ,OAAO,CAAC,EACzD,OAAO,MAAO,EAAe,mBAAmB,mBAAoB,OAAQ,CAAC,OAAQ,OAAO,CAAC,EAC/F,GAAI,EAAK,OAAS,OAAQ,CACxB,EAAQ,KAAK,GAAG,EAAc,EAAa,EAAK,KAAM,EAAK,KAAK,CAAC,EACjE,SAEF,GAAI,EAAK,OAAS,QAAS,CACzB,EAAQ,KAAK,MAAO,EAAa,MAAM,CAAI,CAAC,EAC5C,UAGJ,IAAM,EAAW,EAAS,GAAG,EAAE,EAC/B,GAAI,GAAU,OAAS,OACrB,EAAS,EAAS,OAAS,GAAK,CAAE,KAAM,OAAQ,QAAS,CAAC,GAAG,EAAS,QAAS,GAAG,CAAO,CAAE,EACxF,OAAS,KAAK,CAAE,KAAM,OAAQ,SAAQ,CAAC,EAC5C,SAGF,GAAI,EAAQ,OAAS,YAAa,CAChC,IAAM,EAAmC,CAAC,EAC1C,QAAW,KAAQ,EAAQ,QAAS,CAClC,GAAI,CAAC,EAAe,gBAAgB,EAAM,CAAC,OAAQ,YAAa,WAAW,CAAC,EAC1E,OAAO,MAAO,EAAe,mBAAmB,mBAAoB,YAAa,CAC/E,OACA,YACA,WACF,CAAC,EACH,GAAI,EAAK,OAAS,OAAQ,CACxB,EAAQ,KAAK,GAAG,EAAc,EAAa,EAAK,KAAM,EAAK,KAAK,CAAC,EACjE,SAEF,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAY,GAAmB,CAAI,EACnC,EAAe,GAAsB,CAAI,EAC/C,GAAI,IAAc,QAAa,IAAiB,OAAW,CACzD,EAAQ,KAAK,CAAE,iBAAkB,CAAE,gBAAiB,CAAa,CAAE,CAAC,EACpE,SAEF,EAAQ,KAAK,CAAE,iBAAkB,CAAE,cAAe,CAAE,KAAM,EAAK,KAAM,WAAU,CAAE,CAAE,CAAC,EACpF,SAEF,GAAI,EAAK,OAAS,YAAa,CAC7B,EAAQ,KAAK,GAAc,CAAI,CAAC,EAChC,UAGJ,EAAS,KAAK,CAAE,KAAM,YAAa,SAAQ,CAAC,EAC5C,SAGF,IAAM,EAA8B,CAAC,EACrC,QAAW,KAAQ,EAAQ,QAAS,CAClC,GAAI,CAAC,EAAe,gBAAgB,EAAM,CAAC,aAAa,CAAC,EACvD,OAAO,MAAO,EAAe,mBAAmB,mBAAoB,OAAQ,CAAC,aAAa,CAAC,EAC7F,EAAQ,KAAK,MAAO,GAAgB,CAAI,CAAC,EACzC,IAAM,EAAa,EAAa,MAAM,EAAa,EAAK,KAAK,EAC7D,GAAI,EAAY,EAAQ,KAAK,CAAU,EAEzC,IAAM,EAAW,EAAS,GAAG,EAAE,EAC/B,GAAI,GAAU,OAAS,OACrB,EAAS,EAAS,OAAS,GAAK,CAAE,KAAM,OAAQ,QAAS,CAAC,GAAG,EAAS,QAAS,GAAG,CAAO,CAAE,EACxF,OAAS,KAAK,CAAE,KAAM,OAAQ,SAAQ,CAAC,EAG9C,OAAO,EACR,EAIK,GAAc,CAClB,EACA,IACyB,EAAO,QAAQ,CAAC,IAAS,EAAc,EAAa,EAAK,KAAM,EAAK,KAAK,CAAC,EAE/F,GAAc,EAAO,GAAG,6BAA6B,EAAE,SAAU,CAAC,EAAqB,CAC3F,IAAM,EAAa,EAAQ,WAAa,MAAO,GAAgB,EAAQ,UAAU,EAAI,OAC/E,EAAa,EAAQ,WAGrB,EAAc,EAAa,YAAY,EACvC,EACJ,EAAQ,MAAM,OAAS,EACnB,CACE,MAAO,GAAW,EAAQ,MAAM,eAAe,WAAY,EAAa,EAAQ,KAAK,EAGrF,YACF,EACA,OACA,EAAS,EAAQ,OAAO,SAAW,EAAI,OAAY,GAAY,EAAa,EAAQ,MAAM,EAC1F,EAAW,MAAO,GAAc,EAAS,CAAW,EAC1D,GAAI,EAAY,QAAU,EACxB,MAAO,EAAO,WACZ,6BAA6B,EAAY,uDAAuD,EAAa,qCAC/G,EAEF,MAAO,CACL,QAAS,EAAQ,MAAM,GACvB,WACA,SACA,gBACE,GAAY,YAAc,QAC1B,GAAY,cAAgB,QAC5B,GAAY,OAAS,SACpB,GAAY,OAAS,QAAa,EAAW,KAAK,SAAW,GAC1D,OACA,CACE,UAAW,GAAY,UACvB,YAAa,GAAY,YACzB,KAAM,GAAY,KAClB,cAAe,GAAY,IAC7B,EACN,aAGA,6BAA8B,GAAY,OAAS,OAAY,OAAY,CAAE,MAAO,EAAW,IAAK,CACtG,EACD,EAKK,GAAkB,CAAC,IAAiC,CACxD,GAAI,IAAW,YAAc,IAAW,gBAAiB,MAAO,OAChE,GAAI,IAAW,cAAgB,IAAW,gCAAiC,MAAO,SAClF,GAAI,IAAW,WAAY,MAAO,aAClC,GAAI,IAAW,oBAAsB,IAAW,uBAAwB,MAAO,iBAC/E,GAAI,IAAW,0BAA4B,IAAW,qBAAsB,MAAO,QACnF,MAAO,WAKH,GAAW,CAAC,IAA6D,CAC7E,GAAI,CAAC,EAAO,OACZ,IAAM,EAAc,EAAe,UACjC,EAAM,YACN,EAAM,qBACN,EAAM,qBACR,EACA,OAAO,IAAI,EAAM,CACf,cACA,aAAc,EAAM,aACpB,qBAAsB,EAAM,YAC5B,qBAAsB,EAAM,qBAC5B,sBAAuB,EAAM,sBAC7B,YAAa,EAAe,YAAY,EAAa,EAAM,aAAc,EAAM,WAAW,EAC1F,iBAAkB,CAAE,QAAS,CAAM,CACrC,CAAC,GAcG,GAAO,CAAC,EAAoB,IAChC,EAAO,IAAI,SAAU,EAAG,CACtB,GAAI,EAAM,mBAAmB,OAAO,QAAS,CAC3C,IAAM,EAAQ,EAAM,kBAAkB,kBAChC,EAAqB,CAAC,EACtB,EAAY,EAAU,UAAU,EAAM,UAAW,CAAM,EAC7D,MAAO,CACL,IACK,EACH,YACA,MAAO,EAAW,MAAM,EAAM,MAAO,EAAO,CAC1C,GAAI,EAAM,kBAAkB,MAAM,QAAQ,UAC1C,KAAM,EAAM,kBAAkB,MAAM,QAAQ,IAC9C,CAAC,CACH,EACA,CACE,GAAG,EACH,EAAS,eAAe,CACtB,GAAI,EAAM,kBAAkB,MAAM,QAAQ,UAC1C,KAAM,EAAM,kBAAkB,MAAM,QAAQ,IAC9C,CAAC,CACH,CACF,EAGF,GAAI,EAAM,mBAAmB,OAAO,KAAM,CACxC,IAAM,EAAqB,CAAC,EAC5B,MAAO,CACL,IACK,EACH,UAAW,EAAU,UACnB,EAAM,UACN,EACA,QAAQ,EAAM,kBAAkB,oBAChC,EAAM,kBAAkB,MAAM,IAChC,CACF,EACA,CACF,EAGF,GAAI,EAAM,mBAAmB,OAAO,iBAAkB,CACpD,IAAM,EAAQ,EAAM,kBAAkB,kBAChC,EAAY,EAAM,kBAAkB,MAAM,iBAC1C,EAAqB,CAAC,EACtB,EAAe,EAAU,iBAAmB,EAAU,KACtD,EAAmB,EAAU,UAC/B,EAAgB,CAAE,UAAW,EAAU,SAAU,CAAC,EAClD,IAAiB,OACf,EAAgB,CAAE,cAAa,CAAC,EAChC,OACA,EACJ,EAAU,OAAS,QAAa,IAAqB,OACjD,EAAU,eACR,EAAM,UACN,EACA,aAAa,IACb,EAAU,MAAQ,GAClB,CACF,EACA,EAAM,UACZ,MAAO,CACL,IACK,EACH,YACA,oBAAqB,EAAU,UAC3B,IAAK,EAAM,qBAAsB,GAAQ,EAAU,SAAU,EAC7D,EAAM,mBACZ,EACA,CACF,EAGF,GAAI,EAAM,mBAAmB,OAAO,QAAS,CAC3C,IAAM,EAAQ,EAAM,kBAAkB,kBAChC,EAAS,EAAW,eACxB,EACA,EAAM,MACN,EACA,EAAM,kBAAkB,MAAM,QAAQ,MACtC,sDACF,EACA,GAAI,EAAW,QAAQ,CAAM,EAAG,OAAO,MAAO,EAC9C,IAAM,EAAqB,CAAC,EACtB,EAAY,EAAO,OAAO,OAAS,EAAU,UAAU,EAAM,UAAW,CAAM,EAAI,EAAM,UAE9F,OADA,EAAO,KAAK,GAAG,EAAO,MAAM,EACrB,CAAC,IAAK,EAAO,YAAW,MAAO,EAAO,KAAM,EAAG,CAAM,EAG9D,GAAI,EAAM,iBAAkB,CAC1B,IAAM,EAAQ,EAAM,iBAAiB,kBAC/B,EAAS,MAAO,EAAW,OAAO,EAAS,EAAM,MAAO,CAAK,EAC7D,EAAqB,CAAC,EACtB,EAAe,EAAO,QAAU,CAAC,EACjC,EAAY,EAAa,OAC3B,EAAU,UAAU,EAAM,UAAW,CAAM,EAC3C,EAAU,aACR,EAAU,QAAQ,EAAM,UAAW,EAAQ,QAAQ,GAAO,EAC1D,EACA,aAAa,IACb,EAAM,oBAAoB,GACtB,EAAgB,CAAE,UAAW,EAAM,oBAAoB,EAAO,CAAC,EAC/D,MACN,EAEJ,OADA,EAAO,KAAK,GAAG,CAAY,EACpB,CACL,IACK,EACH,aACE,EAAa,KAAK,CAAC,IAAU,EAAS,GAAG,SAAS,CAAK,GAAK,EAAS,GAAG,eAAe,CAAK,CAAC,GAC7F,EAAM,aACR,YACA,MAAO,EAAO,MACd,oBAAqB,OAAO,YAC1B,OAAO,QAAQ,EAAM,mBAAmB,EAAE,OAAO,EAAE,KAAS,IAAQ,OAAO,CAAK,CAAC,CACnF,CACF,EACA,CACF,EAGF,GAAI,EAAM,YACR,MAAO,CACL,IACK,EACH,cAAe,CACb,OAAQ,CACN,WAAY,GAAgB,EAAM,YAAY,UAAU,EACxD,IAAK,EAAM,YAAY,UACzB,EACA,MAAO,EAAM,eAAe,KAC9B,CACF,EACA,CAAC,CACH,EAGF,GAAI,EAAM,SAAU,CAClB,IAAM,EAAQ,GAAS,EAAM,SAAS,KAAK,GAAK,EAAM,eAAe,MACrE,MAAO,CACL,IACK,EACH,cAAe,CACb,OAAQ,EAAM,eAAe,QAAU,CAAE,WAAY,MAAO,EAC5D,OACF,CACF,EACA,CAAC,CACH,EAGF,GAAI,EAAM,UACR,OAAO,MAAO,IAAI,EAAQ,CACxB,OAAQ,EACR,OAAQ,SACR,OAAQ,EAAwB,CAC9B,QACE,EAAM,UAAU,QAAQ,SAAW,EAAM,UAAU,QAAQ,iBAAmB,gCAChF,KAAM,EAAM,UAAU,IACxB,CAAC,CACH,CAAC,EAGH,MAAO,CAAC,EAAO,CAAC,CAAC,EAClB,EAEG,GAAU,EAAmB,QAAQ,CAAO,EAE5C,GAAS,CAAC,IACd,EAAM,eACD,IAAM,CACL,IAAM,EAAqB,CAAC,EAW5B,OAVA,EAAU,OAAO,EAAM,UAAW,EAAQ,CACxC,OAAQ,IACH,EAAM,cAAc,OACvB,WACE,EAAM,cAAc,OAAO,aAAe,QAAU,EAAM,aACtD,aACA,EAAM,cAAc,OAAO,UACnC,EACA,MAAO,EAAM,cAAc,KAC7B,CAAC,EACM,IACN,EACH,CAAC,EASM,GAAW,EAAS,KAAK,CACpC,GAAI,EACJ,KAAM,CACJ,OAAQ,GACR,KAAM,EACR,EACA,OAAQ,CACN,MAAO,GACP,QAAS,KAAO,CACd,MAAO,EAAW,MAAc,EAChC,cAAe,OACf,aAAc,GACd,UAAW,EAAU,QAAQ,EAC7B,oBAAqB,CAAC,CACxB,GACA,QACA,OAAQ,CAAC,IAAU,EAAO,QAAQ,GAAO,CAAK,CAAC,CACjD,CACF,CAAC,EAEY,EAAQ,EAAM,KAAK,CAC9B,GAAI,EACJ,SAAU,UACV,oBAAqB,UACrB,YAIA,SAAU,EAAS,KACjB,EAAG,UAAW,UAAU,mBAAmB,EAAK,OAAO,mBACzD,EACA,KAAM,EAAY,KAClB,UACF,CAAC,EAEY,EAAY,EAAY,MC9sB9B,IAAM,EAAK,EAAW,KAAK,gBAAgB,EAoBrC,GAAS,CAAiB,CAAK,EAEtC,GAAiB,CAAC,IAAmB,2BAA2B,kBAEhE,GAAkB,CAAC,IAAkB,CACzC,IAAQ,SAAQ,cAAa,SAAQ,aAAY,GAAS,EACpD,EAAiB,GAAU,GAAa,QAAU,YACxD,OAAuB,EAAM,KAAK,IAC7B,EACH,SAAU,EACV,SAAU,CAAE,QAAS,GAAW,GAAe,CAAc,CAAE,EAC/D,KAAM,IAAW,OAA4B,EAAU,CAAW,EAAI,EAAK,OAAO,CAAM,CAC1F,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,GAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAAM,CAAE,GAAI,CAAQ,CAAC,EACjE,WACF,GAGW,GAAW,EAAU,EACrB,GAAuD,CAAC,EAAS,IAAa,CACzF,GAAI,EAAS,OAAS,UAAY,EAAS,SAAW,OACpD,MAAU,MAAM,4CAA4C,EAC9D,GAAI,EAAS,OAAS,SAAW,EAAS,SAAW,OACnD,MAAU,MAAM,kDAAkD,EACpE,OAAO,EAAU,CACf,OAAQ,EAAS,OAAS,QAAU,OAAY,EAAS,OACzD,QAAS,EAAS,QAClB,YAAa,EAAS,YACtB,WAAY,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,EAAS,IAAK,EAC5E,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,OAAQ,EAAS,MACnB,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "14035C32BEEAF57164756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/auth/list.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"node:os\"\nimport { Effect, Option } from \"effect\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { createClient, loadIntegrations } from \"./shared\"\nimport { errorMessage } from \"../../../util/error\"\n\nexport default Runtime.handler(Commands.commands.auth.commands.list, (input) =>\n list(input).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n)\n\nconst list = Effect.fn(\"cli.auth.list\")(function* (input) {\n const client = yield* createClient({ server: Option.getOrUndefined(input.server), standalone: input.standalone })\n const integrations = (yield* loadIntegrations(client)).filter((integration) => integration.connections.length > 0)\n if (input.format === \"json\") {\n process.stdout.write(\n JSON.stringify(\n integrations.map((integration) => ({\n id: integration.id,\n name: integration.name,\n connections: integration.connections,\n })),\n null,\n 2,\n ) + EOL,\n )\n return\n }\n const rows = integrations.flatMap((integration) =>\n integration.connections.map((connection) => ({\n integration: integration.name,\n source: connection.type === \"credential\" ? connection.label : connection.name,\n type: connection.type === \"credential\" ? \"stored\" : \"environment\",\n })),\n )\n if (rows.length === 0) {\n process.stdout.write(\"No authenticated integrations\" + EOL)\n return\n }\n const width = Math.max(...rows.map((row) => row.integration.length)) + 2\n process.stdout.write(\n rows.map((row) => row.integration.padEnd(width) + row.source.padEnd(28) + row.type).join(EOL) + EOL,\n )\n})\n" | ||
| ], | ||
| "mappings": ";ymCAAA,cAAS,WAOT,IAAe,IAAQ,QAAQ,EAAS,SAAS,KAAK,SAAS,KAAM,CAAC,IACpE,EAAK,CAAK,EAAE,KACV,EAAO,MAAM,CAAC,IACZ,EAAO,KAAK,IAAM,CAChB,QAAQ,OAAO,MAAM,EAAa,CAAK,EAAI,CAAG,EAC9C,QAAQ,SAAW,EACpB,CACH,CACF,CACF,EAEM,EAAO,EAAO,GAAG,eAAe,EAAE,SAAU,CAAC,EAAO,CACxD,IAAM,EAAS,MAAO,EAAa,CAAE,OAAQ,EAAO,eAAe,EAAM,MAAM,EAAG,WAAY,EAAM,UAAW,CAAC,EAC1G,GAAgB,MAAO,EAAiB,CAAM,GAAG,OAAO,CAAC,IAAgB,EAAY,YAAY,OAAS,CAAC,EACjH,GAAI,EAAM,SAAW,OAAQ,CAC3B,QAAQ,OAAO,MACb,KAAK,UACH,EAAa,IAAI,CAAC,KAAiB,CACjC,GAAI,EAAY,GAChB,KAAM,EAAY,KAClB,YAAa,EAAY,WAC3B,EAAE,EACF,KACA,CACF,EAAI,CACN,EACA,OAEF,IAAM,EAAO,EAAa,QAAQ,CAAC,IACjC,EAAY,YAAY,IAAI,CAAC,KAAgB,CAC3C,YAAa,EAAY,KACzB,OAAQ,EAAW,OAAS,aAAe,EAAW,MAAQ,EAAW,KACzE,KAAM,EAAW,OAAS,aAAe,SAAW,aACtD,EAAE,CACJ,EACA,GAAI,EAAK,SAAW,EAAG,CACrB,QAAQ,OAAO,MAAM,gCAAkC,CAAG,EAC1D,OAEF,IAAM,EAAQ,KAAK,IAAI,GAAG,EAAK,IAAI,CAAC,IAAQ,EAAI,YAAY,MAAM,CAAC,EAAI,EACvE,QAAQ,OAAO,MACb,EAAK,IAAI,CAAC,IAAQ,EAAI,YAAY,OAAO,CAAK,EAAI,EAAI,OAAO,OAAO,EAAE,EAAI,EAAI,IAAI,EAAE,KAAK,CAAG,EAAI,CAClG,EACD", | ||
| "debugId": "F736AE041531009C64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/util/persistence.ts", "../tui/src/model-preference.ts"], | ||
| "sourcesContent": [ | ||
| "import path from \"path\"\nimport { appendFile, mkdir, readFile, rename, rm, writeFile } from \"fs/promises\"\n\nexport function readText(filePath: string) {\n return readFile(filePath, \"utf8\")\n}\n\nexport async function readJson<T>(filePath: string) {\n return JSON.parse(await readFile(filePath, \"utf8\")) as T\n}\n\nexport async function writeText(filePath: string, content: string) {\n await mkdir(path.dirname(filePath), { recursive: true })\n await writeFile(filePath, content)\n}\n\nexport async function appendText(filePath: string, content: string) {\n await mkdir(path.dirname(filePath), { recursive: true })\n await appendFile(filePath, content)\n}\n\nexport async function writeJsonAtomic(filePath: string, value: unknown) {\n await mkdir(path.dirname(filePath), { recursive: true })\n const temporary = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`\n await writeFile(temporary, JSON.stringify(value)).catch(async (error) => {\n await rm(temporary, { force: true }).catch(() => undefined)\n throw error\n })\n await rename(temporary, filePath).catch(async (error) => {\n await rm(temporary, { force: true }).catch(() => undefined)\n throw error\n })\n}\n", | ||
| "import { readJson, writeJsonAtomic } from \"./util/persistence\"\nimport { isRecord } from \"./util/record\"\n\nexport type ModelPreferenceModel = {\n providerID: string\n modelID: string\n}\n\nexport type ModelPreference = {\n recent: ModelPreferenceModel[]\n favorite: ModelPreferenceModel[]\n variant: Record<string, string | undefined>\n}\n\nexport type ModelPreferenceDocument = Record<string, unknown> & ModelPreference\n\nfunction models(value: unknown) {\n if (!Array.isArray(value)) return []\n return value.flatMap((item): ModelPreferenceModel[] => {\n if (!isRecord(item)) return []\n if (typeof item.providerID !== \"string\" || item.providerID.length === 0) return []\n if (typeof item.modelID !== \"string\" || item.modelID.length === 0) return []\n return [{ providerID: item.providerID, modelID: item.modelID }]\n })\n}\n\nfunction variants(value: unknown) {\n if (!isRecord(value)) return {}\n return Object.fromEntries(\n Object.entries(value).flatMap(([key, item]) => {\n if (key.length === 0 || typeof item !== \"string\" || item.length === 0) return []\n const variant = normalizeModelVariant(item)\n return variant === undefined ? [] : ([[key, variant]] as const)\n }),\n )\n}\n\nexport function normalizeModelVariant(value: string | undefined) {\n return value === \"default\" ? undefined : value\n}\n\nexport function modelPreferenceKey(model: ModelPreferenceModel) {\n return `${model.providerID}/${model.modelID}`\n}\n\nexport function cycleModelVariant(current: string | undefined, variants: string[]) {\n const named = variants.filter((variant) => variant !== \"default\")\n if (named.length === 0) return undefined\n const value = normalizeModelVariant(current)\n if (value === undefined) return named[0]\n const index = named.indexOf(value)\n if (index === -1 || index === named.length - 1) return undefined\n return named[index + 1]\n}\n\nexport function decodeModelPreference(value: unknown): ModelPreferenceDocument {\n const root = isRecord(value) ? value : {}\n return {\n ...root,\n recent: models(root.recent),\n favorite: models(root.favorite),\n variant: variants(root.variant),\n }\n}\n\nfunction preference(value: ModelPreferenceDocument): ModelPreference {\n return {\n recent: value.recent,\n favorite: value.favorite,\n variant: value.variant,\n }\n}\n\nfunction patch(value: Partial<ModelPreference>) {\n return {\n ...(value.recent === undefined ? {} : { recent: models(value.recent) }),\n ...(value.favorite === undefined ? {} : { favorite: models(value.favorite) }),\n ...(value.variant === undefined ? {} : { variant: variants(value.variant) }),\n }\n}\n\nexport function createModelPreferenceRepository(filePath: string) {\n const state = {\n pending: Promise.resolve(),\n }\n const read = () =>\n readJson<unknown>(filePath)\n .then(decodeModelPreference)\n .catch(() => decodeModelPreference(undefined))\n\n function update(change: (current: ModelPreference) => Partial<ModelPreference>) {\n const result = state.pending.then(async () => {\n const current = await read()\n const next = { ...current, ...patch(change(preference(current))) }\n await writeJsonAtomic(filePath, next)\n })\n state.pending = result.catch(() => undefined)\n return result\n }\n\n function load() {\n return state.pending.then(read).then(preference)\n }\n\n return {\n load,\n patch(value: Partial<ModelPreference>) {\n return update(() => value)\n },\n async resolveVariant(model: ModelPreferenceModel) {\n return (await load()).variant[modelPreferenceKey(model)]\n },\n saveVariant(model: ModelPreferenceModel, value: string | undefined) {\n const key = modelPreferenceKey(model)\n const next = normalizeModelVariant(value)\n return update((current) => {\n const variant = { ...current.variant }\n if (next === undefined) delete variant[key]\n if (next !== undefined) variant[key] = next\n return { variant }\n })\n },\n }\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "8F815DF7C93588F764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+credential-provider-web-identity@3.972.75/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js", "../../node_modules/.bun/@aws-sdk+credential-provider-web-identity@3.972.75/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js"], | ||
| "sourcesContent": [ | ||
| "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError, externalDataInterceptor } from \"@smithy/core/config\";\nimport { readFileSync } from \"node:fs\";\nimport { fromWebToken } from \"./fromWebToken\";\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nexport const fromTokenFile = (init = {}) => async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromTokenFile\");\n const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE];\n const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN];\n const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new CredentialsProviderError(\"Web identity configuration not specified\", {\n logger: init.logger,\n });\n }\n const credentials = await fromWebToken({\n ...init,\n webIdentityToken: externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ??\n readFileSync(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })(awsIdentityProperties);\n if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) {\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN\", \"h\");\n }\n return credentials;\n};\n", | ||
| "export const fromWebToken = (init) => async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await import(\"@aws-sdk/nested-clients/sts\");\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: {\n ...awsIdentityProperties?.callerClientConfig,\n ...init.parentClientConfig,\n },\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\n" | ||
| ], | ||
| "mappings": ";4JAAA,eACA,WACA,uBAAS,WCFF,IAAM,EAAe,CAAC,IAAS,MAAO,IAA0B,CACnE,EAAK,QAAQ,MAAM,0DAA0D,EAC7E,IAAQ,UAAS,kBAAiB,mBAAkB,aAAY,aAAY,SAAQ,mBAAoB,GAClG,8BAA+B,EACrC,GAAI,CAAC,EAA4B,CAC7B,IAAQ,wCAAyC,KAAa,0CAC9D,EAA6B,EAAqC,IAC3D,EAAK,aACR,yBAA0B,EAAK,OAC/B,mBAAoB,IACb,GAAuB,sBACvB,EAAK,kBACZ,CACJ,EAAG,EAAK,aAAa,EAEzB,OAAO,EAA2B,CAC9B,QAAS,EACT,gBAAiB,GAAmB,sBAAsB,KAAK,IAAI,IACnE,iBAAkB,EAClB,WAAY,EACZ,WAAY,EACZ,OAAQ,EACR,gBAAiB,CACrB,CAAC,GDnBL,IAAM,EAAiB,8BACjB,EAAe,eACf,EAAwB,wBACjB,EAAgB,CAAC,EAAO,CAAC,IAAM,MAAO,IAA0B,CACzE,EAAK,QAAQ,MAAM,2DAA2D,EAC9E,IAAM,EAAuB,GAAM,sBAAwB,QAAQ,IAAI,GACjE,EAAU,GAAM,SAAW,QAAQ,IAAI,GACvC,EAAkB,GAAM,iBAAmB,QAAQ,IAAI,GAC7D,GAAI,CAAC,GAAwB,CAAC,EAC1B,MAAM,IAAI,2BAAyB,2CAA4C,CAC3E,OAAQ,EAAK,MACjB,CAAC,EAEL,IAAM,EAAc,MAAM,EAAa,IAChC,EACH,iBAAkB,2BAAyB,iBAAiB,EAAE,IAC1D,EAAa,EAAsB,CAAE,SAAU,OAAQ,CAAC,EAC5D,UACA,iBACJ,CAAC,EAAE,CAAqB,EACxB,GAAI,IAAyB,QAAQ,IAAI,GACrC,uBAAqB,EAAa,wCAAyC,GAAG,EAElF,OAAO", | ||
| "debugId": "77E3F9CB26ADFF3664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/aws4fetch@1.0.20/node_modules/aws4fetch/dist/aws4fetch.esm.mjs"], | ||
| "sourcesContent": [ | ||
| "/**\n * @license MIT <https://opensource.org/licenses/MIT>\n * @copyright Michael Hart 2024\n */\nconst encoder = new TextEncoder();\nconst HOST_SERVICES = {\n appstream2: 'appstream',\n cloudhsmv2: 'cloudhsm',\n email: 'ses',\n marketplace: 'aws-marketplace',\n mobile: 'AWSMobileHubService',\n pinpoint: 'mobiletargeting',\n queue: 'sqs',\n 'git-codecommit': 'codecommit',\n 'mturk-requester-sandbox': 'mturk-requester',\n 'personalize-runtime': 'personalize',\n};\nconst UNSIGNABLE_HEADERS = new Set([\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n 'presigned-expires',\n 'expect',\n 'x-amzn-trace-id',\n 'range',\n 'connection',\n]);\nclass AwsClient {\n constructor({ accessKeyId, secretAccessKey, sessionToken, service, region, cache, retries, initRetryMs }) {\n if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n this.accessKeyId = accessKeyId;\n this.secretAccessKey = secretAccessKey;\n this.sessionToken = sessionToken;\n this.service = service;\n this.region = region;\n this.cache = cache || new Map();\n this.retries = retries != null ? retries : 10;\n this.initRetryMs = initRetryMs || 50;\n }\n async sign(input, init) {\n if (input instanceof Request) {\n const { method, url, headers, body } = input;\n init = Object.assign({ method, url, headers }, init);\n if (init.body == null && headers.has('Content-Type')) {\n init.body = body != null && headers.has('X-Amz-Content-Sha256') ? body : await input.clone().arrayBuffer();\n }\n input = url;\n }\n const signer = new AwsV4Signer(Object.assign({ url: input.toString() }, init, this, init && init.aws));\n const signed = Object.assign({}, init, await signer.sign());\n delete signed.aws;\n try {\n return new Request(signed.url.toString(), signed)\n } catch (e) {\n if (e instanceof TypeError) {\n return new Request(signed.url.toString(), Object.assign({ duplex: 'half' }, signed))\n }\n throw e\n }\n }\n async fetch(input, init) {\n for (let i = 0; i <= this.retries; i++) {\n const fetched = fetch(await this.sign(input, init));\n if (i === this.retries) {\n return fetched\n }\n const res = await fetched;\n if (res.status < 500 && res.status !== 429) {\n return res\n }\n await new Promise(resolve => setTimeout(resolve, Math.random() * this.initRetryMs * Math.pow(2, i)));\n }\n throw new Error('An unknown error occurred, ensure retries is not negative')\n }\n}\nclass AwsV4Signer {\n constructor({ method, url, headers, body, accessKeyId, secretAccessKey, sessionToken, service, region, cache, datetime, signQuery, appendSessionToken, allHeaders, singleEncode }) {\n if (url == null) throw new TypeError('url is a required option')\n if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n this.method = method || (body ? 'POST' : 'GET');\n this.url = new URL(url);\n this.headers = new Headers(headers || {});\n this.body = body;\n this.accessKeyId = accessKeyId;\n this.secretAccessKey = secretAccessKey;\n this.sessionToken = sessionToken;\n let guessedService, guessedRegion;\n if (!service || !region) {\n[guessedService, guessedRegion] = guessServiceRegion(this.url, this.headers);\n }\n this.service = service || guessedService || '';\n this.region = region || guessedRegion || 'us-east-1';\n this.cache = cache || new Map();\n this.datetime = datetime || new Date().toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n this.signQuery = signQuery;\n this.appendSessionToken = appendSessionToken || this.service === 'iotdevicegateway';\n this.headers.delete('Host');\n if (this.service === 's3' && !this.signQuery && !this.headers.has('X-Amz-Content-Sha256')) {\n this.headers.set('X-Amz-Content-Sha256', 'UNSIGNED-PAYLOAD');\n }\n const params = this.signQuery ? this.url.searchParams : this.headers;\n params.set('X-Amz-Date', this.datetime);\n if (this.sessionToken && !this.appendSessionToken) {\n params.set('X-Amz-Security-Token', this.sessionToken);\n }\n this.signableHeaders = ['host', ...this.headers.keys()]\n .filter(header => allHeaders || !UNSIGNABLE_HEADERS.has(header))\n .sort();\n this.signedHeaders = this.signableHeaders.join(';');\n this.canonicalHeaders = this.signableHeaders\n .map(header => header + ':' + (header === 'host' ? this.url.host : (this.headers.get(header) || '').replace(/\\s+/g, ' ')))\n .join('\\n');\n this.credentialString = [this.datetime.slice(0, 8), this.region, this.service, 'aws4_request'].join('/');\n if (this.signQuery) {\n if (this.service === 's3' && !params.has('X-Amz-Expires')) {\n params.set('X-Amz-Expires', '86400');\n }\n params.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n params.set('X-Amz-Credential', this.accessKeyId + '/' + this.credentialString);\n params.set('X-Amz-SignedHeaders', this.signedHeaders);\n }\n if (this.service === 's3') {\n try {\n this.encodedPath = decodeURIComponent(this.url.pathname.replace(/\\+/g, ' '));\n } catch (e) {\n this.encodedPath = this.url.pathname;\n }\n } else {\n this.encodedPath = this.url.pathname.replace(/\\/+/g, '/');\n }\n if (!singleEncode) {\n this.encodedPath = encodeURIComponent(this.encodedPath).replace(/%2F/g, '/');\n }\n this.encodedPath = encodeRfc3986(this.encodedPath);\n const seenKeys = new Set();\n this.encodedSearch = [...this.url.searchParams]\n .filter(([k]) => {\n if (!k) return false\n if (this.service === 's3') {\n if (seenKeys.has(k)) return false\n seenKeys.add(k);\n }\n return true\n })\n .map(pair => pair.map(p => encodeRfc3986(encodeURIComponent(p))))\n .sort(([k1, v1], [k2, v2]) => k1 < k2 ? -1 : k1 > k2 ? 1 : v1 < v2 ? -1 : v1 > v2 ? 1 : 0)\n .map(pair => pair.join('='))\n .join('&');\n }\n async sign() {\n if (this.signQuery) {\n this.url.searchParams.set('X-Amz-Signature', await this.signature());\n if (this.sessionToken && this.appendSessionToken) {\n this.url.searchParams.set('X-Amz-Security-Token', this.sessionToken);\n }\n } else {\n this.headers.set('Authorization', await this.authHeader());\n }\n return {\n method: this.method,\n url: this.url,\n headers: this.headers,\n body: this.body,\n }\n }\n async authHeader() {\n return [\n 'AWS4-HMAC-SHA256 Credential=' + this.accessKeyId + '/' + this.credentialString,\n 'SignedHeaders=' + this.signedHeaders,\n 'Signature=' + (await this.signature()),\n ].join(', ')\n }\n async signature() {\n const date = this.datetime.slice(0, 8);\n const cacheKey = [this.secretAccessKey, date, this.region, this.service].join();\n let kCredentials = this.cache.get(cacheKey);\n if (!kCredentials) {\n const kDate = await hmac('AWS4' + this.secretAccessKey, date);\n const kRegion = await hmac(kDate, this.region);\n const kService = await hmac(kRegion, this.service);\n kCredentials = await hmac(kService, 'aws4_request');\n this.cache.set(cacheKey, kCredentials);\n }\n return buf2hex(await hmac(kCredentials, await this.stringToSign()))\n }\n async stringToSign() {\n return [\n 'AWS4-HMAC-SHA256',\n this.datetime,\n this.credentialString,\n buf2hex(await hash(await this.canonicalString())),\n ].join('\\n')\n }\n async canonicalString() {\n return [\n this.method.toUpperCase(),\n this.encodedPath,\n this.encodedSearch,\n this.canonicalHeaders + '\\n',\n this.signedHeaders,\n await this.hexBodyHash(),\n ].join('\\n')\n }\n async hexBodyHash() {\n let hashHeader = this.headers.get('X-Amz-Content-Sha256') || (this.service === 's3' && this.signQuery ? 'UNSIGNED-PAYLOAD' : null);\n if (hashHeader == null) {\n if (this.body && typeof this.body !== 'string' && !('byteLength' in this.body)) {\n throw new Error('body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header')\n }\n hashHeader = buf2hex(await hash(this.body || ''));\n }\n return hashHeader\n }\n}\nasync function hmac(key, string) {\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n typeof key === 'string' ? encoder.encode(key) : key,\n { name: 'HMAC', hash: { name: 'SHA-256' } },\n false,\n ['sign'],\n );\n return crypto.subtle.sign('HMAC', cryptoKey, encoder.encode(string))\n}\nasync function hash(content) {\n return crypto.subtle.digest('SHA-256', typeof content === 'string' ? encoder.encode(content) : content)\n}\nconst HEX_CHARS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\nfunction buf2hex(arrayBuffer) {\n const buffer = new Uint8Array(arrayBuffer);\n let out = '';\n for (let idx = 0; idx < buffer.length; idx++) {\n const n = buffer[idx];\n out += HEX_CHARS[(n >>> 4) & 0xF];\n out += HEX_CHARS[n & 0xF];\n }\n return out\n}\nfunction encodeRfc3986(urlEncodedStr) {\n return urlEncodedStr.replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase())\n}\nfunction guessServiceRegion(url, headers) {\n const { hostname, pathname } = url;\n if (hostname.endsWith('.on.aws')) {\n const match = hostname.match(/^[^.]{1,63}\\.lambda-url\\.([^.]{1,63})\\.on\\.aws$/);\n return match != null ? ['lambda', match[1] || ''] : ['', '']\n }\n if (hostname.endsWith('.r2.cloudflarestorage.com')) {\n return ['s3', 'auto']\n }\n if (hostname.endsWith('.backblazeb2.com')) {\n const match = hostname.match(/^(?:[^.]{1,63}\\.)?s3\\.([^.]{1,63})\\.backblazeb2\\.com$/);\n return match != null ? ['s3', match[1] || ''] : ['', '']\n }\n const match = hostname.replace('dualstack.', '').match(/([^.]{1,63})\\.(?:([^.]{0,63})\\.)?amazonaws\\.com(?:\\.cn)?$/);\n let service = (match && match[1]) || '';\n let region = match && match[2];\n if (region === 'us-gov') {\n region = 'us-gov-west-1';\n } else if (region === 's3' || region === 's3-accelerate') {\n region = 'us-east-1';\n service = 's3';\n } else if (service === 'iot') {\n if (hostname.startsWith('iot.')) {\n service = 'execute-api';\n } else if (hostname.startsWith('data.jobs.iot.')) {\n service = 'iot-jobs-data';\n } else {\n service = pathname === '/mqtt' ? 'iotdevicegateway' : 'iotdata';\n }\n } else if (service === 'autoscaling') {\n const targetPrefix = (headers.get('X-Amz-Target') || '').split('.')[0];\n if (targetPrefix === 'AnyScaleFrontendService') {\n service = 'application-autoscaling';\n } else if (targetPrefix === 'AnyScaleScalingPlannerFrontendService') {\n service = 'autoscaling-plans';\n }\n } else if (region == null && service.startsWith('s3-')) {\n region = service.slice(3).replace(/^fips-|^external-1/, '');\n service = 's3';\n } else if (service.endsWith('-fips')) {\n service = service.slice(0, -5);\n } else if (region && /-\\d$/.test(service) && !/-\\d$/.test(region)) {\n[service, region] = [region, service];\n }\n return [HOST_SERVICES[service] || service, region || '']\n}\n\nexport { AwsClient, AwsV4Signer };\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "7E557427BABBCB0764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-images.ts", "../ai/src/providers/openai.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding, Schema } from \"effect\"\nimport { Headers, HttpClientRequest, HttpClientResponse } from \"effect/unstable/http\"\nimport {\n ImageModel,\n GeneratedImage,\n ImageResponse,\n type ImageInput,\n type ImageRequestFor,\n type ImageRoute,\n} from \"../image.js\"\nimport { Auth, type Definition as AuthDefinition } from \"../route/auth.js\"\nimport {\n InvalidProviderOutputReason,\n AIError,\n Usage,\n mergeHttpOptions,\n mergeJsonRecords,\n type HttpOptions,\n} from \"../schema/index.js\"\nimport { ProviderShared } from \"./shared.js\"\nimport { ImageInputs } from \"./utils/image-input.js\"\nimport { OpenAIImage } from \"./utils/openai-image.js\"\n\nconst ADAPTER = \"openai-images\"\nexport const DEFAULT_BASE_URL = \"https://api.openai.com/v1\"\nexport const PATH = \"/images/generations\"\nexport const EDIT_PATH = \"/images/edits\"\n\nexport type OpenAIImageString<Known extends string> = Known | (string & {})\n\nexport type OpenAIImageOptions = {\n readonly mask?: ImageInput\n readonly n?: number\n readonly size?: OpenAIImageString<\n \"auto\" | \"256x256\" | \"512x512\" | \"1024x1024\" | \"1536x1024\" | \"1024x1536\" | \"1792x1024\" | \"1024x1792\"\n >\n readonly quality?: OpenAIImageString<\"auto\" | \"low\" | \"medium\" | \"high\" | \"standard\" | \"hd\">\n readonly background?: OpenAIImageString<\"auto\" | \"opaque\" | \"transparent\">\n readonly moderation?: OpenAIImageString<\"auto\" | \"low\">\n readonly outputFormat?: OpenAIImageString<\"png\" | \"jpeg\" | \"webp\">\n readonly outputCompression?: number\n} & Record<string, unknown>\n\nexport type OpenAIImageBody = Record<string, unknown> & {\n readonly model: string\n readonly prompt: string\n}\n\nconst OpenAIImageResponse = Schema.Struct({\n data: Schema.Array(\n Schema.Struct({\n b64_json: Schema.optional(Schema.String),\n url: Schema.optional(Schema.String),\n revised_prompt: Schema.optional(Schema.String),\n }),\n ),\n output_format: Schema.optional(Schema.String),\n usage: Schema.optional(\n Schema.Struct({\n input_tokens: Schema.optional(Schema.Number),\n output_tokens: Schema.optional(Schema.Number),\n total_tokens: Schema.optional(Schema.Number),\n input_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n output_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n }),\n ),\n})\n\nexport interface ModelInput {\n readonly id: string\n readonly auth: AuthDefinition\n readonly baseURL?: string\n readonly headers?: Record<string, string>\n readonly http?: HttpOptions\n}\n\nconst nativeOptions = (options: OpenAIImageOptions | undefined) => {\n if (!options) return undefined\n const { mask: _, outputFormat, outputCompression, ...native } = options\n return {\n output_format: outputFormat,\n output_compression: outputCompression,\n ...native,\n }\n}\n\nconst invalidOutput = (message: string) =>\n new AIError({\n module: ADAPTER,\n method: \"generate\",\n reason: new InvalidProviderOutputReason({ message, route: ADAPTER }),\n })\n\nconst applyQuery = (url: string, query: Record<string, string> | undefined) => {\n if (!query) return url\n const next = new URL(url)\n Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value))\n return next.toString()\n}\n\nexport const model = (input: ModelInput) => {\n const route: ImageRoute<OpenAIImageOptions> = {\n id: ADAPTER,\n generate: Effect.fn(\"OpenAIImages.generate\")(function* (request: ImageRequestFor<OpenAIImageOptions>, execute) {\n const mask = request.options?.mask\n if (mask !== undefined && (request.images?.length ?? 0) === 0)\n return yield* ImageInputs.invalid(ADAPTER, \"An OpenAI image mask requires at least one input image\")\n const http = mergeHttpOptions(request.model.http, request.http)\n const sourceImages = request.images ?? []\n const multipartImages = yield* Effect.forEach(sourceImages, (image) => {\n if (image.type === \"bytes\") return Effect.succeed({ data: image.data, mediaType: image.mediaType })\n if (image.type === \"url\") return ImageInputs.decodeDataUrl(image.url, ADAPTER)\n return Effect.undefined\n })\n const multipartMask =\n mask === undefined\n ? undefined\n : mask.type === \"bytes\"\n ? { data: mask.data, mediaType: mask.mediaType }\n : mask.type === \"url\"\n ? yield* ImageInputs.decodeDataUrl(mask.url, ADAPTER)\n : undefined\n const useMultipart =\n sourceImages.length > 0 &&\n multipartImages.every((image) => image !== undefined) &&\n (mask === undefined || multipartMask !== undefined)\n const path = sourceImages.length === 0 ? PATH : EDIT_PATH\n const url = applyQuery(`${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}${path}`, http?.query)\n\n if (useMultipart) {\n const form = new FormData()\n form.append(\"model\", request.model.id)\n form.append(\"prompt\", request.prompt)\n Object.entries(mergeJsonRecords(nativeOptions(request.options), http?.body) ?? {}).forEach(([key, value]) => {\n if ([\"model\", \"prompt\", \"image\", \"image[]\", \"images\", \"mask\"].includes(key)) return\n form.append(key, typeof value === \"string\" ? value : ProviderShared.encodeJson(value))\n })\n multipartImages.forEach((image, index) => {\n if (image === undefined) return\n form.append(\"image[]\", imageBlob(image.data, image.mediaType), `image-${index}`)\n })\n if (multipartMask !== undefined)\n form.append(\"mask\", imageBlob(multipartMask.data, multipartMask.mediaType), \"mask\")\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: \"[multipart/form-data]\",\n headers: Headers.remove(Headers.fromInput({ ...input.headers, ...http?.headers }), \"content-type\"),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(HttpClientRequest.setHeaders(headers), HttpClientRequest.bodyFormData(form)),\n )\n return yield* parseResponse(response, request.options, http?.body)\n }\n\n const references = sourceImages.map((image) => {\n if (image.type === \"bytes\") return { image_url: ImageInputs.dataUrl(image) }\n if (image.type === \"url\") return { image_url: image.url }\n if (image.type === \"file-id\") return { file_id: image.id }\n return undefined\n })\n if (references.some((image) => image === undefined))\n return yield* ImageInputs.invalid(ADAPTER, \"OpenAI Images accepts image URLs, data URLs, bytes, and file IDs\")\n const maskReference =\n mask === undefined\n ? undefined\n : mask.type === \"bytes\"\n ? { image_url: ImageInputs.dataUrl(mask) }\n : mask.type === \"url\"\n ? { image_url: mask.url }\n : mask.type === \"file-id\"\n ? { file_id: mask.id }\n : undefined\n if (mask !== undefined && maskReference === undefined)\n return yield* ImageInputs.invalid(ADAPTER, \"OpenAI Images accepts masks as URLs, data URLs, bytes, or file IDs\")\n const requestBody = mergeJsonRecords(\n {\n model: request.model.id,\n prompt: request.prompt,\n images: references.length === 0 ? undefined : references,\n mask: maskReference,\n },\n nativeOptions(request.options),\n http?.body,\n ) as OpenAIImageBody\n const text = ProviderShared.encodeJson(requestBody)\n const headers = yield* Auth.toEffect(input.auth)({\n request,\n method: \"POST\",\n url,\n body: text,\n headers: Headers.fromInput({ ...input.headers, ...http?.headers }),\n })\n const response = yield* execute(\n HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeaders(headers),\n HttpClientRequest.bodyText(text, \"application/json\"),\n ),\n )\n return yield* parseResponse(response, request.options, http?.body)\n }),\n }\n return ImageModel.make<OpenAIImageOptions>({ id: input.id, provider: \"openai\", route, http: input.http })\n}\n\nconst parseResponse = Effect.fn(\"OpenAIImages.parseResponse\")(function* (\n response: HttpClientResponse.HttpClientResponse,\n options: OpenAIImageOptions | undefined,\n overlay: Record<string, unknown> | undefined,\n) {\n const payload = yield* response.json.pipe(\n Effect.mapError(() => invalidOutput(\"Failed to read the OpenAI Images response\")),\n )\n const decoded = yield* Schema.decodeUnknownEffect(OpenAIImageResponse)(payload).pipe(\n Effect.mapError(() => invalidOutput(\"OpenAI Images returned an invalid response\")),\n )\n const requestBody = mergeJsonRecords(nativeOptions(options), overlay)\n const format =\n decoded.output_format ?? (typeof requestBody?.output_format === \"string\" ? requestBody.output_format : \"png\")\n const images = yield* Effect.forEach(decoded.data, (item, index) => {\n if (item.b64_json)\n return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe(\n Effect.mapError(() => invalidOutput(`OpenAI Images result ${index} contains invalid base64 data`)),\n Effect.map(\n (data) =>\n new GeneratedImage({\n mediaType: `image/${format}`,\n data,\n providerMetadata:\n item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } },\n }),\n ),\n )\n if (item.url)\n return Effect.succeed(\n new GeneratedImage({\n mediaType: `image/${format}`,\n data: item.url,\n providerMetadata:\n item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } },\n }),\n )\n return Effect.fail(invalidOutput(`OpenAI Images result ${index} has neither image data nor a URL`))\n })\n if (images.length === 0) return yield* invalidOutput(\"OpenAI Images returned no images\")\n return new ImageResponse({\n images,\n usage:\n decoded.usage === undefined\n ? undefined\n : new Usage({\n inputTokens: decoded.usage.input_tokens,\n outputTokens: decoded.usage.output_tokens,\n totalTokens: decoded.usage.total_tokens,\n providerMetadata: { openai: decoded.usage },\n }),\n providerMetadata: { openai: { outputFormat: format } },\n })\n})\n\nconst imageBlob = (data: Uint8Array, mediaType: string) => {\n const buffer = new ArrayBuffer(data.byteLength)\n new Uint8Array(buffer).set(data)\n return new Blob([buffer], { type: mediaType })\n}\n\nexport const OpenAIImages = {\n model,\n} as const\n", | ||
| "import { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { Route, RouteDefaultsInput } from \"../route/client.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { HttpOptions, ProviderID, ToolDefinition, mergeHttpOptions, type ModelID } from \"../schema/index.js\"\nimport * as OpenAIChat from \"../protocols/openai-chat.js\"\nimport * as OpenAIResponses from \"../protocols/openai-responses.js\"\nimport { withOpenAIOptions, type OpenAIProviderOptionsInput } from \"./openai-options.js\"\nimport { OpenAIImages, type OpenAIImageString } from \"../protocols/openai-images.js\"\n\nexport type { OpenAIOptionsInput, OpenAIResponseIncludable } from \"./openai-options.js\"\nexport type { OpenAIImageOptions } from \"../protocols/openai-images.js\"\n\nexport const id = ProviderID.make(\"openai\")\n\nexport const routes = [OpenAIResponses.route, OpenAIChat.route]\n\n// This provider facade wraps the lower-level Responses and Chat model factories\n// with OpenAI-specific conveniences: typed options, API-key sugar, env fallback,\n// and default option normalization.\nexport type Config = RouteDefaultsInput &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly queryParams?: Record<string, string>\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface ImageGenerationOptions {\n readonly action?: OpenAIImageString<\"auto\" | \"generate\" | \"edit\">\n readonly background?: OpenAIImageString<\"auto\" | \"opaque\" | \"transparent\">\n readonly inputFidelity?: OpenAIImageString<\"low\" | \"high\">\n readonly outputCompression?: number\n readonly outputFormat?: OpenAIImageString<\"png\" | \"jpeg\" | \"webp\">\n readonly partialImages?: number\n readonly quality?: OpenAIImageString<\"auto\" | \"low\" | \"medium\" | \"high\" | \"standard\" | \"hd\">\n readonly size?: OpenAIImageString<\n \"auto\" | \"256x256\" | \"512x512\" | \"1024x1024\" | \"1536x1024\" | \"1024x1536\" | \"1792x1024\" | \"1024x1792\"\n >\n}\n\nexport const imageGeneration = (options: ImageGenerationOptions = {}) =>\n ToolDefinition.make({\n name: \"image_generation\",\n description: \"Generate or edit an image using OpenAI's hosted image generation tool.\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n native: {\n openai: {\n type: \"image_generation\",\n action: options.action,\n background: options.background,\n input_fidelity: options.inputFidelity,\n output_compression: options.outputCompression,\n output_format: options.outputFormat,\n partial_images: options.partialImages,\n quality: options.quality,\n size: options.size,\n },\n },\n })\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL?: string\n readonly organization?: string\n readonly project?: string\n readonly queryParams?: Readonly<Record<string, string>>\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nconst auth = (options: ProviderAuthOption<\"optional\">) => AuthOptions.bearer(options, \"OPENAI_API_KEY\")\n\nconst defaults = (input: Config) => {\n const { apiKey: _, auth: _auth, baseURL: _baseURL, queryParams: _queryParams, ...rest } = input\n return rest\n}\n\nconst configuredRoute = <Body, Prepared>(route: Route<Body, Prepared>, input: Config) =>\n route.with({\n auth: auth(input),\n endpoint: { baseURL: input.baseURL, query: input.queryParams },\n })\n\nexport const configure = (input: Config = {}) => {\n const responsesRoute = configuredRoute(OpenAIResponses.route, input)\n const chatRoute = configuredRoute(OpenAIChat.route, input)\n const modelDefaults = defaults(input)\n const responses = (id: string | ModelID) =>\n responsesRoute\n .with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true }))\n .model<OpenAIProviderOptionsInput>({ id })\n const chat = (id: string | ModelID) =>\n chatRoute.with(withOpenAIOptions(id, modelDefaults)).model<OpenAIProviderOptionsInput>({ id })\n const image = (modelID: string | ModelID) =>\n OpenAIImages.model({\n id: modelID,\n auth: auth(input),\n baseURL: input.baseURL,\n headers: input.headers,\n http: mergeHttpOptions(\n input.http === undefined ? undefined : HttpOptions.make(input.http),\n input.queryParams === undefined ? undefined : new HttpOptions({ query: input.queryParams }),\n ),\n })\n\n return {\n id,\n model: responses,\n responses,\n chat,\n image,\n configure,\n }\n}\n\nexport const provider = configure()\n\nconst config = (settings: Settings): Config => {\n const headers = {\n ...(settings.organization === undefined ? {} : { \"OpenAI-Organization\": settings.organization }),\n ...(settings.project === undefined ? {} : { \"OpenAI-Project\": settings.project }),\n ...settings.headers,\n }\n return {\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: Object.keys(headers).length === 0 ? undefined : headers,\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n providerOptions: settings.providerOptions,\n queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams },\n }\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) => {\n return configure(config(settings)).responses(modelID)\n}\n\nexport const chatModel: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => configure(config(settings)).chat(modelID)\nexport const responses = provider.responses\nexport const chat = provider.chat\nexport const image = provider.image\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "36A8F64DF1D1BA7564756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/parse.ts"], | ||
| "sourcesContent": [ | ||
| "export function parseFileLineRange(input: string) {\n const hash = input.lastIndexOf(\"#\")\n if (hash === -1) return { base: input }\n\n const base = input.slice(0, hash)\n const match = input.slice(hash + 1).match(/^(\\d+)(?:-(\\d*))?$/)\n if (!match) return { base }\n\n const startLine = Number(match[1])\n const endLine = match[2] && startLine < Number(match[2]) ? Number(match[2]) : undefined\n return { base, lineRange: { startLine, endLine } }\n}\n\nexport function stripFileLineRange(input: string) {\n return parseFileLineRange(input).base\n}\n\nexport function parseSlashHead(text: string, separator = /[ \\t\\n]/) {\n if (!text.startsWith(\"/\")) return\n\n const end = text.slice(1).search(separator)\n if (end === -1) return { name: text.slice(1), arguments: \"\", end: text.length }\n\n const split = end + 1\n return { name: text.slice(1, split), arguments: text.slice(split + 1), end: split }\n}\n" | ||
| ], | ||
| "mappings": ";AAAO,SAAS,CAAkB,CAAC,EAAe,CAChD,IAAM,EAAO,EAAM,YAAY,GAAG,EAClC,GAAI,IAAS,GAAI,MAAO,CAAE,KAAM,CAAM,EAEtC,IAAM,EAAO,EAAM,MAAM,EAAG,CAAI,EAC1B,EAAQ,EAAM,MAAM,EAAO,CAAC,EAAE,MAAM,oBAAoB,EAC9D,GAAI,CAAC,EAAO,MAAO,CAAE,MAAK,EAE1B,IAAM,EAAY,OAAO,EAAM,EAAE,EAC3B,EAAU,EAAM,IAAM,EAAY,OAAO,EAAM,EAAE,EAAI,OAAO,EAAM,EAAE,EAAI,OAC9E,MAAO,CAAE,OAAM,UAAW,CAAE,YAAW,SAAQ,CAAE,EAG5C,SAAS,CAAkB,CAAC,EAAe,CAChD,OAAO,EAAmB,CAAK,EAAE,KAG5B,SAAS,CAAc,CAAC,EAAc,EAAY,UAAW,CAClE,GAAI,CAAC,EAAK,WAAW,GAAG,EAAG,OAE3B,IAAM,EAAM,EAAK,MAAM,CAAC,EAAE,OAAO,CAAS,EAC1C,GAAI,IAAQ,GAAI,MAAO,CAAE,KAAM,EAAK,MAAM,CAAC,EAAG,UAAW,GAAI,IAAK,EAAK,MAAO,EAE9E,IAAM,EAAQ,EAAM,EACpB,MAAO,CAAE,KAAM,EAAK,MAAM,EAAG,CAAK,EAAG,UAAW,EAAK,MAAM,EAAQ,CAAC,EAAG,IAAK,CAAM", | ||
| "debugId": "B40810E7B89DD49C64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@aws-sdk+nested-clients@3.997.43/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js"], | ||
| "sourcesContent": [ | ||
| "const { awsEndpointFunctions, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS, getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, resolveUserAgentConfig, resolveHostHeaderConfig, getUserAgentPlugin, getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin } = require(\"@aws-sdk/core/client\");\nconst { NoAuthSigner, getHttpAuthSchemeEndpointRuleSetPlugin, DefaultIdentityProviderConfig, getHttpSigningPlugin } = require(\"@smithy/core\");\nconst { normalizeProvider, getSmithyContext, ServiceException, NoOpLogger, emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode, getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig, Client, makeBuilder, createAggregatedClient } = require(\"@smithy/core/client\");\nconst { Command: $Command } = require(\"@smithy/core/client\");\nexports.$Command = $Command;\nexports.__Client = Client;\nconst { resolveDefaultsModeConfig, loadConfig, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, resolveRegionConfig } = require(\"@smithy/core/config\");\nconst { BinaryDecisionDiagram, EndpointCache, decideEndpoint, customEndpointFunctions, resolveEndpointConfig, getEndpointPlugin } = require(\"@smithy/core/endpoints\");\nconst { parseUrl, getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig, getContentLengthPlugin } = require(\"@smithy/core/protocols\");\nconst { DEFAULT_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, getRetryPlugin } = require(\"@smithy/core/retry\");\nconst { TypeRegistry, getSchemaSerdePlugin } = require(\"@smithy/core/schema\");\nconst { resolveAwsSdkSigV4Config, AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } = require(\"@aws-sdk/core/httpAuthSchemes\");\nconst { toUtf8, fromUtf8, toBase64, fromBase64, calculateBodyLength } = require(\"@smithy/core/serde\");\nconst { streamCollector, NodeHttpHandler } = require(\"@smithy/node-http-handler\");\nconst { AwsRestJsonProtocol } = require(\"@aws-sdk/core/protocols\");\nconst { Sha256 } = require(\"@smithy/core/checksum\");\n\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\":\n {\n options.push(createSmithyApiNoAuthHttpAuthOption());\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n\nconst resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\",\n });\n};\nconst commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n\nvar version = \"3.997.42\";\nvar packageInfo = {\n\tversion: version};\n\nconst k = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = { [k]: \"Endpoint\" }, h = { [k]: d }, i = {}, j = [{ [k]: \"Region\" }];\nconst _data = {\n conditions: [\n [c, [g]],\n [c, j],\n [\"aws.partition\", j, d],\n [e, [{ [k]: \"UseFIPS\" }, b]],\n [e, [{ [k]: \"UseDualStack\" }, b]],\n [e, [{ fn: f, argv: [h, \"supportsDualStack\"] }, b]],\n [e, [{ fn: f, argv: [h, \"supportsFIPS\"] }, b]],\n [\"stringEquals\", [{ fn: f, argv: [h, \"name\"] }, \"aws-us-gov\"]]\n ],\n results: [\n [a],\n [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n [g, i],\n [\"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n [\"https://oidc.{Region}.amazonaws.com\", i],\n [\"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"FIPS is enabled but this partition does not support FIPS\"],\n [\"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", i],\n [a, \"DualStack is enabled but this partition does not support DualStack\"],\n [\"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", i],\n [a, \"Invalid Configuration: Missing Region\"]\n ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n -1, 1, -1,\n 0, 13, 3,\n 1, 4, r + 12,\n 2, 5, r + 12,\n 3, 8, 6,\n 4, 7, r + 11,\n 5, r + 9, r + 10,\n 4, 11, 9,\n 6, 10, r + 8,\n 7, r + 6, r + 7,\n 5, 12, r + 5,\n 6, r + 4, r + 5,\n 3, r + 1, 14,\n 4, r + 2, r + 3,\n]);\nconst bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => decideEndpoint(bdd, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n\nclass SSOOIDCServiceException extends ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SSOOIDCServiceException.prototype);\n }\n}\n\nclass AccessDeniedException extends SSOOIDCServiceException {\n name = \"AccessDeniedException\";\n $fault = \"client\";\n error;\n reason;\n error_description;\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AccessDeniedException.prototype);\n this.error = opts.error;\n this.reason = opts.reason;\n this.error_description = opts.error_description;\n }\n}\nclass AuthorizationPendingException extends SSOOIDCServiceException {\n name = \"AuthorizationPendingException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass ExpiredTokenException extends SSOOIDCServiceException {\n name = \"ExpiredTokenException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InternalServerException extends SSOOIDCServiceException {\n name = \"InternalServerException\";\n $fault = \"server\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidClientException extends SSOOIDCServiceException {\n name = \"InvalidClientException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidGrantException extends SSOOIDCServiceException {\n name = \"InvalidGrantException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidRequestException extends SSOOIDCServiceException {\n name = \"InvalidRequestException\";\n $fault = \"client\";\n error;\n reason;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidRequestException.prototype);\n this.error = opts.error;\n this.reason = opts.reason;\n this.error_description = opts.error_description;\n }\n}\nclass InvalidScopeException extends SSOOIDCServiceException {\n name = \"InvalidScopeException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass SlowDownException extends SSOOIDCServiceException {\n name = \"SlowDownException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass UnauthorizedClientException extends SSOOIDCServiceException {\n name = \"UnauthorizedClientException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\nclass UnsupportedGrantTypeException extends SSOOIDCServiceException {\n name = \"UnsupportedGrantTypeException\";\n $fault = \"client\";\n error;\n error_description;\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n}\n\nconst _ADE = \"AccessDeniedException\";\nconst _APE = \"AuthorizationPendingException\";\nconst _AT = \"AccessToken\";\nconst _CS = \"ClientSecret\";\nconst _CT = \"CreateToken\";\nconst _CTR = \"CreateTokenRequest\";\nconst _CTRr = \"CreateTokenResponse\";\nconst _CV = \"CodeVerifier\";\nconst _ETE = \"ExpiredTokenException\";\nconst _ICE = \"InvalidClientException\";\nconst _IGE = \"InvalidGrantException\";\nconst _IRE = \"InvalidRequestException\";\nconst _ISE = \"InternalServerException\";\nconst _ISEn = \"InvalidScopeException\";\nconst _IT = \"IdToken\";\nconst _RT = \"RefreshToken\";\nconst _SDE = \"SlowDownException\";\nconst _UCE = \"UnauthorizedClientException\";\nconst _UGTE = \"UnsupportedGrantTypeException\";\nconst _aT = \"accessToken\";\nconst _c = \"client\";\nconst _cI = \"clientId\";\nconst _cS = \"clientSecret\";\nconst _cV = \"codeVerifier\";\nconst _co = \"code\";\nconst _dC = \"deviceCode\";\nconst _e = \"error\";\nconst _eI = \"expiresIn\";\nconst _ed = \"error_description\";\nconst _gT = \"grantType\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _iT = \"idToken\";\nconst _r = \"reason\";\nconst _rT = \"refreshToken\";\nconst _rU = \"redirectUri\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.ssooidc\";\nconst _sc = \"scope\";\nconst _se = \"server\";\nconst _tT = \"tokenType\";\nconst n0 = \"com.amazonaws.ssooidc\";\nconst _s_registry = TypeRegistry.for(_s);\nvar SSOOIDCServiceException$ = [-3, _s, \"SSOOIDCServiceException\", 0, [], []];\n_s_registry.registerError(SSOOIDCServiceException$, SSOOIDCServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nvar AccessDeniedException$ = [-3, n0, _ADE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _r, _ed],\n [0, 0, 0]\n];\nn0_registry.registerError(AccessDeniedException$, AccessDeniedException);\nvar AuthorizationPendingException$ = [-3, n0, _APE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(AuthorizationPendingException$, AuthorizationPendingException);\nvar ExpiredTokenException$ = [-3, n0, _ETE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(ExpiredTokenException$, ExpiredTokenException);\nvar InternalServerException$ = [-3, n0, _ISE,\n { [_e]: _se, [_hE]: 500 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InternalServerException$, InternalServerException);\nvar InvalidClientException$ = [-3, n0, _ICE,\n { [_e]: _c, [_hE]: 401 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidClientException$, InvalidClientException);\nvar InvalidGrantException$ = [-3, n0, _IGE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidGrantException$, InvalidGrantException);\nvar InvalidRequestException$ = [-3, n0, _IRE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _r, _ed],\n [0, 0, 0]\n];\nn0_registry.registerError(InvalidRequestException$, InvalidRequestException);\nvar InvalidScopeException$ = [-3, n0, _ISEn,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(InvalidScopeException$, InvalidScopeException);\nvar SlowDownException$ = [-3, n0, _SDE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(SlowDownException$, SlowDownException);\nvar UnauthorizedClientException$ = [-3, n0, _UCE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(UnauthorizedClientException$, UnauthorizedClientException);\nvar UnsupportedGrantTypeException$ = [-3, n0, _UGTE,\n { [_e]: _c, [_hE]: 400 },\n [_e, _ed],\n [0, 0]\n];\nn0_registry.registerError(UnsupportedGrantTypeException$, UnsupportedGrantTypeException);\nconst errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar AccessToken = [0, n0, _AT, 8, 0];\nvar ClientSecret = [0, n0, _CS, 8, 0];\nvar CodeVerifier = [0, n0, _CV, 8, 0];\nvar IdToken = [0, n0, _IT, 8, 0];\nvar RefreshToken = [0, n0, _RT, 8, 0];\nvar CreateTokenRequest$ = [3, n0, _CTR,\n 0,\n [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV],\n [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], 3\n];\nvar CreateTokenResponse$ = [3, n0, _CTRr,\n 0,\n [_aT, _tT, _eI, _rT, _iT],\n [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]]\n];\nvar CreateToken$ = [9, n0, _CT,\n { [_h]: [\"POST\", \"/token\", 200] }, () => CreateTokenRequest$, () => CreateTokenResponse$\n];\n\nconst getRuntimeConfig$1 = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestJsonProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.ssooidc\",\n errorTypeRegistries,\n version: \"2019-06-10\",\n serviceTarget: \"AWSSSOOIDCService\",\n },\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n sha256: config?.sha256 ?? Sha256,\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n\nconst getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getRuntimeConfig$1(config);\n emitWarningIfUnsupportedVersion$1(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n region: config?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestHandler: NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n loadConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n\nclass SSOOIDCClient extends Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultSSOOIDCHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n\nconst command = makeBuilder(commonParams, \"AWSSSOOIDCService\", \"SSOOIDCClient\", getEndpointPlugin);\nconst _ep0 = {};\nconst _mw0 = (Command, cs, config, o) => [];\n\nclass CreateTokenCommand extends command(_ep0, _mw0, \"CreateToken\", CreateToken$) {\n}\n\nconst commands = {\n CreateTokenCommand,\n};\nclass SSOOIDC extends SSOOIDCClient {\n}\ncreateAggregatedClient(commands, SSOOIDC);\n\nconst AccessDeniedExceptionReason = {\n KMS_ACCESS_DENIED: \"KMS_AccessDeniedException\",\n};\nconst InvalidRequestExceptionReason = {\n KMS_DISABLED_KEY: \"KMS_DisabledException\",\n KMS_INVALID_KEY_USAGE: \"KMS_InvalidKeyUsageException\",\n KMS_INVALID_STATE: \"KMS_InvalidStateException\",\n KMS_KEY_NOT_FOUND: \"KMS_NotFoundException\",\n};\n\nexports.AccessDeniedException = AccessDeniedException;\nexports.AccessDeniedException$ = AccessDeniedException$;\nexports.AccessDeniedExceptionReason = AccessDeniedExceptionReason;\nexports.AuthorizationPendingException = AuthorizationPendingException;\nexports.AuthorizationPendingException$ = AuthorizationPendingException$;\nexports.CreateToken$ = CreateToken$;\nexports.CreateTokenCommand = CreateTokenCommand;\nexports.CreateTokenRequest$ = CreateTokenRequest$;\nexports.CreateTokenResponse$ = CreateTokenResponse$;\nexports.ExpiredTokenException = ExpiredTokenException;\nexports.ExpiredTokenException$ = ExpiredTokenException$;\nexports.InternalServerException = InternalServerException;\nexports.InternalServerException$ = InternalServerException$;\nexports.InvalidClientException = InvalidClientException;\nexports.InvalidClientException$ = InvalidClientException$;\nexports.InvalidGrantException = InvalidGrantException;\nexports.InvalidGrantException$ = InvalidGrantException$;\nexports.InvalidRequestException = InvalidRequestException;\nexports.InvalidRequestException$ = InvalidRequestException$;\nexports.InvalidRequestExceptionReason = InvalidRequestExceptionReason;\nexports.InvalidScopeException = InvalidScopeException;\nexports.InvalidScopeException$ = InvalidScopeException$;\nexports.SSOOIDC = SSOOIDC;\nexports.SSOOIDCClient = SSOOIDCClient;\nexports.SSOOIDCServiceException = SSOOIDCServiceException;\nexports.SSOOIDCServiceException$ = SSOOIDCServiceException$;\nexports.SlowDownException = SlowDownException;\nexports.SlowDownException$ = SlowDownException$;\nexports.UnauthorizedClientException = UnauthorizedClientException;\nexports.UnauthorizedClientException$ = UnauthorizedClientException$;\nexports.UnsupportedGrantTypeException = UnsupportedGrantTypeException;\nexports.UnsupportedGrantTypeException$ = UnsupportedGrantTypeException$;\nexports.errorTypeRegistries = errorTypeRegistries;\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "91393E17B49FC6C064756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/effect@4.0.0-rc.111/node_modules/effect/dist/unstable/http/FetchHttpClient.js"], | ||
| "sourcesContent": [ | ||
| "/**\n * Fetch-based implementation of the Effect HTTP client service.\n *\n * This module provides an `HttpClient` layer that executes requests through a\n * Web Fetch API implementation. It is the transport to use in browsers, edge\n * runtimes, and Node.js environments where `globalThis.fetch` is available, or\n * anywhere a compatible fetch function can be supplied.\n *\n * @since 4.0.0\n */\nimport * as Context from \"../../Context.js\";\nimport * as Effect from \"../../Effect.js\";\nimport * as Stream from \"../../Stream.js\";\nimport * as Headers from \"./Headers.js\";\nimport * as HttpClient from \"./HttpClient.js\";\nimport * as HttpClientError from \"./HttpClientError.js\";\nimport * as HttpClientResponse from \"./HttpClientResponse.js\";\n/**\n * Context reference for the `fetch` implementation used by the fetch-based HTTP client.\n *\n * **Details**\n *\n * Defaults to `globalThis.fetch`.\n *\n * @category services\n * @since 4.0.0\n */\nexport const Fetch = /*#__PURE__*/Context.Reference(\"effect/http/FetchHttpClient/Fetch\", {\n defaultValue: () => globalThis.fetch\n});\n/**\n * Service that contains default fetch options for the fetch-based HTTP client.\n *\n * **When to use**\n *\n * Use to provide default credentials, cache, redirect, integrity, or other\n * fetch options for outgoing HTTP requests.\n *\n * **Details**\n *\n * Request-specific method, headers, body, and abort signal are supplied by the client when a request is executed.\n *\n * @category services\n * @since 4.0.0\n */\nexport class RequestInit extends /*#__PURE__*/Context.Service()(\"effect/http/FetchHttpClient/RequestInit\") {}\nconst fetch = /*#__PURE__*/HttpClient.make((request, url, signal, fiber) => {\n const fetch = fiber.getRef(Fetch);\n const options = Context.getOrUndefined(fiber.context, RequestInit) ?? {};\n let headers = options.headers ? Headers.merge(Headers.fromInput(options.headers), request.headers) : request.headers;\n if (headers[\"content-length\"]) {\n headers = Headers.remove(headers, \"content-length\");\n }\n const send = body => Effect.map(Effect.tryPromise({\n try: () => fetch(url, {\n ...options,\n method: request.method,\n headers,\n body,\n duplex: request.body._tag === \"Stream\" ? \"half\" : undefined,\n signal\n }),\n catch: cause => new HttpClientError.HttpClientError({\n reason: new HttpClientError.TransportError({\n request,\n cause\n })\n })\n }), response => HttpClientResponse.fromWeb(request, response));\n switch (request.body._tag) {\n case \"Raw\":\n case \"Uint8Array\":\n return send(request.body.body);\n case \"FormData\":\n return send(request.body.formData);\n case \"Stream\":\n return Effect.flatMap(Stream.toReadableStreamEffect(request.body.stream), send);\n }\n return send(undefined);\n});\n/**\n * Layer that provides an `HttpClient` implementation backed by the configured\n * `Fetch` function.\n *\n * **When to use**\n *\n * Use when an Effect program should execute `HttpClient` requests through the\n * platform `fetch` implementation, especially in browser, edge, or Node.js\n * runtimes with `globalThis.fetch`.\n *\n * **Details**\n *\n * The layer uses the current `Fetch` reference and optional `RequestInit`\n * service for each request. Request-specific method, headers, body, and abort\n * signal are supplied by the client and override matching `RequestInit` fields.\n *\n * **Gotchas**\n *\n * Fetch behavior comes from the runtime's implementation, so CORS, cookies,\n * redirects, abort handling, and streaming support can vary by platform. Stream\n * request bodies are sent as Web streams with `duplex: \"half\"`, and any\n * `content-length` header is removed before calling `fetch`.\n *\n * @see {@link Fetch} for supplying the fetch implementation used by this layer\n * @see {@link RequestInit} for default `RequestInit` options applied before request-specific fields\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/HttpClient.layerMergedContext(/*#__PURE__*/Effect.succeed(fetch));\n//# sourceMappingURL=FetchHttpClient.js.map" | ||
| ], | ||
| "mappings": ";sUA2BO,IAAM,EAA6B,EAAU,oCAAqC,CACvF,aAAc,IAAM,WAAW,KACjC,CAAC,EAgBM,MAAM,UAAyC,EAAQ,EAAE,yCAAyC,CAAE,CAAC,CAC5G,IAAM,EAAgC,EAAK,CAAC,EAAS,EAAK,EAAQ,IAAU,CAC1E,IAAM,EAAQ,EAAM,OAAO,CAAK,EAC1B,EAAkB,EAAe,EAAM,QAAS,CAAW,GAAK,CAAC,EACnE,EAAU,EAAQ,QAAkB,EAAc,EAAU,EAAQ,OAAO,EAAG,EAAQ,OAAO,EAAI,EAAQ,QAC7G,GAAI,EAAQ,kBACV,EAAkB,EAAO,EAAS,gBAAgB,EAEpD,IAAM,EAAO,KAAe,EAAW,EAAW,CAChD,IAAK,IAAM,EAAM,EAAK,IACjB,EACH,OAAQ,EAAQ,OAChB,UACA,OACA,OAAQ,EAAQ,KAAK,OAAS,SAAW,OAAS,OAClD,QACF,CAAC,EACD,MAAO,KAAS,IAAoB,EAAgB,CAClD,OAAQ,IAAoB,EAAe,CACzC,UACA,OACF,CAAC,CACH,CAAC,CACH,CAAC,EAAG,KAA+B,EAAQ,EAAS,CAAQ,CAAC,EAC7D,OAAQ,EAAQ,KAAK,UACd,UACA,aACH,OAAO,EAAK,EAAQ,KAAK,IAAI,MAC1B,WACH,OAAO,EAAK,EAAQ,KAAK,QAAQ,MAC9B,SACH,OAAc,EAAe,EAAuB,EAAQ,KAAK,MAAM,EAAG,CAAI,EAElF,OAAO,EAAK,MAAS,EACtB,EA8BY,EAAgC,EAAuC,EAAQ,CAAK,CAAC", | ||
| "debugId": "0F3D056D83482C4B64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../tui/src/prompt/content.ts"], | ||
| "sourcesContent": [ | ||
| "export function normalizePromptContent(content: string) {\n if (content.endsWith(\"\\r\\n\")) {\n const body = content.slice(0, -2)\n return !body.includes(\"\\n\") && !body.includes(\"\\r\") ? body : content\n }\n\n if (content.endsWith(\"\\n\")) {\n const body = content.slice(0, -1)\n return !body.includes(\"\\n\") && !body.includes(\"\\r\") ? body : content\n }\n\n return content\n}\n" | ||
| ], | ||
| "mappings": ";AAAO,SAAS,CAAsB,CAAC,EAAiB,CACtD,GAAI,EAAQ,SAAS;AAAA,CAAM,EAAG,CAC5B,IAAM,EAAO,EAAQ,MAAM,EAAG,EAAE,EAChC,MAAO,CAAC,EAAK,SAAS;AAAA,CAAI,GAAK,CAAC,EAAK,SAAS,IAAI,EAAI,EAAO,EAG/D,GAAI,EAAQ,SAAS;AAAA,CAAI,EAAG,CAC1B,IAAM,EAAO,EAAQ,MAAM,EAAG,EAAE,EAChC,MAAO,CAAC,EAAK,SAAS;AAAA,CAAI,GAAK,CAAC,EAAK,SAAS,IAAI,EAAI,EAAO,EAG/D,OAAO", | ||
| "debugId": "45FDFD522A52A8E264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "1B2B56C90C275DC864756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/node-http.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js", "../../node_modules/.bun/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js"], | ||
| "sourcesContent": [ | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nimport { fromImdsCredentials, isImdsCredentials } from \"./remoteProvider/ImdsCredentials\";\nimport { providerConfigFromInit } from \"./remoteProvider/RemoteProviderInit\";\nimport { httpRequest } from \"./remoteProvider/httpRequest\";\nimport { retry } from \"./remoteProvider/retry\";\nexport const ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nexport const ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nexport const ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nexport const fromContainerMetadata = (init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri({ logger: init.logger });\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger,\n });\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n};\nconst requestFromEcsImds = async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN],\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout,\n });\n return buffer.toString();\n};\nconst CMDS_IP = \"169.254.170.2\";\nconst GREENGRASS_HOSTS = new Set([\"localhost\", \"127.0.0.1\"]);\nconst GREENGRASS_PROTOCOLS = new Set([\"http:\", \"https:\"]);\nconst getCmdsUri = async ({ logger }) => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI],\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n let parsed;\n try {\n parsed = new URL(process.env[ENV_CMDS_FULL_URI]);\n }\n catch {\n throw new CredentialsProviderError(`${process.env[ENV_CMDS_FULL_URI]} is not a valid container metadata service URL`, { tryNextLink: false, logger });\n }\n if (!parsed.hostname || !GREENGRASS_HOSTS.has(parsed.hostname)) {\n throw new CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {\n tryNextLink: false,\n logger,\n });\n }\n if (!parsed.protocol || !GREENGRASS_PROTOCOLS.has(parsed.protocol)) {\n throw new CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {\n tryNextLink: false,\n logger,\n });\n }\n return {\n protocol: parsed.protocol,\n hostname: parsed.hostname,\n path: parsed.pathname + parsed.search,\n port: parsed.port ? parseInt(parsed.port, 10) : undefined,\n };\n }\n throw new CredentialsProviderError(\"The container metadata credential provider cannot be used unless\" +\n ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` +\n \" variable is set\", {\n tryNextLink: false,\n logger,\n });\n};\n", | ||
| "export const isImdsCredentials = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.AccessKeyId === \"string\" &&\n typeof arg.SecretAccessKey === \"string\" &&\n typeof arg.Token === \"string\" &&\n typeof arg.Expiration === \"string\";\nexport const fromImdsCredentials = (creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration),\n ...(creds.AccountId && { accountId: creds.AccountId }),\n});\n", | ||
| "export const DEFAULT_TIMEOUT = 1000;\nexport const DEFAULT_MAX_RETRIES = 0;\nexport const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout });\n", | ||
| "import { ProviderError } from \"@smithy/core/config\";\nimport { node_http } from \"./node-http\";\nexport function httpRequest(options) {\n return new Promise((resolve, reject) => {\n const req = node_http.request({\n method: \"GET\",\n ...options,\n hostname: options.hostname?.replace(/^\\[(.+)\\]$/, \"$1\"),\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(Object.assign(new ProviderError(\"Error response received from instance metadata service\"), { statusCode }));\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n", | ||
| "import node_http from \"node:http\";\nexport { node_http };\n", | ||
| "export const retry = (toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n};\n", | ||
| "import { CredentialsProviderError, loadConfig } from \"@smithy/core/config\";\nimport { InstanceMetadataV1FallbackError } from \"./error/InstanceMetadataV1FallbackError\";\nimport { fromImdsCredentials, isImdsCredentials } from \"./remoteProvider/ImdsCredentials\";\nimport { providerConfigFromInit } from \"./remoteProvider/RemoteProviderInit\";\nimport { httpRequest } from \"./remoteProvider/httpRequest\";\nimport { retry } from \"./remoteProvider/retry\";\nimport { getInstanceMetadataEndpoint } from \"./utils/getInstanceMetadataEndpoint\";\nimport { staticStabilityProvider } from \"./utils/staticStabilityProvider\";\nconst IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nconst IMDS_TOKEN_PATH = \"/latest/api/token\";\nconst AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nconst PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nconst X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nexport const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger });\nconst getInstanceMetadataProvider = (init = {}) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = async (maxRetries, options) => {\n const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await loadConfig({\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === undefined) {\n throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger });\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile) => {\n const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false,\n }, {\n profile,\n })();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\", \")}].`);\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile;\n try {\n profile = await getProfile(options);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile;\n }, maxRetries)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options, init);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries);\n };\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger?.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n }\n catch (error) {\n if (error?.statusCode === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\",\n });\n }\n else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger?.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token,\n },\n timeout,\n });\n }\n };\n};\nconst getMetadataToken = async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\",\n },\n});\nconst getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString();\nconst getCredentialsFromProfile = async (profile, options, init) => {\n const credentialsResponse = JSON.parse((await httpRequest({\n ...options,\n path: IMDS_PATH + profile,\n })).toString());\n if (!isImdsCredentials(credentialsResponse)) {\n throw new CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger,\n });\n }\n return fromImdsCredentials(credentialsResponse);\n};\n", | ||
| "import { CredentialsProviderError } from \"@smithy/core/config\";\nexport class InstanceMetadataV1FallbackError extends CredentialsProviderError {\n tryNextLink;\n name = \"InstanceMetadataV1FallbackError\";\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype);\n }\n}\n", | ||
| "import { loadConfig } from \"@smithy/core/config\";\nimport { parseUrl } from \"@smithy/core/protocols\";\nimport { Endpoint as InstanceMetadataEndpoint } from \"../config/Endpoint\";\nimport { ENDPOINT_CONFIG_OPTIONS } from \"../config/EndpointConfigOptions\";\nimport { EndpointMode } from \"../config/EndpointMode\";\nimport { ENDPOINT_MODE_CONFIG_OPTIONS, } from \"../config/EndpointModeConfigOptions\";\nexport const getInstanceMetadataEndpoint = async () => parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig()));\nconst getFromEndpointConfig = async () => loadConfig(ENDPOINT_CONFIG_OPTIONS)();\nconst getFromEndpointModeConfig = async () => {\n const endpointMode = await loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case EndpointMode.IPv4:\n return InstanceMetadataEndpoint.IPv4;\n case EndpointMode.IPv6:\n return InstanceMetadataEndpoint.IPv6;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`);\n }\n};\n", | ||
| "export var Endpoint;\n(function (Endpoint) {\n Endpoint[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n})(Endpoint || (Endpoint = {}));\n", | ||
| "export const ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nexport const CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nexport const ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: undefined,\n};\n", | ||
| "export var EndpointMode;\n(function (EndpointMode) {\n EndpointMode[\"IPv4\"] = \"IPv4\";\n EndpointMode[\"IPv6\"] = \"IPv6\";\n})(EndpointMode || (EndpointMode = {}));\n", | ||
| "import { EndpointMode } from \"./EndpointMode\";\nexport const ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nexport const CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nexport const ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: EndpointMode.IPv4,\n};\n", | ||
| "const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nconst STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nconst STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nexport const getExtendedInstanceMetadataCredentials = (credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS +\n Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1000);\n logger.warn(\"Attempting credential expiration extension due to a credential service availability issue. A refresh of these \" +\n `credentials will be attempted after ${new Date(newExpiration)}.\\nFor more information, please visit: ` +\n STATIC_STABILITY_DOC_URL);\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...(originalExpiration ? { originalExpiration } : {}),\n expiration: newExpiration,\n };\n};\n", | ||
| "import { getExtendedInstanceMetadataCredentials } from \"./getExtendedInstanceMetadataCredentials\";\nexport const staticStabilityProvider = (provider, options = {}) => {\n const logger = options?.logger || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n }\n catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n }\n else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n};\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "C6B2C226B725049A64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/providers/openai-compatible.ts"], | ||
| "sourcesContent": [ | ||
| "import { ProviderID, type ModelID } from \"../schema/index.js\"\nimport * as OpenAICompatibleChat from \"../protocols/openai-compatible-chat.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { AuthOptions, type ProviderAuthOption } from \"../route/auth-options.js\"\nimport type { ProviderPackage } from \"../provider-package.js\"\nimport { profiles, type OpenAICompatibleProfile } from \"./openai-compatible-profile.js\"\nimport type { OpenAIProviderOptionsInput } from \"./openai-options.js\"\n\nexport const id = ProviderID.make(\"openai-compatible\")\n\ntype GenericModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly provider?: string\n readonly baseURL: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly apiKey?: string\n readonly baseURL: string\n readonly provider?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n}\n\nexport type FamilyModelOptions = Omit<RouteDefaultsInput, \"providerOptions\"> &\n ProviderAuthOption<\"optional\"> & {\n readonly baseURL?: string\n readonly providerOptions?: OpenAIProviderOptionsInput\n }\n\nexport const routes = [OpenAICompatibleChat.route]\n\nexport const configure = (input: GenericModelOptions) => {\n const provider = input.provider ?? \"openai-compatible\"\n const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input\n const route = OpenAICompatibleChat.route.with({\n ...rest,\n provider,\n endpoint: { baseURL },\n auth: AuthOptions.bearer(input, []),\n })\n return {\n id: ProviderID.make(provider),\n model: (modelID: string | ModelID) =>\n route.model<OpenAIProviderOptionsInput>({ id: modelID, provider: ProviderID.make(provider) }),\n configure,\n }\n}\n\nconst define = (profile: OpenAICompatibleProfile) => {\n const configureProfile = (input: FamilyModelOptions = {}) => {\n const facade = configure({\n ...input,\n baseURL: input.baseURL ?? profile.baseURL,\n provider: profile.provider,\n })\n return {\n id: ProviderID.make(profile.provider),\n model: facade.model,\n configure: configureProfile,\n }\n }\n return configureProfile()\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenAIProviderOptionsInput>[\"model\"] = (modelID, settings) =>\n configure({\n apiKey: settings.apiKey,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n provider: settings.provider,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n\nexport const baseten = define(profiles.baseten)\nexport const cerebras = define(profiles.cerebras)\nexport const deepinfra = define(profiles.deepinfra)\nexport const deepseek = define(profiles.deepseek)\nexport const fireworks = define(profiles.fireworks)\nexport const groq = define(profiles.groq)\nexport const togetherai = define(profiles.togetherai)\n" | ||
| ], | ||
| "mappings": ";6nBAQO,IAAM,EAAK,EAAW,KAAK,mBAAmB,EAsBxC,EAAS,CAAsB,CAAK,EAEpC,EAAY,CAAC,IAA+B,CACvD,IAAM,EAAW,EAAM,UAAY,qBAC3B,SAAU,EAAG,UAAS,OAAQ,EAAS,KAAM,KAAU,GAAS,EAClE,EAA6B,EAAM,KAAK,IACzC,EACH,WACA,SAAU,CAAE,SAAQ,EACpB,KAAM,EAAY,OAAO,EAAO,CAAC,CAAC,CACpC,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,CAAQ,EAC5B,MAAO,CAAC,IACN,EAAM,MAAkC,CAAE,GAAI,EAAS,SAAU,EAAW,KAAK,CAAQ,CAAE,CAAC,EAC9F,WACF,GAGI,EAAS,CAAC,IAAqC,CACnD,IAAM,EAAmB,CAAC,EAA4B,CAAC,IAAM,CAC3D,IAAM,EAAS,EAAU,IACpB,EACH,QAAS,EAAM,SAAW,EAAQ,QAClC,SAAU,EAAQ,QACpB,CAAC,EACD,MAAO,CACL,GAAI,EAAW,KAAK,EAAQ,QAAQ,EACpC,MAAO,EAAO,MACd,UAAW,CACb,GAEF,OAAO,EAAiB,GAGb,EAAW,CACtB,KACA,WACF,EAEa,EAAmF,CAAC,EAAS,IACxG,EAAU,CACR,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO,EAEL,EAAU,EAAO,EAAS,OAAO,EACjC,EAAW,EAAO,EAAS,QAAQ,EACnC,EAAY,EAAO,EAAS,SAAS,EACrC,EAAW,EAAO,EAAS,QAAQ,EACnC,EAAY,EAAO,EAAS,SAAS,EACrC,EAAO,EAAO,EAAS,IAAI,EAC3B,EAAa,EAAO,EAAS,UAAU", | ||
| "debugId": "8FE0DE91BA281EC264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../core/src/mcp/oauth.ts"], | ||
| "sourcesContent": [ | ||
| "export * as MCPOAuth from \"./oauth.js\"\n\nimport { auth, type OAuthClientProvider } from \"@modelcontextprotocol/sdk/client/auth.js\"\nimport type { OAuthClientInformationMixed, OAuthTokens } from \"@modelcontextprotocol/sdk/shared/auth.js\"\nimport { Deferred, Effect } from \"effect\"\nimport { Credential } from \"@opencode-ai/schema/credential\"\nimport { ConfigMCP } from \"@opencode-ai/schema/config/mcp\"\nimport { OauthCallbackPage } from \"../oauth/page.js\"\nimport type { Integration } from \"../integration.js\"\n\n/** Persists the OAuth artifacts for one MCP server session: DCR client info, PKCE verifier, and tokens. */\nexport interface Store {\n readonly tokens: () => Promise<OAuthTokens | undefined>\n readonly saveTokens: (tokens: OAuthTokens) => Promise<void>\n readonly clientInformation: () => Promise<OAuthClientInformationMixed | undefined>\n readonly saveClientInformation: (info: OAuthClientInformationMixed) => Promise<void>\n readonly codeVerifier: () => Promise<string | undefined>\n readonly saveCodeVerifier: (verifier: string) => Promise<void>\n}\n\nexport interface Options {\n /** Loopback URL the authorization server redirects back to after the user approves. */\n readonly redirectUrl: string\n /** Space-delimited OAuth scopes to request when the server requires specific ones. */\n readonly scope?: string\n /** CSRF state embedded in the authorization request; required by the spec and enforced by some servers.\n * The caller is responsible for validating the value echoed back to the redirect. */\n readonly state?: string\n /** Statically pre-registered client credentials from config; when set, the SDK skips dynamic registration. */\n readonly client?: { readonly id: string; readonly secret?: string }\n /** Invoked by the SDK to drop credentials it has determined are invalid (e.g. a rejected refresh token). */\n readonly invalidate?: (scope: \"all\" | \"client\" | \"tokens\" | \"verifier\" | \"discovery\") => void | Promise<void>\n /** Receives the authorization URL so the caller can open a browser and capture the eventual code. */\n readonly onRedirect: (url: URL) => void | Promise<void>\n readonly store: Store\n}\n\n/**\n * Builds the MCP SDK's OAuthClientProvider. The SDK drives dynamic client registration, PKCE, and\n * token refresh through these callbacks; we only persist whatever it hands back via `store`.\n */\nexport const provider = (options: Options): OAuthClientProvider => {\n const state = options.state\n const client = options.client\n return {\n redirectUrl: options.redirectUrl,\n clientMetadata: {\n redirect_uris: [options.redirectUrl],\n client_name: \"opencode\",\n client_uri: \"https://opencode.ai\",\n grant_types: [\"authorization_code\", \"refresh_token\"],\n response_types: [\"code\"],\n token_endpoint_auth_method: client?.secret ? \"client_secret_post\" : \"none\",\n ...(options.scope ? { scope: options.scope } : {}),\n },\n // Only advertise state when the caller supplied one (the interactive flow); the connect-time\n // provider has no redirect to validate, so it omits it.\n ...(state !== undefined ? { state: () => state } : {}),\n // Static client config short-circuits dynamic registration; otherwise the SDK registers and we persist.\n clientInformation: () =>\n client ? { client_id: client.id, client_secret: client.secret } : options.store.clientInformation(),\n saveClientInformation: (info) => options.store.saveClientInformation(info),\n tokens: () => options.store.tokens(),\n saveTokens: (tokens) => options.store.saveTokens(tokens),\n redirectToAuthorization: (url) => options.onRedirect(url),\n ...(options.invalidate ? { invalidateCredentials: options.invalidate } : {}),\n saveCodeVerifier: (verifier) => options.store.saveCodeVerifier(verifier),\n // The SDK only reads the verifier back after saving one earlier in the same flow; a miss means\n // the flow was resumed without its session state, which the SDK surfaces as an auth failure.\n codeVerifier: async () => {\n const verifier = await options.store.codeVerifier()\n if (!verifier) throw new Error(\"Missing PKCE code verifier for MCP OAuth flow\")\n return verifier\n },\n }\n}\n\n/** A Store that keeps OAuth artifacts in memory for the duration of one interactive login attempt. */\nexport const memoryStore = (): Store => {\n let tokens: OAuthTokens | undefined\n let client: OAuthClientInformationMixed | undefined\n let verifier: string | undefined\n return {\n tokens: async () => tokens,\n saveTokens: async (value) => {\n tokens = value\n },\n clientInformation: async () => client,\n saveClientInformation: async (value) => {\n client = value\n },\n codeVerifier: async () => verifier,\n saveCodeVerifier: async (value) => {\n verifier = value\n },\n }\n}\n\n/** Reads the dynamically-registered client info we stash in a credential's metadata, for token refresh. */\nexport const clientFromCredential = (credential: Credential.OAuth) =>\n credential.metadata?.client as OAuthClientInformationMixed | undefined\n\n/** Folds SDK tokens (plus DCR client info and the server URL) into a storable credential. */\nexport const toCredential = (input: {\n readonly methodID: Integration.MethodID\n readonly serverUrl: string\n readonly tokens: OAuthTokens\n readonly client: OAuthClientInformationMixed | undefined\n}) =>\n Credential.OAuth.make({\n type: \"oauth\",\n methodID: input.methodID,\n access: input.tokens.access_token,\n refresh: input.tokens.refresh_token ?? \"\",\n // 0 marks an unknown/non-expiring token; toTokens then omits expires_in so the SDK won't force a refresh.\n expires: input.tokens.expires_in ? Date.now() + input.tokens.expires_in * 1000 : 0,\n metadata: {\n serverUrl: input.serverUrl,\n tokenType: input.tokens.token_type,\n ...(input.tokens.scope ? { scope: input.tokens.scope } : {}),\n ...(input.client ? { client: input.client } : {}),\n },\n })\n\n/** Reconstructs SDK tokens from a stored credential so the connect-time provider can present them. */\nexport const toTokens = (credential: Credential.OAuth): OAuthTokens => {\n const metadata = credential.metadata ?? {}\n return {\n access_token: credential.access,\n token_type: typeof metadata.tokenType === \"string\" ? metadata.tokenType : \"Bearer\",\n ...(credential.refresh ? { refresh_token: credential.refresh } : {}),\n ...(credential.expires ? { expires_in: Math.max(0, Math.floor((credential.expires - Date.now()) / 1000)) } : {}),\n ...(typeof metadata.scope === \"string\" ? { scope: metadata.scope } : {}),\n }\n}\n\n/**\n * Runs the interactive OAuth login for one remote MCP server. Stands up a loopback callback server,\n * lets the SDK drive DCR + PKCE to produce an authorization URL, and returns an attempt whose callback\n * exchanges the redirect code for a storable credential. Scoped: the callback server closes with the scope.\n */\nexport const authorize = (input: {\n readonly name: string\n readonly config: typeof ConfigMCP.Remote.Type\n readonly methodID: Integration.MethodID\n}) =>\n Effect.gen(function* () {\n const oauth = input.config.oauth || undefined\n const store = memoryStore()\n const code = yield* Deferred.make<string, Error>()\n const redirect = oauth?.redirect_uri ? new URL(oauth.redirect_uri) : undefined\n const redirectPath = redirect?.pathname ?? \"/callback\"\n const state = Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString(\"base64url\")\n\n // Lazy so runtimes without a loopback listener (workerd) never evaluate node:http.\n const { createServer } = yield* Effect.promise(() => import(\"node:http\"))\n const server = createServer((request, response) => {\n const url = new URL(request.url ?? \"/\", \"http://127.0.0.1\")\n if (url.pathname !== redirectPath) {\n response.writeHead(404).end(\"Not found\")\n return\n }\n const fail = (reason: string) => {\n Effect.runFork(Deferred.fail(code, new Error(reason)))\n response\n .writeHead(400, { \"Content-Type\": \"text/html\" })\n .end(OauthCallbackPage.error(reason, { provider: input.name }))\n }\n const error = url.searchParams.get(\"error_description\") ?? url.searchParams.get(\"error\")\n if (error) return fail(error)\n // Reject a redirect whose state does not match what we issued: this is the CSRF defense the\n // state parameter exists for, so an attacker can't inject their own authorization code.\n if (url.searchParams.get(\"state\") !== state) return fail(\"OAuth state mismatch\")\n const value = url.searchParams.get(\"code\")\n if (!value) return fail(\"Missing authorization code\")\n Effect.runFork(Deferred.succeed(code, value))\n response.writeHead(200, { \"Content-Type\": \"text/html\" }).end(OauthCallbackPage.success({ provider: input.name }))\n })\n\n // Bind the port the redirect will actually arrive on: an explicit callback_port wins, else the port\n // pinned by redirect_uri, else an ephemeral port. Binding ephemerally while redirect_uri names a fixed\n // port would send the browser somewhere nothing is listening, hanging the attempt until it expires.\n const redirectPort = Number(redirect?.port) || undefined\n const port = yield* Effect.callback<number, Error>((resume) => {\n server.once(\"error\", (error) => resume(Effect.fail(error)))\n server.listen(oauth?.callback_port ?? redirectPort ?? 0, \"127.0.0.1\", () => {\n const address = server.address()\n resume(\n address && typeof address === \"object\"\n ? Effect.succeed(address.port)\n : Effect.fail(new Error(\"Could not determine MCP OAuth callback port\")),\n )\n })\n })\n yield* Effect.addFinalizer(() => Effect.sync(() => server.close()))\n\n let authorizationUrl: URL | undefined\n const oauthProvider = provider({\n redirectUrl: oauth?.redirect_uri ?? `http://127.0.0.1:${port}${redirectPath}`,\n scope: oauth?.scope,\n state,\n client: oauth?.client_id ? { id: oauth.client_id, secret: oauth.client_secret } : undefined,\n onRedirect: (url) => {\n authorizationUrl = url\n },\n store,\n })\n\n const finalize = Effect.gen(function* () {\n const tokens = yield* Effect.promise(() => store.tokens())\n if (!tokens) return yield* Effect.fail(new Error(`MCP server \"${input.name}\" did not return OAuth tokens`))\n const client = yield* Effect.promise(() => store.clientInformation())\n return toCredential({ methodID: input.methodID, serverUrl: input.config.url, tokens, client })\n })\n\n const result = yield* Effect.tryPromise({\n try: () => auth(oauthProvider, { serverUrl: input.config.url, scope: oauth?.scope }),\n catch: (error) => (error instanceof Error ? error : new Error(String(error))),\n })\n\n // The provider may already hold valid tokens (e.g. a re-auth), in which case there is no browser step.\n if (result === \"AUTHORIZED\") {\n return {\n url: input.config.url,\n instructions: `Connected to ${input.name}.`,\n mode: \"auto\" as const,\n callback: finalize,\n }\n }\n if (!authorizationUrl)\n return yield* Effect.fail(new Error(`MCP server \"${input.name}\" did not provide an authorization URL`))\n\n return {\n url: authorizationUrl.toString(),\n instructions: `Authorize ${input.name} in your browser. This window will close automatically.`,\n mode: \"auto\" as const,\n callback: Deferred.await(code).pipe(\n Effect.flatMap((value) =>\n Effect.tryPromise({\n try: () =>\n auth(oauthProvider, { serverUrl: input.config.url, authorizationCode: value, scope: oauth?.scope }),\n catch: (error) => (error instanceof Error ? error : new Error(String(error))),\n }),\n ),\n Effect.flatMap(() => finalize),\n ),\n }\n })\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "915F988BC452C12364756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/debug/agents.ts"], | ||
| "sourcesContent": [ | ||
| "import { EOL } from \"os\"\nimport { Effect } from \"effect\"\nimport { OpenCode } from \"@opencode-ai/client\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { ServiceConfig } from \"../../../services/service-config\"\n\nexport default Runtime.handler(\n Commands.commands.debug.commands.agents,\n Effect.fn(\"cli.debug.agents\")(function* () {\n const endpoint = yield* Service.ensure(yield* ServiceConfig.options())\n const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })\n const response = yield* Effect.promise(() => client.agent.list({ location: { directory: process.cwd() } }))\n process.stdout.write(\n JSON.stringify(\n response.data.toSorted((a, b) => a.id.localeCompare(b.id)),\n null,\n 2,\n ) + EOL,\n )\n }),\n)\n" | ||
| ], | ||
| "mappings": ";m6BAAA,cAAS,WAQT,IAAe,IAAQ,QACrB,EAAS,SAAS,MAAM,SAAS,OACjC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAW,MAAO,EAAQ,OAAO,MAAO,EAAc,QAAQ,CAAC,EAC/D,EAAS,EAAS,KAAK,CAAE,QAAS,EAAS,IAAK,QAAS,EAAQ,QAAQ,CAAQ,CAAE,CAAC,EACpF,EAAW,MAAO,EAAO,QAAQ,IAAM,EAAO,MAAM,KAAK,CAAE,SAAU,CAAE,UAAW,QAAQ,IAAI,CAAE,CAAE,CAAC,CAAC,EAC1G,QAAQ,OAAO,MACb,KAAK,UACH,EAAS,KAAK,SAAS,CAAC,EAAG,IAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC,EACzD,KACA,CACF,EAAI,CACN,EACD,CACH", | ||
| "debugId": "19B46DD29A3C686264756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-compatible-responses.ts", "../ai/src/providers/google-vertex-responses.ts"], | ||
| "sourcesContent": [ | ||
| "import { Route, type RouteRoutedLanguageModelInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { OpenResponses } from \"./open-responses.js\"\n\nconst ADAPTER = \"openai-compatible-responses\"\n\nexport type OpenAICompatibleResponsesLanguageModelInput = RouteRoutedLanguageModelInput\n\n/**\n * Deployment adapter for providers that expose an Open Responses-compatible\n * `/responses` endpoint. Provider helpers configure identity, endpoint, and\n * auth while the semantic protocol remains provider-neutral.\n */\nexport const route = Route.make({\n id: ADAPTER,\n providerMetadataKey: \"openresponses\",\n protocol: OpenResponses.protocol,\n endpoint: Endpoint.path(OpenResponses.PATH),\n transport: OpenResponses.httpTransport,\n defaults: { providerOptions: { store: false, include: [\"reasoning.encrypted_content\"] } },\n})\n\nexport * as OpenAICompatibleResponses from \"./openai-compatible-responses.js\"\n", | ||
| "import type { ProviderPackage } from \"../provider-package.js\"\nimport { OpenAICompatibleResponses } from \"../protocols/openai-compatible-responses.js\"\nimport type { RouteDefaultsInput } from \"../route/client.js\"\nimport { ProviderID, type ModelID } from \"../schema/index.js\"\nimport { GoogleVertexShared } from \"./google-vertex-shared.js\"\nimport type { OpenResponsesProviderOptionsInput } from \"./open-responses-options.js\"\n\nexport const id = ProviderID.make(\"google-vertex\")\n\nexport type Config = RouteDefaultsInput &\n GoogleVertexShared.OAuthOptions & {\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenResponsesProviderOptionsInput\n }\n\nexport interface Settings extends ProviderPackage.Settings {\n readonly accessToken?: string\n readonly apiKey?: never\n readonly baseURL?: string\n readonly location?: string\n readonly project?: string\n readonly providerOptions?: OpenResponsesProviderOptionsInput\n}\n\nconst route = OpenAICompatibleResponses.route.with({\n id: \"google-vertex-responses\",\n provider: id,\n providerOptions: { store: false },\n})\n\nexport const routes = [route]\n\nconst configuredRoute = (input: Config) => {\n if (\"apiKey\" in input && input.apiKey !== undefined)\n throw new Error(\"Google Vertex Responses does not support API keys\")\n const {\n accessToken: _accessToken,\n auth: _auth,\n baseURL,\n location: inputLocation,\n project: inputProject,\n ...rest\n } = input\n const location = GoogleVertexShared.location(inputLocation, \"global\")\n const project = GoogleVertexShared.project(inputProject)\n return route.with({\n ...rest,\n endpoint: {\n baseURL:\n baseURL ??\n `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`,\n },\n auth: GoogleVertexShared.oauth(input, project),\n })\n}\n\nexport const configure = (input: Config = {}) => {\n const route = configuredRoute(input)\n return {\n id,\n model: (modelID: string | ModelID) => route.model<OpenResponsesProviderOptionsInput>({ id: modelID }),\n configure,\n }\n}\n\nexport const provider = {\n id,\n configure,\n}\n\nexport const model: ProviderPackage.Definition<Settings, OpenResponsesProviderOptionsInput>[\"model\"] = (\n modelID,\n settings,\n) => {\n if (settings.apiKey !== undefined) throw new Error(\"Google Vertex Responses does not support API keys\")\n return configure({\n accessToken: settings.accessToken,\n baseURL: settings.baseURL,\n headers: settings.headers === undefined ? undefined : { ...settings.headers },\n http: settings.body === undefined ? undefined : { body: { ...settings.body } },\n location: settings.location,\n project: settings.project,\n providerOptions: settings.providerOptions,\n }).model(modelID)\n}\n" | ||
| ], | ||
| "mappings": ";2nBAIA,IAAM,EAAU,8BASH,EAAQ,EAAM,KAAK,CAC9B,GAAI,EACJ,oBAAqB,gBACrB,SAAU,EAAc,SACxB,SAAU,EAAS,KAAK,EAAc,IAAI,EAC1C,UAAW,EAAc,cACzB,SAAU,CAAE,gBAAiB,CAAE,MAAO,GAAO,QAAS,CAAC,6BAA6B,CAAE,CAAE,CAC1F,CAAC,ECbM,IAAM,EAAK,EAAW,KAAK,eAAe,EAmB3C,EAAQ,EAA0B,MAAM,KAAK,CACjD,GAAI,0BACJ,SAAU,EACV,gBAAiB,CAAE,MAAO,EAAM,CAClC,CAAC,EAID,IAAM,EAAkB,CAAC,IAAkB,CACzC,GAAI,WAAY,GAAS,EAAM,SAAW,OACxC,MAAU,MAAM,mDAAmD,EACrE,IACE,YAAa,EACb,KAAM,EACN,UACA,SAAU,EACV,QAAS,KACN,GACD,EACE,EAAW,EAAmB,SAAS,EAAe,QAAQ,EAC9D,EAAU,EAAmB,QAAQ,CAAY,EACvD,OAAO,EAAM,KAAK,IACb,EACH,SAAU,CACR,QACE,GACA,iDAAiD,EAAmB,eAAe,CAAO,eAAe,qBAC7G,EACA,KAAM,EAAmB,MAAM,EAAO,CAAO,CAC/C,CAAC,GAGU,EAAY,CAAC,EAAgB,CAAC,IAAM,CAC/C,IAAM,EAAQ,EAAgB,CAAK,EACnC,MAAO,CACL,KACA,MAAO,CAAC,IAA8B,EAAM,MAAyC,CAAE,GAAI,CAAQ,CAAC,EACpG,WACF,GAQK,IAAM,EAA0F,CACrG,EACA,IACG,CACH,GAAI,EAAS,SAAW,OAAW,MAAU,MAAM,mDAAmD,EACtG,OAAO,EAAU,CACf,YAAa,EAAS,YACtB,QAAS,EAAS,QAClB,QAAS,EAAS,UAAY,OAAY,OAAY,IAAK,EAAS,OAAQ,EAC5E,KAAM,EAAS,OAAS,OAAY,OAAY,CAAE,KAAM,IAAK,EAAS,IAAK,CAAE,EAC7E,SAAU,EAAS,SACnB,QAAS,EAAS,QAClB,gBAAiB,EAAS,eAC5B,CAAC,EAAE,MAAM,CAAO", | ||
| "debugId": "7AC605468D51024F64756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/lifecycle.ts", "../ai/src/protocols/utils/gemini-tool-schema.ts", "../ai/src/protocols/utils/tool-schema.ts"], | ||
| "sourcesContent": [ | ||
| "import { LLMEvent, type FinishReasonDetails, type ProviderMetadata, type Usage } from \"../../schema/index.js\"\n\nexport interface State {\n readonly stepStarted: boolean\n readonly text: ReadonlySet<string>\n readonly reasoning: ReadonlySet<string>\n}\n\nexport const initial = (): State => ({ stepStarted: false, text: new Set(), reasoning: new Set() })\n\nexport const stepStart = (state: State, events: LLMEvent[]): State => {\n if (state.stepStarted) return state\n events.push(LLMEvent.stepStart({ index: 0 }))\n return { ...state, stepStarted: true }\n}\n\nexport const textStart = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => {\n if (state.text.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.textStart({ id, providerMetadata }))\n return { ...stepped, text: new Set([...stepped.text, id]) }\n}\n\nexport const textDelta = (\n state: State,\n events: LLMEvent[],\n id: string,\n text: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n const started = textStart(state, events, id)\n events.push(LLMEvent.textDelta({ id, text, providerMetadata }))\n return started\n}\n\nexport const reasoningStart = (\n state: State,\n events: LLMEvent[],\n id: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n if (state.reasoning.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.reasoningStart({ id, providerMetadata }))\n return { ...stepped, reasoning: new Set([...stepped.reasoning, id]) }\n}\n\nexport const reasoningDelta = (\n state: State,\n events: LLMEvent[],\n id: string,\n text: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n const started = reasoningStart(state, events, id, providerMetadata)\n events.push(LLMEvent.reasoningDelta({ id, text, providerMetadata }))\n return started\n}\n\nexport const reasoningEnd = (\n state: State,\n events: LLMEvent[],\n id: string,\n providerMetadata?: ProviderMetadata,\n): State => {\n if (!state.reasoning.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.reasoningEnd({ id, providerMetadata }))\n const reasoning = new Set(stepped.reasoning)\n reasoning.delete(id)\n return { ...stepped, reasoning }\n}\n\nexport const textEnd = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => {\n if (!state.text.has(id)) return state\n const stepped = stepStart(state, events)\n events.push(LLMEvent.textEnd({ id, providerMetadata }))\n const text = new Set(stepped.text)\n text.delete(id)\n return { ...stepped, text }\n}\n\nconst closeOpenBlocks = (state: State, events: LLMEvent[]): State => {\n for (const id of state.reasoning) events.push(LLMEvent.reasoningEnd({ id }))\n for (const id of state.text) events.push(LLMEvent.textEnd({ id }))\n return { ...state, text: new Set(), reasoning: new Set() }\n}\n\nexport const finish = (\n state: State,\n events: LLMEvent[],\n input: {\n readonly reason: FinishReasonDetails\n readonly usage?: Usage\n readonly providerMetadata?: ProviderMetadata\n },\n): State => {\n const stepped = closeOpenBlocks(stepStart(state, events), events)\n events.push(\n LLMEvent.stepFinish({\n index: 0,\n reason: input.reason,\n usage: input.usage,\n providerMetadata: input.providerMetadata,\n }),\n LLMEvent.finish(input),\n )\n return { ...stepped, stepStarted: false }\n}\n\nexport * as Lifecycle from \"./lifecycle.js\"\n", | ||
| "import { isRecord } from \"../../utils/record.js\"\n\n// Gemini accepts a JSON Schema-like dialect for tool parameters, but rejects a\n// handful of common JSON Schema shapes. Keep this projection isolated so the\n// Gemini protocol file still reads like the other protocol modules.\nconst SCHEMA_INTENT_KEYS = [\n \"type\",\n \"properties\",\n \"items\",\n \"prefixItems\",\n \"enum\",\n \"const\",\n \"$ref\",\n \"additionalProperties\",\n \"patternProperties\",\n \"required\",\n \"not\",\n \"if\",\n \"then\",\n \"else\",\n]\n\nconst hasCombiner = (schema: unknown) =>\n isRecord(schema) && (Array.isArray(schema.anyOf) || Array.isArray(schema.oneOf) || Array.isArray(schema.allOf))\n\nconst hasSchemaIntent = (schema: unknown) =>\n isRecord(schema) && (hasCombiner(schema) || SCHEMA_INTENT_KEYS.some((key) => key in schema))\n\nconst sanitizeNode = (schema: unknown): unknown => {\n if (!isRecord(schema)) return Array.isArray(schema) ? schema.map(sanitizeNode) : schema\n\n const result: Record<string, unknown> = Object.fromEntries(\n Object.entries(schema).map(([key, value]) => [\n key,\n key === \"enum\" && Array.isArray(value) ? value.map(String) : sanitizeNode(value),\n ]),\n )\n\n if (Array.isArray(result.enum) && (result.type === \"integer\" || result.type === \"number\")) result.type = \"string\"\n\n const properties = result.properties\n if (result.type === \"object\" && isRecord(properties) && Array.isArray(result.required)) {\n result.required = result.required.filter((field) => typeof field === \"string\" && field in properties)\n }\n\n if (result.type === \"array\" && !hasCombiner(result)) {\n result.items = result.items ?? {}\n if (isRecord(result.items) && !hasSchemaIntent(result.items)) result.items = { ...result.items, type: \"string\" }\n }\n\n if (typeof result.type === \"string\" && result.type !== \"object\" && !hasCombiner(result)) {\n delete result.properties\n delete result.required\n }\n\n return result\n}\n\nconst emptyObjectSchema = (schema: Record<string, unknown>) =>\n schema.type === \"object\" &&\n (!isRecord(schema.properties) || Object.keys(schema.properties).length === 0) &&\n !schema.additionalProperties\n\nconst projectNode = (schema: unknown, nested = false): Record<string, unknown> | undefined => {\n if (!isRecord(schema)) return undefined\n if (!nested && emptyObjectSchema(schema)) return undefined\n const types = Array.isArray(schema.type) ? schema.type.filter((type) => type !== \"null\") : undefined\n const anyOf = Array.isArray(schema.anyOf) ? schema.anyOf : undefined\n const hasNullAnyOf = anyOf?.some((item) => isRecord(item) && item.type === \"null\") ?? false\n const anyOfTypes = hasNullAnyOf ? anyOf?.filter((item) => !isRecord(item) || item.type !== \"null\") : anyOf\n const flattenedAnyOf = hasNullAnyOf && anyOfTypes?.length === 1 ? projectNode(anyOfTypes[0], true) : undefined\n const result = Object.fromEntries(\n [\n [\"description\", schema.description],\n [\"required\", schema.required],\n [\"format\", schema.format],\n [\"type\", types ? (types.length === 0 ? \"null\" : undefined) : schema.type],\n [\n \"nullable\",\n (Array.isArray(schema.type) && schema.type.includes(\"null\") && types && types.length > 0) || hasNullAnyOf\n ? true\n : undefined,\n ],\n [\"enum\", schema.const !== undefined ? [schema.const] : schema.enum],\n [\n \"properties\",\n isRecord(schema.properties)\n ? Object.fromEntries(Object.entries(schema.properties).map(([key, value]) => [key, projectNode(value, true)]))\n : undefined,\n ],\n [\n \"items\",\n Array.isArray(schema.items)\n ? schema.items.map((item) => projectNode(item, true))\n : schema.items === undefined\n ? undefined\n : projectNode(schema.items, true),\n ],\n [\"allOf\", Array.isArray(schema.allOf) ? schema.allOf.map((item) => projectNode(item, true)) : undefined],\n [\n \"anyOf\",\n anyOfTypes\n ? hasNullAnyOf && anyOfTypes.length === 1\n ? undefined\n : anyOfTypes.map((item) => projectNode(item, true))\n : types && types.length > 0\n ? types.map((type) => ({ type }))\n : undefined,\n ],\n [\"oneOf\", Array.isArray(schema.oneOf) ? schema.oneOf.map((item) => projectNode(item, true)) : undefined],\n [\"minLength\", schema.minLength],\n ].filter((entry) => entry[1] !== undefined),\n )\n return flattenedAnyOf ? { ...result, ...flattenedAnyOf } : result\n}\n\nexport const convert = (schema: unknown) => projectNode(sanitizeNode(schema))\n\nexport * as GeminiToolSchema from \"./gemini-tool-schema.js\"\n", | ||
| "import type { JsonSchema, LanguageModelToolSchemaCompatibility } from \"../../schema/index.js\"\nimport { isRecord } from \"../../utils/record.js\"\nimport { GeminiToolSchema } from \"./gemini-tool-schema.js\"\n\nconst tupleItemsSchema = (items: ReadonlyArray<unknown>) => {\n const projected = items.map(moonshotNode)\n if (projected.length === 0) return {}\n if (projected.length === 1) return projected[0]\n return { anyOf: projected }\n}\n\nconst moonshotNode = (schema: unknown): unknown => {\n if (Array.isArray(schema)) return schema.map(moonshotNode)\n if (!isRecord(schema)) return schema\n if (typeof schema.$ref === \"string\") return { $ref: schema.$ref }\n return Object.fromEntries(\n Object.entries(schema).flatMap(([key, value]) => {\n if (key === \"items\" && Array.isArray(value)) return [[key, tupleItemsSchema(value)]]\n if (key === \"prefixItems\") {\n if (\"items\" in schema) return []\n return [[\"items\", tupleItemsSchema(Array.isArray(value) ? value : [])]]\n }\n if (key === \"unevaluatedItems\") return []\n return [[key, moonshotNode(value)]]\n }),\n )\n}\n\nconst moonshot = (schema: JsonSchema): JsonSchema => {\n const projected = moonshotNode(schema)\n return isRecord(projected) ? projected : {}\n}\n\nconst openAI = (schema: JsonSchema): JsonSchema => schema\nconst responses = openAI\n\nconst gemini = (schema: JsonSchema): JsonSchema => GeminiToolSchema.convert(schema) ?? {}\n\nconst modelCompatibility = (\n schema: JsonSchema,\n compatibility: LanguageModelToolSchemaCompatibility | undefined,\n): JsonSchema => {\n if (compatibility === undefined) return schema\n switch (compatibility) {\n case \"gemini\":\n return gemini(schema)\n case \"moonshot\":\n return moonshot(schema)\n }\n}\n\nexport const ToolSchemaProjection = {\n gemini,\n modelCompatibility,\n moonshot,\n openAI,\n responses,\n} as const\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "260921EFD4D3D46364756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/@ai-sdk+togetherai@2.0.41+d6123d32214422cb/node_modules/@ai-sdk/togetherai/dist/index.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/togetherai-provider.ts\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel\n} from \"@ai-sdk/openai-compatible\";\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/togetherai-reranking-model.ts\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\n\n// src/reranking/togetherai-reranking-api.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\nvar togetheraiErrorSchema = lazySchema(\n () => zodSchema(\n z.object({\n error: z.object({\n message: z.string()\n })\n })\n )\n);\nvar togetheraiRerankingResponseSchema = lazySchema(\n () => zodSchema(\n z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n results: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number()\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number()\n })\n })\n )\n);\n\n// src/reranking/togetherai-reranking-options.ts\nimport { lazySchema as lazySchema2, zodSchema as zodSchema2 } from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar togetheraiRerankingModelOptionsSchema = lazySchema2(\n () => zodSchema2(\n z2.object({\n rankFields: z2.array(z2.string()).optional()\n })\n )\n);\n\n// src/reranking/togetherai-reranking-model.ts\nvar TogetherAIRerankingModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v3\";\n this.modelId = modelId;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n // see https://docs.together.ai/reference/rerank-1\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions\n }) {\n var _a, _b;\n const rerankingOptions = await parseProviderOptions({\n provider: \"togetherai\",\n providerOptions,\n schema: togetheraiRerankingModelOptionsSchema\n });\n const {\n responseHeaders,\n value: response,\n rawValue\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n documents: documents.values,\n query,\n top_n: topN,\n rank_fields: rerankingOptions == null ? void 0 : rerankingOptions.rankFields,\n return_documents: false\n // reduce response size\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: (data) => data.error.message\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiRerankingResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n ranking: response.results.map((result) => ({\n index: result.index,\n relevanceScore: result.relevance_score\n })),\n response: {\n id: (_a = response.id) != null ? _a : void 0,\n modelId: (_b = response.model) != null ? _b : void 0,\n headers: responseHeaders,\n body: rawValue\n }\n };\n }\n};\n\n// src/togetherai-image-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertImageModelFileToDataUri,\n createJsonResponseHandler as createJsonResponseHandler2,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler2,\n lazySchema as lazySchema3,\n parseProviderOptions as parseProviderOptions2,\n postJsonToApi as postJsonToApi2,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\nvar TogetherAIImageModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v3\";\n this.maxImagesPerCall = 1;\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask\n }) {\n var _a, _b, _c;\n const warnings = [];\n if (mask != null) {\n throw new Error(\n \"Together AI does not support mask-based image editing. Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) with a reference image and descriptive prompt instead.\"\n );\n }\n if (size != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"aspectRatio\",\n details: \"This model does not support the `aspectRatio` option. Use `size` instead.\"\n });\n }\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const togetheraiOptions = await parseProviderOptions2({\n provider: \"togetherai\",\n providerOptions,\n schema: togetheraiImageModelOptionsSchema\n });\n let imageUrl;\n if (files != null && files.length > 0) {\n imageUrl = convertImageModelFileToDataUri(files[0]);\n if (files.length > 1) {\n warnings.push({\n type: \"other\",\n message: \"Together AI only supports a single input image. Additional images are ignored.\"\n });\n }\n }\n const splitSize = size == null ? void 0 : size.split(\"x\");\n const { value: response, responseHeaders } = await postJsonToApi2({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders2(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n ...n > 1 ? { n } : {},\n ...splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1])\n },\n ...imageUrl != null ? { image_url: imageUrl } : {},\n response_format: \"base64\",\n ...togetheraiOptions != null ? togetheraiOptions : {}\n },\n failedResponseHandler: createJsonErrorResponseHandler2({\n errorSchema: togetheraiErrorSchema2,\n errorToMessage: (data) => data.error.message\n }),\n successfulResponseHandler: createJsonResponseHandler2(\n togetheraiImageResponseSchema\n ),\n abortSignal,\n fetch: this.config.fetch\n });\n return {\n images: response.data.map((item) => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders\n }\n };\n }\n};\nvar togetheraiImageResponseSchema = z3.object({\n data: z3.array(\n z3.object({\n b64_json: z3.string()\n })\n )\n});\nvar togetheraiErrorSchema2 = z3.object({\n error: z3.object({\n message: z3.string()\n })\n});\nvar togetheraiImageModelOptionsSchema = lazySchema3(\n () => zodSchema3(\n z3.object({\n /**\n * Number of generation steps. Higher values can improve quality.\n */\n steps: z3.number().nullish(),\n /**\n * Guidance scale for image generation.\n */\n guidance: z3.number().nullish(),\n /**\n * Negative prompt to guide what to avoid.\n */\n negative_prompt: z3.string().nullish(),\n /**\n * Disable the safety checker for image generation.\n * When true, the API will not reject images flagged as potentially NSFW.\n * Not available for Flux Schnell Free and Flux Pro models.\n */\n disable_safety_checker: z3.boolean().nullish()\n }).passthrough()\n )\n);\n\n// src/version.ts\nvar VERSION = true ? \"2.0.41\" : \"0.0.0-test\";\n\n// src/togetherai-provider.ts\nfunction loadDeprecatedApiKey() {\n if (typeof process === \"undefined\") {\n return void 0;\n }\n if (typeof process.env.TOGETHER_API_KEY === \"string\") {\n return void 0;\n }\n const key = process.env.TOGETHER_AI_API_KEY;\n if (typeof key === \"string\") {\n console.warn(\n \"TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead.\"\n );\n }\n return key;\n}\nfunction createTogetherAI(options = {}) {\n var _a;\n const baseURL = withoutTrailingSlash(\n (_a = options.baseURL) != null ? _a : \"https://api.together.xyz/v1/\"\n );\n const getHeaders = () => {\n var _a2;\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: (_a2 = options.apiKey) != null ? _a2 : loadDeprecatedApiKey(),\n environmentVariableName: \"TOGETHER_API_KEY\",\n description: \"TogetherAI\"\n })}`,\n ...options.headers\n },\n `ai-sdk/togetherai/${VERSION}`\n );\n };\n const getCommonModelConfig = (modelType) => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createChatModel = (modelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig(\"chat\")\n );\n };\n const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig(\"completion\")\n );\n const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig(\"embedding\")\n );\n const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig(\"image\"),\n baseURL: baseURL != null ? baseURL : \"https://api.together.xyz/v1/\"\n });\n const createRerankingModel = (modelId) => new TogetherAIRerankingModel(modelId, {\n ...getCommonModelConfig(\"reranking\"),\n baseURL: baseURL != null ? baseURL : \"https://api.together.xyz/v1/\"\n });\n const provider = (modelId) => createChatModel(modelId);\n provider.specificationVersion = \"v3\";\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n return provider;\n}\nvar togetherai = createTogetherAI();\nexport {\n VERSION,\n createTogetherAI,\n togetherai\n};\n//# sourceMappingURL=index.mjs.map" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "1253386B7EAE977264756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "D46DE9037AF44FCF64756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "4195FADF05D51FC564756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../schema/src/project.ts", "../schema/src/skill.ts", "../schema/src/prompt.ts", "../schema/src/shell.ts", "../schema/src/session-error.ts", "../schema/src/session-id.ts", "../schema/src/permission.ts", "../schema/src/agent.ts", "../schema/src/snapshot.ts", "../schema/src/token-usage.ts", "../schema/src/session-message.ts"], | ||
| "sourcesContent": [ | ||
| "export * as Project from \"./project.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { AbsolutePath, NonNegativeInt, optional } from \"./schema.js\"\nimport { ProjectID } from \"./project-id.js\"\n\nexport const ID = ProjectID\nexport type ID = typeof ID.Type\n\nexport const Vcs = Schema.Literals([\"git\", \"hg\"]).annotate({ identifier: \"Project.Vcs\" })\nexport const Current = Schema.Struct({\n id: ID,\n directory: AbsolutePath,\n canonical: AbsolutePath,\n}).annotate({ identifier: \"Project.Current\" })\nexport interface Current extends Schema.Schema.Type<typeof Current> {}\nexport const Icon = Schema.Struct({\n url: optional(Schema.String),\n override: optional(Schema.String),\n color: optional(Schema.String),\n}).annotate({ identifier: \"Project.Icon\" })\nexport interface Icon extends Schema.Schema.Type<typeof Icon> {}\nexport const Commands = Schema.Struct({\n start: optional(\n Schema.String.annotate({ description: \"Startup script to run when creating a new workspace (worktree)\" }),\n ),\n}).annotate({ identifier: \"Project.Commands\" })\nexport interface Commands extends Schema.Schema.Type<typeof Commands> {}\nexport const Time = Schema.Struct({\n created: NonNegativeInt,\n updated: NonNegativeInt,\n initialized: optional(NonNegativeInt),\n}).annotate({ identifier: \"Project.Time\" })\nexport interface Time extends Schema.Schema.Type<typeof Time> {}\n\nexport const Info = Schema.Struct({\n id: ID,\n canonical: AbsolutePath,\n vcs: optional(Vcs),\n name: optional(Schema.String),\n icon: optional(Icon),\n commands: optional(Commands),\n time: Time,\n sandboxes: Schema.Array(Schema.String),\n}).annotate({ identifier: \"Project\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nexport const UpdateInput = Schema.Struct({\n projectID: ID,\n name: optional(Schema.String),\n icon: optional(Icon),\n commands: optional(Commands),\n}).annotate({ identifier: \"Project.UpdateInput\" })\nexport interface UpdateInput extends Schema.Schema.Type<typeof UpdateInput> {}\n\nconst Updated = ephemeral({ type: \"project.updated\", schema: Info.fields })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n", | ||
| "export * as Skill from \"./skill.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { AbsolutePath } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Skill.ID\"))\nexport type ID = typeof ID.Type\n\nexport const Name = Schema.String.pipe(Schema.brand(\"Skill.Name\"))\nexport type Name = typeof Name.Type\n\nexport interface DirectorySource extends Schema.Schema.Type<typeof DirectorySource> {}\nexport const DirectorySource = Schema.Struct({\n type: Schema.tag(\"directory\"),\n path: AbsolutePath,\n}).annotate({ identifier: \"Skill.DirectorySource\" })\n\nexport interface UrlSource extends Schema.Schema.Type<typeof UrlSource> {}\nexport const UrlSource = Schema.Struct({\n type: Schema.tag(\"url\"),\n url: Schema.String,\n}).annotate({ identifier: \"Skill.UrlSource\" })\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n name: Name,\n description: Schema.String.pipe(optional),\n slash: Schema.Boolean.pipe(optional),\n autoinvoke: Schema.Boolean.pipe(optional),\n location: AbsolutePath,\n content: Schema.String,\n}).annotate({ identifier: \"Skill.Info\" })\n\nconst Updated = ephemeral({ type: \"skill.updated\", schema: {} })\nexport const Event = { Updated, Definitions: inventory(Updated) }\n\nexport interface EmbeddedSource extends Schema.Schema.Type<typeof EmbeddedSource> {}\nexport const EmbeddedSource = Schema.Struct({\n type: Schema.tag(\"embedded\"),\n skill: Schema.suspend(() => Info),\n}).annotate({ identifier: \"Skill.EmbeddedSource\" })\n\nexport type Source = DirectorySource | UrlSource | EmbeddedSource\nexport const Source = Object.assign(\n Schema.Union([DirectorySource, UrlSource, EmbeddedSource]).pipe(\n Schema.toTaggedUnion(\"type\"),\n Schema.annotate({ identifier: \"Skill.Source\" }),\n ),\n {\n equals: (a: Source, b: Source) => {\n if (a.type !== b.type) return false\n if (a.type === \"directory\" && b.type === \"directory\") return a.path === b.path\n if (a.type === \"url\" && b.type === \"url\") return a.url === b.url\n if (a.type === \"embedded\" && b.type === \"embedded\") return a.skill.id === b.skill.id\n return false\n },\n key: (source: Source) =>\n source.type === \"directory\"\n ? `directory:${source.path}`\n : source.type === \"url\"\n ? `url:${source.url}`\n : `embedded:${source.skill.id}`,\n },\n)\n", | ||
| "import { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { statics } from \"./schema.js\"\nimport { Skill } from \"./skill.js\"\n\nexport interface PromptMention extends Schema.Schema.Type<typeof PromptMention> {}\nexport const PromptMention = Schema.Struct({\n start: Schema.Finite,\n end: Schema.Finite,\n text: Schema.String,\n}).annotate({ identifier: \"Prompt.Mention\" })\n\nexport const FileSource = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"inline\") }),\n Schema.Struct({ type: Schema.Literal(\"uri\"), uri: Schema.String }),\n])\n .pipe(Schema.toTaggedUnion(\"type\"))\n .annotate({ identifier: \"Prompt.FileSource\" })\nexport type FileSource = typeof FileSource.Type\n\nexport const Base64 = Schema.String.check(\n Schema.isPattern(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/),\n).annotate({ identifier: \"Prompt.Base64\" })\nexport type Base64 = typeof Base64.Type\n\nexport interface FileAttachment extends Schema.Schema.Type<typeof FileAttachment> {}\nexport const FileAttachment = Schema.Struct({\n data: Base64,\n mime: Schema.String,\n source: FileSource,\n name: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n mention: PromptMention.pipe(optional),\n})\n .annotate({ identifier: \"Prompt.FileAttachment\" })\n .pipe(\n statics((schema) => ({\n create: (input: FileAttachment) =>\n schema.make({\n data: input.data,\n mime: input.mime,\n source: input.source,\n name: input.name,\n description: input.description,\n mention: input.mention,\n }),\n })),\n )\n\nexport interface AgentAttachment extends Schema.Schema.Type<typeof AgentAttachment> {}\nexport const AgentAttachment = Schema.Struct({\n name: Schema.String,\n mention: PromptMention.pipe(optional),\n}).annotate({ identifier: \"Prompt.AgentAttachment\" })\n\nexport interface SkillAttachment extends Schema.Schema.Type<typeof SkillAttachment> {}\nexport const SkillAttachment = Schema.Struct({\n id: Skill.ID,\n name: Skill.Name,\n mention: PromptMention.pipe(optional),\n}).annotate({ identifier: \"Prompt.SkillAttachment\" })\n\nexport interface Prompt extends Schema.Schema.Type<typeof Prompt> {}\nexport const Prompt = Schema.Struct({\n text: Schema.String,\n files: Schema.Array(FileAttachment).pipe(optional),\n agents: Schema.Array(AgentAttachment).pipe(optional),\n skills: Schema.Array(SkillAttachment).pipe(optional),\n})\n .annotate({ identifier: \"Prompt\" })\n .pipe(\n statics((schema) => ({\n equivalence: Schema.toEquivalence(schema),\n fromUserMessage: (input: Pick<Prompt, \"text\" | \"files\" | \"agents\" | \"skills\">) =>\n schema.make({\n text: input.text,\n ...(input.files === undefined ? {} : { files: input.files }),\n ...(input.agents === undefined ? {} : { agents: input.agents }),\n ...(input.skills === undefined ? {} : { skills: input.skills }),\n }),\n })),\n )\n", | ||
| "export * as Shell from \"./shell.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { NonNegativeInt, statics } from \"./schema.js\"\n\nconst IDSchema = Schema.String.check(Schema.isStartsWith(\"sh_\")).pipe(Schema.brand(\"Shell.ID\"))\n\nexport const ID = IDSchema.pipe(\n statics((schema: typeof IDSchema) => {\n const create = () => schema.make(\"sh_\" + ascending())\n return {\n create,\n ascending: (id?: string) => (id === undefined ? create() : schema.make(id)),\n }\n }),\n)\nexport type ID = typeof ID.Type\n\nexport const Status = Schema.Literals([\"running\", \"exited\", \"timeout\", \"killed\"])\nexport type Status = typeof Status.Type\n\nexport const Time = Schema.Struct({\n started: Schema.Finite,\n completed: optional(Schema.Finite),\n})\nexport interface Time extends Schema.Schema.Type<typeof Time> {}\n\n// Opaque caller-supplied tags echoed back on Info and events. The Shell service never interprets\n// these; callers (e.g. ShellTool stores the originating session ID) use them to filter or correlate.\nexport const Metadata = Schema.Record(Schema.String, Schema.Unknown)\nexport type Metadata = typeof Metadata.Type\n\nexport const Info = Schema.Struct({\n id: ID,\n status: Status,\n command: Schema.String,\n cwd: Schema.String,\n shell: Schema.String,\n // Absolute path of the file capturing combined stdout/stderr. Page through it via `output`.\n file: Schema.String,\n pid: optional(NonNegativeInt),\n exit: optional(Schema.Finite),\n // Always present; defaults to an empty object when the creator supplies no metadata.\n metadata: Metadata,\n time: Time,\n}).annotate({ identifier: \"Shell.Info\" })\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\n\nconst Created = ephemeral({ type: \"shell.created\", schema: { info: Info } })\nconst Exited = ephemeral({ type: \"shell.exited\", schema: { id: ID, exit: optional(Schema.Finite), status: Status } })\nconst Deleted = ephemeral({ type: \"shell.deleted\", schema: { id: ID } })\nexport const Event = { Created, Exited, Deleted, Definitions: inventory(Created, Exited, Deleted) }\n\nexport const CreateInput = Schema.Struct({\n command: Schema.String,\n cwd: optional(Schema.String),\n timeout: NonNegativeInt,\n metadata: optional(Metadata),\n})\nexport interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {}\n\nexport const OutputInput = Schema.Struct({\n cursor: optional(NonNegativeInt),\n limit: optional(NonNegativeInt),\n})\nexport interface OutputInput extends Schema.Schema.Type<typeof OutputInput> {}\n\nexport const Output = Schema.Struct({\n output: Schema.String,\n // Absolute cursor after this page. Equals `size` once fully caught up.\n cursor: NonNegativeInt,\n // Total bytes captured so far. A consumer has more to page while `cursor < size`.\n size: NonNegativeInt,\n truncated: Schema.Boolean,\n})\nexport interface Output extends Schema.Schema.Type<typeof Output> {}\n", | ||
| "export * as SessionError from \"./session-error.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\n\nexport interface Error extends Schema.Schema.Type<typeof Error> {}\nexport const Error = Schema.Struct({\n type: Schema.String,\n message: Schema.String,\n status: Schema.Int.check(Schema.isBetween({ minimum: 100, maximum: 599 })).pipe(optional),\n}).annotate({ identifier: \"Session.StructuredError\" })\n", | ||
| "import { Schema } from \"effect\"\nimport { descending } from \"./identifier.js\"\nimport { statics } from \"./schema.js\"\n\nexport const SessionID = Schema.String.check(Schema.isStartsWith(\"ses\")).pipe(\n Schema.brand(\"SessionID\"),\n statics((schema) => {\n const create = () => schema.make(\"ses_\" + descending())\n return {\n create,\n descending: (id?: string) => (id === undefined ? create() : schema.make(id)),\n }\n }),\n)\nexport type SessionID = typeof SessionID.Type\n", | ||
| "export * as Permission from \"./permission.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { ascending } from \"./identifier.js\"\nimport { SessionID } from \"./session-id.js\"\nimport { statics } from \"./schema.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"per\")).pipe(\n Schema.brand(\"Permission.ID\"),\n statics((schema) => ({ create: (id?: string) => schema.make(id ?? \"per_\" + ascending()) })),\n)\nexport type ID = typeof ID.Type\n\nexport const Source = Schema.Union([\n Schema.Struct({\n type: Schema.Literal(\"tool\"),\n messageID: Schema.String,\n id: Schema.String,\n }),\n]).annotate({ identifier: \"Permission.Source\" })\nexport type Source = typeof Source.Type\n\nconst RequestFields = {\n sessionID: SessionID,\n action: Schema.String,\n resources: Schema.Array(Schema.String),\n save: Schema.Array(Schema.String).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n source: Source.pipe(optional),\n message: Schema.String.pipe(optional),\n}\n\nexport const Request = Schema.Struct({\n id: ID,\n ...RequestFields,\n}).annotate({ identifier: \"Permission.Request\" })\nexport interface Request extends Schema.Schema.Type<typeof Request> {}\n\nexport const Reply = Schema.Literals([\"once\", \"always\", \"reject\"]).annotate({ identifier: \"Permission.Reply\" })\nexport type Reply = typeof Reply.Type\n\nconst Asked = ephemeral({ type: \"permission.asked\", schema: Request.fields })\nconst Replied = ephemeral({\n type: \"permission.replied\",\n schema: {\n sessionID: SessionID,\n requestID: ID,\n reply: Reply,\n },\n})\nexport const Event = { Asked, Replied, Definitions: inventory(Asked, Replied) }\n\nexport const Effect = Schema.Literals([\"allow\", \"deny\", \"ask\"]).annotate({ identifier: \"Permission.Effect\" })\nexport type Effect = typeof Effect.Type\n\nexport interface Rule extends Schema.Schema.Type<typeof Rule> {}\nexport const Rule = Schema.Struct({\n action: Schema.String,\n resource: Schema.String,\n effect: Effect,\n}).annotate({ identifier: \"Permission.Rule\" })\n\nexport const Ruleset = Schema.Array(Rule).annotate({ identifier: \"Permission.Ruleset\" })\nexport type Ruleset = typeof Ruleset.Type\n", | ||
| "export * as Agent from \"./agent.js\"\n\nimport { Schema } from \"effect\"\nimport { ephemeral, inventory } from \"./event.js\"\nimport { optional } from \"./schema.js\"\nimport { Model } from \"./model.js\"\nimport { Permission } from \"./permission.js\"\nimport { Provider } from \"./provider.js\"\nimport { PositiveInt, statics } from \"./schema.js\"\n\nconst Updated = ephemeral({ type: \"agent.updated\", schema: {} })\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Agent.ID\"))\nexport type ID = typeof ID.Type\n\nexport const Name = Schema.String.pipe(Schema.brand(\"Agent.Name\"))\nexport type Name = typeof Name.Type\n\nexport const Color = Schema.String.annotate({ identifier: \"Agent.Color\" })\nexport type Color = typeof Color.Type\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n id: ID,\n name: Name,\n model: Model.Ref.pipe(optional),\n request: Provider.Request,\n system: Schema.String.pipe(optional),\n description: Schema.String.pipe(optional),\n mode: Schema.Literals([\"subagent\", \"primary\", \"all\"]),\n hidden: Schema.Boolean,\n color: Color.pipe(optional),\n steps: PositiveInt.pipe(optional),\n permissions: Permission.Ruleset,\n})\n .annotate({ identifier: \"Agent.Info\" })\n .pipe(\n statics(() => ({\n default: (id: ID) =>\n ({\n id,\n name: Name.make(id),\n request: { settings: {}, headers: {}, body: {} },\n mode: \"primary\",\n hidden: false,\n permissions: [\n { action: \"*\", resource: \"*\", effect: \"allow\" },\n { action: \"external_directory\", resource: \"*\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env.*\", effect: \"ask\" },\n { action: \"read\", resource: \"*.env.example\", effect: \"allow\" },\n ],\n }) satisfies Info,\n })),\n )\n\nexport const Event = {\n Updated,\n Definitions: inventory(Updated),\n}\n", | ||
| "export * as Snapshot from \"./snapshot.js\"\n\nimport { Schema } from \"effect\"\n\nexport const ID = Schema.String.pipe(Schema.brand(\"Snapshot.ID\"))\nexport type ID = typeof ID.Type\n", | ||
| "export * as TokenUsage from \"./token-usage.js\"\n\nimport { Schema } from \"effect\"\n\nexport interface Info extends Schema.Schema.Type<typeof Info> {}\nexport const Info = Schema.Struct({\n input: Schema.Finite,\n output: Schema.Finite,\n reasoning: Schema.Finite,\n cache: Schema.Struct({\n read: Schema.Finite,\n write: Schema.Finite,\n }),\n}).annotate({ identifier: \"TokenUsage.Info\" })\n", | ||
| "export * as SessionMessage from \"./session-message.js\"\n\nimport { Schema } from \"effect\"\nimport { optional } from \"./schema.js\"\nimport { Content } from \"./tool.js\"\nimport { Location } from \"./location.js\"\nimport { Model } from \"./model.js\"\nimport { Project } from \"./project.js\"\nimport { Prompt } from \"./prompt.js\"\nimport { DateTimeUtcFromMillis, PositiveInt, RelativePath, statics } from \"./schema.js\"\nimport { ascending } from \"./identifier.js\"\nimport { Event } from \"./event.js\"\nimport { Shell as ShellSchema } from \"./shell.js\"\nimport { FinishReason } from \"./llm.js\"\nimport { SessionError } from \"./session-error.js\"\nimport { Agent } from \"./agent.js\"\nimport { Skill as SkillSchema } from \"./skill.js\"\nimport { Money } from \"./money.js\"\nimport { Snapshot } from \"./snapshot.js\"\nimport { TokenUsage } from \"./token-usage.js\"\n\nexport const ID = Schema.String.check(Schema.isStartsWith(\"msg_\")).pipe(\n Schema.brand(\"Session.Message.ID\"),\n statics((schema) => ({\n create: () => schema.make(\"msg_\" + ascending()),\n fromEvent: (eventID: Event.ID) => schema.make(eventID.replace(/^evt_/, \"msg_\")),\n })),\n)\nexport type ID = typeof ID.Type\n\nconst Base = {\n id: ID,\n metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),\n time: Schema.Struct({ created: DateTimeUtcFromMillis }),\n}\n\nexport const ProviderState = Schema.Record(Schema.String, Schema.Unknown).annotate({\n identifier: \"Session.Message.ProviderState\",\n})\nexport type ProviderState = typeof ProviderState.Type\n\nexport interface AgentSelected extends Schema.Schema.Type<typeof AgentSelected> {}\nexport const AgentSelected = Schema.Struct({\n ...Base,\n type: Schema.tag(\"agent-switched\"),\n agent: Agent.ID,\n previous: Agent.ID.pipe(optional),\n}).annotate({ identifier: \"Session.Message.AgentSelected\" })\n\nexport interface ModelSelected extends Schema.Schema.Type<typeof ModelSelected> {}\nexport const ModelSelected = Schema.Struct({\n ...Base,\n type: Schema.tag(\"model-switched\"),\n model: Model.Ref,\n previous: Model.Ref.pipe(optional),\n}).annotate({ identifier: \"Session.Message.ModelSelected\" })\n\nexport interface LocationSwitched extends Schema.Schema.Type<typeof LocationSwitched> {}\nexport const LocationSwitched = Schema.Struct({\n ...Base,\n type: Schema.tag(\"location-switched\"),\n location: Location.Ref,\n projectID: Project.ID.pipe(optional),\n subpath: RelativePath.pipe(optional),\n previous: Schema.Struct({\n location: Location.Ref,\n projectID: Project.ID.pipe(optional),\n subpath: RelativePath.pipe(optional),\n }).pipe(optional),\n}).annotate({ identifier: \"Session.Message.LocationSwitched\" })\n\nexport interface User extends Schema.Schema.Type<typeof User> {}\nexport const User = Schema.Struct({\n ...Base,\n text: Prompt.fields.text,\n files: Prompt.fields.files,\n agents: Prompt.fields.agents,\n skills: Prompt.fields.skills,\n type: Schema.tag(\"user\"),\n}).annotate({ identifier: \"Session.Message.User\" })\n\nexport interface Synthetic extends Schema.Schema.Type<typeof Synthetic> {}\nexport const Synthetic = Schema.Struct({\n ...Base,\n text: Schema.String,\n description: Schema.String.pipe(optional),\n type: Schema.tag(\"synthetic\"),\n}).annotate({ identifier: \"Session.Message.Synthetic\" })\n\nexport interface System extends Schema.Schema.Type<typeof System> {}\nexport const System = Schema.Struct({\n ...Base,\n type: Schema.tag(\"system\"),\n /** The model-facing update text, frozen at emit time. */\n text: Schema.String,\n /** A short human-readable summary for transcript display. */\n description: Schema.String.pipe(optional),\n}).annotate({ identifier: \"Session.Message.System\" })\n\nexport interface Skill extends Schema.Schema.Type<typeof Skill> {}\nexport const Skill = Schema.Struct({\n ...Base,\n type: Schema.tag(\"skill\"),\n skill: SkillSchema.ID,\n name: SkillSchema.Name,\n text: Schema.String,\n}).annotate({ identifier: \"Session.Message.Skill\" })\n\nexport interface Shell extends Schema.Schema.Type<typeof Shell> {}\nexport const Shell = Schema.Struct({\n ...Base,\n type: Schema.tag(\"shell\"),\n shellID: ShellSchema.ID,\n command: Schema.String,\n status: ShellSchema.Status,\n exit: Schema.Number.pipe(optional),\n output: ShellSchema.Output.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Shell\" })\n\nexport interface ToolStateStreaming extends Schema.Schema.Type<typeof ToolStateStreaming> {}\nexport const ToolStateStreaming = Schema.Struct({\n status: Schema.tag(\"streaming\"),\n input: Schema.String,\n}).annotate({ identifier: \"Session.Message.ToolState.Streaming\" })\n\nexport interface ToolStateRunning extends Schema.Schema.Type<typeof ToolStateRunning> {}\nexport const ToolStateRunning = Schema.Struct({\n status: Schema.tag(\"running\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n metadata: Schema.Record(Schema.String, Schema.Json),\n}).annotate({ identifier: \"Session.Message.ToolState.Running\" })\n\nexport interface ToolStateCompleted extends Schema.Schema.Type<typeof ToolStateCompleted> {}\nexport const ToolStateCompleted = Schema.Struct({\n status: Schema.tag(\"completed\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n content: Schema.NonEmptyArray(Content),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n}).annotate({ identifier: \"Session.Message.ToolState.Completed\" })\n\nexport interface ToolStateError extends Schema.Schema.Type<typeof ToolStateError> {}\nexport const ToolStateError = Schema.Struct({\n status: Schema.tag(\"error\"),\n input: Schema.Record(Schema.String, Schema.Unknown),\n error: SessionError.Error,\n content: Schema.NonEmptyArray(Content).pipe(optional),\n metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),\n}).annotate({ identifier: \"Session.Message.ToolState.Error\" })\n\nexport const ToolState = Schema.Union([ToolStateStreaming, ToolStateRunning, ToolStateCompleted, ToolStateError]).pipe(\n Schema.toTaggedUnion(\"status\"),\n)\nexport type ToolState = ToolStateStreaming | ToolStateRunning | ToolStateCompleted | ToolStateError\n\nexport interface AssistantTool extends Schema.Schema.Type<typeof AssistantTool> {}\nexport const AssistantTool = Schema.Struct({\n type: Schema.tag(\"tool\"),\n id: Schema.String,\n name: Schema.String,\n executed: Schema.Boolean.pipe(optional),\n providerState: ProviderState.pipe(optional),\n providerResultState: ProviderState.pipe(optional),\n state: ToolState,\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n ran: DateTimeUtcFromMillis.pipe(optional),\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Assistant.Tool\" })\n\nexport interface AssistantText extends Schema.Schema.Type<typeof AssistantText> {}\nexport const AssistantText = Schema.Struct({\n type: Schema.tag(\"text\"),\n text: Schema.String,\n state: ProviderState.pipe(optional),\n}).annotate({ identifier: \"Session.Message.Assistant.Text\" })\n\nexport interface AssistantReasoning extends Schema.Schema.Type<typeof AssistantReasoning> {}\nexport const AssistantReasoning = Schema.Struct({\n type: Schema.tag(\"reasoning\"),\n text: Schema.String,\n state: ProviderState.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }).pipe(optional),\n}).annotate({ identifier: \"Session.Message.Assistant.Reasoning\" })\n\nexport const AssistantContent = Schema.Union([AssistantText, AssistantReasoning, AssistantTool]).pipe(\n Schema.toTaggedUnion(\"type\"),\n)\nexport type AssistantContent = AssistantText | AssistantReasoning | AssistantTool\n\nexport interface AssistantRetry extends Schema.Schema.Type<typeof AssistantRetry> {}\nexport const AssistantRetry = Schema.Struct({\n attempt: PositiveInt,\n at: DateTimeUtcFromMillis,\n error: SessionError.Error,\n}).annotate({ identifier: \"Session.Message.Assistant.Retry\" })\n\nexport interface Assistant extends Schema.Schema.Type<typeof Assistant> {}\nexport const Assistant = Schema.Struct({\n ...Base,\n type: Schema.tag(\"assistant\"),\n agent: Agent.ID,\n model: Model.Ref,\n content: AssistantContent.pipe(Schema.Array),\n snapshot: Schema.Struct({\n start: Snapshot.ID.pipe(optional),\n end: Snapshot.ID.pipe(optional),\n files: Schema.Array(RelativePath).pipe(optional),\n }).pipe(optional),\n finish: FinishReason.pipe(optional),\n rawFinish: Schema.String.pipe(optional),\n providerState: ProviderState.pipe(optional),\n cost: Money.USD.pipe(optional),\n tokens: TokenUsage.Info.pipe(optional),\n error: SessionError.Error.pipe(optional),\n retry: AssistantRetry.pipe(optional),\n time: Schema.Struct({\n created: DateTimeUtcFromMillis,\n completed: DateTimeUtcFromMillis.pipe(optional),\n }),\n}).annotate({ identifier: \"Session.Message.Assistant\" })\n\nconst CompactionBase = { type: Schema.tag(\"compaction\"), ...Base }\n\nexport interface CompactionRunning extends Schema.Schema.Type<typeof CompactionRunning> {}\nexport const CompactionRunning = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"running\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n summary: Schema.String,\n recent: Schema.String,\n}).annotate({ identifier: \"Session.Message.Compaction.Running\" })\n\nexport interface CompactionCompleted extends Schema.Schema.Type<typeof CompactionCompleted> {}\nexport const CompactionCompleted = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"completed\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n summary: Schema.String,\n recent: Schema.String,\n}).annotate({ identifier: \"Session.Message.Compaction.Completed\" })\n\nexport interface CompactionFailed extends Schema.Schema.Type<typeof CompactionFailed> {}\nexport const CompactionFailed = Schema.Struct({\n ...CompactionBase,\n status: Schema.tag(\"failed\"),\n reason: Schema.Literals([\"auto\", \"manual\"]),\n error: SessionError.Error,\n}).annotate({ identifier: \"Session.Message.Compaction.Failed\" })\n\nexport const Compaction = Schema.Union([CompactionRunning, CompactionCompleted, CompactionFailed]).pipe(\n Schema.toTaggedUnion(\"status\"),\n Schema.annotate({ identifier: \"Session.Message.Compaction\" }),\n)\nexport type Compaction = CompactionRunning | CompactionCompleted | CompactionFailed\n\nexport const Info = Schema.Union([\n AgentSelected,\n ModelSelected,\n LocationSwitched,\n User,\n Synthetic,\n System,\n Skill,\n Shell,\n Assistant,\n Compaction,\n]).annotate({ identifier: \"Session.Message.Info\" })\nexport type Info =\n | AgentSelected\n | ModelSelected\n | LocationSwitched\n | User\n | Synthetic\n | System\n | Skill\n | Shell\n | Assistant\n | Compaction\nexport type Type = Info[\"type\"]\n" | ||
| ], | ||
| "mappings": ";smCAOO,IAAM,EAAK,EAGL,EAAM,EAAO,SAAS,CAAC,MAAO,IAAI,CAAC,EAAE,SAAS,CAAE,WAAY,aAAc,CAAC,EAC3E,GAAU,EAAO,OAAO,CACnC,GAAI,EACJ,UAAW,EACX,UAAW,CACb,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,EAEhC,EAAO,EAAO,OAAO,CAChC,IAAK,EAAS,EAAO,MAAM,EAC3B,SAAU,EAAS,EAAO,MAAM,EAChC,MAAO,EAAS,EAAO,MAAM,CAC/B,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAE7B,EAAW,EAAO,OAAO,CACpC,MAAO,EACL,EAAO,OAAO,SAAS,CAAE,YAAa,gEAAiE,CAAC,CAC1G,CACF,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAEjC,EAAO,EAAO,OAAO,CAChC,QAAS,EACT,QAAS,EACT,YAAa,EAAS,CAAc,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,cAAe,CAAC,EAG7B,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,UAAW,EACX,IAAK,EAAS,CAAG,EACjB,KAAM,EAAS,EAAO,MAAM,EAC5B,KAAM,EAAS,CAAI,EACnB,SAAU,EAAS,CAAQ,EAC3B,KAAM,EACN,UAAW,EAAO,MAAM,EAAO,MAAM,CACvC,CAAC,EAAE,SAAS,CAAE,WAAY,SAAU,CAAC,EAGxB,GAAc,EAAO,OAAO,CACvC,UAAW,EACX,KAAM,EAAS,EAAO,MAAM,EAC5B,KAAM,EAAS,CAAI,EACnB,SAAU,EAAS,CAAQ,CAC7B,CAAC,EAAE,SAAS,CAAE,WAAY,qBAAsB,CAAC,EAG3C,EAAU,EAAU,CAAE,KAAM,kBAAmB,OAAQ,EAAK,MAAO,CAAC,EAC7D,GAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,mJClDzD,IAAM,EAAK,EAAO,OAAO,KAAK,EAAO,MAAM,UAAU,CAAC,EAGhD,EAAO,EAAO,OAAO,KAAK,EAAO,MAAM,YAAY,CAAC,EAIpD,EAAkB,EAAO,OAAO,CAC3C,KAAM,EAAO,IAAI,WAAW,EAC5B,KAAM,CACR,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,EAAY,EAAO,OAAO,CACrC,KAAM,EAAO,IAAI,KAAK,EACtB,IAAK,EAAO,MACd,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,EAGhC,EAAO,EAAO,OAAO,CAChC,GAAI,EACJ,KAAM,EACN,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,MAAO,EAAO,QAAQ,KAAK,CAAQ,EACnC,WAAY,EAAO,QAAQ,KAAK,CAAQ,EACxC,SAAU,EACV,QAAS,EAAO,MAClB,CAAC,EAAE,SAAS,CAAE,WAAY,YAAa,CAAC,EAElC,EAAU,EAAU,CAAE,KAAM,gBAAiB,OAAQ,CAAC,CAAE,CAAC,EAClD,GAAQ,CAAE,UAAS,YAAa,EAAU,CAAO,CAAE,EAGnD,EAAiB,EAAO,OAAO,CAC1C,KAAM,EAAO,IAAI,UAAU,EAC3B,MAAO,EAAO,QAAQ,IAAM,CAAI,CAClC,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,GAAS,OAAO,OAC3B,EAAO,MAAM,CAAC,EAAiB,EAAW,CAAc,CAAC,EAAE,KACzD,EAAO,cAAc,MAAM,EAC3B,EAAO,SAAS,CAAE,WAAY,cAAe,CAAC,CAChD,EACA,CACE,OAAQ,CAAC,EAAW,IAAc,CAChC,GAAI,EAAE,OAAS,EAAE,KAAM,MAAO,GAC9B,GAAI,EAAE,OAAS,aAAe,EAAE,OAAS,YAAa,OAAO,EAAE,OAAS,EAAE,KAC1E,GAAI,EAAE,OAAS,OAAS,EAAE,OAAS,MAAO,OAAO,EAAE,MAAQ,EAAE,IAC7D,GAAI,EAAE,OAAS,YAAc,EAAE,OAAS,WAAY,OAAO,EAAE,MAAM,KAAO,EAAE,MAAM,GAClF,MAAO,IAET,IAAK,CAAC,IACJ,EAAO,OAAS,YACZ,aAAa,EAAO,OACpB,EAAO,OAAS,MACd,OAAO,EAAO,MACd,YAAY,EAAO,MAAM,IACnC,CACF,EC5DO,IAAM,EAAgB,EAAO,OAAO,CACzC,MAAO,EAAO,OACd,IAAK,EAAO,OACZ,KAAM,EAAO,MACf,CAAC,EAAE,SAAS,CAAE,WAAY,gBAAiB,CAAC,EAE/B,GAAa,EAAO,MAAM,CACrC,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,QAAQ,CAAE,CAAC,EAChD,EAAO,OAAO,CAAE,KAAM,EAAO,QAAQ,KAAK,EAAG,IAAK,EAAO,MAAO,CAAC,CACnE,CAAC,EACE,KAAK,EAAO,cAAc,MAAM,CAAC,EACjC,SAAS,CAAE,WAAY,mBAAoB,CAAC,EAGlC,GAAS,EAAO,OAAO,MAClC,EAAO,UAAU,kEAAkE,CACrF,EAAE,SAAS,CAAE,WAAY,eAAgB,CAAC,EAI7B,GAAiB,EAAO,OAAO,CAC1C,KAAM,GACN,KAAM,EAAO,OACb,OAAQ,GACR,KAAM,EAAO,OAAO,KAAK,CAAQ,EACjC,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,QAAS,EAAc,KAAK,CAAQ,CACtC,CAAC,EACE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAChD,KACC,EAAQ,CAAC,KAAY,CACnB,OAAQ,CAAC,IACP,EAAO,KAAK,CACV,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,QAAS,EAAM,OACjB,CAAC,CACL,EAAE,CACJ,EAGW,GAAkB,EAAO,OAAO,CAC3C,KAAM,EAAO,OACb,QAAS,EAAc,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,wBAAyB,CAAC,EAGvC,GAAkB,EAAO,OAAO,CAC3C,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,QAAS,EAAc,KAAK,CAAQ,CACtC,CAAC,EAAE,SAAS,CAAE,WAAY,wBAAyB,CAAC,EAGvC,EAAS,EAAO,OAAO,CAClC,KAAM,EAAO,OACb,MAAO,EAAO,MAAM,EAAc,EAAE,KAAK,CAAQ,EACjD,OAAQ,EAAO,MAAM,EAAe,EAAE,KAAK,CAAQ,EACnD,OAAQ,EAAO,MAAM,EAAe,EAAE,KAAK,CAAQ,CACrD,CAAC,EACE,SAAS,CAAE,WAAY,QAAS,CAAC,EACjC,KACC,EAAQ,CAAC,KAAY,CACnB,YAAa,EAAO,cAAc,CAAM,EACxC,gBAAiB,CAAC,IAChB,EAAO,KAAK,CACV,KAAM,EAAM,QACR,EAAM,QAAU,OAAY,CAAC,EAAI,CAAE,MAAO,EAAM,KAAM,KACtD,EAAM,SAAW,OAAY,CAAC,EAAI,CAAE,OAAQ,EAAM,MAAO,KACzD,EAAM,SAAW,OAAY,CAAC,EAAI,CAAE,OAAQ,EAAM,MAAO,CAC/D,CAAC,CACL,EAAE,CACJ,4JCzEF,IAAM,GAAW,EAAO,OAAO,MAAM,EAAO,aAAa,KAAK,CAAC,EAAE,KAAK,EAAO,MAAM,UAAU,CAAC,EAEjF,EAAK,GAAS,KACzB,EAAQ,CAAC,IAA4B,CACnC,IAAM,EAAS,IAAM,EAAO,KAAK,MAAQ,EAAU,CAAC,EACpD,MAAO,CACL,SACA,UAAW,CAAC,IAAiB,IAAO,OAAY,EAAO,EAAI,EAAO,KAAK,CAAE,CAC3E,EACD,CACH,EAGa,EAAS,EAAO,SAAS,CAAC,UAAW,SAAU,UAAW,QAAQ,CAAC,EAGnE,GAAO,EAAO,OAAO,CAChC,QAAS,EAAO,OAChB,UAAW,EAAS,EAAO,MAAM,CACnC,CAAC,EAKY,EAAW,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAGtD,GAAO,EAAO,OAAO,CAChC,GAAI,EACJ,OAAQ,EACR,QAAS,EAAO,OAChB,IAAK,EAAO,OACZ,MAAO,EAAO,OAEd,KAAM,EAAO,OACb,IAAK,EAAS,CAAc,EAC5B,KAAM,EAAS,EAAO,MAAM,EAE5B,SAAU,EACV,KAAM,EACR,CAAC,EAAE,SAAS,CAAE,WAAY,YAAa,CAAC,EAGlC,GAAU,EAAU,CAAE,KAAM,gBAAiB,OAAQ,CAAE,KAAM,EAAK,CAAE,CAAC,EACrE,GAAS,EAAU,CAAE,KAAM,eAAgB,OAAQ,CAAE,GAAI,EAAI,KAAM,EAAS,EAAO,MAAM,EAAG,OAAQ,CAAO,CAAE,CAAC,EAC9G,GAAU,EAAU,CAAE,KAAM,gBAAiB,OAAQ,CAAE,GAAI,CAAG,CAAE,CAAC,EAC1D,GAAQ,CAAE,WAAS,UAAQ,WAAS,YAAa,EAAU,GAAS,GAAQ,EAAO,CAAE,EAErF,GAAc,EAAO,OAAO,CACvC,QAAS,EAAO,OAChB,IAAK,EAAS,EAAO,MAAM,EAC3B,QAAS,EACT,SAAU,EAAS,CAAQ,CAC7B,CAAC,EAGY,GAAc,EAAO,OAAO,CACvC,OAAQ,EAAS,CAAc,EAC/B,MAAO,EAAS,CAAc,CAChC,CAAC,EAGY,GAAS,EAAO,OAAO,CAClC,OAAQ,EAAO,OAEf,OAAQ,EAER,KAAM,EACN,UAAW,EAAO,OACpB,CAAC,kDCvEM,IAAM,GAAQ,EAAO,OAAO,CACjC,KAAM,EAAO,OACb,QAAS,EAAO,OAChB,OAAQ,EAAO,IAAI,MAAM,EAAO,UAAU,CAAE,QAAS,IAAK,QAAS,GAAI,CAAC,CAAC,EAAE,KAAK,CAAQ,CAC1F,CAAC,EAAE,SAAS,CAAE,WAAY,yBAA0B,CAAC,mOCN9C,IAAM,EAAY,EAAO,OAAO,MAAM,EAAO,aAAa,KAAK,CAAC,EAAE,KACvE,EAAO,MAAM,WAAW,EACxB,EAAQ,CAAC,IAAW,CAClB,IAAM,EAAS,IAAM,EAAO,KAAK,OAAS,GAAW,CAAC,EACtD,MAAO,CACL,SACA,WAAY,CAAC,IAAiB,IAAO,OAAY,EAAO,EAAI,EAAO,KAAK,CAAE,CAC5E,EACD,CACH,ECJO,IAAM,EAAK,EAAO,OAAO,MAAM,EAAO,aAAa,KAAK,CAAC,EAAE,KAChE,EAAO,MAAM,eAAe,EAC5B,EAAQ,CAAC,KAAY,CAAE,OAAQ,CAAC,IAAgB,EAAO,KAAK,GAAM,OAAS,EAAU,CAAC,CAAE,EAAE,CAC5F,EAGa,GAAS,EAAO,MAAM,CACjC,EAAO,OAAO,CACZ,KAAM,EAAO,QAAQ,MAAM,EAC3B,UAAW,EAAO,OAClB,GAAI,EAAO,MACb,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,mBAAoB,CAAC,EAGzC,GAAgB,CACpB,UAAW,EACX,OAAQ,EAAO,OACf,UAAW,EAAO,MAAM,EAAO,MAAM,EACrC,KAAM,EAAO,MAAM,EAAO,MAAM,EAAE,KAAK,CAAQ,EAC/C,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,KAAK,CAAQ,EACpE,OAAQ,GAAO,KAAK,CAAQ,EAC5B,QAAS,EAAO,OAAO,KAAK,CAAQ,CACtC,EAEa,GAAU,EAAO,OAAO,CACnC,GAAI,KACD,EACL,CAAC,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,EAGnC,GAAQ,EAAO,SAAS,CAAC,OAAQ,SAAU,QAAQ,CAAC,EAAE,SAAS,CAAE,WAAY,kBAAmB,CAAC,EAGxG,GAAQ,EAAU,CAAE,KAAM,mBAAoB,OAAQ,GAAQ,MAAO,CAAC,EACtE,GAAU,EAAU,CACxB,KAAM,qBACN,OAAQ,CACN,UAAW,EACX,UAAW,EACX,MAAO,EACT,CACF,CAAC,EACY,GAAQ,CAAE,SAAO,WAAS,YAAa,EAAU,GAAO,EAAO,CAAE,EAEjE,GAAS,EAAO,SAAS,CAAC,QAAS,OAAQ,KAAK,CAAC,EAAE,SAAS,CAAE,WAAY,mBAAoB,CAAC,EAI/F,GAAO,EAAO,OAAO,CAChC,OAAQ,EAAO,OACf,SAAU,EAAO,OACjB,OAAQ,EACV,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,EAEhC,GAAU,EAAO,MAAM,EAAI,EAAE,SAAS,CAAE,WAAY,oBAAqB,CAAC,ECtDvF,IAAM,GAAU,EAAU,CAAE,KAAM,gBAAiB,OAAQ,CAAC,CAAE,CAAC,EAElD,GAAK,EAAO,OAAO,KAAK,EAAO,MAAM,UAAU,CAAC,EAGhD,EAAO,EAAO,OAAO,KAAK,EAAO,MAAM,YAAY,CAAC,EAGpD,GAAQ,EAAO,OAAO,SAAS,CAAE,WAAY,aAAc,CAAC,EAI5D,GAAO,EAAO,OAAO,CAChC,GAAI,GACJ,KAAM,EACN,MAAO,EAAM,IAAI,KAAK,CAAQ,EAC9B,QAAS,GAAS,QAClB,OAAQ,EAAO,OAAO,KAAK,CAAQ,EACnC,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,KAAM,EAAO,SAAS,CAAC,WAAY,UAAW,KAAK,CAAC,EACpD,OAAQ,EAAO,QACf,MAAO,GAAM,KAAK,CAAQ,EAC1B,MAAO,EAAY,KAAK,CAAQ,EAChC,YAAa,EAAW,OAC1B,CAAC,EACE,SAAS,CAAE,WAAY,YAAa,CAAC,EACrC,KACC,EAAQ,KAAO,CACb,QAAS,CAAC,KACP,CACC,KACA,KAAM,EAAK,KAAK,CAAE,EAClB,QAAS,CAAE,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,KAAM,CAAC,CAAE,EAC/C,KAAM,UACN,OAAQ,GACR,YAAa,CACX,CAAE,OAAQ,IAAK,SAAU,IAAK,OAAQ,OAAQ,EAC9C,CAAE,OAAQ,qBAAsB,SAAU,IAAK,OAAQ,KAAM,EAC7D,CAAE,OAAQ,OAAQ,SAAU,QAAS,OAAQ,KAAM,EACnD,CAAE,OAAQ,OAAQ,SAAU,UAAW,OAAQ,KAAM,EACrD,CAAE,OAAQ,OAAQ,SAAU,gBAAiB,OAAQ,OAAQ,CAC/D,CACF,EACJ,EAAE,CACJ,EAEW,GAAQ,CACnB,WACA,YAAa,EAAU,EAAO,CAChC,2CCvDO,IAAM,GAAK,EAAO,OAAO,KAAK,EAAO,MAAM,aAAa,CAAC,+CCCzD,IAAM,GAAO,EAAO,OAAO,CAChC,MAAO,EAAO,OACd,OAAQ,EAAO,OACf,UAAW,EAAO,OAClB,MAAO,EAAO,OAAO,CACnB,KAAM,EAAO,OACb,MAAO,EAAO,MAChB,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,iBAAkB,CAAC,ECQtC,IAAM,GAAK,EAAO,OAAO,MAAM,EAAO,aAAa,MAAM,CAAC,EAAE,KACjE,EAAO,MAAM,oBAAoB,EACjC,EAAQ,CAAC,KAAY,CACnB,OAAQ,IAAM,EAAO,KAAK,OAAS,EAAU,CAAC,EAC9C,UAAW,CAAC,IAAsB,EAAO,KAAK,EAAQ,QAAQ,QAAS,MAAM,CAAC,CAChF,EAAE,CACJ,EAGM,EAAO,CACX,GAAI,GACJ,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,KAAK,CAAQ,EACpE,KAAM,EAAO,OAAO,CAAE,QAAS,CAAsB,CAAC,CACxD,EAEa,EAAgB,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAAE,SAAS,CACjF,WAAY,+BACd,CAAC,EAIY,GAAgB,EAAO,OAAO,IACtC,EACH,KAAM,EAAO,IAAI,gBAAgB,EACjC,MAAO,EAAM,GACb,SAAU,EAAM,GAAG,KAAK,CAAQ,CAClC,CAAC,EAAE,SAAS,CAAE,WAAY,+BAAgC,CAAC,EAG9C,GAAgB,EAAO,OAAO,IACtC,EACH,KAAM,EAAO,IAAI,gBAAgB,EACjC,MAAO,EAAM,IACb,SAAU,EAAM,IAAI,KAAK,CAAQ,CACnC,CAAC,EAAE,SAAS,CAAE,WAAY,+BAAgC,CAAC,EAG9C,GAAmB,EAAO,OAAO,IACzC,EACH,KAAM,EAAO,IAAI,mBAAmB,EACpC,SAAU,EAAS,IACnB,UAAW,EAAQ,GAAG,KAAK,CAAQ,EACnC,QAAS,EAAa,KAAK,CAAQ,EACnC,SAAU,EAAO,OAAO,CACtB,SAAU,EAAS,IACnB,UAAW,EAAQ,GAAG,KAAK,CAAQ,EACnC,QAAS,EAAa,KAAK,CAAQ,CACrC,CAAC,EAAE,KAAK,CAAQ,CAClB,CAAC,EAAE,SAAS,CAAE,WAAY,kCAAmC,CAAC,EAGjD,GAAO,EAAO,OAAO,IAC7B,EACH,KAAM,EAAO,OAAO,KACpB,MAAO,EAAO,OAAO,MACrB,OAAQ,EAAO,OAAO,OACtB,OAAQ,EAAO,OAAO,OACtB,KAAM,EAAO,IAAI,MAAM,CACzB,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC,EAGrC,GAAY,EAAO,OAAO,IAClC,EACH,KAAM,EAAO,OACb,YAAa,EAAO,OAAO,KAAK,CAAQ,EACxC,KAAM,EAAO,IAAI,WAAW,CAC9B,CAAC,EAAE,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAG1C,GAAS,EAAO,OAAO,IAC/B,EACH,KAAM,EAAO,IAAI,QAAQ,EAEzB,KAAM,EAAO,OAEb,YAAa,EAAO,OAAO,KAAK,CAAQ,CAC1C,CAAC,EAAE,SAAS,CAAE,WAAY,wBAAyB,CAAC,EAGvC,GAAQ,EAAO,OAAO,IAC9B,EACH,KAAM,EAAO,IAAI,OAAO,EACxB,MAAO,EAAY,GACnB,KAAM,EAAY,KAClB,KAAM,EAAO,MACf,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,GAAQ,EAAO,OAAO,IAC9B,EACH,KAAM,EAAO,IAAI,OAAO,EACxB,QAAS,EAAY,GACrB,QAAS,EAAO,OAChB,OAAQ,EAAY,OACpB,KAAM,EAAO,OAAO,KAAK,CAAQ,EACjC,OAAQ,EAAY,OAAO,KAAK,CAAQ,EACxC,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,UAAW,EAAsB,KAAK,CAAQ,CAChD,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,uBAAwB,CAAC,EAGtC,GAAqB,EAAO,OAAO,CAC9C,OAAQ,EAAO,IAAI,WAAW,EAC9B,MAAO,EAAO,MAChB,CAAC,EAAE,SAAS,CAAE,WAAY,qCAAsC,CAAC,EAGpD,GAAmB,EAAO,OAAO,CAC5C,OAAQ,EAAO,IAAI,SAAS,EAC5B,MAAO,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAClD,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,CACpD,CAAC,EAAE,SAAS,CAAE,WAAY,mCAAoC,CAAC,EAGlD,GAAqB,EAAO,OAAO,CAC9C,OAAQ,EAAO,IAAI,WAAW,EAC9B,MAAO,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAClD,QAAS,EAAO,cAAc,CAAO,EACrC,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,EAAE,KAAK,CAAQ,CACnE,CAAC,EAAE,SAAS,CAAE,WAAY,qCAAsC,CAAC,EAGpD,GAAiB,EAAO,OAAO,CAC1C,OAAQ,EAAO,IAAI,OAAO,EAC1B,MAAO,EAAO,OAAO,EAAO,OAAQ,EAAO,OAAO,EAClD,MAAO,EAAa,MACpB,QAAS,EAAO,cAAc,CAAO,EAAE,KAAK,CAAQ,EACpD,SAAU,EAAO,OAAO,EAAO,OAAQ,EAAO,IAAI,EAAE,KAAK,CAAQ,CACnE,CAAC,EAAE,SAAS,CAAE,WAAY,iCAAkC,CAAC,EAEhD,GAAY,EAAO,MAAM,CAAC,GAAoB,GAAkB,GAAoB,EAAc,CAAC,EAAE,KAChH,EAAO,cAAc,QAAQ,CAC/B,EAIa,GAAgB,EAAO,OAAO,CACzC,KAAM,EAAO,IAAI,MAAM,EACvB,GAAI,EAAO,OACX,KAAM,EAAO,OACb,SAAU,EAAO,QAAQ,KAAK,CAAQ,EACtC,cAAe,EAAc,KAAK,CAAQ,EAC1C,oBAAqB,EAAc,KAAK,CAAQ,EAChD,MAAO,GACP,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,IAAK,EAAsB,KAAK,CAAQ,EACxC,UAAW,EAAsB,KAAK,CAAQ,CAChD,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,gCAAiC,CAAC,EAG/C,GAAgB,EAAO,OAAO,CACzC,KAAM,EAAO,IAAI,MAAM,EACvB,KAAM,EAAO,OACb,MAAO,EAAc,KAAK,CAAQ,CACpC,CAAC,EAAE,SAAS,CAAE,WAAY,gCAAiC,CAAC,EAG/C,GAAqB,EAAO,OAAO,CAC9C,KAAM,EAAO,IAAI,WAAW,EAC5B,KAAM,EAAO,OACb,MAAO,EAAc,KAAK,CAAQ,EAClC,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,UAAW,EAAsB,KAAK,CAAQ,CAChD,CAAC,EAAE,KAAK,CAAQ,CAClB,CAAC,EAAE,SAAS,CAAE,WAAY,qCAAsC,CAAC,EAEpD,GAAmB,EAAO,MAAM,CAAC,GAAe,GAAoB,EAAa,CAAC,EAAE,KAC/F,EAAO,cAAc,MAAM,CAC7B,EAIa,GAAiB,EAAO,OAAO,CAC1C,QAAS,EACT,GAAI,EACJ,MAAO,EAAa,KACtB,CAAC,EAAE,SAAS,CAAE,WAAY,iCAAkC,CAAC,EAGhD,GAAY,EAAO,OAAO,IAClC,EACH,KAAM,EAAO,IAAI,WAAW,EAC5B,MAAO,EAAM,GACb,MAAO,EAAM,IACb,QAAS,GAAiB,KAAK,EAAO,KAAK,EAC3C,SAAU,EAAO,OAAO,CACtB,MAAO,EAAS,GAAG,KAAK,CAAQ,EAChC,IAAK,EAAS,GAAG,KAAK,CAAQ,EAC9B,MAAO,EAAO,MAAM,CAAY,EAAE,KAAK,CAAQ,CACjD,CAAC,EAAE,KAAK,CAAQ,EAChB,OAAQ,GAAa,KAAK,CAAQ,EAClC,UAAW,EAAO,OAAO,KAAK,CAAQ,EACtC,cAAe,EAAc,KAAK,CAAQ,EAC1C,KAAM,GAAM,IAAI,KAAK,CAAQ,EAC7B,OAAQ,EAAW,KAAK,KAAK,CAAQ,EACrC,MAAO,EAAa,MAAM,KAAK,CAAQ,EACvC,MAAO,GAAe,KAAK,CAAQ,EACnC,KAAM,EAAO,OAAO,CAClB,QAAS,EACT,UAAW,EAAsB,KAAK,CAAQ,CAChD,CAAC,CACH,CAAC,EAAE,SAAS,CAAE,WAAY,2BAA4B,CAAC,EAEjD,EAAiB,CAAE,KAAM,EAAO,IAAI,YAAY,KAAM,CAAK,EAGpD,GAAoB,EAAO,OAAO,IAC1C,EACH,OAAQ,EAAO,IAAI,SAAS,EAC5B,OAAQ,EAAO,SAAS,CAAC,OAAQ,QAAQ,CAAC,EAC1C,QAAS,EAAO,OAChB,OAAQ,EAAO,MACjB,CAAC,EAAE,SAAS,CAAE,WAAY,oCAAqC,CAAC,EAGnD,GAAsB,EAAO,OAAO,IAC5C,EACH,OAAQ,EAAO,IAAI,WAAW,EAC9B,OAAQ,EAAO,SAAS,CAAC,OAAQ,QAAQ,CAAC,EAC1C,QAAS,EAAO,OAChB,OAAQ,EAAO,MACjB,CAAC,EAAE,SAAS,CAAE,WAAY,sCAAuC,CAAC,EAGrD,GAAmB,EAAO,OAAO,IACzC,EACH,OAAQ,EAAO,IAAI,QAAQ,EAC3B,OAAQ,EAAO,SAAS,CAAC,OAAQ,QAAQ,CAAC,EAC1C,MAAO,EAAa,KACtB,CAAC,EAAE,SAAS,CAAE,WAAY,mCAAoC,CAAC,EAElD,GAAa,EAAO,MAAM,CAAC,GAAmB,GAAqB,EAAgB,CAAC,EAAE,KACjG,EAAO,cAAc,QAAQ,EAC7B,EAAO,SAAS,CAAE,WAAY,4BAA6B,CAAC,CAC9D,EAGa,GAAO,EAAO,MAAM,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACF,CAAC,EAAE,SAAS,CAAE,WAAY,sBAAuB,CAAC", | ||
| "debugId": "9E06D045EC2FC37664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/service/stop.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect } from \"effect\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Commands } from \"../../commands\"\nimport { Runtime } from \"../../../framework/runtime\"\nimport { ServiceConfig } from \"../../../services/service-config\"\nimport { ServerConnection } from \"../../../services/server-connection\"\n\nexport default Runtime.handler(\n Commands.commands.service.commands.stop,\n Effect.fn(\"cli.service.stop\")(function* () {\n const options = yield* ServiceConfig.options()\n yield* ServerConnection.shutdownPersistentPty(options).pipe(Effect.ignore)\n yield* Service.stop(options)\n }),\n)\n" | ||
| ], | ||
| "mappings": ";whCAOA,IAAe,IAAQ,QACrB,EAAS,SAAS,QAAQ,SAAS,KACnC,EAAO,GAAG,kBAAkB,EAAE,SAAU,EAAG,CACzC,IAAM,EAAU,MAAO,EAAc,QAAQ,EAC7C,MAAO,EAAiB,sBAAsB,CAAO,EAAE,KAAK,EAAO,MAAM,EACzE,MAAO,EAAQ,KAAK,CAAO,EAC5B,CACH", | ||
| "debugId": "F359EACBFAF153D964756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "CDEAF4474CA890C664756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../../node_modules/.bun/ai-gateway-provider@3.1.2+cd874a64d6146f19/node_modules/ai-gateway-provider/dist/providers/unified.mjs"], | ||
| "sourcesContent": [ | ||
| "// src/providers/unified.ts\nimport { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";\nvar createUnified = (arg) => {\n return createOpenAICompatible({\n baseURL: \"https://gateway.ai.cloudflare.com/v1/compat\",\n // intercepted and replaced with actual base URL later\n name: \"Unified\",\n ...arg || {}\n });\n};\nvar unified = createUnified();\nexport {\n createUnified,\n unified\n};\n//# sourceMappingURL=unified.mjs.map" | ||
| ], | ||
| "mappings": ";qUAEA,IAAI,EAAgB,CAAC,IACZ,EAAuB,CAC5B,QAAS,8CAET,KAAM,aACH,GAAO,CAAC,CACb,CAAC,EAEC,EAAU,EAAc", | ||
| "debugId": "536076D66CA5456864756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["src/commands/handlers/stats.ts"], | ||
| "sourcesContent": [ | ||
| "import { ClientError, OpenCode, type SessionStatsInfo } from \"@opencode-ai/client\"\nimport { Service } from \"@opencode-ai/client/effect/service\"\nimport { Effect, Option } from \"effect\"\nimport { EOL } from \"node:os\"\nimport { Commands } from \"../commands\"\nimport { Runtime } from \"../../framework/runtime\"\nimport { ServerConnection } from \"../../services/server-connection\"\nimport { errorMessage } from \"../../util/error\"\n\nconst handler = Effect.fn(\"cli.stats\")(function* (input: Runtime.Input<typeof Commands.commands.stats>) {\n const days = Option.getOrUndefined(input.days)\n const year = Option.getOrUndefined(input.year)\n const project = Option.getOrUndefined(input.project)\n if ([days !== undefined, year !== undefined, input.all].filter(Boolean).length > 1)\n yield* Effect.fail(new Error(\"--days, --year, and --all cannot be combined\"))\n\n const server = yield* ServerConnection.resolve({\n server: Option.getOrUndefined(input.server),\n standalone: input.standalone,\n })\n const client = OpenCode.make({ baseUrl: server.endpoint.url, headers: Service.headers(server.endpoint) })\n const range = statsRange({ days, year, all: input.all })\n const projectID =\n project === \".\"\n ? yield* request(server.endpoint.url, (signal) =>\n client.location\n .get({ location: { directory: process.cwd() } }, { signal })\n .then((location) => location.project.id),\n )\n : project\n const details = input.models || input.tools || input.cost || input.full\n const stats = yield* request(server.endpoint.url, (signal) =>\n client.session.stats(\n {\n from: range.from,\n to: range.to,\n project: projectID,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || \"UTC\",\n tools: input.json || input.tools || input.full ? \"detail\" : details ? \"none\" : \"summary\",\n },\n { signal },\n ),\n )\n const output = input.json\n ? JSON.stringify(stats, null, 2)\n : renderStats(stats, {\n label: range.label,\n scope: project === undefined ? \"all projects\" : project === \".\" ? \"current project\" : \"selected project\",\n models: input.models || input.full,\n tools: input.tools || input.full,\n cost: input.cost || input.full,\n limit: input.limit,\n color: process.stdout.isTTY && process.env.NO_COLOR === undefined,\n width: process.stdout.columns ?? 80,\n })\n process.stdout.write(output + EOL)\n})\n\nexport default Runtime.handler(Commands.commands.stats, (input) =>\n handler(input).pipe(\n Effect.catch((error) =>\n Effect.sync(() => {\n process.stderr.write(errorMessage(error) + EOL)\n process.exitCode = 1\n }),\n ),\n ),\n)\n\nexport function request<A>(url: string, run: (signal: AbortSignal) => Promise<A>) {\n return Effect.tryPromise({\n try: () => run(AbortSignal.timeout(30_000)),\n catch: (cause) =>\n cause instanceof ClientError && cause.reason === \"Transport\"\n ? new Error(`Could not reach server at ${url}`, { cause })\n : cause,\n })\n}\n\ntype RenderOptions = {\n label: string\n scope: string\n models: boolean\n tools: boolean\n cost: boolean\n limit: number\n color: boolean\n width: number\n}\n\nconst colors = terminalPalette()\n\nexport function renderStats(stats: SessionStatsInfo, options: RenderOptions) {\n const totalTokens = tokenTotal(stats.tokens)\n const toolTotals = stats.tools.mode === \"none\" ? undefined : stats.tools.totals\n const terminalTools = toolTotals ? toolTotals.succeeded + toolTotals.failed : 0\n const toolRate = !toolTotals || terminalTools === 0 ? undefined : (toolTotals.succeeded / terminalTools) * 100\n const primary = `1;${colors.primary}`\n const sessionLine = [\n metricCount(stats.sessions, \"session\", options.color),\n stats.subagents > 0 ? metricCount(stats.subagents, \"subagent\", options.color) : undefined,\n ]\n .filter((value) => value !== undefined)\n .join(\" · \")\n const toolSummary = !toolTotals\n ? \"tool stats unavailable\"\n : toolRate === undefined\n ? \"no tool calls\"\n : `${style(formatPercent(toolRate), primary, options.color)} tool success`\n const details = options.models || options.tools || options.cost\n const empty = stats.sessions === 0 && stats.prompts === 0 && stats.steps === 0\n const heading = `${style(\"opencode stats\", primary, options.color)} ${style(`· ${options.label} · ${options.scope}`, \"2\", options.color)}`\n const lines = details\n ? [style(`${options.label} · ${options.scope}`, \"2\", options.color)]\n : empty\n ? [\n heading,\n \"\",\n style(\"no activity in this range\", \"2\", options.color),\n \"\",\n style(\"opencode.ai\", \"2\", options.color),\n ]\n : [\n heading,\n \"\",\n ...renderActivity(stats.activity, stats.range.from, stats.range.to, options.color, options.width),\n \"\",\n sessionLine,\n `${metricCount(stats.prompts, \"prompt\", options.color)} · ${metricCount(stats.steps, \"step\", options.color)} · ${metricCount(totalTokens, \"token\", options.color)}`,\n `${toolSummary} · ${metricCount(stats.activeDays, \"active day\", options.color)} · best streak ${style(stats.streak.toString(), primary, options.color)} day${stats.streak === 1 ? \"\" : \"s\"}`,\n \"\",\n style(\"opencode.ai\", \"2\", options.color),\n ]\n\n if (options.cost) lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderCost(stats))\n if (options.models)\n lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderModels(stats, options.limit, options.width))\n if (options.tools) lines.push(...(lines.length > 0 ? [\"\"] : []), ...renderTools(stats, options.limit, options.width))\n return lines.join(EOL)\n}\n\nfunction statsRange(input: { days?: number; year?: number; all: boolean }) {\n const now = new Date()\n const to = now.getTime() + 1\n if (input.all) return { from: undefined, to, label: \"all time\" }\n if (input.days !== undefined) {\n const from = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n from.setDate(from.getDate() - Math.max(0, input.days - 1))\n return {\n from: from.getTime(),\n to,\n label: input.days === 0 || input.days === 1 ? \"today\" : `last ${input.days} days`,\n }\n }\n const year = input.year ?? now.getFullYear()\n return {\n from: new Date(year, 0, 1).getTime(),\n to: year === now.getFullYear() ? to : new Date(year + 1, 0, 1).getTime(),\n label: year === now.getFullYear() ? `${year} so far` : year.toString(),\n }\n}\n\nfunction renderActivity(\n activity: SessionStatsInfo[\"activity\"],\n from: number,\n to: number,\n color: boolean,\n width: number,\n) {\n const values = new Map(activity.map((day) => [day.date, day.steps]))\n const rangeStart = dateOrdinal(new Date(from))\n const rangeEnd = dateOrdinal(new Date(to - 1))\n const end = new Date(to - 1)\n end.setHours(12, 0, 0, 0)\n end.setDate(end.getDate() + (7 - mondayIndex(end) - 1))\n const start = new Date(from)\n start.setHours(12, 0, 0, 0)\n start.setDate(start.getDate() - mondayIndex(start))\n const maxWeeks = Math.max(1, Math.min(53, width - 4))\n const totalWeeks = Math.floor((dateOrdinal(end) - dateOrdinal(start)) / 7) + 1\n const latest = new Date(end)\n latest.setDate(latest.getDate() - (maxWeeks - 1) * 7)\n if (start < latest) start.setTime(latest.getTime())\n\n const active = [...values.values()].filter((value) => value > 0)\n const levels = [...new Set(active)].sort((a, b) => a - b)\n const weekStarts = Array.from({ length: Math.floor((dateOrdinal(end) - dateOrdinal(start)) / 7) + 1 }, (_, week) => {\n const date = new Date(start)\n date.setDate(date.getDate() + week * 7)\n return date\n })\n const weeks = weekStarts.map((week) =>\n Array.from({ length: 7 }, (_, day) => {\n const date = new Date(week)\n date.setDate(date.getDate() + day)\n const ordinal = dateOrdinal(date)\n if (ordinal < rangeStart || ordinal > rangeEnd) return \" \"\n return activityGlyph(values.get(dateKey(date)) ?? 0, levels, color)\n }),\n )\n const weekdays = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"]\n return [\n style(totalWeeks > maxWeeks ? `activity · last ${maxWeeks} weeks` : \"activity\", `1;${colors.primary}`, color),\n ` ${style(monthLabels(weekStarts), \"2\", color)}`,\n ...weekdays.flatMap((label, day) => [\n `${style(label, \"2\", color)} ${weeks.map((week) => week[day]).join(\"\")}`,\n ...(day === weekdays.length - 1 ? [] : [\"\"]),\n ]),\n \"\",\n ` ${style(\"less\", \"2\", color)} ${[0, 1, 2, 3, 4].map((level) => paintActivity(level, color)).join(\"\")} ${style(\"more\", \"2\", color)}`,\n ]\n}\n\nfunction renderCost(stats: SessionStatsInfo) {\n const input = stats.tokens.input + stats.tokens.cache.read + stats.tokens.cache.write\n const cached = input === 0 ? 0 : (stats.tokens.cache.read / input) * 100\n return [\n \"COST & TOKENS\",\n row(\"cost\", `$${stats.cost.toFixed(2)}`),\n row(\"input\", formatNumber(stats.tokens.input)),\n row(\"output\", formatNumber(stats.tokens.output)),\n row(\"reasoning\", formatNumber(stats.tokens.reasoning)),\n row(\"cache read\", formatNumber(stats.tokens.cache.read)),\n row(\"cache write\", formatNumber(stats.tokens.cache.write)),\n row(\"cached input\", formatPercent(cached)),\n ]\n}\n\nfunction renderModels(stats: SessionStatsInfo, limit: number, width: number) {\n if (stats.models.length === 0) return [\"MODELS\", \" no model usage\"]\n const models = stats.models.slice(0, limit)\n const more = stats.models.length - models.length\n if (width < 68)\n return [\n \"MODELS\",\n ...models.flatMap((item) => [\n truncate(\n `${item.model.providerID}/${item.model.id}${item.model.variant ? `#${item.model.variant}` : \"\"}`,\n width,\n ),\n ` ${formatNumber(tokenTotal(item.tokens))} tokens · ${formatNumber(item.steps)} steps · $${item.cost.toFixed(2)}`,\n ]),\n ...(more > 0 ? [\"\", `+${more.toLocaleString(\"en-US\")} more model${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n return [\n \"MODELS\",\n tableHeader(\"model\", \"tokens\", \"steps\", \"cost\"),\n ...models.map((item) =>\n tableRow(\n `${item.model.providerID}/${item.model.id}${item.model.variant ? `#${item.model.variant}` : \"\"}`,\n formatNumber(tokenTotal(item.tokens)),\n formatNumber(item.steps),\n `$${item.cost.toFixed(2)}`,\n ),\n ),\n ...(more > 0 ? [\"\", `+${more.toLocaleString(\"en-US\")} more model${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n}\n\nfunction renderTools(stats: SessionStatsInfo, limit: number, width: number) {\n if (stats.tools.mode !== \"detail\") return [\"TOOL RELIABILITY\", \" tool details unavailable\"]\n if (stats.tools.usage.length === 0) return [\"TOOL RELIABILITY\", \" no tool calls\"]\n const tools = stats.tools.usage.slice(0, limit)\n const more = stats.tools.usage.length - tools.length\n if (width < 68)\n return [\n \"TOOL RELIABILITY\",\n ...tools.flatMap((tool) => {\n const terminal = tool.succeeded + tool.failed\n return [\n truncate(tool.name, width),\n ` ${formatNumber(tool.calls)} calls · ${terminal === 0 ? \"-\" : formatPercent((tool.failed / terminal) * 100)} error · ${tool.durationP50 === undefined ? \"-\" : formatDuration(tool.durationP50)} p50`,\n ]\n }),\n \"\",\n `${formatNumber(stats.tools.totals.succeeded + stats.tools.totals.failed)} finished calls · ${formatNumber(stats.tools.totals.unfinished)} unfinished`,\n ...(more > 0 ? [`+${more.toLocaleString(\"en-US\")} more tool${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n return [\n \"TOOL RELIABILITY\",\n tableHeader(\"tool\", \"calls\", \"error\", \"p50\"),\n ...tools.map((tool) => {\n const terminal = tool.succeeded + tool.failed\n return tableRow(\n tool.name,\n formatNumber(tool.calls),\n terminal === 0 ? \"-\" : formatPercent((tool.failed / terminal) * 100),\n tool.durationP50 === undefined ? \"-\" : formatDuration(tool.durationP50),\n )\n }),\n \"\",\n `${formatNumber(stats.tools.totals.succeeded + stats.tools.totals.failed)} finished calls · ${formatNumber(stats.tools.totals.unfinished)} unfinished`,\n ...(more > 0 ? [`+${more.toLocaleString(\"en-US\")} more tool${more === 1 ? \"\" : \"s\"}`] : []),\n ]\n}\n\nfunction row(label: string, value: string) {\n return ` ${label.padEnd(20)}${value}`\n}\n\nfunction tableHeader(label: string, second: string, third: string, fourth: string) {\n return tableRow(label, second, third, fourth)\n}\n\nfunction tableRow(label: string, second: string, third: string, fourth: string) {\n return `${truncate(label, 34).padEnd(34)}${second.padStart(10)}${third.padStart(12)}${fourth.padStart(12)}`\n}\n\nfunction truncate(value: string, width: number) {\n return value.length <= width ? value : value.slice(0, width - 1) + \"…\"\n}\n\nfunction tokenTotal(tokens: SessionStatsInfo[\"tokens\"]) {\n return tokens.input + tokens.output + tokens.reasoning + tokens.cache.read + tokens.cache.write\n}\n\nfunction formatNumber(value: number) {\n if (value >= 1_000_000_000) return `${trimDecimal(value / 1_000_000_000)}b`\n if (value >= 1_000_000) return `${trimDecimal(value / 1_000_000)}m`\n if (value >= 1_000) return `${trimDecimal(value / 1_000)}k`\n return Math.round(value).toLocaleString(\"en-US\")\n}\n\nfunction trimDecimal(value: number) {\n return value.toFixed(1).replace(/\\.0$/, \"\")\n}\n\nfunction formatPercent(value: number) {\n return `${value.toFixed(value >= 10 ? 1 : 2)}%`\n}\n\nfunction formatDuration(value: number) {\n if (value < 1_000) return `${Math.round(value)}ms`\n return `${trimDecimal(value / 1_000)}s`\n}\n\nfunction metricCount(value: number, noun: string, color: boolean) {\n return `${style(formatNumber(value), `1;${colors.primary}`, color)} ${noun}${value === 1 ? \"\" : \"s\"}`\n}\n\nfunction style(value: string, code: string, color: boolean) {\n return color ? `\\x1b[${code}m${value}\\x1b[0m` : value\n}\n\nfunction activityGlyph(value: number, levels: number[], color: boolean) {\n if (value === 0) return paintActivity(0, color)\n const index = levels.indexOf(value)\n const level = Math.max(1, Math.ceil(((index + 1) / levels.length) * 4))\n return paintActivity(level, color)\n}\n\nfunction paintActivity(level: number, color: boolean) {\n const glyph = [\"·\", \"░\", \"▒\", \"▓\", \"█\"][level]\n if (!color) return glyph\n if (level === 0) return `\\x1b[2m${glyph}\\x1b[22m`\n return `\\x1b[${colors.activity[level - 1]}m${glyph}\\x1b[39m`\n}\n\nfunction terminalPalette() {\n const background = Number(process.env.COLORFGBG?.split(\";\").at(-1))\n if (Number.isFinite(background) && background >= 7)\n return {\n primary: \"38;2;59;125;216\",\n activity: [\"38;2;153;169;192\", \"38;2;122;155;200\", \"38;2;90;140;208\", \"38;2;59;125;216\"],\n }\n if (Number.isFinite(background))\n return {\n primary: \"38;2;250;178;131\",\n activity: [\"38;2;117;99;87\", \"38;2;161;125;102\", \"38;2;206;152;116\", \"38;2;250;178;131\"],\n }\n return { primary: \"36\", activity: [\"2;36\", \"36\", \"1;36\", \"1;96\"] }\n}\n\nfunction monthLabels(weeks: Date[]) {\n const line: string[] = []\n weeks.reduce((previous, week, index) => {\n const middle = new Date(week)\n middle.setDate(middle.getDate() + 3)\n const month = middle.getMonth()\n if (month === previous) return previous\n Intl.DateTimeFormat(\"en-US\", { month: \"short\" })\n .format(middle)\n .split(\"\")\n .forEach((character, offset) => {\n line[index + offset] = character\n })\n return month\n }, -1)\n return Array.from({ length: Math.max(weeks.length, line.length) }, (_, index) => line[index] ?? \" \")\n .join(\"\")\n .trimEnd()\n}\n\nfunction mondayIndex(date: Date) {\n return (date.getDay() + 6) % 7\n}\n\nfunction dateKey(date: Date) {\n return [\n date.getFullYear(),\n String(date.getMonth() + 1).padStart(2, \"0\"),\n String(date.getDate()).padStart(2, \"0\"),\n ].join(\"-\")\n}\n\nfunction dateOrdinal(date: Date) {\n return Math.floor(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / 86_400_000)\n}\n" | ||
| ], | ||
| "mappings": "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", | ||
| "debugId": "CE4F0C0BFC913B7764756E2164756E21", | ||
| "names": [] | ||
| } |
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/openai-compatible-chat.ts"], | ||
| "sourcesContent": [ | ||
| "import { Route, type RouteRoutedLanguageModelInput } from \"../route/client.js\"\nimport { Endpoint } from \"../route/endpoint.js\"\nimport { Framing } from \"../route/framing.js\"\nimport * as OpenAIChat from \"./openai-chat.js\"\n\nconst ADAPTER = \"openai-compatible-chat\"\n\nexport type OpenAICompatibleChatLanguageModelInput = RouteRoutedLanguageModelInput\n\n/**\n * Route for non-OpenAI providers that expose an OpenAI Chat-compatible\n * `/chat/completions` endpoint. Reuses `OpenAIChat.protocol` end-to-end and\n * overrides only the route id so providers can be resolved per-family without\n * colliding with native OpenAI. Provider helpers configure the route endpoint\n * before model selection.\n */\nexport const route = Route.make({\n id: ADAPTER,\n providerMetadataKey: \"openai\",\n protocol: OpenAIChat.protocol,\n endpoint: Endpoint.path(\"/chat/completions\"),\n framing: Framing.sse,\n})\n\nexport * as OpenAICompatibleChat from \"./openai-compatible-chat.js\"\n" | ||
| ], | ||
| "mappings": ";mOAKA,IAAM,EAAU,yBAWH,EAAQ,EAAM,KAAK,CAC9B,GAAI,EACJ,oBAAqB,SACrB,SAAqB,EACrB,SAAU,EAAS,KAAK,mBAAmB,EAC3C,QAAS,EAAQ,GACnB,CAAC", | ||
| "debugId": "FB69BCDAB11C051464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": ["../ai/src/protocols/utils/image-input.ts"], | ||
| "sourcesContent": [ | ||
| "import { Effect, Encoding } from \"effect\"\nimport type { ImageInput } from \"../../image.js\"\nimport { InvalidRequestReason, AIError } from \"../../schema/index.js\"\n\nconst invalid = (module: string, message: string) =>\n new AIError({\n module,\n method: \"generate\",\n reason: new InvalidRequestReason({ message }),\n })\n\nexport const dataUrl = (input: Extract<ImageInput, { readonly type: \"bytes\" }>) =>\n `data:${input.mediaType};base64,${Encoding.encodeBase64(input.data)}`\n\nexport const decodeDataUrl = (\n url: string,\n module: string,\n): Effect.Effect<{ readonly mediaType: string; readonly data: Uint8Array } | undefined, AIError> => {\n if (!url.startsWith(\"data:\")) return Effect.undefined\n const match = /^data:([^;,]+);base64,(.*)$/s.exec(url)\n if (!match) return Effect.fail(invalid(module, \"Image data URLs must contain a MIME type and base64 data\"))\n return Effect.fromResult(Encoding.decodeBase64(match[2])).pipe(\n Effect.mapError(() => invalid(module, \"Image data URL contains invalid base64 data\")),\n Effect.map((data) => ({ mediaType: match[1], data })),\n )\n}\n\nexport const invalidImageInput = invalid\n\nexport const ImageInputs = {\n dataUrl,\n decodeDataUrl,\n invalid: invalidImageInput,\n} as const\n" | ||
| ], | ||
| "mappings": ";wHAIA,IAAM,EAAU,CAAC,EAAgB,IAC/B,IAAI,EAAQ,CACV,SACA,OAAQ,WACR,OAAQ,IAAI,EAAqB,CAAE,SAAQ,CAAC,CAC9C,CAAC,EAEU,EAAU,CAAC,IACtB,QAAQ,EAAM,oBAAoB,EAAS,aAAa,EAAM,IAAI,IAEvD,EAAgB,CAC3B,EACA,IACkG,CAClG,GAAI,CAAC,EAAI,WAAW,OAAO,EAAG,OAAO,EAAO,UAC5C,IAAM,EAAQ,+BAA+B,KAAK,CAAG,EACrD,GAAI,CAAC,EAAO,OAAO,EAAO,KAAK,EAAQ,EAAQ,0DAA0D,CAAC,EAC1G,OAAO,EAAO,WAAW,EAAS,aAAa,EAAM,EAAE,CAAC,EAAE,KACxD,EAAO,SAAS,IAAM,EAAQ,EAAQ,6CAA6C,CAAC,EACpF,EAAO,IAAI,CAAC,KAAU,CAAE,UAAW,EAAM,GAAI,MAAK,EAAE,CACtD,GAGW,EAAoB,EAEpB,EAAc,CACzB,UACA,gBACA,QAAS,CACX", | ||
| "debugId": "CA72786CD17CBAA464756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is too big to display
| { | ||
| "version": 3, | ||
| "sources": [], | ||
| "sourcesContent": [ | ||
| ], | ||
| "mappings": "", | ||
| "debugId": "74E8BB9A8A7D0EF064756E2164756E21", | ||
| "names": [] | ||
| } |
Sorry, the diff of this file is not supported yet
254868312
0.01%307
0.33%