pi2dsh 0.7.0 → 0.9.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 (100) hide show
  1. package/README.md +5 -2
  2. package/README.zh.md +4 -2
  3. package/dist/analyzer-C86ba-27.mjs +626 -0
  4. package/dist/analyzer-C86ba-27.mjs.map +1 -0
  5. package/dist/cli.mjs +3 -1
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/compat/pi-ai.d.mts +1 -11
  8. package/dist/compat/pi-ai.d.mts.map +1 -1
  9. package/dist/compat/pi-ai.mjs +2 -2
  10. package/dist/credentials-oauth.mjs +1 -1
  11. package/dist/generator-C0jNM-yu.mjs +298 -0
  12. package/dist/generator-C0jNM-yu.mjs.map +1 -0
  13. package/dist/host.d.mts +2 -0
  14. package/dist/host.d.mts.map +1 -1
  15. package/dist/host.mjs +2 -1
  16. package/dist/host.mjs.map +1 -1
  17. package/dist/index.d.mts +29 -10
  18. package/dist/index.d.mts.map +1 -1
  19. package/dist/index.mjs +27 -4
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/mcp-config-Dlou-ZA-.mjs +707 -0
  22. package/dist/mcp-config-Dlou-ZA-.mjs.map +1 -0
  23. package/dist/{pi-ai-B4hucafU.mjs → pi-ai-BA3h0Dwv.mjs} +2 -84
  24. package/dist/pi-ai-BA3h0Dwv.mjs.map +1 -0
  25. package/dist/{runtime-k3IlCgjQ.mjs → runtime-DMEJknhK.mjs} +115 -960
  26. package/dist/runtime-DMEJknhK.mjs.map +1 -0
  27. package/dist/runtime.d.mts +19 -6
  28. package/dist/runtime.d.mts.map +1 -1
  29. package/dist/runtime.mjs +2 -2
  30. package/package.json +6 -3
  31. package/dist/all-BChhwMVE.mjs +0 -28512
  32. package/dist/all-BChhwMVE.mjs.map +0 -1
  33. package/dist/anthropic-messages-Dlw4T0S4.mjs +0 -6438
  34. package/dist/anthropic-messages-Dlw4T0S4.mjs.map +0 -1
  35. package/dist/azure-openai-responses-vGUNukZ7.mjs +0 -209
  36. package/dist/azure-openai-responses-vGUNukZ7.mjs.map +0 -1
  37. package/dist/deferred-tools-BD4g5QUx.mjs +0 -32
  38. package/dist/deferred-tools-BD4g5QUx.mjs.map +0 -1
  39. package/dist/diagnostics-CJye1UFh.mjs +0 -99
  40. package/dist/diagnostics-CJye1UFh.mjs.map +0 -1
  41. package/dist/dist-DY2GeEQ6.mjs +0 -1089
  42. package/dist/dist-DY2GeEQ6.mjs.map +0 -1
  43. package/dist/dist-DYfTHu0C.mjs +0 -1246
  44. package/dist/dist-DYfTHu0C.mjs.map +0 -1
  45. package/dist/error-body-DKA3lknR.mjs +0 -104
  46. package/dist/error-body-DKA3lknR.mjs.map +0 -1
  47. package/dist/github-copilot-headers-CZo2QHrt.mjs +0 -25
  48. package/dist/github-copilot-headers-CZo2QHrt.mjs.map +0 -1
  49. package/dist/google-generative-ai-C30gRjRi.mjs +0 -358
  50. package/dist/google-generative-ai-C30gRjRi.mjs.map +0 -1
  51. package/dist/google-shared-W8g3Esep.mjs +0 -29042
  52. package/dist/google-shared-W8g3Esep.mjs.map +0 -1
  53. package/dist/google-vertex--O_gyVYA.mjs +0 -402
  54. package/dist/google-vertex--O_gyVYA.mjs.map +0 -1
  55. package/dist/hash-Dbggamac.mjs +0 -19
  56. package/dist/hash-Dbggamac.mjs.map +0 -1
  57. package/dist/headers-CPzZhJQn.mjs +0 -17
  58. package/dist/headers-CPzZhJQn.mjs.map +0 -1
  59. package/dist/images-models-DJtHo9Rp.mjs +0 -1068
  60. package/dist/images-models-DJtHo9Rp.mjs.map +0 -1
  61. package/dist/json-parse-C-vG4_qc.mjs +0 -384
  62. package/dist/json-parse-C-vG4_qc.mjs.map +0 -1
  63. package/dist/mcp-config-Cful6uUS.mjs +0 -1618
  64. package/dist/mcp-config-Cful6uUS.mjs.map +0 -1
  65. package/dist/mistral-conversations-LSDG9sjq.mjs +0 -42007
  66. package/dist/mistral-conversations-LSDG9sjq.mjs.map +0 -1
  67. package/dist/multipart-parser-CoM3rwav.mjs +0 -301
  68. package/dist/multipart-parser-CoM3rwav.mjs.map +0 -1
  69. package/dist/openai-codex-responses-JxII_OUX.mjs +0 -1169
  70. package/dist/openai-codex-responses-JxII_OUX.mjs.map +0 -1
  71. package/dist/openai-completions-Dp-VwLzJ.mjs +0 -947
  72. package/dist/openai-completions-Dp-VwLzJ.mjs.map +0 -1
  73. package/dist/openai-completions-lite-BrM7gJzs.mjs +0 -316
  74. package/dist/openai-completions-lite-BrM7gJzs.mjs.map +0 -1
  75. package/dist/openai-prompt-cache-BDWtZRKh.mjs +0 -11
  76. package/dist/openai-prompt-cache-BDWtZRKh.mjs.map +0 -1
  77. package/dist/openai-responses-CWmNks8K.mjs +0 -247
  78. package/dist/openai-responses-CWmNks8K.mjs.map +0 -1
  79. package/dist/openai-responses-shared-CYgIDTf3.mjs +0 -572
  80. package/dist/openai-responses-shared-CYgIDTf3.mjs.map +0 -1
  81. package/dist/openrouter-images-DfAULV7l.mjs +0 -127
  82. package/dist/openrouter-images-DfAULV7l.mjs.map +0 -1
  83. package/dist/otel-Boafyju5.mjs +0 -24935
  84. package/dist/otel-Boafyju5.mjs.map +0 -1
  85. package/dist/pi-ai-B4hucafU.mjs.map +0 -1
  86. package/dist/pi-messages-HzGtvc5_.mjs +0 -306
  87. package/dist/pi-messages-HzGtvc5_.mjs.map +0 -1
  88. package/dist/provider-env-C9gOBFJi.mjs +0 -40
  89. package/dist/provider-env-C9gOBFJi.mjs.map +0 -1
  90. package/dist/provider-retry-Cw6YJ4cr.mjs +0 -80
  91. package/dist/provider-retry-Cw6YJ4cr.mjs.map +0 -1
  92. package/dist/runtime-k3IlCgjQ.mjs.map +0 -1
  93. package/dist/sanitize-unicode-wLA11KvZ.mjs +0 -29
  94. package/dist/sanitize-unicode-wLA11KvZ.mjs.map +0 -1
  95. package/dist/src-D0GRWCE8.mjs +0 -5031
  96. package/dist/src-D0GRWCE8.mjs.map +0 -1
  97. package/dist/transform-messages-DGq9mvhA.mjs +0 -379
  98. package/dist/transform-messages-DGq9mvhA.mjs.map +0 -1
  99. package/dist/uuid-DtFT7tOE.mjs +0 -65
  100. package/dist/uuid-DtFT7tOE.mjs.map +0 -1
