omk-agent-core 0.98.1 → 0.98.3
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 +644 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +3 -5
- package/dist/agent.js.map +1 -1
- package/dist/effects/effect-journal.d.ts +43 -0
- package/dist/effects/effect-journal.d.ts.map +1 -0
- package/dist/effects/effect-journal.js +186 -0
- package/dist/effects/effect-journal.js.map +1 -0
- package/dist/effects/effect-recovery.d.ts +70 -0
- package/dist/effects/effect-recovery.d.ts.map +1 -0
- package/dist/effects/effect-recovery.js +120 -0
- package/dist/effects/effect-recovery.js.map +1 -0
- package/dist/effects/effect-transitions.d.ts +34 -0
- package/dist/effects/effect-transitions.d.ts.map +1 -0
- package/dist/effects/effect-transitions.js +148 -0
- package/dist/effects/effect-transitions.js.map +1 -0
- package/dist/effects/effect-types.d.ts +135 -0
- package/dist/effects/effect-types.d.ts.map +1 -0
- package/dist/effects/effect-types.js +32 -0
- package/dist/effects/effect-types.js.map +1 -0
- package/dist/harness/abort-delivery.d.ts +26 -0
- package/dist/harness/abort-delivery.d.ts.map +1 -0
- package/dist/harness/abort-delivery.js +36 -0
- package/dist/harness/abort-delivery.js.map +1 -0
- package/dist/harness/agent-harness.d.ts +38 -6
- package/dist/harness/agent-harness.d.ts.map +1 -1
- package/dist/harness/agent-harness.js +327 -325
- package/dist/harness/agent-harness.js.map +1 -1
- package/dist/harness/canonical-digest.d.ts +32 -0
- package/dist/harness/canonical-digest.d.ts.map +1 -0
- package/dist/harness/canonical-digest.js +164 -0
- package/dist/harness/canonical-digest.js.map +1 -0
- package/dist/harness/compaction/operation.d.ts +7 -0
- package/dist/harness/compaction/operation.d.ts.map +1 -1
- package/dist/harness/compaction/operation.js.map +1 -1
- package/dist/harness/deferred-commands.d.ts +53 -0
- package/dist/harness/deferred-commands.d.ts.map +1 -0
- package/dist/harness/deferred-commands.js +96 -0
- package/dist/harness/deferred-commands.js.map +1 -0
- package/dist/harness/harness-session.d.ts +5 -58
- package/dist/harness/harness-session.d.ts.map +1 -1
- package/dist/harness/harness-session.js +15 -18
- package/dist/harness/harness-session.js.map +1 -1
- package/dist/harness/operation-lifecycle-controller.d.ts +68 -0
- package/dist/harness/operation-lifecycle-controller.d.ts.map +1 -0
- package/dist/harness/operation-lifecycle-controller.js +199 -0
- package/dist/harness/operation-lifecycle-controller.js.map +1 -0
- package/dist/harness/operation-lifecycle-reducer.d.ts +19 -0
- package/dist/harness/operation-lifecycle-reducer.d.ts.map +1 -0
- package/dist/harness/operation-lifecycle-reducer.js +201 -0
- package/dist/harness/operation-lifecycle-reducer.js.map +1 -0
- package/dist/harness/operation-lifecycle-types.d.ts +130 -0
- package/dist/harness/operation-lifecycle-types.d.ts.map +1 -0
- package/dist/harness/operation-lifecycle-types.js +34 -0
- package/dist/harness/operation-lifecycle-types.js.map +1 -0
- package/dist/harness/operation-outcome.d.ts +79 -0
- package/dist/harness/operation-outcome.d.ts.map +1 -0
- package/dist/harness/operation-outcome.js +167 -0
- package/dist/harness/operation-outcome.js.map +1 -0
- package/dist/harness/operation-trace-divergence.d.ts +60 -0
- package/dist/harness/operation-trace-divergence.d.ts.map +1 -0
- package/dist/harness/operation-trace-divergence.js +199 -0
- package/dist/harness/operation-trace-divergence.js.map +1 -0
- package/dist/harness/operation-trace.d.ts +134 -0
- package/dist/harness/operation-trace.d.ts.map +1 -0
- package/dist/harness/operation-trace.js +161 -0
- package/dist/harness/operation-trace.js.map +1 -0
- package/dist/harness/session-write-coordinator.d.ts +76 -0
- package/dist/harness/session-write-coordinator.d.ts.map +1 -0
- package/dist/harness/session-write-coordinator.js +126 -0
- package/dist/harness/session-write-coordinator.js.map +1 -0
- package/dist/harness/subscriber-fanout.d.ts +50 -0
- package/dist/harness/subscriber-fanout.d.ts.map +1 -0
- package/dist/harness/subscriber-fanout.js +92 -0
- package/dist/harness/subscriber-fanout.js.map +1 -0
- package/dist/harness/tree-navigation.d.ts +45 -0
- package/dist/harness/tree-navigation.d.ts.map +1 -0
- package/dist/harness/tree-navigation.js +59 -0
- package/dist/harness/tree-navigation.js.map +1 -0
- package/dist/harness/types.d.ts +34 -3
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/listener-delivery.d.ts +22 -0
- package/dist/listener-delivery.d.ts.map +1 -0
- package/dist/listener-delivery.js +36 -0
- package/dist/listener-delivery.js.map +1 -0
- package/package.json +4 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,644 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.98.3] - 2026-09-06
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Added internal, browser-safe canonical digests, operation trace recording/comparison, and Effect Journal V2 phase/replay/recovery primitives with deterministic tests. They are not exported from the package root or wired into default runtime authority; matching digests alone do not prove trusted execution.
|
|
8
|
+
|
|
9
|
+
- Split the harness abort/wait surface so a callback can act on its own operation without deadlocking it. `requestAbort()` delivers the abort signal and reports `{ operationId, signalDelivered, alreadySettling }` without awaiting settlement, so it is safe from inside a listener of the operation being settled; `abort()` remains the waiting form and still refuses a self-wait. `runWhenIdle(command)` queues work behind the current operation and returns a durable `CommandRef` immediately — commands run in registration order once the lifecycle is idle, each ref reports `queued`/`running`/`completed`/`failed`/`cancelled`, `done` never rejects, and `cancel()` stops a command that has not started. The self-wait rejection now names `runWhenIdle()` as the sanctioned path. A synchronous prologue guard still cannot see a wait placed behind an arbitrary `await` inside a callback, so deferring — not waiting — remains the only callback-safe option.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- A failed operation could record one top-level code and reject with another. `resolveOperationOutcome` classified a failure as `flush > body`, but `resolveOperationFailure` picked its primary as `body ?? flush` and then hardcoded `session` for a body-plus-flush failure while using the operation's own fallback code for a flush-plus-settle failure. A plain flush error alongside a settle error therefore settled as `session` and rejected as (say) `hook`, and a pre-classified flush error (`invalid_state`) alongside a body error settled as `invalid_state` and rejected as `unknown`. Both now read the top-level code from one shared `flush > body` classification source, so `outcome.code === rejection.code` for every failed outcome, while every concurrent cause stays reachable through one `AggregateError` in body, flush, settle order. A 1,000-combination property test pins the parity and the cause order.
|
|
14
|
+
- One throwing observational subscriber starved every subscriber registered after it, so a single failing extension could silently drop `settled`, `attempt_finished`, telemetry, and audit events. Both fan-out paths now deliver to every listener in registration order and raise the failures afterwards: `SubscriberFanout.emit()` in the harness, and `Agent`'s delivery, which moved to the new `listener-delivery.ts` leaf. A single failure still surfaces untouched so its own classification survives; several become one `AggregateError` classified by the first. Policy and mutation hooks (`AgentHarness.on()`) are unchanged and stay fail-fast, and each `Agent` listener still receives its own immutable snapshot so one observer's view cannot be rewritten into another's.
|
|
15
|
+
|
|
16
|
+
## [0.98.2] - 2026-09-02
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Added the operation lifecycle foundation modules: pure `operation-lifecycle-types` vocabulary, a side-effect-free `operation-lifecycle-reducer` transition table with classified violations, and `OperationLifecycleController` with operation/attempt leases, target-captured abort, exactly-once settlement, and a finalizer barrier.
|
|
21
|
+
- Routed every public `AgentHarness` operation through `runOperation()` on the lifecycle controller: `settled` now fires exactly once per operation with `operationId`, `outcome`, and `attemptCount`, and new `operation_started`, `attempt_started`, and `attempt_finished` events correlate attempts to operations. The final session-write flush precedes outcome classification, so a flush failure after provider success rejects with a `session`-classified error and never records `completed`.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Stopped `OperationLifecycleController.settle()` from wedging an operation after a rejected `settle_begin`: the controller marked the settlement as started before the reducer accepted it, so an operation whose settle was refused (for example with an attempt still open) could never settle later, and `lease.settled` plus every `waitForIdle()` waiter hung forever. The guard now engages only once the reducer has entered `settling`.
|
|
26
|
+
- Kept the recorded outcome and the public rejection in agreement for a pre-classified final-flush failure: a coordinator `invalid_state` reentry rejection now settles with code `invalid_state` instead of being relabelled `session` while the promise rejected with `invalid_state`.
|
|
27
|
+
- Tightened the reducer so `preparing -> recovering_overflow` is legal only when the most recently closed attempt ended with `overflow`. Entering recovery with no attempt, or after a completed/failed/aborted attempt, produced a dead-end stage from which no attempt could begin; it is now an `invalid_transition`.
|
|
28
|
+
- Rejected `steer()` and `followUp()` with `invalid_state` while `compact()` or `navigateTree()` is active. Those operations run no agent attempt, so the accepted messages had no consumer and were silently injected into the next unrelated prompt.
|
|
29
|
+
- Stopped a failing boundary flush from erasing the error it followed. `runAttempt()` flushed inside a `finally`, so a storage failure at the attempt boundary replaced the provider or listener error; the `turn_end` save-point flush did the same to a throwing listener. Both boundaries now report every cause through one `AggregateError` (`combineBoundaryErrors`), classified by the primary failure, while the flush still wins the operation outcome.
|
|
30
|
+
- Extracted the subscriber fan-out and its self-wait barrier into `subscriber-fanout.ts` (`SubscriberFanout`), a leaf module, so `agent-harness.ts` stays under its module-size baseline.
|
|
31
|
+
- Made operation settlement failure-safe: everything after a successful `begin()` now runs inside one capture region, so a throwing `operation_started` listener settles the operation and returns the harness to idle instead of leaving it permanently `busy`.
|
|
32
|
+
- Closed every started attempt exactly once. A new `runAttempt()` wrapper owns begin/announce/run/classify/close/announce, so a throwing `attempt_started` listener closes its attempt as `failed` rather than orphaning it, and `attempt_finished` is emitted only after the attempt is already closed. The reducer now also rejects `settle_begin` while an attempt is open with `attempt_mismatch`.
|
|
33
|
+
- Gave `promptFromTemplate()` the same result classifier as `prompt()` and `skill()`: an assistant error settles `failed` and an assistant abort settles `aborted`, instead of recording `completed`.
|
|
34
|
+
- Fixed outcome precedence so a raised abort signal no longer masks a real failure. Precedence is now `session flush failure > non-abort body/hook failure > explicit abort > result-classified > completed`, so an aborted turn whose final flush fails settles `failed`/`session` and rejects with `session`.
|
|
35
|
+
- Connected the `cancelled` operation outcome: a `session_before_tree` hook cancel or an aborted branch summary now settles `navigateTree` as `cancelled` with the session leaf unchanged.
|
|
36
|
+
- Made session-write persistence follow acceptance order. Each queued write carries a monotonic sequence and each boundary captures a watermark at invocation time, so a write enqueued after an idle boundary was reserved can no longer overtake it (previously `A, C, B` for a blocked `A`).
|
|
37
|
+
- Replaced the callback self-wait deadlock with a classified failure: `waitForIdle()` and `abort()` now reject with `invalid_state` when called from the synchronous prologue of a listener for the current operation. Unrelated concurrent callers are unaffected.
|
|
38
|
+
- Froze lifecycle operation/attempt refs and reducer state at runtime, so mutating a `getSnapshot()` result or an event payload can no longer corrupt internal correlation IDs.
|
|
39
|
+
- Structural operations now enter the `committing` stage immediately before the session mutation (`session.moveTo`, `appendCompaction`), making the previously unreachable stage observable; cancelled and no-op navigations never reach it.
|
|
40
|
+
- Removed the `harness/types.ts` -> package-barrel import and its redundant `AgentHarness` re-export, breaking an import cycle and letting 13 modules leave the cycle baseline.
|
|
41
|
+
- Kept context-overflow recovery inside the originating operation: the continuation runs as attempt `a1` under the same `operationId`, so one public prompt settles exactly once instead of emitting a second `settled` after recovery. Recovery compaction now runs on the operation abort signal.
|
|
42
|
+
- Made `abort()` target-captured: it waits only for the operation current at call time, and operations started later by listeners are never its target. Inline structural reentry from observational callbacks now rejects with `"busy"` instead of chaining runs.
|
|
43
|
+
- Corrected `session-write-coordinator.md` durability claims: the coordinator guarantees single-process FIFO ordering and acknowledgement-gated dequeue, not unconditional exactly-once durability. Added the `commit_unknown` failure vocabulary and linked the `PreparedSessionMutation` milestone that closes the gap.
|
|
44
|
+
- Coordinator enqueue and serialized idle model/active-tool updates now persist invocation-time snapshots instead of rereading caller-owned mutable inputs after validation; synchronous persistence reentry rejects instead of deadlocking.
|
|
45
|
+
- Pending `AgentHarness` session writes now retain FIFO order after a persistence failure: recovered writes flush before any later idle write, with queue ownership and flush serialization isolated in `SessionWriteCoordinator`.
|
|
46
|
+
|
|
47
|
+
## [0.98.1] - 2026-08-30
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- Added one-shot context-overflow recovery to `AgentHarness`: the failed assistant is removed from the active branch, history is compacted, and `runAgentLoopContinue()` retries without duplicating the user message. A second overflow is terminal, and unavailable recovery restores the original overflow leaf.
|
|
52
|
+
- Added projected-token auto-compaction before provider requests through `AgentHarnessOptions.compaction`. Successful runs rebuild the request from persisted compacted context; disabled, unauthenticated, cancelled, and true no-op decisions leave the request unchanged.
|
|
53
|
+
- Added bounded transient retry for generated compaction and branch-summary calls through `streamOptions.summarizationRetry`, with awaited `retry_scheduled`, `retry_attempt_start`, and `retry_finished` events. Quota/billing failures and aborts still fail fast.
|
|
54
|
+
- Added `AgentHarness.getSession()`, returning a storage-free `HarnessSession` facade. Persisted reads are detached snapshots; idle writes persist immediately; turn writes enter the ordered pending queue; structural-phase writes fail closed instead of lingering past settlement.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- `AgentHarness.abort()` now rejects during compaction, branch navigation, and retry phases instead of reporting success while an untracked structural operation remains active. Turn cancellation and idle queue clearing keep their existing behavior.
|
|
59
|
+
|
|
60
|
+
## [0.98.0] - 2026-08-28
|
|
61
|
+
|
|
62
|
+
## [0.97.0] - 2026-08-24
|
|
63
|
+
|
|
64
|
+
## [0.96.2] - 2026-08-21
|
|
65
|
+
|
|
66
|
+
### Notes
|
|
67
|
+
|
|
68
|
+
- Version lockstep with `open-multi-agent-kit@0.96.2`; no functional changes in this package.
|
|
69
|
+
|
|
70
|
+
## [0.96.1] - 2026-08-20
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- Added the `gitreverse` passive-analysis route for public repository-to-prompt reconstruction, including GitHub/file-tree evidence requirements, Git/GitHub tool hints, and secret-safe acceptance criteria.
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- Corrected the `resourceClaims` README example to use the public `key` field, matching the scheduler contract.
|
|
79
|
+
|
|
80
|
+
## [0.96.0] - 2026-08-16
|
|
81
|
+
|
|
82
|
+
## [0.95.2] - 2026-08-15
|
|
83
|
+
|
|
84
|
+
## [0.95.1] - 2026-08-01
|
|
85
|
+
|
|
86
|
+
## [0.95.0] - 2026-07-31
|
|
87
|
+
|
|
88
|
+
## [0.94.1] - 2026-07-27
|
|
89
|
+
|
|
90
|
+
## [0.94.0] - 2026-07-27
|
|
91
|
+
|
|
92
|
+
## [0.93.0] - 2026-07-26
|
|
93
|
+
|
|
94
|
+
## [0.92.0] - 2026-07-23
|
|
95
|
+
|
|
96
|
+
## [0.91.0] - 2026-07-21
|
|
97
|
+
|
|
98
|
+
### Notes
|
|
99
|
+
|
|
100
|
+
- Version lockstep with `open-multi-agent-kit@0.91.0`; no functional changes in this package.
|
|
101
|
+
|
|
102
|
+
## [0.90.8] - 2026-07-13
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
|
|
106
|
+
- Added `partitionToolBatchWaves`: tool-call batches now split into ordered, contiguous waves instead of all-or-nothing parallelization, so one conflicting or unknown call no longer serializes every independent read in the batch. `shouldParallelizeToolBatch` is now a single-wave check over the same partition.
|
|
107
|
+
|
|
108
|
+
### Fixed
|
|
109
|
+
|
|
110
|
+
- Fixed parallel tool-batch path overlap checks to collapse `.`/`..` segments, compare segments case-insensitively, and fail closed (sequential) when a path escapes the root, so `write`/`edit` calls aliasing the same file via `..` are no longer run concurrently.
|
|
111
|
+
|
|
112
|
+
## [0.90.7] - 2026-07-11
|
|
113
|
+
|
|
114
|
+
### Added
|
|
115
|
+
|
|
116
|
+
- Added the `ultra` thinking level to the agent `ThinkingLevel` type; it is only served by models that explicitly map it (currently GPT-5.6 Sol/Terra via Codex) and clamps down elsewhere.
|
|
117
|
+
- Added opt-in parallel tool batching to the agent loop: `shouldParallelizeToolBatch` parallelizes a tool-call batch only when every tool's execution policy allows it, and tools without a policy keep running sequentially.
|
|
118
|
+
|
|
119
|
+
### Fixed
|
|
120
|
+
|
|
121
|
+
- Fixed npm trusted-publishing identity after the GitHub repository rename by aligning package metadata with `dmae97/omk`.
|
|
122
|
+
|
|
123
|
+
## [0.90.6] - 2026-07-09
|
|
124
|
+
|
|
125
|
+
## [0.90.5] - 2026-07-07
|
|
126
|
+
|
|
127
|
+
## [0.90.4] - 2026-07-04
|
|
128
|
+
|
|
129
|
+
## [0.90.3] - 2026-07-02
|
|
130
|
+
|
|
131
|
+
## [0.90.2] - 2026-07-02
|
|
132
|
+
|
|
133
|
+
### Added
|
|
134
|
+
|
|
135
|
+
- Added the canonical reverse-skill workflow-routing harness module (`harness/reverse-skill.ts`), exported from the package root and re-exported by the coding agent.
|
|
136
|
+
|
|
137
|
+
## [0.90.1] - 2026-06-28
|
|
138
|
+
|
|
139
|
+
### Changed
|
|
140
|
+
|
|
141
|
+
- Changed runtime package metadata and lockstep release documentation to the standalone `omk-agent-core` package line used by OMK releases.
|
|
142
|
+
|
|
143
|
+
## [0.80.8] - 2026-06-27
|
|
144
|
+
|
|
145
|
+
### Breaking Changes
|
|
146
|
+
|
|
147
|
+
- Renamed the npm package from `@earendil-works/pi-agent-core` to `omk-agent-core` and updated internal OMK package dependencies.
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- Changed release metadata to lockstep OMK publishable packages at v0.80.8.
|
|
152
|
+
- Changed `estimateTokens` to add a per-message structural overhead and a non-zero floor for unknown-role messages, making compaction triggering more conservative.
|
|
153
|
+
- Changed `prepareCompaction` to skip true no-op compaction when the only oversized message would drop nothing.
|
|
154
|
+
- Changed `AgentHarness` failure events (`agent_end`) to include the completed turn messages before the synthetic failure message.
|
|
155
|
+
- Changed JSONL session storage to repair a complete-but-newline-missing tail via append instead of a full rewrite, keeping drop+rewrite only for genuinely torn tails.
|
|
156
|
+
|
|
157
|
+
### Fixed
|
|
158
|
+
|
|
159
|
+
- Fixed harness auto-compaction to trigger before provider requests when the projected prompt would exceed the configured context headroom.
|
|
160
|
+
- Fixed agent loop stopReason to report `"aborted"` when the loop signal is aborted instead of always `"error"`.
|
|
161
|
+
- Fixed `truncateLine` to be code-point-safe middle-out, preserving head and tail without splitting surrogate pairs.
|
|
162
|
+
|
|
163
|
+
## [0.78.0] - 2026-05-29
|
|
164
|
+
|
|
165
|
+
## [0.77.0] - 2026-05-28
|
|
166
|
+
|
|
167
|
+
### Breaking Changes
|
|
168
|
+
|
|
169
|
+
- Renamed agent harness `model_select` and `thinking_level_select` events to `model_update` and `thinking_level_update`.
|
|
170
|
+
|
|
171
|
+
### Added
|
|
172
|
+
|
|
173
|
+
- Added agent harness tool registry APIs, `tools_update` events, branch-scoped active-tool persistence, and duplicate tool validation.
|
|
174
|
+
|
|
175
|
+
## [0.76.0] - 2026-05-27
|
|
176
|
+
|
|
177
|
+
### Fixed
|
|
178
|
+
|
|
179
|
+
- Fixed context token estimates to count user image attachments consistently with tool result images ([#4983](https://github.com/earendil-works/pi/issues/4983)).
|
|
180
|
+
|
|
181
|
+
## [0.75.5] - 2026-05-23
|
|
182
|
+
|
|
183
|
+
## [0.75.4] - 2026-05-20
|
|
184
|
+
|
|
185
|
+
### Changed
|
|
186
|
+
|
|
187
|
+
- Changed source syntax to avoid TypeScript constructs that require JavaScript emit, keeping the package compatible with Node.js strip-only TypeScript checks.
|
|
188
|
+
- Removed the package-level development watch script now that the root TypeScript check validates strip-only-compatible sources.
|
|
189
|
+
|
|
190
|
+
### Fixed
|
|
191
|
+
|
|
192
|
+
- Fixed tool-call preflight to stop preparing sibling tool calls after the run is aborted ([#4276](https://github.com/earendil-works/pi/issues/4276)).
|
|
193
|
+
- Fixed tail truncation for oversized single-line output that ends with a trailing newline ([#4715](https://github.com/earendil-works/pi/issues/4715)).
|
|
194
|
+
- Fixed Windows Node execution environment command spawns to hide helper console windows from background processes ([#4699](https://github.com/earendil-works/pi/issues/4699)).
|
|
195
|
+
|
|
196
|
+
## [0.75.3] - 2026-05-18
|
|
197
|
+
|
|
198
|
+
## [0.75.2] - 2026-05-18
|
|
199
|
+
|
|
200
|
+
## [0.75.1] - 2026-05-18
|
|
201
|
+
|
|
202
|
+
## [0.75.0] - 2026-05-17
|
|
203
|
+
|
|
204
|
+
### Breaking Changes
|
|
205
|
+
|
|
206
|
+
- Raised the minimum supported Node.js version to 22.19.0.
|
|
207
|
+
|
|
208
|
+
## [0.74.1] - 2026-05-16
|
|
209
|
+
|
|
210
|
+
## [0.74.0] - 2026-05-07
|
|
211
|
+
|
|
212
|
+
## [0.73.1] - 2026-05-07
|
|
213
|
+
|
|
214
|
+
## [0.73.0] - 2026-05-04
|
|
215
|
+
|
|
216
|
+
## [0.72.1] - 2026-05-02
|
|
217
|
+
|
|
218
|
+
### Changed
|
|
219
|
+
|
|
220
|
+
- Changed the default agent transport to `auto` so providers can use their best available transport by default ([#4083](https://github.com/badlogic/pi-mono/issues/4083)).
|
|
221
|
+
|
|
222
|
+
## [0.72.0] - 2026-05-01
|
|
223
|
+
|
|
224
|
+
### Added
|
|
225
|
+
|
|
226
|
+
- Added `shouldStopAfterTurn` to the low-level agent loop config for gracefully exiting after a completed turn before polling queued messages or starting another LLM call.
|
|
227
|
+
|
|
228
|
+
## [0.71.1] - 2026-05-01
|
|
229
|
+
|
|
230
|
+
## [0.71.0] - 2026-04-30
|
|
231
|
+
|
|
232
|
+
## [0.70.6] - 2026-04-28
|
|
233
|
+
|
|
234
|
+
## [0.70.5] - 2026-04-27
|
|
235
|
+
|
|
236
|
+
## [0.70.4] - 2026-04-27
|
|
237
|
+
|
|
238
|
+
## [0.70.3] - 2026-04-27
|
|
239
|
+
|
|
240
|
+
## [0.70.2] - 2026-04-24
|
|
241
|
+
|
|
242
|
+
## [0.70.1] - 2026-04-24
|
|
243
|
+
|
|
244
|
+
## [0.70.0] - 2026-04-23
|
|
245
|
+
|
|
246
|
+
## [0.69.0] - 2026-04-22
|
|
247
|
+
|
|
248
|
+
### Breaking Changes
|
|
249
|
+
|
|
250
|
+
- Migrated public TypeBox-facing types and examples from `@sinclair/typebox` 0.34.x to `typebox` 1.x. Install and import from `typebox` instead of relying on `@sinclair/typebox` transitively ([#3112](https://github.com/badlogic/pi-mono/issues/3112))
|
|
251
|
+
|
|
252
|
+
### Added
|
|
253
|
+
|
|
254
|
+
- Added `terminate: true` tool-result hints to skip the automatic follow-up LLM call when every finalized tool result in the current batch opts into early termination ([#3525](https://github.com/badlogic/pi-mono/issues/3525))
|
|
255
|
+
|
|
256
|
+
## [0.68.1] - 2026-04-22
|
|
257
|
+
|
|
258
|
+
### Fixed
|
|
259
|
+
|
|
260
|
+
- Fixed `streamProxy()` to preserve the proxy-safe serializable subset of stream options, including session, transport, retry-delay, metadata, header, cache-retention, and thinking-budget settings ([#3512](https://github.com/badlogic/pi-mono/issues/3512))
|
|
261
|
+
- Fixed parallel tool execution to emit `tool_execution_end` as soon as each tool is finalized, while still emitting persisted tool-result messages in assistant source order ([#3503](https://github.com/badlogic/pi-mono/issues/3503))
|
|
262
|
+
|
|
263
|
+
## [0.68.0] - 2026-04-20
|
|
264
|
+
|
|
265
|
+
### Changed
|
|
266
|
+
|
|
267
|
+
- Clarified parallel tool execution ordering docs to specify that final tool lifecycle and tool-result artifacts are emitted in tool completion order.
|
|
268
|
+
|
|
269
|
+
## [0.67.68] - 2026-04-17
|
|
270
|
+
|
|
271
|
+
## [0.67.67] - 2026-04-17
|
|
272
|
+
|
|
273
|
+
### Fixed
|
|
274
|
+
|
|
275
|
+
- Fixed parallel tool-call finalization to convert `afterToolCall` hook throws into error tool results instead of aborting the batch ([#3084](https://github.com/badlogic/pi-mono/issues/3084))
|
|
276
|
+
|
|
277
|
+
## [0.67.6] - 2026-04-16
|
|
278
|
+
|
|
279
|
+
## [0.67.5] - 2026-04-16
|
|
280
|
+
|
|
281
|
+
## [0.67.4] - 2026-04-16
|
|
282
|
+
|
|
283
|
+
## [0.67.3] - 2026-04-15
|
|
284
|
+
|
|
285
|
+
## [0.67.2] - 2026-04-14
|
|
286
|
+
|
|
287
|
+
## [0.67.1] - 2026-04-13
|
|
288
|
+
|
|
289
|
+
## [0.67.0] - 2026-04-13
|
|
290
|
+
|
|
291
|
+
## [0.66.1] - 2026-04-08
|
|
292
|
+
|
|
293
|
+
## [0.66.0] - 2026-04-08
|
|
294
|
+
|
|
295
|
+
## [0.65.2] - 2026-04-06
|
|
296
|
+
|
|
297
|
+
## [0.65.1] - 2026-04-05
|
|
298
|
+
|
|
299
|
+
## [0.65.0] - 2026-04-03
|
|
300
|
+
|
|
301
|
+
### Breaking Changes
|
|
302
|
+
|
|
303
|
+
- `AgentState` has been reshaped:
|
|
304
|
+
- `streamMessage` was renamed to `streamingMessage`
|
|
305
|
+
- `error` was renamed to `errorMessage`
|
|
306
|
+
- `isStreaming`, `streamingMessage`, `pendingToolCalls`, and `errorMessage` are now readonly in the public API
|
|
307
|
+
- `pendingToolCalls` is now typed as `ReadonlySet<string>`
|
|
308
|
+
- `tools` and `messages` are now accessor properties, and assigning either field copies the provided top-level array instead of preserving array identity
|
|
309
|
+
- `AgentOptions.initialState` no longer accepts runtime-owned fields. Remove `isStreaming`, `streamingMessage`, `pendingToolCalls`, and `errorMessage` from `initialState` values.
|
|
310
|
+
- Removed `Agent` mutator methods in favor of direct property access:
|
|
311
|
+
- `agent.setSystemPrompt(value)` -> `agent.state.systemPrompt = value`
|
|
312
|
+
- `agent.setModel(model)` -> `agent.state.model = model`
|
|
313
|
+
- `agent.setThinkingLevel(level)` -> `agent.state.thinkingLevel = level`
|
|
314
|
+
- `agent.setTools(tools)` -> `agent.state.tools = tools`
|
|
315
|
+
- `agent.replaceMessages(messages)` -> `agent.state.messages = messages`
|
|
316
|
+
- `agent.appendMessage(message)` -> `agent.state.messages.push(message)`
|
|
317
|
+
- `agent.clearMessages()` -> `agent.state.messages = []`
|
|
318
|
+
- `agent.setToolExecution(mode)` -> `agent.toolExecution = mode`
|
|
319
|
+
- `agent.setBeforeToolCall(fn)` -> `agent.beforeToolCall = fn`
|
|
320
|
+
- `agent.setAfterToolCall(fn)` -> `agent.afterToolCall = fn`
|
|
321
|
+
- `agent.setTransport(transport)` -> `agent.transport = transport`
|
|
322
|
+
- Removed queue mode getter/setter methods in favor of properties:
|
|
323
|
+
- `agent.setSteeringMode(mode)` -> `agent.steeringMode = mode`
|
|
324
|
+
- `agent.getSteeringMode()` -> `agent.steeringMode`
|
|
325
|
+
- `agent.setFollowUpMode(mode)` -> `agent.followUpMode = mode`
|
|
326
|
+
- `agent.getFollowUpMode()` -> `agent.followUpMode`
|
|
327
|
+
- `Agent.subscribe()` listeners are now awaited and receive the active `AbortSignal`:
|
|
328
|
+
- `agent.subscribe((event) => { ... })` -> `agent.subscribe(async (event, signal) => { ... })`
|
|
329
|
+
- `agent_end` is now the final emitted event for a run, but not the idle boundary
|
|
330
|
+
- `agent.waitForIdle()`, `agent.prompt(...)`, and `agent.continue()` now settle only after awaited `agent_end` listeners finish
|
|
331
|
+
- `agent.state.isStreaming` remains `true` until that settlement completes
|
|
332
|
+
|
|
333
|
+
## [0.64.0] - 2026-03-29
|
|
334
|
+
|
|
335
|
+
### Added
|
|
336
|
+
|
|
337
|
+
- Added `AgentTool.prepareArguments` hook to prepare raw tool call arguments before schema validation, enabling compatibility shims for resumed sessions with outdated tool schemas
|
|
338
|
+
|
|
339
|
+
## [0.63.2] - 2026-03-29
|
|
340
|
+
|
|
341
|
+
### Added
|
|
342
|
+
|
|
343
|
+
- Added `Agent.signal` to expose the active abort signal for the current turn, allowing callers to forward cancellation into nested async work ([#2660](https://github.com/badlogic/pi-mono/issues/2660))
|
|
344
|
+
|
|
345
|
+
## [0.63.1] - 2026-03-27
|
|
346
|
+
|
|
347
|
+
## [0.63.0] - 2026-03-27
|
|
348
|
+
|
|
349
|
+
## [0.62.0] - 2026-03-23
|
|
350
|
+
|
|
351
|
+
## [0.61.1] - 2026-03-20
|
|
352
|
+
|
|
353
|
+
## [0.61.0] - 2026-03-20
|
|
354
|
+
|
|
355
|
+
## [0.60.0] - 2026-03-18
|
|
356
|
+
|
|
357
|
+
## [0.59.0] - 2026-03-17
|
|
358
|
+
|
|
359
|
+
## [0.58.4] - 2026-03-16
|
|
360
|
+
|
|
361
|
+
### Fixed
|
|
362
|
+
|
|
363
|
+
- Fixed steering messages to wait until the current assistant message's tool-call batch fully finishes instead of skipping pending tool calls.
|
|
364
|
+
|
|
365
|
+
## [0.58.3] - 2026-03-15
|
|
366
|
+
|
|
367
|
+
## [0.58.2] - 2026-03-15
|
|
368
|
+
|
|
369
|
+
## [0.58.1] - 2026-03-14
|
|
370
|
+
|
|
371
|
+
## [0.58.0] - 2026-03-14
|
|
372
|
+
|
|
373
|
+
### Added
|
|
374
|
+
|
|
375
|
+
- Added `beforeToolCall` and `afterToolCall` hooks to `AgentOptions` and `AgentLoopConfig` for preflight blocking and post-execution tool result mutation.
|
|
376
|
+
|
|
377
|
+
### Changed
|
|
378
|
+
|
|
379
|
+
- Added configurable tool execution mode to `Agent` and `agentLoop` via `toolExecution: "parallel" | "sequential"`, with `parallel` as the default. Parallel mode preflights tool calls sequentially, executes allowed tools concurrently, and emits final tool results in assistant source order.
|
|
380
|
+
|
|
381
|
+
## [0.57.1] - 2026-03-07
|
|
382
|
+
|
|
383
|
+
## [0.57.0] - 2026-03-07
|
|
384
|
+
|
|
385
|
+
## [0.56.3] - 2026-03-06
|
|
386
|
+
|
|
387
|
+
## [0.56.2] - 2026-03-05
|
|
388
|
+
|
|
389
|
+
## [0.56.1] - 2026-03-05
|
|
390
|
+
|
|
391
|
+
## [0.56.0] - 2026-03-04
|
|
392
|
+
|
|
393
|
+
## [0.55.4] - 2026-03-02
|
|
394
|
+
|
|
395
|
+
## [0.55.3] - 2026-02-27
|
|
396
|
+
|
|
397
|
+
## [0.55.2] - 2026-02-27
|
|
398
|
+
|
|
399
|
+
## [0.55.1] - 2026-02-26
|
|
400
|
+
|
|
401
|
+
## [0.55.0] - 2026-02-24
|
|
402
|
+
|
|
403
|
+
## [0.54.2] - 2026-02-23
|
|
404
|
+
|
|
405
|
+
## [0.54.1] - 2026-02-22
|
|
406
|
+
|
|
407
|
+
## [0.54.0] - 2026-02-19
|
|
408
|
+
|
|
409
|
+
## [0.53.1] - 2026-02-19
|
|
410
|
+
|
|
411
|
+
## [0.53.0] - 2026-02-17
|
|
412
|
+
|
|
413
|
+
## [0.52.12] - 2026-02-13
|
|
414
|
+
|
|
415
|
+
### Added
|
|
416
|
+
|
|
417
|
+
- Added `transport` to `AgentOptions` and `AgentLoopConfig` forwarding, allowing stream transport preference (`"sse"`, `"websocket"`, `"auto"`) to flow into provider calls.
|
|
418
|
+
|
|
419
|
+
## [0.52.11] - 2026-02-13
|
|
420
|
+
|
|
421
|
+
## [0.52.10] - 2026-02-12
|
|
422
|
+
|
|
423
|
+
## [0.52.9] - 2026-02-08
|
|
424
|
+
|
|
425
|
+
## [0.52.8] - 2026-02-07
|
|
426
|
+
|
|
427
|
+
## [0.52.7] - 2026-02-06
|
|
428
|
+
|
|
429
|
+
### Fixed
|
|
430
|
+
|
|
431
|
+
- Fixed `continue()` to resume queued steering/follow-up messages when context currently ends in an assistant message, and preserved one-at-a-time steering ordering during assistant-tail resumes ([#1312](https://github.com/badlogic/pi-mono/pull/1312) by [@ferologics](https://github.com/ferologics))
|
|
432
|
+
|
|
433
|
+
## [0.52.6] - 2026-02-05
|
|
434
|
+
|
|
435
|
+
## [0.52.5] - 2026-02-05
|
|
436
|
+
|
|
437
|
+
## [0.52.4] - 2026-02-05
|
|
438
|
+
|
|
439
|
+
## [0.52.3] - 2026-02-05
|
|
440
|
+
|
|
441
|
+
## [0.52.2] - 2026-02-05
|
|
442
|
+
|
|
443
|
+
## [0.52.1] - 2026-02-05
|
|
444
|
+
|
|
445
|
+
## [0.52.0] - 2026-02-05
|
|
446
|
+
|
|
447
|
+
## [0.51.6] - 2026-02-04
|
|
448
|
+
|
|
449
|
+
## [0.51.5] - 2026-02-04
|
|
450
|
+
|
|
451
|
+
## [0.51.4] - 2026-02-03
|
|
452
|
+
|
|
453
|
+
## [0.51.3] - 2026-02-03
|
|
454
|
+
|
|
455
|
+
## [0.51.2] - 2026-02-03
|
|
456
|
+
|
|
457
|
+
## [0.51.1] - 2026-02-02
|
|
458
|
+
|
|
459
|
+
## [0.51.0] - 2026-02-01
|
|
460
|
+
|
|
461
|
+
## [0.50.9] - 2026-02-01
|
|
462
|
+
|
|
463
|
+
## [0.50.8] - 2026-02-01
|
|
464
|
+
|
|
465
|
+
### Added
|
|
466
|
+
|
|
467
|
+
- Added `maxRetryDelayMs` option to `AgentOptions` to cap server-requested retry delays. Passed through to the underlying stream function. ([#1123](https://github.com/badlogic/pi-mono/issues/1123))
|
|
468
|
+
|
|
469
|
+
## [0.50.7] - 2026-01-31
|
|
470
|
+
|
|
471
|
+
## [0.50.6] - 2026-01-30
|
|
472
|
+
|
|
473
|
+
## [0.50.5] - 2026-01-30
|
|
474
|
+
|
|
475
|
+
## [0.50.3] - 2026-01-29
|
|
476
|
+
|
|
477
|
+
## [0.50.2] - 2026-01-29
|
|
478
|
+
|
|
479
|
+
## [0.50.1] - 2026-01-26
|
|
480
|
+
|
|
481
|
+
## [0.50.0] - 2026-01-26
|
|
482
|
+
|
|
483
|
+
## [0.49.3] - 2026-01-22
|
|
484
|
+
|
|
485
|
+
## [0.49.2] - 2026-01-19
|
|
486
|
+
|
|
487
|
+
## [0.49.1] - 2026-01-18
|
|
488
|
+
|
|
489
|
+
## [0.49.0] - 2026-01-17
|
|
490
|
+
|
|
491
|
+
## [0.48.0] - 2026-01-16
|
|
492
|
+
|
|
493
|
+
## [0.47.0] - 2026-01-16
|
|
494
|
+
|
|
495
|
+
## [0.46.0] - 2026-01-15
|
|
496
|
+
|
|
497
|
+
## [0.45.7] - 2026-01-13
|
|
498
|
+
|
|
499
|
+
## [0.45.6] - 2026-01-13
|
|
500
|
+
|
|
501
|
+
## [0.45.5] - 2026-01-13
|
|
502
|
+
|
|
503
|
+
## [0.45.4] - 2026-01-13
|
|
504
|
+
|
|
505
|
+
## [0.45.3] - 2026-01-13
|
|
506
|
+
|
|
507
|
+
## [0.45.2] - 2026-01-13
|
|
508
|
+
|
|
509
|
+
## [0.45.1] - 2026-01-13
|
|
510
|
+
|
|
511
|
+
## [0.45.0] - 2026-01-13
|
|
512
|
+
|
|
513
|
+
## [0.44.0] - 2026-01-12
|
|
514
|
+
|
|
515
|
+
## [0.43.0] - 2026-01-11
|
|
516
|
+
|
|
517
|
+
## [0.42.5] - 2026-01-11
|
|
518
|
+
|
|
519
|
+
## [0.42.4] - 2026-01-10
|
|
520
|
+
|
|
521
|
+
## [0.42.3] - 2026-01-10
|
|
522
|
+
|
|
523
|
+
## [0.42.2] - 2026-01-10
|
|
524
|
+
|
|
525
|
+
## [0.42.1] - 2026-01-09
|
|
526
|
+
|
|
527
|
+
## [0.42.0] - 2026-01-09
|
|
528
|
+
|
|
529
|
+
## [0.41.0] - 2026-01-09
|
|
530
|
+
|
|
531
|
+
## [0.40.1] - 2026-01-09
|
|
532
|
+
|
|
533
|
+
## [0.40.0] - 2026-01-08
|
|
534
|
+
|
|
535
|
+
## [0.39.1] - 2026-01-08
|
|
536
|
+
|
|
537
|
+
## [0.39.0] - 2026-01-08
|
|
538
|
+
|
|
539
|
+
## [0.38.0] - 2026-01-08
|
|
540
|
+
|
|
541
|
+
### Added
|
|
542
|
+
|
|
543
|
+
- `thinkingBudgets` option on `Agent` and `AgentOptions` to customize token budgets per thinking level ([#529](https://github.com/badlogic/pi-mono/pull/529) by [@melihmucuk](https://github.com/melihmucuk))
|
|
544
|
+
|
|
545
|
+
## [0.37.8] - 2026-01-07
|
|
546
|
+
|
|
547
|
+
## [0.37.7] - 2026-01-07
|
|
548
|
+
|
|
549
|
+
## [0.37.6] - 2026-01-06
|
|
550
|
+
|
|
551
|
+
## [0.37.5] - 2026-01-06
|
|
552
|
+
|
|
553
|
+
## [0.37.4] - 2026-01-06
|
|
554
|
+
|
|
555
|
+
## [0.37.3] - 2026-01-06
|
|
556
|
+
|
|
557
|
+
### Added
|
|
558
|
+
|
|
559
|
+
- `sessionId` option on `Agent` to forward session identifiers to LLM providers for session-based caching.
|
|
560
|
+
|
|
561
|
+
## [0.37.2] - 2026-01-05
|
|
562
|
+
|
|
563
|
+
## [0.37.1] - 2026-01-05
|
|
564
|
+
|
|
565
|
+
## [0.37.0] - 2026-01-05
|
|
566
|
+
|
|
567
|
+
### Fixed
|
|
568
|
+
|
|
569
|
+
- `minimal` thinking level now maps to `minimal` reasoning effort instead of being treated as `low`.
|
|
570
|
+
|
|
571
|
+
## [0.36.0] - 2026-01-05
|
|
572
|
+
|
|
573
|
+
## [0.35.0] - 2026-01-05
|
|
574
|
+
|
|
575
|
+
## [0.34.2] - 2026-01-04
|
|
576
|
+
|
|
577
|
+
## [0.34.1] - 2026-01-04
|
|
578
|
+
|
|
579
|
+
## [0.34.0] - 2026-01-04
|
|
580
|
+
|
|
581
|
+
## [0.33.0] - 2026-01-04
|
|
582
|
+
|
|
583
|
+
## [0.32.3] - 2026-01-03
|
|
584
|
+
|
|
585
|
+
## [0.32.2] - 2026-01-03
|
|
586
|
+
|
|
587
|
+
## [0.32.1] - 2026-01-03
|
|
588
|
+
|
|
589
|
+
## [0.32.0] - 2026-01-03
|
|
590
|
+
|
|
591
|
+
### Breaking Changes
|
|
592
|
+
|
|
593
|
+
- **Queue API replaced with steer/followUp**: The `queueMessage()` method has been split into two methods with different delivery semantics ([#403](https://github.com/badlogic/pi-mono/issues/403)):
|
|
594
|
+
- `steer(msg)`: Interrupts the agent mid-run. Delivered after current tool execution, skips remaining tools.
|
|
595
|
+
- `followUp(msg)`: Waits until the agent finishes. Delivered only when there are no more tool calls or steering messages.
|
|
596
|
+
- **Queue mode renamed**: `queueMode` option renamed to `steeringMode`. Added new `followUpMode` option. Both control whether messages are delivered one-at-a-time or all at once.
|
|
597
|
+
- **AgentLoopConfig callbacks renamed**: `getQueuedMessages` split into `getSteeringMessages` and `getFollowUpMessages`.
|
|
598
|
+
- **Agent methods renamed**:
|
|
599
|
+
- `queueMessage()` → `steer()` and `followUp()`
|
|
600
|
+
- `clearMessageQueue()` → `clearSteeringQueue()`, `clearFollowUpQueue()`, `clearAllQueues()`
|
|
601
|
+
- `setQueueMode()`/`getQueueMode()` → `setSteeringMode()`/`getSteeringMode()` and `setFollowUpMode()`/`getFollowUpMode()`
|
|
602
|
+
|
|
603
|
+
### Fixed
|
|
604
|
+
|
|
605
|
+
- `prompt()` and `continue()` now throw if called while the agent is already streaming, preventing race conditions and corrupted state. Use `steer()` or `followUp()` to queue messages during streaming, or `await` the previous call.
|
|
606
|
+
|
|
607
|
+
## [0.31.1] - 2026-01-02
|
|
608
|
+
|
|
609
|
+
## [0.31.0] - 2026-01-02
|
|
610
|
+
|
|
611
|
+
### Breaking Changes
|
|
612
|
+
|
|
613
|
+
- **Transport abstraction removed**: `ProviderTransport`, `AppTransport`, and `AgentTransport` interface have been removed. Use the `streamFn` option directly for custom streaming implementations.
|
|
614
|
+
|
|
615
|
+
- **Agent options renamed**:
|
|
616
|
+
- `transport` → removed (use `streamFn` instead)
|
|
617
|
+
- `messageTransformer` → `convertToLlm`
|
|
618
|
+
- `preprocessor` → `transformContext`
|
|
619
|
+
|
|
620
|
+
- **`AppMessage` renamed to `AgentMessage`**: All references to `AppMessage` have been renamed to `AgentMessage` for consistency.
|
|
621
|
+
|
|
622
|
+
- **`CustomMessages` renamed to `CustomAgentMessages`**: The declaration merging interface has been renamed.
|
|
623
|
+
|
|
624
|
+
- **`UserMessageWithAttachments` and `Attachment` types removed**: Attachment handling is now the responsibility of the `convertToLlm` function.
|
|
625
|
+
|
|
626
|
+
- **Agent loop moved from `@mariozechner/pi-ai`**: The `agentLoop`, `agentLoopContinue`, and related types have moved to this package. Import from `@mariozechner/pi-agent-core` instead.
|
|
627
|
+
|
|
628
|
+
### Added
|
|
629
|
+
|
|
630
|
+
- `streamFn` option on `Agent` for custom stream implementations. Default uses `streamSimple` from pi-ai.
|
|
631
|
+
|
|
632
|
+
- `streamProxy()` utility function for browser apps that need to proxy LLM calls through a backend server. Replaces the removed `AppTransport`.
|
|
633
|
+
|
|
634
|
+
- `getApiKey` option for dynamic API key resolution (useful for expiring OAuth tokens like GitHub Copilot).
|
|
635
|
+
|
|
636
|
+
- `agentLoop()` and `agentLoopContinue()` low-level functions for running the agent loop without the `Agent` class wrapper.
|
|
637
|
+
|
|
638
|
+
- New exported types: `AgentLoopConfig`, `AgentContext`, `AgentTool`, `AgentToolResult`, `AgentToolUpdateCallback`, `StreamFn`.
|
|
639
|
+
|
|
640
|
+
### Changed
|
|
641
|
+
|
|
642
|
+
- `Agent` constructor now has all options optional (empty options use defaults).
|
|
643
|
+
|
|
644
|
+
- `queueMessage()` is now synchronous (no longer returns a Promise).
|