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,442 @@
1
+ /**
2
+ * Unified conversation log — the columns, outbox and migration that make
3
+ * `chat.db` the machine's superset of every conversation surface
4
+ * (specs/unified-conversations-cloud-store.md §A.4).
5
+ *
6
+ * Every message row carries first-class copies of what used to be hidden in
7
+ * `metadata` JSON:
8
+ *
9
+ * - `source` — which surface it belongs to (slack, crewly-chat, cloud-talk, …)
10
+ * - `direction` — `in` (to an agent), `out` (from an agent), `internal`
11
+ * - `sender_kind` — `owner`, `agent`, `human` (someone else), `system`
12
+ * - `agent_session` — the agent the message is to/from (denormalised)
13
+ * - `ext_ref` — JSON of external ids (Slack workspace/channel/ts/thread, …)
14
+ * - `cloud_sync` — 1 when the row may leave the machine, 0 when not (owner
15
+ * decision O3: other people's chatter in shared Slack
16
+ * channels stays local)
17
+ *
18
+ * A trigger on `chat_messages` fills `cloud_outbox` for every syncable insert,
19
+ * so any writer — present or future, through `recordTurn` or not — produces
20
+ * an upload row.
21
+ *
22
+ * @module services/chat-v2/sqlite/unified-log
23
+ */
24
+ import { CONVERSATION_LOG_CONSTANTS, OWNER_EVIDENCE_METADATA } from '../../../constants.js';
25
+ /** `metadata.source` values that tag an agent's reply rather than a surface. */
26
+ const REPLY_METADATA_SOURCES = new Set(['reply-tool', 'pty-runtime', 'in-process-runtime']);
27
+ /** Runtime capture tags — shown as `runtime` when nothing better is known. */
28
+ const RUNTIME_METADATA_SOURCES = new Set(['pty-runtime', 'in-process-runtime']);
29
+ /** Metadata sources that are already surface names. */
30
+ const DIRECT_METADATA_SOURCES = {
31
+ web: 'crewly-chat',
32
+ 'crewly-chat': 'crewly-chat',
33
+ slack: 'slack',
34
+ telegram: 'telegram',
35
+ 'google-chat': 'google-chat',
36
+ whatsapp: 'whatsapp',
37
+ 'cloud-talk': 'cloud-talk',
38
+ system: 'system',
39
+ };
40
+ /**
41
+ * Whether a value is one of the {@link ConversationSource} values.
42
+ *
43
+ * @param value - Candidate
44
+ * @returns True for a known source
45
+ */
46
+ export function isConversationSource(value) {
47
+ return typeof value === 'string' && CONVERSATION_LOG_CONSTANTS.SOURCES.includes(value);
48
+ }
49
+ /**
50
+ * The surface a channel id names, for legacy rows whose tag is missing or
51
+ * wrong (WhatsApp rows were tagged `slack` before G2).
52
+ *
53
+ * @param channelId - chat-v2 channel id
54
+ * @returns The surface, or null when the id says nothing
55
+ */
56
+ export function sourceFromChannelId(channelId) {
57
+ const id = channelId.toLowerCase();
58
+ const p = CONVERSATION_LOG_CONSTANTS.CHANNEL_PREFIXES;
59
+ if (id.startsWith(p.WHATSAPP))
60
+ return 'whatsapp';
61
+ if (id.startsWith(p.TELEGRAM))
62
+ return 'telegram';
63
+ if (id.startsWith(p.GOOGLE_CHAT))
64
+ return 'google-chat';
65
+ if (id.startsWith(p.SLACK))
66
+ return 'slack';
67
+ return null;
68
+ }
69
+ /**
70
+ * Read a non-empty string field.
71
+ *
72
+ * @param obj - Source object
73
+ * @param key - Field
74
+ * @returns The trimmed string, or undefined
75
+ */
76
+ function str(obj, key) {
77
+ const v = obj[key];
78
+ if (typeof v === 'string' && v.trim().length > 0)
79
+ return v;
80
+ if (typeof v === 'number' && Number.isFinite(v))
81
+ return String(v);
82
+ return undefined;
83
+ }
84
+ /**
85
+ * Resolve the `source` column.
86
+ *
87
+ * @param input - Derivation input
88
+ * @returns The surface
89
+ */
90
+ function deriveSource(input) {
91
+ const meta = str(input.metadata, 'source');
92
+ const byChannel = sourceFromChannelId(input.channel.id);
93
+ // Messenger channels are named after their surface; trust the name over a
94
+ // tag (a WhatsApp row tagged `slack` is WhatsApp).
95
+ if (byChannel && byChannel !== 'slack' && meta !== 'system')
96
+ return byChannel;
97
+ if (meta && DIRECT_METADATA_SOURCES[meta])
98
+ return DIRECT_METADATA_SOURCES[meta];
99
+ if (input.senderType === 'system')
100
+ return 'system';
101
+ if (input.senderType === 'agent' || (meta && REPLY_METADATA_SOURCES.has(meta))) {
102
+ if (isConversationSource(input.latestInboundSource))
103
+ return input.latestInboundSource;
104
+ if (byChannel)
105
+ return byChannel;
106
+ return meta && RUNTIME_METADATA_SOURCES.has(meta) ? 'runtime' : 'crewly-chat';
107
+ }
108
+ return byChannel ?? 'crewly-chat';
109
+ }
110
+ /**
111
+ * Resolve the `sender_kind` column.
112
+ *
113
+ * `owner` for the owner's own surfaces (Crewly Chat, Cloud Talk, messenger
114
+ * bridges — the same rows the approval gate reads as the owner). On Slack,
115
+ * where other people post too, `owner` only when the Slack user is the
116
+ * owner; when the owner's id is unknown a DM still counts as the owner and a
117
+ * shared channel does not.
118
+ *
119
+ * @param input - Derivation input
120
+ * @param source - Resolved source
121
+ * @returns The sender kind
122
+ */
123
+ function deriveSenderKind(input, source) {
124
+ if (input.senderType === 'agent')
125
+ return 'agent';
126
+ if (input.senderType === 'system')
127
+ return 'system';
128
+ const md = input.metadata;
129
+ if (str(md, OWNER_EVIDENCE_METADATA.AUTHOR_AGENT_SESSION) || str(md, OWNER_EVIDENCE_METADATA.REMOTE_AGENT_SESSION)) {
130
+ return 'agent';
131
+ }
132
+ const explicit = str(md, 'senderKind');
133
+ if (explicit && CONVERSATION_LOG_CONSTANTS.SENDER_KINDS.includes(explicit)) {
134
+ return explicit;
135
+ }
136
+ if (source !== 'slack')
137
+ return 'owner';
138
+ const slackUserId = str(md, 'slackUserId');
139
+ const ownerId = input.owner?.slackUserId ?? null;
140
+ if (slackUserId && ownerId)
141
+ return slackUserId === ownerId ? 'owner' : 'human';
142
+ return input.channel.type === 'dm' ? 'owner' : 'human';
143
+ }
144
+ /**
145
+ * Pick the external ids that apply to this row.
146
+ *
147
+ * @param md - Metadata
148
+ * @param source - Resolved source
149
+ * @param owner - Owner identity (supplies the Slack workspace when the row has none)
150
+ * @returns The ext ref, or null when there is nothing to keep
151
+ */
152
+ function deriveExtRef(md, source, owner) {
153
+ const ext = {};
154
+ const slackChannelId = str(md, 'slackChannelId');
155
+ if (slackChannelId || source === 'slack') {
156
+ const team = str(md, 'slackTeamId') ?? (slackChannelId ? owner?.slackTeamId ?? undefined : undefined);
157
+ if (team)
158
+ ext.slackTeamId = team;
159
+ if (slackChannelId)
160
+ ext.slackChannelId = slackChannelId;
161
+ const ts = str(md, 'slackTs');
162
+ if (ts)
163
+ ext.ts = ts;
164
+ const threadTs = str(md, 'slackThreadTs');
165
+ if (threadTs)
166
+ ext.threadTs = threadTs;
167
+ const user = str(md, 'slackUserId');
168
+ if (user)
169
+ ext.slackUserId = user;
170
+ }
171
+ const tgChat = str(md, 'telegramChatId');
172
+ if (tgChat)
173
+ ext.telegramChatId = tgChat;
174
+ const tgMsg = str(md, 'telegramMessageId');
175
+ if (tgMsg)
176
+ ext.telegramMessageId = tgMsg;
177
+ for (const key of ['gchatSpace', 'gchatThread', 'gchatMessage']) {
178
+ const v = str(md, key);
179
+ if (v)
180
+ ext[key] = v;
181
+ }
182
+ if (source === 'whatsapp') {
183
+ const chat = str(md, 'whatsappChatId') ?? str(md, 'chatId');
184
+ if (chat)
185
+ ext.whatsappChatId = chat;
186
+ }
187
+ return Object.keys(ext).length > 0 ? ext : null;
188
+ }
189
+ /**
190
+ * Derive the unified-log columns for one message.
191
+ *
192
+ * Pure: every input is passed in, so the same function serves live inserts
193
+ * and the legacy-row backfill.
194
+ *
195
+ * O3 (owner decision 2026-09-28): in a shared Slack channel (a `huddle` or
196
+ * `channel` room), only messages involving this account's agents may leave
197
+ * the machine — the owner's own messages, any local agent's message, and a
198
+ * message that @-mentions one of our agents. Anyone else's chatter is
199
+ * `cloud_sync = 0`.
200
+ *
201
+ * @param input - Row and channel facts
202
+ * @returns The derived columns
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * deriveUnifiedColumns({
207
+ * senderType: 'user', senderId: 'Maya', mentions: [],
208
+ * metadata: { source: 'slack', slackUserId: 'U2' },
209
+ * channel: { id: 'huddle-1', type: 'huddle', agentSession: '' },
210
+ * owner: { slackUserId: 'U1' },
211
+ * }).cloudSync; // 0 — someone else's chatter
212
+ * ```
213
+ */
214
+ export function deriveUnifiedColumns(input) {
215
+ const source = deriveSource(input);
216
+ const senderKind = deriveSenderKind(input, source);
217
+ const direction = input.senderType === 'agent' ? 'out' : input.senderType === 'system' ? 'internal' : 'in';
218
+ let agentSession = input.channel.agentSession || null;
219
+ if (!agentSession) {
220
+ if (input.senderType === 'agent')
221
+ agentSession = input.senderId || null;
222
+ else
223
+ agentSession = input.mentions.find((m) => m.length > 0) ?? null;
224
+ }
225
+ const sharedRoom = input.channel.type === 'huddle' || input.channel.type === 'channel';
226
+ const othersChatter = sharedRoom && source === 'slack' && input.senderType === 'user' && senderKind !== 'owner' && input.mentions.length === 0;
227
+ return {
228
+ source,
229
+ // Other people's chatter is not addressed to an agent: `internal`, which
230
+ // is also how Cloud's O3 filter reads it (`in` = delivered to an agent).
231
+ direction: othersChatter ? 'internal' : direction,
232
+ senderKind,
233
+ agentSession,
234
+ extRef: deriveExtRef(input.metadata, source, input.owner),
235
+ cloudSync: othersChatter ? 0 : 1,
236
+ };
237
+ }
238
+ /**
239
+ * Parse a stored metadata / mentions JSON column without throwing.
240
+ *
241
+ * @param raw - Column value
242
+ * @returns Parsed object (metadata) — `{}` when missing or malformed
243
+ */
244
+ export function parseMetadataColumn(raw) {
245
+ if (!raw)
246
+ return {};
247
+ try {
248
+ const parsed = JSON.parse(raw);
249
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
250
+ }
251
+ catch {
252
+ return {};
253
+ }
254
+ }
255
+ /**
256
+ * Parse a stored mentions JSON column without throwing.
257
+ *
258
+ * @param raw - Column value
259
+ * @returns String entries, `[]` when missing or malformed
260
+ */
261
+ export function parseMentionsColumn(raw) {
262
+ if (!raw)
263
+ return [];
264
+ try {
265
+ const parsed = JSON.parse(raw);
266
+ return Array.isArray(parsed) ? parsed.filter((m) => typeof m === 'string') : [];
267
+ }
268
+ catch {
269
+ return [];
270
+ }
271
+ }
272
+ // ---------------------------------------------------------------------------
273
+ // Migration
274
+ // ---------------------------------------------------------------------------
275
+ /** Columns added to `chat_messages` (name → ADD COLUMN clause). */
276
+ export const UNIFIED_LOG_MESSAGE_COLUMNS = [
277
+ { name: 'source', addClause: 'source TEXT' },
278
+ { name: 'direction', addClause: 'direction TEXT' },
279
+ { name: 'sender_kind', addClause: 'sender_kind TEXT' },
280
+ { name: 'agent_session', addClause: 'agent_session TEXT' },
281
+ { name: 'ext_ref', addClause: 'ext_ref TEXT' },
282
+ { name: 'cloud_sync', addClause: 'cloud_sync INTEGER' },
283
+ ];
284
+ /**
285
+ * Outbox, sync state, per-agent index and outbox triggers. Idempotent.
286
+ *
287
+ * The triggers skip rows with `cloud_sync = 0` (O3). An update enqueues only
288
+ * when user-visible content changes or a row becomes syncable (owner
289
+ * reclassification); metadata-only bookkeeping does not.
290
+ */
291
+ export const UNIFIED_LOG_SQL = `
292
+ CREATE INDEX IF NOT EXISTS ix_messages_agent_created
293
+ ON chat_messages(agent_session, created_at DESC);
294
+
295
+ -- Backfill pages history in created_at order (spec §B.4).
296
+ CREATE INDEX IF NOT EXISTS ix_messages_created
297
+ ON chat_messages(created_at);
298
+
299
+ CREATE TABLE IF NOT EXISTS cloud_outbox (
300
+ seq INTEGER PRIMARY KEY AUTOINCREMENT,
301
+ message_id TEXT NOT NULL,
302
+ op TEXT NOT NULL CHECK(op IN ('upsert','delete')),
303
+ enqueued_at INTEGER NOT NULL
304
+ );
305
+
306
+ CREATE TABLE IF NOT EXISTS cloud_sync_state (
307
+ k TEXT PRIMARY KEY,
308
+ v TEXT
309
+ );
310
+
311
+ CREATE TRIGGER IF NOT EXISTS trg_outbox_ins AFTER INSERT ON chat_messages
312
+ WHEN COALESCE(NEW.cloud_sync, 1) = 1
313
+ BEGIN
314
+ INSERT INTO cloud_outbox(message_id, op, enqueued_at) VALUES (NEW.id, 'upsert', NEW.created_at);
315
+ END;
316
+
317
+ CREATE TRIGGER IF NOT EXISTS trg_outbox_upd AFTER UPDATE OF content, cloud_sync ON chat_messages
318
+ WHEN COALESCE(NEW.cloud_sync, 1) = 1
319
+ AND (NEW.content IS NOT OLD.content OR COALESCE(OLD.cloud_sync, 1) <> 1)
320
+ BEGIN
321
+ INSERT INTO cloud_outbox(message_id, op, enqueued_at)
322
+ VALUES (NEW.id, 'upsert', CAST(strftime('%s','now') AS INTEGER) * 1000);
323
+ END;
324
+
325
+ CREATE TRIGGER IF NOT EXISTS trg_outbox_del AFTER DELETE ON chat_messages
326
+ WHEN COALESCE(OLD.cloud_sync, 1) = 1
327
+ BEGIN
328
+ INSERT INTO cloud_outbox(message_id, op, enqueued_at)
329
+ VALUES (OLD.id, 'delete', CAST(strftime('%s','now') AS INTEGER) * 1000);
330
+ END;
331
+ `;
332
+ /**
333
+ * Bring `chat.db` up to the unified-log schema: add the columns, create the
334
+ * outbox / state tables, index and triggers, then backfill rows that have no
335
+ * `source` yet (every row written before this migration).
336
+ *
337
+ * Backfilled rows are NOT put in the outbox — the first-sign-in backfill
338
+ * (spec §B.4) uploads history within the plan's window.
339
+ *
340
+ * Safe on every boot: each step is a no-op once applied.
341
+ *
342
+ * @param db - The chat database handle
343
+ * @returns What changed
344
+ */
345
+ export function applyUnifiedLogUpgrades(db) {
346
+ const existing = new Set(db.pragma('table_info(chat_messages)').map((c) => c.name));
347
+ const columnsAdded = [];
348
+ for (const col of UNIFIED_LOG_MESSAGE_COLUMNS) {
349
+ if (!existing.has(col.name)) {
350
+ db.exec(`ALTER TABLE chat_messages ADD COLUMN ${col.addClause}`);
351
+ columnsAdded.push(col.name);
352
+ }
353
+ }
354
+ db.exec(UNIFIED_LOG_SQL);
355
+ const rowsBackfilled = backfillUnifiedColumns(db);
356
+ return { columnsAdded, rowsBackfilled };
357
+ }
358
+ /**
359
+ * Give legacy rows (`source IS NULL`) their unified-log columns, best effort.
360
+ *
361
+ * Runs in pages of {@link CONVERSATION_LOG_CONSTANTS.BACKFILL_BATCH_SIZE}
362
+ * rows ordered by channel and seq, carrying each channel's latest inbound
363
+ * source forward so agent replies inherit the surface they answered. The
364
+ * owner's Slack id is unknown at boot, so shared-channel Slack rows land as
365
+ * `human`; {@link reclassifyOwnerSlackRows} upgrades them once it is known.
366
+ *
367
+ * Nothing is enqueued: the update trigger fires only when `content` changes
368
+ * or `cloud_sync` rises from a non-1 value, and legacy rows have
369
+ * `cloud_sync IS NULL`, which the trigger already treats as 1.
370
+ *
371
+ * @param db - The chat database handle
372
+ * @returns Rows updated
373
+ */
374
+ export function backfillUnifiedColumns(db) {
375
+ const pending = db.prepare('SELECT 1 FROM chat_messages WHERE source IS NULL LIMIT 1').get();
376
+ if (!pending)
377
+ return 0;
378
+ const select = db.prepare(`SELECT m.rowid AS rowid, m.id, m.channel_id, m.sender_type, m.sender_id, m.metadata, m.mentions,
379
+ c.type AS ch_type, c.agent_session AS ch_agent
380
+ FROM chat_messages m LEFT JOIN chat_channels c ON c.id = m.channel_id
381
+ WHERE m.source IS NULL
382
+ ORDER BY m.channel_id, m.seq
383
+ LIMIT ?`);
384
+ const update = db.prepare(`UPDATE chat_messages
385
+ SET source = ?, direction = ?, sender_kind = ?, agent_session = ?, ext_ref = ?, cloud_sync = ?
386
+ WHERE rowid = ?`);
387
+ const lastInbound = new Map();
388
+ let total = 0;
389
+ const batch = CONVERSATION_LOG_CONSTANTS.BACKFILL_BATCH_SIZE;
390
+ for (;;) {
391
+ const rows = select.all(batch);
392
+ if (rows.length === 0)
393
+ break;
394
+ db.transaction(() => {
395
+ for (const r of rows) {
396
+ const cols = deriveUnifiedColumns({
397
+ senderType: r.sender_type,
398
+ senderId: r.sender_id,
399
+ metadata: parseMetadataColumn(r.metadata),
400
+ mentions: parseMentionsColumn(r.mentions),
401
+ channel: { id: r.channel_id, type: r.ch_type ?? 'dm', agentSession: r.ch_agent ?? '' },
402
+ latestInboundSource: lastInbound.get(r.channel_id) ?? null,
403
+ owner: null,
404
+ });
405
+ if (r.sender_type === 'user')
406
+ lastInbound.set(r.channel_id, cols.source);
407
+ update.run(cols.source, cols.direction, cols.senderKind, cols.agentSession, cols.extRef ? JSON.stringify(cols.extRef) : null, cols.cloudSync, r.rowid);
408
+ }
409
+ })();
410
+ total += rows.length;
411
+ if (rows.length < batch)
412
+ break;
413
+ }
414
+ return total;
415
+ }
416
+ /**
417
+ * Once the owner's Slack user id is known, mark their Slack rows as the
418
+ * owner's and — in shared channels — syncable. Rows recorded before the id
419
+ * was available (legacy backfill, early boot) were conservatively `human`.
420
+ *
421
+ * Idempotent; the `cloud_sync` 0 → 1 flip enqueues those rows for upload
422
+ * through the update trigger.
423
+ *
424
+ * @param db - The chat database handle
425
+ * @param ownerSlackUserId - The owner's Slack user id
426
+ * @returns Rows reclassified
427
+ */
428
+ export function reclassifyOwnerSlackRows(db, ownerSlackUserId) {
429
+ if (!ownerSlackUserId)
430
+ return 0;
431
+ const result = db
432
+ .prepare(`UPDATE chat_messages
433
+ SET sender_kind = 'owner', cloud_sync = 1, direction = 'in'
434
+ WHERE source = 'slack' AND sender_type = 'user' AND sender_kind = 'human'
435
+ AND json_valid(metadata)
436
+ AND json_extract(metadata, '$.slackUserId') = ?
437
+ AND json_extract(metadata, '$.${OWNER_EVIDENCE_METADATA.AUTHOR_AGENT_SESSION}') IS NULL
438
+ AND json_extract(metadata, '$.${OWNER_EVIDENCE_METADATA.REMOTE_AGENT_SESSION}') IS NULL`)
439
+ .run(ownerSlackUserId);
440
+ return result.changes;
441
+ }
442
+ //# sourceMappingURL=unified-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-log.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/unified-log.ts"],"names":[],"mappings":"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"}
@@ -255,6 +255,35 @@ export interface ChatMessageListResult {
255
255
  prevCursor: string | null;
256
256
  channelId: string;
257
257
  }
