@code-yeongyu/senpi-ai 2026.7.28 → 2026.7.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/openai-client-auth.d.ts +7 -0
- package/dist/api/openai-client-auth.d.ts.map +1 -0
- package/dist/api/openai-client-auth.js +15 -0
- package/dist/api/openai-client-auth.js.map +1 -0
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +4 -20
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +9 -22
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/auth/headers.d.ts +5 -0
- package/dist/auth/headers.d.ts.map +1 -0
- package/dist/auth/headers.js +41 -0
- package/dist/auth/headers.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/tool-call-middleware/context-transformer.d.ts.map +1 -1
- package/dist/tool-call-middleware/context-transformer.js +9 -0
- package/dist/tool-call-middleware/context-transformer.js.map +1 -1
- package/dist/tool-call-middleware/index.d.ts +5 -0
- package/dist/tool-call-middleware/index.d.ts.map +1 -1
- package/dist/tool-call-middleware/index.js +12 -2
- package/dist/tool-call-middleware/index.js.map +1 -1
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.d.ts +5 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.js +54 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/format.js.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.d.ts +4 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.js +4 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/index.js.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.d.ts +10 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.js +30 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/markers.js.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.d.ts +12 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.js +95 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.d.ts +5 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.js +207 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.js.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.d.ts +4 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.d.ts.map +1 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.js +181 -0
- package/dist/tool-call-middleware/protocols/kimi-xtml/stream.js.map +1 -0
- package/dist/tool-call-middleware/recovery-stream-wrapper.d.ts +2 -1
- package/dist/tool-call-middleware/recovery-stream-wrapper.d.ts.map +1 -1
- package/dist/tool-call-middleware/recovery-stream-wrapper.js +3 -2
- package/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -1
- package/dist/tool-call-middleware/recovery-text-projection.d.ts +2 -1
- package/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -1
- package/dist/tool-call-middleware/recovery-text-projection.js +2 -2
- package/dist/tool-call-middleware/recovery-text-projection.js.map +1 -1
- package/dist/tool-call-middleware/types.d.ts +2 -1
- package/dist/tool-call-middleware/types.d.ts.map +1 -1
- package/dist/tool-call-middleware/types.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/retry.d.ts +7 -0
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +29 -0
- package/dist/utils/retry.js.map +1 -1
- package/package.json +14 -14
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProviderHeaders } from "../types.ts";
|
|
2
|
+
export interface OpenAIClientAuth {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
headers?: ProviderHeaders;
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveOpenAIClientAuth(provider: string, apiKey: string | undefined, headers: ProviderHeaders | undefined): OpenAIClientAuth;
|
|
7
|
+
//# sourceMappingURL=openai-client-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-client-auth.d.ts","sourceRoot":"","sources":["../../src/api/openai-client-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,eAAe,GAAG,SAAS,GAClC,gBAAgB,CAUlB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { hasCredentialHeaders, hasHeader } from "../auth/headers.js";
|
|
2
|
+
export function resolveOpenAIClientAuth(provider, apiKey, headers) {
|
|
3
|
+
if (apiKey)
|
|
4
|
+
return { apiKey, headers };
|
|
5
|
+
if (!hasCredentialHeaders(headers))
|
|
6
|
+
throw new Error(`No API key for provider: ${provider}`);
|
|
7
|
+
if (hasHeader(headers, "authorization") || hasHeader(headers, "cf-aig-authorization")) {
|
|
8
|
+
return { apiKey: "unused", headers };
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
apiKey: "unused",
|
|
12
|
+
headers: { Authorization: null, ...headers },
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=openai-client-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-client-auth.js","sourceRoot":"","sources":["../../src/api/openai-client-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQrE,MAAM,UAAU,uBAAuB,CACtC,QAAgB,EAChB,MAA0B,EAC1B,OAAoC;IAEpC,IAAI,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC5F,IAAI,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IACD,OAAO;QACN,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE;KAC5C,CAAC;AACH,CAAC","sourcesContent":["import { hasCredentialHeaders, hasHeader } from \"../auth/headers.ts\";\nimport type { ProviderHeaders } from \"../types.ts\";\n\nexport interface OpenAIClientAuth {\n\tapiKey: string;\n\theaders?: ProviderHeaders;\n}\n\nexport function resolveOpenAIClientAuth(\n\tprovider: string,\n\tapiKey: string | undefined,\n\theaders: ProviderHeaders | undefined,\n): OpenAIClientAuth {\n\tif (apiKey) return { apiKey, headers };\n\tif (!hasCredentialHeaders(headers)) throw new Error(`No API key for provider: ${provider}`);\n\tif (hasHeader(headers, \"authorization\") || hasHeader(headers, \"cf-aig-authorization\")) {\n\t\treturn { apiKey: \"unused\", headers };\n\t}\n\treturn {\n\t\tapiKey: \"unused\",\n\t\theaders: { Authorization: null, ...headers },\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAOX,0BAA0B,EAI1B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAIX,OAAO,EAGP,KAAK,EAIL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEN,KAAK,+BAA+B,EACpC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAOX,0BAA0B,EAI1B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAIX,OAAO,EAGP,KAAK,EAIL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEN,KAAK,+BAA+B,EACpC,MAAM,8BAA8B,CAAC;AA4BtC,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,KAAK,+BAA+B,GACpC,MAAM,8BAA8B,CAAC;AA4MtC,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;IACpE,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;CAC1E;AAED,MAAM,WAAW,iCAAiC;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD;AAwCD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,wBAAwB,CAgbjF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAyBlF,CAAC;AA8XF,wBAAgB,eAAe,CAC9B,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,+BAA+B,EACvC,OAAO,GAAE,iCAAsC,GAC7C,0BAA0B,EAAE,CAgS9B"}
|
|
@@ -13,6 +13,7 @@ import { isForcedToolChoiceUnsupportedError, omitToolChoiceParam } from "../util
|
|
|
13
13
|
import { normalizeToolParametersForMoonshot, normalizeToolParametersForOpenAICompat, } from "../utils/tool-schema-compat.js";
|
|
14
14
|
import { appendGrammarToolInputJsonDelta, createGrammarToolInputProperties, getGrammarToolInput, resolveGrammarConstrainedSampling, resolveJsonSchemaStrictSampling, } from "./constrained-sampling.js";
|
|
15
15
|
import { buildCopilotDynamicHeaders, hasCopilotVisionInput } from "./github-copilot-headers.js";
|
|
16
|
+
import { resolveOpenAIClientAuth } from "./openai-client-auth.js";
|
|
16
17
|
import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
|
|
17
18
|
import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS, } from "./simple-options.js";
|
|
18
19
|
import { transformMessages } from "./transform-messages.js";
|
|
@@ -103,23 +104,6 @@ function resolveReasoningEffort(thinkingLevelMap, effort) {
|
|
|
103
104
|
* This is needed because Anthropic (via proxy) requires the tools param
|
|
104
105
|
* to be present when messages include tool_calls or tool role messages.
|
|
105
106
|
*/
|
|
106
|
-
function hasHeader(headers, name) {
|
|
107
|
-
if (!headers)
|
|
108
|
-
return false;
|
|
109
|
-
const expected = name.toLowerCase();
|
|
110
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
111
|
-
if (key.toLowerCase() === expected && value !== null && value.trim().length > 0)
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
function getClientApiKey(provider, apiKey, headers) {
|
|
117
|
-
if (apiKey)
|
|
118
|
-
return apiKey;
|
|
119
|
-
if (hasHeader(headers, "authorization") || hasHeader(headers, "cf-aig-authorization"))
|
|
120
|
-
return "unused";
|
|
121
|
-
throw new Error(`No API key for provider: ${provider}`);
|
|
122
|
-
}
|
|
123
107
|
function hasToolHistory(messages) {
|
|
124
108
|
for (const msg of messages) {
|
|
125
109
|
if (msg.role === "toolResult") {
|
|
@@ -217,12 +201,12 @@ export const stream = (model, context, options) => {
|
|
|
217
201
|
timestamp: Date.now(),
|
|
218
202
|
};
|
|
219
203
|
try {
|
|
220
|
-
const
|
|
204
|
+
const clientAuth = resolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);
|
|
221
205
|
const compat = getCompat(model);
|
|
222
206
|
const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools);
|
|
223
207
|
const cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env);
|
|
224
208
|
const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
|
|
225
|
-
const client = createClient(model, context, apiKey,
|
|
209
|
+
const client = createClient(model, context, clientAuth.apiKey, clientAuth.headers, cacheSessionId, compat);
|
|
226
210
|
let params = buildParams(model, context, options, compat, cacheRetention, grammarToolInputProperties);
|
|
227
211
|
const nextParams = await options?.onPayload?.(params, model);
|
|
228
212
|
if (nextParams !== undefined) {
|
|
@@ -577,7 +561,7 @@ export const stream = (model, context, options) => {
|
|
|
577
561
|
return stream;
|
|
578
562
|
};
|
|
579
563
|
export const streamSimple = (model, context, options) => {
|
|
580
|
-
|
|
564
|
+
resolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);
|
|
581
565
|
const base = buildBaseOptions(model, context, options, options?.apiKey);
|
|
582
566
|
const compat = getCompat(model);
|
|
583
567
|
const thinkingLevelMap = getThinkingLevelMap(model, compat);
|