@copilotkit/runtime 1.66.2 → 1.66.4

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 (75) hide show
  1. package/dist/agent/converters/aisdk.cjs +17 -9
  2. package/dist/agent/converters/aisdk.cjs.map +1 -1
  3. package/dist/agent/converters/aisdk.d.cts +1 -1
  4. package/dist/agent/converters/aisdk.d.cts.map +1 -1
  5. package/dist/agent/converters/aisdk.d.mts +1 -1
  6. package/dist/agent/converters/aisdk.d.mts.map +1 -1
  7. package/dist/agent/converters/aisdk.mjs +17 -9
  8. package/dist/agent/converters/aisdk.mjs.map +1 -1
  9. package/dist/agent/converters/tanstack.cjs +17 -9
  10. package/dist/agent/converters/tanstack.cjs.map +1 -1
  11. package/dist/agent/converters/tanstack.d.cts +1 -1
  12. package/dist/agent/converters/tanstack.d.cts.map +1 -1
  13. package/dist/agent/converters/tanstack.d.mts +1 -1
  14. package/dist/agent/converters/tanstack.d.mts.map +1 -1
  15. package/dist/agent/converters/tanstack.mjs +17 -9
  16. package/dist/agent/converters/tanstack.mjs.map +1 -1
  17. package/dist/agent/index.cjs +6 -4
  18. package/dist/agent/index.cjs.map +1 -1
  19. package/dist/agent/index.d.cts.map +1 -1
  20. package/dist/agent/index.d.mts.map +1 -1
  21. package/dist/agent/index.mjs +6 -4
  22. package/dist/agent/index.mjs.map +1 -1
  23. package/dist/agent/state-delta.cjs +322 -0
  24. package/dist/agent/state-delta.cjs.map +1 -0
  25. package/dist/agent/state-delta.mjs +321 -0
  26. package/dist/agent/state-delta.mjs.map +1 -0
  27. package/dist/package.cjs +1 -1
  28. package/dist/runtime/package.mjs +1 -1
  29. package/dist/v2/index.cjs +6 -1
  30. package/dist/v2/index.d.cts +2 -2
  31. package/dist/v2/index.d.mts +2 -2
  32. package/dist/v2/index.mjs +2 -2
  33. package/dist/v2/runtime/core/channel-manager.cjs +110 -9
  34. package/dist/v2/runtime/core/channel-manager.cjs.map +1 -1
  35. package/dist/v2/runtime/core/channel-manager.d.cts +79 -8
  36. package/dist/v2/runtime/core/channel-manager.d.cts.map +1 -1
  37. package/dist/v2/runtime/core/channel-manager.d.mts +79 -8
  38. package/dist/v2/runtime/core/channel-manager.d.mts.map +1 -1
  39. package/dist/v2/runtime/core/channel-manager.mjs +110 -9
  40. package/dist/v2/runtime/core/channel-manager.mjs.map +1 -1
  41. package/dist/v2/runtime/core/runtime.cjs.map +1 -1
  42. package/dist/v2/runtime/core/runtime.d.cts +1 -0
  43. package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
  44. package/dist/v2/runtime/core/runtime.d.mts +1 -0
  45. package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
  46. package/dist/v2/runtime/core/runtime.mjs.map +1 -1
  47. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +2 -5
  48. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  49. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +2 -5
  50. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  51. package/dist/v2/runtime/handlers/shared/mcp-apps-servers.cjs +23 -0
  52. package/dist/v2/runtime/handlers/shared/mcp-apps-servers.cjs.map +1 -0
  53. package/dist/v2/runtime/handlers/shared/mcp-apps-servers.mjs +22 -0
  54. package/dist/v2/runtime/handlers/shared/mcp-apps-servers.mjs.map +1 -0
  55. package/dist/v2/runtime/index.d.cts +1 -1
  56. package/dist/v2/runtime/index.d.mts +1 -1
  57. package/dist/v2/runtime/open-generative-ui-middleware.cjs +1 -0
  58. package/dist/v2/runtime/open-generative-ui-middleware.cjs.map +1 -1
  59. package/dist/v2/runtime/open-generative-ui-middleware.mjs +1 -0
  60. package/dist/v2/runtime/open-generative-ui-middleware.mjs.map +1 -1
  61. package/dist/v2/runtime/runner/in-memory.cjs +335 -101
  62. package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
  63. package/dist/v2/runtime/runner/in-memory.d.cts +246 -6
  64. package/dist/v2/runtime/runner/in-memory.d.cts.map +1 -1
  65. package/dist/v2/runtime/runner/in-memory.d.mts +246 -6
  66. package/dist/v2/runtime/runner/in-memory.d.mts.map +1 -1
  67. package/dist/v2/runtime/runner/in-memory.mjs +331 -102
  68. package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
  69. package/dist/v2/runtime/runner/index.d.cts +1 -1
  70. package/dist/v2/runtime/runner/index.d.mts +1 -1
  71. package/dist/v2/runtime/runner/index.mjs +1 -1
  72. package/package.json +5 -5
  73. package/skills/runtime/references/agent-runners-in-memory.md +49 -34
  74. package/skills/runtime/references/agent-runners.md +47 -21
  75. package/skills/runtime/references/wiring-mcp-apps-middleware.md +5 -0
