pi2dsh 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/{all-Rt4K68QA.mjs → all-DSpxKvHa.mjs} +10 -10
  2. package/dist/{all-Rt4K68QA.mjs.map → all-DSpxKvHa.mjs.map} +1 -1
  3. package/dist/{anthropic-messages-Beym0_aC.mjs → anthropic-messages-BL9N1Idv.mjs} +3 -3
  4. package/dist/{anthropic-messages-Beym0_aC.mjs.map → anthropic-messages-BL9N1Idv.mjs.map} +1 -1
  5. package/dist/{azure-openai-responses-cHqZTgLD.mjs → azure-openai-responses-A67VbaZ1.mjs} +3 -3
  6. package/dist/{azure-openai-responses-cHqZTgLD.mjs.map → azure-openai-responses-A67VbaZ1.mjs.map} +1 -1
  7. package/dist/cli.mjs +1 -1
  8. package/dist/compat/pi-ai.d.mts +3 -38
  9. package/dist/compat/pi-ai.d.mts.map +1 -1
  10. package/dist/compat/pi-ai.mjs +3 -3
  11. package/dist/compat/pi-coding-agent.d.mts +71 -32
  12. package/dist/compat/pi-coding-agent.d.mts.map +1 -1
  13. package/dist/compat/pi-coding-agent.mjs +2 -2
  14. package/dist/credentials-oauth.mjs +2 -2
  15. package/dist/{dist-QBBA-dL_.mjs → dist-BYA74yh_.mjs} +2 -2
  16. package/dist/{dist-QBBA-dL_.mjs.map → dist-BYA74yh_.mjs.map} +1 -1
  17. package/dist/dist-DeonWo7m.mjs +1089 -0
  18. package/dist/dist-DeonWo7m.mjs.map +1 -0
  19. package/dist/{google-generative-ai-B7OZs5lu.mjs → google-generative-ai-DT5S8D8y.mjs} +2 -2
  20. package/dist/{google-generative-ai-B7OZs5lu.mjs.map → google-generative-ai-DT5S8D8y.mjs.map} +1 -1
  21. package/dist/{google-shared-CRsAUItF.mjs → google-shared-DYP_9cnK.mjs} +4 -4
  22. package/dist/{google-shared-CRsAUItF.mjs.map → google-shared-DYP_9cnK.mjs.map} +1 -1
  23. package/dist/{google-vertex-DmdaHQtB.mjs → google-vertex-Dpq7O7Be.mjs} +3 -3
  24. package/dist/{google-vertex-DmdaHQtB.mjs.map → google-vertex-Dpq7O7Be.mjs.map} +1 -1
  25. package/dist/host.mjs +1 -1
  26. package/dist/index.d.mts.map +1 -1
  27. package/dist/index.mjs +1 -1
  28. package/dist/{json-parse-CFyFZSLJ.mjs → json-parse-Dz5sKMTv.mjs} +2 -2
  29. package/dist/{json-parse-CFyFZSLJ.mjs.map → json-parse-Dz5sKMTv.mjs.map} +1 -1
  30. package/dist/{mcp-config-D2B3kv-Z.mjs → mcp-config-B3h5jTBb.mjs} +9 -8
  31. package/dist/mcp-config-B3h5jTBb.mjs.map +1 -0
  32. package/dist/{mistral-conversations-HHZCcFv_.mjs → mistral-conversations-BsxbCCWx.mjs} +4 -4
  33. package/dist/{mistral-conversations-HHZCcFv_.mjs.map → mistral-conversations-BsxbCCWx.mjs.map} +1 -1
  34. package/dist/{multipart-parser-CIa5BbwO.mjs → multipart-parser-woKCuALW.mjs} +3 -3
  35. package/dist/{multipart-parser-CIa5BbwO.mjs.map → multipart-parser-woKCuALW.mjs.map} +1 -1
  36. package/dist/{openai-codex-responses-vmovNu-q.mjs → openai-codex-responses-C7vviVT2.mjs} +3 -3
  37. package/dist/{openai-codex-responses-vmovNu-q.mjs.map → openai-codex-responses-C7vviVT2.mjs.map} +1 -1
  38. package/dist/{openai-completions-fXHhRolF.mjs → openai-completions-By8QNX1P.mjs} +3 -3
  39. package/dist/{openai-completions-fXHhRolF.mjs.map → openai-completions-By8QNX1P.mjs.map} +1 -1
  40. package/dist/{openai-responses-DKdCYf3h.mjs → openai-responses-DboJUcFN.mjs} +3 -3
  41. package/dist/{openai-responses-DKdCYf3h.mjs.map → openai-responses-DboJUcFN.mjs.map} +1 -1
  42. package/dist/{openai-responses-shared-D0Jq7yVP.mjs → openai-responses-shared-BDzn7nJY.mjs} +2 -2
  43. package/dist/{openai-responses-shared-D0Jq7yVP.mjs.map → openai-responses-shared-BDzn7nJY.mjs.map} +1 -1
  44. package/dist/{otel-BQSQRBLF.mjs → otel-PimLMoiV.mjs} +3 -3
  45. package/dist/{otel-BQSQRBLF.mjs.map → otel-PimLMoiV.mjs.map} +1 -1
  46. package/dist/{pi-ai-DhYGgq4Y.mjs → pi-ai-B_88Wb0r.mjs} +49 -6
  47. package/dist/{pi-ai-DhYGgq4Y.mjs.map → pi-ai-B_88Wb0r.mjs.map} +1 -1
  48. package/dist/{pi-coding-agent-fPHwKP4d.mjs → pi-coding-agent-COMX0KHL.mjs} +109 -34
  49. package/dist/pi-coding-agent-COMX0KHL.mjs.map +1 -0
  50. package/dist/{pi-messages-CV-Ts8An.mjs → pi-messages-B-7Xo_I0.mjs} +3 -3
  51. package/dist/{pi-messages-CV-Ts8An.mjs.map → pi-messages-B-7Xo_I0.mjs.map} +1 -1
  52. package/dist/pi-types-KazmR2O5.d.mts +62 -0
  53. package/dist/pi-types-KazmR2O5.d.mts.map +1 -0
  54. package/dist/pi-uuid-Db8ShZsK.mjs +47 -0
  55. package/dist/pi-uuid-Db8ShZsK.mjs.map +1 -0
  56. package/dist/{provider-env-C72pF4vP.mjs → provider-env-D-cCRWzv.mjs} +2 -2
  57. package/dist/{provider-env-C72pF4vP.mjs.map → provider-env-D-cCRWzv.mjs.map} +1 -1
  58. package/dist/{runtime-B9R7bDWT.mjs → runtime-B7mEIRf-.mjs} +1183 -52
  59. package/dist/runtime-B7mEIRf-.mjs.map +1 -0
  60. package/dist/runtime.d.mts.map +1 -1
  61. package/dist/runtime.mjs +1 -1
  62. package/dist/{src-C3WBfOks.mjs → src-BEl3QrGL.mjs} +3 -3
  63. package/dist/{src-C3WBfOks.mjs.map → src-BEl3QrGL.mjs.map} +1 -1
  64. package/package.json +2 -2
  65. package/dist/build-BG7p2Lbr.mjs +0 -4416
  66. package/dist/build-BG7p2Lbr.mjs.map +0 -1
  67. package/dist/dist-IQKOgQyt.mjs +0 -10035
  68. package/dist/dist-IQKOgQyt.mjs.map +0 -1
  69. package/dist/mcp-config-D2B3kv-Z.mjs.map +0 -1
  70. package/dist/pi-coding-agent-fPHwKP4d.mjs.map +0 -1
  71. package/dist/pi-types-BLt46jaf.d.mts +0 -2494
  72. package/dist/pi-types-BLt46jaf.d.mts.map +0 -1
  73. package/dist/rolldown-runtime-CTfmNlz1.mjs +0 -44
  74. package/dist/runtime-B9R7bDWT.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
 
