@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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/adapter-checkpoints.d.ts +6 -0
  4. package/dist/adapter-checkpoints.d.ts.map +1 -0
  5. package/dist/adapter-checkpoints.js +110 -0
  6. package/dist/adapter-checkpoints.js.map +1 -0
  7. package/dist/adapter-conversation-turns.d.ts +20 -0
  8. package/dist/adapter-conversation-turns.d.ts.map +1 -0
  9. package/dist/adapter-conversation-turns.js +216 -0
  10. package/dist/adapter-conversation-turns.js.map +1 -0
  11. package/dist/adapter-conversations.d.ts +46 -0
  12. package/dist/adapter-conversations.d.ts.map +1 -0
  13. package/dist/adapter-conversations.js +129 -0
  14. package/dist/adapter-conversations.js.map +1 -0
  15. package/dist/adapter-delivery.d.ts +13 -0
  16. package/dist/adapter-delivery.d.ts.map +1 -0
  17. package/dist/adapter-delivery.js +157 -0
  18. package/dist/adapter-delivery.js.map +1 -0
  19. package/dist/adapter-grants.d.ts +11 -0
  20. package/dist/adapter-grants.d.ts.map +1 -0
  21. package/dist/adapter-grants.js +125 -0
  22. package/dist/adapter-grants.js.map +1 -0
  23. package/dist/adapter-memory.d.ts +21 -0
  24. package/dist/adapter-memory.d.ts.map +1 -0
  25. package/dist/adapter-memory.js +181 -0
  26. package/dist/adapter-memory.js.map +1 -0
  27. package/dist/adapter-misc.d.ts +61 -0
  28. package/dist/adapter-misc.d.ts.map +1 -0
  29. package/dist/adapter-misc.js +127 -0
  30. package/dist/adapter-misc.js.map +1 -0
  31. package/dist/adapter-runs.d.ts +20 -0
  32. package/dist/adapter-runs.d.ts.map +1 -0
  33. package/dist/adapter-runs.js +193 -0
  34. package/dist/adapter-runs.js.map +1 -0
  35. package/dist/adapter-sandbox.d.ts +27 -0
  36. package/dist/adapter-sandbox.d.ts.map +1 -0
  37. package/dist/adapter-sandbox.js +267 -0
  38. package/dist/adapter-sandbox.js.map +1 -0
  39. package/dist/adapter-settings.d.ts +8 -0
  40. package/dist/adapter-settings.d.ts.map +1 -0
  41. package/dist/adapter-settings.js +38 -0
  42. package/dist/adapter-settings.js.map +1 -0
  43. package/dist/adapter-usage.d.ts +7 -0
  44. package/dist/adapter-usage.d.ts.map +1 -0
  45. package/dist/adapter-usage.js +243 -0
  46. package/dist/adapter-usage.js.map +1 -0
  47. package/dist/client-types.d.ts +6 -0
  48. package/dist/client-types.d.ts.map +1 -0
  49. package/dist/client-types.js +2 -0
  50. package/dist/client-types.js.map +1 -0
  51. package/dist/index.d.ts +208 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +424 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/migrations.d.ts +35 -0
  56. package/dist/migrations.d.ts.map +1 -0
  57. package/dist/migrations.js +694 -0
  58. package/dist/migrations.js.map +1 -0
  59. package/dist/presets.d.ts +19 -0
  60. package/dist/presets.d.ts.map +1 -0
  61. package/dist/presets.js +31 -0
  62. package/dist/presets.js.map +1 -0
  63. package/dist/provider.d.ts +12 -0
  64. package/dist/provider.d.ts.map +1 -0
  65. package/dist/provider.js +86 -0
  66. package/dist/provider.js.map +1 -0
  67. package/dist/row-mappers.d.ts +24 -0
  68. package/dist/row-mappers.d.ts.map +1 -0
  69. package/dist/row-mappers.js +450 -0
  70. package/dist/row-mappers.js.map +1 -0
  71. package/dist/sql-helpers.d.ts +46 -0
  72. package/dist/sql-helpers.d.ts.map +1 -0
  73. package/dist/sql-helpers.js +244 -0
  74. package/dist/sql-helpers.js.map +1 -0
  75. package/dist/stores.d.ts +40 -0
  76. package/dist/stores.d.ts.map +1 -0
  77. package/dist/stores.js +210 -0
  78. package/dist/stores.js.map +1 -0
  79. 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"}