siclaw 0.1.0 → 0.1.2

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 (270) hide show
  1. package/README.md +75 -114
  2. package/dist/agentbox/gateway-client.d.ts +2 -1
  3. package/dist/agentbox/gateway-client.js +6 -2
  4. package/dist/agentbox/gateway-client.js.map +1 -1
  5. package/dist/agentbox/http-server.js +184 -19
  6. package/dist/agentbox/http-server.js.map +1 -1
  7. package/dist/agentbox/resource-handlers.d.ts +1 -0
  8. package/dist/agentbox/resource-handlers.js +23 -23
  9. package/dist/agentbox/resource-handlers.js.map +1 -1
  10. package/dist/agentbox/session.js +85 -5
  11. package/dist/agentbox/session.js.map +1 -1
  12. package/dist/agentbox-main.d.ts +2 -1
  13. package/dist/agentbox-main.js +65 -18
  14. package/dist/agentbox-main.js.map +1 -1
  15. package/dist/cli-credentials.d.ts +1 -0
  16. package/dist/cli-credentials.js +109 -0
  17. package/dist/cli-credentials.js.map +1 -0
  18. package/dist/cli-first-run.d.ts +11 -0
  19. package/dist/cli-first-run.js +99 -0
  20. package/dist/cli-first-run.js.map +1 -0
  21. package/dist/cli-main.js +33 -11
  22. package/dist/cli-main.js.map +1 -1
  23. package/dist/cli-setup.d.ts +5 -11
  24. package/dist/cli-setup.js +12 -225
  25. package/dist/cli-setup.js.map +1 -1
  26. package/dist/core/agent-factory.d.ts +4 -0
  27. package/dist/core/agent-factory.js +102 -151
  28. package/dist/core/agent-factory.js.map +1 -1
  29. package/dist/core/config.d.ts +10 -3
  30. package/dist/core/config.js +11 -95
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/extensions/deep-investigation.d.ts +2 -1
  33. package/dist/core/extensions/deep-investigation.js +144 -24
  34. package/dist/core/extensions/deep-investigation.js.map +1 -1
  35. package/dist/core/extensions/setup.d.ts +8 -0
  36. package/dist/core/extensions/setup.js +669 -0
  37. package/dist/core/extensions/setup.js.map +1 -0
  38. package/dist/core/llm-proxy.js +7 -3
  39. package/dist/core/llm-proxy.js.map +1 -1
  40. package/dist/core/mcp-client.d.ts +0 -10
  41. package/dist/core/mcp-client.js +0 -65
  42. package/dist/core/mcp-client.js.map +1 -1
  43. package/dist/core/prompt.d.ts +1 -1
  44. package/dist/core/prompt.js +42 -5
  45. package/dist/core/prompt.js.map +1 -1
  46. package/dist/core/provider-presets.d.ts +14 -0
  47. package/dist/core/provider-presets.js +81 -0
  48. package/dist/core/provider-presets.js.map +1 -0
  49. package/dist/cron/cron-coordinator.d.ts +2 -0
  50. package/dist/cron/cron-coordinator.js +46 -14
  51. package/dist/cron/cron-coordinator.js.map +1 -1
  52. package/dist/cron/cron-executor.js +33 -8
  53. package/dist/cron/cron-executor.js.map +1 -1
  54. package/dist/cron/cron-scheduler.d.ts +1 -1
  55. package/dist/cron/gateway-client.d.ts +5 -0
  56. package/dist/cron/gateway-client.js +43 -8
  57. package/dist/cron/gateway-client.js.map +1 -1
  58. package/dist/cron-main.js +39 -9
  59. package/dist/cron-main.js.map +1 -1
  60. package/dist/gateway/agentbox/client.d.ts +11 -0
  61. package/dist/gateway/agentbox/client.js +18 -0
  62. package/dist/gateway/agentbox/client.js.map +1 -1
  63. package/dist/gateway/agentbox/k8s-spawner.d.ts +11 -2
  64. package/dist/gateway/agentbox/k8s-spawner.js +95 -52
  65. package/dist/gateway/agentbox/k8s-spawner.js.map +1 -1
  66. package/dist/gateway/agentbox/local-spawner.d.ts +1 -1
  67. package/dist/gateway/agentbox/local-spawner.js +4 -2
  68. package/dist/gateway/agentbox/local-spawner.js.map +1 -1
  69. package/dist/gateway/agentbox/manager.d.ts +0 -10
  70. package/dist/gateway/agentbox/manager.js +11 -30
  71. package/dist/gateway/agentbox/manager.js.map +1 -1
  72. package/dist/gateway/agentbox/types.d.ts +6 -4
  73. package/dist/gateway/cron/cron-service.d.ts +49 -0
  74. package/dist/gateway/cron/cron-service.js +259 -0
  75. package/dist/gateway/cron/cron-service.js.map +1 -0
  76. package/dist/gateway/db/init-schema.js +44 -0
  77. package/dist/gateway/db/init-schema.js.map +1 -1
  78. package/dist/gateway/db/migrate-sqlite.js +73 -4
  79. package/dist/gateway/db/migrate-sqlite.js.map +1 -1
  80. package/dist/gateway/db/repositories/chat-repo.d.ts +56 -2
  81. package/dist/gateway/db/repositories/chat-repo.js +132 -2
  82. package/dist/gateway/db/repositories/chat-repo.js.map +1 -1
  83. package/dist/gateway/db/repositories/config-repo.d.ts +31 -2
  84. package/dist/gateway/db/repositories/config-repo.js +57 -7
  85. package/dist/gateway/db/repositories/config-repo.js.map +1 -1
  86. package/dist/gateway/db/repositories/env-repo.d.ts +14 -0
  87. package/dist/gateway/db/repositories/env-repo.js +15 -2
  88. package/dist/gateway/db/repositories/env-repo.js.map +1 -1
  89. package/dist/gateway/db/repositories/model-config-repo.d.ts +1 -1
  90. package/dist/gateway/db/repositories/model-config-repo.js +26 -12
  91. package/dist/gateway/db/repositories/model-config-repo.js.map +1 -1
  92. package/dist/gateway/db/repositories/skill-repo.d.ts +0 -5
  93. package/dist/gateway/db/repositories/skill-review-repo.d.ts +1 -0
  94. package/dist/gateway/db/repositories/skill-review-repo.js +4 -1
  95. package/dist/gateway/db/repositories/skill-review-repo.js.map +1 -1
  96. package/dist/gateway/db/repositories/skill-version-repo.js +0 -1
  97. package/dist/gateway/db/repositories/skill-version-repo.js.map +1 -1
  98. package/dist/gateway/db/repositories/system-config-repo.d.ts +1 -1
  99. package/dist/gateway/db/repositories/system-config-repo.js +2 -1
  100. package/dist/gateway/db/repositories/system-config-repo.js.map +1 -1
  101. package/dist/gateway/db/repositories/user-env-config-repo.d.ts +13 -0
  102. package/dist/gateway/db/repositories/user-env-config-repo.js +11 -0
  103. package/dist/gateway/db/repositories/user-env-config-repo.js.map +1 -1
  104. package/dist/gateway/db/repositories/workspace-repo.d.ts +3 -2
  105. package/dist/gateway/db/repositories/workspace-repo.js +6 -2
  106. package/dist/gateway/db/repositories/workspace-repo.js.map +1 -1
  107. package/dist/gateway/db/schema-mysql.d.ts +473 -51
  108. package/dist/gateway/db/schema-mysql.js +35 -4
  109. package/dist/gateway/db/schema-mysql.js.map +1 -1
  110. package/dist/gateway/db/schema-sqlite.d.ts +522 -57
  111. package/dist/gateway/db/schema-sqlite.js +38 -6
  112. package/dist/gateway/db/schema-sqlite.js.map +1 -1
  113. package/dist/gateway/db/schema.d.ts +471 -51
  114. package/dist/gateway/db/schema.js +1 -1
  115. package/dist/gateway/db/schema.js.map +1 -1
  116. package/dist/gateway/metrics-aggregator.d.ts +65 -0
  117. package/dist/gateway/metrics-aggregator.js +244 -0
  118. package/dist/gateway/metrics-aggregator.js.map +1 -0
  119. package/dist/gateway/plugins/channel-bridge.d.ts +4 -1
  120. package/dist/gateway/plugins/channel-bridge.js +78 -86
  121. package/dist/gateway/plugins/channel-bridge.js.map +1 -1
  122. package/dist/gateway/rpc-methods.d.ts +4 -2
  123. package/dist/gateway/rpc-methods.js +962 -163
  124. package/dist/gateway/rpc-methods.js.map +1 -1
  125. package/dist/gateway/security/cert-manager.d.ts +2 -2
  126. package/dist/gateway/security/cert-manager.js +4 -2
  127. package/dist/gateway/security/cert-manager.js.map +1 -1
  128. package/dist/gateway/server.d.ts +4 -8
  129. package/dist/gateway/server.js +297 -261
  130. package/dist/gateway/server.js.map +1 -1
  131. package/dist/gateway/skills/file-writer.js +17 -11
  132. package/dist/gateway/skills/file-writer.js.map +1 -1
  133. package/dist/gateway/skills/script-evaluator.js +12 -9
  134. package/dist/gateway/skills/script-evaluator.js.map +1 -1
  135. package/dist/gateway/web/dist/assets/index-0p17ZeTP.js +740 -0
  136. package/dist/gateway/web/dist/assets/index-9eP6nPUq.js +741 -0
  137. package/dist/gateway/web/dist/assets/index-9eP6nPUq.js.map +1 -0
  138. package/dist/gateway/web/dist/assets/index-CAmSY91d.js +675 -0
  139. package/dist/gateway/web/dist/assets/index-DMFEh8Pp.css +1 -0
  140. package/dist/gateway/web/dist/assets/index-DyowBCEj.css +1 -0
  141. package/dist/gateway/web/dist/assets/index-PDK5JJDO.css +1 -0
  142. package/dist/gateway/web/dist/index.html +2 -2
  143. package/dist/gateway-main.js +27 -10
  144. package/dist/gateway-main.js.map +1 -1
  145. package/dist/memory/embeddings.js +5 -4
  146. package/dist/memory/embeddings.js.map +1 -1
  147. package/dist/memory/indexer.d.ts +23 -3
  148. package/dist/memory/indexer.js +235 -23
  149. package/dist/memory/indexer.js.map +1 -1
  150. package/dist/memory/schema.js +15 -1
  151. package/dist/memory/schema.js.map +1 -1
  152. package/dist/memory/types.d.ts +18 -0
  153. package/dist/memory/types.js +6 -1
  154. package/dist/memory/types.js.map +1 -1
  155. package/dist/shared/detect-language.d.ts +12 -0
  156. package/dist/shared/detect-language.js +78 -0
  157. package/dist/shared/detect-language.js.map +1 -0
  158. package/dist/shared/diagnostic-events.d.ts +70 -0
  159. package/dist/shared/diagnostic-events.js +38 -0
  160. package/dist/shared/diagnostic-events.js.map +1 -0
  161. package/dist/shared/local-collector.d.ts +56 -0
  162. package/dist/shared/local-collector.js +284 -0
  163. package/dist/shared/local-collector.js.map +1 -0
  164. package/dist/shared/metrics-types.d.ts +64 -0
  165. package/dist/shared/metrics-types.js +25 -0
  166. package/dist/shared/metrics-types.js.map +1 -0
  167. package/dist/shared/metrics.d.ts +19 -0
  168. package/dist/shared/metrics.js +185 -0
  169. package/dist/shared/metrics.js.map +1 -0
  170. package/dist/shared/path-utils.d.ts +15 -0
  171. package/dist/shared/path-utils.js +23 -0
  172. package/dist/shared/path-utils.js.map +1 -0
  173. package/dist/shared/retry.d.ts +35 -0
  174. package/dist/shared/retry.js +61 -0
  175. package/dist/shared/retry.js.map +1 -0
  176. package/dist/tools/command-sets.d.ts +18 -2
  177. package/dist/tools/command-sets.js +207 -32
  178. package/dist/tools/command-sets.js.map +1 -1
  179. package/dist/tools/command-validator.d.ts +56 -0
  180. package/dist/tools/command-validator.js +357 -0
  181. package/dist/tools/command-validator.js.map +1 -0
  182. package/dist/tools/create-skill.js +26 -1
  183. package/dist/tools/create-skill.js.map +1 -1
  184. package/dist/tools/credential-list.js +1 -23
  185. package/dist/tools/credential-list.js.map +1 -1
  186. package/dist/tools/credential-manager.d.ts +98 -0
  187. package/dist/tools/credential-manager.js +313 -0
  188. package/dist/tools/credential-manager.js.map +1 -0
  189. package/dist/tools/deep-search/engine.js +184 -127
  190. package/dist/tools/deep-search/engine.js.map +1 -1
  191. package/dist/tools/deep-search/prompts.d.ts +10 -2
  192. package/dist/tools/deep-search/prompts.js +37 -36
  193. package/dist/tools/deep-search/prompts.js.map +1 -1
  194. package/dist/tools/deep-search/schemas.d.ts +87 -0
  195. package/dist/tools/deep-search/schemas.js +85 -0
  196. package/dist/tools/deep-search/schemas.js.map +1 -0
  197. package/dist/tools/deep-search/sub-agent.d.ts +21 -0
  198. package/dist/tools/deep-search/sub-agent.js +153 -4
  199. package/dist/tools/deep-search/sub-agent.js.map +1 -1
  200. package/dist/tools/deep-search/tool.js +1 -0
  201. package/dist/tools/deep-search/tool.js.map +1 -1
  202. package/dist/tools/deep-search/types.d.ts +2 -0
  203. package/dist/tools/deep-search/types.js.map +1 -1
  204. package/dist/tools/dp-tools.js +29 -5
  205. package/dist/tools/dp-tools.js.map +1 -1
  206. package/dist/tools/exec-utils.d.ts +85 -0
  207. package/dist/tools/exec-utils.js +294 -0
  208. package/dist/tools/exec-utils.js.map +1 -0
  209. package/dist/tools/fork-skill.js +14 -2
  210. package/dist/tools/fork-skill.js.map +1 -1
  211. package/dist/tools/investigation-feedback.d.ts +3 -0
  212. package/dist/tools/investigation-feedback.js +71 -0
  213. package/dist/tools/investigation-feedback.js.map +1 -0
  214. package/dist/tools/manage-schedule.js +16 -6
  215. package/dist/tools/manage-schedule.js.map +1 -1
  216. package/dist/tools/netns-script.js +27 -281
  217. package/dist/tools/netns-script.js.map +1 -1
  218. package/dist/tools/node-exec.d.ts +2 -14
  219. package/dist/tools/node-exec.js +18 -225
  220. package/dist/tools/node-exec.js.map +1 -1
  221. package/dist/tools/node-script.js +14 -168
  222. package/dist/tools/node-script.js.map +1 -1
  223. package/dist/tools/pod-exec.d.ts +1 -1
  224. package/dist/tools/pod-exec.js +10 -26
  225. package/dist/tools/pod-exec.js.map +1 -1
  226. package/dist/tools/pod-nsenter-exec.js +21 -225
  227. package/dist/tools/pod-nsenter-exec.js.map +1 -1
  228. package/dist/tools/pod-script.js +10 -19
  229. package/dist/tools/pod-script.js.map +1 -1
  230. package/dist/tools/restricted-bash.d.ts +1 -17
  231. package/dist/tools/restricted-bash.js +38 -252
  232. package/dist/tools/restricted-bash.js.map +1 -1
  233. package/dist/tools/run-skill.d.ts +3 -1
  234. package/dist/tools/run-skill.js +21 -1
  235. package/dist/tools/run-skill.js.map +1 -1
  236. package/dist/tools/script-resolver.d.ts +3 -1
  237. package/dist/tools/script-resolver.js +74 -30
  238. package/dist/tools/script-resolver.js.map +1 -1
  239. package/dist/tools/update-skill.js +17 -6
  240. package/dist/tools/update-skill.js.map +1 -1
  241. package/package.json +8 -6
  242. package/siclaw.mjs +10 -1
  243. package/skills/core/cluster-events/SKILL.md +1 -1
  244. package/skills/core/deep-investigation/SKILL.md +11 -0
  245. package/skills/core/deployment-rollout-debug/SKILL.md +1 -1
  246. package/skills/core/dns-debug/SKILL.md +1 -0
  247. package/skills/core/meta.json +12 -1
  248. package/skills/core/networkpolicy-debug/SKILL.md +332 -0
  249. package/skills/core/node-logs/scripts/get-node-logs.sh +19 -9
  250. package/skills/core/pod-pending-debug/SKILL.md +1 -0
  251. package/skills/core/quota-debug/SKILL.md +203 -0
  252. package/skills/core/service-debug/SKILL.md +1 -0
  253. package/skills/core/statefulset-debug/SKILL.md +280 -0
  254. package/skills/core/volcano-diagnose-pod/SKILL.md +196 -0
  255. package/skills/core/volcano-diagnose-pod/scripts/diagnose-pod.sh +175 -0
  256. package/skills/core/volcano-gang-scheduling/SKILL.md +299 -0
  257. package/skills/core/volcano-job-diagnose/SKILL.md +319 -0
  258. package/skills/core/volcano-job-diagnose/scripts/diagnose-job.sh +253 -0
  259. package/skills/core/volcano-node-resources/SKILL.md +334 -0
  260. package/skills/core/volcano-node-resources/scripts/get-node-resources.sh +281 -0
  261. package/skills/core/volcano-queue-diagnose/SKILL.md +294 -0
  262. package/skills/core/volcano-queue-diagnose/scripts/diagnose-queue.sh +283 -0
  263. package/skills/core/volcano-resource-insufficient/SKILL.md +315 -0
  264. package/skills/core/volcano-scheduler-config/SKILL.md +371 -0
  265. package/skills/core/volcano-scheduler-config/scripts/get-scheduler-config.sh +297 -0
  266. package/skills/core/volcano-scheduler-logs/SKILL.md +241 -0
  267. package/skills/core/volcano-scheduler-logs/scripts/get-scheduler-logs.sh +159 -0
  268. package/skills/platform/create-skill/SKILL.md +35 -3
  269. package/skills/platform/manage-skill/SKILL.md +9 -2
  270. package/skills/platform/update-skill/SKILL.md +17 -6
