crewly 1.20.148 → 1.20.150

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 (168) hide show
  1. package/config/constants.ts +43 -0
  2. package/dist/backend/backend/src/constants.d.ts +95 -0
  3. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  4. package/dist/backend/backend/src/constants.js +79 -1
  5. package/dist/backend/backend/src/constants.js.map +1 -1
  6. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +1 -0
  7. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  8. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +22 -0
  9. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  10. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +1 -0
  11. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  12. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +2 -0
  13. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  14. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +42 -1
  16. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  17. package/dist/backend/backend/src/index.d.ts +19 -0
  18. package/dist/backend/backend/src/index.d.ts.map +1 -1
  19. package/dist/backend/backend/src/index.js +119 -1
  20. package/dist/backend/backend/src/index.js.map +1 -1
  21. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +3 -0
  23. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
  24. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
  25. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  26. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +183 -2
  27. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  28. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +70 -0
  29. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +78 -0
  31. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -1
  32. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
  34. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  35. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
  36. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
  37. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
  38. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
  39. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
  40. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
  42. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  43. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
  44. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
  46. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
  47. package/dist/backend/backend/src/services/chat-v2/types.d.ts +29 -0
  48. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  50. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +200 -0
  51. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -0
  52. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +485 -0
  53. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -0
  54. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +163 -0
  55. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -0
  56. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +176 -0
  57. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -0
  58. package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts +106 -0
  59. package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/cloud/cloud-login-runner.js +238 -0
  61. package/dist/backend/backend/src/services/cloud/cloud-login-runner.js.map +1 -0
  62. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
  63. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +38 -0
  65. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  66. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
  67. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  69. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts +209 -0
  70. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts.map +1 -0
  71. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js +607 -0
  72. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js.map +1 -0
  73. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts +167 -0
  74. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts.map +1 -0
  75. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js +127 -0
  76. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js.map +1 -0
  77. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +4 -0
  79. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  80. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +11 -1
  82. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  83. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
  84. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +13 -0
  86. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/slack/slack-initializer.js +13 -0
  89. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  90. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  91. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
  93. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  94. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts +55 -0
  95. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts.map +1 -0
  96. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js +114 -0
  97. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js.map +1 -0
  98. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  99. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +1 -0
  100. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  101. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +10 -0
  102. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +27 -2
  104. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  105. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +10 -0
  106. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +27 -4
  108. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  109. package/dist/backend/backend/src/types/slack.types.d.ts +12 -0
  110. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  111. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  112. package/dist/backend/build-info.json +2 -2
  113. package/dist/backend/config/constants.d.ts +42 -0
  114. package/dist/backend/config/constants.d.ts.map +1 -1
  115. package/dist/backend/config/constants.js +42 -0
  116. package/dist/backend/config/constants.js.map +1 -1
  117. package/dist/cli/backend/src/constants.d.ts +95 -0
  118. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  119. package/dist/cli/backend/src/constants.js +79 -1
  120. package/dist/cli/backend/src/constants.js.map +1 -1
  121. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
  122. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  123. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +183 -2
  124. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  125. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  126. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
  127. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  128. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
  129. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
  130. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
  131. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
  132. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
  133. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  134. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
  135. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  136. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
  137. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
  138. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
  139. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
  140. package/dist/cli/backend/src/services/chat-v2/types.d.ts +29 -0
  141. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -1
  142. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -1
  143. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
  144. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  145. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +38 -0
  146. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  147. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
  148. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  149. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  150. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
  151. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  152. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +13 -0
  153. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  154. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  155. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  156. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
  157. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  158. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  159. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +1 -0
  160. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  161. package/dist/cli/backend/src/types/slack.types.d.ts +12 -0
  162. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  163. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  164. package/dist/cli/config/constants.d.ts +42 -0
  165. package/dist/cli/config/constants.d.ts.map +1 -1
  166. package/dist/cli/config/constants.js +42 -0
  167. package/dist/cli/config/constants.js.map +1 -1
  168. package/package.json +1 -1
