experimental-a2 0.13.0 → 0.14.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 (99) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{actor-DJi3RsNu.d.ts → actor-BfQSE0KC.d.ts} +4 -4
  3. package/dist/{actor-DJi3RsNu.d.ts.map → actor-BfQSE0KC.d.ts.map} +1 -1
  4. package/dist/actor-client.d.ts +1 -1
  5. package/dist/actor-client.js +1 -1
  6. package/dist/actor-react.d.ts +3 -3
  7. package/dist/actor-react.js +2 -2
  8. package/dist/{actor-shared-DI7J5upy.js → actor-shared-B5tJfzt-.js} +2 -2
  9. package/dist/{actor-shared-DI7J5upy.js.map → actor-shared-B5tJfzt-.js.map} +1 -1
  10. package/dist/actor.d.ts +1 -1
  11. package/dist/actor.js +3 -3
  12. package/dist/ai-Cai-lCbj.d.ts +580 -0
  13. package/dist/ai-Cai-lCbj.d.ts.map +1 -0
  14. package/dist/ai-control-CcD4hh3y.js +119 -0
  15. package/dist/ai-control-CcD4hh3y.js.map +1 -0
  16. package/dist/ai-server.d.ts +6 -6
  17. package/dist/ai-server.d.ts.map +1 -1
  18. package/dist/ai-server.js +1014 -501
  19. package/dist/ai-server.js.map +1 -1
  20. package/dist/ai.d.ts +2 -365
  21. package/dist/ai.js +801 -80
  22. package/dist/ai.js.map +1 -1
  23. package/dist/{client-P_NNNRM-.d.ts → client-BAEABRZB.d.ts} +2 -2
  24. package/dist/{client-P_NNNRM-.d.ts.map → client-BAEABRZB.d.ts.map} +1 -1
  25. package/dist/{client-Bf6uSEAk.js → client-BYzHjkwU.js} +21 -6
  26. package/dist/client-BYzHjkwU.js.map +1 -0
  27. package/dist/client.d.ts +1 -1
  28. package/dist/client.js +1 -1
  29. package/dist/{contract-48bUMgcL.js → contract-CKRg_E4q.js} +3 -26
  30. package/dist/contract-CKRg_E4q.js.map +1 -0
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +1 -1
  33. package/dist/react.d.ts +2 -2
  34. package/dist/react.js +1 -1
  35. package/dist/{reducer-DJKWm3cp.d.ts → reducer-BcS9VDKC.d.ts} +4 -1
  36. package/dist/{reducer-DJKWm3cp.d.ts.map → reducer-BcS9VDKC.d.ts.map} +1 -1
  37. package/dist/reducer-DEMjEY_O.js +29 -0
  38. package/dist/reducer-DEMjEY_O.js.map +1 -0
  39. package/dist/scheduler-qstash.d.ts +2 -2
  40. package/dist/scheduler-qstash.js +1 -1
  41. package/dist/scheduler-vercel.d.ts +2 -2
  42. package/dist/scheduler-vercel.js +1 -1
  43. package/dist/{server-DjZZa1wr.d.ts → server-Bp5Nd1pF.d.ts} +3 -3
  44. package/dist/{server-DjZZa1wr.d.ts.map → server-Bp5Nd1pF.d.ts.map} +1 -1
  45. package/dist/{server-BeNADlCI.js → server-CjJSGcF7.js} +4 -3
  46. package/dist/server-CjJSGcF7.js.map +1 -0
  47. package/dist/server.d.ts +3 -3
  48. package/dist/server.js +1 -1
  49. package/dist/{store-DtDOWLSn.d.ts → store-D_yhNdPz.d.ts} +7 -2
  50. package/dist/{store-DtDOWLSn.d.ts.map → store-D_yhNdPz.d.ts.map} +1 -1
  51. package/dist/store-N8PXxDAS.js.map +1 -1
  52. package/dist/store-memory.d.ts +1 -1
  53. package/dist/store-postgres.d.ts +1 -1
  54. package/dist/store-postgres.js +19 -0
  55. package/dist/store-postgres.js.map +1 -1
  56. package/dist/store-redis-http.d.ts +1 -1
  57. package/dist/store-redis-http.js +1 -1
  58. package/dist/{store-redis-notify-BUCyXOn0.js → store-redis-notify-D2EI6gwX.js} +27 -2
  59. package/dist/store-redis-notify-D2EI6gwX.js.map +1 -0
  60. package/dist/store-redis.d.ts +1 -1
  61. package/dist/store-redis.js +1 -1
  62. package/dist/store-sqlite.d.ts +1 -1
  63. package/docs/guides/06-ai-agents.mdx +265 -62
  64. package/docs/reference/01-api.mdx +122 -27
  65. package/examples/playground/app/agent/[agentId]/agent-client.tsx +118 -21
  66. package/examples/playground/app/agent/[agentId]/agent-queue.tsx +289 -0
  67. package/examples/playground/app/agent/compaction-settings.test.ts +22 -6
  68. package/examples/playground/app/agent/model.ts +11 -2
  69. package/examples/playground/app/agent/server.ts +8 -2
  70. package/examples/playground/app/chat/[chatId]/chat-client.tsx +3 -13
  71. package/examples/playground/app/chat/model.ts +2 -2
  72. package/examples/playground/app/chat/server.ts +24 -17
  73. package/examples/playground/app/globals.css +179 -0
  74. package/examples/playground/package.json +1 -1
  75. package/package.json +1 -1
  76. package/src/ai-client-state.ts +185 -0
  77. package/src/ai-control-server.ts +829 -0
  78. package/src/ai-control-state.ts +152 -0
  79. package/src/ai-control.ts +139 -0
  80. package/src/ai-coordinator.ts +99 -32
  81. package/src/ai-progress-batches.ts +68 -0
  82. package/src/ai-projector.ts +76 -15
  83. package/src/ai-sdk-step.ts +0 -1
  84. package/src/ai-server.ts +381 -608
  85. package/src/ai.ts +553 -108
  86. package/src/client.ts +31 -9
  87. package/src/licenses/Apache-2.0.txt +55 -0
  88. package/src/parse-partial-json.ts +441 -0
  89. package/src/reducer.ts +6 -0
  90. package/src/server.ts +8 -4
  91. package/src/store-postgres.ts +27 -0
  92. package/src/store-redis-core.ts +53 -1
  93. package/src/store-redis-notify.ts +1 -0
  94. package/src/store.ts +6 -0
  95. package/dist/ai.d.ts.map +0 -1
  96. package/dist/client-Bf6uSEAk.js.map +0 -1
  97. package/dist/contract-48bUMgcL.js.map +0 -1
  98. package/dist/server-BeNADlCI.js.map +0 -1
  99. package/dist/store-redis-notify-BUCyXOn0.js.map +0 -1