@@ -2,8 +2,8 @@
2
2
  * Chat Repository — session & message CRUD
3
3
  */
4
4
  import crypto from "node:crypto";
5
- import { eq, desc, and, lt, isNull, sql } from "drizzle-orm";
6
- import { sessions, messages } from "../schema.js";
5
+ import { eq, desc, and, lt, lte, gte, isNull, isNotNull, or, like, inArray, sql } from "drizzle-orm";
6
+ import { sessions, messages, users, sessionStats } from "../schema.js";
7
7
  export class ChatRepository {
8
8
  db;
9
9
  constructor(db) {
@@ -91,9 +91,139 @@ export class ChatRepository {
91
91
  toolName: msg.toolName ?? null,
92
92
  toolInput: msg.toolInput ?? null,
93
93
  metadata: msg.metadata ?? null,
94
+ userId: msg.userId ?? null,
95
+ outcome: msg.outcome ?? null,
96
+ durationMs: msg.durationMs ?? null,
94
97
  });
95
98
  return id;
96
99
  }
100
+ async getMessageById(messageId) {
101
+ const rows = await this.db
102
+ .select()
103
+ .from(messages)
104
+ .where(eq(messages.id, messageId))
105
+ .limit(1);
106
+ return rows[0] ?? null;
107
+ }
108
+ async queryAuditLogs(opts) {
109
+ const conditions = [eq(messages.role, "tool")];
110
+ if (opts.userId)
111
+ conditions.push(eq(messages.userId, opts.userId));
112
+ if (opts.userName) {
113
+ const escaped = opts.userName.replace(/[%_]/g, "\\$&");
114
+ conditions.push(like(users.username, `%${escaped}%`));
115
+ }
116
+ if (opts.toolName)
117
+ conditions.push(eq(messages.toolName, opts.toolName));
118
+ if (opts.outcome)
119
+ conditions.push(eq(messages.outcome, opts.outcome));
120
+ if (opts.startDate)
121
+ conditions.push(gte(messages.timestamp, new Date(opts.startDate * 1000)));
122
+ if (opts.endDate)
123
+ conditions.push(lte(messages.timestamp, new Date(opts.endDate * 1000)));
124
+ if (opts.cursorTs != null) {
125
+ const cursorDate = new Date(opts.cursorTs * 1000);
126
+ if (opts.cursorId) {
127
+ conditions.push(or(lt(messages.timestamp, cursorDate), and(eq(messages.timestamp, cursorDate), lt(messages.id, opts.cursorId))));
128
+ }
129
+ else {
130
+ conditions.push(lt(messages.timestamp, cursorDate));
131
+ }
132
+ }
133
+ return this.db
134
+ .select({
135
+ id: messages.id,
136
+ userId: messages.userId,
137
+ userName: users.username,
138
+ toolName: messages.toolName,
139
+ toolInput: messages.toolInput,
140
+ outcome: messages.outcome,
141
+ durationMs: messages.durationMs,
142
+ timestamp: messages.timestamp,
143
+ })
144
+ .from(messages)
145
+ .leftJoin(users, eq(messages.userId, users.id))
146
+ .where(and(...conditions))
147
+ .orderBy(desc(messages.timestamp), desc(messages.id))
148
+ .limit(opts.limit + 1);
149
+ }
150
+ // ── DB Cleanup Methods ──────────────────────────────
151
+ static BATCH_SIZE = 500;
152
+ /**
153
+ * Soft-delete inactive sessions (no activity for `inactiveDays`).
154
+ * Only targets sessions that haven't been deleted yet.
155
+ */
156
+ async softDeleteInactiveSessions(inactiveDays) {
157
+ const cutoff = new Date(Date.now() - inactiveDays * 86400_000);
158
+ const now = new Date();
159
+ let total = 0;
160
+ while (true) {
161
+ const ids = await this.db
162
+ .select({ id: sessions.id })
163
+ .from(sessions)
164
+ .where(and(isNull(sessions.deletedAt), lt(sessions.lastActiveAt, cutoff)))
165
+ .limit(ChatRepository.BATCH_SIZE);
166
+ if (ids.length === 0)
167
+ break;
168
+ await this.db
169
+ .update(sessions)
170
+ .set({ deletedAt: now })
171
+ .where(inArray(sessions.id, ids.map((r) => r.id)));
172
+ total += ids.length;
173
+ if (ids.length < ChatRepository.BATCH_SIZE)
174
+ break;
175
+ }
176
+ return total;
177
+ }
178
+ /**
179
+ * Hard-delete sessions that were soft-deleted more than `deletedDays` ago.
180
+ * Messages are cleaned up automatically via FK CASCADE.
181
+ */
182
+ async purgeDeletedSessions(deletedDays) {
183
+ const cutoff = new Date(Date.now() - deletedDays * 86400_000);
184
+ let total = 0;
185
+ while (true) {
186
+ const ids = await this.db
187
+ .select({ id: sessions.id })
188
+ .from(sessions)
189
+ .where(and(isNotNull(sessions.deletedAt), lt(sessions.deletedAt, cutoff)))
190
+ .limit(ChatRepository.BATCH_SIZE);
191
+ if (ids.length === 0)
192
+ break;
193
+ await this.db
194
+ .delete(sessions)
195
+ .where(inArray(sessions.id, ids.map((r) => r.id)));
196
+ total += ids.length;
197
+ if (ids.length < ChatRepository.BATCH_SIZE)
198
+ break;
199
+ }
200
+ return total;
201
+ }
202
+ /**
203
+ * Hard-delete session_stats older than `retentionDays`.
204
+ * Note: sessionStats.createdAt is a raw epoch number in milliseconds
205
+ * (no mode:"timestamp"), so we compare with numeric ms, not Date.
206
+ */
207
+ async purgeOldSessionStats(retentionDays) {
208
+ const cutoff = Date.now() - retentionDays * 86400_000;
209
+ let total = 0;
210
+ while (true) {
211
+ const ids = await this.db
212
+ .select({ id: sessionStats.id })
213
+ .from(sessionStats)
214
+ .where(lt(sessionStats.createdAt, cutoff))
215
+ .limit(ChatRepository.BATCH_SIZE);
216
+ if (ids.length === 0)
217
+ break;
218
+ await this.db
219
+ .delete(sessionStats)
220
+ .where(inArray(sessionStats.id, ids.map((r) => r.id)));
221
+ total += ids.length;
222
+ if (ids.length < ChatRepository.BATCH_SIZE)
223
+ break;
224
+ }
225
+ return total;
226
+ }
97
227
  async updateMetadata(userId, messageId, metadata) {
98
228
  // Merge with existing metadata — verify ownership via session join
99
229
  const rows = await this.db
@@ -1 +1 @@
1
- {"version":3,"file":"chat-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/chat-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/chat-repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,EAAE,EAAE,WAAoB;QACjE,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;aACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aACpC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,KAAc,EAAE,WAAoB;QACtE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpC,EAAE;YACF,MAAM;YACN,WAAW,EAAE,WAAW,IAAI,IAAI;YAChC,KAAK,EAAE,KAAK,IAAI,UAAU;YAC1B,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,CAAC;SAChB,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,SAAiB;QACnD,6DAA6D;QAC7D,0DAA0D;QAC1D,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,SAAiB,EACjB,OAA6C;QAE7C,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC;YACH,GAAG,OAAO;YACV,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QAC3C,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC;YACH,YAAY,EAAE,GAAG,CAAA,mBAAmB;YACpC,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,IAAwC;QAExC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM;YACxB,CAAC,CAAC,GAAG,CACD,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EACjC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CACpC;YACH,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEtC,2DAA2D;QAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,KAAK,CAAC;aACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAUnB;QACC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpC,EAAE;YACF,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;YAC9B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;YAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;SACnC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAUpB;QACC,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,OAAO;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,IAAI,CAAC,OAAO;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1F,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CACb,EAAE,CACA,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,EAClC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CACvE,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,CAAC;YACN,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;aACD,IAAI,CAAC,QAAQ,CAAC;aACd,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aAC9C,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;aACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aACpD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,uDAAuD;IAE/C,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,0BAA0B,CAAC,YAAoB;QACnD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;iBACtB,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;iBAC3B,IAAI,CAAC,QAAQ,CAAC;iBACd,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;iBACzE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAC5B,MAAM,IAAI,CAAC,EAAE;iBACV,MAAM,CAAC,QAAQ,CAAC;iBAChB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;iBACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU;gBAAE,MAAM;QACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;iBACtB,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;iBAC3B,IAAI,CAAC,QAAQ,CAAC;iBACd,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;iBACzE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAC5B,MAAM,IAAI,CAAC,EAAE;iBACV,MAAM,CAAC,QAAQ,CAAC;iBAChB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU;gBAAE,MAAM;QACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,aAAqB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,SAAS,CAAC;QACtD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;iBACtB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;iBAC/B,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBACzC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAC5B,MAAM,IAAI,CAAC,EAAE;iBACV,MAAM,CAAC,YAAY,CAAC;iBACpB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU;gBAAE,MAAM;QACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,SAAiB,EACjB,QAAiC;QAEjC,mEAAmE;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACvC,IAAI,CAAC,QAAQ,CAAC;aACd,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;aACxD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACnE,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO;QACrB,MAAM,QAAQ,GAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAoC,IAAI,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;aACzB,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC"}
@@ -13,7 +13,9 @@ export declare class ConfigRepository {
13
13
  configJson: Record<string, unknown> | null;
14
14
  }[]>;
15
15
  saveChannel(userId: string, channelType: string, enabled: boolean, config: Record<string, unknown>): Promise<void>;
16
- listCronJobs(userId: string, envId?: string): Promise<{
16
+ listCronJobs(userId: string, opts?: {
17
+ workspaceId?: string;
18
+ }): Promise<{
17
19
  id: string;
18
20
  userId: string;
19
21
  name: string;
@@ -27,6 +29,7 @@ export declare class ConfigRepository {
27
29
  lockedBy: string | null;
28
30
  lockedAt: Date | null;
29
31
  envId: string | null;
32
+ workspaceId: string | null;
30
33
  }[]>;
31
34
  saveCronJob(userId: string, job: {
32
35
  id?: string;
@@ -35,7 +38,7 @@ export declare class ConfigRepository {
35
38
  schedule: string;
36
39
  skillId?: string;
37
40
  status?: "active" | "paused";
38
- envId?: string | null;
41
+ workspaceId?: string | null;
39
42
  }): Promise<string>;
40
43
  deleteCronJob(id: string): Promise<void>;
41
44
  getCronJobById(id: string): Promise<{
@@ -52,6 +55,7 @@ export declare class ConfigRepository {
52
55
  lockedBy: string | null;
53
56
  lockedAt: Date | null;
54
57
  envId: string | null;
58
+ workspaceId: string | null;
55
59
  }>;
56
60
  listAllActiveCronJobs(): Promise<{
57
61
  id: string;
@@ -67,6 +71,7 @@ export declare class ConfigRepository {
67
71
  lockedBy: string | null;
68
72
  lockedAt: Date | null;
69
73
  envId: string | null;
74
+ workspaceId: string | null;
70
75
  }[]>;
71
76
  listCronJobsByInstance(instanceId: string): Promise<{
72
77
  id: string;
@@ -82,8 +87,25 @@ export declare class ConfigRepository {
82
87
  lockedBy: string | null;
83
88
  lockedAt: Date | null;
84
89
  envId: string | null;
90
+ workspaceId: string | null;
85
91
  }[]>;
86
92
  updateCronJobRun(id: string, result: "success" | "failure"): Promise<void>;
93
+ insertCronJobRun(params: {
94
+ jobId: string;
95
+ status: "success" | "failure";
96
+ resultText?: string;
97
+ error?: string;
98
+ durationMs?: number;
99
+ }): Promise<string>;
100
+ listCronJobRuns(jobId: string, limit?: number): Promise<{
101
+ id: string;
102
+ jobId: string;
103
+ status: string;
104
+ resultText: string | null;
105
+ error: string | null;
106
+ durationMs: number | null;
107
+ createdAt: Date;
108
+ }[]>;
87
109
  assignCronJob(jobId: string, instanceId: string): Promise<void>;
88
110
  /** Atomically claim an unassigned job — returns true if claimed by us */
89
111
  claimUnassignedJob(jobId: string, instanceId: string): Promise<boolean>;
@@ -131,7 +153,14 @@ export declare class ConfigRepository {
131
153
  lockedBy: string | null;
132
154
  lockedAt: Date | null;
133
155
  envId: string | null;
156
+ workspaceId: string | null;
134
157
  }[]>;
158
+ /** Atomically lock a job for execution — returns true if locked by us */
159
+ lockJobForExecution(jobId: string, executionId: string): Promise<boolean>;
160
+ /** Unlock a job after execution (only if still locked by us) */
161
+ unlockJob(jobId: string, executionId: string): Promise<void>;
162
+ /** Clear locks older than thresholdMs (stale lock cleanup) */
163
+ clearStaleLocks(thresholdMs: number): Promise<void>;
135
164
  listTriggers(userId: string): Promise<{
136
165
  id: string;
137
166
  userId: string;
@@ -2,8 +2,8 @@
2
2
  * Config Repository — channels, cron jobs, triggers
3
3
  */
4
4
  import crypto from "node:crypto";
5
- import { eq, and, isNull, gt, asc, sql } from "drizzle-orm";
6
- import { channels, cronJobs, cronInstances, triggers } from "../schema.js";
5
+ import { eq, and, isNull, isNotNull, gt, lte, asc, sql } from "drizzle-orm";
6
+ import { channels, cronJobs, cronJobRuns, cronInstances, triggers } from "../schema.js";
7
7
  import { isUniqueViolation } from "../dialect-helpers.js";
8
8
  export class ConfigRepository {
9
9
  db;
@@ -39,10 +39,10 @@ export class ConfigRepository {
39
39
  }
40
40
  }
41
41
  // ─── Cron Jobs ────────────────────────────────
42
- async listCronJobs(userId, envId) {
42
+ async listCronJobs(userId, opts) {
43
43
  const conditions = [eq(cronJobs.userId, userId)];
44
- if (envId !== undefined) {
45
- conditions.push(eq(cronJobs.envId, envId));
44
+ if (opts?.workspaceId !== undefined) {
45
+ conditions.push(eq(cronJobs.workspaceId, opts.workspaceId));
46
46
  }
47
47
  return this.db
48
48
  .select()
@@ -67,7 +67,7 @@ export class ConfigRepository {
67
67
  schedule: job.schedule,
68
68
  skillId: job.skillId ?? null,
69
69
  status: job.status ?? "active",
70
- envId: job.envId ?? null,
70
+ workspaceId: job.workspaceId ?? null,
71
71
  })
72
72
  .where(eq(cronJobs.id, id));
73
73
  }
@@ -80,7 +80,7 @@ export class ConfigRepository {
80
80
  schedule: job.schedule,
81
81
  skillId: job.skillId ?? null,
82
82
  status: job.status ?? "active",
83
- envId: job.envId ?? null,
83
+ workspaceId: job.workspaceId ?? null,
84
84
  });
85
85
  }
86
86
  return id;
@@ -114,6 +114,27 @@ export class ConfigRepository {
114
114
  .set({ lastRunAt: new Date(), lastResult: result })
115
115
  .where(eq(cronJobs.id, id));
116
116
  }
117
+ // ─── Cron Job Runs (execution history) ──────
118
+ async insertCronJobRun(params) {
119
+ const id = crypto.randomUUID();
120
+ await this.db.insert(cronJobRuns).values({
121
+ id,
122
+ jobId: params.jobId,
123
+ status: params.status,
124
+ resultText: params.resultText ?? null,
125
+ error: params.error ?? null,
126
+ durationMs: params.durationMs ?? null,
127
+ });
128
+ return id;
129
+ }
130
+ async listCronJobRuns(jobId, limit = 20) {
131
+ return this.db
132
+ .select()
133
+ .from(cronJobRuns)
134
+ .where(eq(cronJobRuns.jobId, jobId))
135
+ .orderBy(sql `${cronJobRuns.createdAt} DESC`)
136
+ .limit(limit);
137
+ }
117
138
  async assignCronJob(jobId, instanceId) {
118
139
  await this.db
119
140
  .update(cronJobs)
@@ -211,6 +232,35 @@ export class ConfigRepository {
211
232
  .from(cronJobs)
212
233
  .where(and(eq(cronJobs.status, "active"), isNull(cronJobs.assignedTo)));
213
234
  }
235
+ /** Atomically lock a job for execution — returns true if locked by us */
236
+ async lockJobForExecution(jobId, executionId) {
237
+ await this.db
238
+ .update(cronJobs)
239
+ .set({ lockedBy: executionId, lockedAt: new Date() })
240
+ .where(and(eq(cronJobs.id, jobId), isNull(cronJobs.lockedBy)));
241
+ // Verify by reading back (same pattern as claimUnassignedJob)
242
+ const row = await this.db
243
+ .select({ lockedBy: cronJobs.lockedBy })
244
+ .from(cronJobs)
245
+ .where(eq(cronJobs.id, jobId))
246
+ .limit(1);
247
+ return row[0]?.lockedBy === executionId;
248
+ }
249
+ /** Unlock a job after execution (only if still locked by us) */
250
+ async unlockJob(jobId, executionId) {
251
+ await this.db
252
+ .update(cronJobs)
253
+ .set({ lockedBy: null, lockedAt: null })
254
+ .where(and(eq(cronJobs.id, jobId), eq(cronJobs.lockedBy, executionId)));
255
+ }
256
+ /** Clear locks older than thresholdMs (stale lock cleanup) */
257
+ async clearStaleLocks(thresholdMs) {
258
+ const cutoff = new Date(Date.now() - thresholdMs);
259
+ await this.db
260
+ .update(cronJobs)
261
+ .set({ lockedBy: null, lockedAt: null })
262
+ .where(and(isNotNull(cronJobs.lockedBy), lte(cronJobs.lockedAt, cutoff)));
263
+ }
214
264
  // ─── Triggers ─────────────────────────────────
215
265
  async listTriggers(userId) {
216
266
  return this.db
@@ -1 +1 @@
1
- {"version":3,"file":"config-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/config-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/config-repo.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class EnvironmentRepository {
9
9
  id: string;
10
10
  name: string;
11
11
  isTest: boolean;
12
+ apiServer: string;
12
13
  allowedServers: string | null;
13
14
  defaultKubeconfig: string | null;
14
15
  createdBy: string | null;
@@ -19,16 +20,29 @@ export declare class EnvironmentRepository {
19
20
  id: string;
20
21
  name: string;
21
22
  isTest: boolean;
23
+ apiServer: string;
22
24
  allowedServers: string | null;
23
25
  defaultKubeconfig: string | null;
24
26
  createdBy: string | null;
25
27
  createdAt: Date;
26
28
  updatedAt: Date;
27
29
  }>;
30
+ listByIds(ids: string[]): Promise<{
31
+ id: string;
32
+ name: string;
33
+ isTest: boolean;
34
+ apiServer: string;
35
+ allowedServers: string | null;
36
+ defaultKubeconfig: string | null;
37
+ createdBy: string | null;
38
+ createdAt: Date;
39
+ updatedAt: Date;
40
+ }[]>;
28
41
  save(env: {
29
42
  id?: string;
30
43
  name: string;
31
44
  isTest?: boolean;
45
+ apiServer: string;
32
46
  allowedServers?: string | null;
33
47
  defaultKubeconfig?: string | null;
34
48
  }, createdBy?: string): Promise<string>;
@@ -2,7 +2,7 @@
2
2
  * Environment Repository — CRUD for admin-managed environments
3
3
  */
4
4
  import crypto from "node:crypto";
5
- import { eq } from "drizzle-orm";
5
+ import { eq, inArray } from "drizzle-orm";
6
6
  import { environments } from "../schema.js";
7
7
  export class EnvironmentRepository {
8
8
  db;
@@ -15,6 +15,7 @@ export class EnvironmentRepository {
15
15
  id: environments.id,
16
16
  name: environments.name,
17
17
  isTest: environments.isTest,
18
+ apiServer: environments.apiServer,
18
19
  allowedServers: environments.allowedServers,
19
20
  defaultKubeconfig: environments.defaultKubeconfig,
20
21
  createdBy: environments.createdBy,
@@ -31,10 +32,21 @@ export class EnvironmentRepository {
31
32
  .limit(1);
32
33
  return rows[0] ?? null;
33
34
  }
35
+ async listByIds(ids) {
36
+ if (ids.length === 0)
37
+ return [];
38
+ return this.db
39
+ .select()
40
+ .from(environments)
41
+ .where(inArray(environments.id, ids));
42
+ }
34
43
  async save(env, createdBy) {
44
+ if (!env.apiServer || typeof env.apiServer !== "string" || !env.apiServer.trim()) {
45
+ throw new Error("apiServer is required and must be a non-empty string");
46
+ }
35
47
  if (env.id) {
36
48
  // Update existing
37
- const updates = { name: env.name };
49
+ const updates = { name: env.name, apiServer: env.apiServer };
38
50
  if (env.isTest !== undefined)
39
51
  updates.isTest = env.isTest;
40
52
  if (env.allowedServers !== undefined)
@@ -53,6 +65,7 @@ export class EnvironmentRepository {
53
65
  id,
54
66
  name: env.name,
55
67
  isTest: env.isTest ?? false,
68
+ apiServer: env.apiServer,
56
69
  allowedServers: env.allowedServers ?? null,
57
70
  defaultKubeconfig: env.defaultKubeconfig ?? null,
58
71
  createdBy: createdBy ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"env-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/env-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-repo.js","sourceRoot":"","sources":["../../../../src/gateway/db/repositories/env-repo.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export declare class ModelConfigRepository {
19
19
  authHeader: boolean;
20
20
  modelCount: number;
21
21
  }[]>;
22
- saveProvider(providerName: string, baseUrl?: string, apiKey?: string): Promise<void>;
22
+ saveProvider(providerName: string, baseUrl?: string, apiKey?: string, api?: string, authHeader?: boolean): Promise<void>;
23
23
  deleteProvider(providerName: string): Promise<void>;
24
24
  listModels(providerName?: string): Promise<{
25
25
  id: string;
@@ -27,29 +27,38 @@ export class ModelConfigRepository {
27
27
  }
28
28
  // ─── Providers ─────────────────────────────────
29
29
  async listProviders() {
30
- const rows = await this.db
30
+ const provRows = await this.db
31
31
  .select({
32
+ id: modelProviders.id,
32
33
  name: modelProviders.name,
33
34
  baseUrl: modelProviders.baseUrl,
34
35
  apiKey: modelProviders.apiKey,
35
36
  api: modelProviders.api,
36
37
  authHeader: modelProviders.authHeader,
37
38
  sortOrder: modelProviders.sortOrder,
38
- modelCount: sql `(SELECT COUNT(*) FROM model_entries WHERE provider_id = ${modelProviders.id})`,
39
39
  })
40
40
  .from(modelProviders)
41
41
  .orderBy(modelProviders.sortOrder);
42
- return rows.map((r) => ({
42
+ // Count models per provider (avoids sql.js subquery issues)
43
+ const countRows = await this.db
44
+ .select({
45
+ providerId: modelEntries.providerId,
46
+ count: sql `COUNT(*)`,
47
+ })
48
+ .from(modelEntries)
49
+ .groupBy(modelEntries.providerId);
50
+ const countMap = new Map(countRows.map((r) => [r.providerId, Number(r.count)]));
51
+ return provRows.map((r) => ({
43
52
  name: r.name,
44
53
  baseUrl: r.baseUrl ?? "",
45
54
  apiKey: r.apiKey ? "••••••" + (r.apiKey.length > 6 ? r.apiKey.slice(-4) : "") : "",
46
55
  apiKeySet: !!r.apiKey,
47
56
  api: r.api,
48
57
  authHeader: r.authHeader,
49
- modelCount: Number(r.modelCount),
58
+ modelCount: countMap.get(r.id) ?? 0,
50
59
  }));
51
60
  }
52
- async saveProvider(providerName, baseUrl, apiKey) {
61
+ async saveProvider(providerName, baseUrl, apiKey, api, authHeader) {
53
62
  const rows = await this.db
54
63
  .select()
55
64
  .from(modelProviders)
@@ -62,8 +71,8 @@ export class ModelConfigRepository {
62
71
  name: providerName,
63
72
  baseUrl: baseUrl ?? null,
64
73
  apiKey: apiKey ?? null,
65
- api: "openai-completions",
66
- authHeader: false,
74
+ api: api ?? "openai-completions",
75
+ authHeader: authHeader ?? false,
67
76
  sortOrder: 0,
68
77
  });
69
78
  return;
@@ -74,6 +83,10 @@ export class ModelConfigRepository {
74
83
  updates.baseUrl = baseUrl;
75
84
  if (apiKey !== undefined)
76
85
  updates.apiKey = apiKey;
86
+ if (api !== undefined)
87
+ updates.api = api;
88
+ if (authHeader !== undefined)
89
+ updates.authHeader = authHeader;
77
90
  await this.db
78
91
  .update(modelProviders)
79
92
  .set(updates)
@@ -322,11 +335,12 @@ export class ModelConfigRepository {
322
335
  if (rows.length === 0)
323
336
  return null;
324
337
  const row = rows[0];
325
- return {
326
- provider: row.providerName ?? "",
327
- model: row.model ?? "",
328
- dimensions: row.dimensions,
329
- };
338
+ const provider = row.providerName ?? "";
339
+ const model = row.model ?? "";
340
+ // Treat empty/placeholder values as unconfigured
341
+ if (!provider || !model)
342
+ return null;
343
+ return { provider, model, dimensions: row.dimensions };
330
344
  }
331
345
  async getResolvedEmbeddingConfig() {
332
346
  const config = await this.getEmbeddingConfig();