@@ -0,0 +1,207 @@
1
+ /**
2
+ * CloudOutboxStore — reads and trims the durable `cloud_outbox` that the
3
+ * `chat_messages` triggers fill, keeps the uploader's `cloud_sync_state`, and
4
+ * pages history for the first-sign-in backfill
5
+ * (specs/unified-conversations-cloud-store.md §A.4, §B.3, §B.4).
6
+ *
7
+ * The outbox is on disk, so a machine that is offline or signed out loses
8
+ * nothing: rows wait until the uploader drains them.
9
+ *
10
+ * @module services/chat-v2/sqlite/cloud-outbox.store
11
+ */
12
+ /** Columns of an upload row. */
13
+ const UPLOAD_COLUMNS = `
14
+ m.rowid AS rowid, m.id, m.channel_id, m.sender_type, m.sender_id, m.content, m.content_type,
15
+ m.created_at, m.metadata, m.mentions, m.thread_id, m.source, m.direction, m.sender_kind,
16
+ m.agent_session, m.ext_ref, m.cloud_sync, c.name AS channel_name, c.type AS channel_type,
17
+ (SELECT member_session FROM chat_channel_members cm
18
+ WHERE cm.channel_id = m.channel_id ORDER BY cm.joined_at ASC, cm.member_session ASC LIMIT 1) AS lead_member
19
+ `;
20
+ /** SQLite's bound-parameter ceiling is 999 on old builds; stay well under it. */
21
+ const IN_CHUNK = 500;
22
+ /** SQLite-backed outbox + sync-state store. */
23
+ export class CloudOutboxStore {
24
+ db;
25
+ constructor(db) {
26
+ this.db = db;
27
+ }
28
+ /**
29
+ * The oldest outbox rows, in upload order.
30
+ *
31
+ * @param limit - Maximum rows
32
+ * @returns Rows ordered by `seq`
33
+ */
34
+ peek(limit) {
35
+ const rows = this.db
36
+ .prepare('SELECT seq, message_id, op, enqueued_at FROM cloud_outbox ORDER BY seq ASC LIMIT ?')
37
+ .all(limit);
38
+ return rows.map((r) => ({ seq: r.seq, messageId: r.message_id, op: r.op, enqueuedAt: r.enqueued_at }));
39
+ }
40
+ /**
41
+ * Remove every outbox row up to and including `seq` (Cloud has them).
42
+ *
43
+ * @param seq - Highest acknowledged outbox seq
44
+ * @returns Rows removed
45
+ */
46
+ ackThrough(seq) {
47
+ return this.db.prepare('DELETE FROM cloud_outbox WHERE seq <= ?').run(seq).changes;
48
+ }
49
+ /** @returns Number of rows waiting in the outbox */
50
+ count() {
51
+ return this.db.prepare('SELECT COUNT(*) AS n FROM cloud_outbox').get().n;
52
+ }
53
+ /** Empty the outbox (account switch / sign-out: the backfill re-sends the window). */
54
+ clear() {
55
+ this.db.exec('DELETE FROM cloud_outbox');
56
+ }
57
+ /**
58
+ * Keep the outbox bounded while nothing drains it: drop rows older than
59
+ * `olderThanMs`, then the oldest beyond `maxRows`.
60
+ *
61
+ * @param options.maxRows - Row cap
62
+ * @param options.olderThanMs - Drop rows enqueued before this epoch ms
63
+ * @returns Rows dropped (a history gap on Cloud when > 0)
64
+ */
65
+ trim(options) {
66
+ let dropped = this.db.prepare('DELETE FROM cloud_outbox WHERE enqueued_at < ?').run(options.olderThanMs).changes;
67
+ const excess = this.count() - options.maxRows;
68
+ if (excess > 0) {
69
+ dropped += this.db
70
+ .prepare('DELETE FROM cloud_outbox WHERE seq IN (SELECT seq FROM cloud_outbox ORDER BY seq ASC LIMIT ?)')
71
+ .run(excess).changes;
72
+ }
73
+ return dropped;
74
+ }
75
+ /**
76
+ * Load messages by id, with their channel and attachment metadata.
77
+ *
78
+ * @param ids - Message ids
79
+ * @returns Map of id → row (ids with no row — deleted since — are absent)
80
+ */
81
+ getMessages(ids) {
82
+ const out = new Map();
83
+ for (let i = 0; i < ids.length; i += IN_CHUNK) {
84
+ const chunk = ids.slice(i, i + IN_CHUNK);
85
+ if (chunk.length === 0)
86
+ continue;
87
+ const rows = this.db
88
+ .prepare(`SELECT ${UPLOAD_COLUMNS}
89
+ FROM chat_messages m LEFT JOIN chat_channels c ON c.id = m.channel_id
90
+ WHERE m.id IN (${chunk.map(() => '?').join(', ')})`)
91
+ .all(...chunk);
92
+ for (const row of this.withAttachments(rows))
93
+ out.set(row.id, row);
94
+ }
95
+ return out;
96
+ }
97
+ /**
98
+ * One page of syncable history for the backfill, oldest first.
99
+ *
100
+ * @param sinceMs - Only rows created at/after this epoch ms (the plan window)
101
+ * @param after - Resume after this position (exclusive), or null to start
102
+ * @param limit - Page size
103
+ * @returns Rows in `created_at, rowid` order
104
+ */
105
+ backfillPage(sinceMs, after, limit) {
106
+ const params = [sinceMs];
107
+ let where = 'm.created_at >= ? AND COALESCE(m.cloud_sync, 1) = 1';
108
+ if (after) {
109
+ where += ' AND (m.created_at > ? OR (m.created_at = ? AND m.rowid > ?))';
110
+ params.push(after.createdAt, after.createdAt, after.rowid);
111
+ }
112
+ params.push(limit);
113
+ const rows = this.db
114
+ .prepare(`SELECT ${UPLOAD_COLUMNS}
115
+ FROM chat_messages m LEFT JOIN chat_channels c ON c.id = m.channel_id
116
+ WHERE ${where}
117
+ ORDER BY m.created_at ASC, m.rowid ASC
118
+ LIMIT ?`)
119
+ .all(...params);
120
+ return this.withAttachments(rows);
121
+ }
122
+ /**
123
+ * Read a sync-state value.
124
+ *
125
+ * @param key - State key
126
+ * @returns The value, or null
127
+ */
128
+ getState(key) {
129
+ const row = this.db.prepare('SELECT v FROM cloud_sync_state WHERE k = ?').get(key);
130
+ return row?.v ?? null;
131
+ }
132
+ /**
133
+ * Write (or with `null`, remove) a sync-state value.
134
+ *
135
+ * @param key - State key
136
+ * @param value - Value, or null to delete
137
+ */
138
+ setState(key, value) {
139
+ if (value === null) {
140
+ this.db.prepare('DELETE FROM cloud_sync_state WHERE k = ?').run(key);
141
+ return;
142
+ }
143
+ this.db
144
+ .prepare('INSERT INTO cloud_sync_state(k, v) VALUES (?, ?) ON CONFLICT(k) DO UPDATE SET v = excluded.v')
145
+ .run(key, value);
146
+ }
147
+ /**
148
+ * Remove every sync-state value except the ones listed.
149
+ *
150
+ * @param keep - Keys to preserve
151
+ */
152
+ clearState(keep = []) {
153
+ if (keep.length === 0) {
154
+ this.db.exec('DELETE FROM cloud_sync_state');
155
+ return;
156
+ }
157
+ this.db.prepare(`DELETE FROM cloud_sync_state WHERE k NOT IN (${keep.map(() => '?').join(', ')})`).run(...keep);
158
+ }
159
+ /**
160
+ * Attach attachment metadata and map to the camel-case row shape.
161
+ *
162
+ * @param rows - Raw rows
163
+ * @returns Upload rows
164
+ */
165
+ withAttachments(rows) {
166
+ if (rows.length === 0)
167
+ return [];
168
+ const byMessage = new Map();
169
+ const ids = rows.map((r) => r.id);
170
+ for (let i = 0; i < ids.length; i += IN_CHUNK) {
171
+ const chunk = ids.slice(i, i + IN_CHUNK);
172
+ const atts = this.db
173
+ .prepare(`SELECT message_id, kind, mime_type, size_bytes, original_name FROM chat_attachments
174
+ WHERE message_id IN (${chunk.map(() => '?').join(', ')})`)
175
+ .all(...chunk);
176
+ for (const a of atts) {
177
+ const list = byMessage.get(a.message_id) ?? [];
178
+ list.push({ kind: a.kind, mimeType: a.mime_type, sizeBytes: a.size_bytes, originalName: a.original_name });
179
+ byMessage.set(a.message_id, list);
180
+ }
181
+ }
182
+ return rows.map((r) => ({
183
+ rowid: r.rowid,
184
+ id: r.id,
185
+ channelId: r.channel_id,
186
+ senderType: r.sender_type,
187
+ senderId: r.sender_id,
188
+ content: r.content,
189
+ contentType: r.content_type,
190
+ createdAt: r.created_at,
191
+ metadata: r.metadata,
192
+ mentions: r.mentions,
193
+ threadId: r.thread_id,
194
+ source: r.source,
195
+ direction: r.direction,
196
+ senderKind: r.sender_kind,
197
+ agentSession: r.agent_session,
198
+ extRef: r.ext_ref,
199
+ cloudSync: r.cloud_sync,
200
+ channelName: r.channel_name ?? r.channel_id,
201
+ channelType: r.channel_type ?? 'dm',
202
+ leadMember: r.lead_member,
203
+ attachments: byMessage.get(r.id) ?? [],
204
+ }));
205
+ }
206
+ }
207
+ //# sourceMappingURL=cloud-outbox.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-outbox.store.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/cloud-outbox.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6EH,gCAAgC;AAChC,MAAM,cAAc,GAAG;;;;;;CAMtB,CAAC;AAEF,iFAAiF;AACjF,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,+CAA+C;AAC/C,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,EAAgB;QAAhB,OAAE,GAAF,EAAE,CAAc;IAAG,CAAC;IAEjD;;;;;OAKG;IACH,IAAI,CAAC,KAAa;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,oFAAoF,CAAC;aAC7F,GAAG,CAAC,KAAK,CAA6F,CAAC;QAC1G,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACrF,CAAC;IAED,oDAAoD;IACpD,KAAK;QACH,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,sFAAsF;IACtF,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,OAAiD;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QACjH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,IAAI,CAAC,EAAE;iBACf,OAAO,CAAC,+FAA+F,CAAC;iBACxG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,GAAsB;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN,UAAU,cAAc;;4BAEN,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrD;iBACA,GAAG,CAAC,GAAG,KAAK,CAAmB,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,OAAe,EAAE,KAA4B,EAAE,KAAa;QACvE,MAAM,MAAM,GAAa,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,qDAAqD,CAAC;QAClE,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,IAAI,+DAA+D,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,UAAU,cAAc;;iBAEf,KAAK;;iBAEL,CACV;aACA,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAqC,CAAC;QACvH,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW,EAAE,KAAoB;QACxC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,8FAA8F,CAAC;aACvG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,OAA0B,EAAE;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,IAAoB;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN;kCACwB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3D;iBACA,GAAG,CAAC,GAAG,KAAK,CAAqH,CAAC;YACrI,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC3G,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,YAAY,EAAE,CAAC,CAAC,aAAa;YAC7B,MAAM,EAAE,CAAC,CAAC,OAAO;YACjB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,WAAW,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU;YAC3C,WAAW,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;YACnC,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
@@ -13,8 +13,9 @@
13
13
  *
