@axiom-lattice/pg-stores 1.0.31 → 1.0.33

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/pg-stores@1.0.31 build /home/runner/work/agentic/agentic/packages/pg-stores
2
+ > @axiom-lattice/pg-stores@1.0.33 build /home/runner/work/agentic/agentic/packages/pg-stores
3
3
  > tsup src/index.ts --format cjs,esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,13 +8,13 @@
8
8
  CLI Target: es2020
9
9
  CJS Build start
10
10
  ESM Build start
11
- CJS dist/index.js 129.98 KB
12
- CJS dist/index.js.map 242.69 KB
13
- CJS ⚡️ Build success in 259ms
14
- ESM dist/index.mjs 126.66 KB
15
- ESM dist/index.mjs.map 238.53 KB
16
- ESM ⚡️ Build success in 259ms
11
+ CJS dist/index.js 130.75 KB
12
+ CJS dist/index.js.map 243.67 KB
13
+ CJS ⚡️ Build success in 327ms
14
+ ESM dist/index.mjs 127.43 KB
15
+ ESM dist/index.mjs.map 243.62 KB
16
+ ESM ⚡️ Build success in 329ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 11629ms
19
- DTS dist/index.d.ts 34.21 KB
20
- DTS dist/index.d.mts 34.21 KB
18
+ DTS ⚡️ Build success in 11993ms
19
+ DTS dist/index.d.ts 34.53 KB
20
+ DTS dist/index.d.mts 34.53 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @axiom-lattice/pg-stores
2
2
 
3
+ ## 1.0.33
4
+
5
+ ### Patch Changes
6
+
7
+ - 21052a9: update issues
8
+ - Updated dependencies [21052a9]
9
+ - @axiom-lattice/core@2.1.43
10
+
11
+ ## 1.0.32
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [9a4f338]
16
+ - @axiom-lattice/protocols@2.1.23
17
+ - @axiom-lattice/core@2.1.42
18
+
3
19
  ## 1.0.31
4
20
 
5
21
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { PoolConfig, PoolClient, Pool } from 'pg';
2
+ export { Pool, PoolConfig } from 'pg';
2
3
  import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, SkillStore, Skill, CreateSkillRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, Project, CreateProjectRequest, UpdateProjectRequest, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest } from '@axiom-lattice/protocols';
3
4
  export { Assistant, AssistantStore, CreateAssistantRequest, CreateDatabaseConfigRequest, CreateMcpServerConfigRequest, CreateMetricsServerConfigRequest, CreateProjectRequest, CreateSkillRequest, CreateTenantRequest, CreateThreadRequest, CreateUserRequest, CreateUserTenantLinkRequest, CreateWorkspaceRequest, DatabaseConfig, DatabaseConfigEntry, DatabaseConfigStore, DatabaseType, McpServerConfigEntry, McpServerConfigStore, MetricsServerConfig, MetricsServerConfigEntry, MetricsServerConfigStore, Project, ProjectStore, ScheduleExecutionType, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, Skill, SkillStore, StorageType, Tenant, TenantStatus, TenantStore, Thread, ThreadStore, UpdateDatabaseConfigRequest, UpdateMcpServerConfigRequest, UpdateMetricsServerConfigRequest, UpdateProjectRequest, UpdateTenantRequest, UpdateUserRequest, UpdateUserTenantLinkRequest, UpdateWorkspaceRequest, User, UserStore, UserTenantLink, UserTenantLinkStore, UserTenantRole, Workspace, WorkspaceStore } from '@axiom-lattice/protocols';
