experimental-a2 0.14.0 → 0.15.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 +17 -0
- package/dist/ai-server.d.ts.map +1 -1
- package/dist/ai-server.js +39 -12
- package/dist/ai-server.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -0
- package/docs/guides/06-ai-agents.mdx +22 -3
- package/docs/reference/01-api.mdx +25 -0
- package/examples/playground/package.json +1 -1
- package/package.json +1 -1
- package/src/ai-server.ts +48 -11
- package/src/idempotent-id.ts +11 -0
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.15.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 197b719: Add `idempotentId(...parts: string[])` to derive stable UUIDv8 event IDs from
|
|
8
|
+
ordered strings in server and browser code. Existing IDs and automatic ID
|
|
9
|
+
generation are unchanged.
|
|
10
|
+
|
|
11
|
+
## 0.14.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 0c7fa4e: Enable AI Gateway automatic prompt caching and stable session affinity in
|
|
16
|
+
the default AI generator, including automatic compaction. Caller-supplied
|
|
17
|
+
provider options and per-call affinity headers take precedence. Custom
|
|
18
|
+
generators retain their original settings.
|
|
19
|
+
|
|
3
20
|
## 0.14.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
package/dist/ai-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-server.d.ts","names":[],"sources":["../src/ai-sdk-step.ts","../src/ai-server.ts"],"mappings":";;;;;KAkBK,kBAAkB,UAAU,aAAW,kBAAkB,WAAW;KAKpE,iBAAiB,UAAU,sBAE5B,KACE,QAAQ,kBAAkB;KAI3B;KAmBA;KASA,iBAAiB,UAAU,yBACpB,WAAW,IAAI,KAAK,EAAE;KAG7B,aAAa,UAAU,WAAS,gBAAgB,kBAAkB,MACrE,YAAY,kBAAkB,GAAG,cAAa,aAAa,qBACvD;KAGD,qBAAqB,UAAU,aAAW,KAC7C,aAAa;WAGJ,OAAO,iBAAiB;;KAG9B,yBAAyB,UAAU,aAAW,KACjD,aAAa;WAGJ,OAAO,iBAAiB;;KAG9B,mBAAmB,UAAU,OAAO,iBAAiB;KAErD,yBAAyB,UAAU,aAAW,YACjD,kBAAkB;KAGf,yBAAyB,UAAU,cACtC,SAAS,KAAK,WAAW,yBAAyB;EAChD,OAAO,iBAAiB;MAEvB,WAAW,yBAAyB;KAEpC,2BAA2B,UAAU,aAAW,YACnD,kBAAkB;KAGf,oBAAoB,UAAU,aAAW,QAC5C,2BAA2B,QACvB;KAGD,oBAAoB,UAAU,cACjC,SAAS,KAAK,WAAW,oBAAoB;EAC3C,OAAO,iBAAiB;MAEvB,WAAW,oBAAoB;;KAGxB,kBAAkB,UAAU,aAAW,QACjD,KACE,kBAAkB,IAClB,8BAA8B;EAGhC,UAAU,iBAAiB;EAC3B,UAAU,mBAAmB,qBAAqB;EAClD,uBAAuB,mBAAmB,qBAAqB;EAC/D,cAAc,mBAAmB,yBAAyB;EAC1D,2BAA2B,mBAAmB,yBAAyB;EACvE,iBAAiB,yBAAyB;EAC1C,8BAA8B,yBAAyB;EACvD,yBACE,oBAAoB,KAAK,MAAM,oBAAoB;;;;
|
|
1
|
+
{"version":3,"file":"ai-server.d.ts","names":[],"sources":["../src/ai-sdk-step.ts","../src/ai-server.ts"],"mappings":"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"}
|
package/dist/ai-server.js
CHANGED
|
@@ -4,6 +4,7 @@ import { f as consumeSchedulerSendFailure, p as installAmbientToolScopeStorage }
|
|
|
4
4
|
import { i as setServerFetchHooks, t as createServer } from "./server-CjJSGcF7.js";
|
|
5
5
|
import { n as applyControlChanges, r as controlCommit, t as initialControlState } from "./ai-control-CcD4hh3y.js";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
7
8
|
import { asSchema, convertToModelMessages, stepCountIs, streamText, toUIMessageStream } from "ai";
|
|
8
9
|
//#region src/ai-coordinator.ts
|
|
9
10
|
const updateResponse = (state, update) => state.response === void 0 ? state : {
|
|
@@ -951,7 +952,23 @@ const nextOrTimer = async (next, delayMs) => {
|
|
|
951
952
|
if (timer !== void 0) clearTimeout(timer);
|
|
952
953
|
}
|
|
953
954
|
};
|
|
954
|
-
async function generateWithAISDK(
|
|
955
|
+
async function generateWithAISDK(options) {
|
|
956
|
+
const { agentName, context, messageMetadata } = options;
|
|
957
|
+
const headers = context.generation.headers ?? {};
|
|
958
|
+
const generation = gatewayModelId(context.model) === void 0 ? context.generation : {
|
|
959
|
+
...context.generation,
|
|
960
|
+
headers: Object.keys(headers).some((key) => key.toLowerCase() === "x-session-affinity") ? headers : {
|
|
961
|
+
...headers,
|
|
962
|
+
"x-session-affinity": createHash("sha256").update(JSON.stringify([agentName, context.request.sessionId])).digest("hex")
|
|
963
|
+
},
|
|
964
|
+
providerOptions: {
|
|
965
|
+
...context.generation.providerOptions,
|
|
966
|
+
gateway: {
|
|
967
|
+
caching: "auto",
|
|
968
|
+
...context.generation.providerOptions?.["gateway"]
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
};
|
|
955
972
|
const step = await generateAISDKStep({
|
|
956
973
|
model: context.model,
|
|
957
974
|
tools: context.tools,
|
|
@@ -960,9 +977,10 @@ async function generateWithAISDK(context, messageMetadata) {
|
|
|
960
977
|
responseMessageId: context.responseMessageId,
|
|
961
978
|
abortSignal: context.signal,
|
|
962
979
|
...context.instructions === void 0 ? {} : { instructions: context.instructions },
|
|
963
|
-
settings:
|
|
980
|
+
settings: generation,
|
|
964
981
|
...messageMetadata === void 0 ? {} : { messageMetadata: ({ part }) => messageMetadata({
|
|
965
982
|
...context,
|
|
983
|
+
generation,
|
|
966
984
|
part
|
|
967
985
|
}) }
|
|
968
986
|
});
|
|
@@ -1080,15 +1098,19 @@ const summarize = async (options) => {
|
|
|
1080
1098
|
return [name, definition];
|
|
1081
1099
|
}));
|
|
1082
1100
|
const source = await generateWithAISDK({
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1101
|
+
agentName: options.agentName,
|
|
1102
|
+
context: {
|
|
1103
|
+
...options.context,
|
|
1104
|
+
generation,
|
|
1105
|
+
tools,
|
|
1106
|
+
modelMessages: [...options.context.modelMessages, {
|
|
1107
|
+
role: "user",
|
|
1108
|
+
content: instruction
|
|
1109
|
+
}],
|
|
1110
|
+
responseMessageId: `${options.context.generationId}:summary`
|
|
1111
|
+
},
|
|
1112
|
+
messageMetadata: void 0
|
|
1113
|
+
});
|
|
1092
1114
|
let summary = "";
|
|
1093
1115
|
let calledTool = false;
|
|
1094
1116
|
let finish;
|
|
@@ -1775,6 +1797,7 @@ function createHandlers(options) {
|
|
|
1775
1797
|
const result = !("shouldCompact" in policy) ? {
|
|
1776
1798
|
messages: [],
|
|
1777
1799
|
...await summarize({
|
|
1800
|
+
agentName: options.agent.contract.name,
|
|
1778
1801
|
context: baseContext,
|
|
1779
1802
|
instructions: policy.instructions
|
|
1780
1803
|
})
|
|
@@ -1843,7 +1866,11 @@ function createHandlers(options) {
|
|
|
1843
1866
|
};
|
|
1844
1867
|
const custom = options.generate !== void 0;
|
|
1845
1868
|
const updates = consumeGeneration({
|
|
1846
|
-
source: options.generate === void 0 ? await generateWithAISDK(
|
|
1869
|
+
source: options.generate === void 0 ? await generateWithAISDK({
|
|
1870
|
+
agentName: options.agent.contract.name,
|
|
1871
|
+
context: generateContext,
|
|
1872
|
+
messageMetadata: options.messageMetadata
|
|
1873
|
+
}) : { stream: await options.generate(generateContext) },
|
|
1847
1874
|
...options.progress === void 0 ? {} : { progress: options.progress }
|
|
1848
1875
|
});
|
|
1849
1876
|
let sequence = 0;
|