experimental-a2 0.0.0 → 0.2.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 +43 -0
- package/dist/ai-server.browser.js +2 -2
- package/dist/ai-server.d.ts +19 -7
- package/dist/ai-server.js +730 -96
- package/dist/ai.d.ts +32 -11
- package/dist/ai.js +253 -75
- package/dist/client.d.ts +1 -1
- package/dist/client.js +4 -4
- package/dist/{contract-B0kAXoaL.js → contract-CG_adnu_.js} +2 -1
- package/dist/{contract-DL8btVd9.d.ts → contract-C_3dIIEU.d.ts} +4 -1
- package/dist/devtools-server.browser.js +2 -2
- package/dist/devtools-server.js +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/http.js +4 -3
- package/dist/idempotent-replay-BMyHrP0L.js +19 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{internal-Dm8Ejnud.js → internal-D6wNxTck.js} +3 -3
- package/dist/{log-Dg1I8NRr.d.ts → log-ldf5g8Cx.d.ts} +74 -56
- package/dist/log-memory.d.ts +1 -1
- package/dist/log-memory.js +173 -96
- package/dist/{log-polling-RO7kclzR.js → log-polling-6COoN60V.js} +1 -1
- package/dist/log-postgres.d.ts +1 -1
- package/dist/log-postgres.js +235 -192
- package/dist/log-redis.d.ts +1 -1
- package/dist/log-redis.js +453 -263
- package/dist/log-sqlite.d.ts +1 -1
- package/dist/log-sqlite.js +216 -127
- package/dist/otel.d.ts +1 -1
- package/dist/otel.js +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +1 -1
- package/dist/recovery-vercel.d.ts +2 -2
- package/dist/recovery-vercel.js +9 -10
- package/dist/server-DJgD2YWP.js +877 -0
- package/dist/server.browser.js +4 -4
- package/dist/server.d.ts +46 -27
- package/dist/server.js +1 -1
- package/dist/{telemetry-C78al20p.d.ts → telemetry-Cso0qyHQ.d.ts} +1 -1
- package/dist/{wire-2QpU1EtJ.js → wire-BVsgR8o9.js} +1 -1
- package/docs/01-quickstart.mdx +7 -7
- package/docs/concepts/01-contracts.mdx +22 -22
- package/docs/concepts/02-handlers.mdx +223 -89
- package/docs/concepts/03-durability.mdx +199 -112
- package/docs/concepts/04-state.mdx +27 -1
- package/docs/guides/01-timers.mdx +4 -4
- package/docs/guides/02-cancellation.mdx +32 -4
- package/docs/guides/05-production.mdx +61 -27
- package/docs/guides/06-ai-agents.mdx +151 -70
- package/docs/guides/07-devtools.mdx +6 -3
- package/docs/guides/08-application-data.mdx +5 -6
- package/docs/index.mdx +30 -14
- package/docs/reference/01-api.mdx +305 -70
- package/package.json +31 -31
- package/dist/server-DYsnKTTy.js +0 -780
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 056cf86: Add `session.append.dispatch(...events)` to persist events and hand pending
|
|
8
|
+
handler work directly to configured recovery instead of starting it inline.
|
|
9
|
+
|
|
10
|
+
## 0.1.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 6a1fb4c: Run each AI SDK model step as one durable A2 generation and execute ready tools
|
|
15
|
+
concurrently. Keep approvals, tool results, retries, queued user turns, and the
|
|
16
|
+
single continuation barrier recoverable through the event log.
|
|
17
|
+
- 48e3b58: Add `experimental-a2/devtools/server`, a read-only HTTP dashboard over durable event,
|
|
18
|
+
processing, failure, and snapshot metadata. Serve the complete browser UI and
|
|
19
|
+
live SSE invalidations from one authenticated handler without a client package
|
|
20
|
+
or separate datastore.
|
|
21
|
+
- 78a9c3f: Persist atomic same-session causes plus event claim, write-once completion, and
|
|
22
|
+
failure summaries inside existing log operations.
|
|
23
|
+
- 352be59: Run handlers concurrently by default with durable per-event claims. Add
|
|
24
|
+
session-scoped `lane` ordering, atomic handler returns for one event or an
|
|
25
|
+
event batch, and a shared `ctx.session` interface with reducer-state reads and
|
|
26
|
+
named immediate appends.
|
|
27
|
+
- 3ca23b1: Add the extensible `experimental-a2/ai` agent protocol and the AI SDK-backed `experimental-a2/ai/server`
|
|
28
|
+
runtime. Let `createReact` bind a shared client whose stable live session
|
|
29
|
+
identities carry optimistic state across route handoffs and accept
|
|
30
|
+
server-rendered event history for a complete first paint. Keep an optimistic
|
|
31
|
+
agent interruption terminal when in-flight generation events arrive after it.
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- 5679f4f: Retry lazy log and recovery initialization after transient failures while still
|
|
36
|
+
deduplicating concurrent attempts. Serialize Postgres schema creation across
|
|
37
|
+
serverless instances so racing cold starts cannot poison a warm instance.
|
|
38
|
+
- 167371a: Publish A2 temporarily as `experimental-a2` and update every public import
|
|
39
|
+
path to match.
|
|
40
|
+
- 0cb72af: Settle event types without registered handlers atomically during append. Skip
|
|
41
|
+
drains, leases, and recovery messages when a session has no pending handler
|
|
42
|
+
work, while preserving append-driven healing for older handled events. Custom
|
|
43
|
+
log adapters now return `{ events, hasPending }` from `A2Log.append()` so this
|
|
44
|
+
decision is part of the atomic append operation.
|
|
45
|
+
|
|
3
46
|
Notable changes to the `experimental-a2` package. The telemetry span/attribute
|
|
4
47
|
catalogue (see the API reference) is treated as a contract: renames and
|
|
5
48
|
additions are breaking for dashboards and are called out here.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/ai-server.browser.ts
|
|
2
|
-
/** a2/ai/server is server-only; agent definitions live in a2/ai. */
|
|
3
|
-
throw new Error("a2/ai/server is server-only — a client bundle imported it. Import agent from a2/ai in browser code instead.");
|
|
2
|
+
/** experimental-a2/ai/server is server-only; agent definitions live in experimental-a2/ai. */
|
|
3
|
+
throw new Error("experimental-a2/ai/server is server-only — a client bundle imported it. Import agent from experimental-a2/ai in browser code instead.");
|
|
4
4
|
//#endregion
|
package/dist/ai-server.d.ts
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as EventDefs, r as ContractEvent } from "./contract-C_3dIIEU.js";
|
|
2
2
|
import { AIEventDefs, AIState, AgentDefinition } from "./ai.js";
|
|
3
|
-
import { A2Server, ServerOptions } from "./server.js";
|
|
4
|
-
import { Instructions, LanguageModel,
|
|
3
|
+
import { A2Server, PushValidationContext, ServerOptions } from "./server.js";
|
|
4
|
+
import { Instructions, LanguageModel, ToolSet, ToolSet as ToolSet$1, UIMessage, UIMessageChunk, streamText } from "ai";
|
|
5
|
+
//#region src/ai-sdk-step.d.ts
|
|
6
|
+
type StreamTextOptions<T extends ToolSet$1> = Parameters<typeof streamText<T>>[0];
|
|
7
|
+
type ModelStepTimeout<T extends ToolSet$1> = number | Omit<Exclude<StreamTextOptions<T>["timeout"], number | undefined>, "toolMs" | "tools">;
|
|
8
|
+
type ControlledStreamTextSetting = "_internal" | "abortSignal" | "instructions" | "messages" | "model" | "onToolExecutionEnd" | "onToolExecutionStart" | "experimental_onToolCallFinish" | "experimental_onToolCallStart" | "experimental_sandbox" | "experimental_toolCallers" | "experimental_toolApprovalSecret" | "prompt" | "prepareStep" | "stopWhen" | "system" | "tools" | "toolsContext";
|
|
9
|
+
/** AI SDK streamText settings that remain meaningful for one durable step. */
|
|
10
|
+
type AISDKStepSettings<T extends ToolSet$1> = Partial<Omit<StreamTextOptions<T>, ControlledStreamTextSetting | "timeout">> & {
|
|
11
|
+
timeout?: ModelStepTimeout<T>;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
5
14
|
//#region src/ai-server.d.ts
|
|
15
|
+
declare function validateAgentPush(context: PushValidationContext): void;
|
|
6
16
|
type AgentGenerateContext<M extends UIMessage, D extends AIEventDefs<M> & EventDefs, T extends ToolSet> = {
|
|
7
17
|
request: ContractEvent<D, "ai.generation.requested">;
|
|
8
18
|
requestId: string;
|
|
@@ -33,15 +43,17 @@ type CompactionPolicy<M extends UIMessage, D extends AIEventDefs<M> & EventDefs>
|
|
|
33
43
|
messages: M[];
|
|
34
44
|
}): M[] | Promise<M[]>;
|
|
35
45
|
};
|
|
36
|
-
type AgentGenerationSettings<T extends ToolSet> =
|
|
46
|
+
type AgentGenerationSettings<T extends ToolSet> = AISDKStepSettings<T>;
|
|
37
47
|
type CreateHandlersOptions<M extends UIMessage, D extends AIEventDefs<M> & EventDefs, T extends ToolSet = ToolSet> = {
|
|
38
48
|
agent: AgentDefinition<M, D>;
|
|
39
49
|
/** AI SDK model string or provider model, optionally resolved per generation. */
|
|
40
50
|
model: Resolvable<LanguageModel, AgentResolverContext<M, D>>;
|
|
41
51
|
tools?: T;
|
|
42
52
|
instructions?: Resolvable<Instructions | undefined, AgentResolverContext<M, D>>;
|
|
43
|
-
/**
|
|
53
|
+
/** Settings for each one-step AI SDK streamText call. */
|
|
44
54
|
generation?: AgentGenerationSettings<T>;
|
|
55
|
+
/** Maximum model steps in one assistant response. Defaults to 20. */
|
|
56
|
+
maxSteps?: number;
|
|
45
57
|
/** Replace model generation with an AI SDK UI message chunk stream. */
|
|
46
58
|
generate?: AgentGenerate<M, D, T>;
|
|
47
59
|
compaction?: CompactionPolicy<M, D>;
|
|
@@ -51,7 +63,7 @@ type CreateHandlersOptions<M extends UIMessage, D extends AIEventDefs<M> & Event
|
|
|
51
63
|
maxDelayMs?: number;
|
|
52
64
|
};
|
|
53
65
|
};
|
|
54
|
-
type CreateAgentServerOptions<M extends UIMessage, D extends AIEventDefs<M> & EventDefs, T extends ToolSet = ToolSet> = CreateHandlersOptions<M, D, T> & Omit<ServerOptions<D>, "contract" | "handlers"> & {
|
|
66
|
+
type CreateAgentServerOptions<M extends UIMessage, D extends AIEventDefs<M> & EventDefs, T extends ToolSet = ToolSet> = CreateHandlersOptions<M, D, T> & Omit<ServerOptions<D>, "contract" | "handlers" | "validatePush"> & {
|
|
55
67
|
handlers?: ServerOptions<D>["handlers"];
|
|
56
68
|
};
|
|
57
69
|
/**
|
|
@@ -62,4 +74,4 @@ declare function createHandlers<M extends UIMessage, D extends AIEventDefs<M> &
|
|
|
62
74
|
/** Assemble an A2 server with the built-in agent handlers and app extensions. */
|
|
63
75
|
declare function createAgentServer<M extends UIMessage, D extends AIEventDefs<M> & EventDefs, T extends ToolSet = ToolSet>(options: CreateAgentServerOptions<M, D, T>): A2Server<D>;
|
|
64
76
|
//#endregion
|
|
65
|
-
export { AgentGenerate, AgentGenerateContext, AgentGenerationSettings, AgentResolverContext, CompactionPolicy, CreateAgentServerOptions, CreateHandlersOptions, type Instructions, type LanguageModel, Resolvable, type
|
|
77
|
+
export { AgentGenerate, AgentGenerateContext, AgentGenerationSettings, AgentResolverContext, CompactionPolicy, CreateAgentServerOptions, CreateHandlersOptions, type Instructions, type LanguageModel, Resolvable, type ToolSet, createAgentServer, createHandlers, validateAgentPush };
|