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.
Files changed (101) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/dist/actor-client.d.ts +1 -1
  3. package/dist/{actor-BfQSE0KC.d.ts → actor-ohPC-81x.d.ts} +5 -5
  4. package/dist/{actor-BfQSE0KC.d.ts.map → actor-ohPC-81x.d.ts.map} +1 -1
  5. package/dist/actor-react.d.ts +3 -3
  6. package/dist/actor.d.ts +1 -1
  7. package/dist/actor.js +1 -1
  8. package/dist/{ai-Cai-lCbj.d.ts → ai-CrEf6p_W.d.ts} +73 -14
  9. package/dist/ai-CrEf6p_W.d.ts.map +1 -0
  10. package/dist/ai-DgOBltJ_.js +2451 -0
  11. package/dist/ai-DgOBltJ_.js.map +1 -0
  12. package/dist/ai-server.d.ts +4 -5
  13. package/dist/ai-server.d.ts.map +1 -1
  14. package/dist/ai-server.js +788 -296
  15. package/dist/ai-server.js.map +1 -1
  16. package/dist/ai.d.ts +2 -2
  17. package/dist/ai.js +1 -1999
  18. package/dist/client-BYzHjkwU.js.map +1 -1
  19. package/dist/{client-BAEABRZB.d.ts → client-CzyacQpJ.d.ts} +9 -9
  20. package/dist/client-CzyacQpJ.d.ts.map +1 -0
  21. package/dist/client.d.ts +1 -1
  22. package/dist/idempotent-id-BRJVeylj.js +13 -0
  23. package/dist/idempotent-id-BRJVeylj.js.map +1 -0
  24. package/dist/index.d.ts +3 -3
  25. package/dist/index.js +1 -12
  26. package/dist/otel.d.ts +1 -1
  27. package/dist/react.d.ts +13 -13
  28. package/dist/react.d.ts.map +1 -1
  29. package/dist/react.js.map +1 -1
  30. package/dist/reducer-DEMjEY_O.js.map +1 -1
  31. package/dist/{reducer-BcS9VDKC.d.ts → reducer-otzHjuJj.d.ts} +3 -3
  32. package/dist/{reducer-BcS9VDKC.d.ts.map → reducer-otzHjuJj.d.ts.map} +1 -1
  33. package/dist/scheduler-qstash.d.ts +2 -2
  34. package/dist/scheduler-qstash.js +1 -1
  35. package/dist/scheduler-vercel.d.ts +2 -2
  36. package/dist/scheduler-vercel.js +1 -1
  37. package/dist/{server-CjJSGcF7.js → server-BD5ckxZb.js} +39 -26
  38. package/dist/server-BD5ckxZb.js.map +1 -0
  39. package/dist/{server-Bp5Nd1pF.d.ts → server-DbD7IJVK.d.ts} +5 -5
  40. package/dist/{server-Bp5Nd1pF.d.ts.map → server-DbD7IJVK.d.ts.map} +1 -1
  41. package/dist/server.d.ts +3 -3
  42. package/dist/server.js +1 -1
  43. package/dist/{store-D_yhNdPz.d.ts → store-DyZM6fS5.d.ts} +3 -2
  44. package/dist/{store-D_yhNdPz.d.ts.map → store-DyZM6fS5.d.ts.map} +1 -1
  45. package/dist/store-N8PXxDAS.js.map +1 -1
  46. package/dist/store-memory.d.ts +1 -1
  47. package/dist/store-postgres.d.ts +1 -1
  48. package/dist/store-redis-http.d.ts +1 -1
  49. package/dist/store-redis-http.js +1 -1
  50. package/dist/{store-redis-notify-D2EI6gwX.js → store-redis-notify-BVLUfI3j.js} +14 -13
  51. package/dist/store-redis-notify-BVLUfI3j.js.map +1 -0
  52. package/dist/store-redis.d.ts +1 -1
  53. package/dist/store-redis.js +1 -1
  54. package/dist/store-sqlite.d.ts +1 -1
  55. package/dist/{telemetry-CpeclqB2.d.ts → telemetry-B5jzpy6y.d.ts} +2 -2
  56. package/dist/telemetry-B5jzpy6y.d.ts.map +1 -0
  57. package/docs/concepts/04-state.mdx +9 -4
  58. package/docs/guides/06-ai-agents.mdx +149 -48
  59. package/docs/reference/01-api.mdx +110 -28
  60. package/examples/playground/app/agent/[agentId]/agent-client.tsx +20 -28
  61. package/examples/playground/app/agent/[agentId]/agent-queue.test.tsx +123 -0
  62. package/examples/playground/app/agent/[agentId]/agent-queue.tsx +37 -43
  63. package/examples/playground/app/agent/[agentId]/compaction-panel.tsx +44 -24
  64. package/examples/playground/app/agent/compaction-timeline.test.ts +47 -7
  65. package/examples/playground/app/agent/compaction-timeline.ts +13 -3
  66. package/examples/playground/app/chat/[chatId]/chat-client.tsx +1 -5
  67. package/examples/playground/app/chat/[chatId]/session.ts +17 -2
  68. package/examples/playground/app/chat/model.test.ts +4 -4
  69. package/examples/playground/app/chat/model.ts +18 -6
  70. package/examples/playground/app/chat/server.ts +6 -3
  71. package/examples/playground/package.json +3 -1
  72. package/package.json +1 -1
  73. package/src/ai-client-state.ts +36 -4
  74. package/src/ai-context-schema.ts +296 -0
  75. package/src/ai-context.ts +680 -0
  76. package/src/ai-control-server.ts +183 -135
  77. package/src/ai-control-state.ts +6 -0
  78. package/src/ai-control.ts +8 -7
  79. package/src/ai-coordinator.ts +92 -38
  80. package/src/ai-id.ts +6 -0
  81. package/src/ai-input-tokens.ts +75 -0
  82. package/src/ai-message-projection.ts +474 -0
  83. package/src/ai-server.ts +247 -336
  84. package/src/ai-stored-state.ts +484 -0
  85. package/src/ai.ts +255 -538
  86. package/src/client.ts +21 -15
  87. package/src/react.ts +25 -19
  88. package/src/reducer.ts +2 -1
  89. package/src/server.ts +73 -56
  90. package/src/store-redis-core.ts +15 -17
  91. package/src/store.ts +1 -0
  92. package/src/telemetry.ts +2 -1
  93. package/dist/ai-Cai-lCbj.d.ts.map +0 -1
  94. package/dist/ai-control-CcD4hh3y.js +0 -119
  95. package/dist/ai-control-CcD4hh3y.js.map +0 -1
  96. package/dist/ai.js.map +0 -1
  97. package/dist/client-BAEABRZB.d.ts.map +0 -1
  98. package/dist/index.js.map +0 -1
  99. package/dist/server-CjJSGcF7.js.map +0 -1
  100. package/dist/store-redis-notify-D2EI6gwX.js.map +0 -1
  101. 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