2
2
  import { a as AssistantMessageEventStream, n as createAssistantMessageDiagnostic, t as appendAssistantMessageDiagnostic } from "./diagnostics-CJye1UFh.mjs";
3
3
  import { n as providerHeadersToRecord, t as headersToRecord } from "./headers-CPzZhJQn.mjs";
4
- import { n as parseStreamingJson } from "./json-parse-CFyFZSLJ.mjs";
5
- import { t as getProviderEnvValue } from "./provider-env-C72pF4vP.mjs";
4
+ import { n as parseStreamingJson } from "./json-parse-Dz5sKMTv.mjs";
5
+ import { t as getProviderEnvValue } from "./provider-env-D-cCRWzv.mjs";
6
6
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js
7
7
  /**
8
8
  * pi-messages API implementation.
@@ -303,4 +303,4 @@ const streamSimple = (model, context, options) => {
303
303
  //#endregion
304
304
  export { PiMessagesResponseError, stream, streamSimple };
305
305
 
306
- //# sourceMappingURL=pi-messages-CV-Ts8An.mjs.map
306
+ //# sourceMappingURL=pi-messages-B-7Xo_I0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi-messages-CV-Ts8An.mjs","names":[],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js"],"sourcesContent":["/**\n * pi-messages API implementation.\n *\n * Streams pi's own message protocol directly to a backend: the request is a\n * single POST of `{ model, context, options }` to `<baseUrl>/messages`, the\n * response is an SSE stream of serialized assistant-message events plus a\n * terminal `done`/`error` event. This is the wire protocol spoken by the\n * Radius gateway, but any backend implementing it can be used, e.g. via a\n * models.json custom provider with `\"api\": \"pi-messages\"`.\n */\nimport { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic } from \"../utils/diagnostics.js\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.js\";\nimport { headersToRecord, providerHeadersToRecord } from \"../utils/headers.js\";\nimport { parseStreamingJson } from \"../utils/json-parse.js\";\nimport { getProviderEnvValue } from \"../utils/provider-env.js\";\nexport class PiMessagesResponseError extends Error {\n code;\n diagnosticDetails;\n constructor(message, code, diagnosticDetails) {\n super(message);\n this.name = \"PiMessagesResponseError\";\n this.code = code;\n this.diagnosticDetails = diagnosticDetails;\n }\n}\nfunction parsePiMessagesErrorBody(body) {\n try {\n const parsed = JSON.parse(body);\n const error = parsed?.error;\n return parsed && typeof error === \"object\" && error !== null && !Array.isArray(error) ? parsed : undefined;\n }\n catch {\n return undefined;\n }\n}\nfunction truncateDiagnosticString(value) {\n const maxLength = 8192;\n return value.length > maxLength ? `${value.slice(0, maxLength)}…` : value;\n}\nfunction formatPiMessagesResponseError(response, body, errorBody) {\n const message = typeof errorBody?.error?.message === \"string\" ? errorBody.error.message : undefined;\n const code = typeof errorBody?.error?.code === \"string\" ? errorBody.error.code : undefined;\n const suffix = message ?? body;\n const codeSuffix = code ? ` (${code})` : \"\";\n return `${response.status} ${response.statusText}: ${suffix}${codeSuffix}`;\n}\nfunction createPiMessagesResponseError(model, url, response, body) {\n const errorBody = parsePiMessagesErrorBody(body);\n const code = typeof errorBody?.error?.code === \"string\" ? errorBody.error.code : undefined;\n return new PiMessagesResponseError(formatPiMessagesResponseError(response, body, errorBody), code, {\n version: 1,\n provider: model.provider,\n model: model.id,\n url: url.toString(),\n status: response.status,\n statusText: response.statusText,\n error: errorBody?.error,\n body: errorBody ? undefined : truncateDiagnosticString(body),\n timestampMs: Date.now(),\n });\n}\nfunction createEmptyUsage() {\n return {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n };\n}\nfunction appendRewriteDiagnostic(message, rewrite) {\n if (!rewrite) {\n return;\n }\n appendAssistantMessageDiagnostic(message, {\n type: \"pi_messages_rewrite\",\n timestamp: Date.now(),\n details: { ...rewrite },\n });\n}\nfunction createEventConverter(model) {\n const partial = {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: createEmptyUsage(),\n stopReason: \"pending\",\n timestamp: Date.now(),\n };\n const toolJson = new Map();\n return (event) => {\n switch (event.type) {\n case \"done\":\n Object.assign(partial, {\n stopReason: event.reason,\n usage: event.usage,\n responseId: event.responseId,\n });\n appendRewriteDiagnostic(partial, event.rewrite);\n return { type: \"done\", reason: event.reason, message: partial };\n case \"error\":\n Object.assign(partial, {\n stopReason: event.reason,\n usage: event.usage,\n errorMessage: event.errorMessage,\n responseId: event.responseId,\n });\n appendRewriteDiagnostic(partial, event.rewrite);\n return { type: \"error\", reason: event.reason, error: partial };\n case \"start\":\n break;\n case \"text_start\":\n partial.content[event.contentIndex] = { type: \"text\", text: \"\" };\n break;\n case \"text_delta\":\n partial.content[event.contentIndex].text += event.delta;\n break;\n case \"text_end\":\n Object.assign(partial.content[event.contentIndex], {\n text: event.content,\n textSignature: event.contentSignature,\n });\n break;\n case \"thinking_start\":\n partial.content[event.contentIndex] = { type: \"thinking\", thinking: \"\" };\n break;\n case \"thinking_delta\":\n partial.content[event.contentIndex].thinking += event.delta;\n break;\n case \"thinking_end\":\n Object.assign(partial.content[event.contentIndex], {\n thinking: event.content,\n thinkingSignature: event.contentSignature,\n redacted: event.redacted,\n });\n break;\n case \"toolcall_start\":\n partial.content[event.contentIndex] = {\n type: \"toolCall\",\n id: event.id,\n name: event.toolName,\n arguments: {},\n };\n toolJson.set(event.contentIndex, \"\");\n break;\n case \"toolcall_delta\": {\n const json = `${toolJson.get(event.contentIndex) ?? \"\"}${event.delta}`;\n toolJson.set(event.contentIndex, json);\n partial.content[event.contentIndex].arguments =\n parseStreamingJson(json);\n break;\n }\n case \"toolcall_end\":\n Object.assign(partial.content[event.contentIndex], event.toolCall);\n toolJson.delete(event.contentIndex);\n return {\n type: \"toolcall_end\",\n contentIndex: event.contentIndex,\n toolCall: partial.content[event.contentIndex],\n partial,\n };\n }\n return { ...event, partial };\n };\n}\nasync function* readPiMessagesEvents(stream) {\n const decoder = new TextDecoder();\n const reader = stream.getReader();\n let buffer = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });\n buffer = buffer.replace(/\\r\\n/g, \"\\n\");\n let split = buffer.indexOf(\"\\n\\n\");\n while (split !== -1) {\n const event = parsePiMessagesEvent(buffer.slice(0, split));\n if (event) {\n yield event;\n }\n buffer = buffer.slice(split + 2);\n split = buffer.indexOf(\"\\n\\n\");\n }\n if (done) {\n break;\n }\n }\n if (buffer.trim()) {\n const event = parsePiMessagesEvent(buffer);\n if (event) {\n yield event;\n }\n }\n }\n finally {\n reader.releaseLock();\n }\n}\nfunction parsePiMessagesEvent(raw) {\n const data = raw\n .split(\"\\n\")\n .find((line) => line.startsWith(\"data:\"))\n ?.slice(5)\n .trim();\n return data && data !== \"[DONE]\" ? JSON.parse(data) : undefined;\n}\nfunction createErrorEvent(model, error, aborted) {\n const reason = aborted ? \"aborted\" : \"error\";\n const assistantMessage = {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: createEmptyUsage(),\n stopReason: reason,\n errorMessage: error instanceof Error ? error.message : String(error),\n timestamp: Date.now(),\n };\n if (!aborted && error instanceof PiMessagesResponseError) {\n appendAssistantMessageDiagnostic(assistantMessage, createAssistantMessageDiagnostic(\"pi_messages_response_failure\", error, error.diagnosticDetails));\n }\n return { type: \"error\", reason, error: assistantMessage };\n}\nfunction resolveCacheRetention(cacheRetention, env) {\n if (cacheRetention) {\n return cacheRetention;\n }\n // Backend defaults apply when unset; only the legacy env opt-in is mapped.\n return getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\" ? \"long\" : undefined;\n}\nexport const stream = (model, context, options) => {\n const eventStream = new AssistantMessageEventStream();\n const convertEvent = createEventConverter(model);\n void (async () => {\n try {\n const apiKey = options?.apiKey;\n if (!apiKey) {\n throw new Error(`No API key provided for provider \"${model.provider}\"`);\n }\n const url = new URL(`${model.baseUrl.replace(/\\/+$/u, \"\")}/messages`);\n if (options?.debug) {\n url.searchParams.set(\"debug\", \"1\");\n }\n let payload = {\n model: model.id,\n context,\n options: {\n temperature: options?.temperature,\n maxTokens: options?.maxTokens,\n reasoning: options?.reasoning,\n cacheRetention: resolveCacheRetention(options?.cacheRetention, options?.env),\n sessionId: options?.sessionId,\n toolChoice: options?.toolChoice,\n },\n };\n const nextPayload = await options?.onPayload?.(payload, model);\n if (nextPayload !== undefined) {\n payload = nextPayload;\n }\n const response = await (options?.fetch ?? globalThis.fetch)(url, {\n method: \"POST\",\n headers: {\n authorization: `Bearer ${apiKey}`,\n accept: \"text/event-stream\",\n \"content-type\": \"application/json\",\n ...providerHeadersToRecord(options?.headers),\n },\n body: JSON.stringify(payload),\n signal: options?.signal,\n });\n await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n if (!response.ok) {\n const body = await response.text();\n throw createPiMessagesResponseError(model, url, response, body);\n }\n if (!response.body) {\n throw new Error(`${model.provider} response has no body`);\n }\n for await (const piEvent of readPiMessagesEvents(response.body)) {\n const event = convertEvent(piEvent);\n eventStream.push(event);\n if (event.type === \"done\" || event.type === \"error\") {\n return;\n }\n }\n throw new Error(`${model.provider} stream ended without a terminal event`);\n }\n catch (error) {\n eventStream.push(createErrorEvent(model, error, options?.signal?.aborted ?? false));\n }\n })();\n return eventStream;\n};\nexport const streamSimple = (model, context, options) => {\n const extra = options;\n return stream(model, context, {\n ...options,\n reasoning: options?.reasoning,\n toolChoice: extra?.toolChoice,\n debug: extra?.debug,\n });\n};\n//# sourceMappingURL=pi-messages.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"pi-messages-B-7Xo_I0.mjs","names":[],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js"],"sourcesContent":["/**\n * pi-messages API implementation.\n *\n * Streams pi's own message protocol directly to a backend: the request is a\n * single POST of `{ model, context, options }` to `<baseUrl>/messages`, the\n * response is an SSE stream of serialized assistant-message events plus a\n * terminal `done`/`error` event. This is the wire protocol spoken by the\n * Radius gateway, but any backend implementing it can be used, e.g. via a\n * models.json custom provider with `\"api\": \"pi-messages\"`.\n */\nimport { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic } from \"../utils/diagnostics.js\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.js\";\nimport { headersToRecord, providerHeadersToRecord } from \"../utils/headers.js\";\nimport { parseStreamingJson } from \"../utils/json-parse.js\";\nimport { getProviderEnvValue } from \"../utils/provider-env.js\";\nexport class PiMessagesResponseError extends Error {\n code;\n diagnosticDetails;\n constructor(message, code, diagnosticDetails) {\n super(message);\n this.name = \"PiMessagesResponseError\";\n this.code = code;\n this.diagnosticDetails = diagnosticDetails;\n }\n}\nfunction parsePiMessagesErrorBody(body) {\n try {\n const parsed = JSON.parse(body);\n const error = parsed?.error;\n return parsed && typeof error === \"object\" && error !== null && !Array.isArray(error) ? parsed : undefined;\n }\n catch {\n return undefined;\n }\n}\nfunction truncateDiagnosticString(value) {\n const maxLength = 8192;\n return value.length > maxLength ? `${value.slice(0, maxLength)}…` : value;\n}\nfunction formatPiMessagesResponseError(response, body, errorBody) {\n const message = typeof errorBody?.error?.message === \"string\" ? errorBody.error.message : undefined;\n const code = typeof errorBody?.error?.code === \"string\" ? errorBody.error.code : undefined;\n const suffix = message ?? body;\n const codeSuffix = code ? ` (${code})` : \"\";\n return `${response.status} ${response.statusText}: ${suffix}${codeSuffix}`;\n}\nfunction createPiMessagesResponseError(model, url, response, body) {\n const errorBody = parsePiMessagesErrorBody(body);\n const code = typeof errorBody?.error?.code === \"string\" ? errorBody.error.code : undefined;\n return new PiMessagesResponseError(formatPiMessagesResponseError(response, body, errorBody), code, {\n version: 1,\n provider: model.provider,\n model: model.id,\n url: url.toString(),\n status: response.status,\n statusText: response.statusText,\n error: errorBody?.error,\n body: errorBody ? undefined : truncateDiagnosticString(body),\n timestampMs: Date.now(),\n });\n}\nfunction createEmptyUsage() {\n return {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n };\n}\nfunction appendRewriteDiagnostic(message, rewrite) {\n if (!rewrite) {\n return;\n }\n appendAssistantMessageDiagnostic(message, {\n type: \"pi_messages_rewrite\",\n timestamp: Date.now(),\n details: { ...rewrite },\n });\n}\nfunction createEventConverter(model) {\n const partial = {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: createEmptyUsage(),\n stopReason: \"pending\",\n timestamp: Date.now(),\n };\n const toolJson = new Map();\n return (event) => {\n switch (event.type) {\n case \"done\":\n Object.assign(partial, {\n stopReason: event.reason,\n usage: event.usage,\n responseId: event.responseId,\n });\n appendRewriteDiagnostic(partial, event.rewrite);\n return { type: \"done\", reason: event.reason, message: partial };\n case \"error\":\n Object.assign(partial, {\n stopReason: event.reason,\n usage: event.usage,\n errorMessage: event.errorMessage,\n responseId: event.responseId,\n });\n appendRewriteDiagnostic(partial, event.rewrite);\n return { type: \"error\", reason: event.reason, error: partial };\n case \"start\":\n break;\n case \"text_start\":\n partial.content[event.contentIndex] = { type: \"text\", text: \"\" };\n break;\n case \"text_delta\":\n partial.content[event.contentIndex].text += event.delta;\n break;\n case \"text_end\":\n Object.assign(partial.content[event.contentIndex], {\n text: event.content,\n textSignature: event.contentSignature,\n });\n break;\n case \"thinking_start\":\n partial.content[event.contentIndex] = { type: \"thinking\", thinking: \"\" };\n break;\n case \"thinking_delta\":\n partial.content[event.contentIndex].thinking += event.delta;\n break;\n case \"thinking_end\":\n Object.assign(partial.content[event.contentIndex], {\n thinking: event.content,\n thinkingSignature: event.contentSignature,\n redacted: event.redacted,\n });\n break;\n case \"toolcall_start\":\n partial.content[event.contentIndex] = {\n type: \"toolCall\",\n id: event.id,\n name: event.toolName,\n arguments: {},\n };\n toolJson.set(event.contentIndex, \"\");\n break;\n case \"toolcall_delta\": {\n const json = `${toolJson.get(event.contentIndex) ?? \"\"}${event.delta}`;\n toolJson.set(event.contentIndex, json);\n partial.content[event.contentIndex].arguments =\n parseStreamingJson(json);\n break;\n }\n case \"toolcall_end\":\n Object.assign(partial.content[event.contentIndex], event.toolCall);\n toolJson.delete(event.contentIndex);\n return {\n type: \"toolcall_end\",\n contentIndex: event.contentIndex,\n toolCall: partial.content[event.contentIndex],\n partial,\n };\n }\n return { ...event, partial };\n };\n}\nasync function* readPiMessagesEvents(stream) {\n const decoder = new TextDecoder();\n const reader = stream.getReader();\n let buffer = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });\n buffer = buffer.replace(/\\r\\n/g, \"\\n\");\n let split = buffer.indexOf(\"\\n\\n\");\n while (split !== -1) {\n const event = parsePiMessagesEvent(buffer.slice(0, split));\n if (event) {\n yield event;\n }\n buffer = buffer.slice(split + 2);\n split = buffer.indexOf(\"\\n\\n\");\n }\n if (done) {\n break;\n }\n }\n if (buffer.trim()) {\n const event = parsePiMessagesEvent(buffer);\n if (event) {\n yield event;\n }\n }\n }\n finally {\n reader.releaseLock();\n }\n}\nfunction parsePiMessagesEvent(raw) {\n const data = raw\n .split(\"\\n\")\n .find((line) => line.startsWith(\"data:\"))\n ?.slice(5)\n .trim();\n return data && data !== \"[DONE]\" ? JSON.parse(data) : undefined;\n}\nfunction createErrorEvent(model, error, aborted) {\n const reason = aborted ? \"aborted\" : \"error\";\n const assistantMessage = {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: createEmptyUsage(),\n stopReason: reason,\n errorMessage: error instanceof Error ? error.message : String(error),\n timestamp: Date.now(),\n };\n if (!aborted && error instanceof PiMessagesResponseError) {\n appendAssistantMessageDiagnostic(assistantMessage, createAssistantMessageDiagnostic(\"pi_messages_response_failure\", error, error.diagnosticDetails));\n }\n return { type: \"error\", reason, error: assistantMessage };\n}\nfunction resolveCacheRetention(cacheRetention, env) {\n if (cacheRetention) {\n return cacheRetention;\n }\n // Backend defaults apply when unset; only the legacy env opt-in is mapped.\n return getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\" ? \"long\" : undefined;\n}\nexport const stream = (model, context, options) => {\n const eventStream = new AssistantMessageEventStream();\n const convertEvent = createEventConverter(model);\n void (async () => {\n try {\n const apiKey = options?.apiKey;\n if (!apiKey) {\n throw new Error(`No API key provided for provider \"${model.provider}\"`);\n }\n const url = new URL(`${model.baseUrl.replace(/\\/+$/u, \"\")}/messages`);\n if (options?.debug) {\n url.searchParams.set(\"debug\", \"1\");\n }\n let payload = {\n model: model.id,\n context,\n options: {\n temperature: options?.temperature,\n maxTokens: options?.maxTokens,\n reasoning: options?.reasoning,\n cacheRetention: resolveCacheRetention(options?.cacheRetention, options?.env),\n sessionId: options?.sessionId,\n toolChoice: options?.toolChoice,\n },\n };\n const nextPayload = await options?.onPayload?.(payload, model);\n if (nextPayload !== undefined) {\n payload = nextPayload;\n }\n const response = await (options?.fetch ?? globalThis.fetch)(url, {\n method: \"POST\",\n headers: {\n authorization: `Bearer ${apiKey}`,\n accept: \"text/event-stream\",\n \"content-type\": \"application/json\",\n ...providerHeadersToRecord(options?.headers),\n },\n body: JSON.stringify(payload),\n signal: options?.signal,\n });\n await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n if (!response.ok) {\n const body = await response.text();\n throw createPiMessagesResponseError(model, url, response, body);\n }\n if (!response.body) {\n throw new Error(`${model.provider} response has no body`);\n }\n for await (const piEvent of readPiMessagesEvents(response.body)) {\n const event = convertEvent(piEvent);\n eventStream.push(event);\n if (event.type === \"done\" || event.type === \"error\") {\n return;\n }\n }\n throw new Error(`${model.provider} stream ended without a terminal event`);\n }\n catch (error) {\n eventStream.push(createErrorEvent(model, error, options?.signal?.aborted ?? false));\n }\n })();\n return eventStream;\n};\nexport const streamSimple = (model, context, options) => {\n const extra = options;\n return stream(model, context, {\n ...options,\n reasoning: options?.reasoning,\n toolChoice: extra?.toolChoice,\n debug: extra?.debug,\n });\n};\n//# sourceMappingURL=pi-messages.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+
2
+ //#region src/compat/vendor/pi-types.d.ts
3
+ interface TextContent {
4
+ type: 'text';
5
+ text: string;
6
+ [key: string]: unknown;
7
+ }
8
+ interface ImageContent {
9
+ type: 'image';
10
+ data: string;
11
+ mimeType: string;
12
+ [key: string]: unknown;
13
+ }
14
+ interface ThinkingContent {
15
+ type: 'thinking';
16
+ thinking: string;
17
+ [key: string]: unknown;
18
+ }
19
+ interface ToolCallContent {
20
+ type: 'toolCall';
21
+ id: string;
22
+ name: string;
23
+ arguments: unknown;
24
+ [key: string]: unknown;
25
+ }
26
+ interface Usage {
27
+ input?: number;
28
+ output?: number;
29
+ cacheRead?: number;
30
+ cacheWrite?: number;
31
+ [key: string]: unknown;
32
+ }
33
+ interface UserMessage {
34
+ role: 'user';
35
+ content: string | (TextContent | ImageContent)[];
36
+ timestamp?: number;
37
+ [key: string]: unknown;
38
+ }
39
+ interface AssistantMessage {
40
+ role: 'assistant';
41
+ content: (TextContent | ThinkingContent | ToolCallContent)[];
42
+ usage?: Usage;
43
+ timestamp?: number;
44
+ [key: string]: unknown;
45
+ }
46
+ interface ToolResultMessage {
47
+ role: 'toolResult';
48
+ toolCallId?: string;
49
+ content: (TextContent | ImageContent)[];
50
+ isError?: boolean;
51
+ timestamp?: number;
52
+ [key: string]: unknown;
53
+ }
54
+ type Message = UserMessage | AssistantMessage | ToolResultMessage;
55
+ type AgentMessage = Message | {
56
+ role: string;
57
+ timestamp?: number;
58
+ [key: string]: unknown;
59
+ };
60
+ //#endregion
61
+ export { TextContent as a, ToolResultMessage as c, Message as i, Usage as l, AssistantMessage as n, ThinkingContent as o, ImageContent as r, ToolCallContent as s, AgentMessage as t, UserMessage as u };
62
+ //# sourceMappingURL=pi-types-KazmR2O5.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-types-KazmR2O5.d.mts","names":[],"sources":["../src/compat/vendor/pi-types.ts"],"mappings":";;UAMiB;EACf;EACA;GACC;;UAGc;EACf;EACA;EACA;GACC;;UAGc;EACf;EACA;GACC;;UAGc;EACf;EACA;EACA;EACA;GACC;;UAGc;EACf;EACA;EACA;EACA;GACC;;UAGc;EACf;EACA,mBAAmB,cAAc;EACjC;GACC;;UAGc;EACf;EACA,UAAU,cAAc,kBAAkB;EAC1C,QAAQ;EACR;GACC;;UAGc;EACf;EACA;EACA,UAAU,cAAc;EACxB;EACA;GACC;;KAGS,UAAU,cAAc,mBAAmB;KAM3C,eAAe;EAAY;EAAc;GAAqB"}
@@ -0,0 +1,47 @@
1
+
2
+ //#region src/compat/vendor/pi-uuid.ts
3
+ let lastTimestamp = -Infinity;
4
+ let sequence = 0;
5
+ function fillRandomBytes(bytes) {
6
+ if (globalThis.crypto?.getRandomValues) {
7
+ globalThis.crypto.getRandomValues(bytes);
8
+ return;
9
+ }
10
+ for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
11
+ }
12
+ /** Generate a time-ordered UUIDv7. */
13
+ function uuidv7() {
14
+ const random = /* @__PURE__ */ new Uint8Array(16);
15
+ fillRandomBytes(random);
16
+ const timestamp = Date.now();
17
+ if (timestamp > lastTimestamp) {
18
+ sequence = random[6] * 16777216 + random[7] * 65536 + random[8] * 256 + random[9];
19
+ lastTimestamp = timestamp;
20
+ } else {
21
+ sequence = sequence + 1 >>> 0;
22
+ if (sequence === 0) lastTimestamp++;
23
+ }
24
+ const bytes = /* @__PURE__ */ new Uint8Array(16);
25
+ bytes[0] = lastTimestamp / 1099511627776 & 255;
26
+ bytes[1] = lastTimestamp / 4294967296 & 255;
27
+ bytes[2] = lastTimestamp / 16777216 & 255;
28
+ bytes[3] = lastTimestamp / 65536 & 255;
29
+ bytes[4] = lastTimestamp / 256 & 255;
30
+ bytes[5] = lastTimestamp & 255;
31
+ bytes[6] = 112 | sequence >>> 28 & 15;
32
+ bytes[7] = sequence >>> 20 & 255;
33
+ bytes[8] = 128 | sequence >>> 14 & 63;
34
+ bytes[9] = sequence >>> 6 & 255;
35
+ bytes[10] = (sequence & 63) << 2 | random[10] & 3;
36
+ bytes[11] = random[11];
37
+ bytes[12] = random[12];
38
+ bytes[13] = random[13];
39
+ bytes[14] = random[14];
40
+ bytes[15] = random[15];
41
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
42
+ return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10, 16).join("")}`;
43
+ }
44
+ //#endregion
45
+ export { uuidv7 as t };
46
+
47
+ //# sourceMappingURL=pi-uuid-Db8ShZsK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-uuid-Db8ShZsK.mjs","names":[],"sources":["../src/compat/vendor/pi-uuid.ts"],"sourcesContent":["// @ts-nocheck — vendored Pi source; checked upstream under Pi's own tsconfig.\nlet lastTimestamp = -Infinity;\nlet sequence = 0;\n\nfunction fillRandomBytes(bytes: Uint8Array<ArrayBuffer>): void {\n\tif (globalThis.crypto?.getRandomValues) {\n\t\tglobalThis.crypto.getRandomValues(bytes);\n\t\treturn;\n\t}\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbytes[i] = Math.floor(Math.random() * 256);\n\t}\n}\n\n/** Generate a time-ordered UUIDv7. */\nexport function uuidv7(): string {\n\tconst random = new Uint8Array(16);\n\tfillRandomBytes(random);\n\tconst timestamp = Date.now();\n\n\tif (timestamp > lastTimestamp) {\n\t\tsequence = random[6] * 0x1000000 + random[7] * 0x10000 + random[8] * 0x100 + random[9];\n\t\tlastTimestamp = timestamp;\n\t} else {\n\t\tsequence = (sequence + 1) >>> 0;\n\t\tif (sequence === 0) lastTimestamp++;\n\t}\n\n\tconst bytes = new Uint8Array(16);\n\tbytes[0] = (lastTimestamp / 0x10000000000) & 0xff;\n\tbytes[1] = (lastTimestamp / 0x100000000) & 0xff;\n\tbytes[2] = (lastTimestamp / 0x1000000) & 0xff;\n\tbytes[3] = (lastTimestamp / 0x10000) & 0xff;\n\tbytes[4] = (lastTimestamp / 0x100) & 0xff;\n\tbytes[5] = lastTimestamp & 0xff;\n\tbytes[6] = 0x70 | ((sequence >>> 28) & 0x0f);\n\tbytes[7] = (sequence >>> 20) & 0xff;\n\tbytes[8] = 0x80 | ((sequence >>> 14) & 0x3f);\n\tbytes[9] = (sequence >>> 6) & 0xff;\n\tbytes[10] = ((sequence & 0x3f) << 2) | (random[10] & 0x03);\n\tbytes[11] = random[11];\n\tbytes[12] = random[12];\n\tbytes[13] = random[13];\n\tbytes[14] = random[14];\n\tbytes[15] = random[15];\n\n\tconst hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\"));\n\treturn `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10, 16).join(\"\")}`;\n}\n"],"mappings":";;AACA,IAAI,gBAAgB;AACpB,IAAI,WAAW;AAEf,SAAS,gBAAgB,OAAsC;CAC9D,IAAI,WAAW,QAAQ,iBAAiB;EACvC,WAAW,OAAO,gBAAgB,KAAK;EACvC;CACD;CACA,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KACjC,MAAM,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG;AAE3C;;AAGA,SAAgB,SAAiB;CAChC,MAAM,yBAAS,IAAI,WAAW,EAAE;CAChC,gBAAgB,MAAM;CACtB,MAAM,YAAY,KAAK,IAAI;CAE3B,IAAI,YAAY,eAAe;EAC9B,WAAW,OAAO,KAAK,WAAY,OAAO,KAAK,QAAU,OAAO,KAAK,MAAQ,OAAO;EACpF,gBAAgB;CACjB,OAAO;EACN,WAAY,WAAW,MAAO;EAC9B,IAAI,aAAa,GAAG;CACrB;CAEA,MAAM,wBAAQ,IAAI,WAAW,EAAE;CAC/B,MAAM,KAAM,gBAAgB,gBAAiB;CAC7C,MAAM,KAAM,gBAAgB,aAAe;CAC3C,MAAM,KAAM,gBAAgB,WAAa;CACzC,MAAM,KAAM,gBAAgB,QAAW;CACvC,MAAM,KAAM,gBAAgB,MAAS;CACrC,MAAM,KAAK,gBAAgB;CAC3B,MAAM,KAAK,MAAS,aAAa,KAAM;CACvC,MAAM,KAAM,aAAa,KAAM;CAC/B,MAAM,KAAK,MAAS,aAAa,KAAM;CACvC,MAAM,KAAM,aAAa,IAAK;CAC9B,MAAM,OAAQ,WAAW,OAAS,IAAM,OAAO,MAAM;CACrD,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,OAAO;CAEnB,MAAM,MAAM,MAAM,KAAK,QAAQ,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;CAC1E,OAAO,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;AACrJ"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { i as __require } from "./rolldown-runtime-CTfmNlz1.mjs";
2
+ import { G as __require } from "./pi-ai-B_88Wb0r.mjs";
3
3
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/provider-env.js
4
4
  let procEnvCache = null;