4
5
  import { IMessageQueueStore, AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -1109,7 +1110,8 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1109
1110
  */
1110
1111
  addMessage(params: AddMessageParams): Promise<PendingMessage>;
1111
1112
  /**
1112
- * Add message at head of queue (sequence = 0, shift others)
1113
+ * Add message at head of queue (high priority, e.g., STEER/Command messages)
1114
+ * Uses priority=100 to ensure message is processed first
1113
1115
  */
1114
1116
  addMessageAtHead(threadId: string, content: any, type?: "human" | "system"): Promise<PendingMessage>;
1115
1117
  /**
@@ -1125,7 +1127,7 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1125
1127
  */
1126
1128
  getQueueSize(threadId: string): Promise<number>;
1127
1129
  /**
1128
- * Get all threads with pending messages
1130
+ * Get all threads with pending or processing messages
1129
1131
  */
1130
1132
  getThreadsWithPendingMessages(): Promise<ThreadInfo[]>;
1131
1133
  /**
@@ -1148,6 +1150,11 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1148
1150
  * Clear completed messages for thread
1149
1151
  */
1150
1152
  clearCompletedMessages(threadId: string): Promise<void>;
1153
+ /**
1154
+ * Reset all processing messages to pending state for a thread
1155
+ * Returns the number of messages reset
1156
+ */
1157
+ resetProcessingToPending(threadId: string): Promise<number>;
1151
1158
  private rowToMessage;
1152
1159
  }
1153
1160
  declare const getThreadMessageQueueStore: () => ThreadMessageQueueStore;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { PoolConfig, PoolClient, Pool } from 'pg';
2
+ export { Pool, PoolConfig } from 'pg';
2
3
  import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, SkillStore, Skill, CreateSkillRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, Project, CreateProjectRequest, UpdateProjectRequest, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest } from '@axiom-lattice/protocols';
3
4
  export { Assistant, AssistantStore, CreateAssistantRequest, CreateDatabaseConfigRequest, CreateMcpServerConfigRequest, CreateMetricsServerConfigRequest, CreateProjectRequest, CreateSkillRequest, CreateTenantRequest, CreateThreadRequest, CreateUserRequest, CreateUserTenantLinkRequest, CreateWorkspaceRequest, DatabaseConfig, DatabaseConfigEntry, DatabaseConfigStore, DatabaseType, McpServerConfigEntry, McpServerConfigStore, MetricsServerConfig, MetricsServerConfigEntry, MetricsServerConfigStore, Project, ProjectStore, ScheduleExecutionType, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, Skill, SkillStore, StorageType, Tenant, TenantStatus, TenantStore, Thread, ThreadStore, UpdateDatabaseConfigRequest, UpdateMcpServerConfigRequest, UpdateMetricsServerConfigRequest, UpdateProjectRequest, UpdateTenantRequest, UpdateUserRequest, UpdateUserTenantLinkRequest, UpdateWorkspaceRequest, User, UserStore, UserTenantLink, UserTenantLinkStore, UserTenantRole, Workspace, WorkspaceStore } from '@axiom-lattice/protocols';
4
5
  import { IMessageQueueStore, AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -1109,7 +1110,8 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1109
1110
  */
1110
1111
  addMessage(params: AddMessageParams): Promise<PendingMessage>;
1111
1112
  /**
1112
- * Add message at head of queue (sequence = 0, shift others)
1113
+ * Add message at head of queue (high priority, e.g., STEER/Command messages)
1114
+ * Uses priority=100 to ensure message is processed first
1113
1115
  */
1114
1116
  addMessageAtHead(threadId: string, content: any, type?: "human" | "system"): Promise<PendingMessage>;
1115
1117
  /**
@@ -1125,7 +1127,7 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1125
1127
  */
1126
1128
  getQueueSize(threadId: string): Promise<number>;
1127
1129
  /**
1128
- * Get all threads with pending messages
1130
+ * Get all threads with pending or processing messages
1129
1131
  */
1130
1132
  getThreadsWithPendingMessages(): Promise<ThreadInfo[]>;
1131
1133
  /**
@@ -1148,6 +1150,11 @@ declare class ThreadMessageQueueStore implements IMessageQueueStore {
1148
1150
  * Clear completed messages for thread
1149
1151
  */
1150
1152
  clearCompletedMessages(threadId: string): Promise<void>;
1153
+ /**
1154
+ * Reset all processing messages to pending state for a thread
1155
+ * Returns the number of messages reset
1156
+ */
1157
+ resetProcessingToPending(threadId: string): Promise<number>;
1151
1158
  private rowToMessage;
1152
1159
  }
1153
1160
  declare const getThreadMessageQueueStore: () => ThreadMessageQueueStore;