@@ -0,0 +1,119 @@
1
+ //#region src/ai-control-state.ts
2
+ const container = (value) => typeof value === "object" && value !== null;
3
+ const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
4
+ const controlChanges = ({ before, after }) => {
5
+ const changes = [];
6
+ const visit = (left, right, path) => {
7
+ if (same(left, right)) return;
8
+ if (Array.isArray(left) && Array.isArray(right)) {
9
+ let prefix = 0;
10
+ while (prefix < Math.min(left.length, right.length) && same(left[prefix], right[prefix])) prefix += 1;
11
+ let suffix = 0;
12
+ while (suffix < Math.min(left.length, right.length) - prefix && same(left[left.length - 1 - suffix], right[right.length - 1 - suffix])) suffix += 1;
13
+ if (left.length === right.length) for (let index = prefix; index < left.length - suffix; index += 1) visit(left[index], right[index], [...path, index]);
14
+ else changes.push({
15
+ path,
16
+ splice: {
17
+ index: prefix,
18
+ deleteCount: left.length - prefix - suffix,
19
+ items: right.slice(prefix, right.length - suffix)
20
+ }
21
+ });
22
+ return;
23
+ }
24
+ if (container(left) && container(right) && !Array.isArray(left) && !Array.isArray(right)) {
25
+ for (const key of Object.keys(left)) if (!Object.hasOwn(right, key)) changes.push({
26
+ path: [...path, key],
27
+ remove: true
28
+ });
29
+ for (const key of Object.keys(right)) visit(Object.hasOwn(left, key) ? left[key] : void 0, right[key], [...path, key]);
30
+ return;
31
+ }
32
+ changes.push({
33
+ path,
34
+ value: right
35
+ });
36
+ };
37
+ visit(before, after, []);
38
+ return changes;
39
+ };
40
+ const applyControlChanges = ({ state, changes }) => {
41
+ if (changes.length === 0) return state;
42
+ let next = structuredClone(state);
43
+ for (const change of changes) {
44
+ const path = change.path;
45
+ if (path.length === 0) {
46
+ next = structuredClone(change.value);
47
+ continue;
48
+ }
49
+ let target = next;
50
+ for (const key of path.slice(0, -1)) {
51
+ if (!container(target) || !Object.hasOwn(target, key)) throw new TypeError("Invalid AI control change path");
52
+ target = target[key];
53
+ }
54
+ if (!container(target)) throw new TypeError("Invalid AI control change target");
55
+ const parent = target;
56
+ const key = path.at(-1);
57
+ if (change.remove) delete parent[key];
58
+ else if (change.splice) {
59
+ const items = parent[key];
60
+ Object.defineProperty(parent, key, {
61
+ value: [
62
+ ...items.slice(0, change.splice.index),
63
+ ...structuredClone(change.splice.items),
64
+ ...items.slice(change.splice.index + change.splice.deleteCount)
65
+ ],
66
+ enumerable: true,
67
+ configurable: true,
68
+ writable: true
69
+ });
70
+ } else if (change.move) {
71
+ const items = parent[key];
72
+ const [item] = items.splice(change.move.from, 1);
73
+ items.splice(change.move.to, 0, item);
74
+ } else Object.defineProperty(parent, key, {
75
+ value: structuredClone(change.value),
76
+ enumerable: true,
77
+ configurable: true,
78
+ writable: true
79
+ });
80
+ }
81
+ return next;
82
+ };
83
+ const controlCommit = (options) => {
84
+ const active = options.after.active;
85
+ const response = options.after.coordinator.response;
86
+ return {
87
+ changes: [...options.moves, ...controlChanges({
88
+ before: options.before,
89
+ after: options.after
90
+ })],
91
+ view: {
92
+ turnId: active?.turnId ?? null,
93
+ version: active?.version ?? null,
94
+ phase: active?.phase ?? null,
95
+ paused: options.after.inbox.paused,
96
+ closed: options.after.coordinator.closed,
97
+ requestId: response?.activeRequestId ?? null,
98
+ responseMessageId: response?.responseMessageId ?? null
99
+ }
100
+ };
101
+ };
102
+ //#endregion
103
+ //#region src/ai-control.ts
104
+ const initialControlState = () => ({
105
+ reservedIds: {},
106
+ inbox: {
107
+ paused: false,
108
+ items: []
109
+ },
110
+ active: null,
111
+ coordinator: {
112
+ closed: false,
113
+ queued: []
114
+ }
115
+ });
116
+ //#endregion
117
+ export { applyControlChanges as n, controlCommit as r, initialControlState as t };
118
+
119
+ //# sourceMappingURL=ai-control-CcD4hh3y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-control-CcD4hh3y.js","names":[],"sources":["../src/ai-control-state.ts","../src/ai-control.ts"],"sourcesContent":["import type {\n AIControlState,\n ControlCommit,\n ControlChange,\n} from './ai-control.ts'\nimport type { UIMessage } from 'ai'\n\ntype RecordValue = Record<string, unknown> | unknown[]\nconst container = (value: unknown): value is RecordValue =>\n typeof value === 'object' && value !== null\nconst same = (left: unknown, right: unknown): boolean =>\n JSON.stringify(left) === JSON.stringify(right)\n\nexport const controlChanges = ({\n before,\n after,\n}: {\n before: unknown\n after: unknown\n}): ControlChange[] => {\n const changes: ControlChange[] = []\n const visit = (\n left: unknown,\n right: unknown,\n path: (string | number)[],\n ): void => {\n if (same(left, right)) return\n if (Array.isArray(left) && Array.isArray(right)) {\n let prefix = 0\n while (\n prefix < Math.min(left.length, right.length) &&\n same(left[prefix], right[prefix])\n )\n prefix += 1\n let suffix = 0\n while (\n suffix < Math.min(left.length, right.length) - prefix &&\n same(left[left.length - 1 - suffix], right[right.length - 1 - suffix])\n )\n suffix += 1\n if (left.length === right.length) {\n for (let index = prefix; index < left.length - suffix; index += 1)\n visit(left[index], right[index], [...path, index])\n } else\n changes.push({\n path,\n splice: {\n index: prefix,\n deleteCount: left.length - prefix - suffix,\n items: right.slice(prefix, right.length - suffix),\n },\n })\n return\n }\n if (\n container(left) &&\n container(right) &&\n !Array.isArray(left) &&\n !Array.isArray(right)\n ) {\n for (const key of Object.keys(left))\n if (!Object.hasOwn(right, key))\n changes.push({ path: [...path, key], remove: true })\n for (const key of Object.keys(right))\n visit(Object.hasOwn(left, key) ? left[key] : undefined, right[key], [\n ...path,\n key,\n ])\n return\n }\n changes.push({ path, value: right })\n }\n visit(before, after, [])\n return changes\n}\n\nexport const applyControlChanges = <T>({\n state,\n changes,\n}: {\n state: T\n changes: readonly ControlChange[]\n}): T => {\n if (changes.length === 0) return state\n let next = structuredClone(state)\n for (const change of changes) {\n const path = change.path\n if (path.length === 0) {\n next = structuredClone(change.value) as T\n continue\n }\n let target: unknown = next\n for (const key of path.slice(0, -1)) {\n if (!container(target) || !Object.hasOwn(target, key))\n throw new TypeError('Invalid AI control change path')\n target = (target as Record<string | number, unknown>)[key]\n }\n if (!container(target))\n throw new TypeError('Invalid AI control change target')\n const parent = target as Record<string | number, unknown>\n const key = path.at(-1)!\n if (change.remove) delete parent[key]\n else if (change.splice) {\n const items = parent[key] as unknown[]\n Object.defineProperty(parent, key, {\n value: [\n ...items.slice(0, change.splice.index),\n ...structuredClone(change.splice.items),\n ...items.slice(change.splice.index + change.splice.deleteCount),\n ],\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else if (change.move) {\n const items = parent[key] as unknown[]\n const [item] = items.splice(change.move.from, 1)\n items.splice(change.move.to, 0, item)\n } else\n Object.defineProperty(parent, key, {\n value: structuredClone(change.value),\n enumerable: true,\n configurable: true,\n writable: true,\n })\n }\n return next\n}\n\nexport const controlCommit = <M extends UIMessage>(options: {\n before: AIControlState<M>\n after: AIControlState<M>\n moves: ControlChange[]\n}): ControlCommit => {\n const active = options.after.active\n const response = options.after.coordinator.response\n return {\n changes: [\n ...options.moves,\n ...controlChanges({ before: options.before, after: options.after }),\n ],\n view: {\n turnId: active?.turnId ?? null,\n version: active?.version ?? null,\n phase: active?.phase ?? null,\n paused: options.after.inbox.paused,\n closed: options.after.coordinator.closed,\n requestId: response?.activeRequestId ?? null,\n responseMessageId: response?.responseMessageId ?? null,\n },\n }\n}\n","import type { UIMessage } from 'ai'\nimport type { AICoordinatorState } from './ai-coordinator.ts'\nimport type {\n ApprovalRespondedPayload,\n GenerationStartedPayload,\n InputRequestedPayload,\n InputRespondedPayload,\n MessageInterruptedPayload,\n RetryRequestedPayload,\n ToolCalledPayload,\n ToolResultPayload,\n} from './ai.ts'\n\nexport type InboxItem<M extends UIMessage = UIMessage> = {\n id: string\n revision: number\n message: M\n generate: boolean\n afterStepOf?: string\n}\n\nexport type ControlCommand<M extends UIMessage = UIMessage> =\n | { action: 'send'; message: M; generate?: boolean }\n | { action: 'edit'; message: M; expectedRevision: number }\n | { action: 'move'; inputId: string; beforeId: string | null }\n | { action: 'remove'; inputId: string }\n | {\n action: 'send-now'\n inputId: string\n turnId: string | null\n lastSeenIndex?: number\n }\n | { action: 'stop'; turnId: string; lastSeenIndex?: number }\n | { action: 'steer'; turnId: string; message: M; lastSeenIndex?: number }\n | { action: 'pause'; when: 'now' | 'after-turn' }\n | { action: 'resume' }\n | { action: 'tool-result'; result: ToolResultPayload }\n | { action: 'approval'; response: ApprovalRespondedPayload }\n | { action: 'input'; response: InputRespondedPayload }\n | { action: 'request-input'; request: InputRequestedPayload }\n | { action: 'retry'; request: RetryRequestedPayload }\n | { action: 'interrupt'; request: MessageInterruptedPayload }\n\nexport type ControlReceipt = {\n commandId: string\n work?: true\n outcome: 'applied' | 'rejected'\n reason?:\n | 'already-active'\n | 'revision-conflict'\n | 'stale-turn'\n | 'not-found'\n | 'duplicate-input'\n | 'closed'\n | 'stale-work'\n | 'not-user-input'\n}\n\nexport type ActiveTurn<M extends UIMessage = UIMessage> = {\n turnId: string\n input: InboxItem<M>\n phase:\n | 'starting'\n | 'generating'\n | 'tools'\n | 'waiting'\n | 'failed'\n | 'pausing'\n | 'paused'\n}\n\nexport type ControlWork = {\n id: string\n version: number\n settled: boolean\n attempt?: number\n facts?: string[]\n}\n\nexport type AIControlState<M extends UIMessage = UIMessage> = {\n reservedIds: Record<string, true | 'removed'>\n inbox: { paused: boolean; items: InboxItem<M>[] }\n active:\n | (ActiveTurn<M> & {\n version: number\n suspended: boolean\n model: ControlWork | null\n })\n | null\n coordinator: AICoordinatorState\n}\n\nexport type WorkFact = { type: string; id: string; payload: unknown }\nexport type WorkReport = {\n attempt: number\n workId: string\n turnId: string\n version: number\n kind: 'model' | 'tool'\n settled: boolean\n events: WorkFact[]\n}\n\nexport type ToolExecutionRequest = {\n turnId: string\n version: number\n call: ToolCalledPayload\n generation: GenerationStartedPayload\n}\n\nexport const initialControlState = <\n M extends UIMessage,\n>(): AIControlState<M> => ({\n reservedIds: {},\n inbox: { paused: false, items: [] },\n active: null,\n coordinator: { closed: false, queued: [] },\n})\n\nexport type ControlChange = {\n path: (string | number)[]\n value?: unknown\n remove?: true\n splice?: { index: number; deleteCount: number; items: unknown[] }\n move?: { from: number; to: number }\n}\n\nexport type ControlCommit = {\n changes: ControlChange[]\n view: {\n turnId: string | null\n version: number | null\n phase: ActiveTurn['phase'] | null\n paused: boolean\n closed: boolean\n requestId: string | null\n responseMessageId: string | null\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { a as ContractEvent, s as EventDefs } from "./reducer-DJKWm3cp.js";
2
- import { n as A2Server, p as ServerOptions } from "./server-DjZZa1wr.js";
3
- import { AIEventDefs, AIState, AgentDefinition, AgentToolContext, AgentToolEventDefs } from "./ai.js";
1
+ import { a as ContractEvent, s as EventDefs } from "./reducer-BcS9VDKC.js";
2
+ import { n as A2Server, p as ServerOptions, s as HandlerContext } from "./server-Bp5Nd1pF.js";
3
+ import { l as AgentToolContext, o as AgentDefinition, r as AIState, t as AIEventDefs, u as AgentToolEventDefs } from "./ai-Cai-lCbj.js";
4
4
  import { Instructions, LanguageModel, ModelMessage, TextStreamPart, ToolSet, ToolSet as ToolSet$1, UIMessage, UIMessageChunk, streamText } from "ai";
