agor-live 0.22.0 → 0.23.1

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 (905) hide show
  1. package/dist/cli/commands/admin/add-to-branch-group.d.ts +2 -13
  2. package/dist/cli/commands/admin/add-to-branch-group.d.ts.map +1 -1
  3. package/dist/cli/commands/admin/add-to-branch-group.js +133 -33
  4. package/dist/cli/commands/admin/create-branch-group.d.ts +2 -13
  5. package/dist/cli/commands/admin/create-branch-group.d.ts.map +1 -1
  6. package/dist/cli/commands/admin/create-branch-group.js +132 -38
  7. package/dist/cli/commands/admin/create-symlink.d.ts +2 -14
  8. package/dist/cli/commands/admin/create-symlink.d.ts.map +1 -1
  9. package/dist/cli/commands/admin/create-symlink.js +138 -61
  10. package/dist/cli/commands/admin/delete-branch-group.d.ts +2 -13
  11. package/dist/cli/commands/admin/delete-branch-group.d.ts.map +1 -1
  12. package/dist/cli/commands/admin/delete-branch-group.js +132 -28
  13. package/dist/cli/commands/admin/delete-user.d.ts +2 -13
  14. package/dist/cli/commands/admin/delete-user.d.ts.map +1 -1
  15. package/dist/cli/commands/admin/delete-user.js +132 -38
  16. package/dist/cli/commands/admin/ensure-user.d.ts +2 -14
  17. package/dist/cli/commands/admin/ensure-user.d.ts.map +1 -1
  18. package/dist/cli/commands/admin/ensure-user.js +131 -46
  19. package/dist/cli/commands/admin/remove-from-branch-group.d.ts +2 -13
  20. package/dist/cli/commands/admin/remove-from-branch-group.d.ts.map +1 -1
  21. package/dist/cli/commands/admin/remove-from-branch-group.js +133 -33
  22. package/dist/cli/commands/admin/remove-symlink.d.ts +2 -14
  23. package/dist/cli/commands/admin/remove-symlink.d.ts.map +1 -1
  24. package/dist/cli/commands/admin/remove-symlink.js +136 -49
  25. package/dist/cli/commands/admin/scrub-git-remotes.d.ts +2 -2
  26. package/dist/cli/commands/admin/scrub-git-remotes.d.ts.map +1 -1
  27. package/dist/cli/commands/admin/scrub-git-remotes.js +128 -86
  28. package/dist/cli/commands/admin/sync-user-symlinks.d.ts +2 -14
  29. package/dist/cli/commands/admin/sync-user-symlinks.d.ts.map +1 -1
  30. package/dist/cli/commands/admin/sync-user-symlinks.js +132 -43
  31. package/dist/cli/commands/auth/whoami.d.ts.map +1 -1
  32. package/dist/cli/commands/auth/whoami.js +2 -1
  33. package/dist/cli/commands/branch/env/request.test.d.ts +2 -0
  34. package/dist/cli/commands/branch/env/request.test.d.ts.map +1 -0
  35. package/dist/cli/commands/branch/env/request.test.js +17723 -0
  36. package/dist/cli/commands/branch/env/restart.d.ts.map +1 -1
  37. package/dist/cli/commands/branch/env/restart.js +7 -1
  38. package/dist/cli/commands/branch/env/start.d.ts.map +1 -1
  39. package/dist/cli/commands/branch/env/start.js +7 -1
  40. package/dist/cli/commands/branch/env/stop.d.ts.map +1 -1
  41. package/dist/cli/commands/branch/env/stop.js +7 -1
  42. package/dist/cli/commands/daemon/status.d.ts.map +1 -1
  43. package/dist/cli/commands/daemon/status.js +2 -1
  44. package/dist/cli/commands/init.d.ts +6 -0
  45. package/dist/cli/commands/init.d.ts.map +1 -1
  46. package/dist/cli/commands/init.js +140 -2
  47. package/dist/cli/commands/local/add-to-branch-group.d.ts +13 -0
  48. package/dist/cli/commands/local/add-to-branch-group.d.ts.map +1 -0
  49. package/dist/cli/commands/local/add-to-branch-group.js +37 -0
  50. package/dist/cli/commands/local/create-branch-group.d.ts +12 -0
  51. package/dist/cli/commands/local/create-branch-group.d.ts.map +1 -0
  52. package/dist/cli/commands/local/create-branch-group.js +35 -0
  53. package/dist/cli/commands/local/create-symlink.d.ts +14 -0
  54. package/dist/cli/commands/local/create-symlink.d.ts.map +1 -0
  55. package/dist/cli/commands/local/create-symlink.js +45 -0
  56. package/dist/cli/commands/{daemon → local/daemon}/sync.d.ts +1 -1
  57. package/dist/cli/commands/local/daemon/sync.d.ts.map +1 -0
  58. package/dist/cli/commands/{daemon → local/daemon}/sync.js +7 -6
  59. package/dist/cli/commands/local/delete-branch-group.d.ts +12 -0
  60. package/dist/cli/commands/local/delete-branch-group.d.ts.map +1 -0
  61. package/dist/cli/commands/local/delete-branch-group.js +35 -0
  62. package/dist/cli/commands/local/delete-user.d.ts +12 -0
  63. package/dist/cli/commands/local/delete-user.d.ts.map +1 -0
  64. package/dist/cli/commands/local/delete-user.js +36 -0
  65. package/dist/cli/commands/local/ensure-user.d.ts +12 -0
  66. package/dist/cli/commands/local/ensure-user.d.ts.map +1 -0
  67. package/dist/cli/commands/local/ensure-user.js +41 -0
  68. package/dist/cli/commands/local/remove-from-branch-group.d.ts +13 -0
  69. package/dist/cli/commands/local/remove-from-branch-group.d.ts.map +1 -0
  70. package/dist/cli/commands/local/remove-from-branch-group.js +37 -0
  71. package/dist/cli/commands/local/remove-symlink.d.ts +13 -0
  72. package/dist/cli/commands/local/remove-symlink.d.ts.map +1 -0
  73. package/dist/cli/commands/local/remove-symlink.js +39 -0
  74. package/dist/cli/commands/local/scrub-git-remotes.d.ts +9 -0
  75. package/dist/cli/commands/local/scrub-git-remotes.d.ts.map +1 -0
  76. package/dist/cli/commands/local/scrub-git-remotes.js +23 -0
  77. package/dist/cli/commands/{admin → local}/sync-unix.d.ts.map +1 -1
  78. package/dist/cli/commands/{admin → local}/sync-unix.js +3 -3
  79. package/dist/cli/commands/local/sync-user-symlinks.d.ts +12 -0
  80. package/dist/cli/commands/local/sync-user-symlinks.d.ts.map +1 -0
  81. package/dist/cli/commands/local/sync-user-symlinks.js +37 -0
  82. package/dist/cli/commands/telemetry/index.d.ts +7 -0
  83. package/dist/cli/commands/telemetry/index.d.ts.map +1 -0
  84. package/dist/cli/commands/telemetry/index.js +40 -0
  85. package/dist/cli/commands/telemetry/off.d.ts +6 -0
  86. package/dist/cli/commands/telemetry/off.d.ts.map +1 -0
  87. package/dist/cli/commands/telemetry/off.js +35 -0
  88. package/dist/cli/commands/telemetry/on.d.ts +6 -0
  89. package/dist/cli/commands/telemetry/on.d.ts.map +1 -0
  90. package/dist/cli/commands/telemetry/on.js +37 -0
  91. package/dist/cli/commands/telemetry/test.d.ts +6 -0
  92. package/dist/cli/commands/telemetry/test.d.ts.map +1 -0
  93. package/dist/cli/commands/telemetry/test.js +56 -0
  94. package/dist/cli/commands/user/create-admin.d.ts.map +1 -1
  95. package/dist/cli/commands/user/create-admin.js +81 -72
  96. package/dist/cli/commands/user/list.d.ts.map +1 -1
  97. package/dist/cli/commands/user/list.js +1 -0
  98. package/dist/cli/commands/whoami.js +2 -1
  99. package/dist/cli/lib/branch-environment-action.d.ts +21 -0
  100. package/dist/cli/lib/branch-environment-action.d.ts.map +1 -0
  101. package/dist/cli/lib/branch-environment-action.js +8 -0
  102. package/dist/core/api/index.cjs +7 -2
  103. package/dist/core/api/index.d.ts +13 -4
  104. package/dist/core/api/index.d.ts.map +1 -1
  105. package/dist/core/api/index.js +7 -2
  106. package/dist/core/claude/index.cjs +482 -77
  107. package/dist/core/claude/index.js +479 -76
  108. package/dist/core/claude-cli/index.cjs +11 -0
  109. package/dist/core/claude-cli/index.js +11 -0
  110. package/dist/core/claude-cli/pricing.d.ts.map +1 -1
  111. package/dist/core/client/index.cjs +35 -7
  112. package/dist/core/client/index.js +32 -7
  113. package/dist/core/config/browser.cjs +3 -5
  114. package/dist/core/config/browser.js +3 -5
  115. package/dist/core/config/config-manager.d.ts +33 -13
  116. package/dist/core/config/config-manager.d.ts.map +1 -1
  117. package/dist/core/config/index.cjs +4259 -4527
  118. package/dist/core/config/index.d.ts +1 -0
  119. package/dist/core/config/index.d.ts.map +1 -1
  120. package/dist/core/config/index.js +4295 -4583
  121. package/dist/core/config/key-resolver.d.ts.map +1 -1
  122. package/dist/core/config/multitenancy.d.ts +33 -0
  123. package/dist/core/config/multitenancy.d.ts.map +1 -0
  124. package/dist/core/config/security-resolver.d.ts +1 -0
  125. package/dist/core/config/security-resolver.d.ts.map +1 -1
  126. package/dist/core/config/types.d.ts +67 -4
  127. package/dist/core/config/types.d.ts.map +1 -1
  128. package/dist/core/db/client.d.ts +34 -2
  129. package/dist/core/db/client.d.ts.map +1 -1
  130. package/dist/core/db/database-wrapper.d.ts.map +1 -1
  131. package/dist/core/db/first-run-bootstrap.d.ts.map +1 -1
  132. package/dist/core/db/index.cjs +2422 -1084
  133. package/dist/core/db/index.d.ts +2 -1
  134. package/dist/core/db/index.d.ts.map +1 -1
  135. package/dist/core/db/index.js +2162 -852
  136. package/dist/core/db/migrate.d.ts.map +1 -1
  137. package/dist/core/db/repositories/artifacts.d.ts +27 -2
  138. package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
  139. package/dist/core/db/repositories/base.d.ts +18 -0
  140. package/dist/core/db/repositories/base.d.ts.map +1 -1
  141. package/dist/core/db/repositories/board-comments.d.ts +17 -1
  142. package/dist/core/db/repositories/board-comments.d.ts.map +1 -1
  143. package/dist/core/db/repositories/board-objects.d.ts.map +1 -1
  144. package/dist/core/db/repositories/boards.d.ts +28 -4
  145. package/dist/core/db/repositories/boards.d.ts.map +1 -1
  146. package/dist/core/db/repositories/branch-access.d.ts +32 -0
  147. package/dist/core/db/repositories/branch-access.d.ts.map +1 -1
  148. package/dist/core/db/repositories/branches.d.ts +41 -1
  149. package/dist/core/db/repositories/branches.d.ts.map +1 -1
  150. package/dist/core/db/repositories/cards.d.ts +15 -1
  151. package/dist/core/db/repositories/cards.d.ts.map +1 -1
  152. package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
  153. package/dist/core/db/repositories/gateway-outbound-messages.d.ts +19 -0
  154. package/dist/core/db/repositories/gateway-outbound-messages.d.ts.map +1 -0
  155. package/dist/core/db/repositories/index.d.ts +2 -0
  156. package/dist/core/db/repositories/index.d.ts.map +1 -1
  157. package/dist/core/db/repositories/messages.d.ts +9 -2
  158. package/dist/core/db/repositories/messages.d.ts.map +1 -1
  159. package/dist/core/db/repositories/repos.d.ts.map +1 -1
  160. package/dist/core/db/repositories/schedules.d.ts +12 -1
  161. package/dist/core/db/repositories/schedules.d.ts.map +1 -1
  162. package/dist/core/db/repositories/sessions.d.ts +49 -5
  163. package/dist/core/db/repositories/sessions.d.ts.map +1 -1
  164. package/dist/core/db/repositories/tasks.d.ts +7 -2
  165. package/dist/core/db/repositories/tasks.d.ts.map +1 -1
  166. package/dist/core/db/repositories/user-api-keys.d.ts +10 -1
  167. package/dist/core/db/repositories/user-api-keys.d.ts.map +1 -1
  168. package/dist/core/db/repositories/users.d.ts +8 -8
  169. package/dist/core/db/repositories/users.d.ts.map +1 -1
  170. package/dist/core/db/schema.d.ts +1460 -38
  171. package/dist/core/db/schema.d.ts.map +1 -1
  172. package/dist/core/db/schema.postgres.d.ts +1082 -37
  173. package/dist/core/db/schema.postgres.d.ts.map +1 -1
  174. package/dist/core/db/schema.sqlite.d.ts +397 -1
  175. package/dist/core/db/schema.sqlite.d.ts.map +1 -1
  176. package/dist/core/db/tenant-context.d.ts +26 -0
  177. package/dist/core/db/tenant-context.d.ts.map +1 -0
  178. package/dist/core/db/tenant-scope.d.ts +31 -0
  179. package/dist/core/db/tenant-scope.d.ts.map +1 -0
  180. package/dist/core/db/user-utils.d.ts +2 -2
  181. package/dist/core/db/user-utils.d.ts.map +1 -1
  182. package/dist/core/drizzle/postgres/0052_gateway_outbound_messages.sql +45 -0
  183. package/dist/core/drizzle/postgres/0053_user_token_invalidation.sql +1 -0
  184. package/dist/core/drizzle/postgres/0054_app_level_multitenancy.sql +219 -0
  185. package/dist/core/drizzle/postgres/0055_app_level_multitenancy_rls.sql +411 -0
  186. package/dist/core/drizzle/postgres/0056_composite_indexes.sql +15 -0
  187. package/dist/core/drizzle/postgres/0057_message_timestamp_indexes.sql +3 -0
  188. package/dist/core/drizzle/postgres/meta/_journal.json +42 -0
  189. package/dist/core/drizzle/sqlite/0061_gateway_outbound_messages.sql +38 -0
  190. package/dist/core/drizzle/sqlite/0062_user_token_invalidation.sql +1 -0
  191. package/dist/core/drizzle/sqlite/0063_composite_indexes.sql +10 -0
  192. package/dist/core/drizzle/sqlite/0064_message_timestamp_indexes.sql +2 -0
  193. package/dist/core/drizzle/sqlite/meta/_journal.json +28 -0
  194. package/dist/core/environment/render-snapshot.cjs +1 -4
  195. package/dist/core/environment/render-snapshot.js +1 -4
  196. package/dist/core/environment/webhook.cjs +1 -4
  197. package/dist/core/environment/webhook.js +1 -4
  198. package/dist/core/gateway/connector.d.ts +10 -1
  199. package/dist/core/gateway/connector.d.ts.map +1 -1
  200. package/dist/core/gateway/connectors/slack-manifest.cjs +108 -0
  201. package/dist/core/gateway/connectors/slack-manifest.d.ts +85 -0
  202. package/dist/core/gateway/connectors/slack-manifest.d.ts.map +1 -0
  203. package/dist/core/gateway/connectors/slack-manifest.js +81 -0
  204. package/dist/core/gateway/connectors/slack.d.ts +101 -4
  205. package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
  206. package/dist/core/gateway/index.cjs +495 -29
  207. package/dist/core/gateway/index.d.ts +4 -1
  208. package/dist/core/gateway/index.d.ts.map +1 -1
  209. package/dist/core/gateway/index.js +490 -28
  210. package/dist/core/gateway/system-message.d.ts.map +1 -1
  211. package/dist/core/git/exec.cjs +24 -0
  212. package/dist/core/git/exec.d.ts +6 -4
  213. package/dist/core/git/exec.d.ts.map +1 -1
  214. package/dist/core/git/exec.js +2 -0
  215. package/dist/core/git/index.cjs +3 -1363
  216. package/dist/core/git/index.d.ts +4 -614
  217. package/dist/core/git/index.d.ts.map +1 -1
  218. package/dist/core/git/index.js +1 -1304
  219. package/dist/core/git/pure.cjs +24 -0
  220. package/dist/core/git/pure.d.ts +2 -27
  221. package/dist/core/git/pure.d.ts.map +1 -1
  222. package/dist/core/git/pure.js +2 -0
  223. package/dist/core/index.cjs +11137 -10604
  224. package/dist/core/index.d.ts +2 -0
  225. package/dist/core/index.d.ts.map +1 -1
  226. package/dist/core/index.js +11673 -10630
  227. package/dist/core/lib/feathers-validation.cjs +6 -1
  228. package/dist/core/lib/feathers-validation.d.ts +1 -0
  229. package/dist/core/lib/feathers-validation.d.ts.map +1 -1
  230. package/dist/core/lib/feathers-validation.js +6 -1
  231. package/dist/core/local-actions/git-remotes.d.ts +7 -0
  232. package/dist/core/local-actions/git-remotes.d.ts.map +1 -0
  233. package/dist/core/local-actions/index.cjs +7941 -0
  234. package/dist/core/local-actions/index.d.ts +6 -0
  235. package/dist/core/local-actions/index.d.ts.map +1 -0
  236. package/dist/core/local-actions/index.js +7943 -0
  237. package/dist/core/local-actions/symlinks.d.ts +20 -0
  238. package/dist/core/local-actions/symlinks.d.ts.map +1 -0
  239. package/dist/core/local-actions/types.d.ts +14 -0
  240. package/dist/core/local-actions/types.d.ts.map +1 -0
  241. package/dist/core/local-actions/unix-groups.d.ts +16 -0
  242. package/dist/core/local-actions/unix-groups.d.ts.map +1 -0
  243. package/dist/core/local-actions/unix-users.d.ts +12 -0
  244. package/dist/core/local-actions/unix-users.d.ts.map +1 -0
  245. package/dist/core/mcp/index.cjs +352 -25
  246. package/dist/core/mcp/index.js +351 -24
  247. package/dist/core/models/browser.cjs +148 -25
  248. package/dist/core/models/browser.js +144 -25
  249. package/dist/core/models/claude.d.ts +2 -2
  250. package/dist/core/models/claude.d.ts.map +1 -1
  251. package/dist/core/models/codex.d.ts +205 -21
  252. package/dist/core/models/codex.d.ts.map +1 -1
  253. package/dist/core/models/index.cjs +148 -25
  254. package/dist/core/models/index.js +144 -25
  255. package/dist/core/package.json +24 -0
  256. package/dist/core/seed/demo-fixtures.d.ts +87 -0
  257. package/dist/core/seed/demo-fixtures.d.ts.map +1 -0
  258. package/dist/core/seed/dev-fixtures.d.ts.map +1 -1
  259. package/dist/core/seed/index.cjs +8410 -5504
  260. package/dist/core/seed/index.d.ts +1 -0
  261. package/dist/core/seed/index.d.ts.map +1 -1
  262. package/dist/core/seed/index.js +8434 -5533
  263. package/dist/core/sessions/index.cjs +110 -24
  264. package/dist/core/sessions/index.js +110 -24
  265. package/dist/core/telemetry/index.cjs +361 -0
  266. package/dist/core/telemetry/index.d.ts +5 -0
  267. package/dist/core/telemetry/index.d.ts.map +1 -0
  268. package/dist/core/telemetry/index.js +315 -0
  269. package/dist/core/telemetry/logger.d.ts +44 -0
  270. package/dist/core/telemetry/logger.d.ts.map +1 -0
  271. package/dist/core/telemetry/model-normalization.d.ts +3 -0
  272. package/dist/core/telemetry/model-normalization.d.ts.map +1 -0
  273. package/dist/core/telemetry/types.d.ts +47 -0
  274. package/dist/core/telemetry/types.d.ts.map +1 -0
  275. package/dist/core/telemetry/version.d.ts +9 -0
  276. package/dist/core/telemetry/version.d.ts.map +1 -0
  277. package/dist/core/templates/agor-system-prompt.md +1 -0
  278. package/dist/core/tools/mcp/oauth-refresh.cjs +532 -102
  279. package/dist/core/tools/mcp/oauth-refresh.js +530 -103
  280. package/dist/core/types/board.d.ts +2 -0
  281. package/dist/core/types/board.d.ts.map +1 -1
  282. package/dist/core/types/branch.d.ts +13 -0
  283. package/dist/core/types/branch.d.ts.map +1 -1
  284. package/dist/core/types/config-services.d.ts.map +1 -1
  285. package/dist/core/types/feathers.d.ts +6 -0
  286. package/dist/core/types/feathers.d.ts.map +1 -1
  287. package/dist/core/types/gateway.d.ts +76 -1
  288. package/dist/core/types/gateway.d.ts.map +1 -1
  289. package/dist/core/types/index.cjs +25 -0
  290. package/dist/core/types/index.d.ts +1 -0
  291. package/dist/core/types/index.d.ts.map +1 -1
  292. package/dist/core/types/index.js +22 -0
  293. package/dist/core/types/schedule.d.ts +4 -3
  294. package/dist/core/types/schedule.d.ts.map +1 -1
  295. package/dist/core/types/session.d.ts +7 -1
  296. package/dist/core/types/session.d.ts.map +1 -1
  297. package/dist/core/types/tenant.d.ts +15 -0
  298. package/dist/core/types/tenant.d.ts.map +1 -0
  299. package/dist/core/types/user.d.ts +61 -0
  300. package/dist/core/types/user.d.ts.map +1 -1
  301. package/dist/core/unix/index.cjs +1056 -674
  302. package/dist/core/unix/index.js +1003 -623
  303. package/dist/core/utils/emoji-shortcodes.d.ts +13 -0
  304. package/dist/core/utils/emoji-shortcodes.d.ts.map +1 -0
  305. package/dist/core/yaml/index.cjs +8 -8
  306. package/dist/core/yaml/index.d.ts +1 -1
  307. package/dist/core/yaml/index.d.ts.map +1 -1
  308. package/dist/core/yaml/index.js +7 -7
  309. package/dist/daemon/adapters/drizzle.d.ts +26 -4
  310. package/dist/daemon/adapters/drizzle.d.ts.map +1 -1
  311. package/dist/daemon/adapters/drizzle.js +68 -7
  312. package/dist/daemon/auth/api-key-strategy.js +1 -1
  313. package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
  314. package/dist/daemon/auth/executor-runtime-scope.js +19 -5
  315. package/dist/daemon/auth/launch-auth.d.ts +5 -4
  316. package/dist/daemon/auth/launch-auth.d.ts.map +1 -1
  317. package/dist/daemon/auth/launch-auth.js +123 -39
  318. package/dist/daemon/auth/refresh-token-service.d.ts +22 -0
  319. package/dist/daemon/auth/refresh-token-service.d.ts.map +1 -0
  320. package/dist/daemon/auth/refresh-token-service.js +133 -0
  321. package/dist/daemon/auth/runtime-tokens.d.ts +3 -1
  322. package/dist/daemon/auth/runtime-tokens.d.ts.map +1 -1
  323. package/dist/daemon/auth/runtime-tokens.js +17 -4
  324. package/dist/daemon/auth/service-jwt-strategy.d.ts +2 -1
  325. package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
  326. package/dist/daemon/auth/service-jwt-strategy.js +127 -1
  327. package/dist/daemon/auth/token-invalidation.d.ts +11 -0
  328. package/dist/daemon/auth/token-invalidation.d.ts.map +1 -0
  329. package/dist/daemon/auth/token-invalidation.js +38 -0
  330. package/dist/daemon/auth/user-redaction.d.ts +12 -0
  331. package/dist/daemon/auth/user-redaction.d.ts.map +1 -0
  332. package/dist/daemon/auth/user-redaction.js +13 -0
  333. package/dist/daemon/declarations.d.ts +4 -4
  334. package/dist/daemon/declarations.d.ts.map +1 -1
  335. package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
  336. package/dist/daemon/hooks/gateway-route.js +23 -13
  337. package/dist/daemon/index.d.ts.map +1 -1
  338. package/dist/daemon/index.js +7234 -2866
  339. package/dist/daemon/knowledge/pgvector.d.ts +3 -3
  340. package/dist/daemon/knowledge/pgvector.d.ts.map +1 -1
  341. package/dist/daemon/knowledge/pgvector.js +24 -0
  342. package/dist/daemon/knowledge/units.d.ts +2 -2
  343. package/dist/daemon/knowledge/units.d.ts.map +1 -1
  344. package/dist/daemon/main.js +7234 -2866
  345. package/dist/daemon/mcp/server.d.ts +3 -3
  346. package/dist/daemon/mcp/server.d.ts.map +1 -1
  347. package/dist/daemon/mcp/server.js +1467 -71
  348. package/dist/daemon/mcp/tokens.d.ts +2 -2
  349. package/dist/daemon/mcp/tokens.d.ts.map +1 -1
  350. package/dist/daemon/mcp/tokens.js +5 -1
  351. package/dist/daemon/mcp/tool-registry.d.ts.map +1 -1
  352. package/dist/daemon/mcp/tool-registry.js +1 -0
  353. package/dist/daemon/mcp/tools/analytics.d.ts.map +1 -1
  354. package/dist/daemon/mcp/tools/analytics.js +548 -23
  355. package/dist/daemon/mcp/tools/artifacts.js +510 -19
  356. package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
  357. package/dist/daemon/mcp/tools/boards.js +517 -20
  358. package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
  359. package/dist/daemon/mcp/tools/branches.js +574 -49
  360. package/dist/daemon/mcp/tools/card-types.js +508 -17
  361. package/dist/daemon/mcp/tools/cards.js +508 -17
  362. package/dist/daemon/mcp/tools/environment.js +516 -17
  363. package/dist/daemon/mcp/tools/gateway-channels.d.ts +4 -0
  364. package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -0
  365. package/dist/daemon/mcp/tools/gateway-channels.js +16035 -0
  366. package/dist/daemon/mcp/tools/knowledge.js +508 -17
  367. package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
  368. package/dist/daemon/mcp/tools/mcp-servers.js +843 -17
  369. package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
  370. package/dist/daemon/mcp/tools/messages.js +568 -31
  371. package/dist/daemon/mcp/tools/proxies.js +518 -19
  372. package/dist/daemon/mcp/tools/repos.js +508 -17
  373. package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
  374. package/dist/daemon/mcp/tools/schedules.js +511 -18
  375. package/dist/daemon/mcp/tools/search.js +508 -17
  376. package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
  377. package/dist/daemon/mcp/tools/sessions.js +521 -23
  378. package/dist/daemon/mcp/tools/tasks.js +508 -17
  379. package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
  380. package/dist/daemon/mcp/tools/users.js +527 -22
  381. package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
  382. package/dist/daemon/mcp/tools/widgets.js +536 -18
  383. package/dist/daemon/register-hooks.d.ts +3 -2
  384. package/dist/daemon/register-hooks.d.ts.map +1 -1
  385. package/dist/daemon/register-hooks.js +894 -582
  386. package/dist/daemon/register-routes.d.ts +3 -2
  387. package/dist/daemon/register-routes.d.ts.map +1 -1
  388. package/dist/daemon/register-routes.js +2715 -816
  389. package/dist/daemon/register-services.d.ts +2 -2
  390. package/dist/daemon/register-services.d.ts.map +1 -1
  391. package/dist/daemon/register-services.js +2445 -633
  392. package/dist/daemon/services/artifacts.d.ts +34 -6
  393. package/dist/daemon/services/artifacts.d.ts.map +1 -1
  394. package/dist/daemon/services/artifacts.js +109 -8
  395. package/dist/daemon/services/assistant-knowledge.d.ts +2 -2
  396. package/dist/daemon/services/assistant-knowledge.d.ts.map +1 -1
  397. package/dist/daemon/services/board-comments.d.ts +8 -5
  398. package/dist/daemon/services/board-comments.d.ts.map +1 -1
  399. package/dist/daemon/services/board-comments.js +78 -13
  400. package/dist/daemon/services/board-objects.d.ts +8 -5
  401. package/dist/daemon/services/board-objects.d.ts.map +1 -1
  402. package/dist/daemon/services/board-objects.js +14 -4
  403. package/dist/daemon/services/boards.d.ts +34 -5
  404. package/dist/daemon/services/boards.d.ts.map +1 -1
  405. package/dist/daemon/services/boards.js +116 -8
  406. package/dist/daemon/services/branch-owners.d.ts +3 -1
  407. package/dist/daemon/services/branch-owners.d.ts.map +1 -1
  408. package/dist/daemon/services/branch-owners.js +31 -4
  409. package/dist/daemon/services/branches.d.ts +31 -8
  410. package/dist/daemon/services/branches.d.ts.map +1 -1
  411. package/dist/daemon/services/branches.js +242 -35
  412. package/dist/daemon/services/card-types.d.ts +3 -3
  413. package/dist/daemon/services/card-types.d.ts.map +1 -1
  414. package/dist/daemon/services/card-types.js +68 -7
  415. package/dist/daemon/services/cards.d.ts +19 -4
  416. package/dist/daemon/services/cards.d.ts.map +1 -1
  417. package/dist/daemon/services/cards.js +92 -8
  418. package/dist/daemon/services/check-auth.d.ts +2 -2
  419. package/dist/daemon/services/check-auth.d.ts.map +1 -1
  420. package/dist/daemon/services/claude-cli-integration.d.ts +4 -1
  421. package/dist/daemon/services/claude-cli-integration.d.ts.map +1 -1
  422. package/dist/daemon/services/claude-cli-integration.js +117 -65
  423. package/dist/daemon/services/claude-models.d.ts +3 -3
  424. package/dist/daemon/services/claude-models.d.ts.map +1 -1
  425. package/dist/daemon/services/claude-models.js +383 -272
  426. package/dist/daemon/services/config.d.ts +12 -4
  427. package/dist/daemon/services/config.d.ts.map +1 -1
  428. package/dist/daemon/services/config.js +39 -3
  429. package/dist/daemon/services/copilot-models.d.ts +3 -3
  430. package/dist/daemon/services/copilot-models.d.ts.map +1 -1
  431. package/dist/daemon/services/cursor-models.d.ts +3 -3
  432. package/dist/daemon/services/cursor-models.d.ts.map +1 -1
  433. package/dist/daemon/services/files.d.ts +3 -3
  434. package/dist/daemon/services/files.d.ts.map +1 -1
  435. package/dist/daemon/services/files.js +24 -5
  436. package/dist/daemon/services/gateway-channels-test.d.ts +24 -0
  437. package/dist/daemon/services/gateway-channels-test.d.ts.map +1 -0
  438. package/dist/daemon/services/gateway-channels-test.js +66 -0
  439. package/dist/daemon/services/gateway-channels.d.ts +3 -3
  440. package/dist/daemon/services/gateway-channels.d.ts.map +1 -1
  441. package/dist/daemon/services/gateway-channels.js +68 -7
  442. package/dist/daemon/services/gateway.d.ts +48 -3
  443. package/dist/daemon/services/gateway.d.ts.map +1 -1
  444. package/dist/daemon/services/gateway.js +606 -60
  445. package/dist/daemon/services/github-app-setup.d.ts +3 -3
  446. package/dist/daemon/services/github-app-setup.d.ts.map +1 -1
  447. package/dist/daemon/services/groups.d.ts +5 -5
  448. package/dist/daemon/services/groups.d.ts.map +1 -1
  449. package/dist/daemon/services/health-monitor.d.ts +34 -2
  450. package/dist/daemon/services/health-monitor.d.ts.map +1 -1
  451. package/dist/daemon/services/health-monitor.js +145 -23
  452. package/dist/daemon/services/knowledge-document-edits.d.ts +3 -3
  453. package/dist/daemon/services/knowledge-document-edits.d.ts.map +1 -1
  454. package/dist/daemon/services/knowledge-documents.d.ts +3 -3
  455. package/dist/daemon/services/knowledge-documents.d.ts.map +1 -1
  456. package/dist/daemon/services/knowledge-documents.js +92 -7
  457. package/dist/daemon/services/knowledge-embedding-indexer.d.ts +7 -2
  458. package/dist/daemon/services/knowledge-embedding-indexer.d.ts.map +1 -1
  459. package/dist/daemon/services/knowledge-embedding-indexer.js +37 -3
  460. package/dist/daemon/services/knowledge-graph.d.ts +3 -3
  461. package/dist/daemon/services/knowledge-graph.d.ts.map +1 -1
  462. package/dist/daemon/services/knowledge-indexing.d.ts +3 -3
  463. package/dist/daemon/services/knowledge-indexing.d.ts.map +1 -1
  464. package/dist/daemon/services/knowledge-namespaces.d.ts +3 -3
  465. package/dist/daemon/services/knowledge-namespaces.d.ts.map +1 -1
  466. package/dist/daemon/services/knowledge-namespaces.js +72 -8
  467. package/dist/daemon/services/knowledge-reindex.d.ts +3 -3
  468. package/dist/daemon/services/knowledge-reindex.d.ts.map +1 -1
  469. package/dist/daemon/services/knowledge-reindex.js +28 -1
  470. package/dist/daemon/services/knowledge-search.d.ts +3 -3
  471. package/dist/daemon/services/knowledge-search.d.ts.map +1 -1
  472. package/dist/daemon/services/knowledge-settings.d.ts +3 -3
  473. package/dist/daemon/services/knowledge-settings.d.ts.map +1 -1
  474. package/dist/daemon/services/knowledge-settings.js +24 -0
  475. package/dist/daemon/services/knowledge-versions.d.ts +3 -3
  476. package/dist/daemon/services/knowledge-versions.d.ts.map +1 -1
  477. package/dist/daemon/services/knowledge-versions.js +68 -7
  478. package/dist/daemon/services/leaderboard.d.ts +14 -6
  479. package/dist/daemon/services/leaderboard.d.ts.map +1 -1
  480. package/dist/daemon/services/leaderboard.js +74 -15
  481. package/dist/daemon/services/local-actions.d.ts +13 -0
  482. package/dist/daemon/services/local-actions.d.ts.map +1 -0
  483. package/dist/daemon/services/local-actions.js +120 -0
  484. package/dist/daemon/services/mcp-servers.d.ts +3 -3
  485. package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
  486. package/dist/daemon/services/mcp-servers.js +68 -7
  487. package/dist/daemon/services/messages.d.ts +10 -6
  488. package/dist/daemon/services/messages.d.ts.map +1 -1
  489. package/dist/daemon/services/messages.js +87 -7
  490. package/dist/daemon/services/repos.d.ts +6 -6
  491. package/dist/daemon/services/repos.d.ts.map +1 -1
  492. package/dist/daemon/services/repos.js +131 -32
  493. package/dist/daemon/services/scheduler.d.ts +23 -27
  494. package/dist/daemon/services/scheduler.d.ts.map +1 -1
  495. package/dist/daemon/services/scheduler.js +55 -28
  496. package/dist/daemon/services/schedules.d.ts +3 -3
  497. package/dist/daemon/services/schedules.d.ts.map +1 -1
  498. package/dist/daemon/services/schedules.js +68 -7
  499. package/dist/daemon/services/session-env-selections.d.ts +3 -3
  500. package/dist/daemon/services/session-env-selections.d.ts.map +1 -1
  501. package/dist/daemon/services/session-mcp-servers.d.ts +3 -3
  502. package/dist/daemon/services/session-mcp-servers.d.ts.map +1 -1
  503. package/dist/daemon/services/session-token-service.d.ts.map +1 -1
  504. package/dist/daemon/services/session-token-service.js +3 -0
  505. package/dist/daemon/services/sessions.d.ts +9 -5
  506. package/dist/daemon/services/sessions.d.ts.map +1 -1
  507. package/dist/daemon/services/sessions.js +143 -10
  508. package/dist/daemon/services/tasks.d.ts +11 -5
  509. package/dist/daemon/services/tasks.d.ts.map +1 -1
  510. package/dist/daemon/services/tasks.js +199 -39
  511. package/dist/daemon/services/terminals.d.ts +21 -3
  512. package/dist/daemon/services/terminals.d.ts.map +1 -1
  513. package/dist/daemon/services/terminals.js +81 -25
  514. package/dist/daemon/services/thread-session-map.d.ts +3 -3
  515. package/dist/daemon/services/thread-session-map.d.ts.map +1 -1
  516. package/dist/daemon/services/thread-session-map.js +68 -7
  517. package/dist/daemon/services/user-avatar-sync.d.ts +21 -0
  518. package/dist/daemon/services/user-avatar-sync.d.ts.map +1 -0
  519. package/dist/daemon/services/user-avatar-sync.js +267 -0
  520. package/dist/daemon/services/users.d.ts +29 -9
  521. package/dist/daemon/services/users.d.ts.map +1 -1
  522. package/dist/daemon/services/users.js +383 -30
  523. package/dist/daemon/services/zone-trigger.d.ts.map +1 -1
  524. package/dist/daemon/services/zone-trigger.js +17 -4
  525. package/dist/daemon/setup/build-info.d.ts +1 -1
  526. package/dist/daemon/setup/build-info.d.ts.map +1 -1
  527. package/dist/daemon/setup/build-info.js +5 -1
  528. package/dist/daemon/setup/database.d.ts +8 -3
  529. package/dist/daemon/setup/database.d.ts.map +1 -1
  530. package/dist/daemon/setup/database.js +26 -6
  531. package/dist/daemon/setup/first-run-admin.d.ts +2 -2
  532. package/dist/daemon/setup/first-run-admin.d.ts.map +1 -1
  533. package/dist/daemon/setup/index.js +97 -17
  534. package/dist/daemon/setup/socketio.d.ts +10 -1
  535. package/dist/daemon/setup/socketio.d.ts.map +1 -1
  536. package/dist/daemon/setup/socketio.js +68 -10
  537. package/dist/daemon/startup.d.ts +13 -2
  538. package/dist/daemon/startup.d.ts.map +1 -1
  539. package/dist/daemon/startup.js +348 -86
  540. package/dist/daemon/utils/append-system-message.d.ts +2 -2
  541. package/dist/daemon/utils/append-system-message.d.ts.map +1 -1
  542. package/dist/daemon/utils/apply-session-config-defaults.d.ts.map +1 -1
  543. package/dist/daemon/utils/apply-session-config-defaults.js +12 -1
  544. package/dist/daemon/utils/authorization.d.ts +3 -1
  545. package/dist/daemon/utils/authorization.d.ts.map +1 -1
  546. package/dist/daemon/utils/authorization.js +21 -6
  547. package/dist/daemon/utils/branch-authorization.d.ts +30 -0
  548. package/dist/daemon/utils/branch-authorization.d.ts.map +1 -1
  549. package/dist/daemon/utils/branch-authorization.js +63 -5
  550. package/dist/daemon/utils/branch-inspect.d.ts +1 -0
  551. package/dist/daemon/utils/branch-inspect.d.ts.map +1 -1
  552. package/dist/daemon/utils/branch-inspect.js +11 -3
  553. package/dist/daemon/utils/executor-read-impersonation.d.ts +2 -2
  554. package/dist/daemon/utils/executor-read-impersonation.d.ts.map +1 -1
  555. package/dist/daemon/utils/git-impersonation.d.ts +10 -10
  556. package/dist/daemon/utils/git-impersonation.d.ts.map +1 -1
  557. package/dist/daemon/utils/git-remote-credential-scan.d.ts +3 -3
  558. package/dist/daemon/utils/git-remote-credential-scan.d.ts.map +1 -1
  559. package/dist/daemon/utils/git-remote-credential-scan.js +6 -2
  560. package/dist/daemon/utils/mcp-token-authorization.d.ts +18 -13
  561. package/dist/daemon/utils/mcp-token-authorization.d.ts.map +1 -1
  562. package/dist/daemon/utils/mcp-token-authorization.js +11 -5
  563. package/dist/daemon/utils/open-source-telemetry-config.d.ts +6 -0
  564. package/dist/daemon/utils/open-source-telemetry-config.d.ts.map +1 -0
  565. package/dist/daemon/utils/open-source-telemetry-config.js +21 -0
  566. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts +7 -0
  567. package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts.map +1 -0
  568. package/dist/daemon/utils/open-source-telemetry-heartbeat.js +15 -0
  569. package/dist/daemon/utils/open-source-telemetry-usage.d.ts +9 -0
  570. package/dist/daemon/utils/open-source-telemetry-usage.d.ts.map +1 -0
  571. package/dist/daemon/utils/open-source-telemetry-usage.js +121 -0
  572. package/dist/daemon/utils/realign-repo-origin.d.ts +3 -3
  573. package/dist/daemon/utils/realign-repo-origin.d.ts.map +1 -1
  574. package/dist/daemon/utils/realign-repo-origin.js +47 -16
  575. package/dist/daemon/utils/realtime-publish.d.ts +2 -0
  576. package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
  577. package/dist/daemon/utils/realtime-publish.js +51 -10
  578. package/dist/daemon/utils/session-state-hooks.d.ts +3 -3
  579. package/dist/daemon/utils/session-state-hooks.d.ts.map +1 -1
  580. package/dist/daemon/utils/session-turn-lock.d.ts +8 -1
  581. package/dist/daemon/utils/session-turn-lock.d.ts.map +1 -1
  582. package/dist/daemon/utils/session-turn-lock.js +25 -2
  583. package/dist/daemon/utils/spawn-executor.d.ts +23 -1
  584. package/dist/daemon/utils/spawn-executor.d.ts.map +1 -1
  585. package/dist/daemon/utils/spawn-executor.js +34 -4
  586. package/dist/daemon/utils/tenant-db-scope.d.ts +20 -0
  587. package/dist/daemon/utils/tenant-db-scope.d.ts.map +1 -0
  588. package/dist/daemon/utils/tenant-db-scope.js +114 -0
  589. package/dist/daemon/utils/unix-group-init.d.ts +3 -3
  590. package/dist/daemon/utils/unix-group-init.d.ts.map +1 -1
  591. package/dist/daemon/utils/upload.d.ts +6 -9
  592. package/dist/daemon/utils/upload.d.ts.map +1 -1
  593. package/dist/daemon/utils/upload.js +30 -37
  594. package/dist/daemon/widgets/env-vars/index.d.ts +26 -1
  595. package/dist/daemon/widgets/env-vars/index.d.ts.map +1 -1
  596. package/dist/daemon/widgets/env-vars/index.js +145 -21
  597. package/dist/daemon/widgets/index.js +137 -21
  598. package/dist/executor/commands/environment.d.ts.map +1 -1
  599. package/dist/executor/commands/environment.js +9 -5
  600. package/dist/executor/commands/git.js +1 -1
  601. package/dist/executor/git/index.d.ts +8 -0
  602. package/dist/executor/git/index.d.ts.map +1 -0
  603. package/dist/executor/git/index.js +7 -0
  604. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  605. package/dist/executor/handlers/sdk/base-executor.js +4 -1
  606. package/dist/executor/handlers/sdk/git-safe-directory.d.ts.map +1 -1
  607. package/dist/executor/handlers/sdk/git-safe-directory.js +1 -1
  608. package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
  609. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +6 -10
  610. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  611. package/dist/executor/sdk-handlers/codex/codex-tool.js +12 -15
  612. package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +1 -1
  613. package/dist/executor/sdk-handlers/codex/normalizer.js +11 -1
  614. package/dist/executor/sdk-handlers/codex/pricing/litellm-openai-model-prices.json +3663 -0
  615. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts +31 -0
  616. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts.map +1 -0
  617. package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.js +46 -0
  618. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  619. package/dist/executor/sdk-handlers/codex/prompt-service.js +61 -6
  620. package/dist/executor/sdk-handlers/codex/usage.d.ts +14 -23
  621. package/dist/executor/sdk-handlers/codex/usage.d.ts.map +1 -1
  622. package/dist/executor/sdk-handlers/codex/usage.js +18 -33
  623. package/dist/executor/services/feathers-client.js +5 -5
  624. package/dist/git/index.cjs +1101 -0
  625. package/dist/git/index.d.ts +533 -0
  626. package/dist/git/index.d.ts.map +1 -0
  627. package/dist/git/index.js +1022 -0
  628. package/dist/git/package.json +21 -0
  629. package/dist/git/pure.cjs +185 -0
  630. package/dist/git/pure.d.ts +39 -0
  631. package/dist/git/pure.d.ts.map +1 -0
  632. package/dist/git/pure.js +139 -0
  633. package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +1 -0
  634. package/dist/ui/assets/App-hJtcOxHv.js +5 -0
  635. package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
  636. package/dist/ui/assets/AppNode-BhuMpn8O.js +1 -0
  637. package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
  638. package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js +1 -0
  639. package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
  640. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +9 -0
  641. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
  642. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +9 -0
  643. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
  644. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +19 -0
  645. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
  646. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +34 -0
  647. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
  648. package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js +7 -0
  649. package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
  650. package/dist/ui/assets/ConversationView-9-3ma1u-.js +1 -0
  651. package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
  652. package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js +2 -0
  653. package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
  654. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +24 -0
  655. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
  656. package/dist/ui/assets/{MarketingScreenshotPage-zv5RUCuV.js → MarketingScreenshotPage-CmDPBHOl.js} +2 -2
  657. package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
  658. package/dist/ui/assets/MobileApp-BpgSG_gz.js +1 -0
  659. package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
  660. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +13 -0
  661. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
  662. package/dist/ui/assets/{SessionCanvas-mEmYGZhC.css → SessionCanvas-Bh7Yg5dZ.css} +1 -1
  663. package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css.gz +0 -0
  664. package/dist/ui/assets/{StreamdownDemoPage-wzWaqWwr.js → StreamdownDemoPage-okKKR2QH.js} +2 -2
  665. package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
  666. package/dist/ui/assets/TerminalModal-D9jMGZXv.js +2 -0
  667. package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
  668. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +1 -0
  669. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
  670. package/dist/ui/assets/ThemedSyntaxHighlighter.inner-C1FdIHn0.js +1 -0
  671. package/dist/ui/assets/{antd-CfbbHJOz.js → antd-DT5ackd0.js} +5 -5
  672. package/dist/ui/assets/{antd-CfbbHJOz.js.gz → antd-DT5ackd0.js.gz} +0 -0
  673. package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +1 -0
  674. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js +36 -0
  675. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
  676. package/dist/ui/assets/{blockDiagram-VD42YOAC-BhZaEN19.js → blockDiagram-VD42YOAC-Dh1_TVW2.js} +4 -4
  677. package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
  678. package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dk_UH-sY.js → c4Diagram-YG6GDRKO-B1e96AcB.js} +2 -2
  679. package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
  680. package/dist/ui/assets/channel-Jv4dT4S5.js +1 -0
  681. package/dist/ui/assets/{chunk-4BX2VUAB-XprbG2TG.js → chunk-4BX2VUAB-BODpCjJx.js} +1 -1
  682. package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +1 -0
  683. package/dist/ui/assets/{chunk-ABZYJK2D-BJcrryHK.js → chunk-ABZYJK2D-DCTXWSzV.js} +3 -3
  684. package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
  685. package/dist/ui/assets/{chunk-AGHRB4JF-DvxmfbM0.js → chunk-AGHRB4JF-CbNphBjE.js} +1 -1
  686. package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
  687. package/dist/ui/assets/{chunk-ATLVNIR6-DbeJ0OrR.js → chunk-ATLVNIR6-rWg3qxof.js} +1 -1
  688. package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
  689. package/dist/ui/assets/{chunk-B4BG7PRW-C53q2ggf.js → chunk-B4BG7PRW-CgtLCbpE.js} +3 -3
  690. package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
  691. package/dist/ui/assets/{chunk-CVBHYZKI-B3EBSlb3.js → chunk-CVBHYZKI-DTL6Zgr0.js} +1 -1
  692. package/dist/ui/assets/{chunk-DI55MBZ5-vIyNEQN-.js → chunk-DI55MBZ5-Dwvx2Kva.js} +1 -1
  693. package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
  694. package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +1 -0
  695. package/dist/ui/assets/{chunk-FMBD7UC4-rddmfK-Z.js → chunk-FMBD7UC4-BogA_9CV.js} +1 -1
  696. package/dist/ui/assets/{chunk-HN2XXSSU-Dttqcg3b.js → chunk-HN2XXSSU-2blQO3Gb.js} +1 -1
  697. package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
  698. package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js +11 -0
  699. package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
  700. package/dist/ui/assets/{chunk-JZLCHNYA-EUmx2y4H.js → chunk-JZLCHNYA-BsgZ79Fa.js} +5 -5
  701. package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
  702. package/dist/ui/assets/{chunk-MI3HLSF2-65n9Mkyc.js → chunk-MI3HLSF2-dwYeUy5S.js} +1 -1
  703. package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
  704. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +2 -0
  705. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
  706. package/dist/ui/assets/{chunk-QN33PNHL-DsRKK6NR.js → chunk-QN33PNHL-DxdIDCAa.js} +1 -1
  707. package/dist/ui/assets/{chunk-QXUST7PY-BCYnMiS3.js → chunk-QXUST7PY-BCK2V0i-.js} +2 -2
  708. package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
  709. package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +1 -0
  710. package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js +2 -0
  711. package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
  712. package/dist/ui/assets/{chunk-TZMSLE5B-BuQUQcTr.js → chunk-TZMSLE5B-dX5RaM6g.js} +1 -1
  713. package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
  714. package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +1 -0
  715. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +1 -0
  716. package/dist/ui/assets/constants-GjIDNVyt.js +1 -0
  717. package/dist/ui/assets/{cose-bilkent-S5V4N54A-CnPB3ARO.js → cose-bilkent-S5V4N54A-Dx0BJVDl.js} +1 -1
  718. package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
  719. package/dist/ui/assets/{dagre-6UL2VRFP-DhS-k_Se.js → dagre-6UL2VRFP-DiQSUxqN.js} +1 -1
  720. package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
  721. package/dist/ui/assets/{dagre-KgLoHEuy.js → dagre-Bekd9Vdj.js} +1 -1
  722. package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
  723. package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js +24 -0
  724. package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
  725. package/dist/ui/assets/{diagram-QEK2KX5R-BPCitvbo.js → diagram-QEK2KX5R-CobkCRdj.js} +1 -1
  726. package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
  727. package/dist/ui/assets/{diagram-S2PKOQOG-NW4uK6sx.js → diagram-S2PKOQOG-DHEZYivc.js} +1 -1
  728. package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
  729. package/dist/ui/assets/editor-DQIG-JYZ.js +43 -0
  730. package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
  731. package/dist/ui/assets/emoji-B0hLmSLZ.js +3 -0
  732. package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
  733. package/dist/ui/assets/{erDiagram-Q2GNP2WA-me1fboaf.js → erDiagram-Q2GNP2WA-BVNeTZPQ.js} +2 -2
  734. package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
  735. package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js +162 -0
  736. package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
  737. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js +267 -0
  738. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
  739. package/dist/ui/assets/{gitGraph-F6HP7TQM-CfFE_uAC.js → gitGraph-F6HP7TQM-DMFIqn4h.js} +1 -1
  740. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js +65 -0
  741. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
  742. package/dist/ui/assets/index-DTz1Dif6.js +64 -0
  743. package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
  744. package/dist/ui/assets/{index-DxuPq13l.css → index-qkT7Qqm2.css} +1 -1
  745. package/dist/ui/assets/index-qkT7Qqm2.css.gz +0 -0
  746. package/dist/ui/assets/{info-NVLQJR56-i_xHYg3f.js → info-NVLQJR56-DZ3K-w48.js} +1 -1
  747. package/dist/ui/assets/{infoDiagram-ER5ION4S-2NL93b78.js → infoDiagram-ER5ION4S-CxnBJQu6.js} +1 -1
  748. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CZF-2DHU.js → journeyDiagram-XKPGCS4Q-CHYNj-f8.js} +3 -3
  749. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
  750. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-CfvJIOny.js → kanban-definition-3W4ZIXB7-DQPCCsj2.js} +1 -1
  751. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
  752. package/dist/ui/assets/{line-DDv8kOJk.js → line-DBRjKmfa.js} +1 -1
  753. package/dist/ui/assets/{linear-Daef-l29.js → linear-DFao5Wyp.js} +1 -1
  754. package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
  755. package/dist/ui/assets/{mermaid-parser.core-CdK9QgYV.js → mermaid-parser.core-DYCfacHj.js} +2 -2
  756. package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
  757. package/dist/ui/assets/mermaid.core-C6xGFSdE.js +11 -0
  758. package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
  759. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cb3QMflX.js → mindmap-definition-VGOIOE7T-L3Pw-YM7.js} +1 -1
  760. package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
  761. package/dist/ui/assets/{packet-BFZMPI3H-Bm2uwz4i.js → packet-BFZMPI3H-CpL6iNoa.js} +1 -1
  762. package/dist/ui/assets/{particles-DsJFOarW.js → particles-CT8hcJOA.js} +1 -1
  763. package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
  764. package/dist/ui/assets/{pie-7BOR55EZ-5i17tVnF.js → pie-7BOR55EZ-hTqChbTo.js} +1 -1
  765. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BxIwQWvw.js → pieDiagram-ADFJNKIX-Bf4Nou75.js} +1 -1
  766. package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
  767. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-B5HPe4ga.js → quadrantDiagram-AYHSOK5B-DpjUTLB1.js} +3 -3
  768. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
  769. package/dist/ui/assets/{radar-NHE76QYJ-BTn-tq0k.js → radar-NHE76QYJ-myy7OENC.js} +1 -1
  770. package/dist/ui/assets/reactflow-Cubtnk8i.js +2 -0
  771. package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
  772. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-YfI6llkX.js → requirementDiagram-UZGBJVZJ-Bfrfh-0-.js} +1 -1
  773. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
  774. package/dist/ui/assets/{sandpack-D7koO5op.js → sandpack-C58bwfIS.js} +38 -38
  775. package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
  776. package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +1 -0
  777. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js +10 -0
  778. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
  779. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-DAe4Um17.js → sequenceDiagram-WL72ISMW-CNgly63p.js} +6 -6
  780. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
  781. package/dist/ui/assets/src-DAeyG22O.js +34 -0
  782. package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
  783. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js +1 -0
  784. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
  785. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +1 -0
  786. package/dist/ui/assets/streamdown-BdAVfkeF.js +521 -0
  787. package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
  788. package/dist/ui/assets/syntax-BOfTnQiy.js +9 -0
  789. package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
  790. package/dist/ui/assets/{timeline-definition-IT6M3QCI-D6P5txjT.js → timeline-definition-IT6M3QCI-CaRH3k4l.js} +16 -16
  791. package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
  792. package/dist/ui/assets/{treemap-KMMF4GRG-Bitm3gy4.js → treemap-KMMF4GRG-CUaLOV_B.js} +1 -1
  793. package/dist/ui/assets/{useUserLocalStorage-Ckb8HsIw.js → useUserLocalStorage-C8sgXgXR.js} +1 -1
  794. package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
  795. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CsybjUbd.js → xychartDiagram-PRI3JC2R-BlhkI9T_.js} +1 -1
  796. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
  797. package/dist/ui/index.html +10 -11
  798. package/dist/ui/index.html.gz +0 -0
  799. package/package.json +6 -5
  800. package/scripts/postinstall.js +27 -19
  801. package/dist/cli/commands/daemon/sync.d.ts.map +0 -1
  802. package/dist/ui/assets/App-DcEY8Ota.js +0 -3
  803. package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
  804. package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js +0 -1
  805. package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
  806. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +0 -9
  807. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
  808. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +0 -18
  809. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
  810. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +0 -34
  811. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
  812. package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js +0 -8
  813. package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
  814. package/dist/ui/assets/ConversationView-CUWR0gR6.js +0 -1
  815. package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
  816. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +0 -24
  817. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
  818. package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
  819. package/dist/ui/assets/MobileApp-VgVnsnsN.js +0 -1
  820. package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
  821. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +0 -20
  822. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
  823. package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
  824. package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
  825. package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js +0 -1
  826. package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
  827. package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +0 -1
  828. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js +0 -36
  829. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
  830. package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
  831. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
  832. package/dist/ui/assets/channel-D6_nUWlW.js +0 -1
  833. package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +0 -1
  834. package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
  835. package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
  836. package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
  837. package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
  838. package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
  839. package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +0 -1
  840. package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
  841. package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js +0 -11
  842. package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
  843. package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
  844. package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
  845. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +0 -2
  846. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
  847. package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
  848. package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +0 -1
  849. package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js +0 -2
  850. package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
  851. package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
  852. package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +0 -1
  853. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +0 -1
  854. package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
  855. package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
  856. package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
  857. package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js +0 -24
  858. package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
  859. package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
  860. package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
  861. package/dist/ui/assets/editor-CzFWIUw2.js +0 -39
  862. package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
  863. package/dist/ui/assets/emoji-Dkz4Zzv_.js +0 -3
  864. package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
  865. package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
  866. package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js +0 -162
  867. package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
  868. package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js +0 -267
  869. package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
  870. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js +0 -65
  871. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
  872. package/dist/ui/assets/index-BN5_Qq7R.js +0 -324
  873. package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
  874. package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
  875. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
  876. package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
  877. package/dist/ui/assets/katex-CamJ39w1.js +0 -257
  878. package/dist/ui/assets/katex-CamJ39w1.js.gz +0 -0
  879. package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
  880. package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
  881. package/dist/ui/assets/mermaid.core-D6GS9mU-.js +0 -11
  882. package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
  883. package/dist/ui/assets/message-SqLqNYcv.js +0 -36
  884. package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
  885. package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
  886. package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
  887. package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
  888. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
  889. package/dist/ui/assets/reactflow-Bf74ngoo.js +0 -2
  890. package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
  891. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
  892. package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
  893. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js +0 -10
  894. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
  895. package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
  896. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js +0 -1
  897. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
  898. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +0 -1
  899. package/dist/ui/assets/syntax-C-M-8jOU.js +0 -10
  900. package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
  901. package/dist/ui/assets/theme-BQZdiqwv.js +0 -1
  902. package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
  903. package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
  904. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
  905. /package/dist/cli/commands/{admin → local}/sync-unix.d.ts +0 -0