package/dist/index.js CHANGED
@@ -23,6 +23,8 @@ __export(index_exports, {
23
23
  AddMessageParams: () => import_core4.AddMessageParams,
24
24
  MigrationManager: () => MigrationManager,
25
25
  PendingMessage: () => import_core4.PendingMessage,
26
+ Pool: () => import_pg13.Pool,
27
+ PoolConfig: () => import_pg13.PoolConfig,
26
28
  PostgreSQLAssistantStore: () => PostgreSQLAssistantStore,
27
29
  PostgreSQLDatabaseConfigStore: () => PostgreSQLDatabaseConfigStore,
28
30
  PostgreSQLMcpServerConfigStore: () => PostgreSQLMcpServerConfigStore,
@@ -59,6 +61,7 @@ __export(index_exports, {
59
61
  getThreadMessageQueueStore: () => getThreadMessageQueueStore
60
62
  });
61
63
  module.exports = __toCommonJS(index_exports);
64
+ var import_pg13 = require("pg");
62
65
 
63
66
  // src/stores/PostgreSQLThreadStore.ts
64
67
  var import_pg = require("pg");
@@ -4022,10 +4025,10 @@ var PostgreSQLUserTenantLinkStore = class {
4022
4025
  // src/migrations/thread_message_queue_migrations.ts
4023
4026
  var createThreadMessageQueueTable = {
4024
4027
  version: 100,
4025
- name: "create_thread_message_queue_table",
4028
+ name: "create_lattice_thread_message_queue_table",
4026
4029
  up: async (client) => {
4027
4030
  await client.query(`
4028
- CREATE TABLE IF NOT EXISTS thread_message_queue (
4031
+ CREATE TABLE IF NOT EXISTS lattice_thread_message_queue (
4029
4032
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
4030
4033
  thread_id VARCHAR(255) NOT NULL,
4031
4034
  tenant_id VARCHAR(255) NOT NULL,
@@ -4038,28 +4041,28 @@ var createThreadMessageQueueTable = {
4038
4041
  )
4039
4042
  `);
4040
4043
  await client.query(`
4041
- CREATE INDEX IF NOT EXISTS idx_thread_message_queue_thread
4042
- ON thread_message_queue(thread_id, status)
4044
+ CREATE INDEX IF NOT EXISTS idx_lattice_thread_message_queue_thread
4045
+ ON lattice_thread_message_queue(thread_id, status)
4043
4046
  `);
4044
4047
  await client.query(`
4045
- CREATE INDEX IF NOT EXISTS idx_thread_message_queue_tenant
4046
- ON thread_message_queue(tenant_id, thread_id, status)
4048
+ CREATE INDEX IF NOT EXISTS idx_lattice_thread_message_queue_tenant
4049
+ ON lattice_thread_message_queue(tenant_id, thread_id, status)
4047
4050
  `);
4048
4051
  await client.query(`
4049
- CREATE INDEX IF NOT EXISTS idx_thread_message_queue_status
4050
- ON thread_message_queue(status, created_at)
4052
+ CREATE INDEX IF NOT EXISTS idx_lattice_thread_message_queue_status
4053
+ ON lattice_thread_message_queue(status, created_at)
4051
4054
  `);
4052
4055
  await client.query(`
4053
- CREATE UNIQUE INDEX IF NOT EXISTS idx_thread_message_queue_sequence
4054
- ON thread_message_queue(thread_id, sequence_order)
4056
+ CREATE INDEX IF NOT EXISTS idx_lattice_thread_message_queue_sequence
4057
+ ON lattice_thread_message_queue(thread_id, sequence_order)
4055
4058
  `);
4056
4059
  },
4057
4060
  down: async (client) => {
4058
- await client.query("DROP INDEX IF EXISTS idx_thread_message_queue_sequence");
4059
- await client.query("DROP INDEX IF EXISTS idx_thread_message_queue_status");
4060
- await client.query("DROP INDEX IF EXISTS idx_thread_message_queue_tenant");
4061
- await client.query("DROP INDEX IF EXISTS idx_thread_message_queue_thread");
4062
- await client.query("DROP TABLE IF EXISTS thread_message_queue");
4061
+ await client.query("DROP INDEX IF EXISTS idx_lattice_thread_message_queue_sequence");
4062
+ await client.query("DROP INDEX IF EXISTS idx_lattice_thread_message_queue_status");
4063
+ await client.query("DROP INDEX IF EXISTS idx_lattice_thread_message_queue_tenant");
4064
+ await client.query("DROP INDEX IF EXISTS idx_lattice_thread_message_queue_thread");
4065
+ await client.query("DROP TABLE IF EXISTS lattice_thread_message_queue");
4063
4066
  }
4064
4067
  };
4065
4068
 
@@ -4072,22 +4075,22 @@ var addPriorityAndCommandColumns = {
4072
4075
  name: "add_priority_and_command_columns",
4073
4076
  up: async (client) => {
4074
4077
  await client.query(`
4075
- ALTER TABLE thread_message_queue
4078
+ ALTER TABLE lattice_thread_message_queue
4076
4079
  ADD COLUMN IF NOT EXISTS priority INTEGER DEFAULT 0
4077
4080
  `);
4078
4081
  await client.query(`
4079
- ALTER TABLE thread_message_queue
4082
+ ALTER TABLE lattice_thread_message_queue
4080
4083
  ADD COLUMN IF NOT EXISTS command JSONB
4081
4084
  `);
4082
4085
  await client.query(`
4083
- CREATE INDEX IF NOT EXISTS idx_thread_message_queue_priority
4084
- ON thread_message_queue(thread_id, priority DESC, sequence_order ASC)
4086
+ CREATE INDEX IF NOT EXISTS idx_lattice_thread_message_queue_priority
4087
+ ON lattice_thread_message_queue(thread_id, priority DESC, sequence_order ASC)
4085
4088
  `);
4086
4089
  },
4087
4090
  down: async (client) => {
4088
- await client.query("DROP INDEX IF EXISTS idx_thread_message_queue_priority");
4089
- await client.query("ALTER TABLE thread_message_queue DROP COLUMN IF EXISTS command");
4090
- await client.query("ALTER TABLE thread_message_queue DROP COLUMN IF EXISTS priority");
4091
+ await client.query("DROP INDEX IF EXISTS idx_lattice_thread_message_queue_priority");
4092
+ await client.query("ALTER TABLE lattice_thread_message_queue DROP COLUMN IF EXISTS command");
4093
+ await client.query("ALTER TABLE lattice_thread_message_queue DROP COLUMN IF EXISTS priority");
4091
4094
  }
4092
4095
  };
4093
4096
 
@@ -4132,13 +4135,13 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4132
4135
  const { threadId, tenantId, assistantId, content, type = "human", priority = 0, command } = params;
4133
4136
  const seqResult = await pool.query(
4134
4137
  `SELECT COALESCE(MAX(sequence_order), 0) + 1 as next_seq
4135
- FROM thread_message_queue
4138
+ FROM lattice_thread_message_queue
4136
4139
  WHERE thread_id = $1`,
4137
4140
  [threadId]
4138
4141
  );
4139
4142
  const nextSeq = seqResult.rows[0].next_seq;
4140
4143
  const result = await pool.query(
4141
- `INSERT INTO thread_message_queue
4144
+ `INSERT INTO lattice_thread_message_queue
4142
4145
  (thread_id, tenant_id, assistant_id, message_content, message_type, sequence_order, priority, command)
4143
4146
  VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
4144
4147
  RETURNING *`,
@@ -4147,47 +4150,39 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4147
4150
  return this.rowToMessage(result.rows[0]);
4148
4151
  }
4149
4152
  /**
4150
- * Add message at head of queue (sequence = 0, shift others)
4153
+ * Add message at head of queue (high priority, e.g., STEER/Command messages)
4154
+ * Uses priority=100 to ensure message is processed first
4151
4155
  */
4152
4156
  async addMessageAtHead(threadId, content, type = "system") {
4153
4157
  const pool = this.getPool();
4154
- const client = await pool.connect();
4155
- try {
4156
- await client.query("BEGIN");
4157
- await client.query(
4158
- `UPDATE thread_message_queue
4159
- SET sequence_order = sequence_order + 1
4160
- WHERE thread_id = $1`,
4161
- [threadId]
4162
- );
4163
- const threadResult = await client.query(
4164
- `SELECT tenant_id, assistant_id
4165
- FROM thread_message_queue
4166
- WHERE thread_id = $1
4167
- LIMIT 1`,
4168
- [threadId]
4169
- );
4170
- let tenantId = "default";
4171
- let assistantId = "";
4172
- if (threadResult.rows.length > 0) {
4173
- tenantId = threadResult.rows[0].tenant_id;
4174
- assistantId = threadResult.rows[0].assistant_id;
4175
- }
4176
- const result = await client.query(
4177
- `INSERT INTO thread_message_queue
4178
- (thread_id, tenant_id, assistant_id, message_content, message_type, sequence_order)
4179
- VALUES ($1, $2, $3, $4, $5, 0)
4180
- RETURNING *`,
4181
- [threadId, tenantId, assistantId, JSON.stringify(content), type]
4182
- );
4183
- await client.query("COMMIT");
4184
- return this.rowToMessage(result.rows[0]);
4185
- } catch (error) {
4186
- await client.query("ROLLBACK");
4187
- throw error;
4188
- } finally {
4189
- client.release();
4158
+ const threadResult = await pool.query(
4159
+ `SELECT tenant_id, assistant_id
4160
+ FROM lattice_thread_message_queue
4161
+ WHERE thread_id = $1
4162
+ LIMIT 1`,
4163
+ [threadId]
4164
+ );
4165
+ let tenantId = "default";
4166
+ let assistantId = "";
4167
+ if (threadResult.rows.length > 0) {
4168
+ tenantId = threadResult.rows[0].tenant_id;
4169
+ assistantId = threadResult.rows[0].assistant_id;
4190
4170
  }
4171
+ const seqResult = await pool.query(
4172
+ `SELECT COALESCE(MAX(sequence_order), 0) + 1 as next_seq
4173
+ FROM lattice_thread_message_queue
4174
+ WHERE thread_id = $1`,
4175
+ [threadId]
4176
+ );
4177
+ const nextSeq = seqResult.rows[0].next_seq;
4178
+ const result = await pool.query(
4179
+ `INSERT INTO lattice_thread_message_queue
4180
+ (thread_id, tenant_id, assistant_id, message_content, message_type, sequence_order, priority)
4181
+ VALUES ($1, $2, $3, $4, $5, $6, 100)
4182
+ RETURNING *`,
4183
+ [threadId, tenantId, assistantId, JSON.stringify(content), type, nextSeq]
4184
+ );
4185
+ return this.rowToMessage(result.rows[0]);
4191
4186
  }
4192
4187
  /**
4193
4188
  * Get pending messages for thread
@@ -4195,9 +4190,9 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4195
4190
  async getPendingMessages(threadId) {
4196
4191
  const pool = this.getPool();
4197
4192
  const result = await pool.query(
4198
- `SELECT * FROM thread_message_queue
4193
+ `SELECT * FROM lattice_thread_message_queue
4199
4194
  WHERE thread_id = $1 AND status = 'pending'
4200
- ORDER BY sequence_order ASC`,
4195
+ ORDER BY priority DESC, sequence_order ASC`,
4201
4196
  [threadId]
4202
4197
  );
4203
4198
  return result.rows.map((row) => this.rowToMessage(row));
@@ -4208,9 +4203,9 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4208
4203
  async getProcessingMessages(threadId) {
4209
4204
  const pool = this.getPool();
4210
4205
  const result = await pool.query(
4211
- `SELECT * FROM thread_message_queue
4206
+ `SELECT * FROM lattice_thread_message_queue
4212
4207
  WHERE thread_id = $1 AND status = 'processing'
4213
- ORDER BY sequence_order ASC`,
4208
+ ORDER BY priority DESC, sequence_order ASC`,
4214
4209
  [threadId]
4215
4210
  );
4216
4211
  return result.rows.map((row) => this.rowToMessage(row));
@@ -4221,21 +4216,21 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4221
4216
  async getQueueSize(threadId) {
4222
4217
  const pool = this.getPool();
4223
4218
  const result = await pool.query(
4224
- `SELECT COUNT(*) as count FROM thread_message_queue
4219
+ `SELECT COUNT(*) as count FROM lattice_thread_message_queue
4225
4220
  WHERE thread_id = $1 AND status = 'pending'`,
4226
4221
  [threadId]
4227
4222
  );
4228
4223
  return parseInt(result.rows[0].count, 10);
4229
4224
  }
4230
4225
  /**
4231
- * Get all threads with pending messages
4226
+ * Get all threads with pending or processing messages
4232
4227
  */
4233
4228
  async getThreadsWithPendingMessages() {
4234
4229
  const pool = this.getPool();
4235
4230
  const result = await pool.query(
4236
4231
  `SELECT DISTINCT tenant_id, assistant_id, thread_id
4237
- FROM thread_message_queue
4238
- WHERE status = 'pending'
4232
+ FROM lattice_thread_message_queue
4233
+ WHERE status IN ('pending', 'processing')
4239
4234
  ORDER BY thread_id`
4240
4235
  );
4241
4236
  return result.rows.map((row) => ({
@@ -4250,7 +4245,7 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4250
4245
  async removeMessage(messageId) {
4251
4246
  const pool = this.getPool();
4252
4247
  const result = await pool.query(
4253
- `DELETE FROM thread_message_queue WHERE id = $1 RETURNING id`,
4248
+ `DELETE FROM lattice_thread_message_queue WHERE id = $1 RETURNING id`,
4254
4249
  [messageId]
4255
4250
  );
4256
4251
  return (result.rowCount ?? 0) > 0;
@@ -4261,7 +4256,7 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4261
4256
  async clearMessages(threadId) {
4262
4257
  const pool = this.getPool();
4263
4258
  await pool.query(
4264
- `DELETE FROM thread_message_queue WHERE thread_id = $1`,
4259
+ `DELETE FROM lattice_thread_message_queue WHERE thread_id = $1`,
4265
4260
  [threadId]
4266
4261
  );
4267
4262
  }
@@ -4271,7 +4266,7 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4271
4266
  async markProcessing(messageId) {
4272
4267
  const pool = this.getPool();
4273
4268
  await pool.query(
4274
- `UPDATE thread_message_queue SET status = 'processing' WHERE id = $1`,
4269
+ `UPDATE lattice_thread_message_queue SET status = 'processing' WHERE id = $1`,
4275
4270
  [messageId]
4276
4271
  );
4277
4272
  }
@@ -4281,7 +4276,7 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4281
4276
  async markCompleted(messageId) {
4282
4277
  const pool = this.getPool();
4283
4278
  await pool.query(
4284
- `UPDATE thread_message_queue SET status = 'completed' WHERE id = $1`,
4279
+ `UPDATE lattice_thread_message_queue SET status = 'completed' WHERE id = $1`,
4285
4280
  [messageId]
4286
4281
  );
4287
4282
  }
@@ -4291,11 +4286,26 @@ var ThreadMessageQueueStore = class _ThreadMessageQueueStore {
4291
4286
  async clearCompletedMessages(threadId) {
4292
4287
  const pool = this.getPool();
4293
4288
  await pool.query(
4294
- `DELETE FROM thread_message_queue
4289
+ `DELETE FROM lattice_thread_message_queue
4295
4290
  WHERE thread_id = $1 AND status = 'completed'`,
4296
4291
  [threadId]
4297
4292
  );
4298
4293
  }
4294
+ /**
4295
+ * Reset all processing messages to pending state for a thread
4296
+ * Returns the number of messages reset
4297
+ */
4298
+ async resetProcessingToPending(threadId) {
4299
+ const pool = this.getPool();
4300
+ const result = await pool.query(
4301
+ `UPDATE lattice_thread_message_queue
4302
+ SET status = 'pending'
4303
+ WHERE thread_id = $1 AND status = 'processing'
4304
+ RETURNING id`,
4305
+ [threadId]
4306
+ );
4307
+ return result.rowCount ?? 0;
4308
+ }
4299
4309
  rowToMessage(row) {
4300
4310
  return {
4301
4311
  id: row.id,
@@ -4314,6 +4324,8 @@ var getThreadMessageQueueStore = () => ThreadMessageQueueStore.getInstance();
4314
4324
  AddMessageParams,
4315
4325
  MigrationManager,
4316
4326
  PendingMessage,
4327
+ Pool,
4328
+ PoolConfig,
4317
4329
  PostgreSQLAssistantStore,
4318
4330
  PostgreSQLDatabaseConfigStore,
4319
4331
  PostgreSQLMcpServerConfigStore,