14
14
  * @module services/chat-v2/sqlite/message.store
15
15
  */
16
- import { type ChatContentType, type ChatMessageCursorPayload, type ChatMessageRow, type ChatSenderType } from '../types.js';
16
+ import { type ChatChannelType, type ChatContentType, type ChatMessageCursorPayload, type ChatMessageRow, type ChatSenderType } from '../types.js';
17
17
  import type { ChatDatabase } from './chat-db.js';
18
+ import { type OwnerIdentity } from './unified-log.js';
18
19
  /**
19
20
  * Encode a pagination cursor to an opaque base64url string.
20
21
  *
@@ -59,6 +60,18 @@ export interface MessageInsertInput {
59
60
  /** Override the generated id (tests / deterministic callers). */
60
61
  id?: string;
61
62
  }
63
+ /** A timeline row: the message, its unified-log columns, and its channel. */
64
+ export interface AgentTimelineRow extends ChatMessageRow {
65
+ /** SQLite rowid — the tie-breaker for rows created in the same ms. */
66
+ rowid: number;
67
+ source: string | null;
68
+ direction: string | null;
69
+ sender_kind: string | null;
70
+ agent_session: string | null;
71
+ ext_ref: string | null;
72
+ channel_name: string;
73
+ channel_type: ChatChannelType;
74
+ }
62
75
  /** Result of inserting a message — includes whether this was a dedupe hit. */