@@ -31,9 +31,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
33
  // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
34
+ var getImportMetaUrl, importMetaUrl;
34
35
  var init_cjs_shims = __esm({
35
36
  "../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_tsx@4.22.4_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js"() {
36
37
  "use strict";
38
+ getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
+ importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
37
40
  }
38
41
  });
39
42
 
@@ -179,6 +182,71 @@ var init_executor_heartbeat = __esm({
179
182
  }
180
183
  });
181
184
 
185
+ // src/config/multitenancy.ts
186
+ function detectPostgresUrl(url) {
187
+ if (!url) return false;
188
+ const lower = url.toLowerCase();
189
+ return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
190
+ }
191
+ function resolveMultiTenancyDatabaseDialect(config = {}) {
192
+ if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
193
+ return process.env.AGOR_DB_DIALECT;
194
+ }
195
+ if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
196
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
197
+ return config.database.dialect;
198
+ }
199
+ if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
200
+ return "postgresql";
201
+ }
202
+ return "sqlite";
203
+ }
204
+ function resolveMultiTenancyConfig(config) {
205
+ const raw = config.multi_tenancy ?? {};
206
+ const mode = raw.mode ?? "static";
207
+ return {
208
+ mode,
209
+ static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
210
+ ...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
211
+ ...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
212
+ };
213
+ }
214
+ function assertValidMultiTenancyConfig(config) {
215
+ const resolved = resolveMultiTenancyConfig(config);
216
+ if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
217
+ throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
218
+ }
219
+ if (!resolved.static_tenant_id) {
220
+ throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
221
+ }
222
+ if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
223
+ throw new Error(
224
+ `Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
225
+ );
226
+ }
227
+ if (resolved.mode === "required_from_auth") {
228
+ if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
229
+ throw new Error(
230
+ "Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
231
+ );
232
+ }
233
+ if (!resolved.auth_claim && !resolved.trusted_header) {
234
+ throw new Error(
235
+ "Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
236
+ );
237
+ }
238
+ }
239
+ }
240
+ var DEFAULT_STATIC_TENANT_ID, RESERVED_AUTH_CLAIMS;
241
+ var init_multitenancy = __esm({
242
+ "src/config/multitenancy.ts"() {
243
+ "use strict";
244
+ init_cjs_shims();
245
+ DEFAULT_STATIC_TENANT_ID = "default";
246
+ RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
247
+ }
248
+ });
249
+
182
250
  // src/config/types.ts
183
251
  var init_types = __esm({
184
252
  "src/config/types.ts"() {
@@ -216,7 +284,10 @@ function writeCachedConfig(configPath, config, key) {
216
284
  cachedEntry = { path: configPath, config: structuredClone(config), key };
217
285
  }
218
286
  function parseAndValidateConfig(content) {
219
- const parsed = import_js_yaml.default.load(content);
287
+ if (content.trim() === "") {
288
+ return {};
289
+ }
290
+ const parsed = yaml.load(content);
220
291
  const finalConfig = parsed || {};
221
292
  validateConfig(finalConfig);
222
293
  return finalConfig;
@@ -245,6 +316,7 @@ To update: agor config set execution.unix_user_mode insulated`
245
316
  `Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
246
317
  );
247
318
  }
319
+ assertValidMultiTenancyConfig(config);
248
320
  validateOptionalHttpUrl(
249
321
  config.external_launch,
250
322
  "login_redirect_url",
@@ -305,7 +377,12 @@ function getDefaultConfig() {
305
377
  // Default: sync passwords to Unix
306
378
  executor_heartbeat: resolveExecutorHeartbeatConfig()
307
379
  },
308
- analytics: getDefaultAnalyticsConfig()
380
+ analytics: getDefaultAnalyticsConfig(),
381
+ telemetry: {},
382
+ multi_tenancy: {
383
+ mode: "static",
384
+ static_tenant_id: "default"
385
+ }
309
386
  };
310
387
  }
311
388
  function loadConfigSync() {
@@ -349,7 +426,7 @@ function loadConfigSync() {
349
426
  }
350
427
  return finalConfig;
351
428
  }
352
- var import_node_fs2, import_promises, import_node_os, import_node_path2, import_js_yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
429
+ var import_node_fs2, import_promises, import_node_os, import_node_path2, yaml, NO_FILE, NO_FILE_KEY, cachedEntry;
353
430
  var init_config_manager = __esm({
354
431
  "src/config/config-manager.ts"() {
355
432
  "use strict";
@@ -358,10 +435,11 @@ var init_config_manager = __esm({
358
435
  import_promises = __toESM(require("fs/promises"), 1);
359
436
  import_node_os = __toESM(require("os"), 1);
360
437
  import_node_path2 = __toESM(require("path"), 1);
361
- import_js_yaml = __toESM(require("js-yaml"), 1);
438
+ yaml = __toESM(require("js-yaml"), 1);
362
439
  init_analytics_defaults();
363
440
  init_constants();
364
441
  init_executor_heartbeat();
442
+ init_multitenancy();
365
443
  init_types();
366
444
  NO_FILE = -1;
367
445
  NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
@@ -613,6 +691,14 @@ var init_template = __esm({
613
691
  }
614
692
  });
615
693
 
694
+ // src/types/tenant.ts
695
+ var init_tenant = __esm({
696
+ "src/types/tenant.ts"() {
697
+ "use strict";
698
+ init_cjs_shims();
699
+ }
700
+ });
701
+
616
702
  // src/types/ui.ts
617
703
  var init_ui = __esm({
618
704
  "src/types/ui.ts"() {
@@ -703,6 +789,7 @@ var init_types2 = __esm({
703
789
  init_session();
704
790
  init_task();
705
791
  init_template();
792
+ init_tenant();
706
793
  init_ui();
707
794
  init_user();
708
795
  init_utils();
@@ -728,6 +815,7 @@ __export(schema_postgres_exports, {
728
815
  cardTypes: () => cardTypes,
729
816
  cards: () => cards,
730
817
  gatewayChannels: () => gatewayChannels,
818
+ gatewayOutboundMessages: () => gatewayOutboundMessages,
731
819
  groupMemberships: () => groupMemberships,
732
820
  groups: () => groups,
733
821
  kbDocumentUnits: () => kbDocumentUnits,
@@ -756,7 +844,7 @@ __export(schema_postgres_exports, {
756
844
  userMcpOauthTokens: () => userMcpOauthTokens,
757
845
  users: () => users
758
846
  });
759
- var import_drizzle_orm, import_pg_core, bytea, t, sessions, sessionRelationships, tasks, serializedSessions, messages, boards, repos, branches, branchOwners, boardOwners, schedules, users, groups, groupMemberships, branchGroupGrants, boardGroupGrants, appVariables, userApiKeys, mcpServers, cardTypes, cards, artifacts, artifactTrustGrants, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, sessionEnvSelections, kbNamespaces, kbNamespaceAcl, kbDocuments, kbDocumentVersions, kbDocumentUnits, kbEmbeddingSpaces, kbGraphNodes, kbGraphEdges, sessionsRelations, sessionRelationshipsRelations, branchesRelations, schedulesRelations;
847
+ var import_drizzle_orm, import_pg_core, bytea, t, sessions, sessionRelationships, tasks, serializedSessions, messages, boards, repos, branches, branchOwners, boardOwners, schedules, users, groups, groupMemberships, branchGroupGrants, boardGroupGrants, appVariables, userApiKeys, mcpServers, cardTypes, cards, artifacts, artifactTrustGrants, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, gatewayOutboundMessages, sessionEnvSelections, kbNamespaces, kbNamespaceAcl, kbDocuments, kbDocumentVersions, kbDocumentUnits, kbEmbeddingSpaces, kbGraphNodes, kbGraphEdges, sessionsRelations, sessionRelationshipsRelations, branchesRelations, schedulesRelations;
760
848
  var init_schema_postgres = __esm({
761
849
  "src/db/schema.postgres.ts"() {
762
850
  "use strict";
@@ -777,6 +865,7 @@ var init_schema_postgres = __esm({
777
865
  sessions = (0, import_pg_core.pgTable)(
778
866
  "sessions",
779
867
  {
868
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
780
869
  // Primary identity
781
870
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).primaryKey(),
782
871
  created_at: t.timestamp("created_at").notNull(),
@@ -836,7 +925,9 @@ var init_schema_postgres = __esm({
836
925
  data: t.json("data").$type().notNull()
837
926
  },
838
927
  (table) => ({
928
+ tenantIdx: (0, import_pg_core.index)("sessions_tenant_id_idx").on(table.tenant_id),
839
929
  statusIdx: (0, import_pg_core.index)("sessions_status_idx").on(table.status),
930
+ statusReadyIdx: (0, import_pg_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
840
931
  agenticToolIdx: (0, import_pg_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
841
932
  boardIdx: (0, import_pg_core.index)("sessions_board_idx").on(table.board_id),
842
933
  branchIdx: (0, import_pg_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -848,12 +939,13 @@ var init_schema_postgres = __esm({
848
939
  // Partial unique index — covering for the scheduler's dedup lookup
849
940
  // AND serves as the DB-level guard against check-then-create races
850
941
  // in spawnScheduledSession.
851
- scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
942
+ scheduleRunUnique: (0, import_pg_core.uniqueIndex)("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(import_drizzle_orm.sql`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
852
943
  })
