@assemblyline-agents/postgres 0.1.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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/adapter-checkpoints.d.ts +6 -0
- package/dist/adapter-checkpoints.d.ts.map +1 -0
- package/dist/adapter-checkpoints.js +110 -0
- package/dist/adapter-checkpoints.js.map +1 -0
- package/dist/adapter-conversation-turns.d.ts +20 -0
- package/dist/adapter-conversation-turns.d.ts.map +1 -0
- package/dist/adapter-conversation-turns.js +216 -0
- package/dist/adapter-conversation-turns.js.map +1 -0
- package/dist/adapter-conversations.d.ts +46 -0
- package/dist/adapter-conversations.d.ts.map +1 -0
- package/dist/adapter-conversations.js +129 -0
- package/dist/adapter-conversations.js.map +1 -0
- package/dist/adapter-delivery.d.ts +13 -0
- package/dist/adapter-delivery.d.ts.map +1 -0
- package/dist/adapter-delivery.js +157 -0
- package/dist/adapter-delivery.js.map +1 -0
- package/dist/adapter-grants.d.ts +11 -0
- package/dist/adapter-grants.d.ts.map +1 -0
- package/dist/adapter-grants.js +125 -0
- package/dist/adapter-grants.js.map +1 -0
- package/dist/adapter-memory.d.ts +21 -0
- package/dist/adapter-memory.d.ts.map +1 -0
- package/dist/adapter-memory.js +181 -0
- package/dist/adapter-memory.js.map +1 -0
- package/dist/adapter-misc.d.ts +61 -0
- package/dist/adapter-misc.d.ts.map +1 -0
- package/dist/adapter-misc.js +127 -0
- package/dist/adapter-misc.js.map +1 -0
- package/dist/adapter-runs.d.ts +20 -0
- package/dist/adapter-runs.d.ts.map +1 -0
- package/dist/adapter-runs.js +193 -0
- package/dist/adapter-runs.js.map +1 -0
- package/dist/adapter-sandbox.d.ts +27 -0
- package/dist/adapter-sandbox.d.ts.map +1 -0
- package/dist/adapter-sandbox.js +267 -0
- package/dist/adapter-sandbox.js.map +1 -0
- package/dist/adapter-settings.d.ts +8 -0
- package/dist/adapter-settings.d.ts.map +1 -0
- package/dist/adapter-settings.js +38 -0
- package/dist/adapter-settings.js.map +1 -0
- package/dist/adapter-usage.d.ts +7 -0
- package/dist/adapter-usage.d.ts.map +1 -0
- package/dist/adapter-usage.js +243 -0
- package/dist/adapter-usage.js.map +1 -0
- package/dist/client-types.d.ts +6 -0
- package/dist/client-types.d.ts.map +1 -0
- package/dist/client-types.js +2 -0
- package/dist/client-types.js.map +1 -0
- package/dist/index.d.ts +208 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +424 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations.d.ts +35 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +694 -0
- package/dist/migrations.js.map +1 -0
- package/dist/presets.d.ts +19 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +31 -0
- package/dist/presets.js.map +1 -0
- package/dist/provider.d.ts +12 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +86 -0
- package/dist/provider.js.map +1 -0
- package/dist/row-mappers.d.ts +24 -0
- package/dist/row-mappers.d.ts.map +1 -0
- package/dist/row-mappers.js +450 -0
- package/dist/row-mappers.js.map +1 -0
- package/dist/sql-helpers.d.ts +46 -0
- package/dist/sql-helpers.d.ts.map +1 -0
- package/dist/sql-helpers.js +244 -0
- package/dist/sql-helpers.js.map +1 -0
- package/dist/stores.d.ts +40 -0
- package/dist/stores.d.ts.map +1 -0
- package/dist/stores.js +210 -0
- package/dist/stores.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mapFileIndexRecord } from "./row-mappers.js";
|
|
3
|
+
import { timestamp } from "./sql-helpers.js";
|
|
4
|
+
export async function enqueueRun(client, runId, options = {}) {
|
|
5
|
+
const now = timestamp();
|
|
6
|
+
const record = {
|
|
7
|
+
id: randomUUID(),
|
|
8
|
+
runId,
|
|
9
|
+
queue: options.queue ?? "default",
|
|
10
|
+
status: "ready",
|
|
11
|
+
availableAt: options.availableAt ?? now,
|
|
12
|
+
idempotencyKey: options.idempotencyKey ?? `run:${runId}`,
|
|
13
|
+
createdAt: now,
|
|
14
|
+
updatedAt: now
|
|
15
|
+
};
|
|
16
|
+
await client.query(`insert into openeve_run_queue
|
|
17
|
+
(id, run_id, queue, status, available_at, idempotency_key, created_at, updated_at)
|
|
18
|
+
values ($1,$2,$3,$4,$5,$6,$7,$8)
|
|
19
|
+
on conflict (idempotency_key) do nothing`, [record.id, runId, record.queue, record.status, record.availableAt, record.idempotencyKey, record.createdAt, record.updatedAt]);
|
|
20
|
+
return record;
|
|
21
|
+
}
|
|
22
|
+
export async function enqueueScheduleRun(client, input) {
|
|
23
|
+
const now = timestamp();
|
|
24
|
+
const record = {
|
|
25
|
+
id: randomUUID(),
|
|
26
|
+
scheduleId: input.scheduleId,
|
|
27
|
+
status: input.status ?? "ready",
|
|
28
|
+
runAt: input.runAt,
|
|
29
|
+
idempotencyKey: input.idempotencyKey,
|
|
30
|
+
createdAt: now,
|
|
31
|
+
updatedAt: now
|
|
32
|
+
};
|
|
33
|
+
if (input.runId)
|
|
34
|
+
record.runId = input.runId;
|
|
35
|
+
await client.query(`insert into openeve_schedule_runs
|
|
36
|
+
(id, schedule_id, run_id, idempotency_key, status, run_at, created_at, updated_at)
|
|
37
|
+
values ($1,$2,$3,$4,$5,$6,$7,$8)
|
|
38
|
+
on conflict (idempotency_key) do update
|
|
39
|
+
set schedule_id=$2,
|
|
40
|
+
run_id=coalesce($3, openeve_schedule_runs.run_id),
|
|
41
|
+
status=$5,
|
|
42
|
+
run_at=$6,
|
|
43
|
+
updated_at=$8`, [record.id, record.scheduleId, record.runId ?? null, record.idempotencyKey, record.status, record.runAt, record.createdAt, record.updatedAt]);
|
|
44
|
+
return record;
|
|
45
|
+
}
|
|
46
|
+
export async function reserveIdempotencyKey(client, scope, key, ownerId) {
|
|
47
|
+
const result = await client.query(`insert into openeve_idempotency_keys (scope, key, owner_id, created_at)
|
|
48
|
+
values ($1,$2,$3,$4)
|
|
49
|
+
on conflict (scope, key) do nothing
|
|
50
|
+
returning key as inserted`, [scope, key, ownerId ?? null, timestamp()]);
|
|
51
|
+
return result.rows.length > 0;
|
|
52
|
+
}
|
|
53
|
+
export async function registerSchedule(client, input) {
|
|
54
|
+
const now = timestamp();
|
|
55
|
+
await client.query(`insert into openeve_schedules (id, name, cron, timezone, metadata, created_at, updated_at)
|
|
56
|
+
values ($1,$2,$3,$4,$5::jsonb,$6,$7)
|
|
57
|
+
on conflict (id) do update set name=$2, cron=$3, timezone=$4, metadata=$5::jsonb, updated_at=$7`, [input.id, input.name, input.cron, input.timezone ?? null, JSON.stringify(input.metadata ?? {}), now, now]);
|
|
58
|
+
return {
|
|
59
|
+
id: input.id,
|
|
60
|
+
name: input.name,
|
|
61
|
+
cron: input.cron,
|
|
62
|
+
metadata: input.metadata ?? {},
|
|
63
|
+
createdAt: now,
|
|
64
|
+
updatedAt: now,
|
|
65
|
+
...(input.timezone ? { timezone: input.timezone } : {})
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export async function recordScheduleRun(client, input) {
|
|
69
|
+
const scheduleRunInput = {
|
|
70
|
+
scheduleId: input.scheduleId,
|
|
71
|
+
runAt: input.runAt,
|
|
72
|
+
idempotencyKey: input.idempotencyKey
|
|
73
|
+
};
|
|
74
|
+
if (input.runId)
|
|
75
|
+
scheduleRunInput.runId = input.runId;
|
|
76
|
+
if (input.status)
|
|
77
|
+
scheduleRunInput.status = input.status;
|
|
78
|
+
return enqueueScheduleRun(client, scheduleRunInput);
|
|
79
|
+
}
|
|
80
|
+
export async function recordFileIndex(client, input) {
|
|
81
|
+
const record = {
|
|
82
|
+
id: randomUUID(),
|
|
83
|
+
path: input.path,
|
|
84
|
+
kind: input.kind,
|
|
85
|
+
blobKey: input.blobKey,
|
|
86
|
+
sha256: input.sha256,
|
|
87
|
+
sizeBytes: input.sizeBytes,
|
|
88
|
+
metadata: input.metadata ?? {},
|
|
89
|
+
createdAt: timestamp()
|
|
90
|
+
};
|
|
91
|
+
if (input.runId)
|
|
92
|
+
record.runId = input.runId;
|
|
93
|
+
const table = input.kind === "memory" ? "openeve_memory_file_indexes" : "openeve_file_catalog_records";
|
|
94
|
+
if (table === "openeve_memory_file_indexes") {
|
|
95
|
+
await client.query(`insert into openeve_memory_file_indexes (id, run_id, path, blob_key, sha256, size_bytes, created_at)
|
|
96
|
+
values ($1,$2,$3,$4,$5,$6,$7)
|
|
97
|
+
on conflict (run_id, path, sha256) do update set blob_key=$4, size_bytes=$6`, [record.id, record.runId ?? null, record.path, record.blobKey, record.sha256, record.sizeBytes, record.createdAt]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
await client.query(`insert into openeve_file_catalog_records (id, run_id, path, kind, blob_key, sha256, size_bytes, metadata, created_at)
|
|
101
|
+
values ($1,$2,$3,$4,$5,$6,$7,$8::jsonb,$9)
|
|
102
|
+
on conflict (run_id, path, sha256) do update set kind=$4, blob_key=$5, size_bytes=$7, metadata=$8::jsonb`, [
|
|
103
|
+
record.id,
|
|
104
|
+
record.runId ?? null,
|
|
105
|
+
record.path,
|
|
106
|
+
record.kind,
|
|
107
|
+
record.blobKey,
|
|
108
|
+
record.sha256,
|
|
109
|
+
record.sizeBytes,
|
|
110
|
+
JSON.stringify(record.metadata),
|
|
111
|
+
record.createdAt
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
return record;
|
|
115
|
+
}
|
|
116
|
+
export async function listFileIndexes(client, runId) {
|
|
117
|
+
const result = await client.query(`select id, run_id, path, 'memory' as kind, blob_key, sha256, size_bytes, '{}'::jsonb as metadata, created_at
|
|
118
|
+
from openeve_memory_file_indexes
|
|
119
|
+
where ($1::text is null or run_id=$1)
|
|
120
|
+
union all
|
|
121
|
+
select id, run_id, path, kind, blob_key, sha256, size_bytes, metadata, created_at
|
|
122
|
+
from openeve_file_catalog_records
|
|
123
|
+
where ($1::text is null or run_id=$1)
|
|
124
|
+
order by created_at desc`, [runId ?? null]);
|
|
125
|
+
return result.rows.map(mapFileIndexRecord);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=adapter-misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-misc.js","sourceRoot":"","sources":["../src/adapter-misc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { JsonObject } from "@assemblyline-agents/core";
|
|
2
|
+
import type { RunControlIntent, RunEvent, RunEventType, RunRecord, RunStatus, ToolCallRecord } from "@assemblyline-agents/runtime";
|
|
3
|
+
import type { QueryClient } from "./client-types.js";
|
|
4
|
+
export declare function createRun(client: QueryClient, input: Omit<RunRecord, "id" | "createdAt" | "updatedAt">): Promise<RunRecord>;
|
|
5
|
+
export declare function updateRun(client: QueryClient, id: string, patch: Partial<Omit<RunRecord, "id" | "createdAt">>): Promise<RunRecord>;
|
|
6
|
+
export declare function touchRun(client: QueryClient, id: string): Promise<void>;
|
|
7
|
+
export declare function requestRunControl(client: QueryClient, id: string, intent: RunControlIntent): Promise<RunRecord>;
|
|
8
|
+
export declare function settleRunControl(client: QueryClient, id: string): Promise<RunRecord>;
|
|
9
|
+
export declare function getRun(client: QueryClient, id: string): Promise<RunRecord | undefined>;
|
|
10
|
+
export declare function listRuns(client: QueryClient): Promise<RunRecord[]>;
|
|
11
|
+
export declare function listRunsByStatus(client: QueryClient, statuses: RunStatus[], options?: {
|
|
12
|
+
updatedBefore?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
}): Promise<RunRecord[]>;
|
|
15
|
+
export declare function appendEvent(client: QueryClient, runId: string, type: RunEventType, data?: JsonObject): Promise<RunEvent>;
|
|
16
|
+
export declare function listEvents(client: QueryClient, runId: string): Promise<RunEvent[]>;
|
|
17
|
+
export declare function createToolCall(client: QueryClient, input: Omit<ToolCallRecord, "id" | "createdAt" | "updatedAt">): Promise<ToolCallRecord>;
|
|
18
|
+
export declare function updateToolCall(client: QueryClient, id: string, patch: Partial<Omit<ToolCallRecord, "id" | "createdAt">>): Promise<ToolCallRecord>;
|
|
19
|
+
export declare function listToolCalls(client: QueryClient, runId: string): Promise<ToolCallRecord[]>;
|
|
20
|
+
//# sourceMappingURL=adapter-runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-runs.d.ts","sourceRoot":"","sources":["../src/adapter-runs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BjI;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BxI;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAoBrH;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAe1F;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAI5F;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAGxE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAejK;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsBlI;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGxF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBhJ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAmBvJ;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGjG"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mapEvent, mapRun, mapToolCall } from "./row-mappers.js";
|
|
3
|
+
import { isUniqueViolation, positiveLimit, timestamp } from "./sql-helpers.js";
|
|
4
|
+
export async function createRun(client, input) {
|
|
5
|
+
const now = timestamp();
|
|
6
|
+
const run = {
|
|
7
|
+
...input,
|
|
8
|
+
id: randomUUID(),
|
|
9
|
+
createdAt: now,
|
|
10
|
+
updatedAt: now
|
|
11
|
+
};
|
|
12
|
+
await client.query(`insert into openeve_runs
|
|
13
|
+
(id, agent_revision, status, input, context_bundle_id, sandbox_id, sandbox_snapshot_id, memory_revision, control_intent, created_at, updated_at)
|
|
14
|
+
values ($1, $2, $3, $4::jsonb, $5, $6, $7, $8, $9, $10, $11)`, [
|
|
15
|
+
run.id,
|
|
16
|
+
run.agentRevision,
|
|
17
|
+
run.status,
|
|
18
|
+
JSON.stringify(run.input),
|
|
19
|
+
run.contextBundleId ?? null,
|
|
20
|
+
run.sandboxId ?? null,
|
|
21
|
+
run.sandboxSnapshotId ?? null,
|
|
22
|
+
run.memoryRevision ?? null,
|
|
23
|
+
run.controlIntent ?? null,
|
|
24
|
+
run.createdAt,
|
|
25
|
+
run.updatedAt
|
|
26
|
+
]);
|
|
27
|
+
return run;
|
|
28
|
+
}
|
|
29
|
+
export async function updateRun(client, id, patch) {
|
|
30
|
+
// Column-scoped update: only write the columns present in the patch, so
|
|
31
|
+
// concurrent writers (heartbeat vs. status transition) can never clobber
|
|
32
|
+
// each other's fields with a stale read-modify-write.
|
|
33
|
+
const columns = {
|
|
34
|
+
status: "status",
|
|
35
|
+
input: "input",
|
|
36
|
+
contextBundleId: "context_bundle_id",
|
|
37
|
+
sandboxId: "sandbox_id",
|
|
38
|
+
sandboxSnapshotId: "sandbox_snapshot_id",
|
|
39
|
+
memoryRevision: "memory_revision",
|
|
40
|
+
controlIntent: "control_intent",
|
|
41
|
+
terminalReason: "terminal_reason",
|
|
42
|
+
terminalError: "terminal_error"
|
|
43
|
+
};
|
|
44
|
+
const updatedAt = timestamp();
|
|
45
|
+
const sets = ["updated_at=$2"];
|
|
46
|
+
const params = [id, updatedAt];
|
|
47
|
+
for (const [key, column] of Object.entries(columns)) {
|
|
48
|
+
if (!(key in patch))
|
|
49
|
+
continue;
|
|
50
|
+
const value = patch[key];
|
|
51
|
+
params.push(key === "input" ? JSON.stringify(value ?? {}) : value ?? null);
|
|
52
|
+
sets.push(column === "input" ? `input=$${params.length}::jsonb` : `${column}=$${params.length}`);
|
|
53
|
+
}
|
|
54
|
+
const result = await client.query(`update openeve_runs set ${sets.join(", ")} where id=$1 returning *`, params);
|
|
55
|
+
const row = result.rows[0];
|
|
56
|
+
if (!row)
|
|
57
|
+
throw new Error(`Run not found: ${id}`);
|
|
58
|
+
return mapRun(row);
|
|
59
|
+
}
|
|
60
|
+
export async function touchRun(client, id) {
|
|
61
|
+
// Heartbeat: single guarded statement — never touches status, never
|
|
62
|
+
// resurrects a terminal run.
|
|
63
|
+
await client.query("update openeve_runs set updated_at=$2 where id=$1 and status in ('created','running')", [id, timestamp()]);
|
|
64
|
+
}
|
|
65
|
+
export async function requestRunControl(client, id, intent) {
|
|
66
|
+
const result = await client.query(`update openeve_runs
|
|
67
|
+
set status = case
|
|
68
|
+
when $2 = 'cancel' and status in ('created','waiting_for_approval','waiting_for_input','waiting_for_connection','suspended') then 'cancelled'
|
|
69
|
+
else status
|
|
70
|
+
end,
|
|
71
|
+
control_intent = case
|
|
72
|
+
when status = 'running' and (control_intent = 'cancel' or $2 = 'cancel') then 'cancel'
|
|
73
|
+
when status = 'running' and $2 = 'suspend' then 'suspend'
|
|
74
|
+
else null
|
|
75
|
+
end,
|
|
76
|
+
updated_at = $3
|
|
77
|
+
where id = $1
|
|
78
|
+
returning *`, [id, intent, timestamp()]);
|
|
79
|
+
const row = result.rows[0];
|
|
80
|
+
if (!row)
|
|
81
|
+
throw new Error(`Run not found: ${id}`);
|
|
82
|
+
return mapRun(row);
|
|
83
|
+
}
|
|
84
|
+
export async function settleRunControl(client, id) {
|
|
85
|
+
const result = await client.query(`update openeve_runs
|
|
86
|
+
set status = case control_intent when 'cancel' then 'cancelled' else 'suspended' end,
|
|
87
|
+
control_intent = null,
|
|
88
|
+
updated_at = $2
|
|
89
|
+
where id = $1 and status = 'running' and control_intent in ('suspend','cancel')
|
|
90
|
+
returning *`, [id, timestamp()]);
|
|
91
|
+
const row = result.rows[0];
|
|
92
|
+
if (row)
|
|
93
|
+
return mapRun(row);
|
|
94
|
+
const current = await getRun(client, id);
|
|
95
|
+
if (!current)
|
|
96
|
+
throw new Error(`Run not found: ${id}`);
|
|
97
|
+
return current;
|
|
98
|
+
}
|
|
99
|
+
export async function getRun(client, id) {
|
|
100
|
+
const result = await client.query("select * from openeve_runs where id=$1", [id]);
|
|
101
|
+
const row = result.rows[0];
|
|
102
|
+
return row ? mapRun(row) : undefined;
|
|
103
|
+
}
|
|
104
|
+
export async function listRuns(client) {
|
|
105
|
+
const result = await client.query("select * from openeve_runs order by created_at asc");
|
|
106
|
+
return result.rows.map(mapRun);
|
|
107
|
+
}
|
|
108
|
+
export async function listRunsByStatus(client, statuses, options = {}) {
|
|
109
|
+
if (statuses.length === 0)
|
|
110
|
+
return [];
|
|
111
|
+
const params = [statuses];
|
|
112
|
+
let sql = "select * from openeve_runs where status = any($1)";
|
|
113
|
+
if (options.updatedBefore) {
|
|
114
|
+
params.push(options.updatedBefore);
|
|
115
|
+
sql += ` and updated_at <= $${params.length}`;
|
|
116
|
+
}
|
|
117
|
+
sql += " order by updated_at asc";
|
|
118
|
+
if (options.limit !== undefined) {
|
|
119
|
+
params.push(positiveLimit(options.limit, 100));
|
|
120
|
+
sql += ` limit $${params.length}`;
|
|
121
|
+
}
|
|
122
|
+
const result = await client.query(sql, params);
|
|
123
|
+
return result.rows.map(mapRun);
|
|
124
|
+
}
|
|
125
|
+
export async function appendEvent(client, runId, type, data = {}) {
|
|
126
|
+
const id = randomUUID();
|
|
127
|
+
const createdAt = timestamp();
|
|
128
|
+
// Sequence allocation races with concurrent appends for the same run
|
|
129
|
+
// (model events, delivery queue, attachments), so compute it inside the
|
|
130
|
+
// insert and retry on unique-constraint conflicts instead of pre-reading.
|
|
131
|
+
const maxAttempts = 25;
|
|
132
|
+
for (let attempt = 1;; attempt += 1) {
|
|
133
|
+
try {
|
|
134
|
+
const result = await client.query(`insert into openeve_run_events (id, run_id, sequence, type, data, created_at)
|
|
135
|
+
select $1, $2, coalesce(max(sequence), 0) + 1, $3, $4::jsonb, $5
|
|
136
|
+
from openeve_run_events where run_id=$2
|
|
137
|
+
returning sequence`, [id, runId, type, JSON.stringify(data), createdAt]);
|
|
138
|
+
const sequence = result.rows[0]?.sequence ?? 1;
|
|
139
|
+
return { id, runId, sequence, type, timestamp: createdAt, data };
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (attempt >= maxAttempts || !isUniqueViolation(error))
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export async function listEvents(client, runId) {
|
|
148
|
+
const result = await client.query("select * from openeve_run_events where run_id=$1 order by sequence asc", [runId]);
|
|
149
|
+
return result.rows.map(mapEvent);
|
|
150
|
+
}
|
|
151
|
+
export async function createToolCall(client, input) {
|
|
152
|
+
const now = timestamp();
|
|
153
|
+
const record = { ...input, id: randomUUID(), createdAt: now, updatedAt: now };
|
|
154
|
+
await client.query(`insert into openeve_tool_calls
|
|
155
|
+
(id, run_id, tool_name, status, input, result, model_output, error, idempotency_key, created_at, updated_at)
|
|
156
|
+
values ($1,$2,$3,$4,$5::jsonb,$6::jsonb,$7::jsonb,$8,$9,$10,$11)`, [
|
|
157
|
+
record.id,
|
|
158
|
+
record.runId,
|
|
159
|
+
record.toolName,
|
|
160
|
+
record.status,
|
|
161
|
+
JSON.stringify(record.input),
|
|
162
|
+
record.result === undefined ? null : JSON.stringify(record.result),
|
|
163
|
+
record.modelOutput === undefined ? null : JSON.stringify(record.modelOutput),
|
|
164
|
+
record.error ?? null,
|
|
165
|
+
record.idempotencyKey,
|
|
166
|
+
record.createdAt,
|
|
167
|
+
record.updatedAt
|
|
168
|
+
]);
|
|
169
|
+
return record;
|
|
170
|
+
}
|
|
171
|
+
export async function updateToolCall(client, id, patch) {
|
|
172
|
+
const current = (await client.query("select * from openeve_tool_calls where id=$1", [id])).rows[0];
|
|
173
|
+
if (!current)
|
|
174
|
+
throw new Error(`Tool call not found: ${id}`);
|
|
175
|
+
const updated = { ...mapToolCall(current), ...patch, updatedAt: timestamp() };
|
|
176
|
+
await client.query(`update openeve_tool_calls
|
|
177
|
+
set status=$2, input=$3::jsonb, result=$4::jsonb, model_output=$5::jsonb, error=$6, updated_at=$7
|
|
178
|
+
where id=$1`, [
|
|
179
|
+
updated.id,
|
|
180
|
+
updated.status,
|
|
181
|
+
JSON.stringify(updated.input),
|
|
182
|
+
updated.result === undefined ? null : JSON.stringify(updated.result),
|
|
183
|
+
updated.modelOutput === undefined ? null : JSON.stringify(updated.modelOutput),
|
|
184
|
+
updated.error ?? null,
|
|
185
|
+
updated.updatedAt
|
|
186
|
+
]);
|
|
187
|
+
return updated;
|
|
188
|
+
}
|
|
189
|
+
export async function listToolCalls(client, runId) {
|
|
190
|
+
const result = await client.query("select * from openeve_tool_calls where run_id=$1 order by created_at asc", [runId]);
|
|
191
|
+
return result.rows.map(mapToolCall);
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=adapter-runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-runs.js","sourceRoot":"","sources":["../src/adapter-runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { JsonObject } from "@assemblyline-agents/core";
|
|
2
|
+
import type { SandboxSessionInput, SandboxSessionPatch, SandboxSessionRecord, SandboxSnapshotRecord, SandboxSyncFailureInput, SandboxSyncJobInput, SandboxSyncJobPatch, SandboxSyncJobRecord, SandboxSyncLeaseOptions } from "@assemblyline-agents/runtime";
|
|
3
|
+
import type { QueryClient } from "./client-types.js";
|
|
4
|
+
export declare function recordSandboxSnapshot(client: QueryClient, input: {
|
|
5
|
+
runId: string;
|
|
6
|
+
sandboxId: string;
|
|
7
|
+
snapshotId: string;
|
|
8
|
+
metadata?: JsonObject;
|
|
9
|
+
}): Promise<SandboxSnapshotRecord>;
|
|
10
|
+
export declare function upsertSandboxSession(client: QueryClient, input: SandboxSessionInput): Promise<SandboxSessionRecord>;
|
|
11
|
+
export declare function getSandboxSession(client: QueryClient, sessionKey: string): Promise<SandboxSessionRecord | undefined>;
|
|
12
|
+
export declare function listSandboxSessions(client: QueryClient, options?: {
|
|
13
|
+
dirty?: boolean;
|
|
14
|
+
}): Promise<SandboxSessionRecord[]>;
|
|
15
|
+
export declare function updateSandboxSession(client: QueryClient, sessionKey: string, patch: SandboxSessionPatch): Promise<SandboxSessionRecord>;
|
|
16
|
+
export declare function createSandboxSyncJob(client: QueryClient, input: SandboxSyncJobInput): Promise<SandboxSyncJobRecord>;
|
|
17
|
+
export declare function enqueueSandboxSyncJob(client: QueryClient, input: SandboxSyncJobInput): Promise<SandboxSyncJobRecord>;
|
|
18
|
+
export declare function updateSandboxSyncJob(client: QueryClient, id: string, patch: SandboxSyncJobPatch): Promise<SandboxSyncJobRecord>;
|
|
19
|
+
export declare function listSandboxSyncJobs(client: QueryClient, runId?: string): Promise<SandboxSyncJobRecord[]>;
|
|
20
|
+
export declare function leaseSandboxSyncJobs(client: QueryClient, options?: SandboxSyncLeaseOptions): Promise<SandboxSyncJobRecord[]>;
|
|
21
|
+
export declare function completeSandboxSyncJob(client: QueryClient, id: string, leaseToken: string, patch?: {
|
|
22
|
+
manifest?: JsonObject;
|
|
23
|
+
metadata?: JsonObject;
|
|
24
|
+
}): Promise<SandboxSyncJobRecord>;
|
|
25
|
+
export declare function failSandboxSyncJob(client: QueryClient, id: string, leaseToken: string, failure: SandboxSyncFailureInput): Promise<SandboxSyncJobRecord>;
|
|
26
|
+
export declare function recoverExpiredSandboxSyncJobs(client: QueryClient, now?: Date): Promise<SandboxSyncJobRecord[]>;
|
|
27
|
+
//# sourceMappingURL=adapter-sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-sandbox.d.ts","sourceRoot":"","sources":["../src/adapter-sandbox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWrD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuBjC;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6CzH;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAI1H;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAKjI;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAe7I;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEzH;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmD1H;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAK9G;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA0BtI;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE;IAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;CAAO,GAC3D,OAAO,CAAC,oBAAoB,CAAC,CAkB/B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAED,wBAAsB,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAWhI"}
|