@@ -1,127 +0,0 @@
1
-
2
- import { n as providerHeadersToRecord, t as headersToRecord } from "./headers-CPzZhJQn.mjs";
3
- import { t as retryProviderRequest } from "./provider-retry-Cw6YJ4cr.mjs";
4
- import { t as sanitizeSurrogates } from "./sanitize-unicode-wLA11KvZ.mjs";
5
- import { n as normalizeProviderError, t as formatProviderError } from "./error-body-DKA3lknR.mjs";
6
- import OpenAI from "openai";
7
- //#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/openrouter-images.js
8
- const generateImages = async (model, context, options) => {
9
- const output = {
10
- api: model.api,
11
- provider: model.provider,
12
- model: model.id,
13
- output: [],
14
- stopReason: "stop",
15
- timestamp: Date.now()
16
- };
17
- try {
18
- const apiKey = options?.apiKey;
19
- if (!apiKey) throw new Error(`No API key for provider: ${model.provider}`);
20
- const client = createClient(model, apiKey, options?.headers, options?.fetch);
21
- let params = buildParams(model, context);
22
- const nextParams = await options?.onPayload?.(params, model);
23
- if (nextParams !== void 0) params = nextParams;
24
- const requestOptions = {
25
- ...options?.signal ? { signal: options.signal } : {},
26
- ...options?.timeoutMs !== void 0 ? { timeout: options.timeoutMs } : {},
27
- maxRetries: 0
28
- };
29
- const { data: response, response: rawResponse } = await retryProviderRequest(() => client.chat.completions.create(params, requestOptions).withResponse(), {
30
- maxRetries: options?.maxRetries,
31
- maxRetryDelayMs: options?.maxRetryDelayMs,
32
- signal: options?.signal
33
- });
34
- await options?.onResponse?.({
35
- status: rawResponse.status,
36
- headers: headersToRecord(rawResponse.headers)
37
- }, model);
38
- const imageResponse = response;
39
- output.responseId = imageResponse.id;
40
- if (imageResponse.usage) output.usage = parseUsage(imageResponse.usage, model);
41
- const choice = imageResponse.choices[0];
42
- if (choice) {
43
- const content = choice.message.content;
44
- if (typeof content === "string" && content.length > 0) output.output.push({
45
- type: "text",
46
- text: content
47
- });
48
- for (const image of choice.message.images ?? []) {
49
- const imageUrl = typeof image.image_url === "string" ? image.image_url : image.image_url?.url;
50
- if (!imageUrl?.startsWith("data:")) continue;
51
- const matches = imageUrl.match(/^data:([^;]+);base64,(.+)$/);
52
- if (!matches) continue;
53
- output.output.push({
54
- type: "image",
55
- mimeType: matches[1],
56
- data: matches[2]
57
- });
58
- }
59
- }
60
- return output;
61
- } catch (error) {
62
- output.stopReason = options?.signal?.aborted ? "aborted" : "error";
63
- output.errorMessage = formatProviderError(normalizeProviderError(error));
64
- return output;
65
- }
66
- };
67
- function createClient(model, apiKey, optionsHeaders, fetch) {
68
- return new OpenAI({
69
- apiKey,
70
- baseURL: model.baseUrl,
71
- dangerouslyAllowBrowser: true,
72
- fetch,
73
- defaultHeaders: providerHeadersToRecord({
74
- ...model.headers,
75
- ...optionsHeaders
76
- })
77
- });
78
- }
79
- function buildParams(model, context) {
80
- const content = context.input.map((item) => {
81
- if (item.type === "text") return {
82
- type: "text",
83
- text: sanitizeSurrogates(item.text)
84
- };
85
- return {
86
- type: "image_url",
87
- image_url: { url: `data:${item.mimeType};base64,${item.data}` }
88
- };
89
- });
90
- return {
91
- model: model.id,
92
- messages: [{
93
- role: "user",
94
- content
95
- }],
96
- stream: false,
97
- modalities: model.output.includes("text") ? ["image", "text"] : ["image"]
98
- };
99
- }
100
- function parseUsage(rawUsage, model) {
101
- const promptTokens = rawUsage.prompt_tokens || 0;
102
- const reportedCachedTokens = rawUsage.prompt_tokens_details?.cached_tokens || 0;
103
- const cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;
104
- const cacheReadTokens = cacheWriteTokens > 0 ? Math.max(0, reportedCachedTokens - cacheWriteTokens) : reportedCachedTokens;
105
- const input = Math.max(0, promptTokens - cacheReadTokens - cacheWriteTokens);
106
- const output = rawUsage.completion_tokens || 0;
107
- const usage = {
108
- input,
109
- output,
110
- cacheRead: cacheReadTokens,
111
- cacheWrite: cacheWriteTokens,
112
- totalTokens: input + output + cacheReadTokens + cacheWriteTokens,
113
- cost: {
114
- input: model.cost.input / 1e6 * input,
115
- output: model.cost.output / 1e6 * output,
116
- cacheRead: model.cost.cacheRead / 1e6 * cacheReadTokens,
117
- cacheWrite: model.cost.cacheWrite / 1e6 * cacheWriteTokens,
118
- total: 0
119
- }
120
- };
121
- usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
122
- return usage;
123
- }
124
- //#endregion
125
- export { generateImages };
126
-
127
- //# sourceMappingURL=openrouter-images-DfAULV7l.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openrouter-images-DfAULV7l.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/openrouter-images.js"],"sourcesContent":["import OpenAI from \"openai\";\nimport { formatProviderError, normalizeProviderError } from \"../utils/error-body.js\";\nimport { headersToRecord, providerHeadersToRecord } from \"../utils/headers.js\";\nimport { retryProviderRequest } from \"../utils/provider-retry.js\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.js\";\nexport const generateImages = async (model, context, options) => {\n const output = {\n api: model.api,\n provider: model.provider,\n model: model.id,\n output: [],\n stopReason: \"stop\",\n timestamp: Date.now(),\n };\n try {\n const apiKey = options?.apiKey;\n if (!apiKey) {\n throw new Error(`No API key for provider: ${model.provider}`);\n }\n const client = createClient(model, apiKey, options?.headers, options?.fetch);\n let params = buildParams(model, context);\n const nextParams = await options?.onPayload?.(params, model);\n if (nextParams !== undefined) {\n params = nextParams;\n }\n const requestOptions = {\n ...(options?.signal ? { signal: options.signal } : {}),\n ...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n maxRetries: 0,\n };\n const { data: response, response: rawResponse } = await retryProviderRequest(() => client.chat.completions\n .create(params, requestOptions)\n .withResponse(), {\n maxRetries: options?.maxRetries,\n maxRetryDelayMs: options?.maxRetryDelayMs,\n signal: options?.signal,\n });\n await options?.onResponse?.({ status: rawResponse.status, headers: headersToRecord(rawResponse.headers) }, model);\n const imageResponse = response;\n output.responseId = imageResponse.id;\n if (imageResponse.usage) {\n output.usage = parseUsage(imageResponse.usage, model);\n }\n const choice = imageResponse.choices[0];\n if (choice) {\n const content = choice.message.content;\n if (typeof content === \"string\" && content.length > 0) {\n output.output.push({ type: \"text\", text: content });\n }\n for (const image of choice.message.images ?? []) {\n const imageUrl = typeof image.image_url === \"string\" ? image.image_url : image.image_url?.url;\n if (!imageUrl?.startsWith(\"data:\"))\n continue;\n const matches = imageUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!matches)\n continue;\n output.output.push({\n type: \"image\",\n mimeType: matches[1],\n data: matches[2],\n });\n }\n }\n return output;\n }\n catch (error) {\n output.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n output.errorMessage = formatProviderError(normalizeProviderError(error));\n return output;\n }\n};\nfunction createClient(model, apiKey, optionsHeaders, fetch) {\n return new OpenAI({\n apiKey,\n baseURL: model.baseUrl,\n dangerouslyAllowBrowser: true,\n fetch,\n defaultHeaders: providerHeadersToRecord({ ...model.headers, ...optionsHeaders }),\n });\n}\nfunction buildParams(model, context) {\n const content = context.input.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: sanitizeSurrogates(item.text),\n };\n }\n return {\n type: \"image_url\",\n image_url: {\n url: `data:${item.mimeType};base64,${item.data}`,\n },\n };\n });\n return {\n model: model.id,\n messages: [\n {\n role: \"user\",\n content,\n },\n ],\n stream: false,\n modalities: model.output.includes(\"text\") ? [\"image\", \"text\"] : [\"image\"],\n };\n}\nfunction parseUsage(rawUsage, model) {\n const promptTokens = rawUsage.prompt_tokens || 0;\n const reportedCachedTokens = rawUsage.prompt_tokens_details?.cached_tokens || 0;\n const cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;\n const cacheReadTokens = cacheWriteTokens > 0 ? Math.max(0, reportedCachedTokens - cacheWriteTokens) : reportedCachedTokens;\n const input = Math.max(0, promptTokens - cacheReadTokens - cacheWriteTokens);\n const output = rawUsage.completion_tokens || 0;\n const usage = {\n input,\n output,\n cacheRead: cacheReadTokens,\n cacheWrite: cacheWriteTokens,\n totalTokens: input + output + cacheReadTokens + cacheWriteTokens,\n cost: {\n input: (model.cost.input / 1000000) * input,\n output: (model.cost.output / 1000000) * output,\n cacheRead: (model.cost.cacheRead / 1000000) * cacheReadTokens,\n cacheWrite: (model.cost.cacheWrite / 1000000) * cacheWriteTokens,\n total: 0,\n },\n };\n usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n return usage;\n}\n//# sourceMappingURL=openrouter-images.js.map"],"x_google_ignoreList":[0],"mappings":"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"}