258
+ /**
259
+ * One entry of an agent's merged timeline
260
+ * (`GET /api/chat/agents/:session/timeline`, specs/unified-conversations-cloud-store.md §A.5):
261
+ * the message plus where it happened.
262
+ */
263
+ export interface ChatTimelineItemDTO extends ChatMessageDTO {
264
+ /** Surface — slack, crewly-chat, cloud-talk, google-chat, telegram, whatsapp, system, runtime. */
265
+ source: string;
266
+ /** `in` (to an agent), `out` (from an agent), `internal`. */
267
+ direction: string;
268
+ /** `owner`, `agent`, `human`, `system`. */
269
+ senderKind: string;
270
+ /** The agent the message is to/from, when known. */
271
+ agentSession: string | null;
272
+ /** External ids (Slack workspace / channel / ts / thread, messenger ids). */
273
+ extRef: Record<string, string> | null;
274
+ /** Name of the channel the message lives in. */
275
+ channelName: string;
276
+ /** Type of that channel. */
277
+ channelType: ChatChannelType;
278
+ }
279
+ /** Response of the per-agent timeline. */
280
+ export interface ChatTimelineResult {
281
+ agentSession: string;
282
+ /** Newest first. */
283
+ items: ChatTimelineItemDTO[];
284
+ /** Pass as `cursor` to load the next (older) page; null on the last page. */
285
+ nextCursor: string | null;
286
+ }
258
287
  /** Body of `POST /channels`. */
