@assemblyline-agents/postgres 2.0.0 → 3.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 (82) hide show
  1. package/LICENSE +1 -1
  2. package/dist/adapter-agent-state.d.ts.map +1 -1
  3. package/dist/adapter-agent-state.js +51 -39
  4. package/dist/adapter-agent-state.js.map +1 -1
  5. package/dist/adapter-checkpoints.d.ts +1 -1
  6. package/dist/adapter-checkpoints.d.ts.map +1 -1
  7. package/dist/adapter-checkpoints.js +47 -27
  8. package/dist/adapter-checkpoints.js.map +1 -1
  9. package/dist/adapter-connection-events.d.ts +26 -0
  10. package/dist/adapter-connection-events.d.ts.map +1 -0
  11. package/dist/adapter-connection-events.js +126 -0
  12. package/dist/adapter-connection-events.js.map +1 -0
  13. package/dist/adapter-conversation-turns.d.ts +3 -1
  14. package/dist/adapter-conversation-turns.d.ts.map +1 -1
  15. package/dist/adapter-conversation-turns.js +99 -17
  16. package/dist/adapter-conversation-turns.js.map +1 -1
  17. package/dist/adapter-conversations.d.ts +11 -1
  18. package/dist/adapter-conversations.d.ts.map +1 -1
  19. package/dist/adapter-conversations.js +82 -15
  20. package/dist/adapter-conversations.js.map +1 -1
  21. package/dist/adapter-delivery.d.ts.map +1 -1
  22. package/dist/adapter-delivery.js +20 -12
  23. package/dist/adapter-delivery.js.map +1 -1
  24. package/dist/adapter-grants.d.ts +1 -0
  25. package/dist/adapter-grants.d.ts.map +1 -1
  26. package/dist/adapter-grants.js +15 -9
  27. package/dist/adapter-grants.js.map +1 -1
  28. package/dist/adapter-memory.d.ts +2 -0
  29. package/dist/adapter-memory.d.ts.map +1 -1
  30. package/dist/adapter-memory.js +23 -13
  31. package/dist/adapter-memory.js.map +1 -1
  32. package/dist/adapter-misc.d.ts +8 -0
  33. package/dist/adapter-misc.d.ts.map +1 -1
  34. package/dist/adapter-misc.js +80 -33
  35. package/dist/adapter-misc.js.map +1 -1
  36. package/dist/adapter-runs.d.ts.map +1 -1
  37. package/dist/adapter-runs.js +37 -23
  38. package/dist/adapter-runs.js.map +1 -1
  39. package/dist/adapter-sandbox.d.ts +2 -1
  40. package/dist/adapter-sandbox.d.ts.map +1 -1
  41. package/dist/adapter-sandbox.js +91 -19
  42. package/dist/adapter-sandbox.js.map +1 -1
  43. package/dist/adapter-settings.js +4 -4
  44. package/dist/adapter-settings.js.map +1 -1
  45. package/dist/adapter-timeline.d.ts +5 -0
  46. package/dist/adapter-timeline.d.ts.map +1 -0
  47. package/dist/adapter-timeline.js +86 -0
  48. package/dist/adapter-timeline.js.map +1 -0
  49. package/dist/adapter-usage.d.ts.map +1 -1
  50. package/dist/adapter-usage.js +7 -7
  51. package/dist/adapter-usage.js.map +1 -1
  52. package/dist/adapter-workspaces.d.ts +25 -0
  53. package/dist/adapter-workspaces.d.ts.map +1 -0
  54. package/dist/adapter-workspaces.js +486 -0
  55. package/dist/adapter-workspaces.js.map +1 -0
  56. package/dist/index.d.ts +76 -2
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +127 -6
  59. package/dist/index.js.map +1 -1
  60. package/dist/learning-store.js +16 -16
  61. package/dist/learning-store.js.map +1 -1
  62. package/dist/migrations.d.ts +7 -1
  63. package/dist/migrations.d.ts.map +1 -1
  64. package/dist/migrations.js +537 -168
  65. package/dist/migrations.js.map +1 -1
  66. package/dist/presets.d.ts +1 -1
  67. package/dist/presets.d.ts.map +1 -1
  68. package/dist/provider.d.ts +1 -1
  69. package/dist/provider.js +7 -7
  70. package/dist/provider.js.map +1 -1
  71. package/dist/row-mappers.d.ts.map +1 -1
  72. package/dist/row-mappers.js +8 -0
  73. package/dist/row-mappers.js.map +1 -1
  74. package/dist/sql-helpers.d.ts +0 -1
  75. package/dist/sql-helpers.d.ts.map +1 -1
  76. package/dist/sql-helpers.js +11 -6
  77. package/dist/sql-helpers.js.map +1 -1
  78. package/dist/stores.d.ts +3 -1
  79. package/dist/stores.d.ts.map +1 -1
  80. package/dist/stores.js +62 -20
  81. package/dist/stores.js.map +1 -1
  82. package/package.json +3 -3
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 OpenEve contributors
3
+ Copyright (c) 2026 Assembly Line contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-agent-state.d.ts","sourceRoot":"","sources":["../src/adapter-agent-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB7G;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAqD7B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,KAAK,SAAS,EACrD,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CA2B7B"}
1
+ {"version":3,"file":"adapter-agent-state.d.ts","sourceRoot":"","sources":["../src/adapter-agent-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB7G;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAwD7B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,KAAK,SAAS,EACrD,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
@@ -2,8 +2,8 @@ import { timestamp, toIso } from "./sql-helpers.js";
2
2
  export async function readAgentState(client, scope) {
3
3
  const result = await client.query(`select scopes.revision,
4
4
  coalesce(jsonb_object_agg(state.key, state.value) filter (where state.key is not null), '{}'::jsonb) as values
5
- from openeve_agent_state_scopes scopes
6
- left join openeve_agent_state state
5
+ from assembly_line_agent_state_scopes scopes
6
+ left join assembly_line_agent_state state
7
7
  on state.agent_scope=scopes.agent_scope and state.conversation_id=scopes.conversation_id
8
8
  where scopes.agent_scope=$1 and scopes.conversation_id=$2
9
9
  group by scopes.revision`, [scope.agentScope, scope.conversationId]);
@@ -17,41 +17,44 @@ export async function readAgentState(client, scope) {
17
17
  };
18
18
  }
19
19
  export async function getAgentState(client, scope, key) {
20
- const result = await client.query("select * from openeve_agent_state where agent_scope=$1 and conversation_id=$2 and key=$3", [scope.agentScope, scope.conversationId, key]);
20
+ const result = await client.query("select * from assembly_line_agent_state where agent_scope=$1 and conversation_id=$2 and key=$3", [scope.agentScope, scope.conversationId, key]);
21
21
  const row = result.rows[0];
22
22
  return row ? mapAgentStateRecord(row) : undefined;
23
23
  }
24
24
  export async function setAgentState(client, scope, key, value, options = {}) {
25
- validateValue(key, value);
25
+ const serialized = validateValue(key, value);
26
26
  const now = timestamp();
27
27
  await ensureScope(client, scope, now);
28
28
  const expected = options.expectedRevision ?? null;
29
+ // Changed-detection compares the stored JSON.stringify text (value_text),
30
+ // not jsonb equality: jsonb ignores key order and numeric formatting, so
31
+ // {changed, revision} would diverge from the in-memory/file stores.
29
32
  const result = await client.query(`with scope_current as (
30
- select revision from openeve_agent_state_scopes
33
+ select revision from assembly_line_agent_state_scopes
31
34
  where agent_scope=$1 and conversation_id=$2
32
35
  ), current_value as (
33
- select value from openeve_agent_state
36
+ select value_text from assembly_line_agent_state
34
37
  where agent_scope=$1 and conversation_id=$2 and key=$3
35
38
  ), bumped as (
36
- update openeve_agent_state_scopes
39
+ update assembly_line_agent_state_scopes
37
40
  set revision=revision + 1, updated_at=$5
38
41
  where agent_scope=$1 and conversation_id=$2
39
42
  and ($6::bigint is null or revision=$6)
40
- and not exists (select 1 from current_value where value=$4::jsonb)
43
+ and not exists (select 1 from current_value where value_text=$4)
41
44
  returning revision
42
45
  ), written as (
43
- insert into openeve_agent_state
44
- (agent_scope, conversation_id, key, value, revision, created_at, updated_at)
45
- select $1,$2,$3,$4::jsonb,bumped.revision,$5,$5 from bumped
46
+ insert into assembly_line_agent_state
47
+ (agent_scope, conversation_id, key, value, value_text, revision, created_at, updated_at)
48
+ select $1,$2,$3,$4::jsonb,$4,bumped.revision,$5,$5 from bumped
46
49
  on conflict (agent_scope, conversation_id, key) do update set
47
- value=excluded.value, revision=excluded.revision, updated_at=excluded.updated_at
50
+ value=excluded.value, value_text=excluded.value_text, revision=excluded.revision, updated_at=excluded.updated_at
48
51
  returning *
49
52
  )
50
53
  select
51
54
  (select revision from scope_current) as current_revision,
52
55
  (select revision from bumped) as new_revision,
53
- exists(select 1 from current_value where value=$4::jsonb) as unchanged,
54
- (select row_to_json(written) from written) as record`, [scope.agentScope, scope.conversationId, key, JSON.stringify(value), now, expected]);
56
+ exists(select 1 from current_value where value_text=$4) as unchanged,
57
+ (select row_to_json(written) from written) as record`, [scope.agentScope, scope.conversationId, key, serialized, now, expected]);
55
58
  const row = result.rows[0] ?? {};
56
59
  const currentRevision = Number(row.current_revision ?? 0);
57
60
  if (options.expectedRevision !== undefined && options.expectedRevision !== currentRevision) {
@@ -91,34 +94,42 @@ export async function updateAgentState(client, scope, key, update, options = {})
91
94
  throw new Error("Agent state update exhausted its compare-and-set retry budget.");
92
95
  }
93
96
  export async function deleteAgentState(client, scope, key, options = {}) {
94
- const now = timestamp();
95
- await ensureScope(client, scope, now);
96
- const current = await readAgentState(client, scope);
97
- if (options.expectedRevision !== undefined && options.expectedRevision !== current.revision) {
98
- throw revisionConflict(options.expectedRevision, current.revision);
97
+ await ensureScope(client, scope, timestamp());
98
+ // Same bound as updateAgentState: without an expectedRevision a concurrent
99
+ // writer between the read and the guarded CTE is not a caller-visible
100
+ // conflict re-read and retry instead of fabricating a conflict error.
101
+ for (let attempt = 0; attempt < 8; attempt += 1) {
102
+ const current = await readAgentState(client, scope);
103
+ if (options.expectedRevision !== undefined && options.expectedRevision !== current.revision) {
104
+ throw revisionConflict(options.expectedRevision, current.revision);
105
+ }
106
+ if (!(key in current.values))
107
+ return { revision: current.revision, changed: false };
108
+ const result = await client.query(`with bumped as (
109
+ update assembly_line_agent_state_scopes
110
+ set revision=revision + 1, updated_at=$4
111
+ where agent_scope=$1 and conversation_id=$2 and revision=$5
112
+ returning revision
113
+ ), deleted as (
114
+ delete from assembly_line_agent_state
115
+ where agent_scope=$1 and conversation_id=$2 and key=$3
116
+ and exists(select 1 from bumped)
117
+ returning key
118
+ )
119
+ select (select revision from bumped) as revision, exists(select 1 from deleted) as changed`, [scope.agentScope, scope.conversationId, key, timestamp(), current.revision]);
120
+ const row = result.rows[0] ?? {};
121
+ // A NULL revision means the guarded update matched zero rows (Number(null)
122
+ // would be 0, so null must be checked explicitly before coercing).
123
+ const revision = row.revision === null || row.revision === undefined ? Number.NaN : Number(row.revision);
124
+ if (Number.isFinite(revision))
125
+ return { revision, changed: row.changed === true };
126
+ if (options.expectedRevision !== undefined)
127
+ throw revisionConflict(options.expectedRevision, current.revision + 1);
99
128
  }
100
- if (!(key in current.values))
101
- return { revision: current.revision, changed: false };
102
- const result = await client.query(`with bumped as (
103
- update openeve_agent_state_scopes
104
- set revision=revision + 1, updated_at=$4
105
- where agent_scope=$1 and conversation_id=$2 and revision=$5
106
- returning revision
107
- ), deleted as (
108
- delete from openeve_agent_state
109
- where agent_scope=$1 and conversation_id=$2 and key=$3
110
- and exists(select 1 from bumped)
111
- returning key
112
- )
113
- select (select revision from bumped) as revision, exists(select 1 from deleted) as changed`, [scope.agentScope, scope.conversationId, key, now, current.revision]);
114
- const row = result.rows[0] ?? {};
115
- const revision = Number(row.revision);
116
- if (!Number.isFinite(revision))
117
- throw revisionConflict(options.expectedRevision ?? current.revision, current.revision + 1);
118
- return { revision, changed: row.changed === true };
129
+ throw new Error("Agent state delete exhausted its compare-and-set retry budget.");
119
130
  }
120
131
  async function ensureScope(client, scope, now) {
121
- await client.query(`insert into openeve_agent_state_scopes (agent_scope, conversation_id, revision, created_at, updated_at)
132
+ await client.query(`insert into assembly_line_agent_state_scopes (agent_scope, conversation_id, revision, created_at, updated_at)
122
133
  values ($1,$2,0,$3,$3) on conflict (agent_scope, conversation_id) do nothing`, [scope.agentScope, scope.conversationId, now]);
123
134
  }
124
135
  function mapAgentStateRecord(row) {
@@ -139,6 +150,7 @@ function validateValue(key, value) {
139
150
  if (serialized === undefined || serialized.length > 16_384) {
140
151
  throw new Error(`Agent state value for "${key}" must be JSON serializable and at most 16384 characters.`);
141
152
  }
153
+ return serialized;
142
154
  }
143
155
  function revisionConflict(expected, current) {
144
156
  const error = new Error(`Agent state revision conflict: expected ${String(expected)}, current ${current}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-agent-state.js","sourceRoot":"","sources":["../src/adapter-agent-state.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,KAAsB;IAC9E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;;8BAM0B,EAC1B,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CACzC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACvF,CAAC,CAAC,GAAG,CAAC,MAAoB;YAC1B,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmB,EACnB,KAAsB,EACtB,GAAW;IAEX,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,0FAA0F,EAC1F,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAC9C,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmB,EACnB,KAAsB,EACtB,GAAW,EACX,KAAgB,EAChB,UAAyC,EAAE;IAE3C,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;;;;;;;;;;;;;;;;;;;;;4DAyBwD,EACxD,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CACpF,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,eAAe,EAAE,CAAC;QAC3F,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO,OAAO;YACZ,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;YAChE,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1F,CAAC,CAAC,GAAG,CAAC,MAAa;QACnB,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,SAAS;QACd,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE;QACrE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,KAAsB,EACtB,GAAW,EACX,MAAqD,EACrD,UAAyC,EAAE;IAE3C,IAAI,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACxC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ;YAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QACzF,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,KAAsB,EACtB,GAAW,EACX,UAAyC,EAAE;IAE3C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5F,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;;;;;;;gGAW4F,EAC5F,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CACrE,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC3H,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAmB,EAAE,KAAsB,EAAE,GAAW;IACjF,MAAM,MAAM,CAAC,KAAK,CAChB;kFAC8E,EAC9E,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAQ;IACnC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3C,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,KAAK,EAAE,GAAG,CAAC,KAAkB;QAC7B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QAChC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,KAAgB;IAClD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACvH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,2DAA2D,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA4B,EAAE,OAAe;IACrE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,QAAQ,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC;IAC5G,KAAK,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAiC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"adapter-agent-state.js","sourceRoot":"","sources":["../src/adapter-agent-state.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CheckpointRecord, CheckpointRetentionOptions, CheckpointRetentionResult } from "@assemblyline-agents/runtime";
1
+ import { type CheckpointRecord, type CheckpointRetentionOptions, type CheckpointRetentionResult } from "@assemblyline-agents/runtime";
2
2
  import type { QueryClient } from "./client-types.js";
3
3
  export declare function createCheckpoint(client: QueryClient, input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
4
4
  export declare function listCheckpoints(client: QueryClient, runId: string): Promise<CheckpointRecord[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-checkpoints.d.ts","sourceRoot":"","sources":["../src/adapter-checkpoints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAOxI;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAGrG;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAuB1I"}
1
+ {"version":3,"file":"adapter-checkpoints.d.ts","sourceRoot":"","sources":["../src/adapter-checkpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAerD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAOxI;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAGrG;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAuB1I"}
@@ -1,15 +1,16 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { TRANSCRIPT_CHECKPOINT_NAME } from "@assemblyline-agents/runtime";
2
3
  import { mapCheckpoint } from "./row-mappers.js";
3
- import { addCheckpointRetentionStats, checkpointNowMs, emptyCheckpointRetentionResult, numberValue, positiveLimit, timestamp, ttlCutoffIso } from "./sql-helpers.js";
4
+ import { addCheckpointRetentionStats, checkpointNowMs, emptyCheckpointRetentionResult, numberValue, positiveLimit, timestamp } from "./sql-helpers.js";
4
5
  const ACTIVE_CHECKPOINT_STATUSES = ["created", "running", "waiting_for_approval", "waiting_for_input", "waiting_for_connection", "suspended"];
5
6
  const TERMINAL_CHECKPOINT_STATUSES = ["completed", "failed", "cancelled"];
6
7
  export async function createCheckpoint(client, input) {
7
8
  const checkpoint = { ...input, id: randomUUID(), createdAt: timestamp() };
8
- await client.query("insert into openeve_checkpoints (id, run_id, name, data, created_at) values ($1,$2,$3,$4::jsonb,$5)", [checkpoint.id, checkpoint.runId, checkpoint.name, JSON.stringify(checkpoint.data), checkpoint.createdAt]);
9
+ await client.query("insert into assembly_line_checkpoints (id, run_id, name, data, created_at) values ($1,$2,$3,$4::jsonb,$5)", [checkpoint.id, checkpoint.runId, checkpoint.name, JSON.stringify(checkpoint.data), checkpoint.createdAt]);
9
10
  return checkpoint;
10
11
  }
11
12
  export async function listCheckpoints(client, runId) {
12
- const result = await client.query("select * from openeve_checkpoints where run_id=$1 order by created_at asc", [runId]);
13
+ const result = await client.query("select * from assembly_line_checkpoints where run_id=$1 order by created_at asc", [runId]);
13
14
  return result.rows.map(mapCheckpoint);
14
15
  }
15
16
  export async function compactCheckpoints(client, options = {}) {
@@ -42,8 +43,8 @@ async function compactActiveCheckpoints(client, maxActive, options, dryRun) {
42
43
  select c.id,
43
44
  pg_column_size(c.data)::bigint as bytes,
44
45
  row_number() over (partition by c.run_id, c.name order by c.created_at desc, c.id desc) as rn
45
- from openeve_checkpoints c
46
- join openeve_runs r on r.id = c.run_id
46
+ from assembly_line_checkpoints c
47
+ join assembly_line_runs r on r.id = c.run_id
47
48
  where ${where.join(" and ")}
48
49
  ),
49
50
  candidates as (
@@ -54,40 +55,59 @@ async function compactActiveCheckpoints(client, maxActive, options, dryRun) {
54
55
  }
55
56
  async function compactTerminalCheckpoints(client, options, dryRun) {
56
57
  const nowMs = checkpointNowMs(options.now);
57
- const terminalCutoff = ttlCutoffIso(nowMs, options.terminalTtlMs);
58
- const failedCutoff = ttlCutoffIso(nowMs, options.failedRunTtlMs ?? options.terminalTtlMs);
59
- const scheduledCutoff = ttlCutoffIso(nowMs, options.scheduledRunTtlMs);
58
+ const cutoff = (ttlMs) => ttlMs === undefined ? null : new Date(nowMs - positiveLimit(ttlMs, 0)).toISOString();
59
+ const terminalCutoff = cutoff(options.terminalTtlMs);
60
+ const failedCutoff = cutoff(options.failedRunTtlMs ?? options.terminalTtlMs);
61
+ const scheduledCutoff = cutoff(options.scheduledRunTtlMs);
60
62
  const params = [TERMINAL_CHECKPOINT_STATUSES, terminalCutoff, failedCutoff, scheduledCutoff];
61
63
  const where = ["r.status = any($1)"];
62
64
  if (options.runId) {
63
65
  params.push(options.runId);
64
66
  where.push(`c.run_id=$${params.length}`);
65
67
  }
68
+ // Never prune the transcript checkpoint a live conversation pointer still
69
+ // references (metadata.transcript.runId, see runtime conversation-transcript):
70
+ // an idle conversation would silently lose resume. Superseded transcripts
71
+ // (no pointer) age out normally.
72
+ params.push(TRANSCRIPT_CHECKPOINT_NAME);
73
+ where.push(`not (
74
+ c.name = $${params.length}
75
+ and exists (
76
+ select 1 from assembly_line_conversations conv
77
+ where conv.metadata #>> '{transcript,runId}' = c.run_id
78
+ )
79
+ )`);
80
+ // Detection and TTL precedence mirror the runtime's isScheduledRun /
81
+ // terminalCheckpointTtlMs (packages/runtime/src/state-store-helpers.ts):
82
+ // when scheduledRunTtlMs is set, scheduled runs use it EXCLUSIVELY — the
83
+ // general failed/terminal TTLs never prune them early.
84
+ const scheduled = `(
85
+ r.input->>'channel' = 'schedule'
86
+ or jsonb_typeof(r.input->'metadata'->'schedule') = 'string'
87
+ or jsonb_typeof(r.input->'metadata'->'scheduleId') = 'string'
88
+ )`;
66
89
  const candidates = `
67
90
  with candidates as (
68
91
  select c.id, pg_column_size(c.data)::bigint as bytes
69
- from openeve_checkpoints c
70
- join openeve_runs r on r.id = c.run_id
92
+ from assembly_line_checkpoints c
93
+ join assembly_line_runs r on r.id = c.run_id
71
94
  where ${where.join(" and ")}
72
95
  and (
73
- (
74
- $4::timestamptz is not null
75
- and (
76
- r.input->>'channel' = 'schedule'
77
- or exists (select 1 from openeve_schedule_runs sr where sr.run_id = r.id)
96
+ case when $4::timestamptz is not null and ${scheduled}
97
+ then r.updated_at <= $4::timestamptz
98
+ else (
99
+ (
100
+ $3::timestamptz is not null
101
+ and r.status = 'failed'
102
+ and r.updated_at <= $3::timestamptz
103
+ )
104
+ or (
105
+ $2::timestamptz is not null
106
+ and r.status in ('completed', 'cancelled')
107
+ and r.updated_at <= $2::timestamptz
78
108
  )
79
- and r.updated_at <= $4::timestamptz
80
- )
81
- or (
82
- $3::timestamptz is not null
83
- and r.status = 'failed'
84
- and r.updated_at <= $3::timestamptz
85
- )
86
- or (
87
- $2::timestamptz is not null
88
- and r.status in ('completed', 'cancelled')
89
- and r.updated_at <= $2::timestamptz
90
109
  )
110
+ end
91
111
  )
92
112
  )
93
113
  `;
@@ -98,7 +118,7 @@ async function checkpointCandidateStats(client, candidatesCte, params, dryRun) {
98
118
  ? `${candidatesCte} select count(*)::int as rows, coalesce(sum(bytes), 0)::bigint as bytes from candidates`
99
119
  : `${candidatesCte},
100
120
  deleted as (
101
- delete from openeve_checkpoints c
121
+ delete from assembly_line_checkpoints c
102
122
  using candidates
103
123
  where c.id = candidates.id
104
124
  returning pg_column_size(c.data)::bigint as bytes
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-checkpoints.js","sourceRoot":"","sources":["../src/adapter-checkpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-checkpoints.js","sourceRoot":"","sources":["../src/adapter-checkpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ConnectionEventInboxRecord, ConnectionEventRegistration } from "@assemblyline-agents/runtime";
2
+ import type { QueryClient } from "./client-types.js";
3
+ export declare function getRegistration(client: QueryClient, connectionName: string, principalKey: string): Promise<ConnectionEventRegistration | undefined>;
4
+ export declare function getRegistrationByBinding(client: QueryClient, connectionName: string, bindingId: string): Promise<ConnectionEventRegistration | undefined>;
5
+ export declare function listRegistrations(client: QueryClient, connectionName?: string): Promise<ConnectionEventRegistration[]>;
6
+ export declare function saveRegistration(client: QueryClient, record: ConnectionEventRegistration): Promise<void>;
7
+ export declare function deleteRegistration(client: QueryClient, connectionName: string, principalKey: string): Promise<void>;
8
+ export declare function enqueueEvent(client: QueryClient, input: Omit<ConnectionEventInboxRecord, "id" | "status" | "attemptCount" | "maxAttempts" | "nextAttemptAt" | "createdAt" | "updatedAt"> & {
9
+ maxAttempts?: number;
10
+ }): Promise<{
11
+ record: ConnectionEventInboxRecord;
12
+ inserted: boolean;
13
+ }>;
14
+ export declare function leaseEvents(client: QueryClient, options: {
15
+ now: Date;
16
+ limit: number;
17
+ leaseForMs: number;
18
+ }): Promise<ConnectionEventInboxRecord[]>;
19
+ export declare function completeEvent(client: QueryClient, id: string, leaseToken: string): Promise<void>;
20
+ export declare function failEvent(client: QueryClient, id: string, leaseToken: string, input: {
21
+ error: string;
22
+ nextAttemptAt: string;
23
+ permanent: boolean;
24
+ }): Promise<void>;
25
+ export declare function recoverExpiredEventLeases(client: QueryClient, now: Date): Promise<void>;
26
+ //# sourceMappingURL=adapter-connection-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-connection-events.d.ts","sourceRoot":"","sources":["../src/adapter-connection-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAMlD;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAMlD;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAK5H;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9G;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzH;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjK,OAAO,CAAC;IAAE,MAAM,EAAE,0BAA0B,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBpE;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAiBvC;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtG;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAClE,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F"}
@@ -0,0 +1,126 @@
1
+ import { randomUUID } from "node:crypto";
2
+ function timestamp() {
3
+ return new Date().toISOString();
4
+ }
5
+ export async function getRegistration(client, connectionName, principalKey) {
6
+ const result = await client.query("select * from assembly_line_connection_event_registrations where connection_name=$1 and principal_key=$2", [connectionName, principalKey]);
7
+ return result.rows[0] ? mapRegistration(result.rows[0]) : undefined;
8
+ }
9
+ export async function getRegistrationByBinding(client, connectionName, bindingId) {
10
+ const result = await client.query("select * from assembly_line_connection_event_registrations where connection_name=$1 and binding_id=$2", [connectionName, bindingId]);
11
+ return result.rows[0] ? mapRegistration(result.rows[0]) : undefined;
12
+ }
13
+ export async function listRegistrations(client, connectionName) {
14
+ const result = connectionName
15
+ ? await client.query("select * from assembly_line_connection_event_registrations where connection_name=$1 order by principal_key", [connectionName])
16
+ : await client.query("select * from assembly_line_connection_event_registrations order by connection_name, principal_key");
17
+ return result.rows.map(mapRegistration);
18
+ }
19
+ export async function saveRegistration(client, record) {
20
+ await client.query(`insert into assembly_line_connection_event_registrations
21
+ (connection_name, provider, principal_key, principal, binding_id, callback_url, selected_events, resources,
22
+ desired_hash, status, external_id, state, expires_at, instructions, detail, created_at, updated_at)
23
+ values ($1,$2,$3,$4::jsonb,$5,$6,$7::jsonb,$8::jsonb,$9,$10,$11,$12::jsonb,$13,$14,$15,$16,$17)
24
+ on conflict (connection_name, principal_key) do update set
25
+ provider=$2, principal=$4::jsonb, binding_id=$5, callback_url=$6, selected_events=$7::jsonb,
26
+ resources=$8::jsonb, desired_hash=$9, status=$10, external_id=$11, state=$12::jsonb,
27
+ expires_at=$13, instructions=$14, detail=$15, updated_at=$17`, [
28
+ record.connectionName, record.provider, record.principalKey, JSON.stringify(record.principal),
29
+ record.bindingId, record.callbackUrl, JSON.stringify(record.selectedEvents), JSON.stringify(record.resources),
30
+ record.desiredHash, record.status, record.externalId ?? null, record.state ? JSON.stringify(record.state) : null,
31
+ record.expiresAt ?? null, record.instructions ?? null, record.detail ?? null, record.createdAt, record.updatedAt
32
+ ]);
33
+ }
34
+ export async function deleteRegistration(client, connectionName, principalKey) {
35
+ await client.query("delete from assembly_line_connection_event_registrations where connection_name=$1 and principal_key=$2", [connectionName, principalKey]);
36
+ }
37
+ export async function enqueueEvent(client, input) {
38
+ const now = timestamp();
39
+ const id = randomUUID();
40
+ const result = await client.query(`insert into assembly_line_connection_event_inbox
41
+ (id, connection_name, provider, principal_key, event_id, event, status, attempt_count, max_attempts,
42
+ next_attempt_at, created_at, updated_at)
43
+ values ($1,$2,$3,$4,$5,$6::jsonb,'pending',0,$7,$8,$8,$8)
44
+ on conflict (connection_name, principal_key, event_id) do nothing
45
+ returning *`, [id, input.connectionName, input.provider, input.principalKey, input.event.eventId, JSON.stringify(input.event), input.maxAttempts ?? 8, now]);
46
+ if (result.rows[0])
47
+ return { record: mapInbox(result.rows[0]), inserted: true };
48
+ const existing = await client.query("select * from assembly_line_connection_event_inbox where connection_name=$1 and principal_key=$2 and event_id=$3", [input.connectionName, input.principalKey, input.event.eventId]);
49
+ return { record: mapInbox(existing.rows[0]), inserted: false };
50
+ }
51
+ export async function leaseEvents(client, options) {
52
+ const leaseToken = randomUUID();
53
+ const expiresAt = new Date(options.now.getTime() + options.leaseForMs).toISOString();
54
+ const result = await client.query(`with due as (
55
+ select id from assembly_line_connection_event_inbox
56
+ where status='pending' and next_attempt_at <= $1
57
+ order by next_attempt_at, created_at
58
+ for update skip locked
59
+ limit $2
60
+ )
61
+ update assembly_line_connection_event_inbox inbox
62
+ set status='processing', attempt_count=inbox.attempt_count+1, lease_token=$3, lease_expires_at=$4, updated_at=$1
63
+ from due where inbox.id=due.id returning inbox.*`, [options.now.toISOString(), options.limit, leaseToken, expiresAt]);
64
+ return result.rows.map(mapInbox);
65
+ }
66
+ export async function completeEvent(client, id, leaseToken) {
67
+ const result = await client.query(`delete from assembly_line_connection_event_inbox
68
+ where id=$1 and status='processing' and lease_token=$2 returning id`, [id, leaseToken]);
69
+ if (result.rows.length !== 1)
70
+ throw new Error(`Connection event ${id} is not held by this worker lease.`);
71
+ }
72
+ export async function failEvent(client, id, leaseToken, input) {
73
+ const result = await client.query(`update assembly_line_connection_event_inbox
74
+ set status=case when $4 or attempt_count >= max_attempts then 'failed' else 'pending' end,
75
+ last_error=$3, next_attempt_at=$5, lease_token=null, lease_expires_at=null, updated_at=$6
76
+ where id=$1 and status='processing' and lease_token=$2 returning id`, [id, leaseToken, input.error, input.permanent, input.nextAttemptAt, timestamp()]);
77
+ if (result.rows.length !== 1)
78
+ throw new Error(`Connection event ${id} is not held by this worker lease.`);
79
+ }
80
+ export async function recoverExpiredEventLeases(client, now) {
81
+ await client.query(`update assembly_line_connection_event_inbox
82
+ set status=case when attempt_count >= max_attempts then 'failed' else 'pending' end,
83
+ last_error='Connection event worker lease expired.', next_attempt_at=$1,
84
+ lease_token=null, lease_expires_at=null, updated_at=$1
85
+ where status='processing' and lease_expires_at <= $1`, [now.toISOString()]);
86
+ }
87
+ function mapRegistration(row) {
88
+ return {
89
+ connectionName: String(row.connection_name),
90
+ provider: String(row.provider),
91
+ principalKey: String(row.principal_key),
92
+ principal: row.principal,
93
+ bindingId: String(row.binding_id),
94
+ callbackUrl: String(row.callback_url),
95
+ selectedEvents: row.selected_events,
96
+ resources: row.resources,
97
+ desiredHash: String(row.desired_hash),
98
+ status: row.status,
99
+ ...(row.external_id ? { externalId: String(row.external_id) } : {}),
100
+ ...(row.state ? { state: row.state } : {}),
101
+ ...(row.expires_at ? { expiresAt: new Date(String(row.expires_at)).toISOString() } : {}),
102
+ ...(row.instructions ? { instructions: String(row.instructions) } : {}),
103
+ ...(row.detail ? { detail: String(row.detail) } : {}),
104
+ createdAt: new Date(String(row.created_at)).toISOString(),
105
+ updatedAt: new Date(String(row.updated_at)).toISOString()
106
+ };
107
+ }
108
+ function mapInbox(row) {
109
+ return {
110
+ id: String(row.id),
111
+ connectionName: String(row.connection_name),
112
+ provider: String(row.provider),
113
+ principalKey: String(row.principal_key),
114
+ event: row.event,
115
+ status: row.status,
116
+ attemptCount: Number(row.attempt_count),
117
+ maxAttempts: Number(row.max_attempts),
118
+ nextAttemptAt: new Date(String(row.next_attempt_at)).toISOString(),
119
+ ...(row.lease_token ? { leaseToken: String(row.lease_token) } : {}),
120
+ ...(row.lease_expires_at ? { leaseExpiresAt: new Date(String(row.lease_expires_at)).toISOString() } : {}),
121
+ ...(row.last_error ? { lastError: String(row.last_error) } : {}),
122
+ createdAt: new Date(String(row.created_at)).toISOString(),
123
+ updatedAt: new Date(String(row.updated_at)).toISOString()
124
+ };
125
+ }
126
+ //# sourceMappingURL=adapter-connection-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-connection-events.js","sourceRoot":"","sources":["../src/adapter-connection-events.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { ConversationTurnRecord, ConversationTurnStatus, ConversationTurnStore } from "@assemblyline-agents/runtime";
1
+ import type { ConversationTurnMergeResult, ConversationTurnRecord, ConversationTurnStatus, ConversationTurnStore } from "@assemblyline-agents/runtime";
2
2
  import type { QueryClient } from "./client-types.js";
3
3
  export declare function enqueueConversationTurn(client: QueryClient, input: Parameters<ConversationTurnStore["enqueueConversationTurn"]>[0]): ReturnType<ConversationTurnStore["enqueueConversationTurn"]>;
4
+ export declare function mergePendingConversationTurns(client: QueryClient, id: string, leaseToken: string): Promise<ConversationTurnMergeResult | undefined>;
4
5
  export declare function leaseNextConversationTurn(client: QueryClient, options: Parameters<ConversationTurnStore["leaseNextConversationTurn"]>[0]): ReturnType<ConversationTurnStore["leaseNextConversationTurn"]>;
5
6
  export declare function attachConversationTurnRun(client: QueryClient, id: string, leaseToken: string, runId: string): Promise<ConversationTurnRecord>;
6
7
  export declare function settleConversationTurn(client: QueryClient, id: string, leaseToken: string, status: "blocked" | "completed" | "failed" | "cancelled", options?: {
@@ -9,6 +10,7 @@ export declare function settleConversationTurn(client: QueryClient, id: string,
9
10
  }): Promise<ConversationTurnRecord>;
10
11
  export declare function settleConversationTurnByRunId(client: QueryClient, runId: string, status: "blocked" | "completed" | "failed" | "cancelled", options?: {
11
12
  error?: string;
13
+ expiredBefore?: string;
12
14
  }): Promise<ConversationTurnRecord | undefined>;
13
15
  export declare function retryConversationTurn(client: QueryClient, id: string, leaseToken: string, error: string): Promise<ConversationTurnRecord>;
14
16
  export declare function recoverExpiredConversationTurns(client: QueryClient, now?: Date): Promise<ConversationTurnRecord[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-conversation-turns.d.ts","sourceRoot":"","sources":["../src/adapter-conversation-turns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA6BrD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrE,UAAU,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAkC9D;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,GACzE,UAAU,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAgDhE;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CAWjC;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,EACxD,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,EACxD,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAc7C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CAoBjC;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,WAAW,EACnB,GAAG,OAAa,GACf,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAkCnC;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAC5B,GACL,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqBnC"}
1
+ {"version":3,"file":"adapter-conversation-turns.d.ts","sourceRoot":"","sources":["../src/adapter-conversation-turns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA6BrD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrE,UAAU,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAmC9D;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CA4ElD;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,GACzE,UAAU,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAgDhE;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CAWjC;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,EACxD,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,EACxD,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACvD,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAmB7C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CAoBjC;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,WAAW,EACnB,GAAG,OAAa,GACf,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAkCnC;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAC5B,GACL,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqBnC"}