@averyyy/pi-ai 1.1.0-piclient.3 → 1.2.0-piclient.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +63 -22
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/google-antigravity.d.ts +13 -0
- package/dist/api/google-antigravity.d.ts.map +1 -0
- package/dist/api/google-antigravity.js +291 -0
- package/dist/api/google-antigravity.js.map +1 -0
- package/dist/api/google-shared.d.ts +1 -1
- package/dist/api/google-shared.d.ts.map +1 -1
- package/dist/api/google-shared.js.map +1 -1
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +29 -13
- package/dist/api/mistral-conversations.js.map +1 -1
- package/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.js +2 -1
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/auth/oauth/google-antigravity.d.ts +5 -0
- package/dist/auth/oauth/google-antigravity.d.ts.map +1 -0
- package/dist/auth/oauth/google-antigravity.js +259 -0
- package/dist/auth/oauth/google-antigravity.js.map +1 -0
- package/dist/auth/oauth/load.d.ts +8 -1
- package/dist/auth/oauth/load.d.ts.map +1 -1
- package/dist/auth/oauth/load.js +11 -0
- package/dist/auth/oauth/load.js.map +1 -1
- package/dist/bun-oauth.d.ts.map +1 -1
- package/dist/bun-oauth.js +3 -0
- package/dist/bun-oauth.js.map +1 -1
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +2 -0
- package/dist/compat.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +5 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +1 -0
- package/dist/models.js.map +1 -1
- package/dist/providers/all.d.ts.map +1 -1
- package/dist/providers/all.js +2 -0
- package/dist/providers/all.js.map +1 -1
- package/dist/providers/compat-schema.d.ts +338 -0
- package/dist/providers/compat-schema.d.ts.map +1 -0
- package/dist/providers/compat-schema.js +375 -0
- package/dist/providers/compat-schema.js.map +1 -0
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/dist/providers/data/fireworks.json +1 -1
- package/dist/providers/data/github-copilot.json +1 -1
- package/dist/providers/data/google-vertex.json +1 -1
- package/dist/providers/data/google.json +1 -1
- package/dist/providers/data/meta.json +1 -1
- package/dist/providers/data/nvidia.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/radius.json +1 -1
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
- package/dist/providers/data/xiaomi.json +1 -1
- package/dist/providers/google-antigravity.d.ts +3 -0
- package/dist/providers/google-antigravity.d.ts.map +1 -0
- package/dist/providers/google-antigravity.js +27 -0
- package/dist/providers/google-antigravity.js.map +1 -0
- package/dist/providers/model-schema.d.ts +91 -0
- package/dist/providers/model-schema.d.ts.map +1 -0
- package/dist/providers/model-schema.js +55 -0
- package/dist/providers/model-schema.js.map +1 -0
- package/dist/providers/opencode-go.d.ts +3 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +2 -0
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/openrouter-api.d.ts +40 -0
- package/dist/providers/openrouter-api.d.ts.map +1 -0
- package/dist/providers/openrouter-api.js +41 -0
- package/dist/providers/openrouter-api.js.map +1 -0
- package/dist/providers/openrouter.d.ts +11 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +52 -1
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/types.d.ts +9 -305
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAiC,MAAM,mBAAmB,CAAC;AAoBlE,OAAO,KAAK,EASX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;AAmJrB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AA2ChE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAwRD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAiC,MAAM,mBAAmB,CAAC;AAoBlE,OAAO,KAAK,EASX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAMb,MAAM,aAAa,CAAC;AAmJrB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AA2ChE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAwRD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CA2WzE,CAAC;AA2BF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAgDlF,CAAC"}
|
|
@@ -425,21 +425,53 @@ export const stream = (model, context, options) => {
|
|
|
425
425
|
client = created.client;
|
|
426
426
|
isOAuth = created.isOAuthToken;
|
|
427
427
|
}
|
|
428
|
-
let params = buildParams(model, normalizedContext, isOAuth, options);
|
|
429
|
-
const nextParams = await options?.onPayload?.(params, model);
|
|
430
|
-
if (nextParams !== undefined) {
|
|
431
|
-
params = { ...nextParams, stream: true };
|
|
432
|
-
}
|
|
433
428
|
const requestOptions = {
|
|
434
429
|
...(options?.signal ? { signal: options.signal } : {}),
|
|
435
430
|
...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
|
|
436
431
|
maxRetries: 0,
|
|
437
432
|
};
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
433
|
+
let disablePreferredStrictTools = false;
|
|
434
|
+
let response;
|
|
435
|
+
for (;;) {
|
|
436
|
+
options?.signal?.throwIfAborted();
|
|
437
|
+
const built = buildParams(model, normalizedContext, isOAuth, options, disablePreferredStrictTools);
|
|
438
|
+
let params = built.params;
|
|
439
|
+
const nextParams = await options?.onPayload?.(params, model);
|
|
440
|
+
if (nextParams !== undefined) {
|
|
441
|
+
params = { ...nextParams, stream: true };
|
|
442
|
+
}
|
|
443
|
+
try {
|
|
444
|
+
response = await retryProviderRequest(() => client.beta.messages.create(params, requestOptions).asResponse(), {
|
|
445
|
+
maxRetries: options?.maxRetries,
|
|
446
|
+
maxRetryDelayMs: options?.maxRetryDelayMs,
|
|
447
|
+
signal: options?.signal,
|
|
448
|
+
});
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
// Only downgrade a rejected request, never an already-started stream.
|
|
453
|
+
if (options?.signal?.aborted ||
|
|
454
|
+
disablePreferredStrictTools ||
|
|
455
|
+
!built.hasPreferredStrictTools ||
|
|
456
|
+
!(error instanceof Anthropic.APIError) ||
|
|
457
|
+
error.status !== 400 ||
|
|
458
|
+
error.type !== "invalid_request_error" ||
|
|
459
|
+
![
|
|
460
|
+
"The compiled grammar is too large",
|
|
461
|
+
"Too many strict tools (",
|
|
462
|
+
"Schemas contains too many parameters with union types (",
|
|
463
|
+
].some((message) => error.message.includes(message))) {
|
|
464
|
+
throw error;
|
|
465
|
+
}
|
|
466
|
+
disablePreferredStrictTools = true;
|
|
467
|
+
appendAssistantMessageDiagnostic(output, {
|
|
468
|
+
type: "anthropic_strict_tools_fallback",
|
|
469
|
+
timestamp: Date.now(),
|
|
470
|
+
error: { message: error.message },
|
|
471
|
+
details: { reason: "strict_tool_limits_exceeded" },
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
}
|
|
443
475
|
await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
|
|
444
476
|
stream.push({ type: "start", partial: output });
|
|
445
477
|
const blocks = output.content;
|
|
@@ -855,7 +887,7 @@ function getBetaFeatures(model, context, isOAuthToken, nativeToolChanges, option
|
|
|
855
887
|
features.push(INLINE_TOOLS_BETA);
|
|
856
888
|
return [...new Set(features)];
|
|
857
889
|
}
|
|
858
|
-
function buildParams(model, context, isOAuthToken, options) {
|
|
890
|
+
function buildParams(model, context, isOAuthToken, options, disablePreferredStrictTools = false) {
|
|
859
891
|
const { cacheControl } = getCacheControl(model, options?.cacheRetention, options?.env);
|
|
860
892
|
const compat = getAnthropicCompat(model);
|
|
861
893
|
const initialSystemMessage = getInitialSystemMessage(context.messages);
|
|
@@ -866,11 +898,20 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
866
898
|
// by value in a `tool_addition` block, which also expresses same-name redefinitions.
|
|
867
899
|
// Anthropic rejects a tool list where every tool is deferred, so there must be an initial
|
|
868
900
|
// active tool to anchor the placeholder. Otherwise the current tool list is sent.
|
|
901
|
+
let hasPreferredStrictTools = false;
|
|
902
|
+
const convertToolDefinitions = (tools, toolCacheControl) => {
|
|
903
|
+
const definitions = convertTools(tools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, toolCacheControl, disablePreferredStrictTools);
|
|
904
|
+
if (definitions.some((definition, index) => {
|
|
905
|
+
const config = tools[index].constrainedSampling;
|
|
906
|
+
return definition.strict === true && config && config.type === "json_schema" && config.strict === "prefer";
|
|
907
|
+
})) {
|
|
908
|
+
hasPreferredStrictTools = true;
|
|
909
|
+
}
|
|
910
|
+
return definitions;
|
|
911
|
+
};
|
|
869
912
|
const initialTools = initialSystemMessage?.toolsAdded ?? [];
|
|
870
913
|
const nativeToolChanges = compat.supportsMidConvoSystemMessages && compat.supportsMidConvoToolChanges && initialTools.length > 0;
|
|
871
|
-
const converted = convertMessages(conversationMessages, isOAuthToken, cacheControl, compat.allowEmptySignature, model.compat?.supportsMidConvoEffort === true ? model.provider : undefined, nativeToolChanges
|
|
872
|
-
? (tools) => convertTools(tools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools)
|
|
873
|
-
: undefined);
|
|
914
|
+
const converted = convertMessages(conversationMessages, isOAuthToken, cacheControl, compat.allowEmptySignature, model.compat?.supportsMidConvoEffort === true ? model.provider : undefined, nativeToolChanges ? convertToolDefinitions : undefined);
|
|
874
915
|
const activeEffort = options?.effort ?? "high";
|
|
875
916
|
const betaFeatures = getBetaFeatures(model, context, isOAuthToken, nativeToolChanges, options);
|
|
876
917
|
const params = {
|
|
@@ -922,15 +963,12 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
922
963
|
// placeholder. The list never changes afterwards: later tools are defined by value in
|
|
923
964
|
// `tool_addition` blocks and withdrawn by `tool_removal`, so the cached prefix survives
|
|
924
965
|
// every tool change.
|
|
925
|
-
params.tools = [
|
|
926
|
-
...convertTools(initialTools, isOAuthToken, compat.supportsEagerToolInputStreaming, compat.supportsStrictTools, toolCacheControl),
|
|
927
|
-
DEFERRED_TOOL_PLACEHOLDER,
|
|
928
|
-
];
|
|
966
|
+
params.tools = [...convertToolDefinitions(initialTools, toolCacheControl), DEFERRED_TOOL_PLACEHOLDER];
|
|
929
967
|
}
|
|
930
968
|
else {
|
|
931
969
|
const tools = getCurrentTools(context.messages);
|
|
932
970
|
if (tools.length > 0) {
|
|
933
|
-
params.tools =
|
|
971
|
+
params.tools = convertToolDefinitions(tools, toolCacheControl);
|
|
934
972
|
}
|
|
935
973
|
}
|
|
936
974
|
// Managed effort models always use adaptive thinking so prefix mismatches can
|
|
@@ -986,7 +1024,7 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
986
1024
|
if (allowedFallbackModels && allowedFallbackModels.length > 0) {
|
|
987
1025
|
params.fallbacks = allowedFallbackModels.map((fallback) => ({ model: fallback.model }));
|
|
988
1026
|
}
|
|
989
|
-
return params;
|
|
1027
|
+
return { params, hasPreferredStrictTools };
|
|
990
1028
|
}
|
|
991
1029
|
// Normalize tool call IDs to match Anthropic's required pattern and length
|
|
992
1030
|
function normalizeToolCallId(id) {
|
|
@@ -1255,11 +1293,14 @@ const isAnthropicStrictUnsupportedKeyword = (key, value) => {
|
|
|
1255
1293
|
return typeof value !== "string" || !ANTHROPIC_STRICT_STRING_FORMATS.has(value);
|
|
1256
1294
|
return false;
|
|
1257
1295
|
};
|
|
1258
|
-
function convertTools(tools, isOAuthToken, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl) {
|
|
1296
|
+
function convertTools(tools, isOAuthToken, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl, disablePreferredStrictTools = false) {
|
|
1259
1297
|
if (!tools)
|
|
1260
1298
|
return [];
|
|
1261
1299
|
return tools.map((tool, index) => {
|
|
1262
|
-
const
|
|
1300
|
+
const config = tool.constrainedSampling;
|
|
1301
|
+
const strict = disablePreferredStrictTools && config && config.type === "json_schema" && config.strict === "prefer"
|
|
1302
|
+
? undefined
|
|
1303
|
+
: resolveJsonSchemaStrictSampling(tool, supportsStrictTools, isAnthropicStrictUnsupportedKeyword);
|
|
1263
1304
|
const parameters = getJsonSchemaToolParameters(tool, strict);
|
|
1264
1305
|
const schema = parameters;
|
|
1265
1306
|
const legacyInputSchema = {
|