853
944
  );
854
945
  sessionRelationships = (0, import_pg_core.pgTable)(
855
946
  "session_relationships",
856
947
  {
948
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
857
949
  relationship_id: (0, import_pg_core.varchar)("relationship_id", { length: 36 }).primaryKey(),
858
950
  source_session_id: (0, import_pg_core.varchar)("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
859
951
  target_session_id: (0, import_pg_core.varchar)("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
@@ -871,10 +963,23 @@ var init_schema_postgres = __esm({
871
963
  data: t.json("data")
872
964
  },
873
965
  (table) => ({
966
+ tenantIdx: (0, import_pg_core.index)("session_relationships_tenant_id_idx").on(table.tenant_id),
874
967
  sourceIdx: (0, import_pg_core.index)("session_relationships_source_idx").on(table.source_session_id),
875
968
  targetIdx: (0, import_pg_core.index)("session_relationships_target_idx").on(table.target_session_id),
876
969
  callbackIdx: (0, import_pg_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
970
+ // Composite indexes so the OR predicate in dispatchCompletionCallbacks
971
+ // (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
972
+ // over these instead of a full tenant table scan via tenant_id_idx.
973
+ tenantSourceIdx: (0, import_pg_core.index)("session_relationships_tenant_source_idx").on(
974
+ table.tenant_id,
975
+ table.source_session_id
976
+ ),
977
+ tenantTargetIdx: (0, import_pg_core.index)("session_relationships_tenant_target_idx").on(
978
+ table.tenant_id,
979
+ table.target_session_id
980
+ ),
877
981
  sourceTargetTypeUnique: (0, import_pg_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
982
+ table.tenant_id,
878
983
  table.source_session_id,
879
984
  table.target_session_id,
880
985
  table.relationship_type
@@ -884,6 +989,7 @@ var init_schema_postgres = __esm({
884
989
  tasks = (0, import_pg_core.pgTable)(
885
990
  "tasks",
886
991
  {
992
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
887
993
  task_id: (0, import_pg_core.varchar)("task_id", { length: 36 }).primaryKey(),
888
994
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
889
995
  created_at: t.timestamp("created_at").notNull(),
@@ -913,19 +1019,23 @@ var init_schema_postgres = __esm({
913
1019
  data: t.json("data").$type().notNull()
914
1020
  },
915
1021
  (table) => ({
1022
+ tenantIdx: (0, import_pg_core.index)("tasks_tenant_id_idx").on(table.tenant_id),
916
1023
  sessionIdx: (0, import_pg_core.index)("tasks_session_idx").on(table.session_id),
917
1024
  statusIdx: (0, import_pg_core.index)("tasks_status_idx").on(table.status),
918
1025
  createdIdx: (0, import_pg_core.index)("tasks_created_idx").on(table.created_at),
1026
+ // Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
1027
+ sessionCreatedIdx: (0, import_pg_core.index)("tasks_session_created_idx").on(table.session_id, table.created_at),
919
1028
  queueIdx: (0, import_pg_core.index)("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
920
1029
  // Partial unique index — defense-in-depth for `tasks.createPending` race
921
1030
  // serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
922
1031
  // rows have NULL queue_position and are unaffected.
923
- queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(import_drizzle_orm.sql`${table.status} = 'queued'`)
1032
+ queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(import_drizzle_orm.sql`${table.status} = 'queued'`)
924
1033
  })
925
1034
  );
926
1035
  serializedSessions = (0, import_pg_core.pgTable)(
927
1036
  "serialized_sessions",
928
1037
  {
1038
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
929
1039
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
930
1040
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
931
1041
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
@@ -941,6 +1051,7 @@ var init_schema_postgres = __esm({
941
1051
  // gzipped; NULL while status='processing'
942
1052
  },
943
1053
  (table) => ({
1054
+ tenantIdx: (0, import_pg_core.index)("serialized_sessions_tenant_id_idx").on(table.tenant_id),
944
1055
  sessionTurnIdx: (0, import_pg_core.index)("serialized_sessions_session_turn_idx").on(
945
1056
  table.session_id,
946
1057
  table.turn_index
@@ -951,6 +1062,7 @@ var init_schema_postgres = __esm({
951
1062
  messages = (0, import_pg_core.pgTable)(
952
1063
  "messages",
953
1064
  {
1065
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
954
1066
  // Primary identity
955
1067
  message_id: (0, import_pg_core.varchar)("message_id", { length: 36 }).primaryKey(),
956
1068
  created_at: t.timestamp("created_at").notNull(),
@@ -990,15 +1102,23 @@ var init_schema_postgres = __esm({
990
1102
  data: t.json("data").$type().notNull()
991
1103
  },
992
1104
  (table) => ({
1105
+ tenantIdx: (0, import_pg_core.index)("messages_tenant_id_idx").on(table.tenant_id),
1106
+ tenantTimestampIdx: (0, import_pg_core.index)("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
993
1107
  // Indexes for efficient lookups
994
1108
  sessionIdx: (0, import_pg_core.index)("messages_session_id_idx").on(table.session_id),
995
1109
  taskIdx: (0, import_pg_core.index)("messages_task_id_idx").on(table.task_id),
996
- sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index)
1110
+ sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index),
1111
+ timestampIdx: (0, import_pg_core.index)("messages_timestamp_idx").on(table.timestamp),
1112
+ sessionTimestampIdx: (0, import_pg_core.index)("messages_session_timestamp_idx").on(
1113
+ table.session_id,
1114
+ table.timestamp
1115
+ )
997
1116
  })
998
1117
  );
999
1118
  boards = (0, import_pg_core.pgTable)(
1000
1119
  "boards",
1001
1120
  {
1121
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1002
1122
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).primaryKey(),
1003
1123
  created_at: t.timestamp("created_at").notNull(),
1004
1124
  updated_at: t.timestamp("updated_at"),
@@ -1006,7 +1126,7 @@ var init_schema_postgres = __esm({
1006
1126
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull(),
1007
1127
  // Materialized for lookups
1008
1128
  name: (0, import_pg_core.text)("name").notNull(),
1009
- slug: (0, import_pg_core.text)("slug").unique(),
1129
+ slug: (0, import_pg_core.text)("slug"),
1010
1130
  primary_assistant_id: (0, import_pg_core.varchar)("primary_assistant_id", { length: 36 }).references(
1011
1131
  () => branches.branch_id,
1012
1132
  {
@@ -1021,18 +1141,21 @@ var init_schema_postgres = __esm({
1021
1141
  archived_by: (0, import_pg_core.varchar)("archived_by", { length: 36 })
1022
1142
  },
1023
1143
  (table) => ({
1144
+ tenantIdx: (0, import_pg_core.index)("boards_tenant_id_idx").on(table.tenant_id),
1024
1145
  nameIdx: (0, import_pg_core.index)("boards_name_idx").on(table.name),
1025
- slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug)
1146
+ slugIdx: (0, import_pg_core.index)("boards_slug_idx").on(table.slug),
1147
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
1026
1148
  })
1027
1149
  );
1028
1150
  repos = (0, import_pg_core.pgTable)(
1029
1151
  "repos",
1030
1152
  {
1153
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1031
1154
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).primaryKey(),
1032
1155
  created_at: t.timestamp("created_at").notNull(),
1033
1156
  updated_at: t.timestamp("updated_at"),
1034
1157
  // Materialized for querying
1035
- slug: (0, import_pg_core.text)("slug").notNull().unique(),
1158
+ slug: (0, import_pg_core.text)("slug").notNull(),
1036
1159
  repo_type: (0, import_pg_core.text)("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
1037
1160
  // Unix group for repo-level git access (agor_rp_<short-id>)
1038
1161
  // Users who have access to ANY branch in this repo get added to this group.
@@ -1043,12 +1166,15 @@ var init_schema_postgres = __esm({
1043
1166
  data: t.json("data").$type().notNull()
1044
1167
  },
1045
1168
  (table) => ({
1046
- slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug)
1169
+ tenantIdx: (0, import_pg_core.index)("repos_tenant_id_idx").on(table.tenant_id),
1170
+ slugIdx: (0, import_pg_core.index)("repos_slug_idx").on(table.slug),
1171
+ slugTenantUnique: (0, import_pg_core.uniqueIndex)("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
1047
1172
  })
1048
1173
  );
1049
1174
  branches = (0, import_pg_core.pgTable)(
1050
1175
  "branches",
1051
1176
  {
1177
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1052
1178
  // Primary identity
1053
1179
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).primaryKey(),
1054
1180
  repo_id: (0, import_pg_core.varchar)("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
@@ -1123,6 +1249,7 @@ var init_schema_postgres = __esm({
1123
1249
  data: t.json("data").$type().notNull()
1124
1250
  },
1125
1251
  (table) => ({
1252
+ tenantIdx: (0, import_pg_core.index)("branches_tenant_id_idx").on(table.tenant_id),
1126
1253
  repoIdx: (0, import_pg_core.index)("branches_repo_idx").on(table.repo_id),
1127
1254
  nameIdx: (0, import_pg_core.index)("branches_name_idx").on(table.name),
1128
1255
  refIdx: (0, import_pg_core.index)("branches_ref_idx").on(table.ref),
@@ -1136,22 +1263,26 @@ var init_schema_postgres = __esm({
1136
1263
  branchOwners = (0, import_pg_core.pgTable)(
1137
1264
  "branch_owners",
1138
1265
  {
1266
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1139
1267
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1140
1268
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1141
1269
  created_at: t.timestamp("created_at").defaultNow()
1142
1270
  },
1143
1271
  (table) => ({
1272
+ tenantIdx: (0, import_pg_core.index)("branch_owners_tenant_id_idx").on(table.tenant_id),
1144
1273
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.user_id] })
1145
1274
  })
1146
1275
  );
1147
1276
  boardOwners = (0, import_pg_core.pgTable)(
1148
1277
  "board_owners",
1149
1278
  {
1279
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1150
1280
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1151
1281
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1152
1282
  created_at: t.timestamp("created_at")
1153
1283
  },
1154
1284
  (table) => ({
1285
+ tenantIdx: (0, import_pg_core.index)("board_owners_tenant_id_idx").on(table.tenant_id),
1155
1286
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.user_id] }),
1156
1287
  userIdx: (0, import_pg_core.index)("board_owners_user_idx").on(table.user_id)
1157
1288
  })
@@ -1159,6 +1290,7 @@ var init_schema_postgres = __esm({
1159
1290
  schedules = (0, import_pg_core.pgTable)(
1160
1291
  "schedules",
1161
1292
  {
1293
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1162
1294
  schedule_id: (0, import_pg_core.varchar)("schedule_id", { length: 36 }).primaryKey(),
1163
1295
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1164
1296
  name: (0, import_pg_core.text)("name").notNull(),
@@ -1182,6 +1314,7 @@ var init_schema_postgres = __esm({
1182
1314
  created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull().references(() => users.user_id)
1183
1315
  },
1184
1316
  (table) => ({
1317
+ tenantIdx: (0, import_pg_core.index)("schedules_tenant_id_idx").on(table.tenant_id),
1185
1318
  enabledNextRunIdx: (0, import_pg_core.index)("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
1186
1319
  branchIdx: (0, import_pg_core.index)("schedules_branch_idx").on(table.branch_id),
1187
1320
  createdByIdx: (0, import_pg_core.index)("schedules_created_by_idx").on(table.created_by)
@@ -1190,12 +1323,13 @@ var init_schema_postgres = __esm({
1190
1323
  users = (0, import_pg_core.pgTable)(
1191
1324
  "users",
1192
1325
  {
1326
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1193
1327
  // Primary identity
1194
1328
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).primaryKey(),
1195
1329
  created_at: t.timestamp("created_at").notNull(),
1196
1330
  updated_at: t.timestamp("updated_at"),
1197
1331
  // Materialized for auth lookups
1198
- email: (0, import_pg_core.text)("email").unique().notNull(),
1332
+ email: (0, import_pg_core.text)("email").notNull(),
1199
1333
  password: (0, import_pg_core.text)("password").notNull(),
1200
1334
  // bcrypt hashed
1201
1335
  // Basic profile (materialized for display)
@@ -1211,16 +1345,22 @@ var init_schema_postgres = __esm({
1211
1345
  onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
1212
1346
  // Force password change flag (admin-settable, auto-cleared on password change)
1213
1347
  must_change_password: t.bool("must_change_password").notNull().default(false),
1348
+ // Auth invalidation marker. Password changes set this timestamp so any
1349
+ // previously issued browser access or refresh token is rejected.
1350
+ tokens_valid_after: t.timestamp("tokens_valid_after"),
1214
1351
  // JSON blob for profile/preferences
1215
1352
  data: t.json("data").$type().notNull()
1216
1353
  },
1217
1354
  (table) => ({
1218
- emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email)
1355
+ tenantIdx: (0, import_pg_core.index)("users_tenant_id_idx").on(table.tenant_id),
1356
+ emailIdx: (0, import_pg_core.index)("users_email_idx").on(table.email),
1357
+ emailTenantUnique: (0, import_pg_core.uniqueIndex)("users_tenant_email_unique").on(table.tenant_id, table.email)
1219
1358
  })
1220
1359
  );
1221
1360
  groups = (0, import_pg_core.pgTable)(
1222
1361
  "groups",
1223
1362
  {
1363
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1224
1364
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).primaryKey(),
1225
1365
  name: (0, import_pg_core.text)("name").notNull(),
1226
1366
  slug: (0, import_pg_core.text)("slug").notNull(),
@@ -1233,13 +1373,15 @@ var init_schema_postgres = __esm({
1233
1373
  updated_at: t.timestamp("updated_at")
1234
1374
  },
1235
1375
  (table) => ({
1236
- slugIdx: (0, import_pg_core.uniqueIndex)("groups_slug_idx").on(table.slug),
1376
+ tenantIdx: (0, import_pg_core.index)("groups_tenant_id_idx").on(table.tenant_id),
1377
+ slugIdx: (0, import_pg_core.uniqueIndex)("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
1237
1378
  archivedIdx: (0, import_pg_core.index)("groups_archived_idx").on(table.archived)
1238
1379
  })
1239
1380
  );
1240
1381
  groupMemberships = (0, import_pg_core.pgTable)(
1241
1382
  "group_memberships",
1242
1383
  {
1384
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1243
1385
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1244
1386
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1245
1387
  added_by: (0, import_pg_core.varchar)("added_by", { length: 36 }).references(() => users.user_id, {
@@ -1248,6 +1390,7 @@ var init_schema_postgres = __esm({
1248
1390
  created_at: t.timestamp("created_at").notNull()
1249
1391
  },
1250
1392
  (table) => ({
1393
+ tenantIdx: (0, import_pg_core.index)("group_memberships_tenant_id_idx").on(table.tenant_id),
1251
1394
  pk: (0, import_pg_core.primaryKey)({ columns: [table.group_id, table.user_id] }),
1252
1395
  userIdx: (0, import_pg_core.index)("group_memberships_user_idx").on(table.user_id)
1253
1396
  })
@@ -1255,6 +1398,7 @@ var init_schema_postgres = __esm({
1255
1398
  branchGroupGrants = (0, import_pg_core.pgTable)(
1256
1399
  "branch_group_grants",
1257
1400
  {
1401
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1258
1402
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1259
1403
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1260
1404
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1266,6 +1410,7 @@ var init_schema_postgres = __esm({
1266
1410
  updated_at: t.timestamp("updated_at")
1267
1411
  },
1268
1412
  (table) => ({
1413
+ tenantIdx: (0, import_pg_core.index)("branch_group_grants_tenant_id_idx").on(table.tenant_id),
1269
1414
  pk: (0, import_pg_core.primaryKey)({ columns: [table.branch_id, table.group_id] }),
1270
1415
  groupIdx: (0, import_pg_core.index)("branch_group_grants_group_idx").on(table.group_id)
1271
1416
  })
@@ -1273,6 +1418,7 @@ var init_schema_postgres = __esm({
1273
1418
  boardGroupGrants = (0, import_pg_core.pgTable)(
1274
1419
  "board_group_grants",
1275
1420
  {
1421
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1276
1422
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1277
1423
  group_id: (0, import_pg_core.varchar)("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
1278
1424
  can: (0, import_pg_core.text)("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
@@ -1284,6 +1430,7 @@ var init_schema_postgres = __esm({
1284
1430
  updated_at: t.timestamp("updated_at")
1285
1431
  },
1286
1432
  (table) => ({
1433
+ tenantIdx: (0, import_pg_core.index)("board_group_grants_tenant_id_idx").on(table.tenant_id),
1287
1434
  pk: (0, import_pg_core.primaryKey)({ columns: [table.board_id, table.group_id] }),
1288
1435
  groupIdx: (0, import_pg_core.index)("board_group_grants_group_idx").on(table.group_id)
1289
1436
  })
@@ -1291,6 +1438,7 @@ var init_schema_postgres = __esm({
1291
1438
  appVariables = (0, import_pg_core.pgTable)(
1292
1439
  "app_variables",
1293
1440
  {
1441
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1294
1442
  variable_id: (0, import_pg_core.varchar)("variable_id", { length: 36 }).primaryKey(),
1295
1443
  namespace: (0, import_pg_core.text)("namespace").notNull(),
1296
1444
  key: (0, import_pg_core.text)("key").notNull(),
@@ -1306,13 +1454,19 @@ var init_schema_postgres = __esm({
1306
1454
  updated_at: t.timestamp("updated_at").notNull()
1307
1455
  },
1308
1456
  (table) => ({
1309
- namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_namespace_key_idx").on(table.namespace, table.key),
1457
+ tenantIdx: (0, import_pg_core.index)("app_variables_tenant_id_idx").on(table.tenant_id),
1458
+ namespaceKeyIdx: (0, import_pg_core.uniqueIndex)("app_variables_tenant_namespace_key_unique").on(
1459
+ table.tenant_id,
1460
+ table.namespace,
1461
+ table.key
1462
+ ),
1310
1463
  namespaceIdx: (0, import_pg_core.index)("app_variables_namespace_idx").on(table.namespace)
1311
1464
  })
1312
1465
  );
1313
1466
  userApiKeys = (0, import_pg_core.pgTable)(
1314
1467
  "user_api_keys",
1315
1468
  {
1469
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1316
1470
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1317
1471
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
1318
1472
  name: (0, import_pg_core.text)("name").notNull(),
@@ -1324,6 +1478,7 @@ var init_schema_postgres = __esm({
1324
1478
  last_used_at: t.timestamp("last_used_at")
1325
1479
  },
1326
1480
  (table) => ({
1481
+ tenantIdx: (0, import_pg_core.index)("user_api_keys_tenant_id_idx").on(table.tenant_id),
1327
1482
  userIdx: (0, import_pg_core.index)("user_api_keys_user_idx").on(table.user_id),
1328
1483
  prefixIdx: (0, import_pg_core.index)("user_api_keys_prefix_idx").on(table.prefix)
1329
1484
  })
@@ -1331,6 +1486,7 @@ var init_schema_postgres = __esm({
1331
1486
  mcpServers = (0, import_pg_core.pgTable)(
1332
1487
  "mcp_servers",
1333
1488
  {
1489
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1334
1490
  // Primary identity
1335
1491
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).primaryKey(),
1336
1492
  created_at: t.timestamp("created_at").notNull(),
@@ -1357,6 +1513,7 @@ var init_schema_postgres = __esm({
1357
1513
  data: t.json("data").$type().notNull()
1358
1514
  },
1359
1515
  (table) => ({
1516
+ tenantIdx: (0, import_pg_core.index)("mcp_servers_tenant_id_idx").on(table.tenant_id),
1360
1517
  nameIdx: (0, import_pg_core.index)("mcp_servers_name_idx").on(table.name),
1361
1518
  scopeIdx: (0, import_pg_core.index)("mcp_servers_scope_idx").on(table.scope),
1362
1519
  ownerIdx: (0, import_pg_core.index)("mcp_servers_owner_idx").on(table.owner_user_id),
@@ -1366,6 +1523,7 @@ var init_schema_postgres = __esm({
1366
1523
  cardTypes = (0, import_pg_core.pgTable)(
1367
1524
  "card_types",
1368
1525
  {
1526
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1369
1527
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).primaryKey(),
1370
1528
  name: (0, import_pg_core.text)("name").notNull(),
1371
1529
  emoji: (0, import_pg_core.text)("emoji"),
@@ -1377,12 +1535,14 @@ var init_schema_postgres = __esm({
1377
1535
  updated_at: t.timestamp("updated_at").notNull()
1378
1536
  },
1379
1537
  (table) => ({
1538
+ tenantIdx: (0, import_pg_core.index)("card_types_tenant_id_idx").on(table.tenant_id),
1380
1539
  nameIdx: (0, import_pg_core.index)("card_types_name_idx").on(table.name)
1381
1540
  })
1382
1541
  );
1383
1542
  cards = (0, import_pg_core.pgTable)(
1384
1543
  "cards",
1385
1544
  {
1545
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1386
1546
  card_id: (0, import_pg_core.varchar)("card_id", { length: 36 }).primaryKey(),
1387
1547
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
1388
1548
  card_type_id: (0, import_pg_core.varchar)("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
@@ -1403,6 +1563,7 @@ var init_schema_postgres = __esm({
1403
1563
  archived_at: t.timestamp("archived_at")
1404
1564
  },
1405
1565
  (table) => ({
1566
+ tenantIdx: (0, import_pg_core.index)("cards_tenant_id_idx").on(table.tenant_id),
1406
1567
  boardIdx: (0, import_pg_core.index)("cards_board_idx").on(table.board_id),
1407
1568
  cardTypeIdx: (0, import_pg_core.index)("cards_card_type_idx").on(table.card_type_id),
1408
1569
  titleIdx: (0, import_pg_core.index)("cards_title_idx").on(table.title),
@@ -1413,6 +1574,7 @@ var init_schema_postgres = __esm({
1413
1574
  artifacts = (0, import_pg_core.pgTable)(
1414
1575
  "artifacts",
1415
1576
  {
1577
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1416
1578
  artifact_id: (0, import_pg_core.varchar)("artifact_id", { length: 36 }).primaryKey(),
1417
1579
  branch_id: (0, import_pg_core.varchar)("branch_id", { length: 36 }).references(() => branches.branch_id, {
1418
1580
  onDelete: "set null"
@@ -1448,6 +1610,7 @@ var init_schema_postgres = __esm({
1448
1610
  archived_at: t.timestamp("archived_at")
1449
1611
  },
1450
1612
  (table) => ({
1613
+ tenantIdx: (0, import_pg_core.index)("artifacts_tenant_id_idx").on(table.tenant_id),
1451
1614
  branchIdx: (0, import_pg_core.index)("artifacts_branch_idx").on(table.branch_id),
1452
1615
  sourceSessionIdx: (0, import_pg_core.index)("artifacts_source_session_idx").on(table.source_session_id),
1453
1616
  boardIdx: (0, import_pg_core.index)("artifacts_board_idx").on(table.board_id),
@@ -1458,6 +1621,7 @@ var init_schema_postgres = __esm({
1458
1621
  artifactTrustGrants = (0, import_pg_core.pgTable)(
1459
1622
  "artifact_trust_grants",
1460
1623
  {
1624
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1461
1625
  grant_id: (0, import_pg_core.varchar)("grant_id", { length: 36 }).primaryKey(),
1462
1626
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull(),
1463
1627
  scope_type: (0, import_pg_core.text)("scope_type").notNull(),
@@ -1468,6 +1632,7 @@ var init_schema_postgres = __esm({
1468
1632
  revoked_at: t.timestamp("revoked_at")
1469
1633
  },
1470
1634
  (table) => ({
1635
+ tenantIdx: (0, import_pg_core.index)("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
1471
1636
  userIdx: (0, import_pg_core.index)("artifact_trust_grants_user_idx").on(table.user_id),
1472
1637
  scopeIdx: (0, import_pg_core.index)("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
1473
1638
  })
@@ -1475,6 +1640,7 @@ var init_schema_postgres = __esm({
1475
1640
  boardObjects = (0, import_pg_core.pgTable)(
1476
1641
  "board_objects",
1477
1642
  {
1643
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1478
1644
  // Primary identity
1479
1645
  object_id: (0, import_pg_core.varchar)("object_id", { length: 36 }).primaryKey(),
1480
1646
  board_id: (0, import_pg_core.varchar)("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
@@ -1490,6 +1656,7 @@ var init_schema_postgres = __esm({
1490
1656
  data: t.json("data").$type().notNull()
1491
1657
  },
1492
1658
  (table) => ({
1659
+ tenantIdx: (0, import_pg_core.index)("board_objects_tenant_id_idx").on(table.tenant_id),
1493
1660
  boardIdx: (0, import_pg_core.index)("board_objects_board_idx").on(table.board_id),
1494
1661
  branchIdx: (0, import_pg_core.index)("board_objects_branch_idx").on(table.branch_id),
1495
1662
  cardIdx: (0, import_pg_core.index)("board_objects_card_idx").on(table.card_id)
@@ -1498,12 +1665,14 @@ var init_schema_postgres = __esm({
1498
1665
  sessionMcpServers = (0, import_pg_core.pgTable)(
1499
1666
  "session_mcp_servers",
1500
1667
  {
1668
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1501
1669
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1502
1670
  mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
1503
1671
  enabled: t.bool("enabled").notNull().default(true),
1504
1672
  added_at: t.timestamp("added_at").notNull()
1505
1673
  },
1506
1674
  (table) => ({
1675
+ tenantIdx: (0, import_pg_core.index)("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
1507
1676
  // Composite primary key
1508
1677
  pk: (0, import_pg_core.index)("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
1509
1678
  // Indexes for queries
@@ -1515,6 +1684,7 @@ var init_schema_postgres = __esm({
1515
1684
  userMcpOauthTokens = (0, import_pg_core.pgTable)(
1516
1685
  "user_mcp_oauth_tokens",
1517
1686
  {
1687
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1518
1688
  // NULL = shared-mode token (one per mcp_server_id)
1519
1689
  user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).references(() => users.user_id, {
1520
1690
  onDelete: "cascade"
@@ -1532,6 +1702,7 @@ var init_schema_postgres = __esm({
1532
1702
  updated_at: t.timestamp("updated_at")
1533
1703
  },
1534
1704
  (table) => ({
1705
+ tenantIdx: (0, import_pg_core.index)("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
1535
1706
  // Composite lookup indexes. Uniqueness enforced via partial unique indexes
1536
1707
  // created in the migration (one for per-user rows, one for the shared row).
1537
1708
  pk: (0, import_pg_core.index)("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
@@ -1542,6 +1713,7 @@ var init_schema_postgres = __esm({
1542
1713
  boardComments = (0, import_pg_core.pgTable)(
1543
1714
  "board_comments",
1544
1715
  {
1716
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1545
1717
  // Primary identity
1546
1718
  comment_id: (0, import_pg_core.varchar)("comment_id", { length: 36 }).primaryKey(),
1547
1719
  created_at: t.timestamp("created_at").notNull(),
@@ -1583,6 +1755,7 @@ var init_schema_postgres = __esm({
1583
1755
  data: t.json("data").$type().notNull()
1584
1756
  },
1585
1757
  (table) => ({
1758
+ tenantIdx: (0, import_pg_core.index)("board_comments_tenant_id_idx").on(table.tenant_id),
1586
1759
  boardIdx: (0, import_pg_core.index)("board_comments_board_idx").on(table.board_id),
1587
1760
  sessionIdx: (0, import_pg_core.index)("board_comments_session_idx").on(table.session_id),
1588
1761
  taskIdx: (0, import_pg_core.index)("board_comments_task_idx").on(table.task_id),
@@ -1597,6 +1770,7 @@ var init_schema_postgres = __esm({
1597
1770
  gatewayChannels = (0, import_pg_core.pgTable)(
1598
1771
  "gateway_channels",
1599
1772
  {
1773
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1600
1774
  // Primary identity
1601
1775
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1602
1776
  created_at: t.timestamp("created_at").notNull(),
@@ -1610,7 +1784,7 @@ var init_schema_postgres = __esm({
1610
1784
  }).notNull(),
1611
1785
  target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
1612
1786
  agor_user_id: (0, import_pg_core.varchar)("agor_user_id", { length: 36 }).notNull(),
1613
- channel_key: (0, import_pg_core.text)("channel_key").notNull().unique(),
1787
+ channel_key: (0, import_pg_core.text)("channel_key").notNull(),
1614
1788
  enabled: t.bool("enabled").notNull().default(true),
1615
1789
  last_message_at: t.timestamp("last_message_at"),
1616
1790
  // JSON blob for platform credentials (encrypted at rest)
@@ -1619,13 +1793,19 @@ var init_schema_postgres = __esm({
1619
1793
  agentic_config: t.json("agentic_config")
1620
1794
  },
1621
1795
  (table) => ({
1796
+ tenantIdx: (0, import_pg_core.index)("gateway_channels_tenant_id_idx").on(table.tenant_id),
1622
1797
  channelKeyIdx: (0, import_pg_core.index)("idx_gateway_channel_key").on(table.channel_key),
1798
+ channelKeyTenantUnique: (0, import_pg_core.uniqueIndex)("gateway_channels_tenant_channel_key_unique").on(
1799
+ table.tenant_id,
1800
+ table.channel_key
1801
+ ),
1623
1802
  enabledTypeIdx: (0, import_pg_core.index)("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
1624
1803
  })
1625
1804
  );
1626
1805
  threadSessionMap = (0, import_pg_core.pgTable)(
1627
1806
  "thread_session_map",
1628
1807
  {
1808
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1629
1809
  // Primary identity
1630
1810
  id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1631
1811
  created_at: t.timestamp("created_at").notNull(),
@@ -1643,7 +1823,9 @@ var init_schema_postgres = __esm({
1643
1823
  metadata: t.json("metadata")
1644
1824
  },
1645
1825
  (table) => ({
1646
- uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_channel_thread").on(
1826
+ tenantIdx: (0, import_pg_core.index)("thread_session_map_tenant_id_idx").on(table.tenant_id),
1827
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_thread_map_tenant_channel_thread").on(
1828
+ table.tenant_id,
1647
1829
  table.channel_id,
1648
1830
  table.thread_id
1649
1831
  ),
@@ -1652,14 +1834,82 @@ var init_schema_postgres = __esm({
1652
1834
  channelStatusIdx: (0, import_pg_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1653
1835
  })
1654
1836
  );
1837
+ gatewayOutboundMessages = (0, import_pg_core.pgTable)(
1838
+ "gateway_outbound_messages",
1839
+ {
1840
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1841
+ id: (0, import_pg_core.varchar)("id", { length: 36 }).primaryKey(),
1842
+ created_at: t.timestamp("created_at").notNull(),
1843
+ updated_at: t.timestamp("updated_at").notNull(),
1844
+ gateway_channel_id: (0, import_pg_core.varchar)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
1845
+ channel_type: (0, import_pg_core.text)("channel_type", {
1846
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
1847
+ }).notNull(),
1848
+ platform_channel_id: (0, import_pg_core.text)("platform_channel_id").notNull(),
1849
+ platform_message_id: (0, import_pg_core.text)("platform_message_id").notNull(),
1850
+ platform_thread_id: (0, import_pg_core.text)("platform_thread_id").notNull(),
1851
+ platform_permalink: (0, import_pg_core.text)("platform_permalink"),
1852
+ target_branch_id: (0, import_pg_core.varchar)("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
1853
+ emitted_by_user_id: (0, import_pg_core.varchar)("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
1854
+ emitted_by_session_id: (0, import_pg_core.varchar)("emitted_by_session_id", { length: 36 }).references(
1855
+ () => sessions.session_id,
1856
+ {
1857
+ onDelete: "set null"
1858
+ }
1859
+ ),
1860
+ emitted_by_task_id: (0, import_pg_core.varchar)("emitted_by_task_id", { length: 36 }).references(
1861
+ () => tasks.task_id,
1862
+ {
1863
+ onDelete: "set null"
1864
+ }
1865
+ ),
1866
+ emitted_by_schedule_id: (0, import_pg_core.varchar)("emitted_by_schedule_id", { length: 36 }).references(
1867
+ () => schedules.schedule_id,
1868
+ {
1869
+ onDelete: "set null"
1870
+ }
1871
+ ),
1872
+ message_text: (0, import_pg_core.text)("message_text").notNull(),
1873
+ message_preview: (0, import_pg_core.text)("message_preview").notNull(),
1874
+ metadata: t.json("metadata"),
1875
+ consumed_by_session_id: (0, import_pg_core.varchar)("consumed_by_session_id", { length: 36 }).references(
1876
+ () => sessions.session_id,
1877
+ {
1878
+ onDelete: "set null"
1879
+ }
1880
+ ),
1881
+ consumed_at: t.timestamp("consumed_at")
1882
+ },
1883
+ (table) => ({
1884
+ tenantIdx: (0, import_pg_core.index)("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
1885
+ uniqueChannelThread: (0, import_pg_core.uniqueIndex)("uniq_gateway_outbound_tenant_channel_thread").on(
1886
+ table.tenant_id,
1887
+ table.gateway_channel_id,
1888
+ table.platform_thread_id
1889
+ ),
1890
+ emittedSessionIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_session").on(
1891
+ table.emitted_by_session_id
1892
+ ),
1893
+ emittedScheduleIdx: (0, import_pg_core.index)("idx_gateway_outbound_emitted_schedule").on(
1894
+ table.emitted_by_schedule_id
1895
+ ),
1896
+ targetBranchCreatedIdx: (0, import_pg_core.index)("idx_gateway_outbound_branch_created").on(
1897
+ table.target_branch_id,
1898
+ table.created_at
1899
+ ),
1900
+ consumedIdx: (0, import_pg_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
1901
+ })
1902
+ );
1655
1903
  sessionEnvSelections = (0, import_pg_core.pgTable)(
1656
1904
  "session_env_selections",
1657
1905
  {
1906
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1658
1907
  session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
1659
1908
  env_var_name: (0, import_pg_core.text)("env_var_name").notNull(),
1660
1909
  created_at: t.timestamp("created_at").notNull()
1661
1910
  },
1662
1911
  (table) => ({
1912
+ tenantIdx: (0, import_pg_core.index)("session_env_selections_tenant_id_idx").on(table.tenant_id),
1663
1913
  pk: (0, import_pg_core.primaryKey)({ columns: [table.session_id, table.env_var_name] }),
1664
1914
  sessionIdx: (0, import_pg_core.index)("session_env_selections_session_idx").on(table.session_id)
1665
1915
  })
@@ -1667,6 +1917,7 @@ var init_schema_postgres = __esm({
1667
1917
  kbNamespaces = (0, import_pg_core.pgTable)(
1668
1918
  "kb_namespaces",
1669
1919
  {
1920
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1670
1921
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).primaryKey(),
1671
1922
  slug: (0, import_pg_core.text)("slug").notNull(),
1672
1923
  display_name: (0, import_pg_core.text)("display_name").notNull(),
@@ -1693,7 +1944,8 @@ var init_schema_postgres = __esm({
1693
1944
  archived_at: t.timestamp("archived_at")
1694
1945
  },
1695
1946
  (table) => ({
1696
- slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_slug_idx").on(table.slug).where(import_drizzle_orm.sql`${table.archived} = false`),
1947
+ tenantIdx: (0, import_pg_core.index)("kb_namespaces_tenant_id_idx").on(table.tenant_id),
1948
+ slugIdx: (0, import_pg_core.uniqueIndex)("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(import_drizzle_orm.sql`${table.archived} = false`),
1697
1949
  kindIdx: (0, import_pg_core.index)("kb_namespaces_kind_idx").on(table.kind),
1698
1950
  ownerIdx: (0, import_pg_core.index)("kb_namespaces_owner_idx").on(table.owner_user_id),
1699
1951
  repoIdx: (0, import_pg_core.index)("kb_namespaces_repo_idx").on(table.repo_id),
@@ -1704,6 +1956,7 @@ var init_schema_postgres = __esm({
1704
1956
  kbNamespaceAcl = (0, import_pg_core.pgTable)(
1705
1957
  "kb_namespace_acl",
1706
1958
  {
1959
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1707
1960
  namespace_acl_id: (0, import_pg_core.varchar)("namespace_acl_id", { length: 36 }).primaryKey(),
1708
1961
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1709
1962
  subject_type: (0, import_pg_core.text)("subject_type", { enum: ["user", "group"] }).notNull(),
@@ -1716,9 +1969,11 @@ var init_schema_postgres = __esm({
1716
1969
  updated_at: t.timestamp("updated_at")
1717
1970
  },
1718
1971
  (table) => ({
1972
+ tenantIdx: (0, import_pg_core.index)("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
1719
1973
  namespaceIdx: (0, import_pg_core.index)("kb_namespace_acl_namespace_idx").on(table.namespace_id),
1720
1974
  subjectIdx: (0, import_pg_core.index)("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
1721
- namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_namespace_subject_idx").on(
1975
+ namespaceSubjectIdx: (0, import_pg_core.uniqueIndex)("kb_namespace_acl_tenant_namespace_subject_unique").on(
1976
+ table.tenant_id,
1722
1977
  table.namespace_id,
1723
1978
  table.subject_type,
1724
1979
  table.subject_id
@@ -1728,6 +1983,7 @@ var init_schema_postgres = __esm({
1728
1983
  kbDocuments = (0, import_pg_core.pgTable)(
1729
1984
  "kb_documents",
1730
1985
  {
1986
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1731
1987
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).primaryKey(),
1732
1988
  namespace_id: (0, import_pg_core.varchar)("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
1733
1989
  path: (0, import_pg_core.text)("path").notNull(),
@@ -1755,8 +2011,9 @@ var init_schema_postgres = __esm({
1755
2011
  archived_at: t.timestamp("archived_at")
1756
2012
  },
1757
2013
  (table) => ({
1758
- namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_namespace_path_idx").on(table.namespace_id, table.path).where(import_drizzle_orm.sql`${table.archived} = false`),
1759
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_uri_idx").on(table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
2014
+ tenantIdx: (0, import_pg_core.index)("kb_documents_tenant_id_idx").on(table.tenant_id),
2015
+ namespacePathIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(import_drizzle_orm.sql`${table.archived} = false`),
2016
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
1760
2017
  namespaceIdx: (0, import_pg_core.index)("kb_documents_namespace_idx").on(table.namespace_id),
1761
2018
  kindIdx: (0, import_pg_core.index)("kb_documents_kind_idx").on(table.kind),
1762
2019
  visibilityIdx: (0, import_pg_core.index)("kb_documents_visibility_idx").on(table.visibility),
@@ -1769,6 +2026,7 @@ var init_schema_postgres = __esm({
1769
2026
  kbDocumentVersions = (0, import_pg_core.pgTable)(
1770
2027
  "kb_document_versions",
1771
2028
  {
2029
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1772
2030
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).primaryKey(),
1773
2031
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1774
2032
  version_number: (0, import_pg_core.integer)("version_number").notNull(),
@@ -1788,7 +2046,9 @@ var init_schema_postgres = __esm({
1788
2046
  created_at: t.timestamp("created_at").notNull()
1789
2047
  },
1790
2048
  (table) => ({
1791
- documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_document_version_idx").on(
2049
+ tenantIdx: (0, import_pg_core.index)("kb_document_versions_tenant_id_idx").on(table.tenant_id),
2050
+ documentVersionIdx: (0, import_pg_core.uniqueIndex)("kb_document_versions_tenant_document_version_unique").on(
2051
+ table.tenant_id,
1792
2052
  table.document_id,
1793
2053
  table.version_number
1794
2054
  ),
@@ -1800,6 +2060,7 @@ var init_schema_postgres = __esm({
1800
2060
  kbDocumentUnits = (0, import_pg_core.pgTable)(
1801
2061
  "kb_document_units",
1802
2062
  {
2063
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1803
2064
  unit_id: (0, import_pg_core.varchar)("unit_id", { length: 36 }).primaryKey(),
1804
2065
  document_id: (0, import_pg_core.varchar)("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
1805
2066
  version_id: (0, import_pg_core.varchar)("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
@@ -1824,6 +2085,7 @@ var init_schema_postgres = __esm({
1824
2085
  updated_at: t.timestamp("updated_at")
1825
2086
  },
1826
2087
  (table) => ({
2088
+ tenantIdx: (0, import_pg_core.index)("kb_document_units_tenant_id_idx").on(table.tenant_id),
1827
2089
  documentIdx: (0, import_pg_core.index)("kb_document_units_document_idx").on(table.document_id),
1828
2090
  versionIdx: (0, import_pg_core.index)("kb_document_units_version_idx").on(table.version_id),
1829
2091
  versionOrdinalIdx: (0, import_pg_core.index)("kb_document_units_version_ordinal_idx").on(
@@ -1837,6 +2099,7 @@ var init_schema_postgres = __esm({
1837
2099
  kbEmbeddingSpaces = (0, import_pg_core.pgTable)(
1838
2100
  "kb_embedding_spaces",
1839
2101
  {
2102
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1840
2103
  embedding_space_id: (0, import_pg_core.varchar)("embedding_space_id", { length: 36 }).primaryKey(),
1841
2104
  provider: (0, import_pg_core.text)("provider").notNull(),
1842
2105
  model: (0, import_pg_core.text)("model").notNull(),
@@ -1849,7 +2112,9 @@ var init_schema_postgres = __esm({
1849
2112
  updated_at: t.timestamp("updated_at")
1850
2113
  },
1851
2114
  (table) => ({
1852
- providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_provider_model_idx").on(
2115
+ tenantIdx: (0, import_pg_core.index)("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
2116
+ providerModelIdx: (0, import_pg_core.uniqueIndex)("kb_embedding_spaces_tenant_provider_model_unique").on(
2117
+ table.tenant_id,
1853
2118
  table.provider,
1854
2119
  table.model,
1855
2120
  table.dimensions,
@@ -1862,6 +2127,7 @@ var init_schema_postgres = __esm({
1862
2127
  kbGraphNodes = (0, import_pg_core.pgTable)(
1863
2128
  "kb_graph_nodes",
1864
2129
  {
2130
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1865
2131
  node_id: (0, import_pg_core.varchar)("node_id", { length: 36 }).primaryKey(),
1866
2132
  node_type: (0, import_pg_core.text)("node_type", {
1867
2133
  enum: [
@@ -1927,7 +2193,8 @@ var init_schema_postgres = __esm({
1927
2193
  archived_at: t.timestamp("archived_at")
1928
2194
  },
1929
2195
  (table) => ({
1930
- uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_uri_idx").on(table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
2196
+ tenantIdx: (0, import_pg_core.index)("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
2197
+ uriIdx: (0, import_pg_core.uniqueIndex)("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(import_drizzle_orm.sql`${table.archived} = false`),
1931
2198
  typeIdx: (0, import_pg_core.index)("kb_graph_nodes_type_idx").on(table.node_type),
1932
2199
  namespaceIdx: (0, import_pg_core.index)("kb_graph_nodes_namespace_idx").on(table.namespace_id),
1933
2200
  documentIdx: (0, import_pg_core.index)("kb_graph_nodes_document_idx").on(table.document_id),
@@ -1947,6 +2214,7 @@ var init_schema_postgres = __esm({
1947
2214
  kbGraphEdges = (0, import_pg_core.pgTable)(
1948
2215
  "kb_graph_edges",
1949
2216
  {
2217
+ tenant_id: (0, import_pg_core.text)("tenant_id").notNull().default("default"),
1950
2218
  edge_id: (0, import_pg_core.varchar)("edge_id", { length: 36 }).primaryKey(),
1951
2219
  source_node_id: (0, import_pg_core.varchar)("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
1952
2220
  target_node_id: (0, import_pg_core.varchar)("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
@@ -1975,6 +2243,7 @@ var init_schema_postgres = __esm({
1975
2243
  archived_at: t.timestamp("archived_at")
1976
2244
  },
1977
2245
  (table) => ({
2246
+ tenantIdx: (0, import_pg_core.index)("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
1978
2247
  sourceIdx: (0, import_pg_core.index)("kb_graph_edges_source_idx").on(table.source_node_id),
1979
2248
  targetIdx: (0, import_pg_core.index)("kb_graph_edges_target_idx").on(table.target_node_id),
1980
2249
  typeIdx: (0, import_pg_core.index)("kb_graph_edges_type_idx").on(table.edge_type),
@@ -1986,7 +2255,7 @@ var init_schema_postgres = __esm({
1986
2255
  table.target_node_id,
1987
2256
  table.edge_type
1988
2257
  ),
1989
- sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_source_target_type_idx").on(table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm.sql`${table.archived} = false`),
2258
+ sourceTargetTypeIdx: (0, import_pg_core.uniqueIndex)("kb_graph_edges_tenant_source_target_type_unique").on(table.tenant_id, table.source_node_id, table.target_node_id, table.edge_type).where(import_drizzle_orm.sql`${table.archived} = false`),
1990
2259
  archivedIdx: (0, import_pg_core.index)("kb_graph_edges_archived_idx").on(table.archived)
1991
2260
  })
1992
2261
  );
@@ -2050,6 +2319,7 @@ __export(schema_sqlite_exports, {
2050
2319
  cardTypes: () => cardTypes2,
2051
2320
  cards: () => cards2,
2052
2321
  gatewayChannels: () => gatewayChannels2,
2322
+ gatewayOutboundMessages: () => gatewayOutboundMessages2,
2053
2323
  groupMemberships: () => groupMemberships2,
2054
2324
  groups: () => groups2,
2055
2325
  kbDocumentUnits: () => kbDocumentUnits2,
@@ -2078,7 +2348,7 @@ __export(schema_sqlite_exports, {
2078
2348
  userMcpOauthTokens: () => userMcpOauthTokens2,
2079
2349
  users: () => users2
2080
2350
  });
2081
- var import_drizzle_orm2, import_sqlite_core, t2, sessions2, sessionRelationships2, tasks2, serializedSessions2, messages2, boards2, repos2, branches2, branchOwners2, boardOwners2, schedules2, users2, groups2, groupMemberships2, branchGroupGrants2, boardGroupGrants2, appVariables2, userApiKeys2, mcpServers2, cardTypes2, cards2, artifacts2, artifactTrustGrants2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, sessionEnvSelections2, kbNamespaces2, kbNamespaceAcl2, kbDocuments2, kbDocumentVersions2, kbDocumentUnits2, kbEmbeddingSpaces2, kbGraphNodes2, kbGraphEdges2, sessionsRelations2, sessionRelationshipsRelations2, branchesRelations2, schedulesRelations2;
2351
+ var import_drizzle_orm2, import_sqlite_core, t2, sessions2, sessionRelationships2, tasks2, serializedSessions2, messages2, boards2, repos2, branches2, branchOwners2, boardOwners2, schedules2, users2, groups2, groupMemberships2, branchGroupGrants2, boardGroupGrants2, appVariables2, userApiKeys2, mcpServers2, cardTypes2, cards2, artifacts2, artifactTrustGrants2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, gatewayOutboundMessages2, sessionEnvSelections2, kbNamespaces2, kbNamespaceAcl2, kbDocuments2, kbDocumentVersions2, kbDocumentUnits2, kbEmbeddingSpaces2, kbGraphNodes2, kbGraphEdges2, sessionsRelations2, sessionRelationshipsRelations2, branchesRelations2, schedulesRelations2;
2082
2352
  var init_schema_sqlite = __esm({
2083
2353
  "src/db/schema.sqlite.ts"() {
2084
2354
  "use strict";
@@ -2154,6 +2424,7 @@ var init_schema_sqlite = __esm({
2154
2424
  },
2155
2425
  (table) => ({
2156
2426
  statusIdx: (0, import_sqlite_core.index)("sessions_status_idx").on(table.status),
2427
+ statusReadyIdx: (0, import_sqlite_core.index)("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
2157
2428
  agenticToolIdx: (0, import_sqlite_core.index)("sessions_agentic_tool_idx").on(table.agentic_tool),
2158
2429
  boardIdx: (0, import_sqlite_core.index)("sessions_board_idx").on(table.board_id),
2159
2430
  branchIdx: (0, import_sqlite_core.index)("sessions_branch_idx").on(table.branch_id),
@@ -2193,6 +2464,9 @@ var init_schema_sqlite = __esm({
2193
2464
  sourceIdx: (0, import_sqlite_core.index)("session_relationships_source_idx").on(table.source_session_id),
2194
2465
  targetIdx: (0, import_sqlite_core.index)("session_relationships_target_idx").on(table.target_session_id),
2195
2466
  callbackIdx: (0, import_sqlite_core.index)("session_relationships_callback_idx").on(table.callback_session_id),
2467
+ // Note: no tenant_source/tenant_target composite indexes here — SQLite schema
2468
+ // has no tenant column on this table (RLS is Postgres-only). The standalone
2469
+ // source/target indexes above are sufficient for SQLite.
2196
2470
  sourceTargetTypeUnique: (0, import_sqlite_core.uniqueIndex)("session_relationships_source_target_type_unique").on(
2197
2471
  table.source_session_id,
2198
2472
  table.target_session_id,
@@ -2312,7 +2586,12 @@ var init_schema_sqlite = __esm({
2312
2586
  // Indexes for efficient lookups
2313
2587
  sessionIdx: (0, import_sqlite_core.index)("messages_session_id_idx").on(table.session_id),
2314
2588
  taskIdx: (0, import_sqlite_core.index)("messages_task_id_idx").on(table.task_id),
2315
- sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index)
2589
+ sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index),
2590
+ timestampIdx: (0, import_sqlite_core.index)("messages_timestamp_idx").on(table.timestamp),
2591
+ sessionTimestampIdx: (0, import_sqlite_core.index)("messages_session_timestamp_idx").on(
2592
+ table.session_id,
2593
+ table.timestamp
2594
+ )
2316
2595
  })
2317
2596
  );
2318
2597
  boards2 = (0, import_sqlite_core.sqliteTable)(
@@ -2538,6 +2817,9 @@ var init_schema_sqlite = __esm({
2538
2817
  onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
2539
2818
  // Force password change flag (admin-settable, auto-cleared on password change)
2540
2819
  must_change_password: t2.bool("must_change_password").notNull().default(false),
2820
+ // Auth invalidation marker. Password changes set this timestamp so any
2821
+ // previously issued browser access or refresh token is rejected.
2822
+ tokens_valid_after: t2.timestamp("tokens_valid_after"),
2541
2823
  // JSON blob for profile/preferences
2542
2824
  data: t2.json("data").$type().notNull()
2543
2825
  },
@@ -2981,6 +3263,66 @@ var init_schema_sqlite = __esm({
2981
3263
  channelStatusIdx: (0, import_sqlite_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
2982
3264
  })
2983
3265
  );
3266
+ gatewayOutboundMessages2 = (0, import_sqlite_core.sqliteTable)(
3267
+ "gateway_outbound_messages",
3268
+ {
3269
+ id: (0, import_sqlite_core.text)("id", { length: 36 }).primaryKey(),
3270
+ created_at: t2.timestamp("created_at").notNull(),
3271
+ updated_at: t2.timestamp("updated_at").notNull(),
3272
+ gateway_channel_id: (0, import_sqlite_core.text)("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
3273
+ channel_type: (0, import_sqlite_core.text)("channel_type", {
3274
+ enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
3275
+ }).notNull(),
3276
+ platform_channel_id: (0, import_sqlite_core.text)("platform_channel_id").notNull(),
3277
+ platform_message_id: (0, import_sqlite_core.text)("platform_message_id").notNull(),
3278
+ platform_thread_id: (0, import_sqlite_core.text)("platform_thread_id").notNull(),
3279
+ platform_permalink: (0, import_sqlite_core.text)("platform_permalink"),
3280
+ target_branch_id: (0, import_sqlite_core.text)("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
3281
+ emitted_by_user_id: (0, import_sqlite_core.text)("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
3282
+ emitted_by_session_id: (0, import_sqlite_core.text)("emitted_by_session_id", { length: 36 }).references(
3283
+ () => sessions2.session_id,
3284
+ {
3285
+ onDelete: "set null"
3286
+ }
3287
+ ),
3288
+ emitted_by_task_id: (0, import_sqlite_core.text)("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
3289
+ onDelete: "set null"
3290
+ }),
3291
+ emitted_by_schedule_id: (0, import_sqlite_core.text)("emitted_by_schedule_id", { length: 36 }).references(
3292
+ () => schedules2.schedule_id,
3293
+ {
3294
+ onDelete: "set null"
3295
+ }
3296
+ ),
3297
+ message_text: (0, import_sqlite_core.text)("message_text").notNull(),
3298
+ message_preview: (0, import_sqlite_core.text)("message_preview").notNull(),
3299
+ metadata: t2.json("metadata"),
3300
+ consumed_by_session_id: (0, import_sqlite_core.text)("consumed_by_session_id", { length: 36 }).references(
3301
+ () => sessions2.session_id,
3302
+ {
3303
+ onDelete: "set null"
3304
+ }
3305
+ ),
3306
+ consumed_at: t2.timestamp("consumed_at")
3307
+ },
3308
+ (table) => ({
3309
+ uniqueChannelThread: (0, import_sqlite_core.uniqueIndex)("uniq_gateway_outbound_channel_thread").on(
3310
+ table.gateway_channel_id,
3311
+ table.platform_thread_id
3312
+ ),
3313
+ emittedSessionIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_session").on(
3314
+ table.emitted_by_session_id
3315
+ ),
3316
+ emittedScheduleIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_emitted_schedule").on(
3317
+ table.emitted_by_schedule_id
3318
+ ),
3319
+ targetBranchCreatedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_branch_created").on(
3320
+ table.target_branch_id,
3321
+ table.created_at
3322
+ ),
3323
+ consumedIdx: (0, import_sqlite_core.index)("idx_gateway_outbound_consumed").on(table.consumed_at)
3324
+ })
3325
+ );
2984
3326
  sessionEnvSelections2 = (0, import_sqlite_core.sqliteTable)(
2985
3327
  "session_env_selections",
2986
3328
  {
@@ -3405,6 +3747,17 @@ var init_schema_factory = __esm({
3405
3747
  }
3406
3748
  });
3407
3749
 
3750
+ // src/db/tenant-context.ts
3751
+ var import_node_async_hooks, tenantDatabaseScope;
3752
+ var init_tenant_context = __esm({
3753
+ "src/db/tenant-context.ts"() {
3754
+ "use strict";
3755
+ init_cjs_shims();
3756
+ import_node_async_hooks = require("async_hooks");
3757
+ tenantDatabaseScope = new import_node_async_hooks.AsyncLocalStorage();
3758
+ }
3759
+ });
3760
+
3408
3761
  // src/db/database-wrapper.ts
3409
3762
  var import_drizzle_orm3;
3410
3763
  var init_database_wrapper = __esm({
@@ -3412,11 +3765,12 @@ var init_database_wrapper = __esm({
3412
3765
  "use strict";
3413
3766
  init_cjs_shims();
3414
3767
  import_drizzle_orm3 = require("drizzle-orm");
3768
+ init_tenant_context();
3415
3769
  }
3416
3770
  });
3417
3771
 
3418
3772
  // src/db/schema.ts
3419
- var dialect, schema, sessions3, tasks3, messages3, boards3, repos3, branches3, branchOwners3, boardOwners3, groups3, groupMemberships3, branchGroupGrants3, boardGroupGrants3, schedules3, users3, appVariables3, mcpServers3, cardTypes3, cards3, artifacts3, artifactTrustGrants3, boardObjects3, sessionMcpServers3, sessionRelationships3, sessionEnvSelections3, userMcpOauthTokens3, boardComments3, gatewayChannels3, threadSessionMap3, userApiKeys3, serializedSessions3, kbNamespaces3, kbNamespaceAcl3, kbDocuments3, kbDocumentVersions3, kbDocumentUnits3, kbEmbeddingSpaces3, kbGraphNodes3, kbGraphEdges3;
3773
+ var dialect, schema, sessions3, tasks3, messages3, boards3, repos3, branches3, branchOwners3, boardOwners3, groups3, groupMemberships3, branchGroupGrants3, boardGroupGrants3, schedules3, users3, appVariables3, mcpServers3, cardTypes3, cards3, artifacts3, artifactTrustGrants3, boardObjects3, sessionMcpServers3, sessionRelationships3, sessionEnvSelections3, userMcpOauthTokens3, boardComments3, gatewayChannels3, threadSessionMap3, gatewayOutboundMessages3, userApiKeys3, serializedSessions3, kbNamespaces3, kbNamespaceAcl3, kbDocuments3, kbDocumentVersions3, kbDocumentUnits3, kbEmbeddingSpaces3, kbGraphNodes3, kbGraphEdges3;
3420
3774
  var init_schema = __esm({
3421
3775
  "src/db/schema.ts"() {
3422
3776
  "use strict";
@@ -3454,6 +3808,7 @@ var init_schema = __esm({
3454
3808
  boardComments3 = schema.boardComments;
3455
3809
  gatewayChannels3 = schema.gatewayChannels;
3456
3810
  threadSessionMap3 = schema.threadSessionMap;
3811
+ gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
3457
3812
  userApiKeys3 = schema.userApiKeys;
3458
3813
  serializedSessions3 = schema.serializedSessions;
3459
3814
  kbNamespaces3 = schema.kbNamespaces;
@@ -3467,31 +3822,46 @@ var init_schema = __esm({
3467
3822
  }
3468
3823
  });
3469
3824
 
3825
+ // src/db/tenant-scope.ts
3826
+ var import_drizzle_orm4;
3827
+ var init_tenant_scope = __esm({
3828
+ "src/db/tenant-scope.ts"() {
3829
+ "use strict";
3830
+ init_cjs_shims();
3831
+ import_drizzle_orm4 = require("drizzle-orm");
3832
+ init_tenant_context();
3833
+ init_tenant_context();
3834
+ init_database_wrapper();
3835
+ }
3836
+ });
3837
+
3470
3838
  // src/db/user-utils.ts
3471
- var import_bcryptjs, import_drizzle_orm4;
3839
+ var import_bcryptjs, import_drizzle_orm5;
3472
3840
  var init_user_utils = __esm({
3473
3841
  "src/db/user-utils.ts"() {
3474
3842
  "use strict";
3475
3843
  init_cjs_shims();
3476
3844
  import_bcryptjs = __toESM(require("bcryptjs"), 1);
3477
- import_drizzle_orm4 = require("drizzle-orm");
3845
+ import_drizzle_orm5 = require("drizzle-orm");
3478
3846
  init_ids();
3479
3847
  init_user();
3480
3848
  init_database_wrapper();
3481
3849
  init_schema();
3850
+ init_tenant_scope();
3482
3851
  }
3483
3852
  });
3484
3853
 
3485
3854
  // src/db/first-run-bootstrap.ts
3486
- var import_node_crypto3, import_drizzle_orm5;
3855
+ var import_node_crypto3, import_drizzle_orm6;
3487
3856
  var init_first_run_bootstrap = __esm({
3488
3857
  "src/db/first-run-bootstrap.ts"() {
3489
3858
  "use strict";
3490
3859
  init_cjs_shims();
3491
3860
  import_node_crypto3 = require("crypto");
3492
- import_drizzle_orm5 = require("drizzle-orm");
3861
+ import_drizzle_orm6 = require("drizzle-orm");
3493
3862
  init_database_wrapper();
3494
3863
  init_schema();
3864
+ init_tenant_scope();
3495
3865
  init_user_utils();
3496
3866
  }
3497
3867
  });
@@ -3626,7 +3996,7 @@ init_cjs_shims();
3626
3996
 
3627
3997
  // src/db/index.ts
3628
3998
  init_cjs_shims();
3629
- var import_drizzle_orm34 = require("drizzle-orm");
3999
+ var import_drizzle_orm36 = require("drizzle-orm");
3630
4000
  var import_bcryptjs3 = __toESM(require("bcryptjs"), 1);
3631
4001
  init_ids();
3632
4002
 
@@ -3663,11 +4033,12 @@ init_first_run_bootstrap();
3663
4033
  init_cjs_shims();
3664
4034
  var import_node_path4 = require("path");
3665
4035
  var import_node_url = require("url");
3666
- var import_drizzle_orm6 = require("drizzle-orm");
4036
+ var import_drizzle_orm7 = require("drizzle-orm");
3667
4037
  var import_migrator = require("drizzle-orm/libsql/migrator");
3668
4038
  var import_migrator2 = require("drizzle-orm/postgres-js/migrator");
3669
4039
  init_database_wrapper();
3670
4040
  init_schema();
4041
+ init_tenant_scope();
3671
4042
 
3672
4043
  // src/db/pending-migrations.ts
3673
4044
  init_cjs_shims();
@@ -3677,7 +4048,7 @@ init_cjs_shims();
3677
4048
 
3678
4049
  // src/db/repositories/app-variables.ts
3679
4050
  init_cjs_shims();
3680
- var import_drizzle_orm7 = require("drizzle-orm");
4051
+ var import_drizzle_orm8 = require("drizzle-orm");
3681
4052
  init_ids();
3682
4053
  init_database_wrapper();
3683
4054
  init_schema();
@@ -3686,17 +4057,18 @@ init_schema();
3686
4057
  init_cjs_shims();
3687
4058
  init_ids();
3688
4059
  init_id();
4060
+ init_tenant_context();
3689
4061
 
3690
4062
  // src/db/repositories/artifact-trust.ts
3691
4063
  init_cjs_shims();
3692
- var import_drizzle_orm8 = require("drizzle-orm");
4064
+ var import_drizzle_orm9 = require("drizzle-orm");
3693
4065
  init_ids();
3694
4066
  init_database_wrapper();
3695
4067
  init_schema();
3696
4068
 
3697
4069
  // src/db/repositories/artifacts.ts
3698
4070
  init_cjs_shims();
3699
- var import_drizzle_orm9 = require("drizzle-orm");
4071
+ var import_drizzle_orm11 = require("drizzle-orm");
3700
4072
  init_config_manager();
3701
4073
  init_ids();
3702
4074
 
@@ -3708,16 +4080,26 @@ init_id();
3708
4080
  init_database_wrapper();
3709
4081
  init_schema();
3710
4082
 
3711
- // src/db/repositories/board-comments.ts
4083
+ // src/db/repositories/branch-access.ts
3712
4084
  init_cjs_shims();
4085
+ init_types2();
3713
4086
  var import_drizzle_orm10 = require("drizzle-orm");
4087
+ init_database_wrapper();
4088
+ init_schema();
4089
+ var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
4090
+ (level) => level !== "none"
4091
+ );
4092
+
4093
+ // src/db/repositories/board-comments.ts
4094
+ init_cjs_shims();
4095
+ var import_drizzle_orm12 = require("drizzle-orm");
3714
4096
  init_ids();
3715
4097
  init_database_wrapper();
3716
4098
  init_schema();
3717
4099
 
3718
4100
  // src/db/repositories/board-objects.ts
3719
4101
  init_cjs_shims();
3720
- var import_drizzle_orm12 = require("drizzle-orm");
4102
+ var import_drizzle_orm13 = require("drizzle-orm");
3721
4103
  init_ids();
3722
4104
 
3723
4105
  // src/utils/board-placement.ts
@@ -3727,30 +4109,46 @@ init_cjs_shims();
3727
4109
  init_database_wrapper();
3728
4110
  init_schema();
3729
4111
 
3730
- // src/db/repositories/branch-access.ts
3731
- init_cjs_shims();
3732
- init_types2();
3733
- var import_drizzle_orm11 = require("drizzle-orm");
3734
- init_database_wrapper();
3735
- init_schema();
3736
- var VISIBLE_BRANCH_PERMISSION_LEVELS = BRANCH_PERMISSION_LEVELS.filter(
3737
- (level) => level !== "none"
3738
- );
3739
-
3740
4112
  // src/db/repositories/boards.ts
3741
4113
  init_cjs_shims();
3742
4114
  init_types2();
3743
- var import_drizzle_orm15 = require("drizzle-orm");
4115
+ var import_drizzle_orm16 = require("drizzle-orm");
3744
4116
  var yaml2 = __toESM(require("js-yaml"), 1);
3745
4117
  init_config_manager();
3746
4118
  init_ids();
4119
+
4120
+ // src/utils/emoji-shortcodes.ts
4121
+ init_cjs_shims();
4122
+ var import_node_module = require("module");
4123
+ var requireJson = (0, import_node_module.createRequire)(importMetaUrl);
4124
+ var emojiData = requireJson("emojibase-data/en/compact.json");
4125
+ var shortcodes = requireJson(
4126
+ "emojibase-data/en/shortcodes/emojibase.json"
4127
+ );
4128
+ var emojiByHexcode = /* @__PURE__ */ new Map();
4129
+ for (const emoji of emojiData) {
4130
+ if (emoji.unicode) {
4131
+ emojiByHexcode.set(emoji.hexcode, emoji.unicode);
4132
+ }
4133
+ }
4134
+ var emojiByShortcode = /* @__PURE__ */ new Map();
4135
+ for (const [hexcode, codes] of Object.entries(shortcodes)) {
4136
+ const emoji = emojiByHexcode.get(hexcode);
4137
+ if (!emoji) continue;
4138
+ const codeList = Array.isArray(codes) ? codes : [codes];
4139
+ for (const code of codeList) {
4140
+ emojiByShortcode.set(code.toLowerCase(), emoji);
4141
+ }
4142
+ }
4143
+
4144
+ // src/db/repositories/boards.ts
3747
4145
  init_database_wrapper();
3748
4146
  init_schema();
3749
4147
 
3750
4148
  // src/db/repositories/branches.ts
3751
4149
  init_cjs_shims();
3752
4150
  init_types2();
3753
- var import_drizzle_orm14 = require("drizzle-orm");
4151
+ var import_drizzle_orm15 = require("drizzle-orm");
3754
4152
  init_config_manager();
3755
4153
  init_ids();
3756
4154
  init_database_wrapper();
@@ -3758,7 +4156,7 @@ init_schema();
3758
4156
 
3759
4157
  // src/db/repositories/groups.ts
3760
4158
  init_cjs_shims();
3761
- var import_drizzle_orm13 = require("drizzle-orm");
4159
+ var import_drizzle_orm14 = require("drizzle-orm");
3762
4160
  init_ids();
3763
4161
  init_database_wrapper();
3764
4162
  init_schema();
@@ -3773,14 +4171,14 @@ var BRANCH_PERMISSION_RANK = Object.fromEntries(
3773
4171
 
3774
4172
  // src/db/repositories/card-types.ts
3775
4173
  init_cjs_shims();
3776
- var import_drizzle_orm16 = require("drizzle-orm");
4174
+ var import_drizzle_orm17 = require("drizzle-orm");
3777
4175
  init_ids();
3778
4176
  init_database_wrapper();
3779
4177
  init_schema();
3780
4178
 
3781
4179
  // src/db/repositories/cards.ts
3782
4180
  init_cjs_shims();
3783
- var import_drizzle_orm17 = require("drizzle-orm");
4181
+ var import_drizzle_orm18 = require("drizzle-orm");
3784
4182
  init_ids();
3785
4183
  init_database_wrapper();
3786
4184
  init_schema();
@@ -3788,7 +4186,15 @@ init_schema();
3788
4186
  // src/db/repositories/gateway-channels.ts
3789
4187
  init_cjs_shims();
3790
4188
  init_types2();
3791
- var import_drizzle_orm18 = require("drizzle-orm");
4189
+ var import_drizzle_orm19 = require("drizzle-orm");
4190
+ init_ids();
4191
+ init_database_wrapper();
4192
+ init_schema();
4193
+
4194
+ // src/db/repositories/gateway-outbound-messages.ts
4195
+ init_cjs_shims();
4196
+ init_types2();
4197
+ var import_drizzle_orm20 = require("drizzle-orm");
3792
4198
  init_ids();
3793
4199
  init_database_wrapper();
3794
4200
  init_schema();
@@ -3797,7 +4203,7 @@ init_schema();
3797
4203
  init_cjs_shims();
3798
4204
  var import_node_crypto4 = require("crypto");
3799
4205
  init_types2();
3800
- var import_drizzle_orm19 = require("drizzle-orm");
4206
+ var import_drizzle_orm21 = require("drizzle-orm");
3801
4207
  init_config_manager();
3802
4208
  init_ids();
3803
4209
  init_database_wrapper();
@@ -3805,7 +4211,7 @@ init_schema();
3805
4211
 
3806
4212
  // src/db/repositories/mcp-servers.ts
3807
4213
  init_cjs_shims();
3808
- var import_drizzle_orm20 = require("drizzle-orm");
4214
+ var import_drizzle_orm22 = require("drizzle-orm");
3809
4215
  init_ids();
3810
4216
 
3811
4217
  // src/tools/mcp/auth-secrets.ts
@@ -3820,23 +4226,20 @@ init_schema();
3820
4226
 
3821
4227
  // src/db/repositories/messages.ts
3822
4228
  init_cjs_shims();
3823
- var import_drizzle_orm21 = require("drizzle-orm");
4229
+ var import_drizzle_orm23 = require("drizzle-orm");
3824
4230
  init_database_wrapper();
3825
4231
  init_schema();
3826
4232
 
3827
4233
  // src/db/repositories/repos.ts
3828
4234
  init_cjs_shims();
3829
- var import_drizzle_orm22 = require("drizzle-orm");
4235
+ var import_drizzle_orm24 = require("drizzle-orm");
3830
4236
 
3831
4237
  // src/config/variant-resolver.ts
3832
4238
  init_cjs_shims();
3833
4239
 
3834
4240
  // src/yaml/index.ts
3835
4241
  init_cjs_shims();
3836
- var import_js_yaml2 = __toESM(require("js-yaml"), 1);
3837
- var load2 = import_js_yaml2.default.load;
3838
- var dump2 = import_js_yaml2.default.dump;
3839
- var YAMLException = import_js_yaml2.default.YAMLException;
4242
+ var yaml3 = __toESM(require("js-yaml"), 1);
3840
4243
 
3841
4244
  // src/db/repositories/repos.ts
3842
4245
  init_ids();
@@ -3845,34 +4248,34 @@ init_schema();
3845
4248
 
3846
4249
  // src/db/repositories/schedules.ts
3847
4250
  init_cjs_shims();
3848
- var import_drizzle_orm23 = require("drizzle-orm");
4251
+ var import_drizzle_orm25 = require("drizzle-orm");
3849
4252
  init_ids();
3850
4253
  init_database_wrapper();
3851
4254
  init_schema();
3852
4255
 
3853
4256
  // src/db/repositories/serialized-sessions.ts
3854
4257
  init_cjs_shims();
3855
- var import_drizzle_orm24 = require("drizzle-orm");
4258
+ var import_drizzle_orm26 = require("drizzle-orm");
3856
4259
  init_ids();
3857
4260
  init_database_wrapper();
3858
4261
  init_schema();
3859
4262
 
3860
4263
  // src/db/repositories/session-env-selections.ts
3861
4264
  init_cjs_shims();
3862
- var import_drizzle_orm25 = require("drizzle-orm");
4265
+ var import_drizzle_orm27 = require("drizzle-orm");
3863
4266
  init_database_wrapper();
3864
4267
  init_schema();
3865
4268
 
3866
4269
  // src/db/repositories/session-mcp-servers.ts
3867
4270
  init_cjs_shims();
3868
- var import_drizzle_orm27 = require("drizzle-orm");
4271
+ var import_drizzle_orm29 = require("drizzle-orm");
3869
4272
  init_database_wrapper();
3870
4273
  init_schema();
3871
4274
 
3872
4275
  // src/db/repositories/sessions.ts
3873
4276
  init_cjs_shims();
3874
4277
  init_types2();
3875
- var import_drizzle_orm26 = require("drizzle-orm");
4278
+ var import_drizzle_orm28 = require("drizzle-orm");
3876
4279
  init_config_manager();
3877
4280
  init_ids();
3878
4281
  init_database_wrapper();
@@ -3880,7 +4283,7 @@ init_schema();
3880
4283
 
3881
4284
  // src/db/repositories/session-relationships.ts
3882
4285
  init_cjs_shims();
3883
- var import_drizzle_orm28 = require("drizzle-orm");
4286
+ var import_drizzle_orm30 = require("drizzle-orm");
3884
4287
  init_ids();
3885
4288
  init_database_wrapper();
3886
4289
  init_schema();
@@ -3888,7 +4291,7 @@ init_schema();
3888
4291
  // src/db/repositories/tasks.ts
3889
4292
  init_cjs_shims();
3890
4293
  init_types2();
3891
- var import_drizzle_orm29 = require("drizzle-orm");
4294
+ var import_drizzle_orm31 = require("drizzle-orm");
3892
4295
  init_ids();
3893
4296
  init_database_wrapper();
3894
4297
  init_schema();
@@ -3896,7 +4299,7 @@ init_schema();
3896
4299
  // src/db/repositories/thread-session-map.ts
3897
4300
  init_cjs_shims();
3898
4301
  init_types2();
3899
- var import_drizzle_orm30 = require("drizzle-orm");
4302
+ var import_drizzle_orm32 = require("drizzle-orm");
3900
4303
  init_ids();
3901
4304
  init_database_wrapper();
3902
4305
  init_schema();
@@ -3905,21 +4308,22 @@ init_schema();
3905
4308
  init_cjs_shims();
3906
4309
  var import_node_crypto5 = require("crypto");
3907
4310
  var import_bcryptjs2 = __toESM(require("bcryptjs"), 1);
3908
- var import_drizzle_orm31 = require("drizzle-orm");
4311
+ var import_drizzle_orm33 = require("drizzle-orm");
3909
4312
  init_ids();
3910
4313
  init_database_wrapper();
3911
4314
  init_schema();
4315
+ init_tenant_context();
3912
4316
 
3913
4317
  // src/db/repositories/user-mcp-oauth-tokens.ts
3914
4318
  init_cjs_shims();
3915
- var import_drizzle_orm32 = require("drizzle-orm");
4319
+ var import_drizzle_orm34 = require("drizzle-orm");
3916
4320
  init_database_wrapper();
3917
4321
  init_schema();
3918
4322
 
3919
4323
  // src/db/repositories/users.ts
3920
4324
  init_cjs_shims();
3921
4325
  init_types2();
3922
- var import_drizzle_orm33 = require("drizzle-orm");
4326
+ var import_drizzle_orm35 = require("drizzle-orm");
3923
4327
 
3924
4328
  // src/config/env-vars.ts
3925
4329
  init_cjs_shims();
@@ -3939,6 +4343,7 @@ init_cjs_shims();
3939
4343
  init_ids();
3940
4344
 
3941
4345
  // src/db/index.ts
4346
+ init_tenant_scope();
3942
4347
  init_user_utils();
3943
4348
  var compare = import_bcryptjs3.default.compare;
3944
4349
  var hash = import_bcryptjs3.default.hash;
@@ -3992,8 +4397,8 @@ function extractTasksFromMessages(messages4, sessionId) {
3992
4397
  const userMessage = messages4[startIndex];
3993
4398
  const endIndex = i < userMessageIndices.length - 1 ? userMessageIndices[i + 1] - 1 : messages4.length - 1;
3994
4399
  const messagesInRange = messages4.slice(startIndex, endIndex + 1);
3995
- const toolUseCount = messagesInRange.reduce((count, msg) => {
3996
- return count + (msg.tool_uses?.length ?? 0);
4400
+ const toolUseCount = messagesInRange.reduce((count2, msg) => {
4401
+ return count2 + (msg.tool_uses?.length ?? 0);
3997
4402
  }, 0);
3998
4403
  let fullPrompt = "";
3999
4404
  if (typeof userMessage.content === "string") {