agentenkit 0.3.0 → 0.4.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/README.md +34 -14
- package/dist/adapters/inline.d.ts +19 -5
- package/dist/adapters/inline.d.ts.map +1 -1
- package/dist/adapters/inline.js +87 -14
- package/dist/adapters/inline.js.map +1 -1
- package/dist/adapters/memory.d.ts +65 -3
- package/dist/adapters/memory.d.ts.map +1 -1
- package/dist/adapters/memory.js +267 -3
- package/dist/adapters/memory.js.map +1 -1
- package/dist/adapters/prisma.d.ts +125 -18
- package/dist/adapters/prisma.d.ts.map +1 -1
- package/dist/adapters/prisma.js +308 -67
- package/dist/adapters/prisma.js.map +1 -1
- package/dist/adapters/qstash.d.ts +15 -2
- package/dist/adapters/qstash.d.ts.map +1 -1
- package/dist/adapters/qstash.js +31 -14
- package/dist/adapters/qstash.js.map +1 -1
- package/dist/adapters/redis.d.ts +40 -4
- package/dist/adapters/redis.d.ts.map +1 -1
- package/dist/adapters/redis.js +265 -20
- package/dist/adapters/redis.js.map +1 -1
- package/dist/adapters/sqlite.d.ts +52 -2
- package/dist/adapters/sqlite.d.ts.map +1 -1
- package/dist/adapters/sqlite.js +342 -35
- package/dist/adapters/sqlite.js.map +1 -1
- package/dist/adapters/stream-scripts.d.ts +49 -0
- package/dist/adapters/stream-scripts.d.ts.map +1 -0
- package/dist/adapters/stream-scripts.js +150 -0
- package/dist/adapters/stream-scripts.js.map +1 -0
- package/dist/adapters/upstash.d.ts +20 -0
- package/dist/adapters/upstash.d.ts.map +1 -1
- package/dist/adapters/upstash.js +29 -0
- package/dist/adapters/upstash.js.map +1 -1
- package/dist/admin/memory.d.ts +11 -1
- package/dist/admin/memory.d.ts.map +1 -1
- package/dist/admin/memory.js +83 -14
- package/dist/admin/memory.js.map +1 -1
- package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts +5 -0
- package/dist/admin/migrations/postgres/0002-run-settled-at.d.ts.map +1 -0
- package/dist/admin/migrations/postgres/0002-run-settled-at.js +11 -0
- package/dist/admin/migrations/postgres/0002-run-settled-at.js.map +1 -0
- package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts +5 -0
- package/dist/admin/migrations/postgres/0003-run-enqueued-at.d.ts.map +1 -0
- package/dist/admin/migrations/postgres/0003-run-enqueued-at.js +15 -0
- package/dist/admin/migrations/postgres/0003-run-enqueued-at.js.map +1 -0
- package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts +5 -0
- package/dist/admin/migrations/postgres/0004-run-settle-claim.d.ts.map +1 -0
- package/dist/admin/migrations/postgres/0004-run-settle-claim.js +15 -0
- package/dist/admin/migrations/postgres/0004-run-settle-claim.js.map +1 -0
- package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts +5 -0
- package/dist/admin/migrations/postgres/0005-bigint-counters.d.ts.map +1 -0
- package/dist/admin/migrations/postgres/0005-bigint-counters.js +12 -0
- package/dist/admin/migrations/postgres/0005-bigint-counters.js.map +1 -0
- package/dist/admin/migrations/postgres/index.d.ts.map +1 -1
- package/dist/admin/migrations/postgres/index.js +16 -1
- package/dist/admin/migrations/postgres/index.js.map +1 -1
- package/dist/admin/migrations/runner.d.ts +21 -1
- package/dist/admin/migrations/runner.d.ts.map +1 -1
- package/dist/admin/migrations/runner.js +41 -4
- package/dist/admin/migrations/runner.js.map +1 -1
- package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts +5 -0
- package/dist/admin/migrations/sqlite/0002-run-settled-at.d.ts.map +1 -0
- package/dist/admin/migrations/sqlite/0002-run-settled-at.js +11 -0
- package/dist/admin/migrations/sqlite/0002-run-settled-at.js.map +1 -0
- package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts +5 -0
- package/dist/admin/migrations/sqlite/0003-run-enqueued-at.d.ts.map +1 -0
- package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js +15 -0
- package/dist/admin/migrations/sqlite/0003-run-enqueued-at.js.map +1 -0
- package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts +5 -0
- package/dist/admin/migrations/sqlite/0004-run-settle-claim.d.ts.map +1 -0
- package/dist/admin/migrations/sqlite/0004-run-settle-claim.js +15 -0
- package/dist/admin/migrations/sqlite/0004-run-settle-claim.js.map +1 -0
- package/dist/admin/migrations/sqlite/index.d.ts +2 -2
- package/dist/admin/migrations/sqlite/index.d.ts.map +1 -1
- package/dist/admin/migrations/sqlite/index.js +17 -3
- package/dist/admin/migrations/sqlite/index.js.map +1 -1
- package/dist/admin/postgres.d.ts +14 -4
- package/dist/admin/postgres.d.ts.map +1 -1
- package/dist/admin/postgres.js +131 -36
- package/dist/admin/postgres.js.map +1 -1
- package/dist/admin/shared.d.ts +19 -0
- package/dist/admin/shared.d.ts.map +1 -0
- package/dist/admin/shared.js +28 -0
- package/dist/admin/shared.js.map +1 -0
- package/dist/admin/sqlite.d.ts +9 -1
- package/dist/admin/sqlite.d.ts.map +1 -1
- package/dist/admin/sqlite.js +112 -29
- package/dist/admin/sqlite.js.map +1 -1
- package/dist/core/admin.d.ts +28 -6
- package/dist/core/admin.d.ts.map +1 -1
- package/dist/core/admin.js +92 -23
- package/dist/core/admin.js.map +1 -1
- package/dist/core/agent.d.ts +7 -4
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +15 -11
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agui.d.ts +17 -0
- package/dist/core/agui.d.ts.map +1 -0
- package/dist/core/agui.js +69 -0
- package/dist/core/agui.js.map +1 -0
- package/dist/core/context.d.ts +13 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +70 -19
- package/dist/core/context.js.map +1 -1
- package/dist/core/deleteThread.d.ts.map +1 -1
- package/dist/core/deleteThread.js +33 -4
- package/dist/core/deleteThread.js.map +1 -1
- package/dist/core/engine.d.ts +41 -11
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +855 -352
- package/dist/core/engine.js.map +1 -1
- package/dist/core/follow.d.ts +63 -1
- package/dist/core/follow.d.ts.map +1 -1
- package/dist/core/follow.js +293 -16
- package/dist/core/follow.js.map +1 -1
- package/dist/core/hitl.d.ts +43 -0
- package/dist/core/hitl.d.ts.map +1 -1
- package/dist/core/hitl.js +163 -35
- package/dist/core/hitl.js.map +1 -1
- package/dist/core/keys.d.ts +22 -4
- package/dist/core/keys.d.ts.map +1 -1
- package/dist/core/keys.js +23 -5
- package/dist/core/keys.js.map +1 -1
- package/dist/core/lease.d.ts +46 -0
- package/dist/core/lease.d.ts.map +1 -0
- package/dist/core/lease.js +142 -0
- package/dist/core/lease.js.map +1 -0
- package/dist/core/loop.d.ts +27 -7
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +140 -55
- package/dist/core/loop.js.map +1 -1
- package/dist/core/messages.d.ts +21 -2
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +61 -2
- package/dist/core/messages.js.map +1 -1
- package/dist/core/prune.d.ts +24 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +43 -0
- package/dist/core/prune.js.map +1 -0
- package/dist/core/publish.d.ts +38 -10
- package/dist/core/publish.d.ts.map +1 -1
- package/dist/core/publish.js +126 -12
- package/dist/core/publish.js.map +1 -1
- package/dist/core/reclaim.d.ts +8 -1
- package/dist/core/reclaim.d.ts.map +1 -1
- package/dist/core/reclaim.js +149 -18
- package/dist/core/reclaim.js.map +1 -1
- package/dist/core/run.d.ts +7 -3
- package/dist/core/run.d.ts.map +1 -1
- package/dist/core/run.js +95 -35
- package/dist/core/run.js.map +1 -1
- package/dist/core/segment.d.ts +62 -0
- package/dist/core/segment.d.ts.map +1 -0
- package/dist/core/segment.js +318 -0
- package/dist/core/segment.js.map +1 -0
- package/dist/core/settle.d.ts +57 -0
- package/dist/core/settle.d.ts.map +1 -0
- package/dist/core/settle.js +181 -0
- package/dist/core/settle.js.map +1 -0
- package/dist/core/snapshot.d.ts +36 -0
- package/dist/core/snapshot.d.ts.map +1 -0
- package/dist/core/snapshot.js +87 -0
- package/dist/core/snapshot.js.map +1 -0
- package/dist/core/stop.d.ts +16 -1
- package/dist/core/stop.d.ts.map +1 -1
- package/dist/core/stop.js +69 -15
- package/dist/core/stop.js.map +1 -1
- package/dist/core/stream-events.d.ts +184 -0
- package/dist/core/stream-events.d.ts.map +1 -0
- package/dist/core/stream-events.js +26 -0
- package/dist/core/stream-events.js.map +1 -0
- package/dist/core/stream.d.ts +29 -0
- package/dist/core/stream.d.ts.map +1 -1
- package/dist/core/stream.js +79 -0
- package/dist/core/stream.js.map +1 -1
- package/dist/core/subagent.d.ts +36 -5
- package/dist/core/subagent.d.ts.map +1 -1
- package/dist/core/subagent.js +117 -22
- package/dist/core/subagent.js.map +1 -1
- package/dist/core/types.d.ts +195 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +26 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/usage.d.ts +53 -5
- package/dist/core/usage.d.ts.map +1 -1
- package/dist/core/usage.js +170 -47
- package/dist/core/usage.js.map +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -7
- package/dist/index.js.map +1 -1
- package/dist/ports/admin.d.ts +59 -0
- package/dist/ports/admin.d.ts.map +1 -1
- package/dist/ports/kv.d.ts +17 -0
- package/dist/ports/kv.d.ts.map +1 -1
- package/dist/ports/queue.d.ts +87 -7
- package/dist/ports/queue.d.ts.map +1 -1
- package/dist/ports/queue.js +36 -1
- package/dist/ports/queue.js.map +1 -1
- package/dist/ports/runtime.d.ts +171 -20
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/ports/storage.d.ts +26 -5
- package/dist/ports/storage.d.ts.map +1 -1
- package/dist/ports/streams.d.ts +60 -0
- package/dist/ports/streams.d.ts.map +1 -0
- package/dist/ports/streams.js +20 -0
- package/dist/ports/streams.js.map +1 -0
- package/dist/pricing.d.ts +5 -0
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +35 -10
- package/dist/pricing.js.map +1 -1
- package/dist/runtime.d.ts +6 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +144 -46
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
/** The one way the platform puts a job on the queue: it stamps the job with a
|
|
3
|
+
* fresh `dispatchId`, so every enqueue is a delivery of its own and only the
|
|
4
|
+
* queue's own redelivery repeats one (§3.4). */
|
|
5
|
+
export function enqueueJob(deps, job, opts) {
|
|
6
|
+
return deps.queue.enqueue({ ...job, dispatchId: job.dispatchId ?? randomUUID() }, opts);
|
|
7
|
+
}
|
|
8
|
+
/** The per-thread run lock (§3.4). */
|
|
9
|
+
export const runLockKey = (threadId) => `agent:lock:${threadId}`;
|
|
10
|
+
/** The run lock's value is `<runId>/<dispatchId>/<nonce>` (§3.4).
|
|
11
|
+
*
|
|
12
|
+
* - `runId` says which run holds the thread.
|
|
13
|
+
* - `dispatchId` says which delivery of that run. It rides on the job, so a
|
|
14
|
+
* queue that delivers the same job twice delivers the same `dispatchId`,
|
|
15
|
+
* and the second copy is known for a duplicate.
|
|
16
|
+
* - `nonce` is new on every acquire. Two holders of the same job — a stalled
|
|
17
|
+
* worker whose lease lapsed, and the redelivery that took it over — differ
|
|
18
|
+
* here and nowhere else, so the stalled one can neither renew nor free the
|
|
19
|
+
* new holder's lock.
|
|
20
|
+
*
|
|
21
|
+
* A value written before dispatch ids existed is a bare run id; it parses as
|
|
22
|
+
* that run with no dispatch. */
|
|
23
|
+
const SEP = '/';
|
|
24
|
+
export function parseLockValue(value) {
|
|
25
|
+
if (value === null)
|
|
26
|
+
return { runId: null, dispatchId: null };
|
|
27
|
+
const parts = value.split(SEP);
|
|
28
|
+
if (parts.length < 3)
|
|
29
|
+
return { runId: value, dispatchId: null };
|
|
30
|
+
return { runId: parts[0], dispatchId: parts[1] };
|
|
31
|
+
}
|
|
32
|
+
/** Thrown out of a loop whose lease was lost between steps: another worker
|
|
33
|
+
* may own the thread, so this one must not write another step to it. */
|
|
34
|
+
export class RunLockLostError extends Error {
|
|
35
|
+
constructor() {
|
|
36
|
+
super('run lock lost');
|
|
37
|
+
this.name = 'RunLockLostError';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** One holder's grip on a thread's run lock. */
|
|
41
|
+
export class Lease {
|
|
42
|
+
deps;
|
|
43
|
+
key;
|
|
44
|
+
value;
|
|
45
|
+
lostFlag = false;
|
|
46
|
+
timer;
|
|
47
|
+
released = false;
|
|
48
|
+
constructor(deps, key, value) {
|
|
49
|
+
this.deps = deps;
|
|
50
|
+
this.key = key;
|
|
51
|
+
this.value = value;
|
|
52
|
+
}
|
|
53
|
+
/** Take the thread's run lock for a run and one delivery of it; null when
|
|
54
|
+
* someone else holds it. */
|
|
55
|
+
static async acquire(deps, threadId, runId, dispatchId) {
|
|
56
|
+
const value = [runId ?? randomUUID(), dispatchId ?? randomUUID(), randomUUID()].join(SEP);
|
|
57
|
+
const lease = new Lease(deps, runLockKey(threadId), value);
|
|
58
|
+
const ok = await deps.kv.set(lease.key, value, {
|
|
59
|
+
onlyIfNotExists: true,
|
|
60
|
+
exSeconds: deps.config.runLockLeaseSeconds,
|
|
61
|
+
});
|
|
62
|
+
return ok ? lease : null;
|
|
63
|
+
}
|
|
64
|
+
/** The lease could not be kept. Another worker may own the thread by now,
|
|
65
|
+
* so the holder must stop writing to it. */
|
|
66
|
+
get lost() {
|
|
67
|
+
return this.lostFlag;
|
|
68
|
+
}
|
|
69
|
+
/** Renew in the background until `release`, the way a queue renews a job
|
|
70
|
+
* lease: an expired lock then means a dead worker and nothing else.
|
|
71
|
+
* `onLost` runs once, when the lease cannot be kept — the key is gone or
|
|
72
|
+
* holds another holder's value, or no renewal has landed for two thirds of
|
|
73
|
+
* the lease (it is then close to lapsing, and another worker may take it
|
|
74
|
+
* before the next try). */
|
|
75
|
+
keep(onLost) {
|
|
76
|
+
if (this.timer || this.released)
|
|
77
|
+
return;
|
|
78
|
+
const leaseMs = this.deps.config.runLockLeaseSeconds * 1000;
|
|
79
|
+
const everyMs = Math.max(Math.floor(leaseMs / 6), 1);
|
|
80
|
+
const log = this.deps.log ?? console;
|
|
81
|
+
let lastOk = Date.now();
|
|
82
|
+
let inFlight = false;
|
|
83
|
+
this.timer = setInterval(async () => {
|
|
84
|
+
if (inFlight || this.lostFlag || this.released)
|
|
85
|
+
return;
|
|
86
|
+
inFlight = true;
|
|
87
|
+
let outcome = 'error';
|
|
88
|
+
let error;
|
|
89
|
+
try {
|
|
90
|
+
// Bounded: a call that hangs past the next tick counts as a failure,
|
|
91
|
+
// not as time silently spent holding a lease that may be lapsing.
|
|
92
|
+
const renewed = await Promise.race([
|
|
93
|
+
this.deps.kv.setIfValue(this.key, this.value, this.value, {
|
|
94
|
+
exSeconds: this.deps.config.runLockLeaseSeconds,
|
|
95
|
+
}),
|
|
96
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('renewal timed out')), everyMs).unref?.()),
|
|
97
|
+
]);
|
|
98
|
+
outcome = renewed ? 'ok' : 'taken';
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
error = err;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
inFlight = false;
|
|
105
|
+
}
|
|
106
|
+
if (this.released)
|
|
107
|
+
return;
|
|
108
|
+
if (outcome === 'ok') {
|
|
109
|
+
lastOk = Date.now();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (outcome === 'error' && Date.now() - lastOk <= (leaseMs * 2) / 3) {
|
|
113
|
+
// The Logger port only promises `error`; a transient miss is not one.
|
|
114
|
+
log.warn?.('run lock renewal failed; retrying', { key: this.key, err: String(error) });
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
log.error(outcome === 'taken'
|
|
118
|
+
? 'run lock taken by another holder; ending the segment'
|
|
119
|
+
: 'run lock could not be renewed in time; ending the segment', { key: this.key, ...(error ? { err: String(error) } : {}) });
|
|
120
|
+
this.lostFlag = true;
|
|
121
|
+
this.stop();
|
|
122
|
+
onLost?.();
|
|
123
|
+
}, everyMs);
|
|
124
|
+
// Never hold a process open just to renew a lock.
|
|
125
|
+
this.timer.unref?.();
|
|
126
|
+
}
|
|
127
|
+
/** Stop renewing and free the lock, only while it is still this holder's.
|
|
128
|
+
* Safe to call more than once. */
|
|
129
|
+
async release() {
|
|
130
|
+
if (this.released)
|
|
131
|
+
return;
|
|
132
|
+
this.released = true;
|
|
133
|
+
this.stop();
|
|
134
|
+
await this.deps.kv.delIfValue(this.key, this.value).catch(() => undefined);
|
|
135
|
+
}
|
|
136
|
+
stop() {
|
|
137
|
+
if (this.timer)
|
|
138
|
+
clearInterval(this.timer);
|
|
139
|
+
this.timer = undefined;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=lease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease.js","sourceRoot":"","sources":["../../src/core/lease.ts"],"names":[],"mappings":"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"}
|
package/dist/core/loop.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { LanguageModel } from 'ai';
|
|
2
2
|
import type { RuntimePorts } from '../ports/runtime.js';
|
|
3
3
|
import type { AgentKind, ProviderOptions } from './types.js';
|
|
4
|
+
import type { AgentRunState } from './state.js';
|
|
5
|
+
import type { PrepareStepFn, SystemFn } from '../ports/runtime.js';
|
|
4
6
|
import type { RegisteredAgent } from './agent.js';
|
|
5
|
-
import { type TokenAttribution } from './usage.js';
|
|
7
|
+
import { type RunLedger, type TokenAttribution } from './usage.js';
|
|
6
8
|
/** True for the sentinel a parked `requiresConfirmation` tool returns (§2.5).
|
|
7
9
|
* It is never a real tool result and is never persisted. */
|
|
8
10
|
export declare const isParked: (result: unknown) => boolean;
|
|
@@ -65,12 +67,7 @@ export declare function executeStep(agent: RegisteredAgent, call: {
|
|
|
65
67
|
text: string;
|
|
66
68
|
};
|
|
67
69
|
}): Promise<StepResult>;
|
|
68
|
-
|
|
69
|
-
* by reference so a child's spend counts against the run's safety cap the
|
|
70
|
-
* moment it happens — a budget that ignores delegated work is not a budget. */
|
|
71
|
-
export interface RunLedger {
|
|
72
|
-
tokensUsed: number;
|
|
73
|
-
}
|
|
70
|
+
export { RunLedger, seedRunLedger } from './usage.js';
|
|
74
71
|
export interface LoopInput {
|
|
75
72
|
/** Whose stream this loop persists to (§2.7). `null` is the main agent. */
|
|
76
73
|
agentId: string | null;
|
|
@@ -85,6 +82,13 @@ export interface LoopInput {
|
|
|
85
82
|
tools: Record<string, any>;
|
|
86
83
|
maxSteps: number;
|
|
87
84
|
abortSignal: AbortSignal;
|
|
85
|
+
/** True once the run lock is gone (§3.4): another worker may own the
|
|
86
|
+
* thread, so this loop must not write another step to it. */
|
|
87
|
+
fenced?: () => boolean;
|
|
88
|
+
/** Writes the parks raised during a step, once that step is saved (see
|
|
89
|
+
* ParkBox). Only the main loop sets it: a nested run's parks wait for the
|
|
90
|
+
* main agent's step. */
|
|
91
|
+
commitParks?: () => Promise<void>;
|
|
88
92
|
providerOptions?: ProviderOptions;
|
|
89
93
|
/** Cumulative cap for the whole run, checked against the shared ledger. */
|
|
90
94
|
tokenBudget?: number;
|
|
@@ -103,9 +107,22 @@ export interface LoopInput {
|
|
|
103
107
|
/** The name that goes on the bill line: the registered handle for the main
|
|
104
108
|
* run, the delegation's name for a nested one. */
|
|
105
109
|
agentName?: string;
|
|
110
|
+
/** Every raw chunk, as the SDK streams it: the host's own callback. */
|
|
106
111
|
onChunk?: (chunk: unknown) => Promise<void>;
|
|
112
|
+
/** Publishes a chunk as an event. Deltas reach it merged (see ChunkBatcher),
|
|
113
|
+
* and everything a step streamed is out before the step is committed. */
|
|
114
|
+
publishChunk?: (chunk: unknown) => Promise<void>;
|
|
115
|
+
/** Calls whose tool failed (see withHitl), for their tool-result chunk. */
|
|
116
|
+
toolErrors?: Map<string, string>;
|
|
107
117
|
/** Persona for a nested run; omitted, the agent's own spec `system` stands. */
|
|
108
118
|
system?: string;
|
|
119
|
+
/** Builds the persona per step with the run's state (§3.1); wins over
|
|
120
|
+
* `system`. What the agent is acting on may change between steps. */
|
|
121
|
+
systemFn?: SystemFn;
|
|
122
|
+
/** Edits the prompt for one step, just before it is sent. See PrepareStepFn. */
|
|
123
|
+
prepareStep?: PrepareStepFn;
|
|
124
|
+
/** The run's state (§2.10), handed to `systemFn` and `prepareStep`. */
|
|
125
|
+
state?: AgentRunState;
|
|
109
126
|
/** Carry the system prompt as a stamped message rather than the SDK's
|
|
110
127
|
* `system:` string, so it can hold a cache breakpoint (§2.6). */
|
|
111
128
|
cacheSystemPrompt?: boolean;
|
|
@@ -122,6 +139,9 @@ export interface LoopOutcome {
|
|
|
122
139
|
parkedToolCallId?: string;
|
|
123
140
|
/** The abort signal fired mid-loop — a user stop (§2.1). */
|
|
124
141
|
aborted: boolean;
|
|
142
|
+
/** The last model call ended without a finish and without a user stop,
|
|
143
|
+
* and no error said why. The run must not be taken as finished. */
|
|
144
|
+
interrupted: boolean;
|
|
125
145
|
/** Iterations this loop completed (§2.9). */
|
|
126
146
|
steps: number;
|
|
127
147
|
/** The run hit its money cap and stopped between steps (§4). */
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAQpB;6DAC6D;AAC7D,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,OAGqB,CAAC;AAEjE;;;iBAGiB;AACjB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C;qEACiE;IACjE,gBAAgB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,wDAAwD;IACxD,WAAW,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9E;;gBAEY;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACvE;gFAC4E;IAC5E,QAAQ,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC7D;;kDAE8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;yEACqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C;oDACgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;0EAEsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;0DACsD;IACtD,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B,GACA,OAAO,CAAC,UAAU,CAAC,CAkGrB;AAeD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;yDACqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB;+EAC2E;IAC3E,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB;kEAC8D;IAC9D,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;IACvB;;6BAEyB;IACzB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;sDAEkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;4BACwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;0CACsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;uDACmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C;8EAC0E;IAC1E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,2EAA2E;IAC3E,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;0EACsE;IACtE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gFAAgF;IAChF,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,uEAAuE;IACvE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;sEACkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB;wEACoE;IACpE,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;gDAQgD;AAChD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,WAAW,CAAC,CAuStB"}
|
package/dist/core/loop.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { generateText, streamText } from 'ai';
|
|
2
2
|
import { systemCacheMessage } from './cache.js';
|
|
3
|
-
import { fillTokens, providerMeta,
|
|
3
|
+
import { fillTokens, providerMeta, } from './usage.js';
|
|
4
4
|
import { estimateTokens } from './context.js';
|
|
5
|
-
import { drainOrThrow } from './stream.js';
|
|
5
|
+
import { ChunkBatcher, chunkPayload, drainOrThrow } from './stream.js';
|
|
6
6
|
import { publish, publishNotice } from './publish.js';
|
|
7
7
|
import { HITL_PARKED } from './hitl.js';
|
|
8
|
+
import { RunLockLostError } from './lease.js';
|
|
8
9
|
/** True for the sentinel a parked `requiresConfirmation` tool returns (§2.5).
|
|
9
10
|
* It is never a real tool result and is never persisted. */
|
|
10
11
|
export const isParked = (result) => typeof result === 'object' &&
|
|
@@ -14,7 +15,9 @@ export async function executeStep(agent, call) {
|
|
|
14
15
|
// Ownership rule (§3.1): user args spread FIRST, platform keys LAST. The
|
|
15
16
|
// user's stream callbacks are stripped here and re-chained by the platform
|
|
16
17
|
// (onChunk below, onFinish at finalize) so the SDK can never own them.
|
|
17
|
-
const { onChunk: _userOnChunk, onFinish: _userOnFinish, onStepFinish: userOnStepFinish, system: specSystem,
|
|
18
|
+
const { onChunk: _userOnChunk, onFinish: _userOnFinish, onStepFinish: userOnStepFinish, system: specSystem,
|
|
19
|
+
// Platform hooks, not SDK options: the engine calls these itself.
|
|
20
|
+
systemFn: _systemFn, prepareStep: _prepareStep, onSettle: _onSettle, ...userArgs } = agent.args;
|
|
18
21
|
// A nested run brings its own persona and must not inherit the parent's.
|
|
19
22
|
const system = call.system ?? specSystem;
|
|
20
23
|
const hoistSystem = call.cacheSystemPrompt === true && typeof system === 'string' && system.length > 0;
|
|
@@ -72,7 +75,10 @@ export async function executeStep(agent, call) {
|
|
|
72
75
|
providerMetadata: meta,
|
|
73
76
|
response: { id: response?.id, headers: response?.headers },
|
|
74
77
|
streamedText: call.partial?.text || text,
|
|
75
|
-
|
|
78
|
+
// The SDK makes up a finish when the provider's stream closes without
|
|
79
|
+
// one, with reason 'unknown'. A step like that did not finish: the
|
|
80
|
+
// provider cut it short without saying so.
|
|
81
|
+
finished: finishReason !== 'unknown',
|
|
76
82
|
};
|
|
77
83
|
}
|
|
78
84
|
const result = await generateText(shared);
|
|
@@ -101,6 +107,7 @@ function capValue(value, limit) {
|
|
|
101
107
|
const json = JSON.stringify(value) ?? 'null';
|
|
102
108
|
return json.length <= limit ? value : `${json.slice(0, limit)}…`;
|
|
103
109
|
}
|
|
110
|
+
export { RunLedger, seedRunLedger } from './usage.js';
|
|
104
111
|
/** The platform-owned loop (§2.1, §5.6), run by the main agent and by every
|
|
105
112
|
* nested run alike (§2.7).
|
|
106
113
|
*
|
|
@@ -125,6 +132,7 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
125
132
|
let stepsLeft = input.maxSteps;
|
|
126
133
|
let stepsRun = 0;
|
|
127
134
|
let costExhausted = false;
|
|
135
|
+
let interrupted = false;
|
|
128
136
|
// The input count of the last finished call. A call cut off before its
|
|
129
137
|
// finish never reports one, and its prompt was the same size as the
|
|
130
138
|
// previous step's plus a little, so this is the honest floor to bill.
|
|
@@ -132,23 +140,53 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
132
140
|
while (stepsLeft > 0 && !input.abortSignal.aborted) {
|
|
133
141
|
stepsLeft--;
|
|
134
142
|
const stepStartedAt = Date.now();
|
|
143
|
+
// Built per step with the run's state (§3.1): what the agent is acting
|
|
144
|
+
// on may have changed since the last step. A throw fails the step.
|
|
145
|
+
const system = input.systemFn ? await input.systemFn(threadId, input.state ?? {}) : input.system;
|
|
146
|
+
const prompt = input.prepareStep
|
|
147
|
+
? await input.prepareStep(threadId, input.state ?? {}, input.messages)
|
|
148
|
+
: input.messages;
|
|
149
|
+
// One round trip is bounded in wall time when stepTimeoutMs is set: a
|
|
150
|
+
// model that accepts the call and never answers ends this step like any
|
|
151
|
+
// failed step, and the run takes the retry policy (§2.8).
|
|
152
|
+
const stepAbort = new AbortController();
|
|
153
|
+
const onRunAbort = () => stepAbort.abort(input.abortSignal.reason);
|
|
154
|
+
input.abortSignal.addEventListener('abort', onRunAbort, { once: true });
|
|
155
|
+
let stepTimedOut = false;
|
|
156
|
+
const stepLimit = deps.config.stepTimeoutMs;
|
|
157
|
+
const stepTimer = stepLimit > 0
|
|
158
|
+
? setTimeout(() => { stepTimedOut = true; stepAbort.abort(new Error('step timed out')); }, stepLimit)
|
|
159
|
+
: undefined;
|
|
160
|
+
const timeoutError = () => new Error(`step ${stepsRun + 1} ran longer than ${stepLimit}ms`);
|
|
135
161
|
const partial = { text: '' };
|
|
136
162
|
let step;
|
|
163
|
+
const batcher = input.publishChunk ? new ChunkBatcher(input.publishChunk) : null;
|
|
137
164
|
try {
|
|
138
165
|
step = await executeStep(agent, {
|
|
139
166
|
kind: input.kind,
|
|
140
167
|
model: input.model,
|
|
141
|
-
messages:
|
|
168
|
+
messages: prompt,
|
|
142
169
|
tools: input.tools,
|
|
143
170
|
providerOptions: input.providerOptions,
|
|
144
|
-
abortSignal:
|
|
145
|
-
onChunk: input.kind === 'stream-text'
|
|
146
|
-
|
|
171
|
+
abortSignal: stepAbort.signal,
|
|
172
|
+
onChunk: input.kind === 'stream-text'
|
|
173
|
+
? async (chunk) => {
|
|
174
|
+
const published = chunkPayload(chunk, input.toolErrors);
|
|
175
|
+
if (published !== null)
|
|
176
|
+
await batcher?.push(published);
|
|
177
|
+
await input.onChunk?.(chunk);
|
|
178
|
+
}
|
|
179
|
+
: undefined,
|
|
180
|
+
system,
|
|
147
181
|
cacheSystemPrompt: input.cacheSystemPrompt,
|
|
148
182
|
partial,
|
|
149
183
|
});
|
|
184
|
+
await batcher?.flush(); // the step's text is out before anything below
|
|
150
185
|
}
|
|
151
186
|
catch (err) {
|
|
187
|
+
await batcher?.flush();
|
|
188
|
+
clearTimeout(stepTimer);
|
|
189
|
+
input.abortSignal.removeEventListener('abort', onRunAbort);
|
|
152
190
|
// The call ended without a finish: a user stop, or the provider failing
|
|
153
191
|
// part way. Either way the provider billed for what it had already
|
|
154
192
|
// produced, so the call is recorded rather than dropped — with
|
|
@@ -157,23 +195,78 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
157
195
|
// certainly sent rather than billing the call as free.
|
|
158
196
|
const cut = unfinishedUsage(input, stepsRun + 1, partial.text, input.abortSignal.aborted ? 'aborted' : 'error', lastInput || estimateTokens(input.messages));
|
|
159
197
|
if (cut.totalTokens > 0) {
|
|
160
|
-
const priced = await
|
|
198
|
+
const priced = await ledger.record(deps, threadId, cut);
|
|
161
199
|
addAttribution(attribution, priced);
|
|
162
200
|
tokensUsed += priced.totalTokens;
|
|
163
|
-
ledger.tokensUsed += priced.totalTokens;
|
|
164
201
|
}
|
|
165
202
|
if (input.abortSignal.aborted)
|
|
166
203
|
break; // user stop mid-step
|
|
204
|
+
if (stepTimedOut)
|
|
205
|
+
throw timeoutError(); // → §2.8 retry policy
|
|
167
206
|
throw err; // real failure → §2.8 redrive policy
|
|
168
207
|
}
|
|
208
|
+
clearTimeout(stepTimer);
|
|
209
|
+
input.abortSignal.removeEventListener('abort', onRunAbort);
|
|
210
|
+
if (stepTimedOut && !step.finished && !input.abortSignal.aborted) {
|
|
211
|
+
// The step's own deadline cut the stream: billed like any cut call,
|
|
212
|
+
// then a failure for the retry policy.
|
|
213
|
+
const cut = unfinishedUsage(input, stepsRun + 1, partial.text, 'error', lastInput || estimateTokens(input.messages));
|
|
214
|
+
if (cut.totalTokens > 0) {
|
|
215
|
+
const priced = await ledger.record(deps, threadId, cut);
|
|
216
|
+
addAttribution(attribution, priced);
|
|
217
|
+
tokensUsed += priced.totalTokens;
|
|
218
|
+
}
|
|
219
|
+
throw timeoutError();
|
|
220
|
+
}
|
|
221
|
+
if (!step.finished) {
|
|
222
|
+
// The stream ended with no finish and no error. Billed like any call cut
|
|
223
|
+
// short, then handed back unfinished: the caller retries it rather than
|
|
224
|
+
// taking the partial step as the run's end.
|
|
225
|
+
const cut = unfinishedUsage(input, stepsRun + 1, partial.text, input.abortSignal.aborted ? 'aborted' : 'error', lastInput || estimateTokens(input.messages));
|
|
226
|
+
if (cut.totalTokens > 0) {
|
|
227
|
+
const priced = await ledger.record(deps, threadId, cut);
|
|
228
|
+
addAttribution(attribution, priced);
|
|
229
|
+
tokensUsed += priced.totalTokens;
|
|
230
|
+
}
|
|
231
|
+
if (!input.abortSignal.aborted)
|
|
232
|
+
interrupted = true;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
// One priced usage row per model call (§4), recorded below once the step
|
|
236
|
+
// is committed.
|
|
237
|
+
const stepUsage = {
|
|
238
|
+
runId: input.billingRunId,
|
|
239
|
+
agentId: input.agentId,
|
|
240
|
+
agentName: input.agentName,
|
|
241
|
+
kind: 'step',
|
|
242
|
+
step: stepsRun + 1,
|
|
243
|
+
model: input.modelKey,
|
|
244
|
+
modelId: input.modelId,
|
|
245
|
+
outcome: 'finished',
|
|
246
|
+
providerMetadata: providerMeta(step.providerMetadata, step.response),
|
|
247
|
+
...fillTokens(step.usage, step.providerMetadata),
|
|
248
|
+
};
|
|
249
|
+
// The step is done, and its messages are the first thing it writes. A
|
|
250
|
+
// worker that lost the lock meanwhile must not write them: the next
|
|
251
|
+
// holder may already be writing its own. The call itself did happen and
|
|
252
|
+
// the provider billed it, so its usage is still recorded.
|
|
253
|
+
if (input.fenced?.()) {
|
|
254
|
+
await ledger.record(deps, threadId, stepUsage);
|
|
255
|
+
throw new RunLockLostError();
|
|
256
|
+
}
|
|
169
257
|
// Per-step durability (§5.6): append this step's turns BEFORE the next
|
|
170
258
|
// step. A parked HITL tool result (the sentinel) is NOT a real result —
|
|
171
|
-
// it is skipped here; the resumed segment appends the user's verdict.
|
|
172
|
-
|
|
259
|
+
// it is skipped here; the resumed segment appends the user's verdict. Only
|
|
260
|
+
// the parked parts go: another tool in the same step that already ran
|
|
261
|
+
// keeps its result, or the model would be told it never did.
|
|
262
|
+
const persisted = step.responseMessages.flatMap((m) => {
|
|
173
263
|
if (m.role !== 'tool')
|
|
174
|
-
return
|
|
264
|
+
return [m];
|
|
175
265
|
const parts = Array.isArray(m.content) ? m.content : [];
|
|
176
|
-
|
|
266
|
+
const kept = parts.filter((p) => !isParked(p?.result));
|
|
267
|
+
if (kept.length === 0)
|
|
268
|
+
return [];
|
|
269
|
+
return [kept.length === parts.length ? m : { ...m, content: kept }];
|
|
177
270
|
});
|
|
178
271
|
for (const m of persisted) {
|
|
179
272
|
await deps.storage.messages.append(threadId, {
|
|
@@ -183,34 +276,35 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
183
276
|
});
|
|
184
277
|
}
|
|
185
278
|
input.messages.push(...step.responseMessages);
|
|
279
|
+
// One priced usage row per model call (§4), booked on the run-wide ledger
|
|
280
|
+
// the caps are checked against (§2.7). Written as soon as the step's
|
|
281
|
+
// messages are, before anything else: a crash after this point resumes
|
|
282
|
+
// from the saved step and never runs the call again, so its row must
|
|
283
|
+
// already be there.
|
|
284
|
+
const priced = await ledger.record(deps, threadId, stepUsage);
|
|
186
285
|
// A replay boundary (§2.2). Everything this step produced is now durable
|
|
187
286
|
// history, so a reconnecting client must NOT also replay its chunks — it
|
|
188
287
|
// would render the same text twice, once from the message and once from
|
|
189
288
|
// the stream that produced it. Persisted (not a bus notice) because the
|
|
190
289
|
// snapshot needs its seq to know where durable ends and live begins.
|
|
290
|
+
// It carries the step's finish and usage: a run stream turns it into
|
|
291
|
+
// its STEP_FINISHED, at the moment the step is saved.
|
|
191
292
|
await publish(deps, threadId, 'STEP_COMMITTED', {
|
|
192
293
|
index: stepsRun,
|
|
193
294
|
agentId: input.agentId,
|
|
194
|
-
});
|
|
195
|
-
// One priced usage row per model call (§4), then the same counters
|
|
196
|
-
// accumulated across the segment's steps and into the run-wide ledger the
|
|
197
|
-
// safety caps are checked against (§2.7).
|
|
198
|
-
const priced = await recordCall(deps, threadId, {
|
|
199
|
-
runId: input.billingRunId,
|
|
200
|
-
agentId: input.agentId,
|
|
201
|
-
agentName: input.agentName,
|
|
202
|
-
kind: 'step',
|
|
203
295
|
step: stepsRun + 1,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
296
|
+
finishReason: step.finishReason,
|
|
297
|
+
inputTokens: priced.inputTokens,
|
|
298
|
+
cachedInputTokens: priced.cacheReadInputTokens,
|
|
299
|
+
outputTokens: priced.outputTokens,
|
|
300
|
+
totalTokens: priced.totalTokens,
|
|
209
301
|
});
|
|
302
|
+
// The step is durable now, tool calls included, so the parks it raised
|
|
303
|
+
// can be written: WAITING_FOR_INPUT and the approval requests.
|
|
304
|
+
await input.commitParks?.();
|
|
210
305
|
lastInput = priced.inputTokens;
|
|
211
306
|
addAttribution(attribution, priced);
|
|
212
307
|
tokensUsed += priced.totalTokens;
|
|
213
|
-
ledger.tokensUsed += priced.totalTokens;
|
|
214
308
|
lastText = step.text ?? '';
|
|
215
309
|
lastFinishReason = step.finishReason;
|
|
216
310
|
stepsRun += 1;
|
|
@@ -231,9 +325,11 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
231
325
|
tools: (step.toolResults ?? [])
|
|
232
326
|
.map((r) => r?.toolName)
|
|
233
327
|
.filter(Boolean),
|
|
328
|
+
at: new Date(),
|
|
234
329
|
...(deps.config.recordPayloads
|
|
235
330
|
? {
|
|
236
|
-
|
|
331
|
+
// Left out when empty, as the Go runtime does.
|
|
332
|
+
...(step.text ? { text: cap(step.text, deps.config.payloadCapChars) } : {}),
|
|
237
333
|
toolCalls: (step.toolResults ?? []).map((r) => ({
|
|
238
334
|
toolName: r?.toolName,
|
|
239
335
|
args: capValue(r?.args, deps.config.payloadCapChars),
|
|
@@ -264,34 +360,22 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
264
360
|
});
|
|
265
361
|
break;
|
|
266
362
|
}
|
|
267
|
-
// The money cap (§4), checked in the same place and the same way
|
|
268
|
-
// the
|
|
269
|
-
//
|
|
270
|
-
//
|
|
271
|
-
// cap.
|
|
363
|
+
// The money cap (§4), checked in the same place and the same way, against
|
|
364
|
+
// the same shared ledger: a nested run's calls count against it, and a
|
|
365
|
+
// run that parked or retried starts from what it already spent (see
|
|
366
|
+
// seedRunLedger).
|
|
272
367
|
//
|
|
273
368
|
// It only ever sees priced calls: with no pricer configured nothing is
|
|
274
369
|
// ever spent and the cap never fires.
|
|
275
|
-
if (input.costBudgetMicros) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
});
|
|
285
|
-
costExhausted = true;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
catch (err) {
|
|
290
|
-
(deps.log ?? console).error('cost budget not checked', {
|
|
291
|
-
run: input.billingRunId,
|
|
292
|
-
err,
|
|
293
|
-
});
|
|
294
|
-
}
|
|
370
|
+
if (input.costBudgetMicros && ledger.costMicros >= input.costBudgetMicros) {
|
|
371
|
+
await publish(deps, threadId, 'COST_BUDGET_EXHAUSTED', {
|
|
372
|
+
agentId: input.agentId,
|
|
373
|
+
costMicros: ledger.costMicros,
|
|
374
|
+
costBudgetMicros: input.costBudgetMicros,
|
|
375
|
+
...(ledger.currency ? { currency: ledger.currency } : {}),
|
|
376
|
+
});
|
|
377
|
+
costExhausted = true;
|
|
378
|
+
break;
|
|
295
379
|
}
|
|
296
380
|
// 'tool-calls' → the SDK executed the step's tools; the loop feeds the
|
|
297
381
|
// results back. Anything else ('stop', 'length', …) ends the run.
|
|
@@ -306,6 +390,7 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
306
390
|
parked,
|
|
307
391
|
parkedToolCallId,
|
|
308
392
|
aborted: input.abortSignal.aborted,
|
|
393
|
+
interrupted,
|
|
309
394
|
steps: stepsRun,
|
|
310
395
|
costExhausted,
|
|
311
396
|
};
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|