experimental-a2 0.15.0 → 0.16.1
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 +81 -0
- package/dist/actor-client.d.ts +1 -1
- package/dist/{actor-BfQSE0KC.d.ts → actor-ohPC-81x.d.ts} +5 -5
- package/dist/{actor-BfQSE0KC.d.ts.map → actor-ohPC-81x.d.ts.map} +1 -1
- package/dist/actor-react.d.ts +3 -3
- package/dist/actor.d.ts +1 -1
- package/dist/actor.js +1 -1
- package/dist/{ai-Cai-lCbj.d.ts → ai-CrEf6p_W.d.ts} +73 -14
- package/dist/ai-CrEf6p_W.d.ts.map +1 -0
- package/dist/ai-DgOBltJ_.js +2451 -0
- package/dist/ai-DgOBltJ_.js.map +1 -0
- package/dist/ai-server.d.ts +4 -5
- package/dist/ai-server.d.ts.map +1 -1
- package/dist/ai-server.js +788 -296
- package/dist/ai-server.js.map +1 -1
- package/dist/ai.d.ts +2 -2
- package/dist/ai.js +1 -1999
- package/dist/client-BYzHjkwU.js.map +1 -1
- package/dist/{client-BAEABRZB.d.ts → client-CzyacQpJ.d.ts} +9 -9
- package/dist/client-CzyacQpJ.d.ts.map +1 -0
- package/dist/client.d.ts +1 -1
- package/dist/idempotent-id-BRJVeylj.js +13 -0
- package/dist/idempotent-id-BRJVeylj.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -12
- package/dist/otel.d.ts +1 -1
- package/dist/react.d.ts +13 -13
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js.map +1 -1
- package/dist/reducer-DEMjEY_O.js.map +1 -1
- package/dist/{reducer-BcS9VDKC.d.ts → reducer-otzHjuJj.d.ts} +3 -3
- package/dist/{reducer-BcS9VDKC.d.ts.map → reducer-otzHjuJj.d.ts.map} +1 -1
- package/dist/scheduler-qstash.d.ts +2 -2
- package/dist/scheduler-qstash.js +1 -1
- package/dist/scheduler-vercel.d.ts +2 -2
- package/dist/scheduler-vercel.js +1 -1
- package/dist/{server-CjJSGcF7.js → server-BD5ckxZb.js} +39 -26
- package/dist/server-BD5ckxZb.js.map +1 -0
- package/dist/{server-Bp5Nd1pF.d.ts → server-DbD7IJVK.d.ts} +5 -5
- package/dist/{server-Bp5Nd1pF.d.ts.map → server-DbD7IJVK.d.ts.map} +1 -1
- package/dist/server.d.ts +3 -3
- package/dist/server.js +1 -1
- package/dist/{store-D_yhNdPz.d.ts → store-DyZM6fS5.d.ts} +3 -2
- package/dist/{store-D_yhNdPz.d.ts.map → store-DyZM6fS5.d.ts.map} +1 -1
- package/dist/store-N8PXxDAS.js.map +1 -1
- package/dist/store-memory.d.ts +1 -1
- package/dist/store-postgres.d.ts +1 -1
- package/dist/store-redis-http.d.ts +1 -1
- package/dist/store-redis-http.js +1 -1
- package/dist/{store-redis-notify-D2EI6gwX.js → store-redis-notify-BVLUfI3j.js} +14 -13
- package/dist/store-redis-notify-BVLUfI3j.js.map +1 -0
- package/dist/store-redis.d.ts +1 -1
- package/dist/store-redis.js +1 -1
- package/dist/store-sqlite.d.ts +1 -1
- package/dist/{telemetry-CpeclqB2.d.ts → telemetry-B5jzpy6y.d.ts} +2 -2
- package/dist/telemetry-B5jzpy6y.d.ts.map +1 -0
- package/docs/concepts/04-state.mdx +9 -4
- package/docs/guides/06-ai-agents.mdx +149 -48
- package/docs/reference/01-api.mdx +110 -28
- package/examples/playground/app/agent/[agentId]/agent-client.tsx +20 -28
- package/examples/playground/app/agent/[agentId]/agent-queue.test.tsx +123 -0
- package/examples/playground/app/agent/[agentId]/agent-queue.tsx +37 -43
- package/examples/playground/app/agent/[agentId]/compaction-panel.tsx +44 -24
- package/examples/playground/app/agent/compaction-timeline.test.ts +47 -7
- package/examples/playground/app/agent/compaction-timeline.ts +13 -3
- package/examples/playground/app/chat/[chatId]/chat-client.tsx +1 -5
- package/examples/playground/app/chat/[chatId]/session.ts +17 -2
- package/examples/playground/app/chat/model.test.ts +4 -4
- package/examples/playground/app/chat/model.ts +18 -6
- package/examples/playground/app/chat/server.ts +6 -3
- package/examples/playground/package.json +3 -1
- package/package.json +1 -1
- package/src/ai-client-state.ts +36 -4
- package/src/ai-context-schema.ts +296 -0
- package/src/ai-context.ts +680 -0
- package/src/ai-control-server.ts +183 -135
- package/src/ai-control-state.ts +6 -0
- package/src/ai-control.ts +8 -7
- package/src/ai-coordinator.ts +92 -38
- package/src/ai-id.ts +6 -0
- package/src/ai-input-tokens.ts +75 -0
- package/src/ai-message-projection.ts +474 -0
- package/src/ai-server.ts +247 -336
- package/src/ai-stored-state.ts +484 -0
- package/src/ai.ts +255 -538
- package/src/client.ts +21 -15
- package/src/react.ts +25 -19
- package/src/reducer.ts +2 -1
- package/src/server.ts +73 -56
- package/src/store-redis-core.ts +15 -17
- package/src/store.ts +1 -0
- package/src/telemetry.ts +2 -1
- package/dist/ai-Cai-lCbj.d.ts.map +0 -1
- package/dist/ai-control-CcD4hh3y.js +0 -119
- package/dist/ai-control-CcD4hh3y.js.map +0 -1
- package/dist/ai.js.map +0 -1
- package/dist/client-BAEABRZB.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/server-CjJSGcF7.js.map +0 -1
- package/dist/store-redis-notify-D2EI6gwX.js.map +0 -1
- package/dist/telemetry-CpeclqB2.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,86 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8516609: Restore optimistic Stop previews at the observed generation frontier, clearing the displayed active turn until confirmation or rejection. Cancel model and tool work from the persisted Stop without waiting for control processing, and skip jobs created while their turn has a pending Stop. Keep turn ownership checks and canonical inbox advancement.
|
|
8
|
+
|
|
9
|
+
The default AI checkpoint key is now `a2.ai.state.v22:records-v2`; the internal control checkpoint key is `a2.ai.control.v5`. Custom AI reducer names need a version bump to replay pending Stops from older checkpoints.
|
|
10
|
+
|
|
11
|
+
## 0.16.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- 4798a8e: Separate compacted AI model context from execution control and the full client
|
|
16
|
+
transcript. Successful compaction is permanent: failure, stop, retry, and worker
|
|
17
|
+
recovery never restore pre-compaction content. Retry reruns only the unfinished
|
|
18
|
+
model step and preserves completed steps.
|
|
19
|
+
|
|
20
|
+
Server callbacks receive prompt messages and request information without
|
|
21
|
+
`state` or `execution` arguments. Model and instruction resolvers receive
|
|
22
|
+
`{ event, messages, session, signal }`. Custom transcript folds and schemas
|
|
23
|
+
apply only to the transcript; read application reducers through `session.state()`.
|
|
24
|
+
|
|
25
|
+
Store AI snapshots as normalized `AIStoredState`, sharing payload records and
|
|
26
|
+
keeping inverse changes for the current generation projection. Server callers
|
|
27
|
+
use `reducer.view(snapshot.state)` for inspection and `reducer.fromView(state)`
|
|
28
|
+
for application-owned views. Hydration takes stored state; client and React
|
|
29
|
+
snapshots continue to expose the immediate `AIState` view. The stored format
|
|
30
|
+
uses version 2, with no pre-compaction recovery records.
|
|
31
|
+
|
|
32
|
+
Release covered model context, settled worker facts, and completed tool inputs.
|
|
33
|
+
Compaction waits for final tool exchanges and all A2-owned tool work to settle,
|
|
34
|
+
including stopped or superseded turns. Each candidate reads one fresh coordinator
|
|
35
|
+
checkpoint. Cold tools restore their prompt from the tool-admission checkpoint
|
|
36
|
+
without a separate history read. No new service, subscription, or timer is added.
|
|
37
|
+
The transcript remains available in full.
|
|
38
|
+
|
|
39
|
+
- f917f8a: Make queued-message edits last-write-wins in session log order. Use
|
|
40
|
+
`inputs.queue.edit({ message })`; `expectedRevision` and `InboxItem.revision` are
|
|
41
|
+
removed. Rapid edits remain optimistic while earlier edits await confirmation.
|
|
42
|
+
Editing an admitted message still returns `not-pending`, and changing a
|
|
43
|
+
message's role returns `role-mismatch`.
|
|
44
|
+
- 32a2f76: Use bounded deterministic IDs in the reserved `a2.ai:` namespace for AI requests,
|
|
45
|
+
generations, assistant responses, worker jobs, reports, and lifecycle events.
|
|
46
|
+
Ownership comes from explicit event fields instead of recursive ID strings.
|
|
47
|
+
|
|
48
|
+
Generation requests require `responseMessageId`; tool continuations also require
|
|
49
|
+
`sourceGenerationId`. Approval and application-input payloads require `requestId`.
|
|
50
|
+
`AIState.responseOwners` records generation ID, request ID, and attempt.
|
|
51
|
+
|
|
52
|
+
Send, seed, and steering event IDs equal their input message IDs. The initial
|
|
53
|
+
model-request event ID is also the assistant message ID. Identical submissions
|
|
54
|
+
replay through core deduplication; conflicting payload, action, or session reuse
|
|
55
|
+
rejects before append. Caller command/input IDs must be nonempty and cannot use
|
|
56
|
+
the reserved prefix. Helpers stay synchronous and deterministic.
|
|
57
|
+
|
|
58
|
+
Remove the lifetime input/response-ID registry from control checkpoints. Missing
|
|
59
|
+
queue targets return `not-pending` regardless of prior admission or removal.
|
|
60
|
+
No storage operations, subscriptions, or timers are added. Use fresh sessions
|
|
61
|
+
and matching helpers/handlers; no legacy protocol adapter is provided.
|
|
62
|
+
|
|
63
|
+
- 8959e66: Return one selected snapshot and a scalar head index from Redis state reads.
|
|
64
|
+
Eligible head snapshots skip the historical checkpoint lookup. Snapshot selection
|
|
65
|
+
and event-frontier capture remain atomic.
|
|
66
|
+
|
|
67
|
+
Propagate operational state-read failures with their backend diagnostics, instead
|
|
68
|
+
of silently retrying individual reads or rebuilding from raw
|
|
69
|
+
history. Missing and schema-rejected snapshots still rebuild normally.
|
|
70
|
+
|
|
71
|
+
Keep checkpoint writes in the background and report failures through a new
|
|
72
|
+
`a2.snapshot` telemetry span, or the default console sink. Include session,
|
|
73
|
+
reducer, greatest checkpoint index, and batch count without snapshot contents.
|
|
74
|
+
|
|
75
|
+
### Patch Changes
|
|
76
|
+
|
|
77
|
+
- 9f772b7: Exclude provider metadata from compaction token estimates without changing model
|
|
78
|
+
requests. Calibrate growing prompts against reported usage in either direction.
|
|
79
|
+
Record the pre-compaction estimate, calibrated input tokens, and threshold in
|
|
80
|
+
automatic compaction requests.
|
|
81
|
+
|
|
82
|
+
Count serialized UTF-8 bytes without allocating a second copy of the prompt.
|
|
83
|
+
|
|
3
84
|
## 0.15.0
|
|
4
85
|
|
|
5
86
|
### Minor Changes
|
package/dist/actor-client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as ActorCallResult, v as ActorRefusedError } from "./actor-
|
|
1
|
+
import { n as ActorCallResult, v as ActorRefusedError } from "./actor-ohPC-81x.js";
|
|
2
2
|
//#region src/actor-client.d.ts
|
|
3
3
|
declare class ActorRequestError extends Error {
|
|
4
4
|
readonly status: number | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { h as StandardSchemaV1, i as Contract, s as EventDefs, t as Reducer } from "./reducer-
|
|
2
|
-
import { t as A2Store } from "./store-
|
|
3
|
-
import { f as ScheduleTiming, m as Session, n as A2Server, t as A2Scheduler } from "./server-
|
|
4
|
-
import { i as A2Telemetry } from "./telemetry-
|
|
1
|
+
import { h as StandardSchemaV1, i as Contract, s as EventDefs, t as Reducer } from "./reducer-otzHjuJj.js";
|
|
2
|
+
import { t as A2Store } from "./store-DyZM6fS5.js";
|
|
3
|
+
import { f as ScheduleTiming, m as Session, n as A2Server, t as A2Scheduler } from "./server-DbD7IJVK.js";
|
|
4
|
+
import { i as A2Telemetry } from "./telemetry-B5jzpy6y.js";
|
|
5
5
|
//#region src/actor-shared.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* A handler answered by throwing `NonRetriableError`: the event
|
|
@@ -307,4 +307,4 @@ type ActorDefinition<D extends ActorProtocol> = {
|
|
|
307
307
|
declare function actor<D extends ActorProtocol>(options: ActorOptions<D>): ActorDefinition<D>;
|
|
308
308
|
//#endregion
|
|
309
309
|
export { ActorProtocol as _, ActorHandle as a, ActorScheduleSend as b, ActorOptions as c, concurrent as d, ActorConcurrentContext as f, ActorPresenceValues as g, ActorPresenceOf as h, ActorFetchOptions as i, ActorSendOptions as l, ActorPresenceMap as m, ActorCallResult as n, ActorHandler as o, ActorContext as p, ActorDefinition as r, ActorOperation as s, ActorCallOptions as t, actor as u, ActorRefusedError as v, ActorSend as x, ActorScheduleOptions as y };
|
|
310
|
-
//# sourceMappingURL=actor-
|
|
310
|
+
//# sourceMappingURL=actor-ohPC-81x.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-
|
|
1
|
+
{"version":3,"file":"actor-ohPC-81x.d.ts","names":[],"sources":["../src/actor-shared.ts","../src/actor.ts"],"mappings":";;;;;;;;;;;cAgCa,0BAA0B;;WAE5B;;WAEA;EACT,YAAY,eAAe,mBAAmB;;;;;;;;;KAepC;EACV;EACA;;;;;;;EAOA;;;KAIU,gBAAgB,UAAU,iBAAiB;EACrD,gBAAgB;IAEd;;KAIQ,oBAAoB,QAC7B,WAAW,cAAc,EAAE;;;;;;KAQlB,iBAAiB;GAExB,yBAAA,WAAW;IAAgB,OAAO,EAAE;IAAI;IAAc,IAAI;;;;;;;;;;;;KAanD,UAAU,iBACV,WAAW,eAAe,EAAE,MACjC,QAAQ,EAAE,eACV,OAAO,EAAE;;;;;;;;;KAWJ,uBAAuB;EAAmB;;;;;;;;;;;;KAY1C,kBAAkB,iBAClB,WAAW,eAAe,EAAE,MACjC,OAAO,EAAE,gBAAgB,SAAS,yBAAyB,iBAC3D,OAAO,EAAE,IAAI,SAAS,yBAAyB;;KAI1C,aAAa,UAAU;;EAEjC,OAAO;;EAEP;;EAEA;;EAEA,QAAQ;;EAER,MAAM,UAAU;;EAEhB,UAAU,kBAAkB;;;;;;;;KASlB,uBAAuB,UAAU;;EAE3C;;EAEA;;EAEA,QAAQ;;EAER,SAAS;IAAU,OAAO;IAAY;;;EAEtC,MAAM,UAAU;;EAEhB,UAAU,kBAAkB;;KAGlB,kBAAkB;EAC5B,OAAO;;EAEP;;EAEA;;;KAWU,qBAAqB;EAC/B,kBAAkB,iBAAiB,kBAAkB;;;;;;;;;;;;;;KCzE3C,aAAa,UAAU,eAAe,gBAAgB,iBAC5D,KAAK,aAAa,IAAI,OAAO,YAAY,cAAc;EAEvD;EACA,SACE,KAAK,uBAAuB,IAC5B,OAAO,YAAY,cACT;;;;;;;;;;;;;;;;iBAiBF,WAAW,KAAK,GAC9B,SAAS,KAAK,KAAK,OAAO,aAAa;EACpC;EAAkB,SAAS,KAAK,KAAK,OAAO,aAAa;;KAIlD,aAAa,UAAU;;EAEjC;;EAEA,OAAO;;;;;EAKP,aAAa,WAAW,cAAc,aAAa,GAAG;EACtD,QAAQ;EACR,YAAY;EACZ,YAAY;MACR,gBAAgB;EAChB;;;;;;;;;;;;EAYA;;;;;;;KAQM;WACG;WAAwB;;WAExB;WACA;WACA;;WAGA;WACA;WACA;WACA;WACA;;WAGA;WACA;WACA;WACA,QAAQ,SAAS;;KAGpB,kBAAkB,UAAU;;EAEtC,aAAa,WAAW,6BAA6B;;;;;;;;;;;;EAYrD,QAAQ,OAAO;;KAGL;;EAEV;;KAGU,mBAAmB;;EAE7B;;KAGU,gBAAgB;;EAE1B,OAAO;;EAEP;;KAGG,WACH,UAAU,eACV,gBAAgB,0BACH,YAAY,MAErB,QAAQ,YAAY,IACpB,UAAU,qBACP,QAAQ,gBAAgB,gBAE3B,OAAO,YAAY,IACnB,UAAU,qBACP,QAAQ,gBAAgB;KAE5B,WACH,UAAU,eACV,gBAAgB,0BACH,YAAY,MAErB,QAAQ,YAAY,IACpB,UAAU,qBACP;EAAU;EAAY;MAEzB,OAAO,YAAY,IACnB,UAAU,qBACP;EAAU;EAAY;;;KAGnB,YAAY,UAAU;WACvB;;;;;;WAMA,kBAAkB,WAAW,cAAc,WAAW,GAAG;;WAEzD,kBAAkB,WAAW,cAAc,WAAW,GAAG;;WAEzD,aAAa,QAAQ,gBAAgB;;;;;;;;;;WAUrC,QACP,SAAS,SACT,UAAU,kBAAkB,OACzB,QAAQ;;WAEJ,SAAS,QAAQ;;KAGhB,gBAAgB,UAAU;WAC3B;;;;;;WAMA,WAAW;;WAEX,UAAU,SAAS;;WAEnB,QAAQ,SAAS;;WAEjB,SAAS,QAAQ,qBAAqB,aAAa;EAC5D,MAAM,aAAa,YAAY;;;;;;;iBAsDjB,MAAM,UAAU,eAC9B,SAAS,aAAa,KACrB,gBAAgB"}
|
package/dist/actor-react.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as ContractEvent, s as EventDefs } from "./reducer-
|
|
2
|
-
import { g as ActorPresenceValues, m as ActorPresenceMap } from "./actor-
|
|
1
|
+
import { a as ContractEvent, s as EventDefs } from "./reducer-otzHjuJj.js";
|
|
2
|
+
import { g as ActorPresenceValues, m as ActorPresenceMap } from "./actor-ohPC-81x.js";
|
|
3
3
|
import { ActorClientCall, ActorStateOf, AnyActorDefinition } from "./actor-client.js";
|
|
4
|
-
import { a as Connection } from "./client-
|
|
4
|
+
import { a as Connection } from "./client-CzyacQpJ.js";
|
|
5
5
|
//#region src/actor-react.d.ts
|
|
6
6
|
/** The server-to-client handoff: `await def.actor(id).state()`. */
|
|
7
7
|
type ActorSnapshot<S> = {
|
package/dist/actor.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as ActorProtocol, a as ActorHandle, b as ActorScheduleSend, c as ActorOptions, d as concurrent, f as ActorConcurrentContext, g as ActorPresenceValues, h as ActorPresenceOf, i as ActorFetchOptions, l as ActorSendOptions, m as ActorPresenceMap, n as ActorCallResult, o as ActorHandler, p as ActorContext, r as ActorDefinition, s as ActorOperation, t as ActorCallOptions, u as actor, v as ActorRefusedError, x as ActorSend, y as ActorScheduleOptions } from "./actor-
|
|
1
|
+
import { _ as ActorProtocol, a as ActorHandle, b as ActorScheduleSend, c as ActorOptions, d as concurrent, f as ActorConcurrentContext, g as ActorPresenceValues, h as ActorPresenceOf, i as ActorFetchOptions, l as ActorSendOptions, m as ActorPresenceMap, n as ActorCallResult, o as ActorHandler, p as ActorContext, r as ActorDefinition, s as ActorOperation, t as ActorCallOptions, u as actor, v as ActorRefusedError, x as ActorSend, y as ActorScheduleOptions } from "./actor-ohPC-81x.js";
|
|
2
2
|
export { ActorCallOptions, ActorCallResult, type ActorConcurrentContext, type ActorContext, ActorDefinition, ActorFetchOptions, ActorHandle, ActorHandler, ActorOperation, ActorOptions, type ActorPresenceMap, type ActorPresenceOf, type ActorPresenceValues, type ActorProtocol, ActorRefusedError, type ActorScheduleOptions, type ActorScheduleSend, type ActorSend, ActorSendOptions, actor, concurrent };
|
package/dist/actor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as contract } from "./contract-CKRg_E4q.js";
|
|
2
2
|
import { n as NonRetriableError, t as A2Error } from "./errors-DCk6ch5n.js";
|
|
3
|
-
import { a as sseResponse, i as setServerFetchHooks, o as parsePresenceSibling, t as createServer } from "./server-
|
|
3
|
+
import { a as sseResponse, i as setServerFetchHooks, o as parsePresenceSibling, t as createServer } from "./server-BD5ckxZb.js";
|
|
4
4
|
import { a as actorFailedSchema, c as isJsonTree, i as ActorRefusedError, l as openPresenceDefs, n as ACTOR_LANE, o as actorReducer, r as ACTOR_STATE_EVENT, s as actorStateSchema, t as ACTOR_FAILED_EVENT } from "./actor-shared-B5tJfzt-.js";
|
|
5
5
|
//#region src/actor.ts
|
|
6
6
|
/**
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { h as StandardSchemaV1, i as Contract, s as EventDefs, t as Reducer } from "./reducer-
|
|
2
|
-
import { s as HandlerContext } from "./server-
|
|
1
|
+
import { h as StandardSchemaV1, i as Contract, s as EventDefs, t as Reducer } from "./reducer-otzHjuJj.js";
|
|
2
|
+
import { s as HandlerContext } from "./server-DbD7IJVK.js";
|
|
3
3
|
import { FinishReason, JSONValue, LanguageModelUsage, UIMessage, UIMessage as UIMessage$1, UIMessageChunk, UIMessageChunk as UIMessageChunk$1 } from "ai";
|
|
4
4
|
//#region src/ai-control.d.ts
|
|
5
5
|
type InboxItem<M extends UIMessage = UIMessage> = {
|
|
6
6
|
id: string;
|
|
7
|
-
revision: number;
|
|
8
7
|
message: M;
|
|
9
8
|
generate: boolean;
|
|
10
9
|
afterStepOf?: string;
|
|
@@ -16,7 +15,6 @@ type ControlCommand<M extends UIMessage = UIMessage> = {
|
|
|
16
15
|
} | {
|
|
17
16
|
action: "edit";
|
|
18
17
|
message: M;
|
|
19
|
-
expectedRevision: number;
|
|
20
18
|
} | {
|
|
21
19
|
action: "move";
|
|
22
20
|
inputId: string;
|
|
@@ -66,7 +64,7 @@ type ControlReceipt = {
|
|
|
66
64
|
commandId: string;
|
|
67
65
|
work?: true;
|
|
68
66
|
outcome: "applied" | "rejected";
|
|
69
|
-
reason?: "
|
|
67
|
+
reason?: "not-pending" | "role-mismatch" | "stale-turn" | "not-found" | "closed" | "stale-work" | "not-user-input";
|
|
70
68
|
};
|
|
71
69
|
type ActiveTurn<M extends UIMessage = UIMessage> = {
|
|
72
70
|
turnId: string;
|
|
@@ -116,13 +114,15 @@ type ControlCommit = {
|
|
|
116
114
|
paused: boolean;
|
|
117
115
|
closed: boolean;
|
|
118
116
|
requestId: string | null;
|
|
117
|
+
requestReason: GenerationReason | null;
|
|
118
|
+
sourceGenerationId: string | null;
|
|
119
119
|
responseMessageId: string | null;
|
|
120
120
|
};
|
|
121
121
|
};
|
|
122
122
|
//#endregion
|
|
123
123
|
//#region src/ai-client-state.d.ts
|
|
124
124
|
type QueueCommand<M extends UIMessage> = Extract<ControlCommand<M>, {
|
|
125
|
-
action: "send" | "edit" | "move" | "remove" | "send-now" | "steer" | "pause" | "resume";
|
|
125
|
+
action: "send" | "edit" | "move" | "remove" | "send-now" | "steer" | "pause" | "resume" | "stop";
|
|
126
126
|
}>;
|
|
127
127
|
type PendingQueueCommand<M extends UIMessage> = {
|
|
128
128
|
commandId: string;
|
|
@@ -160,6 +160,52 @@ type ProgressBatches = {
|
|
|
160
160
|
blocks: Array<BatchBlock | null>;
|
|
161
161
|
};
|
|
162
162
|
//#endregion
|
|
163
|
+
//#region src/ai-message-projection.d.ts
|
|
164
|
+
type MessageProjection<M extends UIMessage> = Omit<ActiveGenerationProjection<M>, "baseTools">;
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/ai-stored-state.d.ts
|
|
167
|
+
type Value = null | boolean | number | string | Value[] | {
|
|
168
|
+
[key: string]: Value;
|
|
169
|
+
};
|
|
170
|
+
type Payload = {
|
|
171
|
+
value?: unknown;
|
|
172
|
+
};
|
|
173
|
+
type Undo = {
|
|
174
|
+
value: Value;
|
|
175
|
+
} | {
|
|
176
|
+
length: number;
|
|
177
|
+
items: Record<string, Undo>;
|
|
178
|
+
} | {
|
|
179
|
+
fields: Record<string, Undo>;
|
|
180
|
+
remove: string[];
|
|
181
|
+
};
|
|
182
|
+
type Projection = {
|
|
183
|
+
fields: Value;
|
|
184
|
+
hasMessage: boolean;
|
|
185
|
+
message?: Undo;
|
|
186
|
+
tools?: Undo;
|
|
187
|
+
};
|
|
188
|
+
type AIStoredState = {
|
|
189
|
+
version: 2;
|
|
190
|
+
fields: Value;
|
|
191
|
+
projection: Projection | null;
|
|
192
|
+
values: Payload[];
|
|
193
|
+
};
|
|
194
|
+
type AIStoredView = {
|
|
195
|
+
messages: UIMessage[];
|
|
196
|
+
activeProjection: (MessageProjection<UIMessage> & {
|
|
197
|
+
baseTools?: AIState["tools"];
|
|
198
|
+
}) | null;
|
|
199
|
+
tools?: AIState["tools"];
|
|
200
|
+
usage?: AIState["usage"];
|
|
201
|
+
};
|
|
202
|
+
declare const aiStateReducer: unique symbol;
|
|
203
|
+
type AIStoredReducer<D extends EventDefs, S extends AIStoredView> = Reducer<D, AIStoredState, Record<never, never>, S> & {
|
|
204
|
+
readonly [aiStateReducer]: Reducer<D, S>;
|
|
205
|
+
view(state: AIStoredState): S;
|
|
206
|
+
fromView(state: S): AIStoredState;
|
|
207
|
+
};
|
|
208
|
+
//#endregion
|
|
163
209
|
//#region src/ai.d.ts
|
|
164
210
|
type AgentStatus = "idle" | "generating" | "waiting" | "failed" | "closed" | "paused";
|
|
165
211
|
type GenerationReason = "message" | "tool" | "input" | "retry" | "resume";
|
|
@@ -197,7 +243,8 @@ type GenerationRequestedPayload = {
|
|
|
197
243
|
};
|
|
198
244
|
messageId: string;
|
|
199
245
|
reason: GenerationReason;
|
|
200
|
-
responseMessageId
|
|
246
|
+
responseMessageId: string;
|
|
247
|
+
sourceGenerationId?: string;
|
|
201
248
|
};
|
|
202
249
|
type RetryGenerationOptions = {
|
|
203
250
|
messageId: string;
|
|
@@ -274,6 +321,7 @@ type ToolResultPayload = {
|
|
|
274
321
|
toolMetadata?: unknown;
|
|
275
322
|
};
|
|
276
323
|
type ApprovalRequestedPayload = {
|
|
324
|
+
requestId: string;
|
|
277
325
|
messageId: string;
|
|
278
326
|
generationId: string;
|
|
279
327
|
approvalId: string;
|
|
@@ -282,6 +330,7 @@ type ApprovalRequestedPayload = {
|
|
|
282
330
|
signature?: string;
|
|
283
331
|
};
|
|
284
332
|
type ApprovalRespondedPayload = {
|
|
333
|
+
requestId: string;
|
|
285
334
|
messageId: string;
|
|
286
335
|
generationId: string;
|
|
287
336
|
approvalId: string;
|
|
@@ -289,6 +338,7 @@ type ApprovalRespondedPayload = {
|
|
|
289
338
|
reason?: string;
|
|
290
339
|
};
|
|
291
340
|
type InputRequestedPayload = {
|
|
341
|
+
requestId: string;
|
|
292
342
|
messageId: string;
|
|
293
343
|
generationId: string;
|
|
294
344
|
inputId: string;
|
|
@@ -296,6 +346,7 @@ type InputRequestedPayload = {
|
|
|
296
346
|
question?: JSONValue;
|
|
297
347
|
};
|
|
298
348
|
type InputRespondedPayload = {
|
|
349
|
+
requestId: string;
|
|
299
350
|
messageId: string;
|
|
300
351
|
generationId: string;
|
|
301
352
|
inputId: string;
|
|
@@ -325,6 +376,9 @@ type CompactionRequestedPayload = {
|
|
|
325
376
|
generationId: string;
|
|
326
377
|
throughMessageId: string;
|
|
327
378
|
throughIndex?: number;
|
|
379
|
+
inputTokenEstimate?: number;
|
|
380
|
+
inputTokens?: number;
|
|
381
|
+
thresholdTokens?: number;
|
|
328
382
|
};
|
|
329
383
|
type CompactionCompletedPayload<M extends UIMessage$1> = {
|
|
330
384
|
generationId: string;
|
|
@@ -455,9 +509,11 @@ type AIState<M extends UIMessage$1 = UIMessage$1> = {
|
|
|
455
509
|
status: AgentStatus;
|
|
456
510
|
activeGeneration: ActiveGeneration | null;
|
|
457
511
|
activeRequestId: string | null;
|
|
512
|
+
activeRequestReason: GenerationReason | null;
|
|
513
|
+
activeRequestSourceGenerationId: string | null;
|
|
458
514
|
activeResponseMessageId: string | null;
|
|
459
515
|
activeProjection: ActiveGenerationProjection<M> | null;
|
|
460
|
-
|
|
516
|
+
responseOwners: Record<string, Pick<GenerationStartedPayload, "generationId" | "requestId" | "attempt">>;
|
|
461
517
|
terminalRequestIds?: Record<string, true>;
|
|
462
518
|
terminalGenerations?: Record<string, "completed" | "failed" | "interrupted" | "superseded">;
|
|
463
519
|
pendingApprovals: PendingApproval[];
|
|
@@ -470,7 +526,7 @@ type AIState<M extends UIMessage$1 = UIMessage$1> = {
|
|
|
470
526
|
};
|
|
471
527
|
type AgentDefinition<M extends UIMessage$1 = UIMessage$1, D extends EventDefs = AIEventDefs<M>> = {
|
|
472
528
|
readonly contract: Contract<D>;
|
|
473
|
-
readonly reducer:
|
|
529
|
+
readonly reducer: AIStoredReducer<D, AIState<M>>;
|
|
474
530
|
};
|
|
475
531
|
type AgentToolEventDefs = EventDefs & Pick<AIEventDefs, "ai.tool.execution.requested">;
|
|
476
532
|
/** The durable handler context supplied when A2 executes a local AI tool. */
|
|
@@ -505,7 +561,9 @@ declare function deriveUIMessages<M extends UIMessage$1 = UIMessage$1>(history:
|
|
|
505
561
|
declare function createReducer<D extends EventDefs>(options: {
|
|
506
562
|
contract: Contract<D>;
|
|
507
563
|
name?: string;
|
|
508
|
-
|
|
564
|
+
fold?: Reducer<D, AIState<AIMessageFrom<D>>>["fold"];
|
|
565
|
+
stateSchema?: StandardSchemaV1<unknown, AIState<AIMessageFrom<D>>>;
|
|
566
|
+
}): AIStoredReducer<D, AIState<AIMessageFrom<D>>>;
|
|
509
567
|
type CommandInput<C> = {
|
|
510
568
|
type: "ai.control.requested";
|
|
511
569
|
payload: C;
|
|
@@ -513,7 +571,9 @@ type CommandInput<C> = {
|
|
|
513
571
|
};
|
|
514
572
|
type ControlInput<M extends UIMessage$1, A extends ControlCommand<M>["action"]> = CommandInput<Extract<ControlCommand<M>, {
|
|
515
573
|
action: A;
|
|
516
|
-
}
|
|
574
|
+
}>> & (A extends "send" | "steer" ? {
|
|
575
|
+
id: string;
|
|
576
|
+
} : {});
|
|
517
577
|
type AIInputs = {
|
|
518
578
|
message<M extends UIMessage$1>(message: M, options?: {
|
|
519
579
|
generate?: boolean;
|
|
@@ -530,7 +590,6 @@ type AIInputs = {
|
|
|
530
590
|
}): ControlInput<UIMessage$1, "send-now">[];
|
|
531
591
|
edit<M extends UIMessage$1>(options: {
|
|
532
592
|
message: M;
|
|
533
|
-
expectedRevision: number;
|
|
534
593
|
}): ControlInput<M, "edit">[];
|
|
535
594
|
move(options: {
|
|
536
595
|
inputId: string;
|
|
@@ -576,5 +635,5 @@ declare function handlerContext<D extends AgentToolEventDefs>(agentOrContract: C
|
|
|
576
635
|
*/
|
|
577
636
|
declare function agent<M extends UIMessage$1 = UIMessage$1, E extends EventDefs = Record<never, never>>(options: AgentOptions<M, E>): AgentDefinition<M, AIEventDefs<M> & E>;
|
|
578
637
|
//#endregion
|
|
579
|
-
export { reduceAIState as $, MessageInterruptedPayload as A, SessionCreatedPayload as B, GenerationUsage as C, LanguageModelUsage as D, JSONValue as E, PendingApproval as F, UIMessageChunk$1 as G, ToolCalledPayload as H, PendingInput as I, createReducer as J, agent as K, RetryGenerationOptions as L, ModelMetadataRequestedPayload as M, ModelMetadataResolvedPayload as N, MessageCompletedPayload as O, ModelMetadataState as P, inputs as Q, RetryRequestedPayload as R, GenerationStartedPayload as S, InputRespondedPayload as T, ToolResultPayload as U, ToolActivity as V, UIMessage$1 as W, events as X, deriveUIMessages as Y, handlerContext as Z, GenerationCompletedPayload as _, ActiveGenerationProjection as a, GenerationReason as b, AgentStatus as c, ApprovalRequestedPayload as d,
|
|
580
|
-
//# sourceMappingURL=ai-
|
|
638
|
+
export { reduceAIState as $, MessageInterruptedPayload as A, SessionCreatedPayload as B, GenerationUsage as C, LanguageModelUsage as D, JSONValue as E, PendingApproval as F, UIMessageChunk$1 as G, ToolCalledPayload as H, PendingInput as I, createReducer as J, agent as K, RetryGenerationOptions as L, ModelMetadataRequestedPayload as M, ModelMetadataResolvedPayload as N, MessageCompletedPayload as O, ModelMetadataState as P, inputs as Q, RetryRequestedPayload as R, GenerationStartedPayload as S, InputRespondedPayload as T, ToolResultPayload as U, ToolActivity as V, UIMessage$1 as W, events as X, deriveUIMessages as Y, handlerContext as Z, GenerationCompletedPayload as _, ActiveGenerationProjection as a, ControlReceipt as at, GenerationReason as b, AgentStatus as c, ApprovalRequestedPayload as d, AIStoredReducer as et, ApprovalRespondedPayload as f, FinishReason as g, CompactionState as h, ActiveGeneration as i, ControlCommand as it, ModelLimits as j, MessageCreatedPayload as k, AgentToolContext as l, CompactionRequestedPayload as m, AIInputs as n, PendingQueueCommand as nt, AgentDefinition as o, InboxItem as ot, CompactionCompletedPayload as p, createEvents as q, AIState as r, ActiveTurn as rt, AgentOptions as s, AIEventDefs as t, AIStoredState as tt, AgentToolEventDefs as u, GenerationFailedPayload as v, InputRequestedPayload as w, GenerationRequestedPayload as x, GenerationProgressPayload as y, SessionClosedPayload as z };
|
|
639
|
+
//# sourceMappingURL=ai-CrEf6p_W.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-CrEf6p_W.d.ts","names":[],"sources":["../src/ai-control.ts","../src/ai-client-state.ts","../src/ai-projector.ts","../src/ai-progress-batches.ts","../src/ai-message-projection.ts","../src/ai-stored-state.ts","../src/ai.ts"],"mappings":";;;;KAcY,UAAU,UAAU,YAAY;EAC1C;EACA,SAAS;EACT;EACA;;KAGU,eAAe,UAAU,YAAY;EAC3C;EAAgB,SAAS;EAAG;;EAC5B;EAAgB,SAAS;;EACzB;EAAgB;EAAiB;;EACjC;EAAkB;;EAElB;EACA;EACA;EACA;;EAEA;EAAgB;EAAgB;;EAChC;EAAiB;EAAgB,SAAS;EAAG;;EAC7C;EAAiB;;EACjB;;EACA;EAAuB,QAAQ;;EAC/B;EAAoB,UAAU;;EAC9B;EAAiB,UAAU;;EAC3B;EAAyB,SAAS;;EAClC;EAAiB,SAAS;;EAC1B;EAAqB,SAAS;;KAExB;EACV;EACA;EACA;EACA;;KAUU,WAAW,UAAU,YAAY;EAC3C;EACA,OAAO,UAAU;EACjB;;KA+BU;EAAa;EAAc;EAAY;;KACvC;EACV;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;;KAGE;EACV;EACA;EACA,MAAM;EACN,YAAY;;KAYF;EACV;EACA;EACA;EACA;IAAW;IAAe;IAAqB;;EAC/C;IAAS;IAAc;;;KAGb;EACV,SAAS;EACT;IACE;IACA;IACA,OAAO;IACP;IACA;IACA;IACA,eAAe;IACf;IACA;;;;;KCpIQ,aAAa,UAAU,aAAa,QAC9C,eAAe;EAEb;;KAYQ,oBAAoB,UAAU;EACxC;EACA,SAAS,aAAa;;;;KCjBnB;EACH;EACA;EACA;EACA;EACA;EACA;EACA;;KAmHU;EACV,MAAM;EACN,WAAW;EACX,OAAO,eAAe;;;;KChIZ;EAAkB;EAAe,QAAQ;;KAChD,aAAa;EAAoB,MAAM;EAAY,OAAO;;KAEnD;EACV;EACA,MAAM;EACN,QAAQ,MAAM;;;;KCcJ,kBAAkB,UAAU,aAAa,KACnD,2BAA2B;;;KChBxB,2CACgC;GAA2B,cAAA;;KAC3D;EAAY;;KACZ;EACC,OAAO;;EACP;EAAgB,OAAO,eAAe;;EACtC,QAAQ,eAAe;EAAO;;KAE/B;EACH,QAAQ;EACR;EACA,UAAU;EACV,QAAQ;;KAGE;EACV;EACA,QAAQ;EACR,YAAY;EACZ,QAAQ;;KAGE;EACV,UAAU;EACV,mBACG,kBAAkB;IAAe,YAAY;;EAChD,QAAQ;EACR,QAAQ;;cAGG;KAED,gBACV,UAAU,WACV,UAAU,gBACR,QAAQ,GAAG,eAAe,sBAAsB;YACxC,iBAAiB,QAAQ,GAAG;EACtC,KAAK,OAAO,gBAAgB;EAC5B,SAAS,OAAO,IAAI;;;;KC6BV;KAGA;KAEA;EAA0B,WAAW;;KACrC;EAAyB;;KACzB,sBAAsB,UAAU;EAC1C,SAAS;;EAET;;KAEU;EAA4B;;KACnC;EACH;EACA;;EAEA;;KAEU,4BAA4B;EAEhC;EAAsB;;EACtB;EAAmB;;KAEf;EACV;IAAY;IAAgB;;EAC5B;EACA,QAAQ;EACR;EACA;;KAEU;EACV;EACA;EACA;;KAEU,wBAAwB;KACxB;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA,QAAQ;;KAEE;EACV;EACA;EACA;EACA;EACA,eAAe;EACf,QAAQ;EACR;;KAEU;EACV;EACA;EACA;EACA;EACA;;EAEA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA;;KAEU;EACV;EACA;EACA;EACA;EACA;EACA,WAAW;;KAED;EACV;EACA;EACA;EACA;EACA;EACA,OAAO;;KAEG;EACV;EACA;;KAEU;EAAkC;;KAClC;EACV;EACA,QAAQ;;KAEE;EACN;;EACA;EAAoB,QAAQ;;EAC5B;;KAEM;EACV;EACA;EACA;EACA;EACA;EACA;;KAEU,2BAA2B,UAAU;EAC/C;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,QAAQ;;KAGE,YAAY,UAAU,cAAY;EAC5C,wBAAwB,iBAAiB,eAAe;EACxD,wBAAwB,iBAAiB;EACzC,sBAAsB,iBAAiB;EACvC,oBAAoB,iBAAiB;EACrC,+BAA+B,iBAAiB;EAChD,wBAAwB;IACtB;IACA;;EAEF,sBAAsB,i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"}
|