@assemblyline-agents/postgres 1.0.0 → 3.0.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 +1 -1
- package/dist/adapter-agent-state.d.ts +15 -0
- package/dist/adapter-agent-state.d.ts.map +1 -0
- package/dist/adapter-agent-state.js +163 -0
- package/dist/adapter-agent-state.js.map +1 -0
- package/dist/adapter-checkpoints.d.ts +1 -1
- package/dist/adapter-checkpoints.d.ts.map +1 -1
- package/dist/adapter-checkpoints.js +47 -27
- package/dist/adapter-checkpoints.js.map +1 -1
- package/dist/adapter-connection-events.d.ts +26 -0
- package/dist/adapter-connection-events.d.ts.map +1 -0
- package/dist/adapter-connection-events.js +126 -0
- package/dist/adapter-connection-events.js.map +1 -0
- package/dist/adapter-conversation-turns.d.ts +3 -1
- package/dist/adapter-conversation-turns.d.ts.map +1 -1
- package/dist/adapter-conversation-turns.js +99 -17
- package/dist/adapter-conversation-turns.js.map +1 -1
- package/dist/adapter-conversations.d.ts +11 -1
- package/dist/adapter-conversations.d.ts.map +1 -1
- package/dist/adapter-conversations.js +82 -15
- package/dist/adapter-conversations.js.map +1 -1
- package/dist/adapter-delivery.d.ts.map +1 -1
- package/dist/adapter-delivery.js +20 -12
- package/dist/adapter-delivery.js.map +1 -1
- package/dist/adapter-grants.d.ts +2 -0
- package/dist/adapter-grants.d.ts.map +1 -1
- package/dist/adapter-grants.js +18 -8
- package/dist/adapter-grants.js.map +1 -1
- package/dist/adapter-memory.d.ts +2 -0
- package/dist/adapter-memory.d.ts.map +1 -1
- package/dist/adapter-memory.js +23 -13
- package/dist/adapter-memory.js.map +1 -1
- package/dist/adapter-misc.d.ts +8 -0
- package/dist/adapter-misc.d.ts.map +1 -1
- package/dist/adapter-misc.js +80 -33
- package/dist/adapter-misc.js.map +1 -1
- package/dist/adapter-runs.d.ts.map +1 -1
- package/dist/adapter-runs.js +37 -23
- package/dist/adapter-runs.js.map +1 -1
- package/dist/adapter-sandbox.d.ts +2 -1
- package/dist/adapter-sandbox.d.ts.map +1 -1
- package/dist/adapter-sandbox.js +91 -19
- package/dist/adapter-sandbox.js.map +1 -1
- package/dist/adapter-settings.js +4 -4
- package/dist/adapter-settings.js.map +1 -1
- package/dist/adapter-timeline.d.ts +5 -0
- package/dist/adapter-timeline.d.ts.map +1 -0
- package/dist/adapter-timeline.js +86 -0
- package/dist/adapter-timeline.js.map +1 -0
- package/dist/adapter-usage.d.ts.map +1 -1
- package/dist/adapter-usage.js +7 -7
- package/dist/adapter-usage.js.map +1 -1
- package/dist/adapter-workspaces.d.ts +25 -0
- package/dist/adapter-workspaces.d.ts.map +1 -0
- package/dist/adapter-workspaces.js +486 -0
- package/dist/adapter-workspaces.js.map +1 -0
- package/dist/index.d.ts +90 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +150 -6
- package/dist/index.js.map +1 -1
- package/dist/learning-store.d.ts +32 -0
- package/dist/learning-store.d.ts.map +1 -0
- package/dist/learning-store.js +182 -0
- package/dist/learning-store.js.map +1 -0
- package/dist/migrations.d.ts +7 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +617 -150
- package/dist/migrations.js.map +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/provider.d.ts +1 -1
- package/dist/provider.js +7 -7
- package/dist/provider.js.map +1 -1
- package/dist/row-mappers.d.ts.map +1 -1
- package/dist/row-mappers.js +24 -3
- package/dist/row-mappers.js.map +1 -1
- package/dist/sql-helpers.d.ts +0 -1
- package/dist/sql-helpers.d.ts.map +1 -1
- package/dist/sql-helpers.js +11 -6
- package/dist/sql-helpers.js.map +1 -1
- package/dist/stores.d.ts +3 -1
- package/dist/stores.d.ts.map +1 -1
- package/dist/stores.js +72 -24
- package/dist/stores.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-timeline.js","sourceRoot":"","sources":["../src/adapter-timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-usage.d.ts","sourceRoot":"","sources":["../src/adapter-usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter-usage.d.ts","sourceRoot":"","sources":["../src/adapter-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEpG;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAK3F;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAY/F;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAgD7G"}
|
package/dist/adapter-usage.js
CHANGED
|
@@ -6,15 +6,15 @@ export async function recordUsage(client, input) {
|
|
|
6
6
|
}
|
|
7
7
|
export async function listUsage(client, runId) {
|
|
8
8
|
const result = runId
|
|
9
|
-
? await client.query("select * from
|
|
10
|
-
: await client.query("select * from
|
|
9
|
+
? await client.query("select * from assembly_line_usage_records where run_id=$1 order by occurred_at asc, id asc", [runId])
|
|
10
|
+
: await client.query("select * from assembly_line_usage_records order by occurred_at asc, id asc");
|
|
11
11
|
return result.rows.map(mapUsage);
|
|
12
12
|
}
|
|
13
13
|
export async function queryUsage(client, query) {
|
|
14
14
|
const built = usageWhere(query);
|
|
15
15
|
const limit = boundedLimit(query.limit);
|
|
16
16
|
built.params.push(limit);
|
|
17
|
-
const result = await client.query(`select * from
|
|
17
|
+
const result = await client.query(`select * from assembly_line_usage_records
|
|
18
18
|
${built.sql}
|
|
19
19
|
order by occurred_at desc, id desc
|
|
20
20
|
limit $${built.params.length}`, built.params);
|
|
@@ -43,7 +43,7 @@ export async function summarizeUsage(client, query) {
|
|
|
43
43
|
count(*) filter (where cost_source='unavailable')::text as unavailable_cost_records,
|
|
44
44
|
count(*) filter (where token_source='unavailable')::text as unreconciled_token_records,
|
|
45
45
|
count(*) filter (where cost_source='unavailable')::text as unreconciled_records
|
|
46
|
-
from
|
|
46
|
+
from assembly_line_usage_records
|
|
47
47
|
${built.sql}
|
|
48
48
|
${groupSql}
|
|
49
49
|
order by ${selections.length > 0 ? selections.map((selection) => `"${selection.alias}"`).join(", ") : "record_count desc"}`, built.params);
|
|
@@ -67,7 +67,7 @@ export async function summarizeUsage(client, query) {
|
|
|
67
67
|
}));
|
|
68
68
|
}
|
|
69
69
|
async function insertUsage(client, record) {
|
|
70
|
-
const result = await client.query(`insert into
|
|
70
|
+
const result = await client.query(`insert into assembly_line_usage_records
|
|
71
71
|
(id,idempotency_key,run_id,parent_run_id,agent_id,agent_revision,subagent,turn_id,iteration,
|
|
72
72
|
provider,provider_request_id,model,response_model,billing_mode,record_kind,
|
|
73
73
|
input_tokens,output_tokens,cached_tokens,cache_write_tokens,reasoning_tokens,
|
|
@@ -113,7 +113,7 @@ async function insertUsage(client, record) {
|
|
|
113
113
|
const inserted = result.rows[0];
|
|
114
114
|
if (inserted)
|
|
115
115
|
return mapUsage(inserted);
|
|
116
|
-
const existing = await client.query("select * from
|
|
116
|
+
const existing = await client.query("select * from assembly_line_usage_records where idempotency_key=$1 for update", [record.idempotencyKey]);
|
|
117
117
|
const row = existing.rows[0];
|
|
118
118
|
if (!row)
|
|
119
119
|
throw new UsageAccountingError(`Usage idempotency conflict did not return ${record.idempotencyKey}.`);
|
|
@@ -121,7 +121,7 @@ async function insertUsage(client, record) {
|
|
|
121
121
|
const reconciled = reconcileUsageRecord(current, usageRecordInput(record));
|
|
122
122
|
if (reconciled === current)
|
|
123
123
|
return current;
|
|
124
|
-
const updated = await client.query(`update
|
|
124
|
+
const updated = await client.query(`update assembly_line_usage_records
|
|
125
125
|
set input_tokens=$2,output_tokens=$3,cached_tokens=$4,cache_write_tokens=$5,reasoning_tokens=$6,
|
|
126
126
|
cost_usd=$7,cost_micros=$8,upstream_cost_micros=$9,
|
|
127
127
|
currency=$10,token_source=$11,cost_source=$12,provider_receipt=$13::jsonb,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-usage.js","sourceRoot":"","sources":["../src/adapter-usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter-usage.js","sourceRoot":"","sources":["../src/adapter-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Workspace, WorkspaceCheckpoint, WorkspaceCommitInput, WorkspaceCommitResult, WorkspaceSearchChunk, WorkspaceSearchIndex, WorkspaceSearchResult, WorkspaceStore, WorkspaceVersion, WorkspaceVersionDeleteResult } from "@assemblyline-agents/runtime";
|
|
2
|
+
import type { QueryClient } from "./client-types.js";
|
|
3
|
+
export declare function resolveWorkspace(client: QueryClient, input: Parameters<WorkspaceStore["resolveWorkspace"]>[0]): Promise<Workspace>;
|
|
4
|
+
export declare function getWorkspace(client: QueryClient, id: string): Promise<Workspace | undefined>;
|
|
5
|
+
export declare function listWorkspaces(client: QueryClient, input?: {
|
|
6
|
+
agentScope?: string;
|
|
7
|
+
}): Promise<Workspace[]>;
|
|
8
|
+
export declare function getWorkspaceVersion(client: QueryClient, id: string): Promise<WorkspaceVersion | undefined>;
|
|
9
|
+
export declare function listWorkspaceVersions(client: QueryClient, workspaceId: string, input?: {
|
|
10
|
+
limit?: number;
|
|
11
|
+
}): Promise<WorkspaceVersion[]>;
|
|
12
|
+
export declare function commitWorkspaceVersion(client: QueryClient, input: WorkspaceCommitInput): Promise<WorkspaceCommitResult>;
|
|
13
|
+
export declare function createWorkspaceCheckpoint(client: QueryClient, input: Parameters<WorkspaceStore["createWorkspaceCheckpoint"]>[0]): Promise<WorkspaceCheckpoint>;
|
|
14
|
+
export declare function getWorkspaceCheckpoint(client: QueryClient, workspaceId: string, name: string): Promise<WorkspaceCheckpoint | undefined>;
|
|
15
|
+
export declare function listWorkspaceCheckpoints(client: QueryClient, workspaceId: string): Promise<WorkspaceCheckpoint[]>;
|
|
16
|
+
export declare function deleteWorkspaceCheckpoint(client: QueryClient, workspaceId: string, name: string): Promise<boolean>;
|
|
17
|
+
export declare function forkWorkspace(client: QueryClient, input: Parameters<WorkspaceStore["forkWorkspace"]>[0]): Promise<Workspace>;
|
|
18
|
+
export declare function replaceWorkspaceSearchChunks(client: QueryClient, input: Parameters<WorkspaceStore["replaceWorkspaceSearchChunks"]>[0]): Promise<WorkspaceSearchIndex>;
|
|
19
|
+
export declare function getWorkspaceSearchIndex(client: QueryClient, workspaceId: string): Promise<WorkspaceSearchIndex | undefined>;
|
|
20
|
+
export declare function listWorkspaceSearchChunks(client: QueryClient, workspaceId: string, versionId: string): Promise<WorkspaceSearchChunk[]>;
|
|
21
|
+
export declare function searchWorkspaceChunks(client: QueryClient, input: Parameters<WorkspaceStore["searchWorkspaceChunks"]>[0]): Promise<WorkspaceSearchResult[]>;
|
|
22
|
+
export declare function searchWorkspaceEmbeddings(client: QueryClient, input: Parameters<WorkspaceStore["searchWorkspaceEmbeddings"]>[0]): Promise<WorkspaceSearchResult[]>;
|
|
23
|
+
export declare function deleteWorkspaceVersions(client: QueryClient, workspaceId: string, versionIds: string[]): Promise<WorkspaceVersionDeleteResult>;
|
|
24
|
+
export declare function repairWorkspaceHead(client: QueryClient, input: Parameters<WorkspaceStore["repairWorkspaceHead"]>[0]): Promise<Workspace>;
|
|
25
|
+
//# sourceMappingURL=adapter-workspaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-workspaces.d.ts","sourceRoot":"","sources":["../src/adapter-workspaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { WorkspaceConflictError } from "@assemblyline-agents/runtime";
|
|
3
|
+
import { normalizeJsonObject, postgresVectorLiteral, timestamp, toIso } from "./sql-helpers.js";
|
|
4
|
+
export async function resolveWorkspace(client, input) {
|
|
5
|
+
const now = timestamp();
|
|
6
|
+
const result = await client.query(`insert into assembly_line_workspaces
|
|
7
|
+
(id, scope_key, scope, name, metadata, created_at, updated_at)
|
|
8
|
+
values ($1,$2,$3::jsonb,$4,$5::jsonb,$6,$6)
|
|
9
|
+
on conflict (scope_key) do update set scope_key=excluded.scope_key
|
|
10
|
+
returning *`, [input.id ?? randomUUID(), input.scopeKey, JSON.stringify(input.scope), input.name ?? null, JSON.stringify(input.metadata ?? {}), now]);
|
|
11
|
+
const row = result.rows[0];
|
|
12
|
+
if (!row)
|
|
13
|
+
throw new Error(`Failed to resolve workspace: ${input.scopeKey}`);
|
|
14
|
+
const workspace = mapWorkspace(row);
|
|
15
|
+
if (workspace.scope.agentScope !== input.scope.agentScope)
|
|
16
|
+
throw new Error(`Workspace is outside the requested agent scope: ${workspace.id}`);
|
|
17
|
+
return workspace;
|
|
18
|
+
}
|
|
19
|
+
export async function getWorkspace(client, id) {
|
|
20
|
+
const result = await client.query("select * from assembly_line_workspaces where id=$1", [id]);
|
|
21
|
+
const row = result.rows[0];
|
|
22
|
+
return row ? mapWorkspace(row) : undefined;
|
|
23
|
+
}
|
|
24
|
+
export async function listWorkspaces(client, input = {}) {
|
|
25
|
+
const result = input.agentScope
|
|
26
|
+
? await client.query("select * from assembly_line_workspaces where scope->>'agentScope'=$1 order by updated_at desc", [input.agentScope])
|
|
27
|
+
: await client.query("select * from assembly_line_workspaces order by updated_at desc");
|
|
28
|
+
return result.rows.map(mapWorkspace);
|
|
29
|
+
}
|
|
30
|
+
export async function getWorkspaceVersion(client, id) {
|
|
31
|
+
const result = await client.query("select * from assembly_line_workspace_versions where id=$1", [id]);
|
|
32
|
+
const row = result.rows[0];
|
|
33
|
+
return row ? mapWorkspaceVersion(row) : undefined;
|
|
34
|
+
}
|
|
35
|
+
export async function listWorkspaceVersions(client, workspaceId, input = {}) {
|
|
36
|
+
const limit = Math.max(1, Math.min(100_000, Math.floor(input.limit ?? 100)));
|
|
37
|
+
const result = await client.query("select * from assembly_line_workspace_versions where workspace_id=$1 order by created_at desc limit $2", [workspaceId, limit]);
|
|
38
|
+
return result.rows.map(mapWorkspaceVersion);
|
|
39
|
+
}
|
|
40
|
+
export async function commitWorkspaceVersion(client, input) {
|
|
41
|
+
return withTransaction(client, async (tx) => {
|
|
42
|
+
const existingResult = await tx.query("select * from assembly_line_workspace_versions where idempotency_key=$1", [input.idempotencyKey]);
|
|
43
|
+
const existingRow = existingResult.rows[0];
|
|
44
|
+
if (existingRow) {
|
|
45
|
+
const version = mapWorkspaceVersion(existingRow);
|
|
46
|
+
if (version.workspaceId !== input.workspaceId) {
|
|
47
|
+
throw new Error(`Workspace version idempotency key belongs to another workspace: ${input.idempotencyKey}`);
|
|
48
|
+
}
|
|
49
|
+
const workspace = await requireWorkspace(tx, input.workspaceId);
|
|
50
|
+
return { workspace, version, created: false };
|
|
51
|
+
}
|
|
52
|
+
const locked = await tx.query("select * from assembly_line_workspaces where id=$1 for update", [input.workspaceId]);
|
|
53
|
+
const workspaceRow = locked.rows[0];
|
|
54
|
+
if (!workspaceRow)
|
|
55
|
+
throw new Error(`Workspace not found: ${input.workspaceId}`);
|
|
56
|
+
const workspace = mapWorkspace(workspaceRow);
|
|
57
|
+
const actualHeadVersionId = workspace.headVersionId ?? null;
|
|
58
|
+
if (actualHeadVersionId !== input.expectedHeadVersionId) {
|
|
59
|
+
throw new WorkspaceConflictError(workspace.id, input.expectedHeadVersionId, actualHeadVersionId);
|
|
60
|
+
}
|
|
61
|
+
const now = timestamp();
|
|
62
|
+
const versionId = randomUUID();
|
|
63
|
+
const versionResult = await tx.query(`insert into assembly_line_workspace_versions
|
|
64
|
+
(id, workspace_id, parent_version_id, source_version_id, source_checkpoint_id,
|
|
65
|
+
manifest_blob_key, manifest_sha256, file_count, total_bytes, reason, run_id,
|
|
66
|
+
idempotency_key, metadata, created_at)
|
|
67
|
+
values ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13::jsonb,$14)
|
|
68
|
+
returning *`, [
|
|
69
|
+
versionId,
|
|
70
|
+
workspace.id,
|
|
71
|
+
workspace.headVersionId ?? null,
|
|
72
|
+
input.sourceVersionId ?? null,
|
|
73
|
+
input.sourceCheckpointId ?? null,
|
|
74
|
+
input.manifestBlobKey,
|
|
75
|
+
input.manifestSha256,
|
|
76
|
+
input.fileCount,
|
|
77
|
+
input.totalBytes,
|
|
78
|
+
input.reason,
|
|
79
|
+
input.runId ?? null,
|
|
80
|
+
input.idempotencyKey,
|
|
81
|
+
JSON.stringify(input.metadata ?? {}),
|
|
82
|
+
now
|
|
83
|
+
]);
|
|
84
|
+
const updatedResult = await tx.query("update assembly_line_workspaces set head_version_id=$2, updated_at=$3 where id=$1 returning *", [workspace.id, versionId, now]);
|
|
85
|
+
const versionRow = versionResult.rows[0];
|
|
86
|
+
const updatedRow = updatedResult.rows[0];
|
|
87
|
+
if (!versionRow || !updatedRow)
|
|
88
|
+
throw new Error(`Failed to commit workspace version: ${workspace.id}`);
|
|
89
|
+
return { workspace: mapWorkspace(updatedRow), version: mapWorkspaceVersion(versionRow), created: true };
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export async function createWorkspaceCheckpoint(client, input) {
|
|
93
|
+
const version = await getWorkspaceVersion(client, input.versionId);
|
|
94
|
+
if (!version || version.workspaceId !== input.workspaceId) {
|
|
95
|
+
throw new Error(`Workspace version does not belong to workspace: ${input.versionId}`);
|
|
96
|
+
}
|
|
97
|
+
const now = timestamp();
|
|
98
|
+
if (input.replace) {
|
|
99
|
+
const result = await client.query(`insert into assembly_line_workspace_checkpoints
|
|
100
|
+
(id, workspace_id, name, version_id, created_at, updated_at)
|
|
101
|
+
values ($1,$2,$3,$4,$5,$5)
|
|
102
|
+
on conflict (workspace_id, name) do update set version_id=excluded.version_id, updated_at=excluded.updated_at
|
|
103
|
+
returning *`, [randomUUID(), input.workspaceId, input.name, input.versionId, now]);
|
|
104
|
+
const row = result.rows[0];
|
|
105
|
+
if (!row)
|
|
106
|
+
throw new Error(`Failed to create workspace checkpoint: ${input.name}`);
|
|
107
|
+
return mapWorkspaceCheckpoint(row);
|
|
108
|
+
}
|
|
109
|
+
const result = await client.query(`insert into assembly_line_workspace_checkpoints
|
|
110
|
+
(id, workspace_id, name, version_id, created_at, updated_at)
|
|
111
|
+
values ($1,$2,$3,$4,$5,$5)
|
|
112
|
+
on conflict (workspace_id, name) do nothing
|
|
113
|
+
returning *`, [randomUUID(), input.workspaceId, input.name, input.versionId, now]);
|
|
114
|
+
const row = result.rows[0];
|
|
115
|
+
if (!row)
|
|
116
|
+
throw new Error(`Workspace checkpoint already exists: ${input.name}`);
|
|
117
|
+
return mapWorkspaceCheckpoint(row);
|
|
118
|
+
}
|
|
119
|
+
export async function getWorkspaceCheckpoint(client, workspaceId, name) {
|
|
120
|
+
const result = await client.query("select * from assembly_line_workspace_checkpoints where workspace_id=$1 and name=$2", [workspaceId, name]);
|
|
121
|
+
const row = result.rows[0];
|
|
122
|
+
return row ? mapWorkspaceCheckpoint(row) : undefined;
|
|
123
|
+
}
|
|
124
|
+
export async function listWorkspaceCheckpoints(client, workspaceId) {
|
|
125
|
+
const result = await client.query("select * from assembly_line_workspace_checkpoints where workspace_id=$1 order by name asc", [workspaceId]);
|
|
126
|
+
return result.rows.map(mapWorkspaceCheckpoint);
|
|
127
|
+
}
|
|
128
|
+
export async function deleteWorkspaceCheckpoint(client, workspaceId, name) {
|
|
129
|
+
const result = await client.query("delete from assembly_line_workspace_checkpoints where workspace_id=$1 and name=$2 returning id", [workspaceId, name]);
|
|
130
|
+
return result.rows.length > 0;
|
|
131
|
+
}
|
|
132
|
+
export async function forkWorkspace(client, input) {
|
|
133
|
+
return withTransaction(client, async (tx) => {
|
|
134
|
+
const sourceWorkspace = await requireWorkspace(tx, input.sourceWorkspaceId);
|
|
135
|
+
const sourceVersion = await requireVersion(tx, input.sourceVersionId);
|
|
136
|
+
if (sourceVersion.workspaceId !== sourceWorkspace.id) {
|
|
137
|
+
throw new Error(`Workspace version does not belong to source workspace: ${sourceVersion.id}`);
|
|
138
|
+
}
|
|
139
|
+
const existingResult = input.id
|
|
140
|
+
? await tx.query("select * from assembly_line_workspaces where id=$1", [input.id])
|
|
141
|
+
: await tx.query("select * from assembly_line_workspaces where scope_key=$1", [input.scopeKey]);
|
|
142
|
+
const existingRow = existingResult.rows[0];
|
|
143
|
+
if (existingRow)
|
|
144
|
+
return assertMatchingFork(mapWorkspace(existingRow), input);
|
|
145
|
+
const now = timestamp();
|
|
146
|
+
const workspaceId = input.id ?? randomUUID();
|
|
147
|
+
await tx.query(`insert into assembly_line_workspaces
|
|
148
|
+
(id, scope_key, scope, source_workspace_id, source_version_id, name, metadata, created_at, updated_at)
|
|
149
|
+
values ($1,$2,$3::jsonb,$4,$5,$6,$7::jsonb,$8,$8)`, [
|
|
150
|
+
workspaceId,
|
|
151
|
+
input.scopeKey,
|
|
152
|
+
JSON.stringify(input.scope),
|
|
153
|
+
sourceWorkspace.id,
|
|
154
|
+
sourceVersion.id,
|
|
155
|
+
input.name ?? null,
|
|
156
|
+
JSON.stringify(input.metadata ?? {}),
|
|
157
|
+
now
|
|
158
|
+
]);
|
|
159
|
+
const forkVersionId = randomUUID();
|
|
160
|
+
await tx.query(`insert into assembly_line_workspace_versions
|
|
161
|
+
(id, workspace_id, source_version_id, manifest_blob_key, manifest_sha256,
|
|
162
|
+
file_count, total_bytes, reason, idempotency_key, metadata, created_at)
|
|
163
|
+
values ($1,$2,$3,$4,$5,$6,$7,'fork',$8,$9::jsonb,$10)`, [
|
|
164
|
+
forkVersionId,
|
|
165
|
+
workspaceId,
|
|
166
|
+
sourceVersion.id,
|
|
167
|
+
sourceVersion.manifestBlobKey,
|
|
168
|
+
sourceVersion.manifestSha256,
|
|
169
|
+
sourceVersion.fileCount,
|
|
170
|
+
sourceVersion.totalBytes,
|
|
171
|
+
`workspace-fork:${workspaceId}:${sourceVersion.id}`,
|
|
172
|
+
JSON.stringify({ sourceWorkspaceId: sourceWorkspace.id }),
|
|
173
|
+
now
|
|
174
|
+
]);
|
|
175
|
+
const result = await tx.query("update assembly_line_workspaces set head_version_id=$2 where id=$1 returning *", [workspaceId, forkVersionId]);
|
|
176
|
+
const row = result.rows[0];
|
|
177
|
+
if (!row)
|
|
178
|
+
throw new Error(`Failed to fork workspace: ${sourceWorkspace.id}`);
|
|
179
|
+
return mapWorkspace(row);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
export async function replaceWorkspaceSearchChunks(client, input) {
|
|
183
|
+
return withTransaction(client, async (tx) => {
|
|
184
|
+
const version = await requireVersion(tx, input.versionId);
|
|
185
|
+
if (version.workspaceId !== input.workspaceId)
|
|
186
|
+
throw new Error(`Workspace version does not belong to workspace: ${version.id}`);
|
|
187
|
+
const workspaceResult = await tx.query("select head_version_id from assembly_line_workspaces where id=$1 for update", [input.workspaceId]);
|
|
188
|
+
const workspaceRow = workspaceResult.rows[0];
|
|
189
|
+
if (!workspaceRow)
|
|
190
|
+
throw new Error(`Workspace not found: ${input.workspaceId}`);
|
|
191
|
+
const isCurrentHead = workspaceRow.head_version_id === input.versionId;
|
|
192
|
+
await tx.query("delete from assembly_line_workspace_search_chunks where workspace_id=$1 and version_id=$2", [input.workspaceId, input.versionId]);
|
|
193
|
+
for (const chunk of input.chunks) {
|
|
194
|
+
await tx.query(`insert into assembly_line_workspace_search_chunks
|
|
195
|
+
(id, workspace_id, version_id, path, start_line, end_line, content, content_sha256,
|
|
196
|
+
content_type, embedding, embedding_model, metadata, created_at)
|
|
197
|
+
values ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10::jsonb,$11,$12::jsonb,$13)`, [
|
|
198
|
+
chunk.id,
|
|
199
|
+
input.workspaceId,
|
|
200
|
+
input.versionId,
|
|
201
|
+
chunk.path,
|
|
202
|
+
chunk.startLine,
|
|
203
|
+
chunk.endLine,
|
|
204
|
+
chunk.content,
|
|
205
|
+
chunk.contentSha256,
|
|
206
|
+
chunk.contentType,
|
|
207
|
+
chunk.embedding ? JSON.stringify(chunk.embedding) : null,
|
|
208
|
+
chunk.embeddingModel ?? null,
|
|
209
|
+
JSON.stringify(chunk.metadata),
|
|
210
|
+
chunk.createdAt
|
|
211
|
+
]);
|
|
212
|
+
if (chunk.embedding && chunk.embeddingModel) {
|
|
213
|
+
await tx.query(`insert into assembly_line_workspace_search_embeddings
|
|
214
|
+
(chunk_id, workspace_id, version_id, model, dimensions, embedding, created_at)
|
|
215
|
+
values ($1,$2,$3,$4,$5,$6::vector,$7)
|
|
216
|
+
on conflict (chunk_id) do update set
|
|
217
|
+
model=excluded.model,
|
|
218
|
+
dimensions=excluded.dimensions,
|
|
219
|
+
embedding=excluded.embedding,
|
|
220
|
+
created_at=excluded.created_at`, [
|
|
221
|
+
chunk.id,
|
|
222
|
+
input.workspaceId,
|
|
223
|
+
input.versionId,
|
|
224
|
+
chunk.embeddingModel,
|
|
225
|
+
chunk.embedding.length,
|
|
226
|
+
postgresVectorLiteral(chunk.embedding),
|
|
227
|
+
chunk.createdAt
|
|
228
|
+
]);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
const indexedAt = timestamp();
|
|
232
|
+
const result = isCurrentHead ? await tx.query(`insert into assembly_line_workspace_search_indexes
|
|
233
|
+
(workspace_id, version_id, chunk_count, embedding_model, indexed_at)
|
|
234
|
+
values ($1,$2,$3,$4,$5)
|
|
235
|
+
on conflict (workspace_id) do update set
|
|
236
|
+
version_id=excluded.version_id,
|
|
237
|
+
chunk_count=excluded.chunk_count,
|
|
238
|
+
embedding_model=excluded.embedding_model,
|
|
239
|
+
indexed_at=excluded.indexed_at
|
|
240
|
+
returning *`, [input.workspaceId, input.versionId, input.chunks.length, input.embeddingModel ?? null, indexedAt]) : { rows: [] };
|
|
241
|
+
return result.rows[0] ? mapWorkspaceSearchIndex(result.rows[0]) : {
|
|
242
|
+
workspaceId: input.workspaceId,
|
|
243
|
+
versionId: input.versionId,
|
|
244
|
+
chunkCount: input.chunks.length,
|
|
245
|
+
indexedAt,
|
|
246
|
+
...(input.embeddingModel ? { embeddingModel: input.embeddingModel } : {})
|
|
247
|
+
};
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
export async function getWorkspaceSearchIndex(client, workspaceId) {
|
|
251
|
+
const result = await client.query("select * from assembly_line_workspace_search_indexes where workspace_id=$1", [workspaceId]);
|
|
252
|
+
return result.rows[0] ? mapWorkspaceSearchIndex(result.rows[0]) : undefined;
|
|
253
|
+
}
|
|
254
|
+
export async function listWorkspaceSearchChunks(client, workspaceId, versionId) {
|
|
255
|
+
const result = await client.query(`select * from assembly_line_workspace_search_chunks
|
|
256
|
+
where workspace_id=$1 and version_id=$2
|
|
257
|
+
order by path asc, start_line asc`, [workspaceId, versionId]);
|
|
258
|
+
return result.rows.map(mapWorkspaceSearchChunk);
|
|
259
|
+
}
|
|
260
|
+
export async function searchWorkspaceChunks(client, input) {
|
|
261
|
+
const limit = Math.max(1, Math.min(100, Math.floor(input.limit ?? 8)));
|
|
262
|
+
const result = await client.query(`select *, ts_rank_cd(search_vector, websearch_to_tsquery('simple', $3)) as rank
|
|
263
|
+
from assembly_line_workspace_search_chunks
|
|
264
|
+
where workspace_id=$1
|
|
265
|
+
and version_id=$2
|
|
266
|
+
and search_vector @@ websearch_to_tsquery('simple', $3)
|
|
267
|
+
order by rank desc, path asc, start_line asc
|
|
268
|
+
limit $4`, [input.workspaceId, input.versionId, input.query, limit]);
|
|
269
|
+
return result.rows.map((row) => ({
|
|
270
|
+
path: String(row.path),
|
|
271
|
+
versionId: String(row.version_id),
|
|
272
|
+
startLine: Number(row.start_line),
|
|
273
|
+
endLine: Number(row.end_line),
|
|
274
|
+
snippet: String(row.content),
|
|
275
|
+
score: Number(row.rank ?? 0),
|
|
276
|
+
rankingSource: "full_text"
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
279
|
+
export async function searchWorkspaceEmbeddings(client, input) {
|
|
280
|
+
const limit = Math.max(1, Math.min(100, Math.floor(input.limit ?? 8)));
|
|
281
|
+
const result = await client.query(`select c.*, (e.embedding <=> $4::vector) as distance
|
|
282
|
+
from assembly_line_workspace_search_embeddings e
|
|
283
|
+
join assembly_line_workspace_search_chunks c on c.id=e.chunk_id
|
|
284
|
+
where e.workspace_id=$1
|
|
285
|
+
and e.version_id=$2
|
|
286
|
+
and e.model=$3
|
|
287
|
+
order by distance asc, c.path asc, c.start_line asc
|
|
288
|
+
limit $5`, [input.workspaceId, input.versionId, input.model, postgresVectorLiteral(input.embedding), limit]);
|
|
289
|
+
return result.rows.map((row) => ({
|
|
290
|
+
path: String(row.path),
|
|
291
|
+
versionId: String(row.version_id),
|
|
292
|
+
startLine: Number(row.start_line),
|
|
293
|
+
endLine: Number(row.end_line),
|
|
294
|
+
snippet: String(row.content),
|
|
295
|
+
score: Math.max(0, 1 - Number(row.distance ?? 1)),
|
|
296
|
+
rankingSource: "semantic"
|
|
297
|
+
}));
|
|
298
|
+
}
|
|
299
|
+
export async function deleteWorkspaceVersions(client, workspaceId, versionIds) {
|
|
300
|
+
const requestedVersionIds = [...new Set(versionIds)].sort();
|
|
301
|
+
if (requestedVersionIds.length === 0)
|
|
302
|
+
return { workspaceId, requestedVersionIds, deletedVersionIds: [] };
|
|
303
|
+
const result = await client.query(`delete from assembly_line_workspace_versions v
|
|
304
|
+
using assembly_line_workspaces owner
|
|
305
|
+
where owner.id=$1
|
|
306
|
+
and v.workspace_id=owner.id
|
|
307
|
+
and v.id=any($2::text[])
|
|
308
|
+
and v.id is distinct from owner.head_version_id
|
|
309
|
+
and not exists (
|
|
310
|
+
select 1 from assembly_line_workspace_checkpoints c where c.version_id=v.id
|
|
311
|
+
)
|
|
312
|
+
and not exists (
|
|
313
|
+
select 1 from assembly_line_workspaces fork
|
|
314
|
+
where fork.source_workspace_id=$1 and fork.source_version_id=v.id
|
|
315
|
+
)
|
|
316
|
+
returning v.id`, [workspaceId, requestedVersionIds]);
|
|
317
|
+
return {
|
|
318
|
+
workspaceId,
|
|
319
|
+
requestedVersionIds,
|
|
320
|
+
deletedVersionIds: result.rows.map((row) => String(row.id)).sort()
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
export async function repairWorkspaceHead(client, input) {
|
|
324
|
+
return withTransaction(client, async (tx) => {
|
|
325
|
+
const locked = await tx.query("select * from assembly_line_workspaces where id=$1 for update", [input.workspaceId]);
|
|
326
|
+
const row = locked.rows[0];
|
|
327
|
+
if (!row)
|
|
328
|
+
throw new Error(`Workspace not found: ${input.workspaceId}`);
|
|
329
|
+
const workspace = mapWorkspace(row);
|
|
330
|
+
const actualHeadVersionId = workspace.headVersionId ?? null;
|
|
331
|
+
if (actualHeadVersionId !== input.expectedHeadVersionId) {
|
|
332
|
+
throw new WorkspaceConflictError(workspace.id, input.expectedHeadVersionId, actualHeadVersionId);
|
|
333
|
+
}
|
|
334
|
+
const target = await requireVersion(tx, input.targetVersionId);
|
|
335
|
+
if (target.workspaceId !== workspace.id)
|
|
336
|
+
throw new Error(`Workspace version does not belong to workspace: ${target.id}`);
|
|
337
|
+
const result = await tx.query("update assembly_line_workspaces set head_version_id=$2, updated_at=$3 where id=$1 returning *", [workspace.id, target.id, timestamp()]);
|
|
338
|
+
const updated = result.rows[0];
|
|
339
|
+
if (!updated)
|
|
340
|
+
throw new Error(`Failed to repair workspace head: ${workspace.id}`);
|
|
341
|
+
return mapWorkspace(updated);
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
function mapWorkspace(row) {
|
|
345
|
+
const workspace = {
|
|
346
|
+
id: String(row.id),
|
|
347
|
+
scopeKey: String(row.scope_key),
|
|
348
|
+
scope: normalizeJsonObject(row.scope),
|
|
349
|
+
metadata: normalizeJsonObject(row.metadata),
|
|
350
|
+
createdAt: toIso(row.created_at),
|
|
351
|
+
updatedAt: toIso(row.updated_at)
|
|
352
|
+
};
|
|
353
|
+
if (row.head_version_id)
|
|
354
|
+
workspace.headVersionId = String(row.head_version_id);
|
|
355
|
+
if (row.source_workspace_id)
|
|
356
|
+
workspace.sourceWorkspaceId = String(row.source_workspace_id);
|
|
357
|
+
if (row.source_version_id)
|
|
358
|
+
workspace.sourceVersionId = String(row.source_version_id);
|
|
359
|
+
if (row.name)
|
|
360
|
+
workspace.name = String(row.name);
|
|
361
|
+
return workspace;
|
|
362
|
+
}
|
|
363
|
+
function mapWorkspaceSearchChunk(row) {
|
|
364
|
+
const chunk = {
|
|
365
|
+
id: String(row.id),
|
|
366
|
+
workspaceId: String(row.workspace_id),
|
|
367
|
+
versionId: String(row.version_id),
|
|
368
|
+
path: String(row.path),
|
|
369
|
+
startLine: Number(row.start_line),
|
|
370
|
+
endLine: Number(row.end_line),
|
|
371
|
+
content: String(row.content),
|
|
372
|
+
contentSha256: String(row.content_sha256),
|
|
373
|
+
contentType: String(row.content_type),
|
|
374
|
+
metadata: normalizeJsonObject(row.metadata),
|
|
375
|
+
createdAt: toIso(row.created_at)
|
|
376
|
+
};
|
|
377
|
+
const embedding = numberArray(row.embedding);
|
|
378
|
+
if (embedding)
|
|
379
|
+
chunk.embedding = embedding;
|
|
380
|
+
if (row.embedding_model)
|
|
381
|
+
chunk.embeddingModel = String(row.embedding_model);
|
|
382
|
+
return chunk;
|
|
383
|
+
}
|
|
384
|
+
function mapWorkspaceSearchIndex(row) {
|
|
385
|
+
return {
|
|
386
|
+
workspaceId: String(row.workspace_id),
|
|
387
|
+
versionId: String(row.version_id),
|
|
388
|
+
chunkCount: Number(row.chunk_count),
|
|
389
|
+
indexedAt: toIso(row.indexed_at),
|
|
390
|
+
...(row.embedding_model ? { embeddingModel: String(row.embedding_model) } : {})
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
function numberArray(value) {
|
|
394
|
+
let parsed = value;
|
|
395
|
+
if (typeof value === "string") {
|
|
396
|
+
try {
|
|
397
|
+
parsed = JSON.parse(value);
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (!Array.isArray(parsed) || !parsed.every((item) => typeof item === "number" && Number.isFinite(item))) {
|
|
404
|
+
return undefined;
|
|
405
|
+
}
|
|
406
|
+
return parsed.map(Number);
|
|
407
|
+
}
|
|
408
|
+
function mapWorkspaceVersion(row) {
|
|
409
|
+
const version = {
|
|
410
|
+
id: String(row.id),
|
|
411
|
+
workspaceId: String(row.workspace_id),
|
|
412
|
+
manifestBlobKey: String(row.manifest_blob_key),
|
|
413
|
+
manifestSha256: String(row.manifest_sha256),
|
|
414
|
+
fileCount: Number(row.file_count),
|
|
415
|
+
totalBytes: Number(row.total_bytes),
|
|
416
|
+
reason: String(row.reason),
|
|
417
|
+
idempotencyKey: String(row.idempotency_key),
|
|
418
|
+
metadata: normalizeJsonObject(row.metadata),
|
|
419
|
+
createdAt: toIso(row.created_at)
|
|
420
|
+
};
|
|
421
|
+
if (row.parent_version_id)
|
|
422
|
+
version.parentVersionId = String(row.parent_version_id);
|
|
423
|
+
if (row.source_version_id)
|
|
424
|
+
version.sourceVersionId = String(row.source_version_id);
|
|
425
|
+
if (row.source_checkpoint_id)
|
|
426
|
+
version.sourceCheckpointId = String(row.source_checkpoint_id);
|
|
427
|
+
if (row.run_id)
|
|
428
|
+
version.runId = String(row.run_id);
|
|
429
|
+
return version;
|
|
430
|
+
}
|
|
431
|
+
function mapWorkspaceCheckpoint(row) {
|
|
432
|
+
return {
|
|
433
|
+
id: String(row.id),
|
|
434
|
+
workspaceId: String(row.workspace_id),
|
|
435
|
+
name: String(row.name),
|
|
436
|
+
versionId: String(row.version_id),
|
|
437
|
+
createdAt: toIso(row.created_at),
|
|
438
|
+
updatedAt: toIso(row.updated_at)
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
async function requireWorkspace(client, id) {
|
|
442
|
+
const workspace = await getWorkspace(client, id);
|
|
443
|
+
if (!workspace)
|
|
444
|
+
throw new Error(`Workspace not found: ${id}`);
|
|
445
|
+
return workspace;
|
|
446
|
+
}
|
|
447
|
+
async function requireVersion(client, id) {
|
|
448
|
+
const version = await getWorkspaceVersion(client, id);
|
|
449
|
+
if (!version)
|
|
450
|
+
throw new Error(`Workspace version not found: ${id}`);
|
|
451
|
+
return version;
|
|
452
|
+
}
|
|
453
|
+
function assertMatchingFork(workspace, input) {
|
|
454
|
+
if (workspace.scopeKey !== input.scopeKey ||
|
|
455
|
+
workspace.scope.agentScope !== input.scope.agentScope ||
|
|
456
|
+
workspace.scope.tenantId !== input.scope.tenantId ||
|
|
457
|
+
workspace.sourceWorkspaceId !== input.sourceWorkspaceId ||
|
|
458
|
+
workspace.sourceVersionId !== input.sourceVersionId) {
|
|
459
|
+
throw new Error(`Workspace fork identity is already in use: ${workspace.id}`);
|
|
460
|
+
}
|
|
461
|
+
return workspace;
|
|
462
|
+
}
|
|
463
|
+
async function withTransaction(client, operation) {
|
|
464
|
+
const pool = client;
|
|
465
|
+
const pinned = typeof pool.connect === "function" ? await pool.connect() : undefined;
|
|
466
|
+
const tx = pinned ?? client;
|
|
467
|
+
try {
|
|
468
|
+
await tx.query("begin");
|
|
469
|
+
const result = await operation(tx);
|
|
470
|
+
await tx.query("commit");
|
|
471
|
+
return result;
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
try {
|
|
475
|
+
await tx.query("rollback");
|
|
476
|
+
}
|
|
477
|
+
catch {
|
|
478
|
+
// Preserve the original failure.
|
|
479
|
+
}
|
|
480
|
+
throw error;
|
|
481
|
+
}
|
|
482
|
+
finally {
|
|
483
|
+
pinned?.release();
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
//# sourceMappingURL=adapter-workspaces.js.map
|