@@ -1,4 +1,4 @@
1
- import { n as ActorCallResult, v as ActorRefusedError } from "./actor-BfQSE0KC.js";
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-BcS9VDKC.js";
2
- import { t as A2Store } from "./store-D_yhNdPz.js";
3
- import { f as ScheduleTiming, m as Session, n as A2Server, t as A2Scheduler } from "./server-Bp5Nd1pF.js";
4
- import { i as A2Telemetry } from "./telemetry-CpeclqB2.js";
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-BfQSE0KC.d.ts.map
310
+ //# sourceMappingURL=actor-ohPC-81x.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actor-BfQSE0KC.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"}
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"}
@@ -1,7 +1,7 @@
1
- import { a as ContractEvent, s as EventDefs } from "./reducer-BcS9VDKC.js";
2
- import { g as ActorPresenceValues, m as ActorPresenceMap } from "./actor-BfQSE0KC.js";
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-BAEABRZB.js";
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-BfQSE0KC.js";
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-CjJSGcF7.js";
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-BcS9VDKC.js";
2
- import { s as HandlerContext } from "./server-Bp5Nd1pF.js";
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?: "already-active" | "revision-conflict" | "stale-turn" | "not-found" | "duplicate-input" | "closed" | "stale-work" | "not-user-input";
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?: string;
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
- responseGenerationIds: Record<string, string>;
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: Reducer<D, AIState<M>>;
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
- }): Reducer<D, AIState<AIMessageFrom<D>>>;
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, PendingQueueCommand as et, ApprovalRespondedPayload as f, FinishReason as g, CompactionState as h, ActiveGeneration as i, InboxItem as it, ModelLimits as j, MessageCreatedPayload as k, AgentToolContext as l, CompactionRequestedPayload as m, AIInputs as n, ControlCommand as nt, AgentDefinition as o, CompactionCompletedPayload as p, createEvents as q, AIState as r, ControlReceipt as rt, AgentOptions as s, AIEventDefs as t, ActiveTurn as tt, AgentToolEventDefs as u, GenerationFailedPayload as v, InputRequestedPayload as w, GenerationRequestedPayload as x, GenerationProgressPayload as y, SessionClosedPayload as z };
580
- //# sourceMappingURL=ai-Cai-lCbj.d.ts.map
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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"}