stitchkit 0.85.1 → 0.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +178 -0
- package/README.md +3 -0
- package/dist/agent-runtime/agent-tool.d.ts +25 -0
- package/dist/agent-runtime/agent-tool.d.ts.map +1 -0
- package/dist/agent-runtime/child-tools.d.ts +69 -0
- package/dist/agent-runtime/child-tools.d.ts.map +1 -0
- package/dist/agent-runtime/children.d.ts +113 -0
- package/dist/agent-runtime/children.d.ts.map +1 -0
- package/dist/agent-runtime/coding-tool-contract.d.ts +29 -0
- package/dist/agent-runtime/coding-tool-contract.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tool-refusals.d.ts +2 -0
- package/dist/agent-runtime/coding-tool-refusals.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tool-shell.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tools.d.ts +1 -0
- package/dist/agent-runtime/coding-tools.d.ts.map +1 -1
- package/dist/agent-runtime/control-schema.d.ts +17 -0
- package/dist/agent-runtime/control-schema.d.ts.map +1 -1
- package/dist/agent-runtime/event-schema.d.ts +34 -0
- package/dist/agent-runtime/event-schema.d.ts.map +1 -1
- package/dist/agent-runtime/event-search-tools.d.ts +53 -0
- package/dist/agent-runtime/event-search-tools.d.ts.map +1 -0
- package/dist/agent-runtime/event-search.d.ts +23 -0
- package/dist/agent-runtime/event-search.d.ts.map +1 -0
- package/dist/agent-runtime/fault-bench.d.ts +45 -0
- package/dist/agent-runtime/fault-bench.d.ts.map +1 -0
- package/dist/agent-runtime/observability.d.ts +6 -0
- package/dist/agent-runtime/observability.d.ts.map +1 -1
- package/dist/agent-runtime/projections.d.ts +69 -0
- package/dist/agent-runtime/projections.d.ts.map +1 -0
- package/dist/agent-runtime/provider-failure.d.ts +5 -1
- package/dist/agent-runtime/provider-failure.d.ts.map +1 -1
- package/dist/agent-runtime/provider-origin.d.ts +12 -0
- package/dist/agent-runtime/provider-origin.d.ts.map +1 -0
- package/dist/agent-runtime/retry-policy.d.ts +27 -0
- package/dist/agent-runtime/retry-policy.d.ts.map +1 -0
- package/dist/agent-runtime/run-execution.d.ts +0 -9
- package/dist/agent-runtime/run-execution.d.ts.map +1 -1
- package/dist/agent-runtime/run-mutation-queue.d.ts +21 -0
- package/dist/agent-runtime/run-mutation-queue.d.ts.map +1 -0
- package/dist/agent-runtime/run-operation-lifecycle.d.ts +3 -0
- package/dist/agent-runtime/run-operation-lifecycle.d.ts.map +1 -1
- package/dist/agent-runtime/runtime.d.ts +15 -0
- package/dist/agent-runtime/runtime.d.ts.map +1 -1
- package/dist/agent-runtime/sandbox.d.ts +66 -0
- package/dist/agent-runtime/sandbox.d.ts.map +1 -0
- package/dist/agent-runtime/schedule-tools.d.ts +35 -0
- package/dist/agent-runtime/schedule-tools.d.ts.map +1 -0
- package/dist/agent-runtime/schedules.d.ts +63 -0
- package/dist/agent-runtime/schedules.d.ts.map +1 -0
- package/dist/agent-runtime/schemas.d.ts +9 -0
- package/dist/agent-runtime/schemas.d.ts.map +1 -1
- package/dist/agent-runtime/spill.d.ts +24 -0
- package/dist/agent-runtime/spill.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-purge.d.ts.map +1 -1
- package/dist/agent-runtime/sqlite.d.ts +26 -0
- package/dist/agent-runtime/sqlite.d.ts.map +1 -1
- package/dist/agent-runtime/state-slots.d.ts +48 -0
- package/dist/agent-runtime/state-slots.d.ts.map +1 -0
- package/dist/agent-runtime/state-tools.d.ts +58 -0
- package/dist/agent-runtime/state-tools.d.ts.map +1 -0
- package/dist/agent-runtime/store-driver.d.ts +13 -0
- package/dist/agent-runtime/store-driver.d.ts.map +1 -1
- package/dist/agent-runtime/store-events.d.ts +829 -0
- package/dist/agent-runtime/store-events.d.ts.map +1 -0
- package/dist/agent-runtime/store-migrations/v1-to-v2.d.ts +6 -0
- package/dist/agent-runtime/store-migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/agent-runtime/store.d.ts +45 -0
- package/dist/agent-runtime/store.d.ts.map +1 -1
- package/dist/agent-runtime/terminal-commit.d.ts +1 -1
- package/dist/agent-runtime-browser.js +5 -3
- package/dist/agent-runtime-coding-tools.js +144 -15
- package/dist/agent-runtime-harness.js +12 -10
- package/dist/agent-runtime-sqlite-bun.d.ts +1 -1
- package/dist/agent-runtime-sqlite-bun.d.ts.map +1 -1
- package/dist/agent-runtime-sqlite-bun.js +4 -3
- package/dist/agent-runtime-sqlite-node.d.ts +1 -1
- package/dist/agent-runtime-sqlite-node.d.ts.map +1 -1
- package/dist/agent-runtime-sqlite-node.js +4 -3
- package/dist/agent-runtime-testing.d.ts +3 -0
- package/dist/agent-runtime-testing.d.ts.map +1 -0
- package/dist/agent-runtime-testing.js +156 -0
- package/dist/agent-runtime.d.ts +16 -2
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.js +1591 -154
- package/dist/application.js +14 -14
- package/dist/cli.js +6 -6
- package/dist/{index-fwbkp2jn.js → index-0vfdh685.js} +2 -2
- package/dist/{index-5z8tezpx.js → index-0ydchz76.js} +3 -3
- package/dist/{index-3ds42w1w.js → index-1szetq6f.js} +33 -4
- package/dist/{index-jpp7jd1p.js → index-33xckd7h.js} +898 -425
- package/dist/{index-27487ay5.js → index-9hw9eq48.js} +4 -4
- package/dist/{index-66nxrgy0.js → index-b7qwhbzq.js} +428 -46
- package/dist/index-cnyk6te3.js +77 -0
- package/dist/index-gskm1k5a.js +50 -0
- package/dist/{index-fq492hg0.js → index-hber83mk.js} +254 -157
- package/dist/{index-4hk633vz.js → index-hkm6wysp.js} +9 -2
- package/dist/{index-dx9xehwt.js → index-kc6h6hg0.js} +1 -1
- package/dist/{index-x15ss2dx.js → index-p1b1y93x.js} +3 -0
- package/dist/{index-mgtxfe6b.js → index-r159gjwy.js} +8 -1
- package/dist/{index-s4ckmrac.js → index-rcgsnrr6.js} +3 -3
- package/dist/index-vfgb58nf.js +252 -0
- package/dist/{index-dggwnnjv.js → index-wn9cb82y.js} +1 -1
- package/dist/{index-ff0kcqvp.js → index-z2452tsw.js} +3 -3
- package/dist/testing/agent-store-conformance.d.ts.map +1 -1
- package/dist/testing.js +54 -80
- package/dist/tool-invoker.js +4 -4
- package/dist/tools/internal/surface-projector.d.ts.map +1 -1
- package/dist/tools/manifest.d.ts +16 -0
- package/dist/tools/manifest.d.ts.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +10 -8
- package/llms-full.txt +321 -13
- package/package.json +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,184 @@ additive**; the first breaking change landed in 0.10.0. Grep the file for
|
|
|
15
15
|
|
|
16
16
|
## [Unreleased]
|
|
17
17
|
|
|
18
|
+
## [0.86.0] — 2026-09-08
|
|
19
|
+
|
|
20
|
+
### ⚠️ Breaking changes
|
|
21
|
+
|
|
22
|
+
**Who must act:** applications that branch on `AgentTerminalReason` or show it
|
|
23
|
+
to a person; applications implementing `AgentRuntimeStore` or an
|
|
24
|
+
`AgentRuntimeStoreDriver` (Prisma, Postgres, anything not built in); operators
|
|
25
|
+
of SQLite store files; subscribers that switch exhaustively over
|
|
26
|
+
`AgentRuntimeEvent` (including browser reducers).
|
|
27
|
+
|
|
28
|
+
- **A failure this runtime owns no longer reports `provider_failure`.** Three
|
|
29
|
+
values join the enum — `storage_conflict` (an owned mutation lost its
|
|
30
|
+
compare-and-set or the store refused it), `output_rejected` (the
|
|
31
|
+
application's own `protocol.acceptTerminal` refused the finished message) and
|
|
32
|
+
`runtime_failure` (this runtime, or a check the SDK runs on what this runtime
|
|
33
|
+
handed it, failed). Runs that ended `provider_failure` for these reasons now
|
|
34
|
+
end with the matching one, so a branch keyed on `provider_failure` stops
|
|
35
|
+
seeing them. `// before: reason === 'provider_failure'` → `// after:
|
|
36
|
+
reason === 'provider_failure' || reason === 'storage_conflict' ||
|
|
37
|
+
reason === 'output_rejected' || reason === 'runtime_failure'` for "did it
|
|
38
|
+
fail", and the specific value for what to tell a person. See the 0.86.0
|
|
39
|
+
migration in the upgrading guide.
|
|
40
|
+
- **Direct stores add the canonical event-ledger methods, and drivers add the
|
|
41
|
+
table behind them.** `AgentRuntimeStore` gains `appendEvent`, bounded
|
|
42
|
+
`readEvents`, `exportConversation` and `importConversation`.
|
|
43
|
+
`AgentRuntimeStoreDriver` gains a **required** `events: { append, list }` —
|
|
44
|
+
a driver passed to `createAgentRuntimeStore` implements the ledger table
|
|
45
|
+
itself; the store composes the methods over it. The Prisma example shows the
|
|
46
|
+
table and both operations
|
|
47
|
+
(`examples/agent-store-prisma/schema.prisma`, `adapter.ts`). See the 0.86.0
|
|
48
|
+
migration in the upgrading guide for the driver section.
|
|
49
|
+
- **The built-in SQLite stores migrate schema 1 → 2 on open, once, forward
|
|
50
|
+
only.** The first open of a version-1 file writes one `runtime/baseline`
|
|
51
|
+
event per conversation and sets the version to 2 in one transaction; a
|
|
52
|
+
0.85.x package then refuses the file (`Unsupported … schema version 2`).
|
|
53
|
+
Back the file up before upgrading. Version 2 requires SQLite built with FTS5
|
|
54
|
+
(`SELECT sqlite_compileoption_used('ENABLE_FTS5')`); a build without it is
|
|
55
|
+
refused at open with `requires FTS5 support`.
|
|
56
|
+
- **Every run operation and every provider request now write to the ledger.**
|
|
57
|
+
Each store mutation appends a `runtime/transition`, and each model step
|
|
58
|
+
appends a `provider/request` before the provider is called. Bodies are
|
|
59
|
+
content-addressed: a message is written once per conversation as
|
|
60
|
+
`provider/message` (`{ sha256, message }`, binary parts as
|
|
61
|
+
`{ binary: true, sha256, bytes }` references) and a request names its instructions and messages by hash
|
|
62
|
+
(`{ runId, attempt, stepNumber, modelId, instructionsSha256, messageShas,
|
|
63
|
+
bodySha256 }`), so the ledger grows with new messages rather than with every
|
|
64
|
+
step's copy of the history. A checkpoint transition carries the draft's hash
|
|
65
|
+
and size, not the draft; the terminal commit carries the message. For an
|
|
66
|
+
external driver that is one more row per operation and per step, plus one
|
|
67
|
+
per new message, on the hot path; there is no opt-out, because the ledger is
|
|
68
|
+
the history.- **`AgentRuntimeEvent` gains the transient `attempt-reset` event.** Published
|
|
69
|
+
before a retried attempt's first delta, with `runtimeEpoch`, `sequence` and
|
|
70
|
+
`attempt`; `reduceAgentControlEvent` drops the run's transient text on it.
|
|
71
|
+
A reducer that switches exhaustively over `event.type` stops compiling until
|
|
72
|
+
it handles the case; a reducer that ignores unknown events keeps the failed
|
|
73
|
+
attempt's partial text on screen. `// before: switch (event.type) { … }` →
|
|
74
|
+
`// after: case 'attempt-reset': transient = { text: '', reasoning: '' }`.
|
|
75
|
+
Exported as `AgentAttemptResetEventSchema` from `stitchkit/agent-runtime` and
|
|
76
|
+
`stitchkit/agent-runtime/browser`.
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
|
|
80
|
+
- **Agent runtime history is reconstructable from one versioned event ledger.**
|
|
81
|
+
SQLite schema 2 migrates version 1 conversations through a baseline event,
|
|
82
|
+
keeps normalized operational tables, adds deterministic projection
|
|
83
|
+
checkpoints and FTS5 event search, and supports canonical byte-stable
|
|
84
|
+
conversation export/import. Unknown event versions are skippable only when
|
|
85
|
+
their envelope explicitly opts in. Direct `AgentRuntimeStore`
|
|
86
|
+
implementations add `appendEvent`, `readEvents`, `exportConversation` and
|
|
87
|
+
`importConversation`. → ADR 0175. A conversation export is one read transaction over events, companions and the snapshot. The store conformance suite appends twenty events concurrently and reads them back; the Prisma example passes it by re-running a transaction on a ledger key collision — under `SERIALIZABLE` a unique violation is a serialization conflict — and maps `ignorable` only when set.
|
|
88
|
+
- **Projections fold events with a persisted checkpoint.**
|
|
89
|
+
`defineAgentProjection`, `createAgentProjectionRegistry` and
|
|
90
|
+
`createSqliteAgentProjectionStore` keep one row per conversation and
|
|
91
|
+
projection with the `uptoSeq` it was folded to — stale is possible, wrong is
|
|
92
|
+
not, and a reader always sees how far behind it is. Built-in:
|
|
93
|
+
`agentConversationCardProjection`, `agentSummaryProjection`,
|
|
94
|
+
`agentUsageProjection`, `agentOutlineProjection`, `agentStateSlotsProjection`,
|
|
95
|
+
`agentScheduleSummaryProjection`.
|
|
96
|
+
- **Typed state slots survive compaction.** `defineStateSlot`,
|
|
97
|
+
`createAgentStateSlotStore` and `renderAgentStateSlots` keep goal, plan and
|
|
98
|
+
choices as `state/set` events and render them into every provider request
|
|
99
|
+
from the ledger, not from the history compaction rewrites; `agentGoalStateSlot`
|
|
100
|
+
and `agentTodoStateSlot` ship with `createAgentStateTools`.
|
|
101
|
+
- **Events are searchable in the SQLite store.** `createSqliteAgentEventSearch`
|
|
102
|
+
over an FTS5 index answers with the exact `conversationId` and `seq`, denies
|
|
103
|
+
another conversation's events unless `authorizeConversation` says otherwise,
|
|
104
|
+
and `createAgentEventSearchTools` exposes `session_search`, `session_trace`
|
|
105
|
+
and `session_event`. Without an authorizer the query is bound to the requester's conversation in SQL; with one, foreign candidates are refused page by page until the requester's limit is met, so a louder neighbour cannot starve a match.
|
|
106
|
+
- **Oversized tool output spills whole instead of being cut.**
|
|
107
|
+
`createSqliteAgentSpillStore` is an `AgentCodingArtifactStore`: a shell
|
|
108
|
+
result over `limits.maxShellOutputBytes` is kept in full as a conversation
|
|
109
|
+
artifact, the model receives head, tail, omitted byte count and an
|
|
110
|
+
`artifact.reference`, and `read_output`/`search_output` re-check the
|
|
111
|
+
originating authorization before returning any of it. Retention cleanup
|
|
112
|
+
writes `spill/deleted` with the size; export carries the bytes.
|
|
113
|
+
- **A conversation can schedule its own input.** `createAgentScheduleService`
|
|
114
|
+
keeps `after`, `at` and `every` durably, delivers through the caller's
|
|
115
|
+
`dispatch` with `idempotencyKey: schedule:<id>:<occurrence>`, marks a firing missed across a
|
|
116
|
+
restart `late` with `lateByMs`, and requires an explicit IANA `timeZone` for
|
|
117
|
+
`every`; `schedule_*` tools for the agent. A row is claimed under compare-and-set before `dispatch`, one tick runs at a time, a `dispatch` that throws is recorded as `schedule/failed` with the row left due and the timer armed, and `every` fires once after an idle stretch. Delivery identity is `idempotencyKey: schedule:<id>:<occurrence>`.
|
|
118
|
+
- **Child runs inherit a bounded seed and a budget.**
|
|
119
|
+
`createSqliteAgentChildManager` spawns a child from the parent's ledger up to
|
|
120
|
+
`seedUptoSeq`, stops it at the next step boundary when `usd`, `tokens` or
|
|
121
|
+
`milliseconds` run out (`child-budget` policy, overrun recorded), records
|
|
122
|
+
`spawned → running → finished | stopped | lost`, and — given to
|
|
123
|
+
`createAgentRuntime` as `children` — stops the parent's children after the
|
|
124
|
+
parent's terminal is durable. `createAgentChildTools` exposes `subagent`,
|
|
125
|
+
`subagent_fork`, `list_agents`. `agentChildBudgetStopPolicy` is the child
|
|
126
|
+
runtime's own stop policy — `recordStepUsage` at every step boundary,
|
|
127
|
+
`policy_stop` as `child-budget` when the budget is spent; `recordStepUsage`
|
|
128
|
+
reports `enforced: false` when the deciding process holds no handle. The cascade runs once, from the executor that committed the parent's terminal, on an explicit stop — interrupted, cancelled, timed out, shut down — and not on success, supersession or failure, where the conversation goes on and the children with it; a child this process holds no handle for is `lost`, not `stopped`; a late result never rewrites `stopped` or `lost`; a spawn that throws leaves no row; the host's stop and reachability calls are bounded.
|
|
129
|
+
- **The shell tool reports its sandbox grade.** `probeAgentProcessSandbox`
|
|
130
|
+
probes once per process, `recordAgentSandboxProbe` writes `sandbox/probed`
|
|
131
|
+
with the grade and the required restrictions it lacks, and a missing required
|
|
132
|
+
restriction refuses `run_command` with `SANDBOX_UNAVAILABLE` — a different
|
|
133
|
+
code from a policy refusal — without running anything.
|
|
134
|
+
- **Provider stream failures retry only at a durable step boundary.**
|
|
135
|
+
`loop.retry` (`AgentRetryPolicy`) retries a `stream-cut` or other retryable
|
|
136
|
+
provider failure before any tool call in that attempt, drops the attempt's
|
|
137
|
+
partial output, and records `retry/scheduled` then `retry/started`; a failure
|
|
138
|
+
after a tool has executed is never retried. Off unless configured. The runtime publishes `attempt-reset` before the next attempt's first delta, checkpoints the draft after the partial output is discarded, hands an input injected into the failed attempt back so the retry sees it and the terminal absorbs only what was answered, and keeps the failed attempt's `finish-step` usage in the run's spend.
|
|
139
|
+
- **The tool catalog is inspectable and collision-checked.** `describeToolCatalog`
|
|
140
|
+
lists every tool with its origin, final name and schema size; two sources
|
|
141
|
+
producing one final name refuse at start naming both, and a schema-byte
|
|
142
|
+
budget is a warning unless made a refusal.
|
|
143
|
+
- **The SQLite handle shares its connection and its transaction.**
|
|
144
|
+
`createBunSqliteAgentRuntimeStore` / `createNodeSqliteAgentRuntimeStore`
|
|
145
|
+
return `{ store, conversations, database, transaction, close }`. The SQLite
|
|
146
|
+
companions — `createSqliteAgentProjectionStore`, `createSqliteAgentSpillStore`,
|
|
147
|
+
`createSqliteAgentChildManager`, `createAgentScheduleService` — take
|
|
148
|
+
`{ sqlite }` and write their rows and events through `transaction`
|
|
149
|
+
(`SqliteStoreTransaction`), in the store's own serialization, so a row and its
|
|
150
|
+
event land together or not at all. A store call from inside a scope is refused
|
|
151
|
+
with an error rather than queued behind the transaction it is in.
|
|
152
|
+
- **Provider failure fixtures have their own packed test entrypoint.**
|
|
153
|
+
`stitchkit/agent-runtime/testing` exposes a credential-free OpenAI-compatible
|
|
154
|
+
fault server, replay provider and deterministic race controls. Runtime
|
|
155
|
+
`loop.retry` records scheduled/started attempts and never automatically
|
|
156
|
+
repeats an attempt that already invoked a tool.
|
|
157
|
+
|
|
158
|
+
### Fixed
|
|
159
|
+
|
|
160
|
+
- **A subscriber can accumulate a run's text again.** The transient
|
|
161
|
+
`sequence` advanced on every stream part, published or not, so a run's first
|
|
162
|
+
delta reached subscribers as sequence 4 behind an unpublished `text-start`:
|
|
163
|
+
every cursor saw a gap on the first delta of every run, the control view
|
|
164
|
+
flagged a resync and never accumulated the text it exists for. The sequence
|
|
165
|
+
now counts published transient events only. Older than this release.
|
|
166
|
+
- **A durable record no longer blames an upstream that was never contacted.**
|
|
167
|
+
`context_overflow` was carved out of `provider_failure` for exactly this
|
|
168
|
+
reason in an earlier release; the same misclassification remained at three
|
|
169
|
+
other sites. A store conflict — including the one 0.85.2 fixed, which ended
|
|
170
|
+
runs with zero provider calls — an acceptance refusal after a perfectly good
|
|
171
|
+
answer, and this runtime's own callback failing before any provider call all
|
|
172
|
+
said the provider failed. Provider origin is now marked where it is known,
|
|
173
|
+
at the `doStream` boundary, rather than assumed by elimination. The runtime
|
|
174
|
+
claims only failures it can identify as its own: an error part it cannot
|
|
175
|
+
identify is still the provider's, which is what an error part overwhelmingly
|
|
176
|
+
is.
|
|
177
|
+
|
|
178
|
+
## [0.85.2] — 2026-09-08
|
|
179
|
+
|
|
180
|
+
### Fixed
|
|
181
|
+
|
|
182
|
+
- **An asynchronous store no longer fails a run before the provider is
|
|
183
|
+
called.** The assistant checkpoint and the model-request admission are two
|
|
184
|
+
owned mutations of one run, written by two independent schedules — the stream
|
|
185
|
+
consumer and the SDK's model middleware — and each named the revision it read
|
|
186
|
+
before its own `await`. Where the store answered on a later tick (a worker, a
|
|
187
|
+
socket, a real database) the second write named a spent revision, the losing
|
|
188
|
+
compare-and-set threw out of `wrapStream`, and the run ended
|
|
189
|
+
`provider_failure` with zero provider calls; frequent checkpoints
|
|
190
|
+
(`checkpointEveryEvents: 1`) made it reliable. Owned mutations of a run now
|
|
191
|
+
take their turn in one per-run queue and read the revision inside that turn.
|
|
192
|
+
Independent runs are unaffected — the queue is per run — and fencing,
|
|
193
|
+
cancellation and checkpoint durability are unchanged. Proven on the packed
|
|
194
|
+
tarball by a consumer-lane fixture, not only in-repo. → ADR 0174 (amended).
|
|
195
|
+
|
|
18
196
|
## [0.85.1] — 2026-09-07
|
|
19
197
|
|
|
20
198
|
### Fixed
|
package/README.md
CHANGED
|
@@ -109,6 +109,8 @@ continuations and reconnectable control compose there. Bounded direct file, sear
|
|
|
109
109
|
shell and opaque-artifact tools live in the peer-free
|
|
110
110
|
`stitchkit/agent-runtime/coding-tools` leaf. Neither surface owns process placement,
|
|
111
111
|
restart, credentials, model catalogs or OS isolation.
|
|
112
|
+
Credential-free replay, scripted provider failures and deterministic race
|
|
113
|
+
controls live in `stitchkit/agent-runtime/testing` for Bun and Node tests.
|
|
112
114
|
The separately installed `stitchkit-tui` package adds a maintained Bun/OpenTUI host over those
|
|
113
115
|
headless contracts; its `stitchkit-tui/core` entrypoint exposes renderer-neutral terminal state
|
|
114
116
|
without React, OpenTUI or agent-runtime imports. Neither enters the core dependency graph.
|
|
@@ -437,6 +439,7 @@ peer — an install pulls in only what the project actually uses.
|
|
|
437
439
|
| `ai` | peer, optional | `stitchkit/tools` agent tools and the optional server-only `stitchkit/agent-runtime`. |
|
|
438
440
|
| Headless harness | optional surface | `stitchkit/agent-runtime/harness`; uses the same optional `ai` peer and canonical runtime. |
|
|
439
441
|
| Agent coding tools | optional surface | `stitchkit/agent-runtime/coding-tools`; peer-free, host-authorized direct file and shell tools. |
|
|
442
|
+
| Agent runtime testing | optional test surface | `stitchkit/agent-runtime/testing`; peer-free local fault server, replay and race fixtures. |
|
|
440
443
|
| `stitchkit-tui` | separate optional package | Renderer-neutral `./core` state plus a Bun/OpenTUI terminal controller, commands, model/session pickers and authenticated local attachment over a caller-composed harness. |
|
|
441
444
|
| `@openrouter/ai-sdk-provider` | peer, optional | Only `stitchkit/agent-runtime/openrouter`; neutral runtime imports do not resolve it. |
|
|
442
445
|
| SQLite | runtime built-in, optional | `bun:sqlite` through `stitchkit/agent-runtime/sqlite/bun`, or `node:sqlite` on Node ≥ 22.5 through the Node leaf. |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ZodObject, ZodType, z } from 'zod';
|
|
2
|
+
/** Peer-neutral tool definition for surfaces exposed only to an agent model. */
|
|
3
|
+
export interface AgentToolDefinition<TInput extends ZodObject, TOutput extends ZodType> {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
identity: {
|
|
7
|
+
serviceName: string;
|
|
8
|
+
action: string;
|
|
9
|
+
scope?: string;
|
|
10
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
11
|
+
meta?: Record<string, unknown>;
|
|
12
|
+
};
|
|
13
|
+
input: TInput;
|
|
14
|
+
output: TOutput;
|
|
15
|
+
transports: readonly ['AGENT'];
|
|
16
|
+
handler(context: unknown): unknown;
|
|
17
|
+
}
|
|
18
|
+
interface AgentToolSourceDefinition<TInput extends ZodObject, TOutput extends ZodType> extends Omit<AgentToolDefinition<TInput, TOutput>, 'handler'> {
|
|
19
|
+
handler(context: {
|
|
20
|
+
input: z.output<TInput>;
|
|
21
|
+
}): z.output<TOutput> | Promise<z.output<TOutput>>;
|
|
22
|
+
}
|
|
23
|
+
export declare function defineAgentTool<TInput extends ZodObject, TOutput extends ZodType>(definition: AgentToolSourceDefinition<TInput, TOutput>): AgentToolDefinition<TInput, TOutput>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=agent-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tool.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEjD,gFAAgF;AAChF,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,SAAS,EAAE,OAAO,SAAS,OAAO;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;QACpD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CACpC;AAED,UAAU,yBAAyB,CAAC,MAAM,SAAS,SAAS,EAAE,OAAO,SAAS,OAAO,CACnF,SAAQ,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7D,OAAO,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CACpD;AAED,wBAAgB,eAAe,CAAC,MAAM,SAAS,SAAS,EAAE,OAAO,SAAS,OAAO,EAC/E,UAAU,EAAE,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,GACrD,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type AgentChildManager } from './children.js';
|
|
3
|
+
export declare function createAgentChildTools(manager: AgentChildManager): readonly [import("./agent-tool.js").AgentToolDefinition<z.ZodObject<{
|
|
4
|
+
parentConversationId: z.ZodString;
|
|
5
|
+
childInput: z.ZodJSONSchema;
|
|
6
|
+
budget: z.ZodObject<{
|
|
7
|
+
usd: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
tokens: z.ZodOptional<z.ZodInt>;
|
|
9
|
+
milliseconds: z.ZodOptional<z.ZodInt>;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
seedUptoSeq: z.ZodOptional<z.ZodInt>;
|
|
12
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13
|
+
childConversationId: z.ZodString;
|
|
14
|
+
state: z.ZodString;
|
|
15
|
+
resultReference: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>>, import("./agent-tool.js").AgentToolDefinition<z.ZodObject<{
|
|
17
|
+
parentConversationId: z.ZodString;
|
|
18
|
+
childInput: z.ZodJSONSchema;
|
|
19
|
+
budget: z.ZodObject<{
|
|
20
|
+
usd: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
tokens: z.ZodOptional<z.ZodInt>;
|
|
22
|
+
milliseconds: z.ZodOptional<z.ZodInt>;
|
|
23
|
+
}, z.core.$strict>;
|
|
24
|
+
seedUptoSeq: z.ZodOptional<z.ZodInt>;
|
|
25
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
26
|
+
childConversationId: z.ZodString;
|
|
27
|
+
state: z.ZodString;
|
|
28
|
+
resultReference: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>>, import("./agent-tool.js").AgentToolDefinition<z.ZodObject<{
|
|
30
|
+
parentConversationId: z.ZodString;
|
|
31
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
32
|
+
children: z.ZodArray<z.ZodObject<{
|
|
33
|
+
parentConversationId: z.ZodString;
|
|
34
|
+
childConversationId: z.ZodString;
|
|
35
|
+
seedUptoSeq: z.ZodInt;
|
|
36
|
+
state: z.ZodEnum<{
|
|
37
|
+
finished: "finished";
|
|
38
|
+
lost: "lost";
|
|
39
|
+
running: "running";
|
|
40
|
+
spawned: "spawned";
|
|
41
|
+
stopped: "stopped";
|
|
42
|
+
}>;
|
|
43
|
+
budget: z.ZodObject<{
|
|
44
|
+
usd: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
tokens: z.ZodOptional<z.ZodInt>;
|
|
46
|
+
milliseconds: z.ZodOptional<z.ZodInt>;
|
|
47
|
+
}, z.core.$strict>;
|
|
48
|
+
usage: z.ZodObject<{
|
|
49
|
+
tokens: z.ZodInt;
|
|
50
|
+
usd: z.ZodNumber;
|
|
51
|
+
milliseconds: z.ZodInt;
|
|
52
|
+
}, z.core.$strict>;
|
|
53
|
+
resultReference: z.ZodOptional<z.ZodString>;
|
|
54
|
+
createdAt: z.ZodString;
|
|
55
|
+
updatedAt: z.ZodString;
|
|
56
|
+
}, z.core.$strict>>;
|
|
57
|
+
}, z.core.$strip>>, import("./agent-tool.js").AgentToolDefinition<z.ZodObject<{
|
|
58
|
+
parentConversationId: z.ZodString;
|
|
59
|
+
childConversationId: z.ZodString;
|
|
60
|
+
input: z.ZodJSONSchema;
|
|
61
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
62
|
+
sent: z.ZodLiteral<true>;
|
|
63
|
+
}, z.core.$strip>>, import("./agent-tool.js").AgentToolDefinition<z.ZodObject<{
|
|
64
|
+
parentConversationId: z.ZodString;
|
|
65
|
+
childConversationId: z.ZodString;
|
|
66
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
67
|
+
interrupted: z.ZodLiteral<true>;
|
|
68
|
+
}, z.core.$strip>>];
|
|
69
|
+
//# sourceMappingURL=child-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-tools.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/child-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AAmDpB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAuD/D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { LanguageModelUsage } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { AgentRuntimeStopPolicy } from './runtime.js';
|
|
4
|
+
import type { AgentUsage } from './schemas.js';
|
|
5
|
+
import type { SqliteAgentRuntimeStore } from './sqlite.js';
|
|
6
|
+
export declare const AgentChildBudgetSchema: z.ZodObject<{
|
|
7
|
+
usd: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
tokens: z.ZodOptional<z.ZodInt>;
|
|
9
|
+
milliseconds: z.ZodOptional<z.ZodInt>;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
export type AgentChildBudget = z.infer<typeof AgentChildBudgetSchema>;
|
|
12
|
+
export declare const AgentChildStateSchema: z.ZodEnum<{
|
|
13
|
+
finished: "finished";
|
|
14
|
+
lost: "lost";
|
|
15
|
+
running: "running";
|
|
16
|
+
spawned: "spawned";
|
|
17
|
+
stopped: "stopped";
|
|
18
|
+
}>;
|
|
19
|
+
export type AgentChildState = z.infer<typeof AgentChildStateSchema>;
|
|
20
|
+
export declare const AgentChildRecordSchema: z.ZodObject<{
|
|
21
|
+
parentConversationId: z.ZodString;
|
|
22
|
+
childConversationId: z.ZodString;
|
|
23
|
+
seedUptoSeq: z.ZodInt;
|
|
24
|
+
state: z.ZodEnum<{
|
|
25
|
+
finished: "finished";
|
|
26
|
+
lost: "lost";
|
|
27
|
+
running: "running";
|
|
28
|
+
spawned: "spawned";
|
|
29
|
+
stopped: "stopped";
|
|
30
|
+
}>;
|
|
31
|
+
budget: z.ZodObject<{
|
|
32
|
+
usd: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
tokens: z.ZodOptional<z.ZodInt>;
|
|
34
|
+
milliseconds: z.ZodOptional<z.ZodInt>;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
usage: z.ZodObject<{
|
|
37
|
+
tokens: z.ZodInt;
|
|
38
|
+
usd: z.ZodNumber;
|
|
39
|
+
milliseconds: z.ZodInt;
|
|
40
|
+
}, z.core.$strict>;
|
|
41
|
+
resultReference: z.ZodOptional<z.ZodString>;
|
|
42
|
+
createdAt: z.ZodString;
|
|
43
|
+
updatedAt: z.ZodString;
|
|
44
|
+
}, z.core.$strict>;
|
|
45
|
+
export type AgentChildRecord = z.infer<typeof AgentChildRecordSchema>;
|
|
46
|
+
export interface AgentChildHandle {
|
|
47
|
+
result: Promise<{
|
|
48
|
+
resultReference?: string;
|
|
49
|
+
}>;
|
|
50
|
+
stopPolicy(name: string): void | Promise<void>;
|
|
51
|
+
sendMessage?(input: unknown): void | Promise<void>;
|
|
52
|
+
reachable?(): boolean | Promise<boolean>;
|
|
53
|
+
}
|
|
54
|
+
export interface AgentChildManager {
|
|
55
|
+
spawnChild(request: {
|
|
56
|
+
parentConversationId: string;
|
|
57
|
+
childConversationId?: string;
|
|
58
|
+
seedUptoSeq?: number;
|
|
59
|
+
childInput: unknown;
|
|
60
|
+
budget: AgentChildBudget;
|
|
61
|
+
}): Promise<AgentChildRecord>;
|
|
62
|
+
listChildren(parentConversationId: string): readonly AgentChildRecord[];
|
|
63
|
+
recordStepUsage(request: {
|
|
64
|
+
childConversationId: string;
|
|
65
|
+
usage: AgentUsage;
|
|
66
|
+
elapsedMs: number;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
stop: boolean;
|
|
69
|
+
/** Whether a stop was delivered to the child's host from this process. */
|
|
70
|
+
enforced: boolean;
|
|
71
|
+
policyName?: string;
|
|
72
|
+
overrun: {
|
|
73
|
+
tokens: number;
|
|
74
|
+
usd: number;
|
|
75
|
+
milliseconds: number;
|
|
76
|
+
};
|
|
77
|
+
}>;
|
|
78
|
+
stopChildren(parentConversationId: string): Promise<void>;
|
|
79
|
+
sendMessage(parentConversationId: string, childConversationId: string, input: unknown): Promise<void>;
|
|
80
|
+
interruptChild(parentConversationId: string, childConversationId: string): Promise<void>;
|
|
81
|
+
waitChild(childConversationId: string): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
export declare function createSqliteAgentChildManager(input: {
|
|
84
|
+
sqlite: SqliteAgentRuntimeStore;
|
|
85
|
+
spawn(request: {
|
|
86
|
+
parentConversationId: string;
|
|
87
|
+
childConversationId: string;
|
|
88
|
+
seedArchive: Uint8Array;
|
|
89
|
+
childInput: unknown;
|
|
90
|
+
budget: AgentChildBudget;
|
|
91
|
+
}): AgentChildHandle | Promise<AgentChildHandle>;
|
|
92
|
+
remainingBudget?(parentConversationId: string): AgentChildBudget | Promise<AgentChildBudget>;
|
|
93
|
+
now?: () => Date;
|
|
94
|
+
}): AgentChildManager;
|
|
95
|
+
/**
|
|
96
|
+
* The child runtime's own budget policy.
|
|
97
|
+
*
|
|
98
|
+
* `recordStepUsage` measures and decides; something has to call it at every
|
|
99
|
+
* step boundary of the child's run, and that is the child's runtime. Given to
|
|
100
|
+
* `createAgentRuntime({ loop: { stopPolicies: [agentChildBudgetStopPolicy(…)] } })`
|
|
101
|
+
* in the host that runs the child, it records the last step's usage and stops
|
|
102
|
+
* the run as `policy_stop` (`child-budget`) when the budget is spent — the
|
|
103
|
+
* enforcement the guide promises, in the package rather than in every host.
|
|
104
|
+
*/
|
|
105
|
+
export declare function agentChildBudgetStopPolicy(input: {
|
|
106
|
+
manager: Pick<AgentChildManager, 'recordStepUsage'>;
|
|
107
|
+
childConversationId: string;
|
|
108
|
+
/** Cost of a step, when a USD budget is set; tokens come from the step itself. */
|
|
109
|
+
cost?: (step: {
|
|
110
|
+
usage: LanguageModelUsage;
|
|
111
|
+
}) => AgentUsage['cost'];
|
|
112
|
+
}): AgentRuntimeStopPolicy;
|
|
113
|
+
//# sourceMappingURL=children.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"children.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/children.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { AgentProcessSandbox, AgentSandboxRestriction } from './sandbox.js';
|
|
2
3
|
export declare const AgentCodingToolLimitsSchema: z.ZodObject<{
|
|
3
4
|
maxPathBytes: z.ZodInt;
|
|
4
5
|
maxReadBytes: z.ZodInt;
|
|
@@ -50,6 +51,11 @@ export declare const AgentCodingToolAuthorizationSchema: z.ZodDiscriminatedUnion
|
|
|
50
51
|
reference: z.ZodString;
|
|
51
52
|
offset: z.ZodInt;
|
|
52
53
|
maxBytes: z.ZodInt;
|
|
54
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
55
|
+
operation: z.ZodLiteral<"artifact-search">;
|
|
56
|
+
reference: z.ZodString;
|
|
57
|
+
query: z.ZodString;
|
|
58
|
+
maxMatches: z.ZodInt;
|
|
53
59
|
}, z.core.$strict>, z.ZodObject<{
|
|
54
60
|
operation: z.ZodLiteral<"shell">;
|
|
55
61
|
executable: z.ZodString;
|
|
@@ -75,6 +81,10 @@ export interface AgentCodingToolConfig {
|
|
|
75
81
|
executables?: Readonly<Record<string, string>>;
|
|
76
82
|
environment?: Readonly<Record<string, string>>;
|
|
77
83
|
artifacts?: AgentCodingArtifactStore;
|
|
84
|
+
sandbox?: {
|
|
85
|
+
adapter: AgentProcessSandbox;
|
|
86
|
+
required: readonly AgentSandboxRestriction[];
|
|
87
|
+
};
|
|
78
88
|
search?: {
|
|
79
89
|
/** Directory basenames omitted from workspace search at every depth. */
|
|
80
90
|
excludeDirectories?: readonly string[];
|
|
@@ -82,9 +92,12 @@ export interface AgentCodingToolConfig {
|
|
|
82
92
|
limits?: Partial<AgentCodingToolLimits>;
|
|
83
93
|
}
|
|
84
94
|
export interface AgentCodingArtifactStore {
|
|
95
|
+
/** Original admission checked before artifact bytes are read. */
|
|
96
|
+
authorization?(reference: string): AgentCodingToolAuthorization | undefined | Promise<AgentCodingToolAuthorization | undefined>;
|
|
85
97
|
write(input: {
|
|
86
98
|
mediaType: string;
|
|
87
99
|
data: Uint8Array;
|
|
100
|
+
authorization?: AgentCodingToolAuthorization;
|
|
88
101
|
}): {
|
|
89
102
|
reference: string;
|
|
90
103
|
} | Promise<{
|
|
@@ -97,10 +110,23 @@ export interface AgentCodingArtifactStore {
|
|
|
97
110
|
}): {
|
|
98
111
|
data: Uint8Array;
|
|
99
112
|
totalBytes?: number;
|
|
113
|
+
authorization?: AgentCodingToolAuthorization;
|
|
100
114
|
} | Promise<{
|
|
101
115
|
data: Uint8Array;
|
|
102
116
|
totalBytes?: number;
|
|
117
|
+
authorization?: AgentCodingToolAuthorization;
|
|
103
118
|
}>;
|
|
119
|
+
search?(input: {
|
|
120
|
+
reference: string;
|
|
121
|
+
query: string;
|
|
122
|
+
maxMatches: number;
|
|
123
|
+
}): readonly {
|
|
124
|
+
line: number;
|
|
125
|
+
text: string;
|
|
126
|
+
}[] | Promise<readonly {
|
|
127
|
+
line: number;
|
|
128
|
+
text: string;
|
|
129
|
+
}[]>;
|
|
104
130
|
}
|
|
105
131
|
export interface AgentCodingToolDefinition {
|
|
106
132
|
name: string;
|
|
@@ -171,6 +197,9 @@ export declare const ShellOutputSchema: z.ZodObject<{
|
|
|
171
197
|
reference: z.ZodString;
|
|
172
198
|
bytes: z.ZodInt;
|
|
173
199
|
truncated: z.ZodBoolean;
|
|
200
|
+
headBytes: z.ZodInt;
|
|
201
|
+
tailBytes: z.ZodInt;
|
|
202
|
+
omittedBytes: z.ZodInt;
|
|
174
203
|
}, z.core.$strict>>;
|
|
175
204
|
}, z.core.$strict>;
|
|
176
205
|
export declare function resolveCodingToolLimits(input: Partial<AgentCodingToolLimits> | undefined): AgentCodingToolLimits;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-tool-contract.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"coding-tool-contract.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ declare const REFUSAL_STATUS: {
|
|
|
22
22
|
readonly FORBIDDEN: 403;
|
|
23
23
|
readonly NOT_FOUND: 404;
|
|
24
24
|
readonly CONFLICT: 409;
|
|
25
|
+
readonly SANDBOX_UNAVAILABLE: 503;
|
|
26
|
+
readonly SANDBOX_INSUFFICIENT: 503;
|
|
25
27
|
};
|
|
26
28
|
export type CodingRefusalCode = keyof typeof REFUSAL_STATUS;
|
|
27
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-tool-refusals.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-refusals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,8EAA8E;AAC9E,QAAA,MAAM,cAAc;aAClB,WAAW,EAAE,GAAG;aAChB,SAAS,EAAE,GAAG;aACd,SAAS,EAAE,GAAG;aACd,QAAQ,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"coding-tool-refusals.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-refusals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,8EAA8E;AAC9E,QAAA,MAAM,cAAc;aAClB,WAAW,EAAE,GAAG;aAChB,SAAS,EAAE,GAAG;aACd,SAAS,EAAE,GAAG;aACd,QAAQ,EAAE,GAAG;aACb,mBAAmB,EAAE,GAAG;aACxB,oBAAoB,EAAE,GAAG;CACjB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,KAAK,CAQP;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,KAAK,CAKP;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAiC/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-tool-shell.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-shell.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAG3B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"coding-tool-shell.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-shell.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAG3B,MAAM,wBAAwB,CAAC;AAgNhC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,yBAAyB,CAgH3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-tools.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAE/B,MAAM,wBAAwB,CAAC;AAOhC,cAAc,wBAAwB,CAAC;AAEvC,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"coding-tools.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAE/B,MAAM,wBAAwB,CAAC;AAOhC,cAAc,wBAAwB,CAAC;AAEvC,eAAO,MAAM,uBAAuB;;;;;;;;;;CAUQ,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,GAC5B,SAAS,yBAAyB,EAAE,CA4HtC"}
|
|
@@ -240,10 +240,13 @@ export declare const AgentControlResponseSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
240
240
|
cancelled: "cancelled";
|
|
241
241
|
context_overflow: "context_overflow";
|
|
242
242
|
interrupted: "interrupted";
|
|
243
|
+
output_rejected: "output_rejected";
|
|
243
244
|
policy_stop: "policy_stop";
|
|
244
245
|
provider_failure: "provider_failure";
|
|
245
246
|
provider_stop: "provider_stop";
|
|
247
|
+
runtime_failure: "runtime_failure";
|
|
246
248
|
shutdown: "shutdown";
|
|
249
|
+
storage_conflict: "storage_conflict";
|
|
247
250
|
success: "success";
|
|
248
251
|
superseded: "superseded";
|
|
249
252
|
timeout: "timeout";
|
|
@@ -469,10 +472,13 @@ export declare const AgentControlDeliverySchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
469
472
|
cancelled: "cancelled";
|
|
470
473
|
context_overflow: "context_overflow";
|
|
471
474
|
interrupted: "interrupted";
|
|
475
|
+
output_rejected: "output_rejected";
|
|
472
476
|
policy_stop: "policy_stop";
|
|
473
477
|
provider_failure: "provider_failure";
|
|
474
478
|
provider_stop: "provider_stop";
|
|
479
|
+
runtime_failure: "runtime_failure";
|
|
475
480
|
shutdown: "shutdown";
|
|
481
|
+
storage_conflict: "storage_conflict";
|
|
476
482
|
success: "success";
|
|
477
483
|
superseded: "superseded";
|
|
478
484
|
timeout: "timeout";
|
|
@@ -701,6 +707,14 @@ export declare const AgentControlDeliverySchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
701
707
|
data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
702
708
|
}, z.core.$strip>>;
|
|
703
709
|
type: z.ZodLiteral<"reasoning-end">;
|
|
710
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
711
|
+
conversationId: z.ZodString;
|
|
712
|
+
runId: z.ZodString;
|
|
713
|
+
emittedAt: z.ZodISODateTime;
|
|
714
|
+
type: z.ZodLiteral<"attempt-reset">;
|
|
715
|
+
runtimeEpoch: z.ZodString;
|
|
716
|
+
sequence: z.ZodInt;
|
|
717
|
+
attempt: z.ZodInt;
|
|
704
718
|
}, z.core.$strip>, z.ZodObject<{
|
|
705
719
|
conversationId: z.ZodString;
|
|
706
720
|
runId: z.ZodString;
|
|
@@ -933,10 +947,13 @@ export declare const AgentControlDeliverySchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
933
947
|
cancelled: "cancelled";
|
|
934
948
|
context_overflow: "context_overflow";
|
|
935
949
|
interrupted: "interrupted";
|
|
950
|
+
output_rejected: "output_rejected";
|
|
936
951
|
policy_stop: "policy_stop";
|
|
937
952
|
provider_failure: "provider_failure";
|
|
938
953
|
provider_stop: "provider_stop";
|
|
954
|
+
runtime_failure: "runtime_failure";
|
|
939
955
|
shutdown: "shutdown";
|
|
956
|
+
storage_conflict: "storage_conflict";
|
|
940
957
|
success: "success";
|
|
941
958
|
superseded: "superseded";
|
|
942
959
|
timeout: "timeout";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-schema.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/control-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAA0B,KAAK,aAAa,EAAuB,MAAM,WAAW,CAAC;AAM5F,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAoCpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"control-schema.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/control-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAA0B,KAAK,aAAa,EAAuB,MAAM,WAAW,CAAC;AAM5F,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAoCpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAUrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAgBrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,6BAA6B;;;;;;;;;kBAkB/B,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAiBpF,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,iBAAiB,GACvB;IAAE,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAiD/E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC/E;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,uBAAuB,CAAC;IAChC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CAChE;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,aAAa,GACzB,gBAAgB,CAuBlB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,iBAAiB,GAC1B,gBAAgB,CA4ClB"}
|