5
5
  //#region src/ai-sdk-step.d.ts
6
6
  type StreamTextOptions<T extends ToolSet$1> = Parameters<typeof streamText<T>>[0];
@@ -46,7 +46,7 @@ type AgentGenerateContext<M extends UIMessage, D extends AIEventDefs<M> & EventD
46
46
  messages: M[];
47
47
  modelMessages: ModelMessage[];
48
48
  state: AIState<M>;
49
- history: ContractEvent<D>[];
49
+ session: Pick<HandlerContext<D>["session"], "state">;
50
50
  signal: AbortSignal;
51
51
  model: LanguageModel;
52
52
  tools: T;
@@ -61,7 +61,7 @@ type AgentMessageMetadata<M extends UIMessage, D extends AIEventDefs<M> & EventD
61
61
  type AgentResolverContext<M extends UIMessage, D extends AIEventDefs<M> & EventDefs> = {
62
62
  event: ContractEvent<D, "ai.generation.requested">;
63
63
  state: AIState<M>;
64
- history: ContractEvent<D>[];
64
+ session: Pick<HandlerContext<D>["session"], "state">;
65
65
  signal: AbortSignal;
66
66
  };
67
67
  type Resolvable<T, C> = T | ((context: C) => T | Promise<T>);
@@ -100,7 +100,7 @@ type CreateHandlersOptions<M extends UIMessage, D extends AIEventDefs<M> & Event
100
100
  * The custom stream owns its metadata chunks.
101
101
  */
102
102
  generate?: AgentGenerate<M, D, T>;
103
- compaction?: CompactionOptions<M, D> | ((context: AgentResolverContext<M, D>) => CompactionOptions<M, D>);
103
+ compaction?: Resolvable<CompactionOptions<M, D>, AgentResolverContext<M, D>>;
104
104
  /** Progress is durably flushed at either limit, whichever is reached first. */
105
105
  progress?: {
106
106
  maxChunks?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-server.d.ts","names":[],"sources":["../src/ai-sdk-step.ts","../src/ai-server.ts"],"mappings":"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"}
1
+ {"version":3,"file":"ai-server.d.ts","names":[],"sources":["../src/ai-sdk-step.ts","../src/ai-server.ts"],"mappings":"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"}