daycare-cli 2026.2.6 → 2026.2.7

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 (259) hide show
  1. package/dist/engine/agents/agent.d.ts +3 -2
  2. package/dist/engine/agents/agent.d.ts.map +1 -1
  3. package/dist/engine/agents/agent.js +11 -6
  4. package/dist/engine/agents/agent.js.map +1 -1
  5. package/dist/engine/agents/agent.spec.js +51 -9
  6. package/dist/engine/agents/agent.spec.js.map +1 -1
  7. package/dist/engine/agents/agentContext.d.ts +10 -0
  8. package/dist/engine/agents/agentContext.d.ts.map +1 -0
  9. package/dist/engine/agents/agentContext.js +13 -0
  10. package/dist/engine/agents/agentContext.js.map +1 -0
  11. package/dist/engine/agents/agentContext.spec.d.ts +2 -0
  12. package/dist/engine/agents/agentContext.spec.d.ts.map +1 -0
  13. package/dist/engine/agents/agentContext.spec.js +21 -0
  14. package/dist/engine/agents/agentContext.spec.js.map +1 -0
  15. package/dist/engine/agents/agentSystem.d.ts +9 -0
  16. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  17. package/dist/engine/agents/agentSystem.js +129 -9
  18. package/dist/engine/agents/agentSystem.js.map +1 -1
  19. package/dist/engine/agents/agentSystem.spec.js +88 -0
  20. package/dist/engine/agents/agentSystem.spec.js.map +1 -1
  21. package/dist/engine/agents/ops/agentDescriptorWrite.d.ts +2 -1
  22. package/dist/engine/agents/ops/agentDescriptorWrite.d.ts.map +1 -1
  23. package/dist/engine/agents/ops/agentDescriptorWrite.js +25 -1
  24. package/dist/engine/agents/ops/agentDescriptorWrite.js.map +1 -1
  25. package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
  26. package/dist/engine/agents/ops/agentLoopRun.js +3 -0
  27. package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
  28. package/dist/engine/agents/ops/agentLoopRun.spec.js +5 -0
  29. package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
  30. package/dist/engine/agents/ops/agentStateWrite.d.ts.map +1 -1
  31. package/dist/engine/agents/ops/agentStateWrite.js +1 -0
  32. package/dist/engine/agents/ops/agentStateWrite.js.map +1 -1
  33. package/dist/engine/apps/appExecute.spec.js +4 -0
  34. package/dist/engine/apps/appExecute.spec.js.map +1 -1
  35. package/dist/engine/apps/appInstallToolBuild.spec.js +1 -0
  36. package/dist/engine/apps/appInstallToolBuild.spec.js.map +1 -1
  37. package/dist/engine/apps/appRuleToolBuild.spec.js +1 -0
  38. package/dist/engine/apps/appRuleToolBuild.spec.js.map +1 -1
  39. package/dist/engine/apps/appToolExecutorBuild.spec.js +1 -0
  40. package/dist/engine/apps/appToolExecutorBuild.spec.js.map +1 -1
  41. package/dist/engine/channels/channels.d.ts +1 -1
  42. package/dist/engine/channels/channels.d.ts.map +1 -1
  43. package/dist/engine/channels/channels.js +20 -0
  44. package/dist/engine/channels/channels.js.map +1 -1
  45. package/dist/engine/channels/channels.spec.js +19 -0
  46. package/dist/engine/channels/channels.spec.js.map +1 -1
  47. package/dist/engine/cron/cronTypes.d.ts +2 -0
  48. package/dist/engine/cron/cronTypes.d.ts.map +1 -1
  49. package/dist/engine/cron/crons.d.ts.map +1 -1
  50. package/dist/engine/cron/crons.js +11 -1
  51. package/dist/engine/cron/crons.js.map +1 -1
  52. package/dist/engine/cron/ops/cronScheduler.d.ts.map +1 -1
  53. package/dist/engine/cron/ops/cronScheduler.js +5 -2
  54. package/dist/engine/cron/ops/cronScheduler.js.map +1 -1
  55. package/dist/engine/cron/ops/cronScheduler.spec.js +3 -1
  56. package/dist/engine/cron/ops/cronScheduler.spec.js.map +1 -1
  57. package/dist/engine/cron/ops/cronStore.d.ts.map +1 -1
  58. package/dist/engine/cron/ops/cronStore.js +17 -0
  59. package/dist/engine/cron/ops/cronStore.js.map +1 -1
  60. package/dist/engine/cron/ops/cronStore.spec.js +3 -0
  61. package/dist/engine/cron/ops/cronStore.spec.js.map +1 -1
  62. package/dist/engine/engine.js +2 -2
  63. package/dist/engine/engine.js.map +1 -1
  64. package/dist/engine/heartbeat/heartbeats.d.ts.map +1 -1
  65. package/dist/engine/heartbeat/heartbeats.js +11 -1
  66. package/dist/engine/heartbeat/heartbeats.js.map +1 -1
  67. package/dist/engine/modules/monty/montyPythonTypeFromSchemaRuntime.spec.js +1 -0
  68. package/dist/engine/modules/monty/montyPythonTypeFromSchemaRuntime.spec.js.map +1 -1
  69. package/dist/engine/modules/rlm/rlmExecute.spec.js +1 -0
  70. package/dist/engine/modules/rlm/rlmExecute.spec.js.map +1 -1
  71. package/dist/engine/modules/rlm/rlmRestore.spec.js +1 -0
  72. package/dist/engine/modules/rlm/rlmRestore.spec.js.map +1 -1
  73. package/dist/engine/modules/rlm/rlmTool.spec.js +10 -1
  74. package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
  75. package/dist/engine/modules/toolResolver.spec.js +8 -7
  76. package/dist/engine/modules/toolResolver.spec.js.map +1 -1
  77. package/dist/engine/modules/tools/agentCompactTool.spec.js +1 -0
  78. package/dist/engine/modules/tools/agentCompactTool.spec.js.map +1 -1
  79. package/dist/engine/modules/tools/agentResetTool.spec.js +1 -0
  80. package/dist/engine/modules/tools/agentResetTool.spec.js.map +1 -1
  81. package/dist/engine/modules/tools/background.spec.js +1 -0
  82. package/dist/engine/modules/tools/background.spec.js.map +1 -1
  83. package/dist/engine/modules/tools/channelCreateTool.spec.js +1 -0
  84. package/dist/engine/modules/tools/channelCreateTool.spec.js.map +1 -1
  85. package/dist/engine/modules/tools/channelHistoryTool.spec.js +1 -0
  86. package/dist/engine/modules/tools/channelHistoryTool.spec.js.map +1 -1
  87. package/dist/engine/modules/tools/channelMemberTool.spec.js +1 -0
  88. package/dist/engine/modules/tools/channelMemberTool.spec.js.map +1 -1
  89. package/dist/engine/modules/tools/channelSendTool.spec.js +1 -0
  90. package/dist/engine/modules/tools/channelSendTool.spec.js.map +1 -1
  91. package/dist/engine/modules/tools/cron.d.ts.map +1 -1
  92. package/dist/engine/modules/tools/cron.js +1 -0
  93. package/dist/engine/modules/tools/cron.js.map +1 -1
  94. package/dist/engine/modules/tools/image-generation.spec.js +1 -0
  95. package/dist/engine/modules/tools/image-generation.spec.js.map +1 -1
  96. package/dist/engine/modules/tools/mermaid-png.spec.js +1 -0
  97. package/dist/engine/modules/tools/mermaid-png.spec.js.map +1 -1
  98. package/dist/engine/modules/tools/permanentAgentToolBuild.d.ts.map +1 -1
  99. package/dist/engine/modules/tools/permanentAgentToolBuild.js +6 -2
  100. package/dist/engine/modules/tools/permanentAgentToolBuild.js.map +1 -1
  101. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +4 -0
  102. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
  103. package/dist/engine/modules/tools/permissions.spec.js +1 -0
  104. package/dist/engine/modules/tools/permissions.spec.js.map +1 -1
  105. package/dist/engine/modules/tools/sendUserMessageTool.spec.js +1 -0
  106. package/dist/engine/modules/tools/sendUserMessageTool.spec.js.map +1 -1
  107. package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js +1 -0
  108. package/dist/engine/modules/tools/sessionHistoryToolBuild.spec.js.map +1 -1
  109. package/dist/engine/modules/tools/signal.d.ts.map +1 -1
  110. package/dist/engine/modules/tools/signal.js +7 -2
  111. package/dist/engine/modules/tools/signal.js.map +1 -1
  112. package/dist/engine/modules/tools/signal.spec.js +11 -3
  113. package/dist/engine/modules/tools/signal.spec.js.map +1 -1
  114. package/dist/engine/modules/tools/signalEventsCsvToolBuild.spec.js +1 -0
  115. package/dist/engine/modules/tools/signalEventsCsvToolBuild.spec.js.map +1 -1
  116. package/dist/engine/modules/tools/signalSubscribeToolBuild.d.ts.map +1 -1
  117. package/dist/engine/modules/tools/signalSubscribeToolBuild.js +3 -2
  118. package/dist/engine/modules/tools/signalSubscribeToolBuild.js.map +1 -1
  119. package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js +14 -4
  120. package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js.map +1 -1
  121. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.d.ts.map +1 -1
  122. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.js +3 -2
  123. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.js.map +1 -1
  124. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js +16 -2
  125. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js.map +1 -1
  126. package/dist/engine/modules/tools/skillToolBuild.spec.js +1 -0
  127. package/dist/engine/modules/tools/skillToolBuild.spec.js.map +1 -1
  128. package/dist/engine/modules/tools/topologyToolBuild.d.ts +1 -1
  129. package/dist/engine/modules/tools/topologyToolBuild.d.ts.map +1 -1
  130. package/dist/engine/modules/tools/topologyToolBuild.js +11 -4
  131. package/dist/engine/modules/tools/topologyToolBuild.js.map +1 -1
  132. package/dist/engine/modules/tools/topologyToolBuild.spec.js +24 -6
  133. package/dist/engine/modules/tools/topologyToolBuild.spec.js.map +1 -1
  134. package/dist/engine/modules/tools/types.d.ts +2 -2
  135. package/dist/engine/modules/tools/types.d.ts.map +1 -1
  136. package/dist/engine/signals/signalTypes.d.ts +7 -0
  137. package/dist/engine/signals/signalTypes.d.ts.map +1 -1
  138. package/dist/engine/signals/signals.d.ts.map +1 -1
  139. package/dist/engine/signals/signals.js +38 -14
  140. package/dist/engine/signals/signals.js.map +1 -1
  141. package/dist/engine/signals/signals.spec.js +45 -8
  142. package/dist/engine/signals/signals.spec.js.map +1 -1
  143. package/dist/plugins/dashboard/site/404.html +1 -1
  144. package/dist/plugins/dashboard/site/agent.html +1 -1
  145. package/dist/plugins/dashboard/site/agent.txt +1 -1
  146. package/dist/plugins/dashboard/site/agents.html +1 -1
  147. package/dist/plugins/dashboard/site/agents.txt +1 -1
  148. package/dist/plugins/dashboard/site/automations.html +1 -1
  149. package/dist/plugins/dashboard/site/automations.txt +1 -1
  150. package/dist/plugins/dashboard/site/connectors.html +1 -1
  151. package/dist/plugins/dashboard/site/connectors.txt +1 -1
  152. package/dist/plugins/dashboard/site/index.html +1 -1
  153. package/dist/plugins/dashboard/site/index.txt +1 -1
  154. package/dist/plugins/dashboard/site/processes.html +1 -1
  155. package/dist/plugins/dashboard/site/processes.txt +1 -1
  156. package/dist/plugins/dashboard/site/providers.html +1 -1
  157. package/dist/plugins/dashboard/site/providers.txt +1 -1
  158. package/dist/plugins/dashboard/site/signals.html +1 -1
  159. package/dist/plugins/dashboard/site/signals.txt +1 -1
  160. package/dist/plugins/dashboard/site/telemetry.html +1 -1
  161. package/dist/plugins/dashboard/site/telemetry.txt +1 -1
  162. package/dist/plugins/dashboard/site/tools.html +1 -1
  163. package/dist/plugins/dashboard/site/tools.txt +1 -1
  164. package/dist/plugins/database/__tests__/plugin.spec.js +3 -1
  165. package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
  166. package/dist/plugins/monty-python/tool.spec.js +2 -1
  167. package/dist/plugins/monty-python/tool.spec.js.map +1 -1
  168. package/dist/plugins/shell/processTools.spec.js +1 -0
  169. package/dist/plugins/shell/processTools.spec.js.map +1 -1
  170. package/dist/plugins/shell/tool.spec.js +2 -1
  171. package/dist/plugins/shell/tool.spec.js.map +1 -1
  172. package/dist/storage/agentDb.spec.js +4 -0
  173. package/dist/storage/agentDb.spec.js.map +1 -1
  174. package/dist/storage/agentDbParse.d.ts.map +1 -1
  175. package/dist/storage/agentDbParse.js +1 -0
  176. package/dist/storage/agentDbParse.js.map +1 -1
  177. package/dist/storage/agentDbParse.spec.d.ts +2 -0
  178. package/dist/storage/agentDbParse.spec.d.ts.map +1 -0
  179. package/dist/storage/agentDbParse.spec.js +27 -0
  180. package/dist/storage/agentDbParse.spec.js.map +1 -0
  181. package/dist/storage/agentDbWrite.d.ts.map +1 -1
  182. package/dist/storage/agentDbWrite.js +4 -2
  183. package/dist/storage/agentDbWrite.js.map +1 -1
  184. package/dist/storage/databaseTypes.d.ts +27 -0
  185. package/dist/storage/databaseTypes.d.ts.map +1 -1
  186. package/dist/storage/migrations/20260220_add_users.d.ts +7 -0
  187. package/dist/storage/migrations/20260220_add_users.d.ts.map +1 -0
  188. package/dist/storage/migrations/20260220_add_users.js +31 -0
  189. package/dist/storage/migrations/20260220_add_users.js.map +1 -0
  190. package/dist/storage/migrations/20260220_add_users.spec.d.ts +2 -0
  191. package/dist/storage/migrations/20260220_add_users.spec.d.ts.map +1 -0
  192. package/dist/storage/migrations/20260220_add_users.spec.js +61 -0
  193. package/dist/storage/migrations/20260220_add_users.spec.js.map +1 -0
  194. package/dist/storage/migrations/20260220_users_bootstrap.d.ts +3 -0
  195. package/dist/storage/migrations/20260220_users_bootstrap.d.ts.map +1 -0
  196. package/dist/storage/migrations/20260220_users_bootstrap.js +114 -0
  197. package/dist/storage/migrations/20260220_users_bootstrap.js.map +1 -0
  198. package/dist/storage/migrations/20260220_users_bootstrap.spec.d.ts +2 -0
  199. package/dist/storage/migrations/20260220_users_bootstrap.spec.d.ts.map +1 -0
  200. package/dist/storage/migrations/20260220_users_bootstrap.spec.js +200 -0
  201. package/dist/storage/migrations/20260220_users_bootstrap.spec.js.map +1 -0
  202. package/dist/storage/migrations/_migrations.d.ts.map +1 -1
  203. package/dist/storage/migrations/_migrations.js +5 -1
  204. package/dist/storage/migrations/_migrations.js.map +1 -1
  205. package/dist/storage/sessionDb.spec.js +2 -0
  206. package/dist/storage/sessionDb.spec.js.map +1 -1
  207. package/dist/storage/sessionHistoryDb.spec.js +2 -0
  208. package/dist/storage/sessionHistoryDb.spec.js.map +1 -1
  209. package/dist/storage/userConnectorKeyCreate.d.ts +6 -0
  210. package/dist/storage/userConnectorKeyCreate.d.ts.map +1 -0
  211. package/dist/storage/userConnectorKeyCreate.js +16 -0
  212. package/dist/storage/userConnectorKeyCreate.js.map +1 -0
  213. package/dist/storage/userConnectorKeyCreate.spec.d.ts +2 -0
  214. package/dist/storage/userConnectorKeyCreate.spec.d.ts.map +1 -0
  215. package/dist/storage/userConnectorKeyCreate.spec.js +17 -0
  216. package/dist/storage/userConnectorKeyCreate.spec.js.map +1 -0
  217. package/dist/storage/userDb.spec.d.ts +2 -0
  218. package/dist/storage/userDb.spec.d.ts.map +1 -0
  219. package/dist/storage/userDb.spec.js +148 -0
  220. package/dist/storage/userDb.spec.js.map +1 -0
  221. package/dist/storage/userDbConnectorKeyAdd.d.ts +7 -0
  222. package/dist/storage/userDbConnectorKeyAdd.d.ts.map +1 -0
  223. package/dist/storage/userDbConnectorKeyAdd.js +18 -0
  224. package/dist/storage/userDbConnectorKeyAdd.js.map +1 -0
  225. package/dist/storage/userDbDelete.d.ts +7 -0
  226. package/dist/storage/userDbDelete.d.ts.map +1 -0
  227. package/dist/storage/userDbDelete.js +15 -0
  228. package/dist/storage/userDbDelete.js.map +1 -0
  229. package/dist/storage/userDbList.d.ts +8 -0
  230. package/dist/storage/userDbList.d.ts.map +1 -0
  231. package/dist/storage/userDbList.js +39 -0
  232. package/dist/storage/userDbList.js.map +1 -0
  233. package/dist/storage/userDbParse.d.ts +7 -0
  234. package/dist/storage/userDbParse.d.ts.map +1 -0
  235. package/dist/storage/userDbParse.js +13 -0
  236. package/dist/storage/userDbParse.js.map +1 -0
  237. package/dist/storage/userDbParse.spec.d.ts +2 -0
  238. package/dist/storage/userDbParse.spec.d.ts.map +1 -0
  239. package/dist/storage/userDbParse.spec.js +23 -0
  240. package/dist/storage/userDbParse.spec.js.map +1 -0
  241. package/dist/storage/userDbRead.d.ts +8 -0
  242. package/dist/storage/userDbRead.d.ts.map +1 -0
  243. package/dist/storage/userDbRead.js +37 -0
  244. package/dist/storage/userDbRead.js.map +1 -0
  245. package/dist/storage/userDbReadByConnectorKey.d.ts +8 -0
  246. package/dist/storage/userDbReadByConnectorKey.d.ts.map +1 -0
  247. package/dist/storage/userDbReadByConnectorKey.js +29 -0
  248. package/dist/storage/userDbReadByConnectorKey.js.map +1 -0
  249. package/dist/storage/userDbWrite.d.ts +8 -0
  250. package/dist/storage/userDbWrite.d.ts.map +1 -0
  251. package/dist/storage/userDbWrite.js +22 -0
  252. package/dist/storage/userDbWrite.js.map +1 -0
  253. package/dist/types.d.ts +2 -0
  254. package/dist/types.d.ts.map +1 -1
  255. package/dist/types.js +1 -1
  256. package/dist/types.js.map +1 -1
  257. package/package.json +1 -1
  258. /package/dist/plugins/dashboard/site/_next/static/{QaLNk-eKmEa2hNSDaTRmr → nCD5T59E21TItg4yHI2OX}/_buildManifest.js +0 -0
  259. /package/dist/plugins/dashboard/site/_next/static/{QaLNk-eKmEa2hNSDaTRmr → nCD5T59E21TItg4yHI2OX}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentDbParse.spec.d.ts","sourceRoot":"","sources":["../../sources/storage/agentDbParse.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { agentDbParse } from "./agentDbParse.js";
