@absolutejs/ai 0.5.0 → 0.6.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.
- package/CHANGELOG.md +6 -0
- package/changelog.json +17 -0
- package/dist/ai/index.js +56 -10
- package/dist/ai/index.js.map +7 -7
- package/dist/ai/providers/anthropic.js +50 -10
- package/dist/ai/providers/anthropic.js.map +3 -3
- package/dist/ai/providers/openrouter.js +49 -10
- package/dist/ai/providers/openrouter.js.map +3 -3
- package/dist/src/ai/providers/anthropic.d.ts +1 -0
- package/dist/types/ai.d.ts +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ This file is generated by `absolute-changelog` from the entries in
|
|
|
6
6
|
`changelog/`. Edit an entry, not this file — and add new ones under
|
|
7
7
|
`changelog/unreleased/`.
|
|
8
8
|
|
|
9
|
+
## 0.6.0 — 2026-10-20
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Load tools on demand (deferLoading, through Anthropic tool search) and clear old tool results past a threshold (toolResultClearing); both cross the provider proxy** (`AIToolResultClearing`, `AIToolDefinition`, `AIProviderToolDefinition`, `AIProviderStreamParams`, `StreamAIOptions`)
|
|
14
|
+
|
|
9
15
|
## 0.5.0 — 2026-10-19
|
|
10
16
|
|
|
11
17
|
### Breaking
|
package/changelog.json
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
"contract": 1,
|
|
3
3
|
"name": "@absolutejs/ai",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"kind": "added",
|
|
9
|
+
"summary": "Load tools on demand (deferLoading, through Anthropic tool search) and clear old tool results past a threshold (toolResultClearing); both cross the provider proxy",
|
|
10
|
+
"symbols": [
|
|
11
|
+
"AIToolResultClearing",
|
|
12
|
+
"AIToolDefinition",
|
|
13
|
+
"AIProviderToolDefinition",
|
|
14
|
+
"AIProviderStreamParams",
|
|
15
|
+
"StreamAIOptions"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"date": "2026-10-20",
|
|
20
|
+
"version": "0.6.0"
|
|
21
|
+
},
|
|
5
22
|
{
|
|
6
23
|
"changes": [
|
|
7
24
|
{
|
package/dist/ai/index.js
CHANGED
|
@@ -478,6 +478,7 @@ var sendMessage = async (socket, message) => {
|
|
|
478
478
|
return true;
|
|
479
479
|
};
|
|
480
480
|
var buildToolDefinitions = (tools) => Object.entries(tools).map(([name, def]) => ({
|
|
481
|
+
...def.deferLoading ? { deferLoading: true } : {},
|
|
481
482
|
description: def.description,
|
|
482
483
|
input_schema: def.input,
|
|
483
484
|
name
|
|
@@ -670,6 +671,7 @@ var processToolTurn = async (socket, options, state, messageId, conversationId,
|
|
|
670
671
|
model: options.model,
|
|
671
672
|
promptCaching: options.promptCaching,
|
|
672
673
|
providerOptions: options.providerOptions,
|
|
674
|
+
toolResultClearing: options.toolResultClearing,
|
|
673
675
|
reasoning: options.reasoning,
|
|
674
676
|
signal,
|
|
675
677
|
systemPrompt: options.systemPrompt,
|
|
@@ -760,6 +762,7 @@ var processStream = async (socket, options, messages, messageId, conversationId,
|
|
|
760
762
|
model: options.model,
|
|
761
763
|
promptCaching: options.promptCaching,
|
|
762
764
|
providerOptions: options.providerOptions,
|
|
765
|
+
toolResultClearing: options.toolResultClearing,
|
|
763
766
|
reasoning: options.reasoning,
|
|
764
767
|
signal,
|
|
765
768
|
systemPrompt: options.systemPrompt,
|
|
@@ -929,6 +932,7 @@ var withHeartbeat = async function* (source, signal, intervalMs) {
|
|
|
929
932
|
}
|
|
930
933
|
};
|
|
931
934
|
var buildToolDefinitions2 = (tools) => Object.entries(tools).map(([name, def]) => ({
|
|
935
|
+
...def.deferLoading ? { deferLoading: true } : {},
|
|
932
936
|
description: def.description,
|
|
933
937
|
input_schema: def.input,
|
|
934
938
|
name
|
|
@@ -1193,6 +1197,7 @@ var streamTurns = async function* (options, renderers, messages, signal, startTi
|
|
|
1193
1197
|
reasoning: options.reasoning,
|
|
1194
1198
|
signal,
|
|
1195
1199
|
systemPrompt: options.systemPrompt,
|
|
1200
|
+
toolResultClearing: options.toolResultClearing,
|
|
1196
1201
|
tools: toolDefs
|
|
1197
1202
|
}, options.contextPolicy, (prepared) => {
|
|
1198
1203
|
turnState.currentMessages = prepared.messages;
|
|
@@ -1805,6 +1810,7 @@ var mergeUsage = (left, right) => {
|
|
|
1805
1810
|
};
|
|
1806
1811
|
};
|
|
1807
1812
|
var toProviderTools = (tools) => Object.entries(tools).map(([name, definition]) => ({
|
|
1813
|
+
...definition.deferLoading ? { deferLoading: true } : {},
|
|
1808
1814
|
description: definition.description,
|
|
1809
1815
|
input_schema: definition.input,
|
|
1810
1816
|
name
|
|
@@ -2296,6 +2302,7 @@ var wireParams = (params) => ({
|
|
|
2296
2302
|
...params.systemPrompt === undefined ? {} : { systemPrompt: params.systemPrompt },
|
|
2297
2303
|
...params.temperature === undefined ? {} : { temperature: params.temperature },
|
|
2298
2304
|
...params.toolChoice === undefined ? {} : { toolChoice: params.toolChoice },
|
|
2305
|
+
...params.toolResultClearing === undefined ? {} : { toolResultClearing: params.toolResultClearing },
|
|
2299
2306
|
...params.tools === undefined ? {} : { tools: params.tools },
|
|
2300
2307
|
...params.topP === undefined ? {} : { topP: params.topP }
|
|
2301
2308
|
});
|
|
@@ -6716,10 +6723,32 @@ var mapMessage = (msg) => ({
|
|
|
6716
6723
|
role: msg.role === "system" ? "user" : msg.role
|
|
6717
6724
|
});
|
|
6718
6725
|
var mapToolDefinition2 = (tool) => ({
|
|
6726
|
+
...tool.deferLoading ? { defer_loading: true } : {},
|
|
6719
6727
|
description: tool.description,
|
|
6720
6728
|
input_schema: tool.input_schema,
|
|
6721
6729
|
name: tool.name
|
|
6722
6730
|
});
|
|
6731
|
+
var TOOL_SEARCH_TOOL = {
|
|
6732
|
+
name: "tool_search_tool_bm25",
|
|
6733
|
+
type: "tool_search_tool_bm25_20251119"
|
|
6734
|
+
};
|
|
6735
|
+
var CONTEXT_MANAGEMENT_BETA = "context-management-2025-06-27";
|
|
6736
|
+
var contextManagementFor = (clearing) => ({
|
|
6737
|
+
edits: [
|
|
6738
|
+
{
|
|
6739
|
+
...clearing.clearAtLeastInputTokens === undefined ? {} : {
|
|
6740
|
+
clear_at_least: {
|
|
6741
|
+
type: "input_tokens",
|
|
6742
|
+
value: clearing.clearAtLeastInputTokens
|
|
6743
|
+
}
|
|
6744
|
+
},
|
|
6745
|
+
...clearing.excludeTools?.length ? { exclude_tools: [...clearing.excludeTools] } : {},
|
|
6746
|
+
...clearing.keepToolUses === undefined ? {} : { keep: { type: "tool_uses", value: clearing.keepToolUses } },
|
|
6747
|
+
trigger: { type: "input_tokens", value: clearing.triggerInputTokens },
|
|
6748
|
+
type: "clear_tool_uses_20250919"
|
|
6749
|
+
}
|
|
6750
|
+
]
|
|
6751
|
+
});
|
|
6723
6752
|
var requestOptionsFor = (params) => {
|
|
6724
6753
|
const raw = params.providerOptions?.anthropic;
|
|
6725
6754
|
if (raw === undefined)
|
|
@@ -6828,16 +6857,20 @@ var buildRequestBody3 = (params, configuredMax, configCaching) => {
|
|
|
6828
6857
|
] : params.systemPrompt;
|
|
6829
6858
|
}
|
|
6830
6859
|
const clientTools = params.tools?.map(mapToolDefinition2) ?? [];
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
}
|
|
6837
|
-
}
|
|
6860
|
+
const deferring = clientTools.some((tool) => tool.defer_loading === true);
|
|
6861
|
+
const lastLoaded = clientTools.findLastIndex((tool) => tool.defer_loading !== true);
|
|
6862
|
+
if (caching && lastLoaded >= 0) {
|
|
6863
|
+
clientTools[lastLoaded] = {
|
|
6864
|
+
...clientTools[lastLoaded],
|
|
6865
|
+
cache_control: { type: "ephemeral" }
|
|
6866
|
+
};
|
|
6838
6867
|
}
|
|
6839
6868
|
const serverTools = (options.serverTools ?? []).map(mapServerTool);
|
|
6840
|
-
const tools = [
|
|
6869
|
+
const tools = [
|
|
6870
|
+
...clientTools,
|
|
6871
|
+
...deferring ? [TOOL_SEARCH_TOOL] : [],
|
|
6872
|
+
...serverTools
|
|
6873
|
+
];
|
|
6841
6874
|
if (tools.length > 0) {
|
|
6842
6875
|
body.tools = tools;
|
|
6843
6876
|
if (params.toolChoice === "auto" || params.toolChoice === "none") {
|
|
@@ -6851,6 +6884,9 @@ var buildRequestBody3 = (params, configuredMax, configCaching) => {
|
|
|
6851
6884
|
if (params.stopSequences && params.stopSequences.length > 0) {
|
|
6852
6885
|
body.stop_sequences = params.stopSequences;
|
|
6853
6886
|
}
|
|
6887
|
+
if (params.toolResultClearing) {
|
|
6888
|
+
body.context_management = contextManagementFor(params.toolResultClearing);
|
|
6889
|
+
}
|
|
6854
6890
|
const mode = params.reasoning && params.reasoning.effort !== "none" ? anthropicReasoningMode(params.model) : "none";
|
|
6855
6891
|
if (params.reasoning?.effort === "none")
|
|
6856
6892
|
body.thinking = { type: "disabled" };
|
|
@@ -7297,6 +7333,11 @@ var fetchAndStream = async function* (baseUrl, config, params, configuredMax, pr
|
|
|
7297
7333
|
const suppliedHeaders = typeof config.headers === "function" ? await config.headers(params) : config.headers ?? {};
|
|
7298
7334
|
const requestHeaders = new Headers(suppliedHeaders);
|
|
7299
7335
|
requestHeaders.set("Content-Type", "application/json");
|
|
7336
|
+
if (body.context_management !== undefined) {
|
|
7337
|
+
const betas = (requestHeaders.get("anthropic-beta") ?? "").split(",").map((beta) => beta.trim()).filter(Boolean);
|
|
7338
|
+
if (!betas.includes(CONTEXT_MANAGEMENT_BETA))
|
|
7339
|
+
requestHeaders.set("anthropic-beta", [...betas, CONTEXT_MANAGEMENT_BETA].join(","));
|
|
7340
|
+
}
|
|
7300
7341
|
if (config.authStyle === "bearer") {
|
|
7301
7342
|
requestHeaders.set("Authorization", `Bearer ${token}`);
|
|
7302
7343
|
} else {
|
|
@@ -7365,7 +7406,12 @@ var anthropic = (config) => {
|
|
|
7365
7406
|
const hosted = tools.filter((tool) => isRecord5(tool) && typeof tool.type === "string" && /^(web_search_|web_fetch_|code_execution_|bash_code_execution_|text_editor_code_execution_|tool_search_tool_)/u.test(tool.type));
|
|
7366
7407
|
const scope = hosted.length > 0 || body.mcp_servers !== undefined ? "caller-input" : "request";
|
|
7367
7408
|
if (hosted.length > 0) {
|
|
7368
|
-
const clientTools = tools.filter((tool) => !hosted.includes(tool))
|
|
7409
|
+
const clientTools = tools.filter((tool) => !hosted.includes(tool)).map((tool) => {
|
|
7410
|
+
if (!isRecord5(tool) || tool.defer_loading === undefined)
|
|
7411
|
+
return tool;
|
|
7412
|
+
const { defer_loading: _deferred, ...loaded } = tool;
|
|
7413
|
+
return loaded;
|
|
7414
|
+
});
|
|
7369
7415
|
if (clientTools.length)
|
|
7370
7416
|
counted.tools = clientTools;
|
|
7371
7417
|
else
|
|
@@ -9197,5 +9243,5 @@ export {
|
|
|
9197
9243
|
xai
|
|
9198
9244
|
};
|
|
9199
9245
|
|
|
9200
|
-
//# debugId=
|
|
9246
|
+
//# debugId=9A889A121344253764756E2164756E21
|
|
9201
9247
|
//# sourceMappingURL=index.js.map
|