63
76
  export interface MessageInsertResult {
64
77
  row: ChatMessageRow;
@@ -80,7 +93,23 @@ export declare class MessageStore {
80
93
  static readonly MAX_LIMIT = 100;
81
94
  /** Default page size when caller didn't specify. */
82
95
  static readonly DEFAULT_LIMIT = 50;
96
+ /** Who the owner is (Slack user / workspace) — feeds `sender_kind` and `ext_ref`. */
97
+ private ownerIdentity;
83
98
  constructor(db: ChatDatabase);
99
+ /**
100
+ * Wire the owner-identity lookup used when deriving the unified-log
101
+ * columns. Called post-construction because Slack is configured after the
102
+ * chat store opens.
103
+ *
104
+ * @param provider - Returns the owner's identity, or null when unknown
105
+ */
106
+ setOwnerIdentityProvider(provider: () => OwnerIdentity | null): void;
107
+ /**
108
+ * Resolve the owner identity without letting a faulty provider break a write.
109
+ *
110
+ * @returns The identity, or null
111
+ */
112
+ private safeOwnerIdentity;
84
113
  /**
85
114
  * Insert a message into the channel.
86
115
  *
@@ -297,6 +326,38 @@ export declare class MessageStore {
297
326
  * @returns The latest Slack-origin root row, or null
298
327
  */
299
328
  findLatestSlackRoot(channelId: string): ChatMessageRow | null;
329
+ /**
330
+ * Surface of the owner's most recent message in a channel — the Slack
331
+ * reply-affinity rule (spec §A.3 G6) mirrors an agent's answer to Slack only
332
+ * when the owner last spoke there.
333
+ *
334
+ * Rows an agent wrote as a `user` turn (`sender_kind = 'agent'`) and other
335
+ * people's rows (`human`) are not the owner and are skipped.
336
+ *
337
+ * @param channelId - The chat-v2 channel id
338
+ * @returns The source column (`slack`, `crewly-chat`, `cloud-talk`, …), or null
339
+ */
340
+ latestOwnerTurnSource(channelId: string): string | null;
341
+ /**
342
+ * One page of an agent's merged timeline across every surface: rows whose
343
+ * `agent_session` is the agent, plus every row of the huddles the agent is
344
+ * a member of. Newest first (spec §A.5).
345
+ *
346
+ * @param agentSession - Agent session name
347
+ * @param options.before - Only rows strictly older than this (ms), or a
348
+ * `{createdAt, rowid}` position from a previous page
349
+ * @param options.limit - Page size (already clamped by the caller)
350
+ * @param options.sources - Restrict to these `source` values
351
+ * @returns Rows (with their channel's name/type and the rowid used for paging)
352
+ */
353
+ listAgentTimeline(agentSession: string, options: {
354
+ before?: {
355
+ createdAt: number;
356
+ rowid?: number;
357
+ };
358
+ limit: number;
359
+ sources?: string[];
360
+ }): Array<AgentTimelineRow>;
300
361
  findPendingSlackDelivery(maxAgeMs: number, nowMs?: number): ChatMessageRow[];
301
362
  }
302
363
  //# sourceMappingURL=message.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.store.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.store.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { randomUUID } from 'crypto';
17
17
  import { CHAT_ERROR_CODES, ChatError, } from '../types.js';
18
+ import { deriveUnifiedColumns } from './unified-log.js';
18
19
  // ---------------------------------------------------------------------------
19
20
  // Constants — shared SELECT column list, single source of truth
20
21
  // ---------------------------------------------------------------------------
@@ -76,9 +77,34 @@ export class MessageStore {
76
77
  static MAX_LIMIT = 100;
77
78
  /** Default page size when caller didn't specify. */
78
79
  static DEFAULT_LIMIT = 50;
80
+ /** Who the owner is (Slack user / workspace) — feeds `sender_kind` and `ext_ref`. */
81
+ ownerIdentity = () => null;
79
82
  constructor(db) {
80
83
  this.db = db;
81
84
  }
85
+ /**
86
+ * Wire the owner-identity lookup used when deriving the unified-log
87
+ * columns. Called post-construction because Slack is configured after the
88
+ * chat store opens.
89
+ *
90
+ * @param provider - Returns the owner's identity, or null when unknown
91
+ */
92
+ setOwnerIdentityProvider(provider) {
93
+ this.ownerIdentity = provider;
94
+ }
95
+ /**
96
+ * Resolve the owner identity without letting a faulty provider break a write.
97
+ *
98
+ * @returns The identity, or null
99
+ */
100
+ safeOwnerIdentity() {
101
+ try {
102
+ return this.ownerIdentity();
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
82
108
  /**
83
109
  * Insert a message into the channel.
84
110
  *
@@ -125,7 +151,7 @@ export class MessageStore {
125
151
  // Channel existence check — FK catches it too but we want a typed error
126
152
  // with a sensible status code.
127
153
  const channel = this.db
128
- .prepare('SELECT id, archived_at FROM chat_channels WHERE id = ?')
154
+ .prepare('SELECT id, archived_at, type, agent_session FROM chat_channels WHERE id = ?')
129
155
  .get(input.channelId);
130
156
  if (!channel) {
131
157
  throw new ChatError(CHAT_ERROR_CODES.CHANNEL_NOT_FOUND, 404, `Channel ${input.channelId} not found`);
@@ -139,12 +165,31 @@ export class MessageStore {
139
165
  FROM chat_messages
140
166
  WHERE channel_id = ?`)
141
167
  .get(input.channelId);
168
+ // Unified conversation log columns (spec §A.4). An agent's reply
169
+ // takes the surface of the latest inbound turn it answers.
170
+ const latestInboundSource = input.senderType === 'agent'
171
+ ? (this.db
172
+ .prepare(`SELECT source FROM chat_messages
173
+ WHERE channel_id = ? AND sender_type = 'user' AND source IS NOT NULL
174
+ ORDER BY seq DESC LIMIT 1`)
175
+ .get(input.channelId)?.source ?? null)
176
+ : null;
177
+ const unified = deriveUnifiedColumns({
178
+ senderType: input.senderType,
179
+ senderId: input.senderId,
180
+ metadata: metadataObj,
181
+ mentions: input.mentions ?? [],
182
+ channel: { id: channel.id, type: channel.type ?? 'dm', agentSession: channel.agent_session ?? '' },
183
+ latestInboundSource,
184
+ owner: this.safeOwnerIdentity(),
185
+ });
142
186
  this.db
143
187
  .prepare(`INSERT INTO chat_messages
144
188
  (id, channel_id, seq, sender_type, sender_id, content, content_type,
145
- created_at, metadata, mentions, thread_id)
146
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
147
- .run(id, input.channelId, seqRow.next_seq, input.senderType, input.senderId, input.content, contentType, createdAt, metadataJson, mentionsJson, threadId);
189
+ created_at, metadata, mentions, thread_id,
190
+ source, direction, sender_kind, agent_session, ext_ref, cloud_sync)
191
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
192
+ .run(id, input.channelId, seqRow.next_seq, input.senderType, input.senderId, input.content, contentType, createdAt, metadataJson, mentionsJson, threadId, unified.source, unified.direction, unified.senderKind, unified.agentSession, unified.extRef ? JSON.stringify(unified.extRef) : null, unified.cloudSync);
148
193
  // Touch last_message_at on the parent channel.
149
194
  this.db
150
195
  .prepare(`UPDATE chat_channels
@@ -571,6 +616,68 @@ export class MessageStore {
571
616
  .get(channelId);
572
617
  return row ?? null;
573
618
  }
619
+ /**
620
+ * Surface of the owner's most recent message in a channel — the Slack
621
+ * reply-affinity rule (spec §A.3 G6) mirrors an agent's answer to Slack only
622
+ * when the owner last spoke there.
623
+ *
624
+ * Rows an agent wrote as a `user` turn (`sender_kind = 'agent'`) and other
625
+ * people's rows (`human`) are not the owner and are skipped.
626
+ *
627
+ * @param channelId - The chat-v2 channel id
628
+ * @returns The source column (`slack`, `crewly-chat`, `cloud-talk`, …), or null
629
+ */
630
+ latestOwnerTurnSource(channelId) {
631
+ const row = this.db
632
+ .prepare(`SELECT source FROM chat_messages
633
+ WHERE channel_id = ? AND sender_type = 'user'
634
+ AND COALESCE(sender_kind, 'owner') = 'owner'
635
+ ORDER BY seq DESC
636
+ LIMIT 1`)
637
+ .get(channelId);
638
+ return row?.source ?? null;
639
+ }
640
+ /**
641
+ * One page of an agent's merged timeline across every surface: rows whose
642
+ * `agent_session` is the agent, plus every row of the huddles the agent is
643
+ * a member of. Newest first (spec §A.5).
644
+ *
645
+ * @param agentSession - Agent session name
646
+ * @param options.before - Only rows strictly older than this (ms), or a
647
+ * `{createdAt, rowid}` position from a previous page
648
+ * @param options.limit - Page size (already clamped by the caller)
649
+ * @param options.sources - Restrict to these `source` values
650
+ * @returns Rows (with their channel's name/type and the rowid used for paging)
651
+ */
652
+ listAgentTimeline(agentSession, options) {
653
+ const params = [agentSession, agentSession];
654
+ let where = `(m.agent_session = ? OR m.channel_id IN (
655
+ SELECT channel_id FROM chat_channel_members WHERE member_session = ?))`;
656
+ if (options.before) {
657
+ if (options.before.rowid !== undefined) {
658
+ where += ' AND (m.created_at < ? OR (m.created_at = ? AND m.rowid < ?))';
659
+ params.push(options.before.createdAt, options.before.createdAt, options.before.rowid);
660
+ }
661
+ else {
662
+ where += ' AND m.created_at < ?';
663
+ params.push(options.before.createdAt);
664
+ }
665
+ }
666
+ if (options.sources && options.sources.length > 0) {
667
+ where += ` AND m.source IN (${options.sources.map(() => '?').join(', ')})`;
668
+ params.push(...options.sources);
669
+ }
670
+ params.push(options.limit);
671
+ return this.db
672
+ .prepare(`SELECT m.rowid AS rowid, ${MESSAGE_SELECT_COLUMNS.split(',').map((c) => `m.${c.trim()}`).join(', ')},
673
+ m.source, m.direction, m.sender_kind, m.agent_session, m.ext_ref,
674
+ c.name AS channel_name, c.type AS channel_type
675
+ FROM chat_messages m JOIN chat_channels c ON c.id = m.channel_id
676
+ WHERE ${where}
677
+ ORDER BY m.created_at DESC, m.rowid DESC
678
+ LIMIT ?`)
679
+ .all(...params);
680
+ }
574
681
  findPendingSlackDelivery(maxAgeMs, nowMs) {
575
682
  const cutoff = (nowMs ?? Date.now()) - maxAgeMs;
576
683
  const rows = this.db
@@ -1 +1 @@
1
- {"version":3,"file":"message.store.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.store.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}