3
+ describe("agentDbParse", () => {
4
+ it("maps user_id to userId", () => {
5
+ const parsed = agentDbParse({
6
+ id: "agent-1",
7
+ user_id: "user-1",
8
+ type: "cron",
9
+ descriptor: JSON.stringify({ type: "cron", id: "agent-1", name: "cron" }),
10
+ active_session_id: null,
11
+ permissions: JSON.stringify({
12
+ workingDir: "/tmp",
13
+ writeDirs: ["/tmp"],
14
+ readDirs: ["/tmp"],
15
+ network: false,
16
+ events: false
17
+ }),
18
+ tokens: null,
19
+ stats: JSON.stringify({}),
20
+ lifecycle: "active",
21
+ created_at: 1,
22
+ updated_at: 2
23
+ });
24
+ expect(parsed.userId).toBe("user-1");
25
+ });
26
+ });
27
+ //# sourceMappingURL=agentDbParse.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentDbParse.spec.js","sourceRoot":"","sources":["../../sources/storage/agentDbParse.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzE,iBAAiB,EAAE,IAAI;YACvB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC1B,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,CAAC,MAAM,CAAC;gBACnB,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;aACd,CAAC;YACF,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agentDbWrite.d.ts","sourceRoot":"","sources":["../../sources/storage/agentDbWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CvF"}
1
+ {"version":3,"file":"agentDbWrite.d.ts","sourceRoot":"","sources":["../../sources/storage/agentDbWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvF"}
@@ -9,6 +9,7 @@ export async function agentDbWrite(config, record) {
9
9
  db.prepare(`
10
10
  INSERT INTO agents (
11
11
  id,
12
+ user_id,
12
13
  type,
13
14
  descriptor,
14
15
  active_session_id,
@@ -18,8 +19,9 @@ export async function agentDbWrite(config, record) {
18
19
  lifecycle,
19
20
  created_at,
20
21
  updated_at
21
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22
23
  ON CONFLICT(id) DO UPDATE SET
24
+ user_id = excluded.user_id,
23
25
  type = excluded.type,
24
26
  descriptor = excluded.descriptor,
25
27
  active_session_id = excluded.active_session_id,
@@ -29,7 +31,7 @@ export async function agentDbWrite(config, record) {
29
31
  lifecycle = excluded.lifecycle,
30
32
  created_at = excluded.created_at,
31
33
  updated_at = excluded.updated_at
32
- `).run(record.id, record.type, JSON.stringify(record.descriptor), record.activeSessionId, JSON.stringify(record.permissions), record.tokens ? JSON.stringify(record.tokens) : null, JSON.stringify(record.stats), record.lifecycle, record.createdAt, record.updatedAt);
34
+ `).run(record.id, record.userId, record.type, JSON.stringify(record.descriptor), record.activeSessionId, JSON.stringify(record.permissions), record.tokens ? JSON.stringify(record.tokens) : null, JSON.stringify(record.stats), record.lifecycle, record.createdAt, record.updatedAt);
33
35
  }
34
36
  finally {
35
37
  db.close();
@@ -1 +1 @@
1
- {"version":3,"file":"agentDbWrite.js","sourceRoot":"","sources":["../../sources/storage/agentDbWrite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,MAAqB;IACtE,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CACR;;;;;;;;;;;;;;;;;;;;;;;OAuBC,CACF,CAAC,GAAG,CACH,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,IAAI,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,eAAe,EACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agentDbWrite.js","sourceRoot":"","sources":["../../sources/storage/agentDbWrite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,MAAqB;IACtE,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CACR;;;;;;;;;;;;;;;;;;;;;;;;;OAyBC,CACF,CAAC,GAAG,CACH,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,IAAI,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,eAAe,EACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { AgentDescriptor, AgentLifecycleState, AgentTokenEntry, AgentTokenStats, SessionPermissions } from "@/types";
2
2
  export type DatabaseAgentRow = {
3
3
  id: string;
4
+ user_id: string;
4
5
  type: AgentDescriptor["type"];
5
6
  descriptor: string;
6
7
  active_session_id: string | null;
@@ -27,6 +28,7 @@ export type DatabaseSessionHistoryRow = {
27
28
  };
28
29
  export type AgentDbRecord = {
29
30
  id: string;
31
+ userId: string;
30
32
  type: AgentDescriptor["type"];
31
33
  descriptor: AgentDescriptor;
32
34
  activeSessionId: string | null;
@@ -37,6 +39,31 @@ export type AgentDbRecord = {
37
39
  createdAt: number;
38
40
  updatedAt: number;
39
41
  };
42
+ export type DatabaseUserRow = {
43
+ id: string;
44
+ is_owner: number;
45
+ created_at: number;
46
+ updated_at: number;
47
+ };
48
+ export type DatabaseUserConnectorKeyRow = {
49
+ id: number;
50
+ user_id: string;
51
+ connector_key: string;
52
+ };
53
+ export type UserDbRecord = {
54
+ id: string;
55
+ isOwner: boolean;
56
+ createdAt: number;
57
+ updatedAt: number;
58
+ };
59
+ export type UserConnectorKeyDbRecord = {
60
+ id: number;
61
+ userId: string;
62
+ connectorKey: string;
63
+ };
64
+ export type UserWithConnectorKeysDbRecord = UserDbRecord & {
65
+ connectorKeys: UserConnectorKeyDbRecord[];
66
+ };
40
67
  export type SessionDbRecord = {
41
68
  id: string;
42
69
  agentId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"databaseTypes.d.ts","sourceRoot":"","sources":["../../sources/storage/databaseTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,kBAAkB,CAAC;IAChC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"databaseTypes.d.ts","sourceRoot":"","sources":["../../sources/storage/databaseTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,kBAAkB,CAAC;IAChC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,YAAY,GAAG;IACzD,aAAa,EAAE,wBAAwB,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Migration } from "./migrationTypes.js";
2
+ /**
3
+ * Creates users and user_connector_keys tables plus owner uniqueness constraints.
4
+ * Expects: db is a valid SQLite handle with exec(); repeated runs are safe via IF NOT EXISTS.
5
+ */
6
+ export declare const migration20260220AddUsers: Migration;
7
+ //# sourceMappingURL=20260220_add_users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_add_users.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_add_users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAyBvC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Creates users and user_connector_keys tables plus owner uniqueness constraints.
3
+ * Expects: db is a valid SQLite handle with exec(); repeated runs are safe via IF NOT EXISTS.
4
+ */
5
+ export const migration20260220AddUsers = {
6
+ name: "20260220_add_users",
7
+ up(db) {
8
+ db.exec(`
9
+ CREATE TABLE IF NOT EXISTS users (
10
+ id TEXT PRIMARY KEY,
11
+ is_owner INTEGER NOT NULL DEFAULT 0,
12
+ created_at INTEGER NOT NULL,
13
+ updated_at INTEGER NOT NULL
14
+ );
15
+
16
+ CREATE TABLE IF NOT EXISTS user_connector_keys (
17
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
18
+ user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
19
+ connector_key TEXT NOT NULL UNIQUE
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_user_connector_keys_user_id
23
+ ON user_connector_keys(user_id);
24
+
25
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_users_single_owner
26
+ ON users(is_owner)
27
+ WHERE is_owner = 1;
28
+ `);
29
+ }
30
+ };
31
+ //# sourceMappingURL=20260220_add_users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_add_users.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_add_users.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAc;IAClD,IAAI,EAAE,oBAAoB;IAC1B,EAAE,CAAC,EAAE;QACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;KAoBP,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=20260220_add_users.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_add_users.spec.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_add_users.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { databaseOpen } from "../databaseOpen.js";
3
+ import { migration20260220AddUsers } from "./20260220_add_users.js";
4
+ describe("migration20260220AddUsers", () => {
5
+ it("creates users and user_connector_keys tables with expected columns", () => {
6
+ const db = databaseOpen(":memory:");
7
+ try {
8
+ migration20260220AddUsers.up(db);
9
+ const usersColumns = db
10
+ .prepare("PRAGMA table_info(users)")
11
+ .all();
12
+ const connectorColumns = db
13
+ .prepare("PRAGMA table_info(user_connector_keys)")
14
+ .all();
15
+ expect(usersColumns.map((column) => column.name)).toEqual([
16
+ "id",
17
+ "is_owner",
18
+ "created_at",
19
+ "updated_at"
20
+ ]);
21
+ expect(connectorColumns.map((column) => column.name)).toEqual([
22
+ "id",
23
+ "user_id",
24
+ "connector_key"
25
+ ]);
26
+ }
27
+ finally {
28
+ db.close();
29
+ }
30
+ });
31
+ it("enforces connector_key uniqueness", () => {
32
+ const db = databaseOpen(":memory:");
33
+ try {
34
+ migration20260220AddUsers.up(db);
35
+ db.prepare("INSERT INTO users (id, is_owner, created_at, updated_at) VALUES (?, ?, ?, ?)").run("user-1", 1, 1, 1);
36
+ db.prepare("INSERT INTO users (id, is_owner, created_at, updated_at) VALUES (?, ?, ?, ?)").run("user-2", 0, 1, 1);
37
+ db.prepare("INSERT INTO user_connector_keys (user_id, connector_key) VALUES (?, ?)").run("user-1", "telegram:123");
38
+ expect(() => {
39
+ db.prepare("INSERT INTO user_connector_keys (user_id, connector_key) VALUES (?, ?)").run("user-2", "telegram:123");
40
+ }).toThrow();
41
+ }
42
+ finally {
43
+ db.close();
44
+ }
45
+ });
46
+ it("allows only one owner user", () => {
47
+ const db = databaseOpen(":memory:");
48
+ try {
49
+ migration20260220AddUsers.up(db);
50
+ db.prepare("INSERT INTO users (id, is_owner, created_at, updated_at) VALUES (?, ?, ?, ?)").run("owner-1", 1, 1, 1);
51
+ db.prepare("INSERT INTO users (id, is_owner, created_at, updated_at) VALUES (?, ?, ?, ?)").run("user-2", 0, 1, 1);
52
+ expect(() => {
53
+ db.prepare("INSERT INTO users (id, is_owner, created_at, updated_at) VALUES (?, ?, ?, ?)").run("owner-2", 1, 1, 1);
54
+ }).toThrow();
55
+ }
56
+ finally {
57
+ db.close();
58
+ }
59
+ });
60
+ });
61
+ //# sourceMappingURL=20260220_add_users.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_add_users.spec.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_add_users.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "./migrationTypes.js";
2
+ export declare const migration20260220UsersBootstrap: Migration;
3
+ //# sourceMappingURL=20260220_users_bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_users_bootstrap.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_users_bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAcrD,eAAO,MAAM,+BAA+B,EAAE,SA2G7C,CAAC"}
@@ -0,0 +1,114 @@
1
+ import { createId } from "@paralleldrive/cuid2";
2
+ import { userConnectorKeyCreate } from "../userConnectorKeyCreate.js";
3
+ export const migration20260220UsersBootstrap = {
4
+ name: "20260220_users_bootstrap",
5
+ up(db) {
6
+ // 1) Collect existing user agents in creation order.
7
+ const userAgents = db
8
+ .prepare(`
9
+ SELECT id, descriptor, created_at
10
+ FROM agents
11
+ WHERE type = 'user'
12
+ ORDER BY created_at ASC
13
+ `)
14
+ .all();
15
+ // 2) Build connector key map and unique ordered connector keys.
16
+ const connectorKeyByAgentId = new Map();
17
+ const connectorKeysInOrder = [];
18
+ for (const row of userAgents) {
19
+ const parsed = userDescriptorParse(row.descriptor);
20
+ if (!parsed) {
21
+ continue;
22
+ }
23
+ const connectorKey = userConnectorKeyCreate(parsed.connector, parsed.userId);
24
+ connectorKeyByAgentId.set(row.id, connectorKey);
25
+ if (!connectorKeysInOrder.includes(connectorKey)) {
26
+ connectorKeysInOrder.push(connectorKey);
27
+ }
28
+ }
29
+ // 3) Create users and connector keys; first connector identity becomes owner.
30
+ let ownerUserId = "";
31
+ const userIdByConnectorKey = new Map();
32
+ const now = Date.now();
33
+ if (connectorKeysInOrder.length === 0) {
34
+ ownerUserId = createId();
35
+ db.prepare(`
36
+ INSERT INTO users (id, is_owner, created_at, updated_at)
37
+ VALUES (?, 1, ?, ?)
38
+ `).run(ownerUserId, now, now);
39
+ }
40
+ else {
41
+ for (let index = 0; index < connectorKeysInOrder.length; index += 1) {
42
+ const connectorKey = connectorKeysInOrder[index];
43
+ if (!connectorKey) {
44
+ continue;
45
+ }
46
+ const userId = createId();
47
+ const isOwner = index === 0 ? 1 : 0;
48
+ db.prepare(`
49
+ INSERT INTO users (id, is_owner, created_at, updated_at)
50
+ VALUES (?, ?, ?, ?)
51
+ `).run(userId, isOwner, now, now);
52
+ db.prepare(`
53
+ INSERT INTO user_connector_keys (user_id, connector_key)
54
+ VALUES (?, ?)
55
+ `).run(userId, connectorKey);
56
+ userIdByConnectorKey.set(connectorKey, userId);
57
+ if (isOwner === 1) {
58
+ ownerUserId = userId;
59
+ }
60
+ }
61
+ }
62
+ // 4) Ensure an owner user always exists.
63
+ const owner = db
64
+ .prepare("SELECT id FROM users WHERE is_owner = 1 LIMIT 1")
65
+ .get();
66
+ ownerUserId = owner?.id ?? ownerUserId;
67
+ if (!ownerUserId) {
68
+ ownerUserId = createId();
69
+ db.prepare(`
70
+ INSERT INTO users (id, is_owner, created_at, updated_at)
71
+ VALUES (?, 1, ?, ?)
72
+ `).run(ownerUserId, now, now);
73
+ }
74
+ // 5) Add agents.user_id when missing, defaulting to owner.
75
+ const columns = db
76
+ .prepare("PRAGMA table_info(agents)")
77
+ .all();
78
+ const hasUserId = columns.some((column) => column.name === "user_id");
79
+ if (!hasUserId) {
80
+ db.exec(`ALTER TABLE agents ADD COLUMN user_id TEXT NOT NULL DEFAULT '${sqlStringLiteral(ownerUserId)}'`);
81
+ }
82
+ // 6) Backfill user_id by connector mapping and index for lookups.
83
+ for (const [agentId, connectorKey] of connectorKeyByAgentId.entries()) {
84
+ const userId = userIdByConnectorKey.get(connectorKey);
85
+ if (!userId) {
86
+ continue;
87
+ }
88
+ db.prepare("UPDATE agents SET user_id = ? WHERE id = ?").run(userId, agentId);
89
+ }
90
+ db.prepare("UPDATE agents SET user_id = ? WHERE user_id IS NULL").run(ownerUserId);
91
+ db.exec("CREATE INDEX IF NOT EXISTS idx_agents_user_id ON agents(user_id)");
92
+ }
93
+ };
94
+ function userDescriptorParse(raw) {
95
+ try {
96
+ const parsed = JSON.parse(raw);
97
+ if (typeof parsed.connector !== "string" || typeof parsed.userId !== "string") {
98
+ return null;
99
+ }
100
+ const connector = parsed.connector.trim();
101
+ const userId = parsed.userId.trim();
102
+ if (!connector || !userId) {
103
+ return null;
104
+ }
105
+ return { connector, userId };
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }
111
+ function sqlStringLiteral(value) {
112
+ return value.replaceAll("'", "''");
113
+ }
114
+ //# sourceMappingURL=20260220_users_bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_users_bootstrap.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_users_bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=20260220_users_bootstrap.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_users_bootstrap.spec.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_users_bootstrap.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,200 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { createId } from "@paralleldrive/cuid2";
3
+ import { databaseOpen } from "../databaseOpen.js";
4
+ import { migration20260219Initial } from "./20260219_initial.js";
5
+ import { migration20260220AddUsers } from "./20260220_add_users.js";
6
+ import { migration20260220UsersBootstrap } from "./20260220_users_bootstrap.js";
7
+ describe("migration20260220UsersBootstrap", () => {
8
+ it("creates one owner user when agents table is empty", () => {
9
+ const db = databaseOpen(":memory:");
10
+ try {
11
+ migration20260219Initial.up(db);
12
+ migration20260220AddUsers.up(db);
13
+ migration20260220UsersBootstrap.up(db);
14
+ const users = db
15
+ .prepare("SELECT id, is_owner FROM users ORDER BY created_at ASC")
16
+ .all();
17
+ expect(users).toHaveLength(1);
18
+ expect(users[0]?.is_owner).toBe(1);
19
+ const columns = db
20
+ .prepare("PRAGMA table_info(agents)")
21
+ .all();
22
+ const userIdColumn = columns.find((column) => column.name === "user_id");
23
+ expect(userIdColumn?.notnull).toBe(1);
24
+ }
25
+ finally {
26
+ db.close();
27
+ }
28
+ });
29
+ it("deduplicates connector identities and assigns shared user_id", () => {
30
+ const db = databaseOpen(":memory:");
31
+ try {
32
+ migration20260219Initial.up(db);
33
+ agentInsert(db, {
34
+ id: "agent-a",
35
+ descriptor: {
36
+ type: "user",
37
+ connector: "telegram",
38
+ userId: "123",
39
+ channelId: "channel-a"
40
+ },
41
+ createdAt: 10
42
+ });
43
+ agentInsert(db, {
44
+ id: "agent-b",
45
+ descriptor: {
46
+ type: "user",
47
+ connector: "telegram",
48
+ userId: "123",
49
+ channelId: "channel-b"
50
+ },
51
+ createdAt: 20
52
+ });
53
+ migration20260220AddUsers.up(db);
54
+ migration20260220UsersBootstrap.up(db);
55
+ const users = db.prepare("SELECT id, is_owner FROM users").all();
56
+ const connectorKeys = db
57
+ .prepare("SELECT connector_key FROM user_connector_keys")
58
+ .all();
59
+ const agentUserIds = db
60
+ .prepare("SELECT DISTINCT user_id FROM agents")
61
+ .all();
62
+ expect(users).toHaveLength(1);
63
+ expect(users[0]?.is_owner).toBe(1);
64
+ expect(connectorKeys).toEqual([{ connector_key: "telegram:123" }]);
65
+ expect(agentUserIds).toHaveLength(1);
66
+ }
67
+ finally {
68
+ db.close();
69
+ }
70
+ });
71
+ it("creates one user per connector identity and marks earliest as owner", () => {
72
+ const db = databaseOpen(":memory:");
73
+ try {
74
+ migration20260219Initial.up(db);
75
+ agentInsert(db, {
76
+ id: "agent-a",
77
+ descriptor: {
78
+ type: "user",
79
+ connector: "telegram",
80
+ userId: "123",
81
+ channelId: "channel-a"
82
+ },
83
+ createdAt: 10
84
+ });
85
+ agentInsert(db, {
86
+ id: "agent-b",
87
+ descriptor: {
88
+ type: "user",
89
+ connector: "whatsapp",
90
+ userId: "999",
91
+ channelId: "channel-b"
92
+ },
93
+ createdAt: 20
94
+ });
95
+ migration20260220AddUsers.up(db);
96
+ migration20260220UsersBootstrap.up(db);
97
+ const ownerRow = db
98
+ .prepare(`
99
+ SELECT k.connector_key
100
+ FROM users u
101
+ JOIN user_connector_keys k ON k.user_id = u.id
102
+ WHERE u.is_owner = 1
103
+ LIMIT 1
104
+ `)
105
+ .get();
106
+ const users = db
107
+ .prepare("SELECT id FROM users ORDER BY created_at ASC")
108
+ .all();
109
+ expect(users).toHaveLength(2);
110
+ expect(ownerRow?.connector_key).toBe("telegram:123");
111
+ }
112
+ finally {
113
+ db.close();
114
+ }
115
+ });
116
+ it("assigns owner user_id to non-user agents", () => {
117
+ const db = databaseOpen(":memory:");
118
+ try {
119
+ migration20260219Initial.up(db);
120
+ agentInsert(db, {
121
+ id: "agent-user",
122
+ descriptor: {
123
+ type: "user",
124
+ connector: "telegram",
125
+ userId: "123",
126
+ channelId: "channel-a"
127
+ },
128
+ createdAt: 10
129
+ });
130
+ agentInsert(db, {
131
+ id: "agent-cron",
132
+ descriptor: { type: "cron", id: createId(), name: "cron-job" },
133
+ createdAt: 20
134
+ });
135
+ agentInsert(db, {
136
+ id: "agent-system",
137
+ descriptor: { type: "system", tag: "cron" },
138
+ createdAt: 30
139
+ });
140
+ agentInsert(db, {
141
+ id: "agent-sub",
142
+ descriptor: {
143
+ type: "subagent",
144
+ id: createId(),
145
+ parentAgentId: createId(),
146
+ name: "subagent"
147
+ },
148
+ createdAt: 40
149
+ });
150
+ migration20260220AddUsers.up(db);
151
+ migration20260220UsersBootstrap.up(db);
152
+ const owner = db
153
+ .prepare("SELECT id FROM users WHERE is_owner = 1 LIMIT 1")
154
+ .get();
155
+ const rows = db
156
+ .prepare(`
157
+ SELECT id, user_id
158
+ FROM agents
159
+ WHERE id IN ('agent-cron', 'agent-system', 'agent-sub')
160
+ ORDER BY id ASC
161
+ `)
162
+ .all();
163
+ expect(rows).toEqual([
164
+ { id: "agent-cron", user_id: owner?.id ?? "" },
165
+ { id: "agent-sub", user_id: owner?.id ?? "" },
166
+ { id: "agent-system", user_id: owner?.id ?? "" }
167
+ ]);
168
+ const indexes = db
169
+ .prepare("PRAGMA index_list(agents)")
170
+ .all();
171
+ expect(indexes.some((index) => index.name === "idx_agents_user_id")).toBe(true);
172
+ }
173
+ finally {
174
+ db.close();
175
+ }
176
+ });
177
+ });
178
+ function agentInsert(db, input) {
179
+ db.prepare(`
180
+ INSERT INTO agents (
181
+ id,
182
+ type,
183
+ descriptor,
184
+ active_session_id,
185
+ permissions,
186
+ tokens,
187
+ stats,
188
+ lifecycle,
189
+ created_at,
190
+ updated_at
191
+ ) VALUES (?, ?, ?, NULL, ?, NULL, ?, ?, ?, ?)
192
+ `).run(input.id, input.descriptor.type, JSON.stringify(input.descriptor), JSON.stringify({
193
+ workingDir: "/tmp",
194
+ writeDirs: ["/tmp"],
195
+ readDirs: ["/tmp"],
196
+ network: false,
197
+ events: false
198
+ }), JSON.stringify({}), "active", input.createdAt, input.createdAt);
199
+ }
200
+ //# sourceMappingURL=20260220_users_bootstrap.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260220_users_bootstrap.spec.js","sourceRoot":"","sources":["../../../sources/storage/migrations/20260220_users_bootstrap.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"_migrations.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,eAAO,MAAM,UAAU,EAAE,SAAS,EAGjC,CAAC"}
1
+ {"version":3,"file":"_migrations.d.ts","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD,eAAO,MAAM,UAAU,EAAE,SAAS,EAKjC,CAAC"}
@@ -1,7 +1,11 @@
1
1
  import { migration20260219ImportFiles } from "./20260219_import_files.js";
2
2
  import { migration20260219Initial } from "./20260219_initial.js";
3
+ import { migration20260220AddUsers } from "./20260220_add_users.js";
4
+ import { migration20260220UsersBootstrap } from "./20260220_users_bootstrap.js";
3
5
  export const migrations = [
4
6
  migration20260219Initial,
5
- migration20260219ImportFiles
7
+ migration20260219ImportFiles,
8
+ migration20260220AddUsers,
9
+ migration20260220UsersBootstrap
6
10
  ];
7
11
  //# sourceMappingURL=_migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_migrations.js","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,wBAAwB;IACxB,4BAA4B;CAC7B,CAAC"}
1
+ {"version":3,"file":"_migrations.js","sourceRoot":"","sources":["../../../sources/storage/migrations/_migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,wBAAwB;IACxB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;CAChC,CAAC"}