@@ -1,9 +1,109 @@
1
1
  import "reflect-metadata";
2
2
  import { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest } from "./agent-runner.mjs";
3
- import { Observable } from "rxjs";
4
- import { BaseEvent, Message } from "@ag-ui/client";
3
+ import { Observable, ReplaySubject } from "rxjs";
4
+ import { AbstractAgent, BaseEvent, Message } from "@ag-ui/client";
5
5
 
6
6
  //#region src/v2/runtime/runner/in-memory.d.ts
7
+ interface InMemoryLimits {
8
+ /** LRU cap on distinct threads. */
9
+ maxThreads?: number;
10
+ /** FIFO cap on runs kept per thread. `Infinity` or `0` disables the cap. */
11
+ maxRunsPerThread?: number;
12
+ /**
13
+ * Approximate byte ceiling on RETAINED thread/run history. Enforced at run
14
+ * completion (in `appendRun`), where LRU non-running threads are evicted to
15
+ * keep the total under this limit.
16
+ *
17
+ * Limitation: this bounds only history that has already been committed. A
18
+ * single in-flight run's buffered events (`currentRunEvents` and the two
19
+ * `ReplaySubject<BaseEvent>(Infinity)` buffers in `run()`) are NOT counted
20
+ * until that run completes, so `maxBytes` does not bound a single runaway
21
+ * run mid-stream.
22
+ *
23
+ * Limitation: byte eviction drops only other LRU non-running threads and
24
+ * never self-evicts the active/just-appended thread, so a single dominant
25
+ * thread's own retained history is not byte-trimmed (bounded only by
26
+ * `maxRunsPerThread`). `maxBytes` is thus a cross-thread ceiling enforced by
27
+ * evicting OTHER threads, not a per-thread cap.
28
+ */
29
+ maxBytes?: number;
30
+ }
31
+ /**
32
+ * Constructor options for {@link InMemoryAgentRunner}.
33
+ *
34
+ * Extends {@link InMemoryLimits} so bounds can be passed inline alongside the
35
+ * per-runner behavior flags. Be aware of the scope difference: the limits
36
+ * reconfigure the process-global store shared by every runner, whereas
37
+ * `onConcurrentRun` applies only to the runner instance it is passed to.
38
+ */
39
+ interface InMemoryAgentRunnerOptions extends InMemoryLimits {
40
+ /**
41
+ * How to handle a `run()` for a thread that already has an in-flight run.
42
+ * `"throw"` (default) rejects with "Thread already running". `"supersede"`
43
+ * aborts the prior run and starts the new one.
44
+ */
45
+ onConcurrentRun?: "throw" | "supersede";
46
+ }
47
+ declare const ɵINMEMORY_DEFAULTS: Required<InMemoryLimits>;
48
+ /**
49
+ * Normalize a fully-resolved limits bag so every field is well-formed before it
50
+ * can reach an enforcement loop. Each field is validated independently against
51
+ * {@link ɵisValidLimit}; an invalid value is CLAMPED to its
52
+ * {@link ɵINMEMORY_DEFAULTS} floor and a single `console.warn` naming the field
53
+ * and the received value is emitted.
54
+ *
55
+ * Clamp-and-warn (rather than throw) is deliberate and matches this file's
56
+ * established posture toward bad input: `ɵestimateBytes` swallows serialization
57
+ * failures and returns 0, the limits-clobber path warns rather than throwing,
58
+ * and both the eviction and clobber logs are wrapped so "logging must never
59
+ * break construction/a run". Constructing a bounded in-memory runner is a
60
+ * best-effort, non-durable convenience; a typo'd bound must degrade to a safe
61
+ * default, never abort construction or (worse) surface later as an unhandled
62
+ * rejection from the fire-and-forget finalize path.
63
+ */
64
+ declare function ɵnormalizeLimits(limits: Required<InMemoryLimits>): Required<InMemoryLimits>;
65
+ /**
66
+ * Best-effort approximate byte size of a value, via serialized length.
67
+ * Never throws — returns 0 when the value cannot be serialized. This is an
68
+ * approximation (UTF-16 length, not exact heap bytes), used only for relative
69
+ * accounting against `maxBytes`.
70
+ */
71
+ declare function ɵestimateBytes(value: unknown): number;
72
+ /**
73
+ * Per-run finalize intent, captured once when a run starts and mutated (only)
74
+ * by whoever aborts THAT run — `stop()` or a superseding `run()`. The run's own
75
+ * teardown reads this captured holder instead of the shared, mutable
76
+ * `store.stopRequested`, so a later run that resets store state can never cause
77
+ * an intentionally-stopped run to be finalized as an error (or vice versa).
78
+ */
79
+ interface RunFinalizeControl {
80
+ /** True once THIS run has been asked to stop (clean stop, not an error). */
81
+ stopRequested: boolean;
82
+ }
83
+ interface HistoricRun {
84
+ threadId: string;
85
+ runId: string;
86
+ /** ID of the agent that executed this run. */
87
+ agentId: string;
88
+ parentRunId: string | null;
89
+ events: BaseEvent[];
90
+ /**
91
+ * Snapshot of all messages (input + generated) at the end of this run, as
92
+ * passed in by the caller. NOTE: `BoundedThreadStore.appendRun` moves this
93
+ * snapshot to the THREAD level (`InMemoryEventStore.messagesSnapshot`) and
94
+ * clears this field to `[]`, so a stored HistoricRun never carries messages.
95
+ * The thread-messages fallback reads the thread-level snapshot, not this.
96
+ */
97
+ messages: Message[];
98
+ createdAt: number;
99
+ /** Approximate retained byte size of `events`; set by BoundedThreadStore at append. */
100
+ approxEventBytes?: number;
101
+ /**
102
+ * Legacy field retained for shape compatibility. `appendRun` always zeroes it
103
+ * because message bytes are accounted at the thread level, not per run.
104
+ */
105
+ approxMessageBytes?: number;
106
+ }
7
107
  /**
8
108
  * Lightweight thread summary returned by {@link InMemoryAgentRunner.listThreads}.
9
109
  * Shape matches the Intelligence platform's ThreadRecord so the same HTTP
@@ -19,6 +119,134 @@ interface InMemoryThread {
19
119
  createdAt: string;
20
120
  updatedAt: string;
21
121
  }
122
+ declare class InMemoryEventStore {
123
+ threadId: string;
124
+ constructor(threadId: string);
125
+ /** The subject that current consumers subscribe to. */
126
+ subject: ReplaySubject<BaseEvent> | null;
127
+ /** True while a run is actively producing events. */
128
+ isRunning: boolean;
129
+ /** Current run ID */
130
+ currentRunId: string | null;
131
+ /** Historic completed runs */
132
+ historicRuns: HistoricRun[];
133
+ /** Currently running agent instance (if any). */
134
+ agent: AbstractAgent | null;
135
+ /** Subject returned from run() while the run is active. */
136
+ runSubject: ReplaySubject<BaseEvent> | null;
137
+ /**
138
+ * Thread-level lifecycle flag: true once a stop/supersede has been requested
139
+ * for the currently-owning run but that run has not yet finalized. Drives
140
+ * eviction protection, the connect() bridge, and stop() de-dup. This is NOT
141
+ * the finalize intent read by a run's teardown — that lives per-run on
142
+ * {@link activeFinalize}, so a superseding run resetting this field cannot
143
+ * mislabel the run it replaced. A new run resets this to false when it takes
144
+ * ownership.
145
+ */
146
+ stopRequested: boolean;
147
+ /**
148
+ * Finalize control of the currently-owning run. `stop()` and a superseding
149
+ * `run()` flip the owning run's flag through this reference; each run also
150
+ * captures the SAME object in its closure, so its teardown finalizes against
151
+ * its own intent regardless of what a later run does to the store.
152
+ */
153
+ activeFinalize: RunFinalizeControl | null;
154
+ /** Reference to the events emitted in the current run. */
155
+ currentEvents: BaseEvent[] | null;
156
+ /**
157
+ * The thread's single latest NON-EMPTY message snapshot, held at the THREAD
158
+ * level (independent of `historicRuns` lifecycle). Decoupling the snapshot
159
+ * from per-run storage means run-cap FIFO eviction and interleaved
160
+ * empty-snapshot runs can never drop or pin the thread's message history.
161
+ */
162
+ messagesSnapshot: Message[];
163
+ /** Approximate retained byte size of `messagesSnapshot`. */
164
+ approxMessagesSnapshotBytes: number;
165
+ /**
166
+ * The thread's true creation timestamp (epoch ms), captured from the FIRST
167
+ * run ever appended and held at the THREAD level (independent of
168
+ * `historicRuns` lifecycle). Decoupling it from per-run storage means run-cap
169
+ * FIFO eviction — which shifts the oldest entries off `historicRuns` — can
170
+ * never move the reported creation time forward. `null` until the first run
171
+ * lands. Mirrors the `messagesSnapshot` thread-level decoupling.
172
+ */
173
+ createdAt: number | null;
174
+ }
175
+ declare class ɵBoundedThreadStore {
176
+ private readonly map;
177
+ private totalBytes;
178
+ private warned;
179
+ /** True once limits have been EXPLICITLY set (via setLimits), not just the constructor default. */
180
+ private limitsExplicitlySet;
181
+ /** Warn-once latch for the clobber warning, kept distinct from the eviction `warned` latch. */
182
+ private clobberWarned;
183
+ private limits;
184
+ constructor(limits: Required<InMemoryLimits>);
185
+ get byteTotal(): number;
186
+ /**
187
+ * The store's CURRENT effective bounds. Exposed (with the `ɵ` internal-API
188
+ * prefix) so a partial `setLimits` can coalesce unspecified fields against the
189
+ * live config rather than the hardcoded {@link ɵINMEMORY_DEFAULTS} — a partial
190
+ * update must be a partial update, never a silent reset of the fields the
191
+ * caller did not mention. Returns a copy so callers cannot mutate the store's
192
+ * bounds through it.
193
+ */
194
+ get ɵlimits(): Required<InMemoryLimits>;
195
+ /**
196
+ * Reconfigure the process-global store's bounds. Called by the
197
+ * {@link InMemoryAgentRunner} constructor when limits are passed. Because the
198
+ * store is a per-process singleton, this replaces the bounds for ALL in-memory
199
+ * threads. Emits {@link LIMITS_CLOBBER_GUIDANCE} at most ONCE per store when a
200
+ * SECOND (or later) explicit set arrives whose resolved values differ from the
201
+ * prior explicit set — i.e. a genuine clobber of an already-customized config.
202
+ * The first explicit customization (defaults → custom) is the intended
203
+ * override and never warns; identical re-sets never warn.
204
+ */
205
+ setLimits(limits: Required<InMemoryLimits>): void;
206
+ get size(): number;
207
+ /** Re-insert at the tail so Map iteration order stays LRU-first. */
208
+ private touchOrder;
209
+ getOrCreate(threadId: string): InMemoryEventStore;
210
+ get(threadId: string, opts: {
211
+ touch: boolean;
212
+ }): InMemoryEventStore | undefined;
213
+ peek(threadId: string): InMemoryEventStore | undefined;
214
+ /**
215
+ * Evict the least-recently-used thread that is neither running NOR
216
+ * mid-finalization. Returns false if none evictable. The `protect` thread
217
+ * (typically the one just created) is never evicted, so a fresh thread is not
218
+ * immediately dropped when it is the only non-running candidate.
219
+ *
220
+ * A thread is skipped while `isRunning` OR `stopRequested` is set.
221
+ * `stop()` flips `isRunning` to false the moment it aborts the agent, but the
222
+ * run keeps finalizing asynchronously (the abort trips the `catch` in
223
+ * `runAgent`, which later calls `appendRun`). During that window
224
+ * `stopRequested` stays true; evicting the thread then would make the pending
225
+ * `appendRun` hit `if (!store) return` and silently drop the aborted run's
226
+ * history. Guarding on `stopRequested` keeps the thread alive until
227
+ * finalization completes.
228
+ */
229
+ private evictOneLru;
230
+ appendRun(threadId: string, run: HistoricRun): void;
231
+ private enforceRunCap;
232
+ /**
233
+ * Trim the store back under the byte ceiling by evicting LRU non-running
234
+ * threads. `protect` (the just-appended thread) is never self-evicted, so a
235
+ * fresh run pushes OTHER threads out rather than dropping itself.
236
+ */
237
+ private evictByBytesIfNeeded;
238
+ private removeThread;
239
+ private evictThreadsIfNeeded;
240
+ private noteEviction;
241
+ listThreads(): InMemoryThread[];
242
+ clear(): void;
243
+ }
244
+ /**
245
+ * Process-wide singleton backing every {@link InMemoryAgentRunner}. Exported
246
+ * (with the `ɵ` internal-API prefix) so tests can inspect the exact store the
247
+ * runner writes to; not part of the public API.
248
+ */
249
+ declare const ɵGLOBAL_STORE: ɵBoundedThreadStore;
22
250
  declare class InMemoryAgentRunner extends AgentRunner {
23
251
  readonly ɵsupportsLocalThreadEndpoints = true;
24
252
  /**
@@ -30,9 +258,21 @@ declare class InMemoryAgentRunner extends AgentRunner {
30
258
  * "Thread already running".
31
259
  */
32
260
  private readonly onConcurrentRun;
33
- constructor(options?: {
34
- onConcurrentRun?: "throw" | "supersede";
35
- });
261
+ /**
262
+ * @param options Per-runner behavior (`onConcurrentRun`) plus optional bounds
263
+ * for the in-memory store ({@link InMemoryLimits}).
264
+ *
265
+ * Note the differing scopes: `onConcurrentRun` is per-runner instance, while
266
+ * the limits reconfigure the PROCESS-GLOBAL store shared by every
267
+ * `InMemoryAgentRunner`. Omit the limits for safe defaults
268
+ * ({@link ɵINMEMORY_DEFAULTS}); passing none leaves the store untouched. When
269
+ * multiple runners are constructed with differing limits, the last-constructed
270
+ * wins — in practice the OSS/SSE default construction passes nothing. If a
271
+ * second (or later) runner is constructed with limits that DIFFER from an
272
+ * already-customized store, a one-time `console.warn` is emitted to signal that
273
+ * the shared store's bounds are being clobbered for ALL in-memory threads.
274
+ */
275
+ constructor(options?: InMemoryAgentRunnerOptions);
36
276
  run(request: AgentRunnerRunRequest): Observable<BaseEvent>;
37
277
  connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;
38
278
  isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;
@@ -87,5 +327,5 @@ declare class InMemoryAgentRunner extends AgentRunner {
87
327
  clearThreads(): void;
88
328
  }
89
329
  //#endregion
90
- export { InMemoryAgentRunner, InMemoryThread };
330
+ export { InMemoryAgentRunner, InMemoryAgentRunnerOptions, InMemoryLimits, InMemoryThread, ɵBoundedThreadStore, ɵGLOBAL_STORE, ɵINMEMORY_DEFAULTS, ɵestimateBytes, ɵnormalizeLimits };
91
331
  //# sourceMappingURL=in-memory.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.mts","names":[],"sources":["../../../../src/v2/runtime/runner/in-memory.ts"],"mappings":";;;;;;AAuCA;;;;;AAAA,UAAiB,cAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;EACA,cAAA;EACA,WAAA;EACA,QAAA;EACA,SAAA;EACA,SAAA;AAAA;AAAA,cAiCW,mBAAA,SAA4B,WAAA;EAAA,SAC9B,6BAAA;EAiBI;;;;;;;;EAAA,iBAPI,eAAA;cAEL,OAAA;IAAY,eAAA;EAAA;EAKxB,GAAA,CAAI,OAAA,EAAS,qBAAA,GAAwB,UAAA,CAAW,SAAA;EAiOhD,OAAA,CAAQ,OAAA,EAAS,yBAAA,GAA4B,UAAA,CAAW,SAAA;EAqDxD,SAAA,CAAU,OAAA,EAAS,2BAAA,GAA8B,OAAA;EAKjD,IAAA,CAAK,OAAA,EAAS,sBAAA,GAAyB,OAAA;EA7SW;;;;;;;EAqVlD,WAAA,CAAA,GAAe,cAAA;EAnUF;;;;;;;;;EAoWb,iBAAA,CAAkB,QAAA,WAAmB,OAAA;EA9ElB;;;;;;;;EA6FnB,eAAA,CAAgB,QAAA,WAAmB,SAAA;EAfnC;;;;;;;;;;EAiCA,cAAA,CAAe,QAAA,WAAmB,MAAA;EAyBtB;;;;;;;;;EAAZ,YAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"in-memory.d.mts","names":[],"sources":["../../../../src/v2/runtime/runner/in-memory.ts"],"mappings":"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"}