agentenkit 0.3.0 → 0.5.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 +82 -15
- package/dist/adapters/brave.d.ts +21 -0
- package/dist/adapters/brave.d.ts.map +1 -0
- package/dist/adapters/brave.js +52 -0
- package/dist/adapters/brave.js.map +1 -0
- package/dist/adapters/computesdk.d.ts +71 -0
- package/dist/adapters/computesdk.d.ts.map +1 -0
- package/dist/adapters/computesdk.js +163 -0
- package/dist/adapters/computesdk.js.map +1 -0
- package/dist/adapters/docker.d.ts +35 -0
- package/dist/adapters/docker.d.ts.map +1 -0
- package/dist/adapters/docker.js +246 -0
- package/dist/adapters/docker.js.map +1 -0
- package/dist/adapters/e2b.d.ts +44 -0
- package/dist/adapters/e2b.d.ts.map +1 -0
- package/dist/adapters/e2b.js +349 -0
- package/dist/adapters/e2b.js.map +1 -0
- 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/jina.d.ts +34 -0
- package/dist/adapters/jina.d.ts.map +1 -0
- package/dist/adapters/jina.js +99 -0
- package/dist/adapters/jina.js.map +1 -0
- package/dist/adapters/local-sandbox.d.ts +32 -0
- package/dist/adapters/local-sandbox.d.ts.map +1 -0
- package/dist/adapters/local-sandbox.js +257 -0
- package/dist/adapters/local-sandbox.js.map +1 -0
- package/dist/adapters/memory.d.ts +146 -3
- package/dist/adapters/memory.d.ts.map +1 -1
- package/dist/adapters/memory.js +474 -3
- package/dist/adapters/memory.js.map +1 -1
- package/dist/adapters/page-reader.d.ts +39 -0
- package/dist/adapters/page-reader.d.ts.map +1 -0
- package/dist/adapters/page-reader.js +165 -0
- package/dist/adapters/page-reader.js.map +1 -0
- 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/sandbox-shell.d.ts +60 -0
- package/dist/adapters/sandbox-shell.d.ts.map +1 -0
- package/dist/adapters/sandbox-shell.js +129 -0
- package/dist/adapters/sandbox-shell.js.map +1 -0
- package/dist/adapters/sqlite.d.ts +88 -2
- package/dist/adapters/sqlite.d.ts.map +1 -1
- package/dist/adapters/sqlite.js +443 -37
- 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/adapters/web-search-shared.d.ts +11 -0
- package/dist/adapters/web-search-shared.d.ts.map +1 -0
- package/dist/adapters/web-search-shared.js +40 -0
- package/dist/adapters/web-search-shared.js.map +1 -0
- 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/builtin/definitions.d.ts +12 -0
- package/dist/core/builtin/definitions.d.ts.map +1 -0
- package/dist/core/builtin/definitions.js +149 -0
- package/dist/core/builtin/definitions.js.map +1 -0
- package/dist/core/builtin/html.d.ts +13 -0
- package/dist/core/builtin/html.d.ts.map +1 -0
- package/dist/core/builtin/html.js +96 -0
- package/dist/core/builtin/html.js.map +1 -0
- package/dist/core/builtin/index.d.ts +21 -0
- package/dist/core/builtin/index.d.ts.map +1 -0
- package/dist/core/builtin/index.js +55 -0
- package/dist/core/builtin/index.js.map +1 -0
- package/dist/core/builtin/run.d.ts +37 -0
- package/dist/core/builtin/run.d.ts.map +1 -0
- package/dist/core/builtin/run.js +55 -0
- package/dist/core/builtin/run.js.map +1 -0
- package/dist/core/builtin/sandbox-tools.d.ts +69 -0
- package/dist/core/builtin/sandbox-tools.d.ts.map +1 -0
- package/dist/core/builtin/sandbox-tools.js +389 -0
- package/dist/core/builtin/sandbox-tools.js.map +1 -0
- package/dist/core/builtin/sandbox.d.ts +52 -0
- package/dist/core/builtin/sandbox.d.ts.map +1 -0
- package/dist/core/builtin/sandbox.js +174 -0
- package/dist/core/builtin/sandbox.js.map +1 -0
- package/dist/core/builtin/web.d.ts +54 -0
- package/dist/core/builtin/web.d.ts.map +1 -0
- package/dist/core/builtin/web.js +167 -0
- package/dist/core/builtin/web.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 +36 -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 +880 -353
- 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/permanent.d.ts +11 -0
- package/dist/core/permanent.d.ts.map +1 -0
- package/dist/core/permanent.js +37 -0
- package/dist/core/permanent.js.map +1 -0
- 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 +130 -25
- package/dist/core/subagent.js.map +1 -1
- package/dist/core/tools.d.ts +9 -3
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js.map +1 -1
- package/dist/core/types.d.ts +212 -13
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +29 -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 +29 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -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 +188 -20
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/ports/sandbox.d.ts +159 -0
- package/dist/ports/sandbox.d.ts.map +1 -0
- package/dist/ports/sandbox.js +44 -0
- package/dist/ports/sandbox.js.map +1 -0
- 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/ports/tools.d.ts +60 -0
- package/dist/ports/tools.d.ts.map +1 -0
- package/dist/ports/tools.js +5 -0
- package/dist/ports/tools.js.map +1 -0
- package/dist/pricing.d.ts +29 -0
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +64 -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 +147 -46
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/admin/postgres.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { addRunTotals, emptyRunTotals, JSON_COLUMNS, RUN_COLUMNS } from './shared.js';
|
|
1
2
|
import { gatedAdminStore, runMigrations } from './migrations/runner.js';
|
|
2
3
|
import { dialect, migrations } from './migrations/postgres/index.js';
|
|
3
4
|
/** Open a `pg` Pool from a connection string. Dynamically imported so the
|
|
@@ -33,18 +34,54 @@ async function migrate(db) {
|
|
|
33
34
|
client?.release();
|
|
34
35
|
}
|
|
35
36
|
}
|
|
37
|
+
/** The RunFilter as a WHERE clause, limit aside. */
|
|
38
|
+
function runWhere(f) {
|
|
39
|
+
const where = [];
|
|
40
|
+
const vals = [];
|
|
41
|
+
if (f.state?.length)
|
|
42
|
+
where.push(`state = ANY($${vals.push(f.state)})`);
|
|
43
|
+
if (f.agent)
|
|
44
|
+
where.push(`agent = $${vals.push(f.agent)}`);
|
|
45
|
+
if (f.threadId)
|
|
46
|
+
where.push(`"threadId" = $${vals.push(f.threadId)}`);
|
|
47
|
+
if (f.threadIds?.length)
|
|
48
|
+
where.push(`"threadId" = ANY($${vals.push(f.threadIds)})`);
|
|
49
|
+
if (f.since)
|
|
50
|
+
where.push(`"startedAt" >= $${vals.push(f.since)}`);
|
|
51
|
+
if (f.until)
|
|
52
|
+
where.push(`"startedAt" <= $${vals.push(f.until)}`);
|
|
53
|
+
if (f.unsettled)
|
|
54
|
+
where.push('"endedAt" IS NOT NULL AND "settledAt" IS NULL');
|
|
55
|
+
if (f.depth !== undefined)
|
|
56
|
+
where.push(`depth = $${vals.push(f.depth)}`);
|
|
57
|
+
if (f.before) {
|
|
58
|
+
where.push(`("startedAt", id) < ($${vals.push(f.before.startedAt)}, $${vals.push(f.before.id)})`);
|
|
59
|
+
}
|
|
60
|
+
return { where: where.length ? ` WHERE ${where.join(' AND ')}` : '', vals };
|
|
61
|
+
}
|
|
62
|
+
/** BIGINT columns come back from `pg` as strings (§2.9). */
|
|
63
|
+
const num = (v) => (v === null || v === undefined ? null : Number(v));
|
|
64
|
+
const toThread = (r) => ({
|
|
65
|
+
id: r.id, state: r.state, model: r.model,
|
|
66
|
+
firstSeenAt: new Date(r.firstSeenAt), updatedAt: new Date(r.updatedAt),
|
|
67
|
+
startedWith: r.startedWith ? { ...r.startedWith, at: new Date(r.startedWith.at) } : null,
|
|
68
|
+
});
|
|
36
69
|
const toRun = (r) => ({
|
|
37
70
|
id: r.id, threadId: r.threadId, parentRunId: r.parentRunId ?? null, depth: r.depth,
|
|
38
71
|
agent: r.agent, model: r.model, state: r.state,
|
|
39
72
|
stopReason: r.stopReason ?? null, error: r.error ?? null,
|
|
40
73
|
startedAt: new Date(r.startedAt), endedAt: r.endedAt ? new Date(r.endedAt) : null,
|
|
41
|
-
|
|
74
|
+
enqueuedAt: r.enqueuedAt ? new Date(r.enqueuedAt) : null,
|
|
75
|
+
durationMs: num(r.durationMs), queuedMs: num(r.queuedMs),
|
|
76
|
+
settledAt: r.settledAt ? new Date(r.settledAt) : null,
|
|
77
|
+
settlingAt: r.settlingAt ? new Date(r.settlingAt) : null,
|
|
42
78
|
attempts: r.attempts, steps: r.steps,
|
|
43
|
-
inputTokens: r.inputTokens, cachedInputTokens: r.cachedInputTokens,
|
|
44
|
-
outputTokens: r.outputTokens, totalTokens: r.totalTokens,
|
|
79
|
+
inputTokens: Number(r.inputTokens), cachedInputTokens: Number(r.cachedInputTokens),
|
|
80
|
+
outputTokens: Number(r.outputTokens), totalTokens: Number(r.totalTokens),
|
|
45
81
|
result: r.result ?? null,
|
|
46
82
|
prompt: r.prompt ?? null, tokenBudget: r.tokenBudget ?? null,
|
|
47
83
|
runState: r.runState ?? null, providerOptions: r.providerOptions ?? null,
|
|
84
|
+
costBudgetMicros: num(r.costBudgetMicros), maxSteps: num(r.maxSteps),
|
|
48
85
|
});
|
|
49
86
|
/** Operational history in Postgres — the production store (§2.9), reached
|
|
50
87
|
* through AGENTIC_KIT_ADMIN_DATABASE_URL. Point it at its own database or the
|
|
@@ -56,9 +93,10 @@ export class PostgresAdminStore {
|
|
|
56
93
|
}
|
|
57
94
|
/** The store with its schema migration already running behind it (§2.9).
|
|
58
95
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
96
|
+
* Nothing here touches the network: a `pg` Pool connects lazily, so a
|
|
97
|
+
* URL that cannot be reached shows up as a failed migration, logged, and
|
|
98
|
+
* retried on a later admin call (see `gatedAdminStore`). The schema runs
|
|
99
|
+
* in the background, so a service starts at the same speed whether or not
|
|
62
100
|
* it has migrating to do, and the returned store waits for it before its
|
|
63
101
|
* first call.
|
|
64
102
|
*
|
|
@@ -67,14 +105,21 @@ export class PostgresAdminStore {
|
|
|
67
105
|
* race. */
|
|
68
106
|
static connect(db, log) {
|
|
69
107
|
const store = new PostgresAdminStore(db);
|
|
70
|
-
|
|
108
|
+
// A pg Pool emits 'error' when an idle connection drops (a failover, a
|
|
109
|
+
// server restart). An EventEmitter with no listener for it throws, which
|
|
110
|
+
// ends the process. The pool replaces the connection by itself, so a
|
|
111
|
+
// log line is all the error needs. A caller's own listener is left alone.
|
|
112
|
+
const emitter = db;
|
|
113
|
+
if (typeof emitter.on === 'function' && (emitter.listenerCount?.('error') ?? 0) === 0) {
|
|
114
|
+
emitter.on('error', (err) => (log ?? console).error('admin postgres connection error', err));
|
|
115
|
+
}
|
|
116
|
+
return gatedAdminStore(store, () => migrate(db).catch((err) => {
|
|
71
117
|
// Loud, because everything downstream of this is silent: admin writes
|
|
72
118
|
// are best effort, so a failed migration shows up as a dashboard with
|
|
73
119
|
// nothing in it rather than as an error.
|
|
74
120
|
(log ?? console).error('admin migrations failed', err);
|
|
75
121
|
throw err;
|
|
76
|
-
});
|
|
77
|
-
return gatedAdminStore(store, ready);
|
|
122
|
+
}));
|
|
78
123
|
}
|
|
79
124
|
threads = {
|
|
80
125
|
upsert: async (t) => {
|
|
@@ -97,23 +142,52 @@ export class PostgresAdminStore {
|
|
|
97
142
|
where.push(`"updatedAt" >= $${vals.push(f.since)}`);
|
|
98
143
|
const { rows } = await this.db.query(`SELECT * FROM agentic_threads${where.length ? ` WHERE ${where.join(' AND ')}` : ''}
|
|
99
144
|
ORDER BY "updatedAt" DESC LIMIT $${vals.push(f.limit ?? 100)}`, vals);
|
|
100
|
-
return rows.map(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
145
|
+
return rows.map(toThread);
|
|
146
|
+
},
|
|
147
|
+
get: async (threadId) => {
|
|
148
|
+
const { rows } = await this.db.query('SELECT * FROM agentic_threads WHERE id = $1', [threadId]);
|
|
149
|
+
return rows[0] ? toThread(rows[0]) : null;
|
|
150
|
+
},
|
|
151
|
+
delete: async (threadId) => {
|
|
152
|
+
await this.transaction(async (q) => {
|
|
153
|
+
await q('DELETE FROM agentic_steps WHERE "threadId" = $1', [threadId]);
|
|
154
|
+
await q('DELETE FROM agentic_runs WHERE "threadId" = $1', [threadId]);
|
|
155
|
+
await q('DELETE FROM agentic_threads WHERE id = $1', [threadId]);
|
|
156
|
+
});
|
|
105
157
|
},
|
|
106
158
|
};
|
|
159
|
+
/** Run `fn` in one transaction, on one connection: a pool hands each query
|
|
160
|
+
* whichever connection is free, which is not a transaction at all. */
|
|
161
|
+
async transaction(fn) {
|
|
162
|
+
const conn = this.db.connect ? await this.db.connect() : null;
|
|
163
|
+
const q = (sql, params) => (conn ?? this.db).query(sql, params);
|
|
164
|
+
try {
|
|
165
|
+
await q('BEGIN');
|
|
166
|
+
try {
|
|
167
|
+
await fn(q);
|
|
168
|
+
await q('COMMIT');
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
await q('ROLLBACK').catch(() => undefined);
|
|
172
|
+
throw err;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
conn?.release();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
107
179
|
runs = {
|
|
108
180
|
start: async (run) => {
|
|
109
181
|
const { rows } = await this.db.query(`INSERT INTO agentic_runs
|
|
110
182
|
(id, "threadId", "parentRunId", depth, agent, model, state,
|
|
111
|
-
prompt, "tokenBudget", "runState", "providerOptions")
|
|
112
|
-
VALUES ($1, $2, $3, $4, $5, $6,
|
|
183
|
+
prompt, "tokenBudget", "runState", "providerOptions", "enqueuedAt", "costBudgetMicros", "maxSteps")
|
|
184
|
+
VALUES ($1, $2, $3, $4, $5, $6, $11, $7, $8, $9, $10, $12, $13, $14) RETURNING *`, [
|
|
113
185
|
run.id, run.threadId, run.parentRunId ?? null, run.depth ?? 0,
|
|
114
186
|
run.agent, run.model, run.prompt ?? null, run.tokenBudget ?? null,
|
|
115
187
|
run.runState ? JSON.stringify(run.runState) : null,
|
|
116
188
|
run.providerOptions ? JSON.stringify(run.providerOptions) : null,
|
|
189
|
+
run.state ?? 'RUNNING', run.enqueuedAt ?? null,
|
|
190
|
+
run.costBudgetMicros ?? null, run.maxSteps ?? null,
|
|
117
191
|
]);
|
|
118
192
|
return toRun(rows[0]);
|
|
119
193
|
},
|
|
@@ -121,10 +195,11 @@ export class PostgresAdminStore {
|
|
|
121
195
|
const sets = [];
|
|
122
196
|
const vals = [];
|
|
123
197
|
for (const [k, v] of Object.entries(patch)) {
|
|
124
|
-
|
|
125
|
-
continue;
|
|
198
|
+
// Only the run's own columns, never a key SQL was built from blindly.
|
|
126
199
|
// JSON columns need the value serialised; everything else pg handles.
|
|
127
|
-
|
|
200
|
+
if (v === undefined || !RUN_COLUMNS.has(k))
|
|
201
|
+
continue;
|
|
202
|
+
sets.push(`"${k}" = $${vals.push(JSON_COLUMNS.has(k) ? JSON.stringify(v) : v)}`);
|
|
128
203
|
}
|
|
129
204
|
if (sets.length === 0)
|
|
130
205
|
return;
|
|
@@ -139,22 +214,42 @@ export class PostgresAdminStore {
|
|
|
139
214
|
return rows.map(toRun);
|
|
140
215
|
},
|
|
141
216
|
list: async (f) => {
|
|
142
|
-
const where =
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
where.push(`agent = $${vals.push(f.agent)}`);
|
|
148
|
-
if (f.threadId)
|
|
149
|
-
where.push(`"threadId" = $${vals.push(f.threadId)}`);
|
|
150
|
-
if (f.since)
|
|
151
|
-
where.push(`"startedAt" >= $${vals.push(f.since)}`);
|
|
152
|
-
if (f.until)
|
|
153
|
-
where.push(`"startedAt" <= $${vals.push(f.until)}`);
|
|
154
|
-
const { rows } = await this.db.query(`SELECT * FROM agentic_runs${where.length ? ` WHERE ${where.join(' AND ')}` : ''}
|
|
155
|
-
ORDER BY "startedAt" DESC LIMIT $${vals.push(f.limit ?? 100)}`, vals);
|
|
217
|
+
const { where, vals } = runWhere(f);
|
|
218
|
+
// Ordered on the id after the start time, so a page's last run is a
|
|
219
|
+
// cursor that splits the listing exactly (RunFilter.before).
|
|
220
|
+
const { rows } = await this.db.query(`SELECT * FROM agentic_runs${where}
|
|
221
|
+
ORDER BY "startedAt" DESC, id DESC LIMIT $${vals.push(f.limit ?? 100)}`, vals);
|
|
156
222
|
return rows.map(toRun);
|
|
157
223
|
},
|
|
224
|
+
increment: async (runId, d) => {
|
|
225
|
+
await this.db.query(`UPDATE agentic_runs SET steps = steps + $1, "inputTokens" = "inputTokens" + $2,
|
|
226
|
+
"cachedInputTokens" = "cachedInputTokens" + $3, "outputTokens" = "outputTokens" + $4,
|
|
227
|
+
"totalTokens" = "totalTokens" + $5 WHERE id = $6`, [d.steps, d.inputTokens, d.cachedInputTokens, d.outputTokens, d.totalTokens, runId]);
|
|
228
|
+
},
|
|
229
|
+
totals: async (f) => {
|
|
230
|
+
const { where, vals } = runWhere({ ...f, before: undefined });
|
|
231
|
+
const { rows } = await this.db.query(`SELECT state, "stopReason", COUNT(*) AS n, COALESCE(SUM(steps),0) AS steps,
|
|
232
|
+
COALESCE(SUM("inputTokens"),0) AS "inputTokens", COALESCE(SUM("cachedInputTokens"),0) AS "cachedInputTokens",
|
|
233
|
+
COALESCE(SUM("outputTokens"),0) AS "outputTokens", COALESCE(SUM("totalTokens"),0) AS "totalTokens"
|
|
234
|
+
FROM agentic_runs${where} GROUP BY state, "stopReason"`, vals);
|
|
235
|
+
const out = emptyRunTotals();
|
|
236
|
+
for (const r of rows)
|
|
237
|
+
addRunTotals(out, r.state, r.stopReason, Number(r.n), r);
|
|
238
|
+
return out;
|
|
239
|
+
},
|
|
240
|
+
claimSettle: async (runId, token, staleBefore) => {
|
|
241
|
+
const { rows } = await this.db.query(`UPDATE agentic_runs SET "settlingAt" = now(), "settleToken" = $1
|
|
242
|
+
WHERE id = $2 AND "settledAt" IS NULL AND ("settlingAt" IS NULL OR "settlingAt" < $3)
|
|
243
|
+
RETURNING id`, [token, runId, staleBefore]);
|
|
244
|
+
return rows.length === 1;
|
|
245
|
+
},
|
|
246
|
+
endSettle: async (runId, token, settled) => {
|
|
247
|
+
await this.db.query(settled
|
|
248
|
+
? `UPDATE agentic_runs SET "settledAt" = now(), "settlingAt" = NULL, "settleToken" = NULL
|
|
249
|
+
WHERE id = $1 AND "settleToken" = $2`
|
|
250
|
+
: `UPDATE agentic_runs SET "settlingAt" = NULL, "settleToken" = NULL
|
|
251
|
+
WHERE id = $1 AND "settleToken" = $2`, [runId, token]);
|
|
252
|
+
},
|
|
158
253
|
countByState: async () => {
|
|
159
254
|
const { rows } = await this.db.query('SELECT state, COUNT(*)::int AS n FROM agentic_runs GROUP BY state');
|
|
160
255
|
return Object.fromEntries(rows.map((r) => [r.state, r.n]));
|
|
@@ -186,9 +281,9 @@ export class PostgresAdminStore {
|
|
|
186
281
|
}
|
|
187
282
|
const toStep = (r) => ({
|
|
188
283
|
runId: r.runId, threadId: r.threadId ?? '', agentId: r.agentId ?? null, index: r.index,
|
|
189
|
-
durationMs: r.durationMs, finishReason: r.finishReason,
|
|
190
|
-
inputTokens: r.inputTokens, cachedInputTokens: r.cachedInputTokens,
|
|
191
|
-
outputTokens: r.outputTokens, totalTokens: r.totalTokens,
|
|
284
|
+
durationMs: Number(r.durationMs), finishReason: r.finishReason,
|
|
285
|
+
inputTokens: Number(r.inputTokens), cachedInputTokens: Number(r.cachedInputTokens),
|
|
286
|
+
outputTokens: Number(r.outputTokens), totalTokens: Number(r.totalTokens),
|
|
192
287
|
tools: r.tools ?? [], text: r.text ?? null,
|
|
193
288
|
toolCalls: r.toolCalls ?? [], at: new Date(r.at),
|
|
194
289
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/admin/postgres.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/admin/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ExecutionState } from '../core/types.js';
|
|
2
|
+
import type { RunTotals } from '../ports/admin.js';
|
|
3
|
+
/** Zero totals over no runs. */
|
|
4
|
+
export declare const emptyRunTotals: () => RunTotals;
|
|
5
|
+
/** Fold one group of `runs` runs (one state and stop reason, with their
|
|
6
|
+
* summed counters) into totals. Every admin store groups the same way. */
|
|
7
|
+
export declare function addRunTotals(out: RunTotals, state: ExecutionState, stopReason: string | null | undefined, runs: number, sums: {
|
|
8
|
+
steps: number;
|
|
9
|
+
inputTokens: number;
|
|
10
|
+
cachedInputTokens: number;
|
|
11
|
+
outputTokens: number;
|
|
12
|
+
totalTokens: number;
|
|
13
|
+
}): void;
|
|
14
|
+
/** The run columns a patch may write (§2.9). Anything else in a patch is
|
|
15
|
+
* ignored rather than turned into SQL. */
|
|
16
|
+
export declare const RUN_COLUMNS: Set<string>;
|
|
17
|
+
/** The run columns that hold JSON. */
|
|
18
|
+
export declare const JSON_COLUMNS: Set<string>;
|
|
19
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/admin/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,gCAAgC;AAChC,eAAO,MAAM,cAAc,QAAO,SAGhC,CAAC;AAEH;2EAC2E;AAC3E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACjH,IAAI,CASN;AAED;2CAC2C;AAC3C,eAAO,MAAM,WAAW,aAItB,CAAC;AACH,sCAAsC;AACtC,eAAO,MAAM,YAAY,aAAqD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Zero totals over no runs. */
|
|
2
|
+
export const emptyRunTotals = () => ({
|
|
3
|
+
runs: 0, byState: {}, byStopReason: {}, steps: 0,
|
|
4
|
+
inputTokens: 0, cachedInputTokens: 0, outputTokens: 0, totalTokens: 0,
|
|
5
|
+
});
|
|
6
|
+
/** Fold one group of `runs` runs (one state and stop reason, with their
|
|
7
|
+
* summed counters) into totals. Every admin store groups the same way. */
|
|
8
|
+
export function addRunTotals(out, state, stopReason, runs, sums) {
|
|
9
|
+
out.runs += runs;
|
|
10
|
+
out.byState[state] = (out.byState[state] ?? 0) + runs;
|
|
11
|
+
if (stopReason)
|
|
12
|
+
out.byStopReason[stopReason] = (out.byStopReason[stopReason] ?? 0) + runs;
|
|
13
|
+
out.steps += Number(sums.steps);
|
|
14
|
+
out.inputTokens += Number(sums.inputTokens);
|
|
15
|
+
out.cachedInputTokens += Number(sums.cachedInputTokens);
|
|
16
|
+
out.outputTokens += Number(sums.outputTokens);
|
|
17
|
+
out.totalTokens += Number(sums.totalTokens);
|
|
18
|
+
}
|
|
19
|
+
/** The run columns a patch may write (§2.9). Anything else in a patch is
|
|
20
|
+
* ignored rather than turned into SQL. */
|
|
21
|
+
export const RUN_COLUMNS = new Set([
|
|
22
|
+
'state', 'stopReason', 'error', 'startedAt', 'endedAt', 'enqueuedAt', 'durationMs', 'queuedMs',
|
|
23
|
+
'settledAt', 'steps', 'inputTokens', 'cachedInputTokens', 'outputTokens', 'totalTokens',
|
|
24
|
+
'attempts', 'result', 'prompt', 'tokenBudget', 'runState', 'providerOptions', 'costBudgetMicros', 'maxSteps',
|
|
25
|
+
]);
|
|
26
|
+
/** The run columns that hold JSON. */
|
|
27
|
+
export const JSON_COLUMNS = new Set(['result', 'runState', 'providerOptions']);
|
|
28
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/admin/shared.ts"],"names":[],"mappings":"AAGA,gCAAgC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAc,EAAE,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAChD,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;CACtE,CAAC,CAAC;AAEH;2EAC2E;AAC3E,MAAM,UAAU,YAAY,CAC1B,GAAc,EACd,KAAqB,EACrB,UAAqC,EACrC,IAAY,EACZ,IAAkH;IAElH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IACjB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,IAAI,UAAU;QAAE,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1F,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxD,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED;2CAC2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU;IAC9F,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa;IACvF,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU;CAC7G,CAAC,CAAC;AACH,sCAAsC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC"}
|
package/dist/admin/sqlite.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExecutionState, NewRunRecord, RunPatch, RunRecord } from '../core/types.js';
|
|
2
|
-
import type { AdminStore, AdminThread, AdminThreadFilter, NewAdminThread, NewStepRecord, RunFilter, StepRecord } from '../ports/admin.js';
|
|
2
|
+
import type { AdminStore, AdminThread, AdminThreadFilter, NewAdminThread, NewStepRecord, RunDeltas, RunFilter, RunTotals, StepRecord } from '../ports/admin.js';
|
|
3
3
|
import type { SqliteLike } from '../adapters/sqlite.js';
|
|
4
4
|
/** Operational history in SQLite — what `dev: true` uses (§2.9).
|
|
5
5
|
*
|
|
@@ -32,13 +32,21 @@ export declare class SqliteAdminStore implements AdminStore {
|
|
|
32
32
|
upsert: (t: NewAdminThread) => Promise<void>;
|
|
33
33
|
countByState: () => Promise<Partial<Record<ExecutionState, number>>>;
|
|
34
34
|
list: (f: AdminThreadFilter) => Promise<AdminThread[]>;
|
|
35
|
+
get: (threadId: string) => Promise<AdminThread | null>;
|
|
36
|
+
delete: (threadId: string) => Promise<void>;
|
|
35
37
|
};
|
|
38
|
+
/** The RunFilter as a WHERE clause, limit aside. */
|
|
39
|
+
private runWhere;
|
|
36
40
|
runs: {
|
|
37
41
|
start: (run: NewRunRecord) => Promise<RunRecord>;
|
|
38
42
|
patch: (runId: string, patch: RunPatch) => Promise<void>;
|
|
39
43
|
get: (runId: string) => Promise<RunRecord | null>;
|
|
40
44
|
listByThread: (threadId: string) => Promise<RunRecord[]>;
|
|
41
45
|
list: (f: RunFilter) => Promise<RunRecord[]>;
|
|
46
|
+
increment: (runId: string, d: RunDeltas) => Promise<void>;
|
|
47
|
+
totals: (f: RunFilter) => Promise<RunTotals>;
|
|
48
|
+
claimSettle: (runId: string, token: string, staleBefore: Date) => Promise<boolean>;
|
|
49
|
+
endSettle: (runId: string, token: string, settled: boolean) => Promise<void>;
|
|
42
50
|
countByState: () => Promise<Partial<Record<ExecutionState, number>>>;
|
|
43
51
|
};
|
|
44
52
|
steps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/admin/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EACV,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAC1D,aAAa,EAAE,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/admin/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EACV,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAC1D,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAC3D,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAaxD;;;;;;;4CAO4C;AAC5C,qBAAa,gBAAiB,YAAW,UAAU;IAG7B,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAvC,OAAO;IAEP;;;;;;sCAMkC;IAClC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE;QAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;KAAE,GAAG,UAAU;IAanG,kEAAkE;IAClE,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK,CAcV;IAEH,OAAO;oBACa,cAAc;;kBAkBhB,iBAAiB,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC;wBAkBpC,MAAM,KAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;2BAUjC,MAAM;MAY/B;IAEF,oDAAoD;IACpD,OAAO,CAAC,QAAQ;IAwBhB,IAAI;qBACiB,YAAY;uBAgBV,MAAM,SAAS,QAAQ;qBAazB,MAAM;iCAIM,MAAM;kBAGrB,SAAS;2BAUA,MAAM,KAAK,SAAS;oBAQ3B,SAAS,KAAG,OAAO,CAAC,SAAS,CAAC;6BAcrB,MAAM,SAAS,MAAM,eAAe,IAAI;2BAU1C,MAAM,SAAS,MAAM,WAAW,OAAO;;MAkBhE;IAEF,KAAK;oBACe,aAAa;2BASN,MAAM,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC;iCAGxB,MAAM,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC;MAG7D;IAEF,OAAO,CAAC,MAAM,CAOX;CACJ"}
|
package/dist/admin/sqlite.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { addRunTotals, emptyRunTotals, JSON_COLUMNS, RUN_COLUMNS } from './shared.js';
|
|
1
2
|
import { gatedAdminStore, runMigrations } from './migrations/runner.js';
|
|
2
3
|
import { dialect, migrations } from './migrations/sqlite/index.js';
|
|
3
4
|
const date = (n) => (n == null ? null : new Date(n));
|
|
@@ -32,14 +33,13 @@ export class SqliteAdminStore {
|
|
|
32
33
|
* not it has migrating to do. */
|
|
33
34
|
static open(db, log) {
|
|
34
35
|
const store = new SqliteAdminStore(db);
|
|
35
|
-
|
|
36
|
+
return gatedAdminStore(store, () => runMigrations(store.driver(), dialect, migrations).catch((err) => {
|
|
36
37
|
// Loud, because everything downstream of this is silent: admin writes
|
|
37
38
|
// are best effort, so a failed migration shows up as a dashboard with
|
|
38
39
|
// nothing in it rather than as an error.
|
|
39
40
|
(log ?? console).error('admin migrations failed', err);
|
|
40
41
|
throw err;
|
|
41
|
-
});
|
|
42
|
-
return gatedAdminStore(store, ready);
|
|
42
|
+
}));
|
|
43
43
|
}
|
|
44
44
|
/** The two calls the migrator needs, over this store's handle. */
|
|
45
45
|
driver() {
|
|
@@ -63,14 +63,16 @@ export class SqliteAdminStore {
|
|
|
63
63
|
id: r.id, threadId: r.threadId, parentRunId: r.parentRunId ?? null, depth: r.depth,
|
|
64
64
|
agent: r.agent, model: r.model, state: r.state,
|
|
65
65
|
stopReason: r.stopReason ?? null, error: r.error ?? null,
|
|
66
|
-
startedAt: new Date(r.startedAt), endedAt: date(r.endedAt),
|
|
66
|
+
startedAt: new Date(r.startedAt), endedAt: date(r.endedAt), enqueuedAt: date(r.enqueuedAt),
|
|
67
67
|
durationMs: r.durationMs ?? null, queuedMs: r.queuedMs ?? null,
|
|
68
|
+
settledAt: date(r.settledAt), settlingAt: date(r.settlingAt),
|
|
68
69
|
attempts: r.attempts, steps: r.steps,
|
|
69
70
|
inputTokens: r.inputTokens, cachedInputTokens: r.cachedInputTokens,
|
|
70
71
|
outputTokens: r.outputTokens, totalTokens: r.totalTokens,
|
|
71
72
|
result: parse(r.result),
|
|
72
73
|
prompt: r.prompt ?? null, tokenBudget: r.tokenBudget ?? null,
|
|
73
74
|
runState: parse(r.runState), providerOptions: parse(r.providerOptions),
|
|
75
|
+
costBudgetMicros: r.costBudgetMicros ?? null, maxSteps: r.maxSteps ?? null,
|
|
74
76
|
});
|
|
75
77
|
threads = {
|
|
76
78
|
upsert: async (t) => {
|
|
@@ -104,14 +106,81 @@ export class SqliteAdminStore {
|
|
|
104
106
|
startedWith: parseStart(r.startedWith),
|
|
105
107
|
}));
|
|
106
108
|
},
|
|
109
|
+
get: async (threadId) => {
|
|
110
|
+
const r = this.one('SELECT * FROM agentic_threads WHERE id = ?', threadId);
|
|
111
|
+
return r
|
|
112
|
+
? {
|
|
113
|
+
id: r.id, state: r.state, model: r.model,
|
|
114
|
+
firstSeenAt: new Date(r.firstSeenAt), updatedAt: new Date(r.updatedAt),
|
|
115
|
+
startedWith: parseStart(r.startedWith),
|
|
116
|
+
}
|
|
117
|
+
: null;
|
|
118
|
+
},
|
|
119
|
+
delete: async (threadId) => {
|
|
120
|
+
this.write('BEGIN IMMEDIATE');
|
|
121
|
+
try {
|
|
122
|
+
this.write('DELETE FROM agentic_steps WHERE threadId = ?', threadId);
|
|
123
|
+
this.write('DELETE FROM agentic_runs WHERE threadId = ?', threadId);
|
|
124
|
+
this.write('DELETE FROM agentic_threads WHERE id = ?', threadId);
|
|
125
|
+
this.write('COMMIT');
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
try {
|
|
129
|
+
this.write('ROLLBACK');
|
|
130
|
+
}
|
|
131
|
+
catch { /* already gone */ }
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
134
|
+
},
|
|
107
135
|
};
|
|
136
|
+
/** The RunFilter as a WHERE clause, limit aside. */
|
|
137
|
+
runWhere(f) {
|
|
138
|
+
const where = [];
|
|
139
|
+
const vals = [];
|
|
140
|
+
if (f.state?.length) {
|
|
141
|
+
where.push(`state IN (${f.state.map(() => '?').join(',')})`);
|
|
142
|
+
vals.push(...f.state);
|
|
143
|
+
}
|
|
144
|
+
if (f.agent) {
|
|
145
|
+
where.push('agent = ?');
|
|
146
|
+
vals.push(f.agent);
|
|
147
|
+
}
|
|
148
|
+
if (f.threadId) {
|
|
149
|
+
where.push('threadId = ?');
|
|
150
|
+
vals.push(f.threadId);
|
|
151
|
+
}
|
|
152
|
+
if (f.threadIds?.length) {
|
|
153
|
+
where.push(`threadId IN (${f.threadIds.map(() => '?').join(',')})`);
|
|
154
|
+
vals.push(...f.threadIds);
|
|
155
|
+
}
|
|
156
|
+
if (f.since) {
|
|
157
|
+
where.push('startedAt >= ?');
|
|
158
|
+
vals.push(f.since.getTime());
|
|
159
|
+
}
|
|
160
|
+
if (f.until) {
|
|
161
|
+
where.push('startedAt <= ?');
|
|
162
|
+
vals.push(f.until.getTime());
|
|
163
|
+
}
|
|
164
|
+
if (f.unsettled)
|
|
165
|
+
where.push('endedAt IS NOT NULL AND settledAt IS NULL');
|
|
166
|
+
if (f.depth !== undefined) {
|
|
167
|
+
where.push('depth = ?');
|
|
168
|
+
vals.push(f.depth);
|
|
169
|
+
}
|
|
170
|
+
if (f.before) {
|
|
171
|
+
where.push('(startedAt < ? OR startedAt = ? AND id < ?)');
|
|
172
|
+
vals.push(f.before.startedAt.getTime(), f.before.startedAt.getTime(), f.before.id);
|
|
173
|
+
}
|
|
174
|
+
return { where: where.length ? ` WHERE ${where.join(' AND ')}` : '', vals };
|
|
175
|
+
}
|
|
108
176
|
runs = {
|
|
109
177
|
start: async (run) => {
|
|
110
178
|
const startedAt = Date.now();
|
|
111
|
-
this.write('INSERT INTO agentic_runs (id,threadId,parentRunId,depth,agent,model,state,startedAt,prompt,tokenBudget,runState,providerOptions) VALUES (
|
|
179
|
+
this.write('INSERT INTO agentic_runs (id,threadId,parentRunId,depth,agent,model,state,startedAt,enqueuedAt,prompt,tokenBudget,runState,providerOptions,costBudgetMicros,maxSteps) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', run.id, run.threadId, run.parentRunId ?? null, run.depth ?? 0, run.agent, run.model, run.state ?? 'RUNNING', startedAt, run.enqueuedAt?.getTime() ?? null, run.prompt ?? null, run.tokenBudget ?? null, json(run.runState), json(run.providerOptions), run.costBudgetMicros ?? null, run.maxSteps ?? null);
|
|
112
180
|
return this.toRun({
|
|
113
181
|
...run, parentRunId: run.parentRunId ?? null, depth: run.depth ?? 0,
|
|
114
|
-
state: 'RUNNING', startedAt,
|
|
182
|
+
state: run.state ?? 'RUNNING', startedAt, enqueuedAt: run.enqueuedAt?.getTime() ?? null,
|
|
183
|
+
attempts: 0, steps: 0,
|
|
115
184
|
inputTokens: 0, cachedInputTokens: 0, outputTokens: 0, totalTokens: 0,
|
|
116
185
|
});
|
|
117
186
|
},
|
|
@@ -119,10 +188,12 @@ export class SqliteAdminStore {
|
|
|
119
188
|
const cols = [];
|
|
120
189
|
const vals = [];
|
|
121
190
|
for (const [k, v] of Object.entries(patch)) {
|
|
122
|
-
|
|
191
|
+
// Only the run's own columns, never a key SQL was built from blindly;
|
|
192
|
+
// JSON columns are encoded, since SQLite cannot bind an object.
|
|
193
|
+
if (v === undefined || !RUN_COLUMNS.has(k))
|
|
123
194
|
continue;
|
|
124
195
|
cols.push(`${k} = ?`);
|
|
125
|
-
vals.push(v instanceof Date ? v.getTime() : k
|
|
196
|
+
vals.push(v instanceof Date ? v.getTime() : JSON_COLUMNS.has(k) ? json(v) : v);
|
|
126
197
|
}
|
|
127
198
|
if (cols.length === 0)
|
|
128
199
|
return;
|
|
@@ -135,30 +206,42 @@ export class SqliteAdminStore {
|
|
|
135
206
|
listByThread: async (threadId) => this.all('SELECT * FROM agentic_runs WHERE threadId = ? ORDER BY startedAt DESC', threadId)
|
|
136
207
|
.map(this.toRun),
|
|
137
208
|
list: async (f) => {
|
|
138
|
-
const where =
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
vals.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
209
|
+
const { where, vals } = this.runWhere(f);
|
|
210
|
+
// Ordered on the id after the start time, so a page's last run is a
|
|
211
|
+
// cursor that splits the listing exactly (RunFilter.before).
|
|
212
|
+
return this.all(`SELECT * FROM agentic_runs${where}` +
|
|
213
|
+
' ORDER BY startedAt DESC, id DESC LIMIT ?', ...vals, f.limit ?? 100).map(this.toRun);
|
|
214
|
+
},
|
|
215
|
+
increment: async (runId, d) => {
|
|
216
|
+
this.write(`UPDATE agentic_runs SET steps = steps + ?, inputTokens = inputTokens + ?,
|
|
217
|
+
cachedInputTokens = cachedInputTokens + ?, outputTokens = outputTokens + ?,
|
|
218
|
+
totalTokens = totalTokens + ? WHERE id = ?`, d.steps, d.inputTokens, d.cachedInputTokens, d.outputTokens, d.totalTokens, runId);
|
|
219
|
+
},
|
|
220
|
+
totals: async (f) => {
|
|
221
|
+
const { where, vals } = this.runWhere({ ...f, before: undefined });
|
|
222
|
+
const out = emptyRunTotals();
|
|
223
|
+
for (const r of this.all(`SELECT state, stopReason, COUNT(*) AS n, COALESCE(SUM(steps),0) AS steps,
|
|
224
|
+
COALESCE(SUM(inputTokens),0) AS inputTokens, COALESCE(SUM(cachedInputTokens),0) AS cachedInputTokens,
|
|
225
|
+
COALESCE(SUM(outputTokens),0) AS outputTokens, COALESCE(SUM(totalTokens),0) AS totalTokens
|
|
226
|
+
FROM agentic_runs${where} GROUP BY state, stopReason`, ...vals)) {
|
|
227
|
+
addRunTotals(out, r.state, r.stopReason, Number(r.n), r);
|
|
151
228
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
229
|
+
return out;
|
|
230
|
+
},
|
|
231
|
+
claimSettle: async (runId, token, staleBefore) => {
|
|
232
|
+
// The token is new for every claim, so reading it back says whether
|
|
233
|
+
// this write is the one that won.
|
|
234
|
+
this.write(`UPDATE agentic_runs SET settlingAt = ?, settleToken = ?
|
|
235
|
+
WHERE id = ? AND settledAt IS NULL AND (settlingAt IS NULL OR settlingAt < ?)`, Date.now(), token, runId, staleBefore.getTime());
|
|
236
|
+
return this.one('SELECT settleToken FROM agentic_runs WHERE id = ?', runId)?.settleToken === token;
|
|
237
|
+
},
|
|
238
|
+
endSettle: async (runId, token, settled) => {
|
|
239
|
+
if (settled) {
|
|
240
|
+
this.write('UPDATE agentic_runs SET settledAt = ?, settlingAt = NULL, settleToken = NULL WHERE id = ? AND settleToken = ?', Date.now(), runId, token);
|
|
155
241
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
vals.push(f.until.getTime());
|
|
242
|
+
else {
|
|
243
|
+
this.write('UPDATE agentic_runs SET settlingAt = NULL, settleToken = NULL WHERE id = ? AND settleToken = ?', runId, token);
|
|
159
244
|
}
|
|
160
|
-
return this.all(`SELECT * FROM agentic_runs${where.length ? ` WHERE ${where.join(' AND ')}` : ''}` +
|
|
161
|
-
' ORDER BY startedAt DESC LIMIT ?', ...vals, f.limit ?? 100).map(this.toRun);
|
|
162
245
|
},
|
|
163
246
|
countByState: async () => Object.fromEntries(this.all('SELECT state, COUNT(*) AS n FROM agentic_runs GROUP BY state')
|
|
164
247
|
.map((r) => [r.state, r.n])),
|