259
288
  export interface CreateChannelInput {
260
289
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA4RhF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAIX,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IACA;IAEA;IAJlB,YACkB,IAAmB,EACnB,UAAkB,EAClC,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAe;QACnB,eAAU,GAAV,UAAU,CAAQ;QAElB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2ThF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAIX,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IACA;IAEA;IAJlB,YACkB,IAAmB,EACnB,UAAkB,EAClC,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAe;QACnB,eAAU,GAAV,UAAU,CAAQ;QAElB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -15,7 +15,7 @@
15
15
  * @module services/cloud/cloud-sync.service
16
16
  */
17
17
  import { EventEmitter } from 'events';
18
- import type { CloudSyncConfig, CloudSyncState, SyncDevice, MessageType } from './cloud-sync.types.js';
18
+ import type { CloudSyncConfig, CloudSyncHealth, CloudSyncState, SyncDevice, MessageType } from './cloud-sync.types.js';
19
19
  export declare class CloudSyncService extends EventEmitter {
20
20
  private static instance;
21
21
  private readonly logger;
@@ -60,6 +60,12 @@ export declare class CloudSyncService extends EventEmitter {
60
60
  * Keeps the last 500 IDs; pruned on overflow.
61
61
  */
62
62
  private processedMessageIds;
63
+ /** Epoch ms of the last request Cloud answered successfully (0 = never) */
64
+ private lastContactAt;
65
+ /** Epoch ms of the last start() (0 = never started) */
66
+ private startedAt;
67
+ /** True when Cloud's last answer was 401/403 and the token refresh failed */
68
+ private authRejected;
63
69
  /** Maximum size of the processedMessageIds dedup set */
64
70
  private static readonly MAX_DEDUP_IDS;
65
71
  private constructor();
@@ -100,6 +106,15 @@ export declare class CloudSyncService extends EventEmitter {
100
106
  * @returns Current CloudSyncState
101
107
  */
102
108
  getState(): CloudSyncState;
109
+ /**
110
+ * Connection health for the disconnect monitor: the state, when Cloud last
111
+ * answered, when sync was started and whether Cloud refused the sign-in.
112
+ *
113
+ * @returns Health snapshot (times are epoch ms, null when never)
114
+ */
115
+ getHealth(): CloudSyncHealth;
116
+ /** Record a request Cloud answered successfully. */
117
+ private markContact;
103
118
  /**
104
119
  * Get all cached devices for this Cloud account.
105
120
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,UAAU,EAKV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAsF/B,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAA6B;IAC1C,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAa;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAA+C;IACrE,+BAA+B;IAC/B,OAAO,CAAC,eAAe,CAA+C;IACtE,oEAAoE;IACpE,OAAO,CAAC,gBAAgB,CAA8C;IACtE,qEAAqE;IACrE,OAAO,CAAC,kBAAkB,CAAS;IACnC,kEAAkE;IAClE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAA+C;IACpE,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAuB;IAE7C,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAAK;IAChC,kCAAkC;IAClC,OAAO,CAAC,kBAAkB,CAA+C;IACzE,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAK;IAClC,sFAAsF;IACtF,OAAO,CAAC,OAAO,CAAuB;IACtC,iEAAiE;IACjE,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAqB;IAChD,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAK;IAC1B,uDAAuD;IACvD,OAAO,CAAC,SAAS,CAAK;IACtB,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAS;IAC7B,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAO;IAE5C,OAAO;IAKP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAW5B;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA6EpC;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAqBZ;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,QAAQ,IAAI,cAAc;IAI1B;;;;;OAKG;IACH,SAAS,IAAI,eAAe;IAS5B,oDAAoD;IACpD,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CzF;;;;;;;;;;;;;;;;;;OAkBG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IA+BhB;;;;;;;;;OASG;YACW,aAAa;IAiC3B;;;;;;OAMG;YACW,eAAe;IAuC7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAIrB,wDAAwD;IACxD,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;YACW,mBAAmB;IAUjC;;;;;OAKG;YACW,oBAAoB;IAYlC;;;OAGG;YACW,iBAAiB;IAiB/B;;;OAGG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;;;;;;;OAQG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;IAQ9B;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDpC;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsJlC;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAmIrC;;;;;;;;;;;;;;;;OAgBG;YACW,mBAAmB;IAgCjC;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO;IAkBxD;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;OAMG;YACW,WAAW;IA2BzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAqF7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B,yDAAyD;IACzD,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;;;;;;OAOG;YACW,eAAe;IAoC7B;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAMpB"}