5
5
  /**
@@ -37,4 +37,4 @@ function getProviderEnvValue(name, env) {
37
37
  //#endregion
38
38
  export { getProviderEnvValue as t };
39
39
 
40
- //# sourceMappingURL=provider-env-C72pF4vP.mjs.map
40
+ //# sourceMappingURL=provider-env-D-cCRWzv.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-env-C72pF4vP.mjs","names":[],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/provider-env.js"],"sourcesContent":["let procEnvCache = null;\n/**\n * Fallback for https://github.com/oven-sh/bun/issues/27802.\n * Bun compiled binaries can expose an empty process.env inside Linux sandboxes\n * even though /proc/self/environ contains the environment.\n *\n * This intentionally duplicates restoreSandboxEnv() in\n * packages/coding-agent/src/bun/restore-sandbox-env.ts. The ai package can be\n * used directly, without going through that entrypoint, so provider env lookup\n * must not depend on process.env having been patched.\n */\nfunction getBunSandboxEnvValue(name) {\n if (typeof process === \"undefined\" || !process.versions?.bun || Object.keys(process.env).length > 0) {\n return undefined;\n }\n if (procEnvCache === null) {\n procEnvCache = new Map();\n try {\n const { readFileSync } = require(\"node:fs\");\n const data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n for (const entry of data.split(\"\\0\")) {\n const idx = entry.indexOf(\"=\");\n if (idx > 0) {\n procEnvCache.set(entry.slice(0, idx), entry.slice(idx + 1));\n }\n }\n }\n catch {\n // /proc/self/environ may not exist or may not be readable.\n }\n }\n return procEnvCache.get(name);\n}\n/**\n * Resolve a provider env value from scoped overrides, normal process.env, then\n * the duplicated Bun sandbox fallback for direct pi-ai consumers.\n */\nexport function getProviderEnvValue(name, env) {\n return (env?.[name] ||\n (typeof process !== \"undefined\" ? process.env[name] : undefined) ||\n getBunSandboxEnvValue(name) ||\n undefined);\n}\n//# sourceMappingURL=provider-env.js.map"],"x_google_ignoreList":[0],"mappings":";;;AAAA,IAAI,eAAe;;;;;;;;;;;AAWnB,SAAS,sBAAsB,MAAM;CACjC,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAU,OAAO,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,SAAS,GAC9F;CAEJ,IAAI,iBAAiB,MAAM;EACvB,+BAAe,IAAI,IAAI;EACvB,IAAI;GACA,MAAM,EAAE,iBAAA,UAAyB,SAAS;GAC1C,MAAM,OAAO,aAAa,sBAAsB,OAAO;GACvD,KAAK,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;IAClC,MAAM,MAAM,MAAM,QAAQ,GAAG;IAC7B,IAAI,MAAM,GACN,aAAa,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC;GAElE;EACJ,QACM,CAEN;CACJ;CACA,OAAO,aAAa,IAAI,IAAI;AAChC;;;;;AAKA,SAAgB,oBAAoB,MAAM,KAAK;CAC3C,OAAQ,MAAM,UACT,OAAO,YAAY,cAAc,QAAQ,IAAI,QAAQ,KAAA,MACtD,sBAAsB,IAAI,KAC1B,KAAA;AACR"}
1
+ {"version":3,"file":"provider-env-D-cCRWzv.mjs","names":[],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/provider-env.js"],"sourcesContent":["let procEnvCache = null;\n/**\n * Fallback for https://github.com/oven-sh/bun/issues/27802.\n * Bun compiled binaries can expose an empty process.env inside Linux sandboxes\n * even though /proc/self/environ contains the environment.\n *\n * This intentionally duplicates restoreSandboxEnv() in\n * packages/coding-agent/src/bun/restore-sandbox-env.ts. The ai package can be\n * used directly, without going through that entrypoint, so provider env lookup\n * must not depend on process.env having been patched.\n */\nfunction getBunSandboxEnvValue(name) {\n if (typeof process === \"undefined\" || !process.versions?.bun || Object.keys(process.env).length > 0) {\n return undefined;\n }\n if (procEnvCache === null) {\n procEnvCache = new Map();\n try {\n const { readFileSync } = require(\"node:fs\");\n const data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n for (const entry of data.split(\"\\0\")) {\n const idx = entry.indexOf(\"=\");\n if (idx > 0) {\n procEnvCache.set(entry.slice(0, idx), entry.slice(idx + 1));\n }\n }\n }\n catch {\n // /proc/self/environ may not exist or may not be readable.\n }\n }\n return procEnvCache.get(name);\n}\n/**\n * Resolve a provider env value from scoped overrides, normal process.env, then\n * the duplicated Bun sandbox fallback for direct pi-ai consumers.\n */\nexport function getProviderEnvValue(name, env) {\n return (env?.[name] ||\n (typeof process !== \"undefined\" ? process.env[name] : undefined) ||\n getBunSandboxEnvValue(name) ||\n undefined);\n}\n//# sourceMappingURL=provider-env.js.map"],"x_google_ignoreList":[0],"mappings":";;;AAAA,IAAI,eAAe;;;;;;;;;;;AAWnB,SAAS,sBAAsB,MAAM;CACjC,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAU,OAAO,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,SAAS,GAC9F;CAEJ,IAAI,iBAAiB,MAAM;EACvB,+BAAe,IAAI,IAAI;EACvB,IAAI;GACA,MAAM,EAAE,iBAAA,UAAyB,SAAS;GAC1C,MAAM,OAAO,aAAa,sBAAsB,OAAO;GACvD,KAAK,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;IAClC,MAAM,MAAM,MAAM,QAAQ,GAAG;IAC7B,IAAI,MAAM,GACN,aAAa,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC;GAElE;EACJ,QACM,CAEN;CACJ;CACA,OAAO,aAAa,IAAI,IAAI;AAChC;;;;;AAKA,SAAgB,oBAAoB,MAAM,KAAK;CAC3C,OAAQ,MAAM,UACT,OAAO,YAAY,cAAc,QAAQ,IAAI,QAAQ,KAAA,MACtD,sBAAsB,IAAI,KAC1B,KAAA;AACR"}